1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
|
#pragma once
#include <grtpp.h>
#ifdef _WIN32
#pragma warning(disable: 4355) // 'this' : used in base member initializer list
#ifdef GRT_STRUCTS_WRAPPER_EXPORT
#define GRT_STRUCTS_WRAPPER_PUBLIC __declspec(dllexport)
#else
#define GRT_STRUCTS_WRAPPER_PUBLIC __declspec(dllimport)
#endif
#else
#define GRT_STRUCTS_WRAPPER_PUBLIC
#endif
#include <grts/structs.h>
class parser_ContextReference;
typedef grt::Ref<parser_ContextReference> parser_ContextReferenceRef;
class mforms_ObjectReference;
typedef grt::Ref<mforms_ObjectReference> mforms_ObjectReferenceRef;
class grt_PyObject;
typedef grt::Ref<grt_PyObject> grt_PyObjectRef;
namespace mforms {
class Object;
};
namespace grt {
class AutoPyObject;
};
/** wraps a parser context so it can be stored in a grt container */
class GRT_STRUCTS_WRAPPER_PUBLIC parser_ContextReference : public TransientObject
{
typedef TransientObject super;
public:
class ImplData;
friend class ImplData;
parser_ContextReference(grt::GRT *grt, grt::MetaClass *meta=0)
: TransientObject(grt, meta ? meta : grt->get_metaclass(static_class_name())),
_data(0)
{
}
virtual ~parser_ContextReference();
static std::string static_class_name() { return "parser.ContextReference"; }
/** Getter for attribute valid (read-only)
whether there's a context set
\par In Python:
value = obj.valid
*/
grt::IntegerRef valid() const;
private: // the next attribute is read-only
public:
ImplData *get_data() const { return _data; }
void set_data(ImplData *data);
// default initialization function. auto-called by ObjectRef constructor
virtual void init();
protected:
private: // wrapper methods for use by grt
ImplData *_data;
static grt::ObjectRef create(grt::GRT *grt)
{
return grt::ObjectRef(new parser_ContextReference(grt));
}
public:
static void grt_register(grt::GRT *grt)
{
grt::MetaClass *meta= grt->get_metaclass(static_class_name());
if (!meta) throw std::runtime_error("error initializing grt object class, metaclass not found");
meta->bind_allocator(&parser_ContextReference::create);
meta->bind_member("valid", new grt::MetaClass::Property<parser_ContextReference,grt::IntegerRef >(&parser_ContextReference::valid));
}
};
/** an object representing a reference to a mforms object */
class GRT_STRUCTS_WRAPPER_PUBLIC mforms_ObjectReference : public TransientObject
{
typedef TransientObject super;
public:
typedef mforms::Object ImplData;
mforms_ObjectReference(grt::GRT *grt, grt::MetaClass *meta=0)
: TransientObject(grt, meta ? meta : grt->get_metaclass(static_class_name())),
_type(""),
_data(0), _release_data(NULL)
{
}
virtual ~mforms_ObjectReference() { if (_release_data && _data) _release_data(_data); }
static std::string static_class_name() { return "mforms.ObjectReference"; }
/** Getter for attribute type
the specific type of mforms object
\par In Python:
value = obj.type
*/
grt::StringRef type() const { return _type; }
/** Setter for attribute type
the specific type of mforms object
\par In Python:
obj.type = value
*/
virtual void type(const grt::StringRef &value)
{
grt::ValueRef ovalue(_type);
_type= value;
member_changed("type", ovalue, value);
}
/** Getter for attribute valid (read-only)
whether the object is currently valid
\par In Python:
value = obj.valid
*/
grt::IntegerRef valid() const;
private: // the next attribute is read-only
public:
/** Method. checks whether the reference points to the same view as another reference
\param other
\return
*/
virtual grt::IntegerRef isEqualTo(const mforms_ObjectReferenceRef &other);
ImplData *get_data() const { return _data; }
void set_data(ImplData *data, void (*release)(ImplData*))
{
if (_data == data) return;
if (_data && _release_data) _release_data(_data);
_data= data;
_release_data = release;
}
protected:
grt::StringRef _type;
private: // wrapper methods for use by grt
ImplData *_data;
void (*_release_data)(ImplData *);
static grt::ObjectRef create(grt::GRT *grt)
{
return grt::ObjectRef(new mforms_ObjectReference(grt));
}
static grt::ValueRef call_isEqualTo(grt::internal::Object *self, const grt::BaseListRef &args){ return dynamic_cast<mforms_ObjectReference*>(self)->isEqualTo(mforms_ObjectReferenceRef::cast_from(args[0])); }
public:
static void grt_register(grt::GRT *grt)
{
grt::MetaClass *meta= grt->get_metaclass(static_class_name());
if (!meta) throw std::runtime_error("error initializing grt object class, metaclass not found");
meta->bind_allocator(&mforms_ObjectReference::create);
{
void (mforms_ObjectReference::*setter)(const grt::StringRef &)= &mforms_ObjectReference::type;
grt::StringRef (mforms_ObjectReference::*getter)() const= &mforms_ObjectReference::type;
meta->bind_member("type", new grt::MetaClass::Property<mforms_ObjectReference,grt::StringRef >(getter,setter));
}
meta->bind_member("valid", new grt::MetaClass::Property<mforms_ObjectReference,grt::IntegerRef >(&mforms_ObjectReference::valid));
meta->bind_method("isEqualTo", &mforms_ObjectReference::call_isEqualTo);
}
};
/** wraps a Python object reference so it can be stored in a GRT container */
class GRT_STRUCTS_WRAPPER_PUBLIC grt_PyObject : public TransientObject
{
typedef TransientObject super;
public:
typedef grt::AutoPyObject ImplData;
grt_PyObject(grt::GRT *grt, grt::MetaClass *meta=0)
: TransientObject(grt, meta ? meta : grt->get_metaclass(static_class_name())),
_data(0), _release_data(NULL)
{
}
virtual ~grt_PyObject() { if (_release_data && _data) _release_data(_data); }
static std::string static_class_name() { return "grt.PyObject"; }
/** Method. checks whether the reference points to the same object as another refrence
\param other
\return
*/
virtual grt::IntegerRef isEqualTo(const grt_PyObjectRef &other);
ImplData *get_data() const { return _data; }
void set_data(ImplData *data, void (*release)(ImplData*))
{
if (_data == data) return;
if (_data && _release_data) _release_data(_data);
_data= data;
_release_data = release;
}
protected:
private: // wrapper methods for use by grt
ImplData *_data;
void (*_release_data)(ImplData *);
static grt::ObjectRef create(grt::GRT *grt)
{
return grt::ObjectRef(new grt_PyObject(grt));
}
static grt::ValueRef call_isEqualTo(grt::internal::Object *self, const grt::BaseListRef &args){ return dynamic_cast<grt_PyObject*>(self)->isEqualTo(grt_PyObjectRef::cast_from(args[0])); }
public:
static void grt_register(grt::GRT *grt)
{
grt::MetaClass *meta= grt->get_metaclass(static_class_name());
if (!meta) throw std::runtime_error("error initializing grt object class, metaclass not found");
meta->bind_allocator(&grt_PyObject::create);
meta->bind_method("isEqualTo", &grt_PyObject::call_isEqualTo);
}
};
inline void register_structs_wrapper_xml()
{
grt::internal::ClassRegistry::register_class<parser_ContextReference>();
grt::internal::ClassRegistry::register_class<mforms_ObjectReference>();
grt::internal::ClassRegistry::register_class<grt_PyObject>();
}
#ifdef AUTO_REGISTER_GRT_CLASSES
static struct _autoreg__structs_wrapper_xml { _autoreg__structs_wrapper_xml() { register_structs_wrapper_xml(); } } __autoreg__structs_wrapper_xml;
#endif
|