rev 260 - in trunk: include/prothon modules/File modules/Re src

SVN User <[email protected]>
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: bcollins
Date: 2004-04-02 11:20:31 -0500 (Fri, 02 Apr 2004)
New Revision: 260

Modified:
   trunk/include/prothon/prothon_dll.h
   trunk/modules/File/File.c
   trunk/modules/Re/Re.c
   trunk/src/Makefile.in
   trunk/src/builtins-core.c
   trunk/src/builtins-dict.c
   trunk/src/builtins-float.c
   trunk/src/builtins-int.c
   trunk/src/builtins-list.c
   trunk/src/builtins-string.c
   trunk/src/builtins-tuple.c
   trunk/src/object.c
Log:
Revert the module loading back to original style. No more linker magic.


Modified: trunk/include/prothon/prothon_dll.h
===================================================================
--- trunk/include/prothon/prothon_dll.h	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/include/prothon/prothon_dll.h	2004-04-02 16:20:31 UTC (rev 260)
@@ -118,15 +118,7 @@
 
 } pr_services_t;
 
-typedef void (* dll_initcall_t)(pr_services_t *);
 
-#ifdef WIN32
-#pragma section("._module_init",read)
-#pragma section("._objinit",read)
-#endif
-
-typedef void (* mod_initcall_t)(void);
-
 /* XXX: Need to document all this stuff */
 #define MODULE_DECLARE(name)    \
 static isp ist;                 \
@@ -134,40 +126,36 @@
 static obj_p name##_OBJ;
 
 /* Should be used to initialize the name##_OBJ */
-#define MODULE_START(name)					\
-PR_PLACE_IN_SECTION(static mod_initcall_t,initcalls_##name,	\
-		    "._objinit") = NULL;			\
-static void name##_create(void);				\
-PR_PLACE_IN_SECTION(static mod_initcall_t,name##_create_ptr,	\
-		"._objinit") = name##_create;			\
-static void name##_create(void)
+#define MODULE_START(name) \
+static void name##_initialize_module(void)
 
+#define DEF(slf, func, fparam_list)				\
+static obj_p slf##func(isp ist, obj_p self, int pcnt,		\
+		       obj_p* parms, obj_p dlocals);		\
+static void slf##func##init(void) {				\
+        set_attr(ist, slf##_OBJ, sym(ist, #func),		\
+		 new_func_obj(ist, slf##func, fparam_list));	\
+}								\
+static obj_p slf##func(isp ist, obj_p self, int pcnt,		\
+		       obj_p* parms, obj_p dlocals)
 
