Skip to content

A library to use as a superset of the C language adding a lot of modern concepts missing in C

License

Notifications You must be signed in to change notification settings

DaemonSnake/ObjectC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ObjectC

This project is a library to use as a superset of the C language.

It offers the following :


-Exceptions handling (try catch finally)
try {
 ...
} catch(TypeName, VarName) {
 ...
} finally {
 ...
}

-Classes, interfaces with Java like inheritance

class(Name, BaseClass, Interfaces...)
{
};

virtual(Name)
{
};

end_class(Name, OtherNames...);

-Introspection

Object tmp = new(String, ctorS, "Hello") as(Object); // as only needed when casting from object to interface pointer
isInstanceOf(String, tmp) // => true
dynamic_cast(String, tmp)
const char *method(toString) = getMethod(tmp, "toString");
invoke(void, tmp, "toString");

-Python Yield (co-routine, generators)

yields(int) range(int begin, int end)
{
    for (int i = begin; i < end; i++)
       yield(i);
    yield_break(int);
}

int main()
{
   for_yield(i, range(0, 5)) {
     printf("%d\n", i);
   }
   return 0;
}

-C++ life-cycle (RAII)
-C++ rvalue reference
-C#-like syntax for { get; set } (axors)
-private member and public methods
-foreach() keyword using coroutines (yield)
-override of methods
-etc...

Features to come (See Future/ ):

-Chained method call
-Python's format for strings
-A wrapper for gcc to add extra features and simplify syntax and improve error debuging
-A true ref counting system without loosing RAII
-scope(...) principle from Dlang
-A custom ABI for methods described as follow : type name_'number_of_arguments'(...)

Disclamer: this project relies heavily gcc's extensions to the C language. Most of thoses exist in clang under a different name but not all. Therefore, for now, clang support is not a priority. Once we feel confident in tagging the project in 1.0 then things may change. The main prority is to improve the language and implement the above features.

Thanks.

About

A library to use as a superset of the C language adding a lot of modern concepts missing in C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages