123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #ifndef DATATYPE_H
- #define DATATYPE_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <stdbool.h>
- #include "Types.h"
- #define VT_NOT_SET 0
- #define VT_INT 1
- #define VT_FLOAT 2
- #define VT_POINTER 3
- #define VT_ARRAY 4
- typedef struct {
- unsigned int type : 4;
- unsigned int offset : 28;
- union {
- int intValue;
- float floatValue;
- } data;
- } Value;
- #define DT_INT 0
- #define DT_FLOAT 1
- #define DT_VOID 2
- #define DT_STRUCT 3
- typedef struct {
- uint8 type : 7;
- uint8 pointer : 1;
- uint8 array;
- uint16 structId;
- } DataType;
- typedef struct {
- const char* name;
- DataType type;
- } StructVariable;
- typedef struct {
- const char* name;
- int id;
- int amount;
- StructVariable* vars;
- } Struct;
- typedef struct {
- int capacity;
- int entries;
- Struct* data;
- } Structs;
- int dtGetSize(DataType dt, const Structs* sts);
- DataType dtInt();
- DataType dtFloat();
- DataType dtVoid();
- DataType dtStruct(const Struct* st);
- DataType dtText();
- DataType dtToArray(DataType dt);
- DataType dtRemoveArray(DataType dt);
- Struct* dtGetStruct(const Structs* sts, DataType dt);
- DataType dtToPointer(DataType dt);
- bool dtRemovePointer(DataType* dt);
- bool dtCompare(DataType a, DataType b);
- bool dtIsInt(DataType dt);
- bool dtIsFloat(DataType dt);
- bool dtIsVoid(DataType dt);
- bool dtIsArray(DataType dt);
- const char* dtGetName(const Structs* sts, DataType dt);
- void stAddVariable(Struct* st, const char* name, DataType type);
- void stsInit(Structs* sts);
- void stsDelete(Structs* sts);
- Struct* stsSearch(Structs* sts, const char* name);
- Struct* stsAdd(Structs* sts, const char* name);
- void gstsInit();
- void gstsDelete();
- Structs* gstsGet();
- Struct* gstsAdd(const char* name);
- #ifdef __cplusplus
- }
- #endif
- #endif
|