-#define MODULE_END(name)                                        \
-PR_PLACE_IN_SECTION(static mod_initcall_t,initcalls_##name##_end,"._objinit") = NULL
 
-
-#define DEF(slf, func, fparam_list) \
-static obj_p slf##func(isp ist, obj_p self, int pcnt, obj_p* parms, obj_p dlocals);             \
-static void slf##func##init(void) {                                                             \
-        set_attr(ist, slf##_OBJ, sym(ist, #func), new_func_obj(ist, slf##func, fparam_list));   \
-}                                                                                               \
-PR_PLACE_IN_SECTION(static mod_initcall_t,slf##func##init_ptr, "._objinit") = slf##func##init; \
-static obj_p slf##func(isp ist, obj_p self, int pcnt, obj_p* parms, obj_p dlocals)
-
-
-#define MAIN_MODULE_INIT(name)								\
-static void name##_module_install(void);						\
-PR_DECLARE_EXPORT void name##_dll_entry(pr_services_t* srvcs)				\
-{											\
-	services = srvcs;								\
-	ist = get_ist();								\
-	name##_module_install();							\
-}											\
-PR_PLACE_IN_SECTION(static dll_initcall_t,name##dll_entry_ptr, "._module_init") =	\
-	name##_dll_entry;								\
+#define MAIN_MODULE_INIT(name)					\
+static void name##_module_install(void);			\
+PR_DECLARE_EXPORT void name##_dll_entry(pr_services_t* srvcs)	\
+{								\
+	services = srvcs;					\
+	ist = get_ist();					\
+	name##_module_install();				\
+}								\
 static void name##_module_install(void)
 
+#define BUILTIN_LOAD(name)			\
+do {						\
+	extern void name##_dll_entry(void);	\
+	name##_dll_entry();			\
+} while(0)
+
 #define MODULE_ADD_TO_BASE(name)			\
 do {							\
 	set_attr(ist, OBJ(MODULES), sym(ist, #name),	\
@@ -181,16 +169,12 @@
 	set_attr(ist, obj, sym(ist, __sym), name##_OBJ);	\
 } while(0)
 
-#define MODULE_SUB_INIT(name)		\
-do {								\
-	mod_initcall_t *initcalls = &initcalls_##name;		\
-	initcalls++;						\
-	while (*initcalls) {					\
-		(*initcalls)();					\
-		initcalls++;					\
-	}							\
-} while(0)
+#define MODULE_SUB_INIT(name) \
+	name##_initialize_module()
 
+#define MODULE_ADD_SYM(name, __sym) \
+	name##__sym##init()
+
 #define MODULE_SET_DOC(name, docstr) \
 	add_doc_to_obj(ist, name##_OBJ, #name ": " docstr)
 

Modified: trunk/modules/File/File.c
===================================================================
--- trunk/modules/File/File.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/modules/File/File.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -484,7 +484,7 @@
 	return list_obj;
 }
 
-DEF( File, seek, list4( sym(ist, "pos"), NULL,
+DEF(File, seek, list4( sym(ist, "pos"), NULL,
                               sym(ist, "how"), new_int_obj(0) ) ) {
 	apr_off_t pos;
 	apr_seek_where_t origin;
@@ -655,7 +655,6 @@
 	return parms[1];
 }
 
-MODULE_END(File);
 
 MODULE_START(Dir)
 {
@@ -672,7 +671,6 @@
 	return parms[1];
 }
 
-MODULE_END(Dir);
 
 #define __STDIN		0
 #define __STDOUT	1
@@ -723,7 +721,25 @@
 	obj_p file_obj;
 
 	MODULE_SUB_INIT(File);
+	MODULE_ADD_SYM(File, __init__);
+	MODULE_ADD_SYM(File, __objlist__);
+	MODULE_ADD_SYM(File, close);
+	MODULE_ADD_SYM(File, closed_QUES);
+	MODULE_ADD_SYM(File, flush);
+	//MODULE_ADD_SYM(File, fileno);
+	//MODULE_ADD_SYM(File, isatty_QUES);
+	MODULE_ADD_SYM(File, read);
+	MODULE_ADD_SYM(File, readline);
+	MODULE_ADD_SYM(File, readlines);
+	MODULE_ADD_SYM(File, seek);
+	//MODULE_ADD_SYM(File, tell);
+	MODULE_ADD_SYM(File, truncate);
+	MODULE_ADD_SYM(File, write);
+	MODULE_ADD_SYM(File, writelines);
+
 	MODULE_SUB_INIT(Dir);
+	MODULE_ADD_SYM(Dir, __objlist__);
+	MODULE_ADD_SYM(Dir, __init__);
 
 	/* Create base file objects for std{in,out,err} */
 	aprerr = apr_pool_create(&std_pool, get_pr_head_pool());

Modified: trunk/modules/Re/Re.c
===================================================================
--- trunk/modules/Re/Re.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/modules/Re/Re.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -130,7 +130,6 @@
 	return re_obj;
 }
 
-MODULE_END(Re);
 
 MODULE_START(ReCompiled)
 {
@@ -511,7 +510,6 @@
 	return OBJ(NONE);
 }
 
-MODULE_END(ReCompiled);
 
 MODULE_START(ReMatch)
 {
@@ -660,11 +658,26 @@
 	return res;
 }
 
-MODULE_END(ReMatch);
 
 MAIN_MODULE_INIT(Re)
 {
 	MODULE_SUB_INIT(Re);
+	MODULE_ADD_SYM(Re, compile);
+
 	MODULE_SUB_INIT(ReCompiled);
+	MODULE_ADD_SYM(ReCompiled, findall);
+	MODULE_ADD_SYM(ReCompiled, __objlist__);
+	MODULE_ADD_SYM(ReCompiled, __del__);
+	MODULE_ADD_SYM(ReCompiled, search);
+	MODULE_ADD_SYM(ReCompiled, split);
+	MODULE_ADD_SYM(ReCompiled, sub);
+
 	MODULE_SUB_INIT(ReMatch);
+	MODULE_ADD_SYM(ReMatch, __objlist__);
+	MODULE_ADD_SYM(ReMatch, start);
+	MODULE_ADD_SYM(ReMatch, end);
+	MODULE_ADD_SYM(ReMatch, span);
+	MODULE_ADD_SYM(ReMatch, expand);
+	MODULE_ADD_SYM(ReMatch, group);
+	MODULE_ADD_SYM(ReMatch, groups);
 }

Modified: trunk/src/Makefile.in
===================================================================
--- trunk/src/Makefile.in	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/Makefile.in	2004-04-02 16:20:31 UTC (rev 260)
@@ -9,11 +9,6 @@
 
 TARGET=prothon
 
-# WARNING! The builtins-core.o object MUST come first, else your binary
-# will be broken! This is not a joke. Also, the object.o object must
-# follow the BUILTIN_MOD_OBJS in the OBJS list below. Doesn't matter where
-# really, so long as it is after the BUILTIN_MOD_OBJS, since it contains
-# the key for the end of the list.
 BUILTIN_MOD_OBJS = builtins-core.o builtins-dict.o builtins-int.o \
 	builtins-list.o builtins-string.o builtins-tuple.o \
 	builtins-float.o

Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-core.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -64,14 +64,6 @@
 #include "object.h"
 #include <prothon/prothon_dll.h>
 
-/* Leave this here. Do not move it, and do not declare anything above it.
- * This is here for a reason, so that the builtin's can be loaded (this is
- * the key for the start of the pointers to the functions for all the
- * builtins). */
-
-PR_PLACE_IN_SECTION(dll_initcall_t,start_dll_entry_ptr, "._module_init") = 0;
-
-
 MODULE_DECLARE(Object);
 MODULE_DECLARE(False);
 MODULE_DECLARE(True);
@@ -260,7 +252,6 @@
 	return dict_obj;
 }
 
-MODULE_END(Object);
 
 // ***************************** PR_FALSE *****************************************
 
@@ -280,7 +271,6 @@
 		return new_int_obj(-1); 
 }
 
-MODULE_END(False);
 
 // ***************************** PR_TRUE *****************************************
 
@@ -302,7 +292,6 @@
 		return new_int_obj(-1); 
 }
 
-MODULE_END(True);
 
 // ***************************** NONE *****************************************
 
@@ -315,7 +304,6 @@
 
 DEF(None, __str__,  NULL) { return new_string_obj("None"); }
 DEF(None, __bool__QUES, NULL) { return OBJ(PR_FALSE); }
-MODULE_END(None);
 
 // ***************************** EXCEPTION ************************************
 MODULE_START(Exception)
@@ -368,7 +356,6 @@
 	ist->exception_obj = 0;
 	return res;
 }
-MODULE_END(Exception);
 
 // ***************************** GEN ******************************************
 MODULE_START(Gen)
@@ -380,7 +367,6 @@
 DEF(Gen, __gen__, NULL) {
 	return self; 
 }
-MODULE_END(Gen);
 
 // ***************************** SEQUENCE *************************************
 
@@ -544,7 +530,6 @@
 	return res;
 }
 
-MODULE_END(Seq);
 
 // ***************************** FUNC ******************************************
 
@@ -557,55 +542,61 @@
 DEF(Func, __objlist__, FORM_RPARAM) {
 	return parms[1];
 }
-MODULE_END(Func);
 
-// ***************************** INIT_BUILTINS ********************************
 
-static void core_builtins_init(void)
-{
-	OBJ(OBJECT)		= new_object(NULL);
-	OBJ(OBJECT)->attr_proto.proto = OBJ(OBJECT);
-
-	OBJ(SEQ_PROTO)		= new_object(NULL);
-	OBJ(TUPLE_PROTO)	= new_object(OBJ(SEQ_PROTO));
-	OBJ(LIST_PROTO)		= new_object(OBJ(TUPLE_PROTO));
-	OBJ(SYMBOL_PROTO)	= new_object(NULL);
-
-	OBJ(HASH_PROTO)		= new_object(NULL);
-	OBJ(SLICE_PROTO)	= new_object(NULL);
-	OBJ(SUPER_PROTO)	= new_object(NULL);
-	OBJ(THREAD_PROTO)	= new_object(NULL);
-	OBJ(ROOT_GLOBALS)	= new_object(NULL);
-	OBJ(MODULES)		= new_object(NULL);
-	OBJ(PR_FALSE)		= new_object(NULL);
-	OBJ(PR_TRUE)		= new_object(NULL);
-	OBJ(NONE)			= new_object(NULL);
-	OBJ(EXCEPTION)		= new_object(NULL);
-	OBJ(GEN_PROTO)		= new_object(NULL);
-	OBJ(INT_PROTO)		= new_object(NULL);
-	OBJ(STRING_PROTO)	= new_object(NULL);
-	OBJ(DICT_PROTO)		= new_object(NULL);
-	OBJ(FUNC_PROTO)		= new_object(NULL);
-
-	OBJ(SYMBOLS)		= new_list_obj(SYM_ENUM_COUNT+100);
-
-	init_symbol(ist);
-
-	add_doc_to_obj(ist, OBJ(SYMBOLS), "Symbols: list of all symbol objects");
-}
-
 MAIN_MODULE_INIT(Core)
 {
-	/* Call this first to get things sort of setup for the rest of
-	 * these things */
-	core_builtins_init();
-
 	MODULE_SUB_INIT(Object);
+	MODULE_ADD_SYM(Object, __init__);
+	MODULE_ADD_SYM(Object, has_proto_QUES);
+	MODULE_ADD_SYM(Object, set_proto);
+	MODULE_ADD_SYM(Object, add_proto);
+	MODULE_ADD_SYM(Object, Len);
+	MODULE_ADD_SYM(Object, Cmp);
+	MODULE_ADD_SYM(Object, Max);
+	MODULE_ADD_SYM(Object, Min);
+	MODULE_ADD_SYM(Object, __getitem__);
+	MODULE_ADD_SYM(Object, __setitem__);
+	MODULE_ADD_SYM(Object, __delitem__);
+	MODULE_ADD_SYM(Object, proto_list);
+	MODULE_ADD_SYM(Object, __bool__QUES);
+	MODULE_ADD_SYM(Object, __not__QUES);
+	MODULE_ADD_SYM(Object, __is__QUES);
+	MODULE_ADD_SYM(Object, __isnot__QUES);
+	MODULE_ADD_SYM(Object, __str__);
+	MODULE_ADD_SYM(Object, __hash__);
+	MODULE_ADD_SYM(Object, __eq__QUES);
+	MODULE_ADD_SYM(Object, __ne__QUES);
+	MODULE_ADD_SYM(Object, __lt__QUES);
+	MODULE_ADD_SYM(Object, __le__QUES);
+	MODULE_ADD_SYM(Object, __gt__QUES);
+	MODULE_ADD_SYM(Object, __ge__QUES);
+	MODULE_ADD_SYM(Object, __in__QUES);
+	MODULE_ADD_SYM(Object, __notin__QUES);
+	MODULE_ADD_SYM(Object, attrs);
+
 	MODULE_SUB_INIT(Seq);
+
 	MODULE_SUB_INIT(False);
+	MODULE_ADD_SYM(False, __str__);
+	MODULE_ADD_SYM(False, __bool__QUES);
+	MODULE_ADD_SYM(False, cmp);
+
 	MODULE_SUB_INIT(True);
+	MODULE_ADD_SYM(True, __str__);
+	MODULE_ADD_SYM(True, __bool__QUES);
+	MODULE_ADD_SYM(True, cmp);
+
 	MODULE_SUB_INIT(None);
+	MODULE_ADD_SYM(None, __str__);
+	MODULE_ADD_SYM(None, __bool__QUES);
+
 	MODULE_SUB_INIT(Exception);
+	MODULE_ADD_SYM(Exception, __init__);
+
 	MODULE_SUB_INIT(Gen);
+	MODULE_ADD_SYM(Gen, __gen__);
+
 	MODULE_SUB_INIT(Func);
+	MODULE_ADD_SYM(Func, __objlist__);
 }

Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-dict.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -219,7 +219,6 @@
 	return gen_obj;
 }
 
-MODULE_END(Dict);
 
 MODULE_START(DictGen)
 {
@@ -243,10 +242,17 @@
 	return res;
 }
 
-MODULE_END(DictGen);
 
 MAIN_MODULE_INIT(Dict)
 {
 	MODULE_SUB_INIT(Dict);
+	MODULE_ADD_SYM(Dict, __str__);
+	MODULE_ADD_SYM(Dict, __objlist__);
+	MODULE_ADD_SYM(Dict, __getitem__);
+	MODULE_ADD_SYM(Dict, __setitem__);
+	MODULE_ADD_SYM(Dict, __delitem__);
+	MODULE_ADD_SYM(Dict, __gen__);
+
 	MODULE_SUB_INIT(DictGen);
+	MODULE_ADD_SYM(DictGen, next);
 }

Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-float.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -334,10 +334,28 @@
 	return NULL;
 }
 
