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 ********************************