/* vim: set expandtab ts=4 sw=4: */
/*
* You may redistribute this program and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef Object_H
#define Object_H
#include
#include "memory/Allocator.h"
// Dictionaries and lists are pointers to the head entry so that the head can change.
typedef struct Dict_Entry* Dict;
typedef struct List_Item* List;
typedef struct String_s {
uintptr_t len;
char* bytes;
} String;
typedef String String_t;
enum Object_Type {
Object_INTEGER,
Object_STRING,
Object_LIST,
Object_DICT,
Object_UNPARSABLE
};
typedef struct {
enum Object_Type type;
union {
int64_t number;
String* string;
List* list;
Dict* dictionary;
} as;
} Object;
//#include "benc/List.h"
//#include "benc/Dict.h"
#endif