/* 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 { uintptr_t len; char* bytes; } String; 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