diff options
author | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-07-08 23:01:08 +0200 |
---|---|---|
committer | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-07-08 23:01:08 +0200 |
commit | 083228a10dffcaa77b1d0035c29013c6802befd4 (patch) | |
tree | 4d8ba1ce8501f044d10135e836e6f956f1b99fa4 /squirrel_3_0_1_stable/_OLD_sqplus/SquirrelObject.h | |
parent | Added a lilypad finisher (diff) | |
download | cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.gz cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.bz2 cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.lz cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.xz cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.tar.zst cuberite-083228a10dffcaa77b1d0035c29013c6802befd4.zip |
Diffstat (limited to '')
-rw-r--r-- | squirrel_3_0_1_stable/_OLD_sqplus/SquirrelObject.h (renamed from squirrel_3_0_1_stable/sqplus/SquirrelObject.h) | 512 |
1 files changed, 256 insertions, 256 deletions
diff --git a/squirrel_3_0_1_stable/sqplus/SquirrelObject.h b/squirrel_3_0_1_stable/_OLD_sqplus/SquirrelObject.h index 647410a74..8824c3dea 100644 --- a/squirrel_3_0_1_stable/sqplus/SquirrelObject.h +++ b/squirrel_3_0_1_stable/_OLD_sqplus/SquirrelObject.h @@ -1,256 +1,256 @@ -#ifndef _SQUIRREL_OBJECT_H_ -#define _SQUIRREL_OBJECT_H_ - -class SquirrelObject -{ - friend class SquirrelVM; - -public: - SquirrelObject(); - virtual ~SquirrelObject(); - SquirrelObject(const SquirrelObject & o); - SquirrelObject(HSQOBJECT o); - -#if 1 - template <typename _ty> - SquirrelObject(const _ty & val) { sq_resetobject(&_o); Set((_ty &)val); } // Cast away const to avoid compiler SqPlus::Push() match issue. - template <typename _ty> - SquirrelObject(_ty & val) { sq_resetobject(&_o); Set(val); } - template <typename _ty> - SquirrelObject(_ty * val) { sq_resetobject(&_o); SetByValue(val); } // Set() would also be OK here. SetByValue() to save potential compiler overhead. -#endif - - SquirrelObject & operator = (HSQOBJECT ho); - SquirrelObject & operator = (const SquirrelObject &o); - SquirrelObject & operator = (int n); - SquirrelObject & operator = (HSQUIRRELVM v); - - operator HSQOBJECT& (){ return _o; } - bool operator ==(const SquirrelObject& o); - bool CompareUserPointer(const SquirrelObject& o); - - void AttachToStackObject(int idx); - void Reset(void); // Release (any) reference and reset _o. - SquirrelObject Clone(); - BOOL SetValue(const SquirrelObject &key,const SquirrelObject &val); - - BOOL SetValue(SQInteger key,const SquirrelObject &val); - BOOL SetValue(INT key,bool b); // Compiler treats SQBool as INT. - BOOL SetValue(INT key,INT n); - BOOL SetValue(INT key,FLOAT f); - BOOL SetValue(INT key,const SQChar *s); - - BOOL SetValue(const SQChar *key,const SquirrelObject &val); - BOOL SetValue(const SQChar *key,bool b); - BOOL SetValue(const SQChar *key,INT n); - BOOL SetValue(const SQChar *key,FLOAT f); - BOOL SetValue(const SQChar *key,const SQChar *s); - - BOOL SetUserPointer(const SQChar * key,SQUserPointer up); - SQUserPointer GetUserPointer(const SQChar * key); - BOOL SetUserPointer(INT key,SQUserPointer up); - SQUserPointer GetUserPointer(INT key); - - BOOL NewUserData(const SQChar * key,INT size,SQUserPointer * typetag=0); - BOOL GetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag=0); - BOOL RawGetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag=0); - - // === BEGIN Arrays === - - BOOL ArrayResize(INT newSize); - BOOL ArrayExtend(INT amount); - BOOL ArrayReverse(void); - SquirrelObject ArrayPop(SQBool returnPoppedVal=SQTrue); - - void ArrayAppend(const SquirrelObject &o); - - template<typename T> - BOOL ArrayAppend(T item); - - // === END Arrays === - - BOOL SetInstanceUP(SQUserPointer up); - BOOL IsNull() const; - int IsNumeric() const; - int Len() const; - BOOL SetDelegate(SquirrelObject &obj); - SquirrelObject GetDelegate(); - const SQChar* ToString(); - bool ToBool(); - SQInteger ToInteger(); - SQFloat ToFloat(); - SQUserPointer GetInstanceUP(SQUserPointer tag) const; - SquirrelObject GetValue(const SQChar *key) const; - BOOL Exists(const SQChar *key) const; - FLOAT GetFloat(const SQChar *key) const; - INT GetInt(const SQChar *key) const; - const SQChar *GetString(const SQChar *key) const; - bool GetBool(const SQChar *key) const; - SquirrelObject GetValue(INT key) const; - FLOAT GetFloat(INT key) const; - INT GetInt(INT key) const; - const SQChar *GetString(INT key) const; - bool GetBool(INT key) const; - SquirrelObject GetAttributes(const SQChar *key = NULL); - SQObjectType GetType(); - HSQOBJECT & GetObjectHandle() const {return *(HSQOBJECT*)&_o;} - BOOL BeginIteration(); - BOOL Next(SquirrelObject &key,SquirrelObject &value); - void EndIteration(); - - BOOL GetTypeTag(SQUserPointer * typeTag); - - // === Get the type name of item/object through string key in a table or class. Returns NULL if the type name is not set (not an SqPlus registered type). - const SQChar * GetTypeName(const SQChar * key); - // === Get the type name of item/object through INT key in a table or class. Returns NULL if the type name is not set (not an SqPlus registered type). - const SQChar * GetTypeName(INT key); - // === Get the type name of this object, else return NULL if not an SqPlus registered type. - const SQChar * GetTypeName(void); - - // === Return base class of object using sq_getbase() === - SquirrelObject GetBase(); - - // === BEGIN code suggestion from the Wiki === - // Get any bound type from this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here. - template<typename _ty> - _ty Get(void); - - // Set any bound type to this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here. - template<typename _ty> - SquirrelObject SetByValue(_ty val); // classes/structs should be passed by ref (below) to avoid an extra copy. - - // Set any bound type to this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here. - template<typename _ty> - SquirrelObject &Set(_ty & val); - - // === END code suggestion from the Wiki === - -private: - BOOL GetSlot(const SQChar *name) const; - BOOL RawGetSlot(const SQChar *name) const; - BOOL GetSlot(INT key) const; - HSQOBJECT _o; -}; - -struct StackHandler { - StackHandler(HSQUIRRELVM v) { - _top = sq_gettop(v); - this->v = v; - } - SQFloat GetFloat(int idx) { - SQFloat x = 0.0f; - if(idx > 0 && idx <= _top) { - sq_getfloat(v,idx,&x); - } - return x; - } - SQInteger GetInt(int idx) { - SQInteger x = 0; - if(idx > 0 && idx <= _top) { - sq_getinteger(v,idx,&x); - } - return x; - } - HSQOBJECT GetObjectHandle(int idx) { - HSQOBJECT x; - if(idx > 0 && idx <= _top) { - sq_resetobject(&x); - sq_getstackobj(v,idx,&x); - } - return x; - } - const SQChar *GetString(int idx) - { - const SQChar *x = NULL; - if(idx > 0 && idx <= _top) { - sq_getstring(v,idx,&x); - } - return x; - } - SQUserPointer GetUserPointer(int idx) - { - SQUserPointer x = 0; - if(idx > 0 && idx <= _top) { - sq_getuserpointer(v,idx,&x); - } - return x; - } - SQUserPointer GetInstanceUp(int idx,SQUserPointer tag) - { - SQUserPointer self; - if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer*)&self,tag))) - return NULL; - return self; - } - SQUserPointer GetUserData(int idx,SQUserPointer tag=0) - { - SQUserPointer otag; - SQUserPointer up; - if(idx > 0 && idx <= _top) { - if(SQ_SUCCEEDED(sq_getuserdata(v,idx,&up,&otag))) { - if(tag == otag) - return up; - } - } - return NULL; - } - BOOL GetBool(int idx) - { - SQBool ret; - if(idx > 0 && idx <= _top) { - if(SQ_SUCCEEDED(sq_getbool(v,idx,&ret))) - return ret; - } - return FALSE; - } - int GetType(int idx) - { - if(idx > 0 && idx <= _top) { - return sq_gettype(v,idx); - } - return -1; - } - - int GetParamCount() { - return _top; - } - int Return(const SQChar *s) - { - sq_pushstring(v,s,-1); - return 1; - } - int Return(FLOAT f) - { - sq_pushfloat(v,f); - return 1; - } - int Return(INT i) - { - sq_pushinteger(v,i); - return 1; - } - int Return(bool b) - { - sq_pushbool(v,b); - return 1; - } - int Return(SQUserPointer p) { - sq_pushuserpointer(v,p); - return 1; - } - int Return(SquirrelObject &o) - { - sq_pushobject(v,o.GetObjectHandle()); - return 1; - } - int Return() { return 0; } - int ThrowError(const SQChar *error) { - return sq_throwerror(v,error); - } - HSQUIRRELVM GetVMPtr() { return v; } -private: - int _top; - HSQUIRRELVM v; -}; - -#endif //_SQUIRREL_OBJECT_H_ +#ifndef _SQUIRREL_OBJECT_H_
+#define _SQUIRREL_OBJECT_H_
+
+class SquirrelObject
+{
+ friend class SquirrelVM;
+
+public:
+ SquirrelObject();
+ virtual ~SquirrelObject();
+ SquirrelObject(const SquirrelObject & o);
+ SquirrelObject(HSQOBJECT o);
+
+#if 1
+ template <typename _ty>
+ SquirrelObject(const _ty & val) { sq_resetobject(&_o); Set((_ty &)val); } // Cast away const to avoid compiler SqPlus::Push() match issue.
+ template <typename _ty>
+ SquirrelObject(_ty & val) { sq_resetobject(&_o); Set(val); }
+ template <typename _ty>
+ SquirrelObject(_ty * val) { sq_resetobject(&_o); SetByValue(val); } // Set() would also be OK here. SetByValue() to save potential compiler overhead.
+#endif
+
+ SquirrelObject & operator = (HSQOBJECT ho);
+ SquirrelObject & operator = (const SquirrelObject &o);
+ SquirrelObject & operator = (int n);
+ SquirrelObject & operator = (HSQUIRRELVM v);
+
+ operator HSQOBJECT& (){ return _o; }
+ bool operator ==(const SquirrelObject& o);
+ bool CompareUserPointer(const SquirrelObject& o);
+
+ void AttachToStackObject(int idx);
+ void Reset(void); // Release (any) reference and reset _o.
+ SquirrelObject Clone();
+ BOOL SetValue(const SquirrelObject &key,const SquirrelObject &val);
+
+ BOOL SetValue(SQInteger key,const SquirrelObject &val);
+ BOOL SetValue(INT key,bool b); // Compiler treats SQBool as INT.
+ BOOL SetValue(INT key,INT n);
+ BOOL SetValue(INT key,FLOAT f);
+ BOOL SetValue(INT key,const SQChar *s);
+
+ BOOL SetValue(const SQChar *key,const SquirrelObject &val);
+ BOOL SetValue(const SQChar *key,bool b);
+ BOOL SetValue(const SQChar *key,INT n);
+ BOOL SetValue(const SQChar *key,FLOAT f);
+ BOOL SetValue(const SQChar *key,const SQChar *s);
+
+ BOOL SetUserPointer(const SQChar * key,SQUserPointer up);
+ SQUserPointer GetUserPointer(const SQChar * key);
+ BOOL SetUserPointer(INT key,SQUserPointer up);
+ SQUserPointer GetUserPointer(INT key);
+
+ BOOL NewUserData(const SQChar * key,INT size,SQUserPointer * typetag=0);
+ BOOL GetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag=0);
+ BOOL RawGetUserData(const SQChar * key,SQUserPointer * data,SQUserPointer * typetag=0);
+
+ // === BEGIN Arrays ===
+
+ BOOL ArrayResize(INT newSize);
+ BOOL ArrayExtend(INT amount);
+ BOOL ArrayReverse(void);
+ SquirrelObject ArrayPop(SQBool returnPoppedVal=SQTrue);
+
+ void ArrayAppend(const SquirrelObject &o);
+
+ template<typename T>
+ BOOL ArrayAppend(T item);
+
+ // === END Arrays ===
+
+ BOOL SetInstanceUP(SQUserPointer up);
+ BOOL IsNull() const;
+ int IsNumeric() const;
+ int Len() const;
+ BOOL SetDelegate(SquirrelObject &obj);
+ SquirrelObject GetDelegate();
+ const SQChar* ToString();
+ bool ToBool();
+ SQInteger ToInteger();
+ SQFloat ToFloat();
+ SQUserPointer GetInstanceUP(SQUserPointer tag) const;
+ SquirrelObject GetValue(const SQChar *key) const;
+ BOOL Exists(const SQChar *key) const;
+ FLOAT GetFloat(const SQChar *key) const;
+ INT GetInt(const SQChar *key) const;
+ const SQChar *GetString(const SQChar *key) const;
+ bool GetBool(const SQChar *key) const;
+ SquirrelObject GetValue(INT key) const;
+ FLOAT GetFloat(INT key) const;
+ INT GetInt(INT key) const;
+ const SQChar *GetString(INT key) const;
+ bool GetBool(INT key) const;
+ SquirrelObject GetAttributes(const SQChar *key = NULL);
+ SQObjectType GetType();
+ HSQOBJECT & GetObjectHandle() const {return *(HSQOBJECT*)&_o;}
+ BOOL BeginIteration();
+ BOOL Next(SquirrelObject &key,SquirrelObject &value);
+ void EndIteration();
+
+ BOOL GetTypeTag(SQUserPointer * typeTag);
+
+ // === Get the type name of item/object through string key in a table or class. Returns NULL if the type name is not set (not an SqPlus registered type).
+ const SQChar * GetTypeName(const SQChar * key);
+ // === Get the type name of item/object through INT key in a table or class. Returns NULL if the type name is not set (not an SqPlus registered type).
+ const SQChar * GetTypeName(INT key);
+ // === Get the type name of this object, else return NULL if not an SqPlus registered type.
+ const SQChar * GetTypeName(void);
+
+ // === Return base class of object using sq_getbase() ===
+ SquirrelObject GetBase();
+
+ // === BEGIN code suggestion from the Wiki ===
+ // Get any bound type from this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here.
+ template<typename _ty>
+ _ty Get(void);
+
+ // Set any bound type to this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here.
+ template<typename _ty>
+ SquirrelObject SetByValue(_ty val); // classes/structs should be passed by ref (below) to avoid an extra copy.
+
+ // Set any bound type to this SquirrelObject. Note that Squirrel's handling of references and pointers still holds here.
+ template<typename _ty>
+ SquirrelObject &Set(_ty & val);
+
+ // === END code suggestion from the Wiki ===
+
+private:
+ BOOL GetSlot(const SQChar *name) const;
+ BOOL RawGetSlot(const SQChar *name) const;
+ BOOL GetSlot(INT key) const;
+ HSQOBJECT _o;
+};
+
+struct StackHandler {
+ StackHandler(HSQUIRRELVM v) {
+ _top = sq_gettop(v);
+ this->v = v;
+ }
+ SQFloat GetFloat(int idx) {
+ SQFloat x = 0.0f;
+ if(idx > 0 && idx <= _top) {
+ sq_getfloat(v,idx,&x);
+ }
+ return x;
+ }
+ SQInteger GetInt(int idx) {
+ SQInteger x = 0;
+ if(idx > 0 && idx <= _top) {
+ sq_getinteger(v,idx,&x);
+ }
+ return x;
+ }
+ HSQOBJECT GetObjectHandle(int idx) {
+ HSQOBJECT x;
+ if(idx > 0 && idx <= _top) {
+ sq_resetobject(&x);
+ sq_getstackobj(v,idx,&x);
+ }
+ return x;
+ }
+ const SQChar *GetString(int idx)
+ {
+ const SQChar *x = NULL;
+ if(idx > 0 && idx <= _top) {
+ sq_getstring(v,idx,&x);
+ }
+ return x;
+ }
+ SQUserPointer GetUserPointer(int idx)
+ {
+ SQUserPointer x = 0;
+ if(idx > 0 && idx <= _top) {
+ sq_getuserpointer(v,idx,&x);
+ }
+ return x;
+ }
+ SQUserPointer GetInstanceUp(int idx,SQUserPointer tag)
+ {
+ SQUserPointer self;
+ if(SQ_FAILED(sq_getinstanceup(v,idx,(SQUserPointer*)&self,tag)))
+ return NULL;
+ return self;
+ }
+ SQUserPointer GetUserData(int idx,SQUserPointer tag=0)
+ {
+ SQUserPointer otag;
+ SQUserPointer up;
+ if(idx > 0 && idx <= _top) {
+ if(SQ_SUCCEEDED(sq_getuserdata(v,idx,&up,&otag))) {
+ if(tag == otag)
+ return up;
+ }
+ }
+ return NULL;
+ }
+ BOOL GetBool(int idx)
+ {
+ SQBool ret;
+ if(idx > 0 && idx <= _top) {
+ if(SQ_SUCCEEDED(sq_getbool(v,idx,&ret)))
+ return ret;
+ }
+ return FALSE;
+ }
+ int GetType(int idx)
+ {
+ if(idx > 0 && idx <= _top) {
+ return sq_gettype(v,idx);
+ }
+ return -1;
+ }
+
+ int GetParamCount() {
+ return _top;
+ }
+ int Return(const SQChar *s)
+ {
+ sq_pushstring(v,s,-1);
+ return 1;
+ }
+ int Return(FLOAT f)
+ {
+ sq_pushfloat(v,f);
+ return 1;
+ }
+ int Return(INT i)
+ {
+ sq_pushinteger(v,i);
+ return 1;
+ }
+ int Return(bool b)
+ {
+ sq_pushbool(v,b);
+ return 1;
+ }
+ int Return(SQUserPointer p) {
+ sq_pushuserpointer(v,p);
+ return 1;
+ }
+ int Return(SquirrelObject &o)
+ {
+ sq_pushobject(v,o.GetObjectHandle());
+ return 1;
+ }
+ int Return() { return 0; }
+ int ThrowError(const SQChar *error) {
+ return sq_throwerror(v,error);
+ }
+ HSQUIRRELVM GetVMPtr() { return v; }
+private:
+ int _top;
+ HSQUIRRELVM v;
+};
+
+#endif //_SQUIRREL_OBJECT_H_
|