-MODULE_END(Float);
 
 
 MAIN_MODULE_INIT(Float)
 {
 	MODULE_SUB_INIT(Float);
+	MODULE_ADD_SYM(Float, __bool__QUES);
+	MODULE_ADD_SYM(Float, __hash__);
+	MODULE_ADD_SYM(Float, __abs__);
+	MODULE_ADD_SYM(Float, __neg__);
+	MODULE_ADD_SYM(Float, __pos__);
+	MODULE_ADD_SYM(Float, __add__);
+	MODULE_ADD_SYM(Float, __div__);
+	MODULE_ADD_SYM(Float, __rdiv__);
+	MODULE_ADD_SYM(Float, __mul__);
+	MODULE_ADD_SYM(Float, __sub__);
+	MODULE_ADD_SYM(Float, __rsub__);
+	MODULE_ADD_SYM(Float, __pow__);
+	MODULE_ADD_SYM(Float, __rpow__);
+	MODULE_ADD_SYM(Float, cmp);
+	MODULE_ADD_SYM(Float, __rcmp__);
+	MODULE_ADD_SYM(Float, __eq__QUES);
+	MODULE_ADD_SYM(Float, __str__);
+	MODULE_ADD_SYM(Float, __covers__QUES);
+	MODULE_ADD_SYM(Float, __coerce__);
 }

Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-int.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -284,7 +284,7 @@
 	return new_string_obj(str);
 }
 
