-/* .----------------------------------------------------------------------.
+ /* .----------------------------------------------------------------------.
/ C<<1 header file - C language style sheet - GNU C/ANSI C99 compliant
/ Cumbersome Extraction and Report Language - http://cll1h.arachne.cz/
'---------------------------------------------------------------------- */
#define dict(TYPE) tree(TYPE); str __key
#define array(TYPE) tree(TYPE); int __key
#define interface(TYPE) TYPE __interface
-#define this_must_be(TYPE) TYPE this
/* .----------------------------------------------------------------------.
/ 5. C<<1 string manipulation, updated 2008-01-26 xCh.
'----------------------------------------------------------------------- */
/* .----------------------------------------------------------------------.
/ 8. C<<1 object oriented infrastructure, updated 2008-02-04
'----------------------------------------------------------------------- */
-#define I_must_be(TYPE) TYPE self, void *_method
-#define we_can_be(TYPE) TYPE _we, void *_method
-#define we_can_be_whatever void *_we, void *_method
+/* too non-C: #define I_must_be(TYPE) TYPE self, void *_method * */
+#define member_of(TYPE) TYPE _we
+#define anonymous void *_we
#define I_am(TYPE) TYPE self=(TYPE)_we
#define def_community(METATYPE,ITYPE) def_mem(METATYPE) { ITYPE __interface; };
#define def_method(RET,NAME,...) RET (*NAME)(__VA_ARGS__)
#define construct_object(MTYPE,...) (void *)_init_##TYPE##_()
#define init_object(TYPE,...) (TYPE)_init_##TYPE##_(__VA_ARGS__)
#define init_polymorph(TYPE,COMMUNITY,...) (COMMUNITY)_init_##TYPE##_(__VA_ARGS__)
-#define _(OBJECT,...) ( _ASSERT(OBJECT), (*( OBJECT->interface->_ARG1(__VA_ARGS__,) )) ( OBJECT,OBJECT->interface->__VA_ARGS__ ) )
-#define __(OBJECT,...) ( _ASSERT(OBJECT), (*( __cll1_seekmethod(OBJECT->interface,_ARG1(__VA_ARGS__,)) )) ( OBJECT,OBJECT->interface->__VA_ARGS__ ) )
+#define _(METHOD,...) ( _ASSERT(ARG1(__VA_ARGS__,)), (*( ARG1(__VA_ARGS__,)->__interface->METHOD )) ( __VA_ARGS__ ) )
+#define __(METHOD,...) ( _ASSERT(ARG1(__VA_ARGS__,)), (*( __cll1_seekmethod(ARG1(__VA_ARGS__,)->__interface,METHOD) )) ( __VA_ARGS__ ) )
#define call(OBJTYPE,METHOD,...) { int _N=0; OBJTYPE _OBJ; /* <-' */ while( (_OBJ=(OBJTYPE)_cll1_for_ptrs(_N++,__VA_ARGS__,NIL))!=(struct OBJTYPE *)NIL ) _(_OBJ,METHOD); }
/* .----------------------------------------------------------------------.
/ 9. implementation of C<<1 library functions, updated 2008-01-26 xCh.