Files
Gravity/include/gravity/core.h

44 lines
1.5 KiB
C

#ifndef __GRAVITY__CORE_H
#define __GRAVITY__CORE_H
#include <stdint.h>
#include <stdbool.h>
// === TYPE DEFINITIONS === //
typedef struct GravityOpaqueModule* GravityModule;
typedef struct GravityOpaqueValue* GravityValue;
typedef struct GravityOpaqueBuilder* GravityBuilder;
typedef struct GravityOpaqueFunction* GravityFunction;
typedef struct GravityOpaqueBlock* GravityBlock;
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);
GravityBlock gravityStartBlock(const char* name, GravityFunction function, uint16_t numBlockParams, ...);
GravityValue newIntConstant(GravityType intType, int64_t value);
GravityType gravityCreateFunctionType(int numArgs, GravityType* argTypes, GravityType returnType);
GravityType gravityCreateIntegerType(uint8_t width, bool isSigned);
char* gravityModuleToCStr(GravityModule module);
char* gravityTypeToCStr(GravityType type);
char* gravityFunctionToCStr(GravityFunction function);
char* gravityValueToCStr(GravityValue value);
void gravityPositionBuilderAtEnd(GravityBuilder builder, GravityBlock block);
GravityValue gravityBuildAlloc(GravityBuilder builder, GravityType type, const char* name);
// ============================ //
#endif