-DEF (Int, __gen__, NULL) {
+DEF(Int, __gen__, NULL) {
 	obj_p gen_obj = new_int_obj(0);
 	gen_obj->immutable = FALSE;
 	gen_obj->attr_proto.proto = IntGen_OBJ;
@@ -298,7 +298,6 @@
 	return new_string_n_obj(s, 1);
 }
 
-MODULE_END(Int);
 
 MODULE_START(IntGen)
 {
@@ -306,7 +305,7 @@
 	MODULE_SET_DOC(Int, "number generator object prototype");
 }
 
-DEF (IntGen, next, NULL) {
+DEF(IntGen, next, NULL) {
 	obj_p limit, res;
 	if ( !(limit=get_attr(ist, self, SYM_LIMIT)) ||
 		  Int_value(self) == Int_value(limit) ) {
@@ -325,12 +324,36 @@
 	return res;
 }
 
-MODULE_END(IntGen);
 
 MAIN_MODULE_INIT(Int)
 {
 	SYM_LIMIT = sym(ist, "limit");
 
 	MODULE_SUB_INIT(Int);
+	MODULE_ADD_SYM(Int, __bool__QUES);
+	MODULE_ADD_SYM(Int, __hash__);
+	MODULE_ADD_SYM(Int, __abs__);
+	MODULE_ADD_SYM(Int, __neg__);
+	MODULE_ADD_SYM(Int, __pos__);
+	MODULE_ADD_SYM(Int, __add__);
+	MODULE_ADD_SYM(Int, __div__);
+	MODULE_ADD_SYM(Int, __floordiv__);
+	MODULE_ADD_SYM(Int, __mod__);
+	MODULE_ADD_SYM(Int, __mul__);
+	MODULE_ADD_SYM(Int, __sub__);
+	MODULE_ADD_SYM(Int, __pow__);
+	MODULE_ADD_SYM(Int, cmp);
+	MODULE_ADD_SYM(Int, __eq__QUES);
+	MODULE_ADD_SYM(Int, __invert__);
+	MODULE_ADD_SYM(Int, __xor__);
+	MODULE_ADD_SYM(Int, __and__);
+	MODULE_ADD_SYM(Int, __or__);
+	MODULE_ADD_SYM(Int, __rshift__);
+	MODULE_ADD_SYM(Int, __lshift__);
+	MODULE_ADD_SYM(Int, __str__);
+	MODULE_ADD_SYM(Int, __gen__);
+	MODULE_ADD_SYM(Int, chr);
+
 	MODULE_SUB_INIT(IntGen);
+	MODULE_ADD_SYM(IntGen, next);
 }

Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-list.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -491,10 +491,20 @@
 	return self;
 }
 
-MODULE_END(List);
 
-
 MAIN_MODULE_INIT(List)
 {
 	MODULE_SUB_INIT(List);
+	MODULE_ADD_SYM(List, __str__);
+	MODULE_ADD_SYM(List, __getitem__);
+	MODULE_ADD_SYM(List, __setitem__);
+	MODULE_ADD_SYM(List, __delitem__);
+	MODULE_ADD_SYM(List, __add__);
+	MODULE_ADD_SYM(List, __mul__);
+	MODULE_ADD_SYM(List, append_BANG);
+	MODULE_ADD_SYM(List, extend_BANG);
+	MODULE_ADD_SYM(List, insert_BANG);
+	MODULE_ADD_SYM(List, remove_BANG);
+	MODULE_ADD_SYM(List, pop_BANG);
+	MODULE_ADD_SYM(List, reverse_BANG);
 }

Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-string.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -260,7 +260,6 @@
 	return new_int_obj(pr_strlen(self));
 }
 
-MODULE_END(String);
 
 MODULE_START(StringGen)
 {
@@ -284,11 +283,27 @@
         return res;
 }
 
-MODULE_END(StringGen);
 
 
 MAIN_MODULE_INIT(String)
 {
 	MODULE_SUB_INIT(String);
+	MODULE_ADD_SYM(String, __str__);
+	MODULE_ADD_SYM(String, __hash__);
+	MODULE_ADD_SYM(String, __objlist__);
+	MODULE_ADD_SYM(String, __getitem__);
+	MODULE_ADD_SYM(String, __setitem__);
+	MODULE_ADD_SYM(String, __delitem__);
+	MODULE_ADD_SYM(String, cmp);
+	MODULE_ADD_SYM(String, __add__);
+	MODULE_ADD_SYM(String, __mul__);
+	MODULE_ADD_SYM(String, __gen__);
+	MODULE_ADD_SYM(String, ord);
+	MODULE_ADD_SYM(String, join);
+	MODULE_ADD_SYM(String, __in__QUES);
+	MODULE_ADD_SYM(String, __notin__QUES);
+	MODULE_ADD_SYM(String, len);
+
 	MODULE_SUB_INIT(StringGen);
+	MODULE_ADD_SYM(StringGen, next);
 }

Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/builtins-tuple.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -295,12 +295,29 @@
 	return res;
 }
 
