#ifndef QMETAOBJECT_H
#define QMETAOBJECT_H 
#include <QtCore/qobjectdefs.h>
#include <QtCore/qvariant.h>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
class QMetaMethod{
   public: inline QMetaMethod();
   public: char const * signature() const
   public: char const * typeName() const
   public: class QList < class QByteArray > parameterTypes() const
   public: class QList < class QByteArray > parameterNames() const
   public: char const * tag() const
   public: enum Access{
      Private = 0,
      Protected = 1,
      Public = 2,
   };
   public: enum QMetaMethod::Access access() const
   public: enum MethodType{
      Method = 0,
      Signal = 1,
      Slot = 2,
   };
   public: enum QMetaMethod::MethodType methodType() const
   public: enum Attributes{
      Compatibility = 1,
      Cloned = 2,
      Scriptable = 4,
   };
   public: int attributes() const
   private: struct QMetaObject const * mobj;
   private: uint handle;
   friend struct QMetaObject;
};
template < > class QTypeInfo < class QMetaMethod >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
class QMetaEnum{
   public: inline QMetaEnum();
   public: char const * name() const
   public: bool isFlag() const
   public: int keyCount() const
   public: char const * key(int index) const
   public: int value(int index) const
   public: char const * scope() const
   public: int keyToValue(char const * key) const
   public: char const * valueToKey(int value) const
   public: int keysToValue(char const * keys) const
   public: class QByteArray valueToKeys(int value) const
   public: inline bool isValid() const
   private: struct QMetaObject const * mobj;
   private: uint handle;
   friend struct QMetaObject;
};
template < > class QTypeInfo < class QMetaEnum >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
class QMetaProperty{
   public: QMetaProperty();
   public: char const * name() const
   public: char const * typeName() const
   public: enum QVariant::Type type() const
   public: int userType() const
   public: bool isReadable() const
   public: bool isWritable() const
   public: bool isResettable() const
   public: bool isDesignable(class QObject const * obj = 0) const
   public: bool isScriptable(class QObject const * obj = 0) const
   public: bool isStored(class QObject const * obj = 0) const
   public: bool isEditable(class QObject const * obj = 0) const
   public: bool isUser(class QObject const * obj = 0) const
   public: bool isFlagType() const
   public: bool isEnumType() const
   public: class QMetaEnum enumerator() const
   public: class QVariant read(class QObject const * obj) const
   public: bool write(class QObject* obj, class QVariant const & value) const
   public: bool reset(class QObject* obj) const
   public: bool hasStdCppSet() const
   public: inline bool isValid() const
   private: struct QMetaObject const * mobj;
   private: uint handle;
   private: int idx;
   private: class QMetaEnum menum;
   friend struct QMetaObject;
};
class QMetaClassInfo{
   public: inline QMetaClassInfo();
   public: char const * name() const
   public: char const * value() const
   private: struct QMetaObject const * mobj;
   private: uint handle;
   friend struct QMetaObject;
};
template < > class QTypeInfo < class QMetaClassInfo >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
#endif // QMETAOBJECT_H