aboutsummaryrefslogtreecommitdiff
path: root/main.c
blob: 0550dc1eeb8dad6ae54686cbc769ff8eef17dda1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// This is the test unit, not the actual code.

#define __MOONSHINE_LIBC_WARNINGS
#include "moonshine.h"

void cleanup_free(var* input) { print("Deallocation logic goes here ", input); }

#define auto_free __attribute__((cleanup(cleanup_free)))

#define create(name, ...)                                                                                                      \
    auto_free var cat(name, _parent) = __VA_ARGS__;                                                                            \
    auto          name               = cat(name, _parent);

int main() {
    create(proof_of_concept, new(int));

    print("Neat, right? ", proof_of_concept);

    return 0;
}