X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2Finclude%2Fspiderscript.h;h=dc62a23d6a21fb6e2c5f1df4fc396e3e935ac8e8;hb=01fbfb424865291e00242681662ed9b20c33a524;hp=c0d6d4512610db5b395a0791843398b4920d2d9e;hpb=86f49ede5038704ac4f12eab9794e9a8110a4985;p=tpg%2Facess2.git diff --git a/Usermode/include/spiderscript.h b/Usermode/include/spiderscript.h index c0d6d451..dc62a23d 100644 --- a/Usermode/include/spiderscript.h +++ b/Usermode/include/spiderscript.h @@ -22,16 +22,43 @@ typedef struct sSpiderObject tSpiderObject; /** * \brief SpiderScript Variable Datatypes + * \todo Expand the descriptions */ enum eSpiderScript_DataTypes { - SS_DATATYPE_UNDEF, //!< Undefined - SS_DATATYPE_NULL, //!< NULL (Probably will never be used) - SS_DATATYPE_DYNAMIC, //!< Dynamically typed variable (will this be used?) - SS_DATATYPE_OPAQUE, //!< Opaque data type - SS_DATATYPE_OBJECT, //!< Object reference - SS_DATATYPE_ARRAY, //!< Array - SS_DATATYPE_INTEGER, //!< Integer (64-bits) + /** + * \brief Undefined data + * \note Default type of an undefined dynamic variable + */ + SS_DATATYPE_UNDEF, + /** + * \brief Dynamically typed variable + * \note Used to dentote a non-fixed type for function parameters + */ + SS_DATATYPE_DYNAMIC, + /** + * \brief Opaque Data Pointer + * + * Opaque data types are used for resource handles or for system buffers. + */ + SS_DATATYPE_OPAQUE, + /** + * \brief Object reference + * + * A reference to a SpiderScript class instance. Can be accessed + * using the -> operator. + */ + SS_DATATYPE_OBJECT, + /** + * \brief Array data type + */ + SS_DATATYPE_ARRAY, + /** + * \brief Integer datatype + * + * 64-bit integer + */ + SS_DATATYPE_INTEGER, SS_DATATYPE_REAL, //!< Real Number (double) SS_DATATYPE_STRING, //!< String NUM_SS_DATATYPES @@ -46,8 +73,7 @@ struct sSpiderVariant int bDyamicTyped; //!< Use static typing - int NFunctions; //!< Number of functions - tSpiderFunction *Functions; //!< Functions + tSpiderFunction *Functions; //!< Functions (Linked List) int NConstants; //!< Number of constants tSpiderValue *Constants; //!< Number of constants @@ -155,6 +181,11 @@ struct sSpiderObject */ struct sSpiderFunction { + /** + * \brief Next function in list + */ + struct sSpiderFunction *Next; + /** * \brief Function name */ @@ -171,7 +202,7 @@ struct sSpiderFunction * parameters, if the final entry is -1, the function has a variable * number of arguments. */ - int *ArgTypes; // Zero (or -1) terminated array of parameter types + int ArgTypes[]; // Zero (or -1) terminated array of parameter types }; @@ -196,7 +227,22 @@ extern tSpiderValue *SpiderScript_ExecuteMethod(tSpiderScript *Script, /** * \brief Free a script + * \param Script Script structure to free */ extern void SpiderScript_Free(tSpiderScript *Script); +/** + * \name tSpiderValue Manipulation functions + * \{ + */ +extern tSpiderValue *SpiderScript_CreateInteger(uint64_t Value); +extern tSpiderValue *SpiderScript_CreateReal(double Value); +extern tSpiderValue *SpiderScript_CreateString(int Length, const char *Data); +extern tSpiderValue *SpiderScript_CastValueTo(int Type, tSpiderValue *Source); +extern int SpiderScript_IsValueTrue(tSpiderValue *Value); +extern char *SpiderScript_DumpValue(tSpiderValue *Value); +/** + * \} + */ + #endif