rev 733 - in trunk: . src

SVN User <[email protected]> Tue, 13 Jul 2004 01:52:40 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-07-13 01:52:37 -0400 (Tue, 13 Jul 2004)
New Revision: 733

Modified:
   trunk/STATUS.txt
   trunk/src/interp.c
   trunk/src/parser_routines.c
   trunk/src/prothon.y
Log:
added Module, object, & gen doc strings

Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt	2004-07-13 04:52:52 UTC (rev 732)
+++ trunk/STATUS.txt	2004-07-13 05:52:37 UTC (rev 733)
@@ -13,8 +13,6 @@
 
 --- use special stdout for each Main
 
---- Module doc strings & Object doc strings
-
 --- add sys.userHome path and name current one sys.prothonHome
 --- use sys.userHome for console history file
 

Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c	2004-07-13 04:52:52 UTC (rev 732)
+++ trunk/src/interp.c	2004-07-13 05:52:37 UTC (rev 733)
@@ -1393,7 +1393,7 @@
 
 			case OP_OBJ: {
 				int i, num_protos;
-				obj_p new_obj, key;
+				obj_p new_obj, key, doc_str_obj;
 				goto op_obj;
 
 op_prop:		num_protos = 0; 
@@ -1425,6 +1425,8 @@
 					if (ist->exception_obj) goto end_op_obj;
 				}
 op_obj_end:
+				if (doc_str_obj = get_attr(ist, fr_data(1), SYM(DOC_)))
+					set_attr(ist, new_obj, SYM(DOC_), doc_str_obj);
 				key = fr_stack[fr_sp+1];
 #ifdef DUMP_MODULE_CODE
 				if (dump_module_code) dump_code_key = key;
@@ -2072,8 +2074,12 @@
 		dump_code(ist, NULL, code, dump_name);
 	}
 #endif
-	apr_snprintf(full_doc, sizeof(full_doc), "%s%s", name, comment);
-	set_obj_doc(module, full_doc);
+	if (code->doc_flg)
+		set_obj_doc(module, pr2c_strptr(ist, (obj_p)(code->code_data[1].data)));
+	else {
+		apr_snprintf(full_doc, sizeof(full_doc), "%s%s", name, comment);
+		set_obj_doc(module, full_doc);
+	}
 	frame = ist->frame;
 	if (filename)
 		frame_name = filename;

Modified: trunk/src/parser_routines.c
===================================================================
--- trunk/src/parser_routines.c	2004-07-13 04:52:52 UTC (rev 732)
+++ trunk/src/parser_routines.c	2004-07-13 05:52:37 UTC (rev 733)
@@ -97,6 +97,7 @@
 	statep->assert_enbld = TRUE;
 	statep->indent_stack = new_clist(10);
 	statep->const_objs   = new_clist(10);
+	statep->defdoc_flag  = 1;
 	return statep;
 }
 
@@ -718,6 +719,8 @@
 		res->code_data[k++].num  = llen;
 	pr_assert(k = len);
 	res->stack_depth = 0;
+	if (body->doc_flg)
+		set_attr(IST, func, SYM(DOC_), (obj_p)(body->code_data[1].data));
 	return res;
 }
 code_p star_ref_to_formparm(void* param, obj_p label){

Modified: trunk/src/prothon.y
===================================================================
--- trunk/src/prothon.y	2004-07-13 04:52:52 UTC (rev 732)
+++ trunk/src/prothon.y	2004-07-13 05:52:37 UTC (rev 733)
@@ -399,7 +399,7 @@
 	|	OBJ_ OUTER '.' LABEL										{ $$ = outer_label_to_attrref(yylex_param, $4);	state->defdoc_flag=1; }
 	|	OBJ_ CALLER '.' LABEL										{ $$ = caller_label_to_attrref(yylex_param, $4);state->defdoc_flag=1; }
 	|	OBJ_ obj '.' LABEL											{ $$ = obj_label_to_attrref(yylex_param, $2, $4);state->defdoc_flag=1; }
-	;										
+	;
 protos:
 		/*none*/													{ $$ = empty_list(yylex_param); }
 	|	proto