/**
* \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
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
*/
struct sSpiderFunction
{
+ /**
+ * \brief Next function in list
+ */
+ struct sSpiderFunction *Next;
+
/**
* \brief Function name
*/
* 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
};
/**
* \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