I’ve built it for now in a separate branch called “self”:
git clone -b self https://github.com/Sentido-Labs/cedro.git
cd cedro
make bin/cedro # Just “make” will build cedrocc etc.
bin/cedro - <<' EOF' # Mind the indentation.
#pragma Cedro 1.0 self
list->init();
list.init();
list->append(123);
list.append(123);
EOF
The “self” flag after “#pragma Cedro 1.0” activates the “self” macro, because it should not be done by default.Result:
list->init(list);
list.init(&list);
list->append(list, 123);
list.append(&list, 123);
I’ll try it out for a few days and if it works well in practice I’ll document it and merge it into master.> I made a pre-processor
You followed the path of C++.
> You followed the path of C++.
To some extent yes, I know about cfront.
This is just another iteration on that old idea.
I normally avoid the function pointer overhead, which can be done with _Generic:
https://sentido-labs.com/en/library/cedro/202106171400/#loop...But list->init(list) might be a simpler solution for most cases, and compatible with C89/C99.