-MODULE_END(Tgen);
 
-
 //********************************* INITIALIZATION ****************************
 MAIN_MODULE_INIT(Tuple)
 {
 	MODULE_SUB_INIT(Tuple);
+	MODULE_ADD_SYM(Tuple, __str__);	
+	MODULE_ADD_SYM(Tuple, __getitem__);
+	MODULE_ADD_SYM(Tuple, __setitem__);
+	MODULE_ADD_SYM(Tuple, __delitem__);
+	MODULE_ADD_SYM(Tuple, __objlist__);
+	MODULE_ADD_SYM(Tuple, cmp);
+	MODULE_ADD_SYM(Tuple, __eq__QUES);
+	MODULE_ADD_SYM(Tuple, __rin__QUES);
+	MODULE_ADD_SYM(Tuple, __rnotin__QUES);
+	MODULE_ADD_SYM(Tuple, __add__);
+	MODULE_ADD_SYM(Tuple, __mul__);
+	MODULE_ADD_SYM(Tuple, len);
+	MODULE_ADD_SYM(Tuple, min);
+	MODULE_ADD_SYM(Tuple, max);
+	MODULE_ADD_SYM(Tuple, count);
+	MODULE_ADD_SYM(Tuple, index);
+	MODULE_ADD_SYM(Tuple, __gen__);
+
 	MODULE_SUB_INIT(Tgen);
+	MODULE_ADD_SYM(Tgen, next);
 }

Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c	2004-04-02 09:03:27 UTC (rev 259)
+++ trunk/src/object.c	2004-04-02 16:20:31 UTC (rev 260)
@@ -76,9 +76,6 @@
 }
 #endif
 
