rev 372 - in trunk: include/prothon modules/File modules/OS modules/Prosist modules/SQLite src

SVN User <[email protected]>
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-04-16 22:48:57 -0400 (Fri, 16 Apr 2004)
New Revision: 372

Modified:
   trunk/include/prothon/prothon.h
   trunk/include/prothon/prothon_dll.h
   trunk/modules/File/File.c
   trunk/modules/OS/OS.c
   trunk/modules/Prosist/Prosist.c
   trunk/modules/SQLite/SQLite.c
   trunk/src/builtins-core.c
   trunk/src/builtins-float.c
   trunk/src/builtins-int.c
   trunk/src/interp.c
   trunk/src/object.c
   trunk/src/symbol.c
   trunk/src/sys.c
Log:
changed doc_obj (add_doc_to_obj) to set_obj_doc,
added set_obj_id which adds an identity name to an
object for identification of objects across runs
of interpreter and different interpreters

Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/include/prothon/prothon.h	2004-04-17 02:48:57 UTC (rev 372)
@@ -247,7 +247,7 @@
 // these are created at object system initialization
 typedef enum {
 	NO_PROTO=-1,
-// "singleton" objects
+// "identity" objects
 	PR_FALSE,			// 0 False
 	PR_TRUE,			// 1 True
 	OBJECT,				// 2 Object
@@ -376,7 +376,7 @@
 	__GETCMP__,
 	__CMPVALOBJ__,
 	__ITER__,
-	__NAME__,
+	__ID__,
 	__DOC__,
 	__HASH__,
 	__FPARAMS__,
@@ -681,22 +681,19 @@
 // HASH_VALUE: Integer value of a hash object returned by __hash__ function.
 #define hash_value(hash_obj)  (hash_obj->data.i32[0])
 
-// NAME_OBJ: Add name string (__name__) to object
-// this is used by Prosist, the persistence engine and other documentation,
-// such as the exception stack function names.  This function is somewhat
-// of a replacement for Prothon's lack of class names also.  All Prototypes
-// should be named with this.
-// WARNING:  There should not be more than one object with the same name in 
-// one namespace. Names are meant for singleton objects like prototypes and
-// functions.  You will get an exception if you try certain operations on 
-// objects that have identical names.
-#define name_obj(ist, obj, name) \
-	set_attr(ist, (obj), SYM(__NAME__), new_string_obj(ist, (name)));
+// SET_OBJ_ID: Mark an object as a identity object with a name
+// This is used by Prosist, the persistence engine and other documentation.
+// Any object that has a unique identity across runs of the interpreter
+// and different interpreters should be marked with this flag.
+// Not two objects in the same namespace should have this same name.
+// All Prototypes should be marked with this.
+#define set_obj_id(ist, obj, name) \
+	set_attr(ist, (obj), SYM(__ID__), new_string_obj(ist, (name)));
 
-// DOC_OBJ: Add document string (__doc__) to object
+// SET_OBJ_DOC: Add document string (__doc__) to object
 // This can be used on any object.  It is recommended that it be used
 // liberally to make browsing objects easier and to make dumps readable.
-void doc_obj(isp ist, obj_p obj, char* str);
+void set_obj_doc(isp ist, obj_p obj, char* str);
 
 #ifndef NO_APR
 // NEW_THREAD_OBJ: Create a new thread object and start the thread

Modified: trunk/include/prothon/prothon_dll.h
===================================================================
--- trunk/include/prothon/prothon_dll.h	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/include/prothon/prothon_dll.h	2004-04-17 02:48:57 UTC (rev 372)
@@ -97,7 +97,7 @@
 	obj_p		(*call_func1_f)(isp ist, obj_p self, obj_p sym, obj_p parm);
 	obj_p   	(*sym)(isp ist, char* symbol);
 	obj_p		(*new_object)(isp ist, obj_p proto);
-	void		(*doc_obj)(isp ist, obj_p obj, char* str);
+	void		(*set_obj_doc)(isp ist, obj_p obj, char* str);
 	obj_p	    (*dict_keys_values)(isp ist, obj_p dict_obj, int key_flg);
 	obj_p		(*check_exceptions)(isp ist);
 
@@ -197,7 +197,7 @@
 
 
 #define MODULE_SET_DOC(name, docstr)					\
-	doc_obj(ist, name##_OBJ, #name ": " docstr);	\
+	set_obj_doc(ist, name##_OBJ, #name ": " docstr);	\
 	check_exceptions(ist);
 
 #ifndef OBJECT_H
@@ -234,7 +234,7 @@
 #define list8				(*services->list8)
 #define raise_exception		(*services->raise_exception)
 #define new_object			(*services->new_object)
-#define doc_obj		(*services->doc_obj)
+#define set_obj_doc		(*services->set_obj_doc)
 #define pr_malloc			(*services->pr_malloc)
 #define pr_realloc			(*services->pr_realloc)
 #define pr_free				(*services->pr_free)

Modified: trunk/modules/File/File.c
===================================================================
--- trunk/modules/File/File.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/modules/File/File.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -121,7 +121,7 @@
 MODULE_START(File)
 {
 	File_OBJ = new_object(ist, NULL);
-	doc_obj(ist, File_OBJ, "File object prototype");
+	set_obj_doc(ist, File_OBJ, "File object prototype");
 	MODULE_ADD_TO_BASE(File);
 	File_OBJ->unclonable = TRUE;
 }

Modified: trunk/modules/OS/OS.c
===================================================================
--- trunk/modules/OS/OS.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/modules/OS/OS.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -70,7 +70,7 @@
 	if (!has_proto_QUES(ist, parms[1], OBJ(STRING_PROTO))) {
 		ist->exception_obj = new_object(ist, OBJ(TYPE_EXC));
 		ist->exception_obj->wr_access = ACC_GUEST;
-		doc_obj(ist, ist->exception_obj, "object is not of type string");
+		set_obj_doc(ist, ist->exception_obj, "object is not of type string");
 		return NULL;										
 	}
 	return new_int_obj(ist, system(strch(parms[1])));

Modified: trunk/modules/Prosist/Prosist.c
===================================================================
--- trunk/modules/Prosist/Prosist.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/modules/Prosist/Prosist.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -167,7 +167,7 @@
 
 	read_unlock(ist, self);
 	set_obj_rdacc(self, ACC_USER1);
-	doc_obj(ist, self, "Prosist DataBase");
+	set_obj_doc(ist, self, "Prosist DataBase");
 	set_attr(ist, self, sym(ist, "filename"), parms[1]);
 	set_attr(ist, self, sym(ist, "root"), root_obj);
 	read_lock(ist, self);

Modified: trunk/modules/SQLite/SQLite.c
===================================================================
--- trunk/modules/SQLite/SQLite.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/modules/SQLite/SQLite.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -107,7 +107,7 @@
 	CHECK_TYPE_EXC(parms[1], OBJ(STRING_PROTO), "string");
 	filename = strch(parms[1]);
 	conn_obj = new_object(ist, Connection_OBJ);
-	doc_obj(ist, conn_obj, "SQLite connection");
+	set_obj_doc(ist, conn_obj, "SQLite connection");
 	conn_obj->unclonable = TRUE;
 	set_obj_rdacc(conn_obj, ACC_USER1);
 	conn_obj->data_type = DATA_TYPE_DATAPTR;
@@ -123,7 +123,7 @@
 	if (self->data.ptr) {
 		cursor_p cursorp;
 		obj_p curs_obj = new_object(ist, Cursor_OBJ);
-		doc_obj(ist, curs_obj, "SQLite cursor");
+		set_obj_doc(ist, curs_obj, "SQLite cursor");
 		curs_obj->data_type = DATA_TYPE_DATAPTR;
 		cursorp = curs_obj->data.ptr  = pr_malloc(sizeof(cursor_t));
 		cursorp->ist	  = ist;

Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/builtins-core.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -80,12 +80,12 @@
 	Object_OBJ = OBJ(OBJECT);
 	MODULE_SET_DOC(Object,  "prototype base for all objects");
 
-	doc_obj(ist, OBJ(SYMBOL_PROTO),  "Symbol object prototype");
-	doc_obj(ist, OBJ(HASH_PROTO),    "Hash object prototype");
-	doc_obj(ist, OBJ(SLICE_PROTO),   "Slice object prototype");
-	doc_obj(ist, OBJ(SUPER_PROTO),   "Super object prototype");
-	doc_obj(ist, OBJ(ROOT_GLOBALS),  "Root_Globals: recursive container of all objects");
-	doc_obj(ist, OBJ(MODULES),       "Modules: container of all modules");
+	set_obj_doc(ist, OBJ(SYMBOL_PROTO),  "Symbol object prototype");
+	set_obj_doc(ist, OBJ(HASH_PROTO),    "Hash object prototype");
+	set_obj_doc(ist, OBJ(SLICE_PROTO),   "Slice object prototype");
+	set_obj_doc(ist, OBJ(SUPER_PROTO),   "Super object prototype");
+	set_obj_doc(ist, OBJ(ROOT_GLOBALS),  "Root_Globals: recursive container of all objects");
+	set_obj_doc(ist, OBJ(MODULES),       "Modules: container of all modules");
 
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Root_Globals"),    OBJ(ROOT_GLOBALS));
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Modules"),         OBJ(MODULES));
@@ -339,7 +339,7 @@
 DEF(Object, __creator__, NULL) {
 	obj_p name;
 	char buf[512];
-	if (name = get_attr(ist, self, SYM(__NAME__))) {
+	if (name = get_attr(ist, self, SYM(__ID__))) {
 		apr_snprintf(buf, sizeof(buf), "1:%s", strch(name));
 		del_unlock(name);
 		return list3(ist, OBJ(NONE), new_string_obj(ist, "Object"), new_string_obj(ist, buf));
@@ -361,9 +361,9 @@
 MODULE_START(False)
 {
 	False_OBJ = OBJ(PR_FALSE);
-	MODULE_SET_DOC(False, "boolean false singleton value");
+	MODULE_SET_DOC(False, "boolean false identity value");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "False"), False_OBJ);
-	name_obj(ist, False_OBJ, "False");
+	set_obj_id(ist, False_OBJ, "False");
 }
 
 DEF(False, __str__,  NULL) { return new_string_obj(ist, "False"); }
@@ -380,9 +380,9 @@
 MODULE_START(True)
 {
 	True_OBJ = OBJ(PR_TRUE);
-	MODULE_SET_DOC(True, "boolean true singleton value");
+	MODULE_SET_DOC(True, "boolean true identity value");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "True"), True_OBJ);
-	name_obj(ist, True_OBJ, "True");
+	set_obj_id(ist, True_OBJ, "True");
 }
 
 DEF(True, __str__,  NULL)  { return new_string_obj(ist, "True"); }
@@ -406,7 +406,7 @@
 	None_OBJ = OBJ(NONE);
 	MODULE_SET_DOC(None, "represents empty set");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "None"), None_OBJ);
-	name_obj(ist, None_OBJ, "None");
+	set_obj_id(ist, None_OBJ, "None");
 }
 
 DEF(None, __str__,  NULL) {				
@@ -431,8 +431,8 @@
 
 #define EXCEPTION_DECLARE(proto, exc_const, name, desc_str)							\
 	OBJ(exc_const) = new_object(ist, proto);										\
-	doc_obj( ist, OBJ(exc_const), desc_str);										\
-	name_obj(ist, OBJ(exc_const), #name);											\
+	set_obj_doc( ist, OBJ(exc_const), desc_str);										\
+	set_obj_id(ist, OBJ(exc_const), #name);											\
 	set_attr(ist, OBJ(OBJECT), sym(ist, #name), OBJ(exc_const))
 
 /* Other exception objects dependent on this one */
@@ -458,7 +458,7 @@
 	char buf[512];
 	if (list_len(ist, parms[1]) > 0) {
 		apr_snprintf(buf, sizeof(buf), "%s", as_str(ist, list_item(ist, parms[1], 0)));
-		doc_obj(ist, self, buf);
+		set_obj_doc(ist, self, buf);
 	}
 	return OBJ(NONE);
 }

Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/builtins-float.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -91,8 +91,8 @@
 //	Imag_OBJ  = OBJ(IMAG_PROTO)  = new_object(ist, NULL);
                 OBJ(IMAG_PROTO)  = new_object(ist, NULL);
 
-	doc_obj(ist, OBJ(FLOAT_PROTO),   "Float number object prototype");
-	doc_obj(ist, OBJ(IMAG_PROTO),    "Imaginary number object prototype");
+	set_obj_doc(ist, OBJ(FLOAT_PROTO),   "Float number object prototype");
+	set_obj_doc(ist, OBJ(IMAG_PROTO),    "Imaginary number object prototype");
 
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Float"),     OBJ(FLOAT_PROTO));
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Imaginary"), OBJ(IMAG_PROTO));

Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/builtins-int.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -98,7 +98,7 @@
 	OBJ(MAX_INT)		= new_int_obj(ist, MAX_INT_VAL);
 	OBJ(LONG_PROTO)		= new_string_obj(ist, "0");
 	clr_immutable(OBJ(LONG_PROTO));
-	doc_obj(ist, OBJ(LONG_PROTO),	"Long integer number object prototype");
+	set_obj_doc(ist, OBJ(LONG_PROTO),	"Long integer number object prototype");
 	set_immutable(OBJ(LONG_PROTO));
 
 	Int_OBJ->data_type    = DATA_TYPE_IMMDATA;

Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/interp.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -1502,7 +1502,7 @@
 	}
 #endif
 	apr_snprintf(full_doc, sizeof(full_doc), "%s%s", name, comment);
-	doc_obj(ist, module, full_doc);
+	set_obj_doc(ist, module, full_doc);
 	frame = ist->frame;
 	new_locals = new_object(ist, NULL);
 	set_attr(ist, module, SYM(__LOCALS__), new_locals);

Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/object.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -154,7 +154,7 @@
 	dll_services.list6			  = list6;		
 	dll_services.raise_exception  = raise_exception;
 	dll_services.new_object       = new_object;
-	dll_services.doc_obj   = doc_obj;
+	dll_services.set_obj_doc   = set_obj_doc;
 	dll_services.obj_malloc		  = obj_malloc;
 	dll_services.obj_realloc      = obj_realloc;
 	dll_services.obj_free		  = obj_free;
@@ -209,7 +209,7 @@
 
 	init_symbol(ist);
 
-	doc_obj(ist, OBJ(SYMBOLS), "Symbols: list of all symbol objects");
+	set_obj_doc(ist, OBJ(SYMBOLS), "Symbols: list of all symbol objects");
 
 	/* Now load the actual modules for the builtin prototypes */
 	BUILTIN_LOAD(Core);
@@ -339,7 +339,7 @@
 		p = err_buf + strlen(err_buf) - 1;
 		while (*p == '.' || *p == ' ' || *p == '\t') { *p = 0; p--; }
 
-		doc_obj(ist, ist->exception_obj, err_buf);
+		set_obj_doc(ist, ist->exception_obj, err_buf);
 	}
 }
 
@@ -836,8 +836,8 @@
 }
 
 
