skopy/lib/include/value.h

41 lines
635 B
C
Raw Normal View History

2024-03-31 21:10:56 +00:00
#ifndef SK_VALUE_H
#define SK_VALUE_H
#include "commons.h"
#include "node.h"
#define TYPE_KIND(G) \
2024-04-01 19:42:36 +00:00
G(TYPE_INT), G(TYPE_BOOL), G(TYPE_FLOAT), \
G(TYPE_STRING)
2024-03-31 21:10:56 +00:00
SK_ENUM_H(TypeKind, TYPE_KIND);
union val
{
int integer;
2024-04-01 19:08:42 +00:00
double real;
2024-04-01 12:00:06 +00:00
bool boolean;
2024-04-01 19:42:36 +00:00
char* str;
2024-03-31 21:10:56 +00:00
};
struct value
{
TypeKind type;
union val val;
int line;
2024-03-31 21:10:56 +00:00
};
void value_init(struct value* self,
TypeKind type,
union val val,
int line);
2024-03-31 21:10:56 +00:00
void value_free(struct value* self);
bool value_equals(struct value* self, struct value* rhs);
2024-03-31 21:10:56 +00:00
void value_str(struct value* self, struct str* dest);
#endif