-PR_PLACE_IN_SECTION(static dll_initcall_t,end_dll_entry_ptr, "._module_init") = 0;
-extern dll_initcall_t start_dll_entry_ptr;
-
 obj_p            obj_list_root;
 DECLARE_PR_LOCK(object_list_lock);
 pr_services_t dll_services;
@@ -115,7 +112,6 @@
 void object_store_init(isp ist, int nop2){
 	apr_status_t aprerr;
 	char buf[1024];
-	dll_initcall_t *dll_initcalls = &start_dll_entry_ptr;
 
 	if ((aprerr = apr_thread_cond_create(&obj_wrlock_cond, get_pr_head_pool())) ||
 	    (aprerr = apr_thread_cond_create(&write_cond, get_pr_head_pool()))) {
@@ -187,12 +183,45 @@
 	dll_services.get_pr_head_pool = get_pr_head_pool;
 	dll_services.dict_keys_values = dict_keys_values;
 
-	/* Load all of our builtin dll's */
-	dll_initcalls++;
-	while (*dll_initcalls) {
-		(*dll_initcalls)(&dll_services);
-		dll_initcalls++;
-	}
+	/* Setup the core objects. Order counts here */
+	OBJ(OBJECT)             = new_object(NULL);
+	OBJ(OBJECT)->attr_proto.proto = OBJ(OBJECT);
+
+	OBJ(SEQ_PROTO)          = new_object(NULL);
+	OBJ(TUPLE_PROTO)        = new_object(OBJ(SEQ_PROTO));
+	OBJ(LIST_PROTO)         = new_object(OBJ(TUPLE_PROTO));
+	OBJ(SYMBOL_PROTO)       = new_object(NULL);
+
+	OBJ(HASH_PROTO)         = new_object(NULL);
+	OBJ(SLICE_PROTO)        = new_object(NULL);
+	OBJ(SUPER_PROTO)        = new_object(NULL);
+	OBJ(THREAD_PROTO)       = new_object(NULL);
+	OBJ(ROOT_GLOBALS)       = new_object(NULL);
+	OBJ(MODULES)            = new_object(NULL);
+	OBJ(PR_FALSE)           = new_object(NULL);
+	OBJ(PR_TRUE)            = new_object(NULL);
+	OBJ(NONE)               = new_object(NULL);
+	OBJ(EXCEPTION)          = new_object(NULL);
+	OBJ(GEN_PROTO)          = new_object(NULL);
+	OBJ(INT_PROTO)          = new_object(NULL);
+	OBJ(STRING_PROTO)       = new_object(NULL);
+	OBJ(DICT_PROTO)         = new_object(NULL);
+	OBJ(FUNC_PROTO)         = new_object(NULL);
+
+	OBJ(SYMBOLS)            = new_list_obj(SYM_ENUM_COUNT+100);
+
+	init_symbol(ist);
+
+	add_doc_to_obj(ist, OBJ(SYMBOLS), "Symbols: list of all symbol objects");
+
+	/* Now load the actual modules for the builtin prototypes */
+	BUILTIN_LOAD(Core);
+	BUILTIN_LOAD(Dict);
+	BUILTIN_LOAD(Float);
+	BUILTIN_LOAD(Int);
+	BUILTIN_LOAD(List);
+	BUILTIN_LOAD(String);
+	BUILTIN_LOAD(Tuple);
 }
 
 //********************************* new_object ********************************
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.