#ifndef __GRAVITY__CORE_H #define __GRAVITY__CORE_H #include #include // === TYPE DEFINITIONS === // typedef struct GravityOpaqueModule* GravityModule; typedef struct GravityOpaqueValue* GravityValue; typedef struct GravityOpaqueBuilder* GravityBuilder; typedef struct GravityOpaqueFunction* GravityFunction; typedef struct GravityOpaqueType* GravityType; typedef enum { GravityIntTypeKind = 0, GravityFloatTypeKind, GravityPointerTypeKind, GravityFunctionTypeKind, } GravityTypeKind; // ========================== // // === FUNCTION DEFINITIONS === // GravityModule gravityCreateModule(void); GravityBuilder gravityCreateBuilder(void); GravityFunction gravityNewFunction(GravityModule module, const char* name, GravityType functionType); GravityType gravityCreateFunctionType(int numArgs, GravityType* argTypes, GravityType returnType); GravityType gravityCreateIntegerType(uint8_t width, bool isSigned); // ============================ // #endif