crap-libs/lists/lists.h

36 lines
1.1 KiB
C
Raw Normal View History

2017-03-12 00:18:08 +00:00
#ifndef LISTS_H
#define LISTS_H
#include "../oop.h"
typedef Object_t Countable_t;
2017-03-12 00:18:08 +00:00
extern interface(Countable)
#define Countable_interface size_t (*length)(void*);
#define Countable(...) NULL; _Pragma("GCC error \"Cannot make instance of interface Countable.\"");
typedef Object_t List_t;
2017-03-12 00:18:08 +00:00
extern interface(List)
#define List_interface void (*add)(void*, void*); void* (*get)(void*, size_t); void (*remove)(void*, size_t);
#define List(...) NULL; _Pragma("GCC error \"Cannot make instance of interface List.\"");
typedef Object_t Stack_t;
2017-03-12 00:18:08 +00:00
extern interface(Stack)
#define Stack_interface void (*push)(void*, void*); void* (*pop)(void*);
#define Stack(...) NULL; _Pragma("GCC error \"Cannot make instance of interface Stack.\"");
typedef struct iterator_args {
void* list;
void* parameter;
void* obj;
int num; // -1 if no id
} iterator_args;
typedef bool (*iterator)(iterator_args);
typedef Object_t Iterateable_t;
extern interface(Iterateable)
#define Iterateable_interface bool (*iterate)(void*, iterator, void*)
#define Iterateable(...) NULL; _Pragma("GCC error \"Cannot make instance of interface Iterateable.\"");
2017-03-12 00:18:08 +00:00
#endif