#include #include #include //#include #include #include #ifdef KORE_CONSOLE #elif defined(_WIN32) #include // Stoopid windows ... #ifdef RegisterClass #undef RegisterClass #endif #ifdef abs #undef abs #endif #else #include #ifndef EMSCRIPTEN typedef int64_t __int64; #endif #endif #ifdef HXCPP_SCRIPTABLE #include #endif // --- hxObject ----------------------------------------- namespace hx { String sNone[] = { String(null()) }; #if (HXCPP_API_LEVEL>=332) bool Object::_hx_isInstanceOf(int inClassId) { return inClassId == hx::Object::_hx_ClassId; } #endif Dynamic Object::__IField(int inFieldID) { return __Field( __hxcpp_field_from_id(inFieldID), HX_PROP_DYNAMIC ); } double Object::__INumField(int inFieldID) { return __Field( __hxcpp_field_from_id(inFieldID), HX_PROP_DYNAMIC ); } Dynamic *Object::__GetFieldMap() { return 0; } int Object::__Compare(const Object *inRHS) const { #if (HXCPP_API_LEVEL<331) hx::Object *real = const_cast(this)->__GetRealObject(); #else hx::Object *real = const_cast(this); #endif return real < inRHS ? -1 : real==inRHS ? 0 : 1; } hx::Val Object::__Field(const String &inString, hx::PropertyAccess inCallProp) { #if 0 // Will be true for 'Implements dynamic' if (inCallProp && __GetFieldMap()) { Dynamic resolve = __Field(HX_CSTRING("resolve"), false); if (resolve.mPtr) return resolve(inString); } #endif return null(); } bool Object::__HasField(const String &inString) { return false; } Dynamic Object::__Run(const Array &inArgs) { return 0; } Dynamic Object::__GetItem(int inIndex) const { return null(); } Dynamic Object::__SetItem(int inIndex,Dynamic) { return null(); } void Object::__SetThis(Dynamic inThis) { } #if (HXCPP_API_LEVEL<331) bool Object::__Is(Dynamic inClass ) const { return __Is(inClass.GetPtr()); } #endif hx::Class Object__mClass; bool AlwaysCast(Object *inPtr) { return inPtr!=0; } #if (HXCPP_API_LEVEL < 330) DynamicArray Object::__EnumParams() { return DynamicArray(); } String Object::__Tag() const { return HX_CSTRING(""); } int Object::__Index() const { return -1; } #endif #if (HXCPP_API_LEVEL >= 330) && !defined(HXCPP_SCRIPTABLE) // Other implementation is in Cppia.cpp void *hx::Object::_hx_getInterface(int inId) { return 0; } #endif #ifdef HXCPP_SCRIPTABLE class Object__scriptable : public hx::Object { typedef Object__scriptable __ME; void __construct() { } typedef hx::Object super; typedef hx::Object __superString; HX_DEFINE_SCRIPTABLE(HX_ARR_LIST0); HX_DEFINE_SCRIPTABLE_DYNAMIC; }; hx::ScriptFunction Object::__script_construct; static void CPPIA_CALL __s_toString(hx::CppiaCtx *ctx) { ctx->returnString((ctx->getThis())->toString()); } static hx::ScriptNamedFunction __scriptableFunctions[] = { hx::ScriptNamedFunction("toString",__s_toString,"s"), hx::ScriptNamedFunction(0,0,0) }; #endif void Object::__boot() { Static(Object__mClass) = hx::_hx_RegisterClass(HX_CSTRING("Dynamic"),AlwaysCast,sNone,sNone,0,0, 0, 0 ); #ifdef HXCPP_SCRIPTABLE hx::ScriptableRegisterClass( HX_CSTRING("hx.Object"), (int)sizeof(hx::Object__scriptable), __scriptableFunctions, Object__scriptable::__script_create, Object::__script_construct ); #endif } hx::Class &Object::__SGetClass() { return Object__mClass; } hx::Class Object::__GetClass() const { return Object__mClass; } hx::FieldRef Object::__FieldRef(const String &inString) { return hx::FieldRef(this,inString); } String Object::__ToString() const { return HX_CSTRING("Object"); } const char * Object::__CStr() const { return __ToString().__CStr(); } hx::Val Object::__SetField(const String &inField,const hx::Val &inValue, hx::PropertyAccess inCallProp) { hx::Throw( HX_CSTRING("Invalid field:") + inField ); return null(); } Dynamic Object::__run() { return __Run(Array_obj::__new()); } Dynamic Object::__run(D a) { return __Run( Array_obj::__new(0,1) << a ); } Dynamic Object::__run(D a,D b) { return __Run( Array_obj::__new(0,2) << a << b ); } Dynamic Object::__run(D a,D b,D c) { return __Run( Array_obj::__new(0,3) << a << b << c); } Dynamic Object::__run(D a,D b,D c,D d) { return __Run( Array_obj::__new(0,4) << a << b << c << d); } Dynamic Object::__run(D a,D b,D c,D d,D e) { return __Run( Array_obj::__new(0,5) << a << b << c << d << e); } void Object::__GetFields(Array &outFields) { } String Object::toString() { Dynamic *m = __GetFieldMap(); if (m) { Dynamic func; if (FieldMapGet(m,HX_CSTRING("toString"),func)) return func(); } return __ToString(); } } // end namespace hx