Piotr Matuszkiewicz znalazł ostatnio link do dokumentu opisującego bibliotekę COS. Projekt C Object System aktualnie rozwijany jest na SourceForge dzięki Laurentowi Deniau, pracownikowi CERN. Cytując wypowiedź Pawła Laska na kanale #lisp, "this is, IMHO, awesome case of CLOS being translated to C".
Opis dokumentu (a zarazem biblioteki) głosi:
The C Object System (Cos) is a small C library which implements high-level concepts available in Clos, Objc and other object-oriented programming languages: uniform object model (class, meta-class and property-metaclass), generic functions, multi-methods, delegation, properties, exceptions, contracts and closures.
Oparta o Common Lisp Object System architektura COS'a pozwala nam więc używać technik obiektowych daleko wykraczających poza te zaimplementowane w C++ czy Javie.
Poniżej zamieszczam kodu oparty o jeden z przykładów w bibliotece, deklarujący klasę string z metodami do jej tworzenia i usuwania. Widać wyraźnie wpływy CLOS'u.
defclass(File, Stream)
FILE *file;
endclass
makclass(String);
defmethod(OBJ, ginitWithStr, String, (STR)str)
useclass(ExBadAlloc);
self->str = strdup(str);
if (!self->str)
THROW(ExBadAlloc);
retmethod(_1);
endmethod
defmethod(OBJ, gdeinit, String)
free(self->str);
retmethod(_1);
endmethod