
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_relaxng_datatype_helpers_DatatypeLibraryLoader$Service$Loader2__
#define __org_relaxng_datatype_helpers_DatatypeLibraryLoader$Service$Loader2__

#pragma interface

#include <org/relaxng/datatype/helpers/DatatypeLibraryLoader$Service$Loader.h>
extern "Java"
{
  namespace org
  {
    namespace relaxng
    {
      namespace datatype
      {
        namespace helpers
        {
            class DatatypeLibraryLoader$Service$Loader2;
        }
      }
    }
  }
}

class org::relaxng::datatype::helpers::DatatypeLibraryLoader$Service$Loader2 : public ::org::relaxng::datatype::helpers::DatatypeLibraryLoader$Service$Loader
{

public: // actually package-private
  DatatypeLibraryLoader$Service$Loader2();
  virtual ::java::util::Enumeration * getResources(::java::lang::String *);
  virtual ::java::lang::Class * loadClass(::java::lang::String *);
private:
  ::java::lang::ClassLoader * __attribute__((aligned(__alignof__( ::org::relaxng::datatype::helpers::DatatypeLibraryLoader$Service$Loader)))) cl;
public:
  static ::java::lang::Class class$;
};

#endif // __org_relaxng_datatype_helpers_DatatypeLibraryLoader$Service$Loader2__