-//********************************* doc_obj ***********************************
-void doc_obj(isp ist, obj_p obj, char* str){
+//********************************* set_obj_doc ***********************************
+void set_obj_doc(isp ist, obj_p obj, char* str){
 	if (str[strlen(str)-1] == '\n') {
 		char* ns = pr_malloc(strlen(str)+1);
 		strcpy(ns, str);

Modified: trunk/src/symbol.c
===================================================================
--- trunk/src/symbol.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/symbol.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -120,7 +120,7 @@
 	{ "__getCmp__",		0 }, 
 	{ "__cmpvalobj__",	0 }, 
 	{ "__iter__",		0 }, 
-	{ "__name__",       0 },
+	{ "__id__",       0 },
 	{ "__doc__",		0 }, 
 	{ "__hash__",		0 },
 	{ "__fparams__",	0 },

Modified: trunk/src/sys.c
===================================================================
--- trunk/src/sys.c	2004-04-17 02:29:24 UTC (rev 371)
+++ trunk/src/sys.c	2004-04-17 02:48:57 UTC (rev 372)
@@ -147,7 +147,7 @@
 	sys_module = new_object(ist, OBJ(OBJECT));
 	set_attr(ist, OBJ(MODULES),sym(ist, "Sys"), sys_module);
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Sys"), sys_module);
-	doc_obj(ist, sys_module, "Sys: a built-in module of system attributes");
+	set_obj_doc(ist, sys_module, "Sys: a built-in module of system attributes");
 	add_path(ist, sys_path, "."); if_exc_return NULL;
 #ifdef PROTHON_DEFAULT_MODDIR
 	add_path(ist, sys_path, PROTHON_DEFAULT_MODDIR); if_exc_return NULL;
@@ -162,7 +162,7 @@
 			if (!*s++) break;
 		}	
 	}
-	doc_obj(ist, sys_path, "path: list of paths to search for modules");
+	set_obj_doc(ist, sys_path, "path: list of paths to search for modules");
 	set_attr(ist, sys_module, sym(ist, "path"), sys_path);
 	if ((s = getenv("PROTHONHOME"))) {
 		for (d=path; *s && *s!=';'; s++, d++) *d = *s;
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.