rev 443 - in trunk: include/prothon modules/DBM modules/File modules/Prosist modules/Re modules/SQLite pr src

SVN User <[email protected]> Sun, 02 May 2004 00:58:21 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-05-02 00:58:18 -0400 (Sun, 02 May 2004)
New Revision: 443

Modified:
   trunk/include/prothon/prothon.h
   trunk/include/prothon/prothon_dll.h
   trunk/modules/DBM/DBM.c
   trunk/modules/File/File.c
   trunk/modules/Prosist/Prosist.c
   trunk/modules/Re/Re.c
   trunk/modules/SQLite/SQLite.c
   trunk/pr/test.pr
   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-thread.c
   trunk/src/builtins-tuple.c
   trunk/src/parser_routines.c
Log:
cleanup, renamed bin macros

Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/include/prothon/prothon.h	2004-05-02 04:58:18 UTC (rev 443)
@@ -477,7 +477,7 @@
 	else { (obj)->data_type = (type);					\
 		    obj_set_data_owner(ist, obj, owner);		\
 	} if (ist->exception_obj)
-
+  
 // PROTO_OWNS_BINARY: Prototype owns binary data in obj
 // for example, if proto is Int, then binary data is in Int format
 int proto_owns_binary(isp ist, obj_p proto, obj_p obj);

Modified: trunk/include/prothon/prothon_dll.h
===================================================================
--- trunk/include/prothon/prothon_dll.h	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/include/prothon/prothon_dll.h	2004-05-02 04:58:18 UTC (rev 443)
@@ -180,7 +180,7 @@
 			"object has binary data, expected none");	\
 		return NULL; }									
 
