simplification, object redefiniton
authorxchaos <xchaos@4bb87942-c103-4e5a-b51c-0ebff58f8515>
Thu, 31 Jul 2008 12:51:45 +0000 (12:51 +0000)
committerxchaos <xchaos@4bb87942-c103-4e5a-b51c-0ebff58f8515>
Thu, 31 Jul 2008 12:51:45 +0000 (12:51 +0000)
git-svn-id: https://dev.arachne.cz/repos/cll1h/trunk@73 4bb87942-c103-4e5a-b51c-0ebff58f8515

cll1.h

diff --git a/cll1.h b/cll1.h
index 14abb4e144ef3adf7043896c760be3ec9157345a..b8405b035f92a40664227b89636f770b61c0dfd5 100644 (file)
--- a/cll1.h
+++ b/cll1.h
@@ -1,4 +1,4 @@
-/* .----------------------------------------------------------------------.
+   /* .----------------------------------------------------------------------.
   /  C<<1 header file - C language style sheet - GNU C/ANSI C99 compliant 
  /  Cumbersome Extraction and Report Language - http://cll1h.arachne.cz/ 
 '---------------------------------------------------------------------- */
@@ -104,7 +104,6 @@ extern  unsigned RANDOM_SEED;
 #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.
  '----------------------------------------------------------------------- */
@@ -177,9 +176,9 @@ extern  unsigned RANDOM_SEED;
 /* .----------------------------------------------------------------------.
   /  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__)
@@ -190,8 +189,8 @@ extern  unsigned RANDOM_SEED;
 #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.
This page took 0.269286 seconds and 4 git commands to generate.