Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/WolfireGames/overgrowth.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Scripting/angelscript/add_on/scriptany/scriptany.h')
-rw-r--r--Source/Scripting/angelscript/add_on/scriptany/scriptany.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/Source/Scripting/angelscript/add_on/scriptany/scriptany.h b/Source/Scripting/angelscript/add_on/scriptany/scriptany.h
new file mode 100644
index 00000000..4b23f576
--- /dev/null
+++ b/Source/Scripting/angelscript/add_on/scriptany/scriptany.h
@@ -0,0 +1,76 @@
+#ifndef SCRIPTANY_H
+#define SCRIPTANY_H
+
+#ifndef ANGELSCRIPT_H
+// Avoid having to inform include path if header is already include before
+#include <angelscript.h>
+#endif
+
+
+BEGIN_AS_NAMESPACE
+
+class CScriptAny
+{
+public:
+ // Constructors
+ CScriptAny(asIScriptEngine *engine);
+ CScriptAny(void *ref, int refTypeId, asIScriptEngine *engine);
+
+ // Memory management
+ int AddRef() const;
+ int Release() const;
+
+ // Copy the stored value from another any object
+ CScriptAny &operator=(const CScriptAny&);
+ int CopyFrom(const CScriptAny *other);
+
+ // Store the value, either as variable type, integer number, or real number
+ void Store(void *ref, int refTypeId);
+ void Store(asINT64 &value);
+ void Store(double &value);
+
+ // Retrieve the stored value, either as variable type, integer number, or real number
+ bool Retrieve(void *ref, int refTypeId) const;
+ bool Retrieve(asINT64 &value) const;
+ bool Retrieve(double &value) const;
+
+ // Get the type id of the stored value
+ int GetTypeId() const;
+
+ // GC methods
+ int GetRefCount();
+ void SetFlag();
+ bool GetFlag();
+ void EnumReferences(asIScriptEngine *engine);
+ void ReleaseAllHandles(asIScriptEngine *engine);
+
+protected:
+ virtual ~CScriptAny();
+ void FreeObject();
+
+ mutable int refCount;
+ mutable bool gcFlag;
+ asIScriptEngine *engine;
+
+ // The structure for holding the values
+ struct valueStruct
+ {
+ union
+ {
+ asINT64 valueInt;
+ double valueFlt;
+ void *valueObj;
+ };
+ int typeId;
+ };
+
+ valueStruct value;
+};
+
+void RegisterScriptAny(asIScriptEngine *engine);
+void RegisterScriptAny_Native(asIScriptEngine *engine);
+void RegisterScriptAny_Generic(asIScriptEngine *engine);
+
+END_AS_NAMESPACE
+
+#endif