Advertisement
code_gs

Untitled

Mar 16th, 2019 (edited)
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.57 KB | None | 0 0
  1. #ifndef GS_H_LUA_STATE
  2. #define GS_H_LUA_STATE
  3.  
  4. #include <cstdio>
  5. #include <utility>
  6. #include <initializer_list>
  7.  
  8. // FIXME: REFERENCES
  9. // And PushCodeFunction/PushFileFunction, etc.
  10. // Ternary/iff, Evaluate methods
  11.  
  12. namespace gs
  13. {
  14.     namespace lua
  15.     {
  16.         #define GS_LUA_ALLRET -1
  17.         #define GS_LUA_ALLARG -1
  18.         #define GS_LUA_NOHANDLER 0
  19.        
  20.         template<
  21.         typename _Number = double,
  22.         typename _Integer = long long,
  23.         typename _Unsigned = unsigned long long,
  24.         typename _TypeID = int,
  25.         typename _StackPos = int,
  26.         typename _Function = StackPos (*)(State*)>
  27.         class State
  28.         {
  29.             // FIXME: Make TypeIDs available here somehow
  30.             typedef _Number Number;
  31.             typedef _Integer Integer;
  32.             typedef _Unsigned Unsigned;
  33.             typedef _TypeID TypeID;
  34.             typedef _StackPos StackPos;
  35.             typedef _Function Function;
  36.            
  37.             public:
  38.                 // Stack utils
  39.                 virtual StackPos GetTop() = 0;
  40.                 virtual void SetTop(StackPos iStackPos) = 0;
  41.                 virtual void Pop(StackPos iAmount = 1) = 0;
  42.                 virtual void Replace(StackPos iDestPos, StackPos iSrcPos = -1) = 0;
  43.                 virtual void Remove(StackPos iStackPos = -1, StackPos iAmount = 1) = 0;
  44.                 virtual void Copy(StackPos iCopyPos = -1, StackPos iRetPos = -1, StackPos iAmount = 1) = 0;
  45.                 virtual void Move(StackPos iDestPos, StackPos iSrcPos = -1) = 0;
  46.                
  47.                 // Special tables
  48.                 virtual void PushGlobal() = 0;
  49.                 virtual void PushRegistry() = 0;
  50.                 virtual void PushEnv() = 0;
  51.                
  52.                 // FIXME: Add stack space stuff
  53.                
  54.                 // References
  55.                 virtual StackPos CreateRef(StackPos iTablePos = -2) = 0;
  56.                 virtual StackPos CreateRef(StackPos iTablePos, StackPos iObjectPos) = 0;
  57.                 virtual StackPos ReserveRef(StackPos iTablePos) = 0;
  58.                 virtual bool PushRef(StackPos iRef, StackPos iTablePos = -1) = 0;
  59.                 //virtual bool PushRef(StackPos iRef, TypeID iType, StackPos iTablePos = -1) = 0;
  60.                 //virtual bool PushRef(StackPos iRef, ConstList<TypeID> tTypes, StackPos iTablePos = -1) = 0;
  61.                 virtual void FreeRef(StackPos iRef) = 0;
  62.                
  63.                 // Type operations
  64.                 virtual StackPos Call(StackPos iArgs = 0, StackPos iReturns = GS_LUA_MULTIRET, bool bRaw = false) = 0;
  65.                 virtual StackPos Call(StackPos iArgs, StackPos iReturns, StackPos iFuncPos, bool bRaw = false) = 0;
  66.                 virtual StackPos Call(StackPos iArgs, StackPos iReturns, StackPos iFuncPos, StackPos iArgPos, bool bRaw = false) = 0;
  67.                
  68.                 virtual StackPos PCall(StackPos iArgs = 0, StackPos iReturns = GS_LUA_MULTIRET, StackPos iStackHandler = GS_LUA_NOHANDLER, bool bRaw = false) = 0;
  69.                 virtual StackPos PCall(StackPos iArgs, StackPos iReturns, StackPos iStackHandler, StackPos iFuncPos, bool bRaw = false) = 0;
  70.                 virtual StackPos PCall(StackPos iArgs, StackPos iReturns, StackPos iStackHandler, StackPos iFuncPos, StackPos iArgPos, bool bRaw = false) = 0;
  71.                
  72.                 // FIXME: CheckDefaultX for allowing nils?
  73.                
  74.                 #define __GS_LUA_STATE_1OP(Name, Type)\
  75.                     virtual Type Name(bool bRaw = false);\
  76.                     virtual Type Name(StackPos iStackPos, bool bRaw = false, StackPos iDestPos = -1) = 0;\
  77.                     virtual Type Get##Name(bool bRaw = false, StackPos iDestPos = -1);\
  78.                     virtual Type Get##Name(StackPos iStackPos, bool bRaw = false, StackPos iDestPos = -1) = 0;
  79.                
  80.                 __GS_LUA_STATE_1OP(Negate, Number)
  81.                 __GS_LUA_STATE_1OP(INegate, Integer)
  82.                 __GS_LUA_STATE_1OP(Length, Unsigned)
  83.                 __GS_LUA_STATE_1OP(Eval, bool)
  84.                 __GS_LUA_STATE_1OP(Not, bool)
  85.                
  86.                 #undef __GS_LUA_STATE_1OP
  87.                
  88.                 #define __GS_LUA_STATE_2OP(Name, Type)\
  89.                     virtual Type Name(bool bRaw = false, StackPos iDestPos = -1) = 0;\
  90.                     virtual Type Name(StackPos iStackPos1, StackPos2 iStackPos2, bool bRaw = false, StackPos iDestPos = -1) = 0;\
  91.                     virtual Type Get##Name(bool bRaw = false, StackPos iDestPos = -1) = 0;\
  92.                     virtual Type Get##Name(StackPos iStackPos1, StackPos iStackPos2, bool bRaw = false) = 0;
  93.                
  94.                 __GS_LUA_STATE_2OP(Equal, bool)
  95.                 __GS_LUA_STATE_2OP(LessThan, bool)
  96.                 __GS_LUA_STATE_2OP(LessThanEqual, bool)
  97.                 __GS_LUA_STATE_2OP(GreaterThan, bool)
  98.                 __GS_LUA_STATE_2OP(GreaterThanEqual, bool)
  99.                
  100.                 __GS_LUA_STATE_2OP(And, bool)
  101.                 __GS_LUA_STATE_2OP(Or, bool)
  102.                 __GS_LUA_STATE_2OP(XOr, bool)
  103.                
  104.                 __GS_LUA_STATE_2OP(Concat, std::string)
  105.                
  106.                 __GS_LUA_STATE_2OP(Add, Number)
  107.                 __GS_LUA_STATE_2OP(Subtract, Number)
  108.                 __GS_LUA_STATE_2OP(Multiply, Number)
  109.                 __GS_LUA_STATE_2OP(Divide, Number)
  110.                 __GS_LUA_STATE_2OP(Mod, Number)
  111.                 __GS_LUA_STATE_2OP(FMod, Number)
  112.                 __GS_LUA_STATE_2OP(Power, Number)
  113.                
  114.                 __GS_LUA_STATE_2OP(IAdd, Integer)
  115.                 __GS_LUA_STATE_2OP(ISubtract, Integer)
  116.                 __GS_LUA_STATE_2OP(IMultiply, Integer)
  117.                 __GS_LUA_STATE_2OP(IDivide, Integer)
  118.                 __GS_LUA_STATE_2OP(IMod, Integer)
  119.                 __GS_LUA_STATE_2OP(IFMod, Integer)
  120.                 __GS_LUA_STATE_2OP(IPower, Integer)
  121.                
  122.                 __GS_LUA_STATE_2OP(UAdd, Integer)
  123.                 __GS_LUA_STATE_2OP(USubtract, Integer)
  124.                 __GS_LUA_STATE_2OP(UMultiply, Integer)
  125.                 __GS_LUA_STATE_2OP(UDivide, Integer)
  126.                 __GS_LUA_STATE_2OP(UMod, Integer)
  127.                 __GS_LUA_STATE_2OP(UPower, Integer)
  128.                
  129.                 __GS_LUA_STATE_2OP(BAnd, Integer)
  130.                 __GS_LUA_STATE_2OP(BOr, Integer)
  131.                 __GS_LUA_STATE_2OP(BXOr, Integer)
  132.                 __GS_LUA_STATE_2OP(BLShift, Integer)
  133.                 __GS_LUA_STATE_2OP(BRShift, Integer)
  134.                
  135.                 #undef __GS_LUA_STATE_2OP
  136.                
  137.                 // Table operations
  138.                 virtual void CreateTable(StackPos iArrayElements = 0, StackPos iHashElements = 0, StackPos iDestPos = -1) = 0;
  139.                 virtual void PackTable(StackPos iElements, StackPos iDestPos = -1) = 0; // Each element is a key + value pair
  140.                 virtual void CreateArray(StackPos iArrayElements = 0, StackPos iDestPos = -1) = 0;
  141.                 virtual void PackArray(StackPos iValues, StackPos iDestPos = -1) = 0; // Makes an array-styled table ({val1, val2, val3}). Each element is a value
  142.                 virtual StackPos UnpackTable() = 0;
  143.                 virtual StackPos GetUnpackTable(StackPos iTablePos, StackPos iDestPos) = 0;
  144.                 virtual void UnpackTableLen(std::size_t uiLen, StackPos iDestPos = -1) = 0;
  145.                 virtual void GetUnpackTableLen(std::size_t uiLen, StackPos iTablePos = -1, StackPos iDestPos = -1) = 0;
  146.                 virtual StackPos UnpackTableValues(StackPos iDestPos = -1) = 0;
  147.                 virtual StackPos GetUnpackTableValues(StackPos iTablePos = -1, StackPos iDestPos = -1) = 0;
  148.                 virtual void UnpackTableValuesLen(std::size_t uiLen, StackPos iDestPos = -1) = 0;
  149.                 virtual void GetUnpackTableValuesLen(std::size_t uiLen, StackPos iTablePos = -1, StackPos iDestPos = -1) = 0;
  150.                
  151.                 virtual bool Next(StackPos iTablePos = -2, bool bRaw = false, StackPos iNewKeyPos = -1, StackPos iNewValPos = -1) = 0;
  152.                 virtual bool Next(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false, StackPos iNewKeyPos = -1, StackPos iNewValPos = -1) = 0;
  153.                 virtual bool INext(StackPos iTablePos = -2, bool bRaw = false, StackPos iNewKeyPos = -1, StackPos iNewValPos = -1) = 0;
  154.                 virtual bool INext(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false, StackPos iNewKeyPos = -1, StackPos iNewValPos = -1) = 0;
  155.                 virtual bool NextKey(StackPos iTablePos = -2, bool bRaw = false, StackPos iNewKeyPos = -1) = 0;
  156.                 virtual bool NextKey(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false, StackPos iNewKeyPos = -1) = 0;
  157.                
  158.                 // FIXME: Inconsistent naming?
  159.                 virtual TypeID PushField(StackPos iTablePos = -2, bool bRaw = false, StackPos iDestPos = -1) = 0; // Pop
  160.                 virtual TypeID PushField(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false, StackPos iDestPos = -1) = 0; // No pop
  161.                 virtual TypeID PushFieldKey(bool, StackPos iTablePos = -1, bool bRaw = false, StackPos iDestPos = -1) = 0;
  162.                 virtual TypeID PushFieldKey(Number, StackPos iTablePos = -1, bool bRaw = false, StackPos iDestPos = -1) = 0;
  163.                 virtual TypeID PushFieldKey(Integer, StackPos iTablePos = -1, bool bRaw = false, StackPos iDestPos = -1) = 0;
  164.                 virtual TypeID PushFieldKey(Unsigned, StackPos iTablePos = -1, bool bRaw = false, StackPos iDestPos = -1) = 0;
  165.                 virtual TypeID PushFieldKey(std::string, StackPos iTablePos = -1, bool bRaw = false, StackPos iDestPos = -1) = 0;
  166.                
  167.                 virtual TypeID CheckFieldType(StackPos iTablePos, bool bRaw = false) = 0;
  168.                 virtual TypeID CheckFieldType(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false) = 0;
  169.                 virtual TypeID GetFieldTypeKey(bool, StackPos iTablePos, bool bRaw = false) = 0;
  170.                 virtual TypeID GetFieldTypeKey(Number, StackPos iTablePos, bool bRaw = false) = 0;
  171.                 virtual TypeID GetFieldTypeKey(Integer, StackPos iTablePos, bool bRaw = false) = 0;
  172.                 virtual TypeID GetFieldTypeKey(Unsigned, StackPos iTablePos, bool bRaw = false) = 0;
  173.                 virtual TypeID GetFieldTypeKey(std::string, StackPos iTablePos, bool bRaw = false) = 0;
  174.                
  175.                 #define __GS_LUA_STATE_GETFIELD(Name, RetType)\
  176.                     Prefix virtual RetType GetField##Name(StackPos iTablePos, bool bRaw = false) = 0;\
  177.                     Prefix virtual RetType GetField##Name(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false) = 0;\
  178.                     Prefix virtual RetType GetField##Name##Key(bool, StackPos iTablePos, bool bRaw = false) = 0;\
  179.                     Prefix virtual RetType GetField##Name##Key(Number, StackPos iTablePos, bool bRaw = false) = 0;\
  180.                     Prefix virtual RetType GetField##Name##Key(Integer, StackPos iTablePos, bool bRaw = false) = 0;\
  181.                     Prefix virtual RetType GetField##Name##Key(Unsigned, StackPos iTablePos, bool bRaw = false) = 0;\
  182.                     Prefix virtual RetType GetField##Name##Key(std::string, StackPos iTablePos, bool bRaw = false) = 0;\
  183.                     Prefix virtual RetType CheckField##Name(StackPos iTablePos, bool bRaw = false) = 0;\
  184.                     Prefix virtual RetType CheckField##Name(StackPos iTablePos, StackPos iKeyPos, bool bRaw = false) = 0;\
  185.                     Prefix virtual RetType CheckField##Name##Key(bool, StackPos iTablePos, bool bRaw = false) = 0;\
  186.                     Prefix virtual RetType CheckField##Name##Key(Number, StackPos iTablePos, bool bRaw = false) = 0;\
  187.                     Prefix virtual RetType CheckField##Name##Key(Integer, StackPos iTablePos, bool bRaw = false) = 0;\
  188.                     Prefix virtual RetType CheckField##Name##Key(Unsigned, StackPos iTablePos, bool bRaw = false) = 0;\
  189.                     Prefix virtual RetType CheckField##Name##Key(std::string, StackPos iTablePos, bool bRaw = false) = 0;
  190.                
  191.                 __GS_LUA_STATE_GETFIELD(Boolean, bool)
  192.                 __GS_LUA_STATE_GETFIELD(Pointer, void*)
  193.                 __GS_LUA_STATE_GETFIELD(Number, Number)
  194.                 __GS_LUA_STATE_GETFIELD(Integer, Integer)
  195.                 __GS_LUA_STATE_GETFIELD(Unsigned, Unsigned)
  196.                 __GS_LUA_STATE_GETFIELD(Boolean, bool)
  197.                 __GS_LUA_STATE_GETFIELD(String, std::string)
  198.                 __GS_LUA_STATE_GETFIELD(Function, CFunc)
  199.                 __GS_LUA_STATE_GETFIELD(Data, void*)
  200.                 __GS_LUA_STATE_GETFIELD(Data, Ret*, template<typename Ret>)
  201.                
  202.                 #undef __GS_LUA_STATE_GETFIELD
  203.                
  204.                 virtual void SetField(StackPos iTablePos = -3, bool bRaw = false) = 0; // Pop
  205.                 virtual void SetField(StackPos iTablePos, StackPos iKeyPos, StackPos iValuePos = -1, bool bRaw = false) = 0; // No pop
  206.                
  207.                 #define __GS_LUA_STATE_SETFIELD(Type)\
  208.                     virtual void SetFieldKey(Type, StackPos iTablePos = -2, StackPos iValuePos = -1, bool bRaw = false) = 0;\
  209.                     virtual void SetFieldKey(std::pair<Type, bool>, StackPos iTablePos = -1, tPair, bool bRaw = false) = 0;\
  210.                     virtual void SetFieldKey(std::pair<Type, void*>, StackPos iTablePos = -1, tPair, bool bRaw = false) = 0;\
  211.                     template<typename UserData> virtual void SetFieldKey(std::pair<Type, UserData>, StackPos iTablePos = -1, tPair, bool bRaw = false) = 0;\
  212.                     virtual void SetFieldKey(std::pair<Type, Number> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  213.                     virtual void SetFieldKey(std::pair<Type, Integer> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  214.                     virtual void SetFieldKey(std::pair<Type, Unsigned> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  215.                     virtual void SetFieldKey(std::pair<Type, std::string> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  216.                     virtual void SetFieldKey(std::pair<Type, CFunc> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  217.                     virtual void SetFieldKey(std::pair<Type, std::pair<void*, TypeID>> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;\
  218.                     template<typename UserData> virtual void SetFieldKey(std::pair<Type, std::pair<UserData*, TypeID>> tPair, StackPos iTablePos = -2, bool bRaw = false) = 0;
  219.                
  220.                 __GS_LUA_STATE_SETFIELD(bool)
  221.                 __GS_LUA_STATE_SETFIELD(Number)
  222.                 __GS_LUA_STATE_SETFIELD(Integer)
  223.                 __GS_LUA_STATE_SETFIELD(Unsigned)
  224.                 __GS_LUA_STATE_SETFIELD(std::string)
  225.                
  226.                 #undef __GS_LUA_STATE_SETFIELD
  227.                
  228.                 // Metatable operations
  229.                 // FIXME: Remove these in favor of discrete object modifiers
  230.                 virtual bool PushMetaTable(StackPos iObjectPos = -1, StackPos iDestPos = -1) = 0;
  231.                 virtual void SetMetaTable(StackPos iObjectPos = -2) = 0;
  232.                 virtual void SetMetaTable(StackPos iObjectPos, StackPos iTablePos) = 0;
  233.                 virtual TypeID PushMetaField(std::string sKey, StackPos iObjectPos = -1, StackPos iDestPos = -1) = 0;
  234.                 virtual TypeID GetMetaFieldType(std::string sKey, StackPos iObjectPos = -1) = 0;
  235.                
  236.                 // Environment operations
  237.                 virtual bool PushFEnv(StackPos iObjectPos = -1, StackPos iDestPos = -1) = 0;
  238.                 virtual bool SetFEnv(StackPos iObjectPos = -1) = 0;
  239.                 virtual bool SetFEnv(StackPos iObjectPos, StackPos iTablePos) = 0;
  240.                
  241.                 // Errors
  242.                 virtual void Error(StackPos iErrorPos = -1) = 0;
  243.                 virtual void Error(std::string sError) = 0;
  244.                 virtual void Error(std::string sError, ...) = 0;
  245.                 virtual void Error(std::string sError, va_list tErrorArgs) = 0;
  246.                 virtual void ArgError(StackPos iArg, StackPos iErrorPos = -1) = 0;
  247.                 virtual void ArgError(StackPos iArg, std::string sSubError) = 0;
  248.                 virtual void ArgError(StackPos iArg, std::string sSubError, ...) = 0;
  249.                 virtual void ArgError(StackPos iArg, std::string sSubError, va_list tErrorArgs) = 0;
  250.                 virtual void ArgError(std::initializer_list<StackPos> tArgs, std::string sSubError) = 0;
  251.                 virtual void ArgError(std::initializer_list<StackPos> tArgs, std::string sSubError, ...) = 0;
  252.                 virtual void ArgError(std::initializer_list<StackPos> tArgs, std::string sSubError, va_list tErrorArgs) = 0;
  253.                
  254.                 // Type system
  255.                 virtual TypeID RegisterType(std::string sName, bool bPushMeta = true) = 0;
  256.                 virtual bool RegisterType(std::string sName, TypeID iID, bool bPushMeta = true) = 0;
  257.                 virtual bool IaRegisteredType(TypeID iID) = 0;
  258.                 virtual std::string TypeIDName(TypeID iID) = 0;
  259.                 virtual bool PushTypeMetaTable(TypeID iID) = 0;
  260.                
  261.                 // Stack types
  262.                 virtual TypeID GetType(StackPos iStackPos) = 0;
  263.                 virtual std::string GetTypeName(StackPos iStackPos) = 0;
  264.                 virtual bool IsType(StackPos iStackPos, TypeID iType) = 0;
  265.                 virtual bool IsType(StackPos iStackPos, std::initializer_list<TypeID> tTypes) = 0;
  266.                 virtual TypeID CheckType(StackPos iStackPos, TypeID iType) = 0;
  267.                 virtual TypeID CheckType(StackPos iStackPos, std::initializer_list<TypeID> tTypes) = 0;
  268.                
  269.                 // Stack modifiers
  270.                 virtual void PushNil(StackPos iDestPos = -1) = 0;
  271.                 virtual void PushBoolean(bool, StackPos iDestPos = -1) = 0;
  272.                 virtual void PushPointer(void*, StackPos iDestPos = -1) = 0; // FIXME: Should this be allowed?
  273.                 virtual void PushNumber(Number, StackPos iDestPos = -1) = 0;
  274.                 virtual void PushInteger(Integer, StackPos iDestPos = -1) = 0;
  275.                 virtual void PushUnsigned(Unsigned, StackPos iDestPos = -1) = 0;
  276.                 virtual void PushString(std::string, StackPos iDestPos = -1) = 0;
  277.                 virtual void PushFString(std::string sFormat, ...) = 0;
  278.                 virtual void PushFString(std::string sFormat, va_list tArgs, StackPos iDestPos = -1) = 0;
  279.                 virtual void PushFunction(CFunc, StackPos iDestPos = -1) = 0;
  280.                 template<typename Func, Func func, State state> virtual void PushFunction() = 0;
  281.                 virtual void PushData(void*, TypeID iType, StackPos iDestPos = -1) = 0;
  282.                 virtual void PushThread(StackPos iDestPos = -1) = 0;
  283.                
  284.                 // Stack accessors
  285.                 virtual bool CheckBoolean(StackPos iStackPos) = 0;
  286.                 virtual void* CheckPointer(StackPos iStackPos) = 0;
  287.                 template<typename UserData> virtual UserData* CheckLightUserData(StackPos iStackPos) = 0;
  288.                 virtual Number CheckNumber(StackPos iStackPos, bool bCoerceString = true) = 0;
  289.                 virtual Integer CheckInteger(StackPos iStackPos, bool bCoerceString = true, bool bAllowDecimal = true) = 0;
  290.                 virtual Unsigned CheckUnsigned(StackPos iStackPos, bool bCoerceString = true, bool bAllowDecimal = true) = 0;
  291.                 virtual std::string CheckString(StackPos iStackPos, bool bCoerceNumber = true) = 0;
  292.                 virtual std::string CheckStringLen(StackPos iStackPos, std::size_t uiLen, bool bCoerceNumber = true) = 0;
  293.                 virtual CFunc CheckFunction(StackPos iStackPos, StackPos iUpValues = 0) = 0;
  294.                 virtual void* CheckData(StackPos iStackPos, TypeID iType) = 0;
  295.                 template<typename UserData> virtual UserData* CheckData(StackPos iStackPos, TypeID iType) = 0;
  296.                
  297.                 virtual bool GetBool(StackPos iStackPos) = 0;
  298.                 virtual void* GetPointer(StackPos iStackPos) = 0;
  299.                 template<typename UserData> virtual UserData* GetLightUserData(StackPos iStackPos) = 0;
  300.                 virtual Number GetNumber(StackPos iStackPos, bool bCoerceString = true) = 0;
  301.                 virtual Integer GetInteger(StackPos iStackPos, bool bCoerceString = true, bool bAllowDecimal = true) = 0;
  302.                 virtual Unsigned GetUnsigned(StackPos iStackPos, bool bCoerceString = true, bool bAllowDecimal = true) = 0;
  303.                 virtual std::string GetString(StackPos iStackPos, bool bCoerceNumber = true) = 0;
  304.                 virtual std::string GetStringLen(StackPos iStackPos, std::size_t uiLen, bool bCoerceNumber = true) = 0;
  305.                 virtual CFunc GetFunction(StackPos iStackPos, StackPos iUpValues = 0) = 0;
  306.                 virtual void* GetData(StackPos iStackPos, TypeID iType) = 0;
  307.                 template<typename UserData> virtual UserData* GetData(StackPos iStackPos, TypeID iType) = 0;
  308.         };
  309.     }
  310. }
  311.  
  312. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement