This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright (C) 2023 dasshiva | |
#include <stdlib.h> | |
// Compiles on GCC 11.4.0 ubuntu idk about other systems | |
// Abusing macros to make C look a tiny bit better (maybe worse for some) | |
#define class(x, contents) typedef struct x x; struct x contents; // declare a class x | |
#define var(ty, name) ty name; // declare a variable | |
#define func(ty, x, ...) ty (*##x) (__VA_ARGS__); // declare a member function maybe static or non-static | |
#define static_func_def(ty, x, ...) ty x (__VA_ARGS__) // declare a static function | |
#define func_defnp(class, ty, x) ty x (class* self) // define a non-static function taking no parameters |