-#define BIN_EMPTY_OR_OK_CHK(slf)								\
+#define BIN_EMPTY_OR_NOT_CHK(slf)								\
 	if (self->data_type != DATA_TYPE_NONE) {					\
 		if (!proto_owns_binary(ist, slf##_OBJ, self) ) {		\
 		raise_exception(ist, OBJ(INTERNAL_EXC),					\
@@ -190,7 +190,7 @@
 			pr_free(self->data.ptr);							\
 		self->data_type = DATA_TYPE_NONE; }
 
-#define BIN_OK_CHK(slf)											\
+#define BIN_CONTENT_CHK(slf)									\
 	if (self->data_type == DATA_TYPE_NONE) {					\
 		raise_exception(ist, OBJ(INTERNAL_EXC),					\
 			"object has no binary data, expected %s", #slf);	\

Modified: trunk/modules/DBM/DBM.c
===================================================================
--- trunk/modules/DBM/DBM.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/modules/DBM/DBM.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -118,7 +118,7 @@
 	char *name, *type;
 	const char *used1, *used2;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 
 	STRING_PARAM(1, name);
 	STRING_PARAM(2, type);
@@ -182,7 +182,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key, value;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("fetch(key)");
 	STRBIN_PARAM(1, key);
 
@@ -200,7 +200,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key, value;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("store(key, value)");
 	STRBIN_PARAM(1, key);
 	STRBIN_PARAM(2, value);
@@ -216,7 +216,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("delete(key)");
 	STRBIN_PARAM(1, key);
 
@@ -230,7 +230,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("exists?(key)");
 	STRBIN_PARAM(1, key);
 
@@ -243,7 +243,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("firstKey()");
 
 	aprerr = apr_dbm_firstkey(db, &key);
@@ -260,7 +260,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t key;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("nextKey(key)");
 	STRBIN_PARAM(1, key);
 
@@ -277,7 +277,7 @@
 	apr_dbm_p db = self->data.ptr;
 	apr_datum_t data;
 
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	OPEN_CHK("freeDatum(data)");
 	STRBIN_PARAM(1, data);
 
@@ -287,7 +287,7 @@
 
 DEF(DB, close, NULL) {
 	apr_dbm_p db = self->data.ptr;
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	if (db) apr_dbm_close(db);
 	self->data.ptr = NULL;
 	return self;
@@ -295,13 +295,13 @@
 
 DEF(DB, closed_QUES, NULL) {
 	apr_dbm_p db = self->data.ptr;
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	if (db) return OBJ(PR_FALSE);
 	else    return OBJ(PR_TRUE);
 }
 
 DEF(DB, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(DB);
+	BIN_CONTENT_CHK(DB);
 	return parms[1];
 }
 
Modified: trunk/modules/File/File.c
===================================================================
--- trunk/modules/File/File.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/modules/File/File.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -189,7 +189,7 @@
 }
 
 DEF(File, close, NULL) {
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (OPEN(self)) {
 		apr_file_close(STREAM(self));
 		STREAM(self) = NULL;
@@ -199,7 +199,7 @@
 }
 
 DEF(File, closed_QUES, NULL) { 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "closed can only be called on a File object");
 		return NULL;
@@ -209,7 +209,7 @@
 }
 
 DEF(File, flush, NULL) { 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "flush can only be called on a File object");
 		return NULL;
@@ -226,7 +226,7 @@
 }
 #if 0
 DEF(File, fileNo, NULL) { 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "fileNo can only be called on a File object");
 		return NULL;
@@ -239,7 +239,7 @@
 }
 
 DEF(File, isATty_QUES, NULL) { 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (!OPEN(self)) {
 		raise_exception(ist, OBJ(IOEXCEPTION), "isatty called on closed stream");
 		return NULL;
@@ -258,7 +258,7 @@
 	char err_buf[1024];
 	i64_t size_in;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	INT_64_PARAM(1, size_in);
 
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
@@ -336,7 +336,7 @@
 	char err_buf[1024];
 	i64_t  size_in;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	INT_64_PARAM(1, size_in);
 
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
@@ -412,7 +412,7 @@
 	char err_buf[1024];
 	i64_t  size_in;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	INT_64_PARAM(1, size_in);
 
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
@@ -494,7 +494,7 @@
 	char err_buf[1024];
 	i64_t pos_in, how;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	INT_64_PARAM(1, pos_in);
 	INT_64_PARAM(2, how);
 
@@ -526,7 +526,7 @@
 }
 #if 0
 DEF(File, tell, NULL) {
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	if (!OPEN(self)) {
 		raise_exception(ist, OBJ(IOEXCEPTION), "tell called on closed file");
 		return NULL;
@@ -540,7 +540,7 @@
 	apr_off_t size;
 	i64_t size_in;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	INT_64_PARAM(1, size_in);
 
 	if (!has_proto_QUES(ist, self, File_OBJ)) {
@@ -575,7 +575,7 @@
 	char err_buf[1024];
 	char* str;
 
-	BIN_OK_CHK(File);
+	BIN_CONTENT_CHK(File);
 	STRING_PARAM(1, str);
 	size = pr_strlen(parms[1]);
 

Modified: trunk/modules/Prosist/Prosist.c
===================================================================
--- trunk/modules/Prosist/Prosist.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/modules/Prosist/Prosist.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -983,7 +983,7 @@
 
 DEF(Prosist, rollBack, NULL) {
 	psrec_p psrecp = self->data.ptr;
-	BIN_OK_CHK(Prosist);
+	BIN_CONTENT_CHK(Prosist);
 	if (psrecp) 
 		rollback_db(ist, psrecp);
 	else {
@@ -995,7 +995,7 @@
 
 DEF(Prosist, commit, NULL) {
 	psrec_p psrecp = self->data.ptr;
-	BIN_OK_CHK(Prosist);
+	BIN_CONTENT_CHK(Prosist);
 	if (psrecp) 
 		commit_db(ist, psrecp);
 	else {
@@ -1008,7 +1008,7 @@
 
 DEF(Prosist, close, NULL) { 
 	psrec_p psrecp = self->data.ptr;
-	BIN_OK_CHK(Prosist);
+	BIN_CONTENT_CHK(Prosist);
 	if (psrecp) {
 		apr_dbm_close(psrecp->db);
 		apr_pool_destroy(psrecp->pool);
@@ -1018,30 +1018,30 @@
 }
 
 DEF(Prosist, closed_QUES, NULL) { 
-	BIN_OK_CHK(Prosist);
+	BIN_CONTENT_CHK(Prosist);
 	if (self->data.ptr) return OBJ(PR_FALSE);
 	else                return OBJ(PR_TRUE);
 }
 
 DEF(Prosist, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(Prosist);
+	BIN_CONTENT_CHK(Prosist);
 	return parms[1];
 }
 
 DEF(MutWrap, __hash__, NULL) {
-	BIN_OK_CHK(MutWrap);
+	BIN_CONTENT_CHK(MutWrap);
 	return new_hash_obj(ist, (i32_t)(intptr_t) self->data.ptr);
 }
 
 DEF(MutWrap, __eq__QUES, FORM_RPARAM) {
-	BIN_OK_CHK(MutWrap);
+	BIN_CONTENT_CHK(MutWrap);
 	CHECK_TYPE_EXC(parms[1], MutWrap_OBJ, "immutable object wrapper");
 	if (self->data.ptr == parms[1]->data.ptr) return OBJ(PR_TRUE);
 	else									  return OBJ(PR_FALSE);
 }
 
 DEF(MutWrap, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(MutWrap);
+	BIN_CONTENT_CHK(MutWrap);
 	return parms[1];
 }
 

Modified: trunk/modules/Re/Re.c
===================================================================
--- trunk/modules/Re/Re.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/modules/Re/Re.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -144,7 +144,7 @@
 	int i, err, ngrps = numgrps(self);
 	regex_t* e = self->data.ptr;
 
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	STRING_PARAM(1, s);
 
 	res = NEW_LIST(10);
@@ -202,7 +202,7 @@
 	regex_t* e = self->data.ptr;
 	i64_t start, end;
 
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	STRING_PARAM(1, s);
 	INT_64_PARAM(2, start);
 	INT_64_PARAM(3, end);
@@ -251,7 +251,7 @@
 	int i, split_count=0, maxsplit, err, ngrps = numgrps(self);
 	char* s;
 
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	STRING_PARAM(1, s);
 	INT_32_PARAM(2, maxsplit);
 
@@ -390,7 +390,7 @@
 	char *repl = "", *orig_s, *p1, *p2, *s, *s_lim, *res;
 	int i, last_index=0, repl_is_func=FALSE, count, err, ngrps = numgrps(self);
 
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	if ( !has_proto_QUES(ist, parms[1], OBJ(STRING_PROTO)) &&
 		 !(repl_is_func=has_proto_QUES(ist, parms[1], OBJ(FUNC_PROTO))) ) {
 		raise_exception(ist, OBJ(TYPE_EXC), "sub repl parameter must be a string or function");
@@ -485,12 +485,12 @@
 }
 
 DEF(ReCompiled, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	return parms[1];
 }
 
 DEF(ReCompiled, __del__, NULL) {
-	BIN_OK_CHK(ReCompiled);
+	BIN_CONTENT_CHK(ReCompiled);
 	regfree((regex_t*)(self->data.ptr));
 	return OBJ(NONE);
 }
@@ -505,7 +505,7 @@
 }
 
 DEF(ReMatch, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	return parms[1];
 }
 
@@ -513,7 +513,7 @@
 	u32_t grp;
 	i64_t groupid;
 
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	INT_64_PARAM(1, groupid);
 	grp = (u32_t) groupid;
 	if (grp < 0 || grp >= list_len(ist, self)/2) {
@@ -527,7 +527,7 @@
 	u32_t grp;
 	i64_t groupid;
 
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	INT_64_PARAM(1, groupid);
 	grp = (u32_t) groupid;
 	if (grp < 0 || grp >= list_len(ist, self)/2) {
@@ -542,7 +542,7 @@
 	obj_p res;
 	i64_t groupid;
 
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	INT_64_PARAM(1, groupid);
 	grp = (u32_t) groupid;
 	if (grp < 0 || grp >= list_len(ist, self)/2) {
@@ -561,7 +561,7 @@
 	char *p1, *p2, *s, *s_lim, *orig_s;
 	obj_p orig_s_obj, res;
 
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	STRING_PARAM(1, p1);
 
 	size = (strlen(p1) * 2 > 256 ? strlen(p1) * 2 : 256);
@@ -582,7 +582,7 @@
 	char* orig_s;
 	obj_p orig_s_obj, res;
 
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	INT_32_PARAM(1, j);
 
 	if (j < 0 || j > ngrps) {
@@ -633,7 +633,7 @@
 	obj_p orig_s_obj, res = NEW_TUPLE(ngrps);
 	orig_s_obj = get_attr(ist, self, sym(ist, "string")); if_exc_return NULL;
 	orig_s = pr_strptr(orig_s_obj);
-	BIN_OK_CHK(ReMatch);
+	BIN_CONTENT_CHK(ReMatch);
 	for (i=0; i < ngrps; i++) {
 		sp = (int)(list_item(ist, self, i*2  )->data.i64);
 		ep = (int)(list_item(ist, self, i*2+1)->data.i64);

Modified: trunk/modules/SQLite/SQLite.c
===================================================================
--- trunk/modules/SQLite/SQLite.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/modules/SQLite/SQLite.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -120,7 +120,7 @@
 }
 
 DEF(Connection, cursor, NULL) {
-	BIN_OK_CHK(Connection);
+	BIN_CONTENT_CHK(Connection);
 	if (self->data.ptr) {
 		cursor_p cursorp;
 		obj_p curs_obj = NEW_OBJ(Cursor_OBJ);
@@ -139,7 +139,7 @@
 }
 
 DEF(Connection, rollBack, NULL) {
-	BIN_OK_CHK(Connection);
+	BIN_CONTENT_CHK(Connection);
 	if (self->data.ptr) {
 		raise_exception(ist, Error_OBJ, "rollBack not implemented yet, use query");
 		return NULL;
@@ -150,7 +150,7 @@
 }
 
 DEF(Connection, commit, NULL) {
-	BIN_OK_CHK(Connection);
+	BIN_CONTENT_CHK(Connection);
 	if (self->data.ptr) {
 		raise_exception(ist, Error_OBJ, "commit not implemented yet, use query");
 		return NULL;
@@ -161,7 +161,7 @@
 }
 
 DEF(Connection, close, NULL) {
-	BIN_OK_CHK(Connection);
+	BIN_CONTENT_CHK(Connection);
 	if (self->data.ptr) {
 		sqlite_close((sqlite_p)(self->data.ptr));
 		self->data.ptr = NULL;
@@ -170,7 +170,7 @@
 }
 
 DEF(Connection, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(Connection);
+	BIN_CONTENT_CHK(Connection);
 	return parms[1];
 }
 
@@ -193,7 +193,7 @@
 	sqlite_p db;
     char *sql, *errmsg=NULL;
 
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	CHECK_TYPE_EXC(parms[1], OBJ(STRING_PROTO), "string");
 	sql = pr_strptr(parms[1]);
 	if (parms[3] != OBJ(NONE)) {
@@ -220,7 +220,7 @@
 	obj_p res;
 	cursor_p cursorp  = (cursor_p)(self->data.ptr);
 
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	p = cursorp->row_ptr;
 	llen = (int) list_len(ist, cursorp->row_list);
 	if (p < llen) {
@@ -236,7 +236,7 @@
 	obj_p res;
 	cursor_p cursorp  = (cursor_p)(self->data.ptr);
 
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	CHECK_TYPE_EXC(parms[1], OBJ(INT_PROTO), "integer");
 	n = (int) parms[1]->data.i64;
 	p = cursorp->row_ptr;
@@ -257,7 +257,7 @@
 	obj_p res;
 	cursor_p cursorp  = (cursor_p)(self->data.ptr);
 
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	p = cursorp->row_ptr;
 	llen = (int) list_len(ist, cursorp->row_list);
 	res = NEW_LIST(llen-p);
@@ -271,7 +271,7 @@
 
 DEF(Cursor, rowCount, NULL) {
 	cursor_p cursorp  = (cursor_p)(self->data.ptr);
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	if (cursorp->row_list) 
 		return NEW_INT(list_len(ist, cursorp->row_list));
 	return NEW_INT(-1);
@@ -279,7 +279,7 @@
 
 DEF(Cursor, __objList__, FORM_RPARAM) {
 	cursor_p cursorp  = (cursor_p)(self->data.ptr);
-	BIN_OK_CHK(Cursor);
+	BIN_CONTENT_CHK(Cursor);
 	if (cursorp->row_list)
 		return cursorp->row_list;
 	return parms[1];

Modified: trunk/pr/test.pr
===================================================================
--- trunk/pr/test.pr	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/pr/test.pr	2004-05-02 04:58:18 UTC (rev 443)
@@ -2,6 +2,10 @@
 
 # bin.pr
 
+x = Proto(Int)
+x.__init__(99)
+print x
+
 x = Exception
 
 object obj(String, Int):

Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-dict.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -278,7 +278,7 @@
 	obj_p list;
 	int i, llen, size = max(DEFAULT_INITIAL_DICT_SIZE, (int) dict_len(ist, parms[1])*3);
 	
-    BIN_EMPTY_OR_OK_CHK(Dict);
+    BIN_EMPTY_OR_NOT_CHK(Dict);
 	dict = obj_malloc(ist, OBJ(DICT_PROTO), self, dict_sizeof(size));
     memset(dict, 0, dict_sizeof(size));
     dictsize(dict) = size;
@@ -296,7 +296,7 @@
 	char* res;
 	obj_p res_obj, keys, vals;
 
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 		
 	len = dict_len(ist, self);
 	keys = dict_keys(ist, self);
@@ -340,7 +340,7 @@
 
 DEF(Dict, hasKey_QUES, FPARM1(k, NULL)) {
 	obj_p res;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if ((res = dict_item(ist, self, parms[1]))) {
 		del_unlock(res);
 		return OBJ(PR_TRUE);
@@ -350,7 +350,7 @@
 
 DEF(Dict, get, FPARM2(k, NULL, x, OBJ(NONE))) {
 	obj_p res;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if ((res = dict_item(ist, self, parms[1]))) {
 		return res;
 	}
@@ -359,7 +359,7 @@
 
 DEF(Dict, __rIn__QUES, FORM_RPARAM) {
 	obj_p res;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if ((res = dict_item(ist, self, parms[1]))) {
 		del_unlock(res);
 		return OBJ(PR_TRUE);
@@ -369,7 +369,7 @@
 
 DEF(Dict, __rNotIn__QUES, FORM_RPARAM) {
 	obj_p res;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if ((res = dict_item(ist, self, parms[1]))) {
 		del_unlock(res);
 		return OBJ(PR_FALSE);
@@ -378,20 +378,20 @@
 }
 
 DEF(Dict, __cDataLen__, NULL) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return NEW_INT(dict_size_bytes(self->data.ptr));
 }
 
 
 DEF(Dict, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return parms[1];
 }
 
 DEF(Dict, __getItem__, FORM_RPARAM) {
 	obj_p res;
 
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	CHECK_TYPE_EXC(self, OBJ(DICT_PROTO), "dict");
 
 	if (list_len(ist, parms[1]) > 1) {
@@ -407,7 +407,7 @@
 }
 
 DEF(Dict, __setItem__, FORM_PARAM2) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if (list_len(ist, parms[1]) > 1) {
 		raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in dictionary indexing");	
 		return NULL;
@@ -422,7 +422,7 @@
 	i32_t i, hash_in;
 	obj_p key, key_in, rp[2];
 	dict_p dict, dp;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	rp[0]=0; rp[1] = key_in = list_item(ist, parms[1], 0);
 	if (list_len(ist, parms[1]) > 1) {
 		raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in dictionary indexing");	
@@ -453,23 +453,23 @@
 }
 
 DEF(Dict, items, NULL) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return dict_keys_values(ist, self, 3 /*tuples*/);
 }
 
 DEF(Dict, keys, NULL) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return dict_keys_values(ist, self, 1 /*keys*/);
 }
 
 DEF(Dict, values, NULL) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return dict_keys_values(ist, self, 0 /*values*/);
 }
 
 DEF(Dict, clear_BANG, NULL) {
 	dict_p dict;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	def_write_lock(self);
 	dict = dict_d(self);
 	memset(&(dict->entry)+1, 0, dictsize(dict) * sizeof(dict_entry_t));
@@ -482,7 +482,7 @@
 	size_t i, llen;
 	obj_p list;
 
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	CHECK_TYPE_EXC(parms[1], OBJ(DICT_PROTO), "dict");
 	list = dict_keys_values(ist, parms[1], 2 /*list*/);
 	llen = list_len(ist, list);
@@ -496,7 +496,7 @@
 
 DEF(Dict, setDefault_BANG, FPARM2(k, NULL, x, OBJ(NONE))) {
 	obj_p res;
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	if ((res = dict_item(ist, self, parms[1]))) {
 		return res;
 	}
@@ -507,14 +507,14 @@
 }
 
 DEF(Dict, popItem_BANG, NULL) {
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	return dict_keys_values(ist, self, 4 /*tuple*/);
 }
 
 DEF(Dict, __iter__, NULL) {
 	obj_p list_obj, gen_obj = NEW_OBJ(DictGen_OBJ);
 
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	gen_obj->data_type = DATA_TYPE_DATAPTR;
 	gen_obj->data.ptr = list_obj = dict_keys(ist, self);
 
@@ -524,7 +524,7 @@
 
 DEF(Dict, __toStorProxy__, NULL) {
 	obj_p proxy_obj = dict_keys_values(ist, self, 2 /*list*/);
-	BIN_OK_CHK(Dict);
+	BIN_CONTENT_CHK(Dict);
 	switch_proto(ist, proxy_obj, DictRestore_OBJ);
 	return proxy_obj;
 }
@@ -538,7 +538,7 @@
 DEF(DictRestore, __fromStorProxy__, NULL) {
 	int i, llen = (int)list_len(ist, self);
 	obj_p dict = NEW_DICT(2*llen);
-	BIN_OK_CHK(DictRestore);
+	BIN_CONTENT_CHK(DictRestore);
 	for (i=0; i < llen; i += 2)
 		dict_add(ist, dict, list_item(ist, self, i), list_item(ist, self, i+1));
 	return dict;
@@ -553,7 +553,7 @@
 DEF(DictGen, next, NULL) {
 	obj_p res, list_obj = self->data.ptr;
 
-	BIN_OK_CHK(DictGen);
+	BIN_CONTENT_CHK(DictGen);
 	CHECK_TYPE_EXC(self, DictGen_OBJ, "DictGen");
 	CHECK_TYPE_EXC(list_obj, OBJ(SEQ_PROTO), "list");
 

Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-float.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -120,7 +120,7 @@
 }
 
 DEF(Float, __bool__QUES, NULL) { 
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (Float_value(self) != 0.0 )
 		return OBJ(PR_TRUE);
 	else
@@ -129,7 +129,7 @@
 
 DEF(Float, __hash__, NULL) { 
 	double flt = (double) Float_value(self);
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (flt < 0) flt = -flt;
 	if (flt == 0.0) flt = 1.0;
 	while (flt < 100.0) flt *= 10.0;
@@ -139,24 +139,24 @@
 
 DEF(Float, __abs__, NULL) {
 	double num = Float_value(self);
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	return NEW_FLOAT(num < 0 ? -num : num);
 }
 
 DEF(Float, __neg__, NULL){
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	return NEW_FLOAT( - Float_value(self) );
 }
 
 DEF(Float, __pos__, NULL){
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	return self;
 }
 
 DEF(Float, __add__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -174,7 +174,7 @@
 DEF(Float, __div__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -196,7 +196,7 @@
 DEF(Float, __rDiv__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -216,7 +216,7 @@
 DEF(Float, __mul__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -234,7 +234,7 @@
 DEF(Float, __sub__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -267,7 +267,7 @@
 DEF(Float, __pow__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -285,7 +285,7 @@
 DEF(Float, __rPow__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -302,7 +302,7 @@
 DEF(Float, cmp, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -325,7 +325,7 @@
 DEF(Float, __rCmp__, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -346,7 +346,7 @@
 DEF(Float, __eq__QUES, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (is_Float(other)) float_other = Float_value(other);
 	else {
 		if (has_proto_QUES(ist, other, OBJ(INT_PROTO)))
@@ -363,19 +363,19 @@
 
 DEF(Float, __str__, NULL){
 	char str[1024];
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	apr_snprintf(str, sizeof(str), "%g", Float_value(self));
 	return NEW_STRING(str);
 }
 
 DEF(Float, __covers__QUES, FORM_RPARAM) {
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) return OBJ(PR_TRUE);
 	else										   return OBJ(PR_FALSE);
 }
 
 DEF(Float, __coerce__, FORM_RPARAM) {
-	BIN_OK_CHK(Float);
+	BIN_CONTENT_CHK(Float);
 	if (has_proto_QUES(ist, parms[1], OBJ(INT_PROTO)))
 		return NEW_FLOAT((double)(parms[1]->data.i64));
 	else if (has_proto_QUES(ist, parms[1], Float_OBJ))

Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-int.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -121,42 +121,42 @@
 
 DEF(Int, __str__, NULL){
 	char str[24];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	apr_snprintf(str, sizeof(str), "%"APR_INT64_T_FMT, (i64_t)Int_value(self));
 	return NEW_STRING(str);
 }
 
 DEF(Int, __bool__QUES, NULL) {
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (Int_value(self)) return OBJ(PR_TRUE);
 	else				 return OBJ(PR_FALSE);
 }
 
 DEF(Int, __hash__, NULL) { 
 	i32_t i32 = (i32_t) Int_value(self);
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	return new_hash_obj(ist, i32);
 }
 
 DEF(Int, __abs__, NULL){
 	i64_t num = Int_value(self);
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	return NEW_INT(num < 0 ? -num : num);
 }
 
 DEF(Int, __neg__, NULL){
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	return NEW_INT( - Int_value(self) );
 }
 
 DEF(Int, __pos__, NULL){
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	return self;
 }
 
 DEF(Int, __add__, FORM_RPARAM){
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__ADD__), self);
@@ -169,7 +169,7 @@
 DEF(Int, __div__, FORM_RPARAM){
 	obj_p res;
 	obj_p float_self, float_other, other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__RDIV__), self);
@@ -185,7 +185,7 @@
 
 DEF(Int, __floorDiv__, FORM_RPARAM){
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__RFLOORDIV__), self);
@@ -201,7 +201,7 @@
 
 DEF(Int, __mod__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__RMOD__), self);
@@ -217,7 +217,7 @@
 
 DEF(Int, __mul__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__MUL__), self);
@@ -229,7 +229,7 @@
 
 DEF(Int, __sub__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__RSUB__), self);
@@ -242,7 +242,7 @@
 DEF(Int, __pow__, FORM_RPARAM){
 	obj_p res;
 	obj_p float_self, float_other, other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	float_self  = call_func1(ist, OBJ(FLOAT_PROTO), SYM(__COERCE__), self);  if_exc_return NULL;
 	float_other = call_func1(ist, OBJ(FLOAT_PROTO), SYM(__COERCE__), other); if_exc_return NULL;
 	res = call_func1(ist, float_self, SYM(__POW__), float_other);
@@ -252,7 +252,7 @@
 
 DEF(Int, cmp, FORM_RPARAM){
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		if (covers(other, self))
 			return call_func1(ist, other, SYM(__RCMP__), self);
@@ -269,7 +269,7 @@
 
 DEF(Int, __eq__QUES, FORM_RPARAM){
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		int c = covers(other, self);
 		if (catch_exception(ist, OBJ(FUNCNOTFOUND_EXC), NULL)) 
@@ -281,13 +281,13 @@
 	else                                     return OBJ(PR_FALSE);
 }
 DEF(Int, __invert__, NULL){
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	return NEW_INT( ~ Int_value(self) );
 }
 
 DEF(Int, __xor__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "object cannot be xor'd with an Integer");
 		return OBJ(NONE);
@@ -297,7 +297,7 @@
 
 DEF(Int, __and__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "object cannot be and'd with an Integer");
 		return OBJ(NONE);
@@ -307,7 +307,7 @@
 
 DEF(Int, __or__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "object cannot be or'd with an Integer");
 		return OBJ(NONE);
@@ -317,7 +317,7 @@
 
 DEF(Int, __rShift__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "object cannot be shifted with an Integer");
 		return OBJ(NONE);
@@ -327,7 +327,7 @@
 
 DEF(Int, __lShift__, FORM_RPARAM) {
 	obj_p other = parms[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "object cannot be shifted with an Integer");
 		return OBJ(NONE);
@@ -337,7 +337,7 @@
 
 DEF(Int, __iter__, NULL) {
 	obj_p gen_obj = NEW_INT(0);
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	gen_obj->immutable = FALSE;
 	gen_obj->attr_proto.proto = IntGen_OBJ;
 	set_attr(ist, gen_obj, SYM_LIMIT, self);
@@ -346,7 +346,7 @@
 
 DEF(Int, chr, NULL) {
 	char s[1];
-	BIN_OK_CHK(Int);
+	BIN_CONTENT_CHK(Int);
 	s[0] = (char) Int_value(self);
 	return NEW_STRINGN(s, 1);
 }
@@ -361,7 +361,7 @@
 
 DEF(IntGen, next, NULL) {
 	obj_p limit, res;
-	BIN_OK_CHK(IntGen);
+	BIN_CONTENT_CHK(IntGen);
 	if ( !(limit=get_attr(ist, self, SYM_LIMIT)) ||
 		  Int_value(self) == Int_value(limit) ) {
 		if (limit) {

Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-list.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -313,7 +313,7 @@
 }
 
 DEF(List, __init__, FORM_STAR_PARAM) {
-	BIN_EMPTY_OR_OK_CHK(List);
+	BIN_EMPTY_OR_NOT_CHK(List);
 	read_unlock(ist, self);
 	read_unlock(ist, parms[1]);
 	copy_object_data(ist, self, parms[1]);
@@ -323,12 +323,12 @@
 }
 
 DEF(List, __str__, NULL) {
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	return str_tuple_list(ist, self, "[", "]");
 }
 
 DEF(List, __getItem__, FORM_RPARAM) {
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	return get_sequence_item(ist, self, parms[1], SEQ_TYPE_LIST);
 }
 
@@ -338,7 +338,7 @@
 	obj_p slice = parms[1], value = parms[3];
 	i64_t i, new_len, exp_len, index1 = 0, index2 = 0, index3 = 0, slice1_empty=FALSE, slice2_empty=FALSE;
 	size_t val_len, self_len, slice_len = list_len(ist, slice);
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	self_len = listlen(self);
 	slice_item1 = list_item(ist, slice,0);
@@ -453,7 +453,7 @@
 	obj_p slice = parms[1];
 	i64_t i, new_len, index1 = 0, index2 = 0, index3 = 0, slice1_empty=FALSE, slice2_empty=FALSE;
 	size_t exp_len, self_len, slice_len = list_len(ist, slice);
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	self_len = listlen(self);
 	slice_item1 = list_item(ist, slice,0);
@@ -559,7 +559,7 @@
 DEF(List, __add__, FORM_RPARAM) { 
 	int i;
 	obj_p res = copy_list_obj(ist, self);
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	if (has_proto_QUES(ist, parms[1], OBJ(SEQ_PROTO)) && !has_proto_QUES(ist, parms[1], OBJ(STRING_PROTO)))
 		for(i=0; i < (int) list_len(ist, parms[1]); i++) 
 			list_append(ist, res, list_item(ist, parms[1], i));
@@ -572,7 +572,7 @@
 	obj_p res;
 	list_p lstp, selfp = (list_p)(self->data.ptr);
 	int i, size, times, len = (int) list_len(ist, self);
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	if (!has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "multiply times parameter must be an integer");
 		return NULL;
@@ -597,7 +597,7 @@
 
 DEF(List, append_BANG, FORM_RPARAM) {
 	list_p lstp;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	lstp = self->data.ptr;
 	if(lstplen(lstp) == lstpsize(lstp)) {
@@ -613,7 +613,7 @@
 DEF(List, extend_BANG, FORM_RPARAM) {
 	list_p selfp, otherp;
 	size_t self_len, other_len;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	if (!has_proto_QUES(ist, parms[1], OBJ(TUPLE_PROTO)) && !has_proto_QUES(ist, parms[1], List_OBJ)) {
 		raise_exception(ist, OBJ(TYPE_EXC), "extend parameter must be a tuple or list");
@@ -638,7 +638,7 @@
 	i64_t index;
 	size_t self_len;
 	list_p selfp;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	if (!has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "index (i) parameter must be an integer");
 		return NULL;
@@ -670,7 +670,7 @@
 	i64_t i;
 	size_t self_len;
 	list_p selfp;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	selfp    = self->data.ptr;
 	self_len = lstplen(selfp);
@@ -696,7 +696,7 @@
 	size_t self_len;
 	list_p selfp;
 	obj_p res;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	if (parms[1] != OBJ(NONE) && !has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "pop index (i) parameter must be an integer");
 		return NULL;
@@ -726,7 +726,7 @@
 	size_t self_len;
 	list_p selfp;
 	obj_p *p1, *p2;
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	def_write_lock(self);
 	selfp    = self->data.ptr;
 	self_len = lstplen(selfp);
@@ -747,7 +747,7 @@
 	list_p	selfp;
 	obj_p*	a;
 
-	BIN_OK_CHK(List);
+	BIN_CONTENT_CHK(List);
 	if (parms[1] != OBJ(NONE))
 		CHECK_TYPE_EXC(self, OBJ(FUNC_PROTO), "function");
 	selfp = self->data.ptr;

Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-string.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -158,25 +158,25 @@
 }
 
 DEF(String, __str__, NULL) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return self;
 }
 
 DEF(String, __hash__, NULL) {
 	i32_t res = 0x9a7c5e3;
 	char *p;
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	for(p=pr_strptr(self); *p; p++) res += 131 * (*p);
 	return new_hash_obj(ist, res);
 }
 
 DEF(String, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return parms[1];
 }
 
 DEF(String, __getItem__, FORM_RPARAM) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return get_sequence_item(ist, self, parms[1], SEQ_TYPE_STRING);
 }
 
@@ -192,7 +192,7 @@
 
 DEF(String, cmp, FORM_RPARAM){
 	obj_p other = parms[1];
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (self == other)
 		return NEW_INT(0);
 	if (!is_String(other)) {
@@ -206,7 +206,7 @@
 	obj_p obj, other = parms[1];
 	pr_str_p obj_str;
 	size_t slen, olen, tlen;
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (!is_String(other)) other = call_func0(ist, other, SYM(__STR__));
 	slen = pr_strlen(self); olen = pr_strlen(other);
 	tlen = slen + olen;
@@ -232,7 +232,7 @@
 	obj_p obj;
 	pr_str_p obj_str;
 	size_t i, times, tlen, len = pr_strlen(self);
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (!has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "multiply times parameter must be an integer");
 		return NULL;
@@ -271,7 +271,7 @@
 	char			*fmt_str = pr_strptr(self), *buf;
 	apr_status_t	aprerr;
 
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if ( has_proto_QUES(ist, argv_obj, OBJ(STRING_PROTO)) ||
 		!has_proto_QUES(ist, argv_obj,    OBJ(SEQ_PROTO)) ) {
 		argv_obj = NEW_LIST(1);
@@ -309,7 +309,7 @@
 
 DEF(String, __iter__, NULL) {
 	obj_p gen_obj = NEW_OBJ(StringGen_OBJ);
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	gen_obj->data_type = DATA_TYPE_DATAPTR;
 	gen_obj->data.ptr = pr_strptr(self);
 	set_attr(ist, gen_obj, sym(ist, "saved_string"), self);
@@ -317,7 +317,7 @@
 }
 
 DEF(String, ord, NULL) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return NEW_INT((int)(*pr_strptr(self)));
 }
 
@@ -327,7 +327,7 @@
 	obj_p obj, list, str_list;
 	int i, llen;
 	size_t ofs, self_len, tlen;
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (!has_proto_QUES(ist, parms[1], OBJ(LIST_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "join function parameter must be a list");
 		return NULL;
@@ -376,7 +376,7 @@
 }
 
 DEF(String, __in__QUES, FORM_RPARAM) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (!has_proto_QUES(ist, parms[1], String_OBJ))
 		return call_func1(ist, parms[1], SYM(__RIN__QUES), self);
 	if (strstr(pr_strptr(parms[1]), pr_strptr(self))) return OBJ(PR_TRUE);
@@ -384,7 +384,7 @@
 }
 
 DEF(String, __notIn__QUES, FORM_RPARAM) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (!has_proto_QUES(ist, parms[1], String_OBJ))
 		return call_func1(ist, parms[1], SYM(__RNOTIN__QUES), self);
 	if (strstr(pr_strptr(parms[1]), pr_strptr(self))) return OBJ(PR_FALSE);
@@ -392,18 +392,18 @@
 }
 
 DEF(String, len, NULL) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return NEW_INT(pr_strlen(self));
 }
 
 DEF(String, __bool__QUES, NULL) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	if (pr_strlen(self)) return OBJ(PR_TRUE);
 	else                 return OBJ(PR_FALSE);
 }
 
 DEF(String, __cDataLen__, NULL) {
-	BIN_OK_CHK(String);
+	BIN_CONTENT_CHK(String);
 	return NEW_INT(sizeof(pr_str_t) + pr_strlen(self) + 1);
 }
 
@@ -421,7 +421,7 @@
         int ch;
         obj_p res = NULL;
         char* res_str;
-		BIN_OK_CHK(StringGen);
+		BIN_CONTENT_CHK(StringGen);
         def_write_lock(self);
         if ((ch = *((char*)self->data.ptr))) {
 				self->data.ptr = (i64_t *)(((char*)self->data.ptr) + 1);

Modified: trunk/src/builtins-thread.c
===================================================================
--- trunk/src/builtins-thread.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-thread.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -246,7 +246,7 @@
 DEF(Thread, __str__, NULL) {
 	obj_p name_obj;
 	char name[80];
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	if ((name_obj = get_attr(ist, self, sym(ist, "name"))))
 		apr_snprintf(name, sizeof(name), "<Thread:%s>", pr_strptr(name_obj));
 	else 
@@ -255,13 +255,13 @@
 }
 
 DEF(Thread, access, NULL) {
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	return NEW_INT(ist->access);
 }
 
 DEF(Thread, setAccess, FORM_RPARAM) {
 	int new_access;
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	CHECK_TYPE_EXC(parms[1], OBJ(INT_PROTO), "integer");
 	new_access = (int) parms[1]->data.i64;
 	if (new_access > ist->access) {
@@ -274,7 +274,7 @@
 }
 
 DEF(Thread, accessStr, NULL) {
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	switch (ist->access) {
 		case 0:	return NEW_STRING("guest");
 		case 1: return NEW_STRING("user1");
@@ -285,13 +285,13 @@
 }
 
 DEF(Thread, running_QUES, NULL) {
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	if (thread_running(self)) return OBJ(PR_TRUE);
 	else                      return OBJ(PR_FALSE);
 }
 
 DEF(Thread, sleep, FORM_RPARAM) {
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	CHECK_TYPE_EXC(parms[1], OBJ(FLOAT_PROTO), "float");
 	apr_sleep((apr_interval_time_t)((parms[1]->data.f64)*1000000));
 	return parms[1];
@@ -300,7 +300,7 @@
 DEF(Thread, join, NULL) {
 	pr_thread_p thread_ptr = self->data.ptr;
 	apr_status_t retval, aprerr;
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	if (!(thread_ptr->apr_thread)) {
 		raise_exception(ist, OBJ(INTERPRETER_EXC), "cannot join this thread");
 		return NULL;
@@ -311,7 +311,7 @@
 }
 
 DEF(Thread, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(Thread);
+	BIN_CONTENT_CHK(Thread);
 	return parms[1];
 }
 
@@ -343,14 +343,14 @@
 
 DEF(Mutex, __str__, NULL) {
 	char name[30];
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	apr_snprintf(name, sizeof(name), "<Mutex:%lx>", (unsigned long)(intptr_t)self);
 	return NEW_STRING(name);
 }
 
 DEF(Mutex, lock, NULL) {
 	apr_status_t aprerr;
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	aprerr = apr_thread_mutex_lock((apr_thread_mutex_t*)(self->data.ptr));
 	IF_APR_ERR("error in apr_thread_mutex_lock") return NULL;
 	return self;
@@ -358,7 +358,7 @@
 
 DEF(Mutex, tryLock, NULL) {
 	apr_status_t aprerr;
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	aprerr = apr_thread_mutex_trylock((apr_thread_mutex_t*)(self->data.ptr));
 	if (APR_STATUS_IS_EBUSY(aprerr)) return OBJ(PR_FALSE);
 	else if (aprerr == APR_SUCCESS)	 return OBJ(PR_TRUE);
@@ -368,20 +368,20 @@
 
 DEF(Mutex, unlock, NULL) {
 	apr_status_t aprerr;
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	aprerr = apr_thread_mutex_unlock((apr_thread_mutex_t*)(self->data.ptr));
 	IF_APR_ERR("error in apr_thread_mutex_unlock") return NULL;
 	return self;
 }
 
 DEF(Mutex, __del__, NULL) {
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	apr_thread_mutex_destroy((apr_thread_mutex_t*)(self->data.ptr));
 	return OBJ(NONE);
 }
 
 DEF(Mutex, __objList__, FORM_RPARAM) {
-	BIN_OK_CHK(Mutex);
+	BIN_CONTENT_CHK(Mutex);
 	return parms[1];
 }
 

Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/builtins-tuple.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -106,12 +106,12 @@
 }
 
 DEF(Tuple, __str__, NULL) {
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	return str_tuple_list(ist, self, "(", ")");
 }
 
 DEF(Tuple, __getItem__, FORM_RPARAM) {
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	return get_sequence_item(ist, self, parms[1], SEQ_TYPE_TUPLE);
 }
 
@@ -133,7 +133,7 @@
 	int i, llen, tlen, mlen;
 	obj_p res;
 	obj_p self_item, tgt_item, tgt_list;
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (!has_proto_QUES(ist, parms[1], OBJ(SEQ_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "sequence can only be compared to a sequence");
 		return NULL;
@@ -157,7 +157,7 @@
 DEF(Tuple, __eq__QUES, FORM_RPARAM) { 
 	int i, llen, tlen;
 	obj_p self_item, tgt_item, tgt_list, false_obj = OBJ(PR_FALSE);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (!has_proto_QUES(ist, parms[1], OBJ(SEQ_PROTO))) return false_obj;
 	llen = (int) list_len(ist, self);
 	tgt_list = parms[1];
@@ -176,7 +176,7 @@
 DEF(Tuple, __rIn__QUES, FORM_RPARAM) { 
 	int i, llen = (int) list_len(ist, self);
 	obj_p item, tgt = parms[1];
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	for(i=0; i < llen; i++) {
 		item = list_item(ist, self, i);
 		if (call_func1(ist, item, SYM(__EQ__QUES), tgt) == OBJ(PR_TRUE)) 
@@ -189,7 +189,7 @@
 DEF(Tuple, __rNotIn__QUES, FORM_RPARAM) { 
 	int i, llen = (int) list_len(ist, self);
 	obj_p item, tgt = parms[1];
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	for(i=0; i < llen; i++) {
 		item = list_item(ist, self, i);
 		if (call_func1(ist, item, SYM(__EQ__QUES), tgt) == OBJ(PR_TRUE)) 
@@ -202,7 +202,7 @@
 DEF(Tuple, __add__, FORM_RPARAM) { 
 	int i;
 	obj_p res = copy_list_obj(ist, self);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (has_proto_QUES(ist, parms[1], OBJ(SEQ_PROTO)) && !has_proto_QUES(ist, parms[1], OBJ(STRING_PROTO)))
 		for(i=0; i < (int) list_len(ist, parms[1]); i++) 
 			list_append(ist, res, list_item(ist, parms[1], i));
@@ -216,7 +216,7 @@
 	obj_p res;
 	list_p lstp, selfp = (list_p)(self->data.ptr);
 	int i, size, times, len = (int) list_len(ist, self);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (!has_proto_QUES(ist, parms[1], OBJ(INT_PROTO))) {
 		raise_exception(ist, OBJ(TYPE_EXC), "multiply times parameter must be an integer");
 		return NULL;
@@ -244,14 +244,14 @@
 }
 
 DEF(Tuple, len, NULL) { 
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	return NEW_INT(list_len(ist, self));
 }
 
 DEF(Tuple, min, NULL) { 
 	int i, llen = (int) list_len(ist, self);
 	obj_p min_item, cmp_obj;
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (llen == 0) return OBJ(NONE);
 	if (llen == 1) return list_item(ist, self, 0);
 	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP), list_item(ist, self, 1));  if_exc_return NULL;
@@ -267,7 +267,7 @@
 DEF(Tuple, max, NULL) { 
 	int i, llen = (int) list_len(ist, self);
 	obj_p max_item, cmp_obj;
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	if (llen == 0) return OBJ(NONE);
 	if (llen == 1) return list_item(ist, self, 0);
 	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP), list_item(ist, self, 1));  if_exc_return NULL;
@@ -282,7 +282,7 @@
 
 DEF(Tuple, count, FORM_RPARAM) { 
 	int i, cnt=0, llen = (int) list_len(ist, self);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	for (i=0; i < llen; i++) {
 		if (call_func1(ist, list_item(ist, self, i), SYM(__EQ__QUES), parms[1]) == OBJ(PR_TRUE))
 			cnt++;
@@ -293,7 +293,7 @@
 
 DEF(Tuple, index, FORM_RPARAM) { 
 	int i, llen = (int) list_len(ist, self);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	for (i=0; i < llen; i++) {
 		if (call_func1(ist, list_item(ist, self, i), SYM(__EQ__QUES), parms[1]) == OBJ(PR_TRUE))
 			return NEW_INT(i);
@@ -309,7 +309,7 @@
 
 DEF(Tuple, __iter__, NULL) {
 	obj_p list_obj, gen_obj = NEW_OBJ(Tgen_OBJ);
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	gen_obj->data_type = DATA_TYPE_DATAPTR;
 	gen_obj->data.ptr = list_obj = copy_list_obj(ist, self);
 	listlen(list_obj) = 0;
@@ -321,7 +321,7 @@
 	i32_t hash=0x937456;
 	int i, llen;
 
-	BIN_OK_CHK(Tuple);
+	BIN_CONTENT_CHK(Tuple);
 	llen = (int) list_len(ist, self);
 	for (i=0; i < llen; i++) {
 		hash_obj = call_func0(ist, list_item(ist, self, i), SYM(__HASH__));
@@ -342,7 +342,7 @@
 	obj_p res, list_obj = self->data.ptr;
 	size_t lsiz = listsize(list_obj);
 	size_t llen = listlen(list_obj);
-	BIN_OK_CHK(Tgen);
+	BIN_CONTENT_CHK(Tgen);
 	if (llen == lsiz) {
 		raise_exception(ist, OBJ(STOP_ITERATION_EXC), NULL);
 		return NULL;

Modified: trunk/src/parser_routines.c
===================================================================
--- trunk/src/parser_routines.c	2004-05-02 04:07:13 UTC (rev 442)
+++ trunk/src/parser_routines.c	2004-05-02 04:58:18 UTC (rev 443)
@@ -1353,7 +1353,8 @@
 code_p int_to_obj(void* param, i64_t num){
 	code_p res;
 	obj_p obj = new_object(IST, OBJ(INT_PROTO));
-	*((i64_t*) obj_malloc(IST, OBJ(INT_PROTO), obj, sizeof(i64_t))) = num;
+	obj->data_type = DATA_TYPE_IMMDATA;
+	obj->data.i64 = num;
 	res = new_code(param, 2, 1, 1, OP_PUSH);
 	res->code_data[0].bytecode.param = 2;
 	res->code_data[1].data = obj;