Class * class_GuiApplication;
+Method * method_GuiApplication_cycle;
+int GuiApplication_cycle_vTblID;
+
Class * class_MessageBox;
Property * property_MessageBox_contents;
}
class_GuiApplication = eC_findClass(module, "GuiApplication");
+ if(class_GuiApplication)
+ {
+ method_GuiApplication_cycle = Class_findMethod(class_GuiApplication, "Cycle", module);
+ if(method_GuiApplication_cycle)
+ GuiApplication_cycle_vTblID = method_GuiApplication_cycle->vid;
+ }
}
return module;
}
bool (* method)(eC_Window, eC_Button, int, int, Modifiers) = (bool (*)(eC_Window, eC_Button, int, int, Modifiers))(i ? i->_vTbl : class_Button->_vTbl)[Button_notifyClicked_vTblID]; \
method ? method(m, b, x, y, mods) : true; })
+#define GuiApplication_cycle(x) ({ eC_GuiApplication i = x; \
+ bool (* method)(eC_GuiApplication) = (bool (*)(eC_Instance))(i ? i->_vTbl : class_GuiApplication->_vTbl)[GuiApplication_cycle_vTblID]; \
+ method ? method(i) : true; })
+
// Bit Class Member Access
#define COLOR_r_MASK 0x00FF0000
#define COLOR_r_SHIFT 16
typedef Instance GuiApplication;
+extern int GuiApplication_cycle_vTblID;
+
Module ecere_init(Module fromModule);
#ifdef __cplusplus
};
///////////// GuiApplication Class /////////////////////////////////////////////////
+#define GuiApplication_class_registration(d) \
+ Application_class_registration(d); \
+ REGISTER_METHOD("Cycle", cycle, GuiApplication, d, \
+ bool, (eC_GuiApplication a), a, a, return fn(*i), (a), true);
+
class GuiApplication : public Application
{
public:
vTbl = _class.vTbl;
}
- REGISTER() { Application_class_registration(GuiApplication); }
+ REGISTER() { GuiApplication_class_registration(GuiApplication); }
+ VIRTUAL_METHOD(cycle, GuiApplication, GuiApplication, bool, GuiApplication &, , ,
+ return GuiApplication_cycle(self->impl));
};
#endif
--- /dev/null
+#define MODULE_NAME "MyApp"
+
+#include "eC.hpp"
+
+class MyApp : public Application
+{
+public:
+ APP_CONSTRUCT(MyApp, Application) { }
+ static void class_registration(CPPClass & _class);
+};
+
+MyApp app;
+
+void MyApp::class_registration(CPPClass & _class)
+{
+ register_main(_class, [](Application & app)
+ {
+ PrintLn(class_String, "C++: Hello, eC", null);
+ });
+ Instance_evolve(&app.impl, MyApp::_class.impl);
+ _INSTANCE(app.impl, app.impl->_class) = &app;
+ __thisModule = app.impl;
+ app.vTbl = _class.vTbl;
+}
+
+REGISTER_CLASS_DEF(MyApp, Application, app);
+
+MAIN_DEFINITION;
--- /dev/null
+#define MODULE_NAME "MyApp"
+
+#include "eC.hpp"
+
+class MyApp : public Application
+{
+public:
+ void main()
+ {
+ PrintLn(class_String, "C++: Hello, eC", null);
+ }
+};
+
+MyApp app;
+
+MAIN_DEFINITION
--- /dev/null
+#define MODULE_NAME "MyApp"
+
+#include "ecere.hpp"
+
+class MyApp : public GuiApplication
+{
+public:
+ APP_CONSTRUCT(MyApp, GuiApplication)
+ {
+ cycle = +[](GuiApplication & app)
+ {
+ PrintLn(class_String, " Cycling!", null);
+ return true;
+ };
+ }
+
+ void main()
+ {
+ PrintLn(class_String, "C++: Hello, eC", null);
+ GuiApplication::main();
+ }
+};
+
+MyApp app;
+Window w;
+
+REGISTER_CLASS_DEF(MyApp, GuiApplication, app);
+
+MAIN_DEFINITION