rev 626 - in trunk: . include/prothon src
SVN User <[email protected]> Tue, 15 Jun 2004 18:39:43 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-06-15 18:39:40 -0400 (Tue, 15 Jun 2004)
New Revision: 626
Modified:
trunk/STATUS.txt
trunk/include/prothon/prothon.h
trunk/include/prothon/prothon_dll.h
trunk/src/builtins-file.c
trunk/src/builtins-list.c
trunk/src/object.c
Log:
working on TextFile
Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/STATUS.txt 2004-06-15 22:39:40 UTC (rev 626)
@@ -5,17 +5,20 @@
set times, get times, perms, attrs
use 'b' in all files
http://www.prothon.org/pipermail/prothon-user/2004-April/000955.html
---- TextFile object
+--- TempDir() should create new dir. del_ should delete it.
+--- TextFile, TempFile, and TempTextFile objects
http://www.prothon.org/pipermail/prothon-user/2004-June/001863.html
--- support any object that supports file methods in stdxxx (duck std)
http://www.prothon.org/pipermail/prothon-user/2004-June/001769.html
+--- functions as commands
--- Python regrets from Paul and print proposal
http://www.prothon.org/pipermail/prothon-user/2004-June/001970.html
-
+ http://www.prothon.org/pipermail/prothon-user/2004-June/001991.html
+
--- implement 1xc3fe ?
---- check immutable bit for default param values or make new default object each use
+--- check immutable bit for default param values or make new default object each use (using copy()??)
--- remove all clr_immutable calls
--- add vars_ flag to str.fmt() or implement taint bit and unTaint() method
Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/include/prothon/prothon.h 2004-06-15 22:39:40 UTC (rev 626)
@@ -294,7 +294,7 @@
//************************* WELL-KNOWN-OBJECTS ********************************
// these are created at object system initialization
typedef enum {
-// "identity" objects
+// "unique" objects
PR_FALSE=0, // 0 False
PR_TRUE, // 1 True
OBJECT, // 2 Object
@@ -764,6 +764,9 @@
obj_p item5, obj_p item6 );
obj_p list8(isp ist, obj_p item1, obj_p item2, obj_p item3, obj_p item4,
obj_p item5, obj_p item6, obj_p item7, obj_p item8 );
+obj_p list10(isp ist,obj_p item1, obj_p item2, obj_p item3, obj_p item4,
+ obj_p item5, obj_p item6, obj_p item7, obj_p item8,
+ obj_p item9, obj_p item10 );
// DICT_ADD: Add a key/value pair to the dictionary. Replace old one if key exists.
// Key equality is determined by the eq__QUES function on the key objects. The eq__QUES
@@ -946,9 +949,15 @@
#define FPARM2(lab1, val1, lab2, val2) \
list4(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2)
#define FPARM3(lab1, val1, lab2, val2, lab3, val3) \
- list6(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2, sym(ist, #lab3), val3)
+ list6(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2, \
+ sym(ist, #lab3), val3 )
#define FPARM4(lab1, val1, lab2, val2, lab3, val3, lab4, val4) \
- list8(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2, sym(ist, #lab3), val3, sym(ist, #lab4), val4)
+ list8(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2, \
+ sym(ist, #lab3), val3, sym(ist, #lab4), val4 )
+#define FPARM5(lab1, val1, lab2, val2, lab3, val3, lab4, val4,lab5, val5) \
+ list10(ist, sym(ist, #lab1), val1, sym(ist, #lab2), val2, \
+ sym(ist, #lab3), val3, sym(ist, #lab4), val4, \
+ sym(ist, #lab5), val5 )
// xxx_PARAM: Convenience macro for validation and assignment of params
// index is 1..n where 1 is first parameter and n is last
Modified: trunk/include/prothon/prothon_dll.h
===================================================================
--- trunk/include/prothon/prothon_dll.h 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/include/prothon/prothon_dll.h 2004-06-15 22:39:40 UTC (rev 626)
@@ -87,6 +87,9 @@
obj_p p5, obj_p p6);
obj_p (*list8)(isp ist, obj_p p1, obj_p p2, obj_p p3, obj_p p4,
obj_p p5, obj_p p6, obj_p p7, obj_p p8);
+ obj_p (*list10)(isp ist, obj_p p1, obj_p p2, obj_p p3, obj_p p4,
+ obj_p p5, obj_p p6, obj_p p7, obj_p p8,
+ obj_p p9, obj_p p10);
obj_p (*new_hash_obj)(isp ist, i32_t num);
obj_p (*new_int_obj)(isp ist, i64_t num);
obj_p (*new_float_obj)(isp ist, double num);
@@ -310,6 +313,7 @@
#define list4 (*services->list4)
#define list6 (*services->list6)
#define list8 (*services->list8)
+#define list10 (*services->list10)
#define raise_exception (*services->raise_exception)
#define new_object (*services->new_object)
#define copy_object_data (*services->copy_object_data)
Modified: trunk/src/builtins-file.c
===================================================================
--- trunk/src/builtins-file.c 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/src/builtins-file.c 2004-06-15 22:39:40 UTC (rev 626)
@@ -679,7 +679,7 @@
filep = self->data.ptr;
aprerr = apr_file_rename(path, name, filep->pool);
IF_APR_ERR("renaming a file") return NULL;
- return new_file_obj(ist, name);
+ return new_file_obj(ist, NEW_STRING(name), NULL, NULL, 0, 0);
}
DEF(File, move, FPARM1(dir, NULL)) {
@@ -701,7 +701,7 @@
strcpy(dstfilepath, dstpath); strcat(dstfilepath, filename);
aprerr = apr_file_rename(srcfilepath, dstfilepath, filep->pool);
IF_APR_ERR("moving a file") return NULL;
- res = new_file_obj(ist, dstfilepath, NULL, NULL, 0, 0);
+ res = new_file_obj(ist, NEW_STRING(dstfilepath), NULL, NULL, 0, 0);
pr_free(dstfilepath);
return res;
}
@@ -709,7 +709,7 @@
DEF(File, copy, FPARM2(file, NULL, uperms, NEW_INT(APR_UREAD|APR_UWRITE|APR_UEXECUTE))) {
apr_status_t aprerr;
i32_t uperms;
- char* path1, path2;
+ char *path1, *path2;
file_p filep;
BIN_CONTENT_CHK(File);
CHECK_TYPE_EXC(parms[1], File_OBJ, File);
@@ -1137,22 +1137,28 @@
TextFile_OBJ->unclonable = TRUE;
}
-DEF(TextFile, init_, FPARM3( path, NULL,
- mode, NEW_STRING(""),
- bufsize, NEW_INT(-1) ) ) {
+DEF(TextFile, init_, FPARM5( path, NULL,
+ mode, NEW_STRING(""),
+ encoding, NEW_STRING("ASCII"),
+ magic, OBJ(PR_FALSE),
+ bufsize, NEW_INT(-1) ) ) {
apr_file_t *f;
apr_status_t aprerr;
apr_pool_t *subpool;
apr_int32_t flags = 0;
char err_buf[1024];
- char *path, *mode;
- int bufsize;
-
+ char *path, *mode, *encoding;
+ int magic, bufsize;
+
BIN_EMPTY_CHK();
STRING_PARAM(1, path);
STRING_PARAM(2, mode);
- INT_32_PARAM(3, bufsize);
+ STRING_PARAM(3, encoding);
+ magic = (parms[7] == OBJ(PR_TRUE));
+ INT_32_PARAM(5, bufsize);
+ read_unlock(ist, self);
+
if (strlen(mode) == 0) {
read_unlock(ist, self);
SET_TYPE_IF_EXC(TextFile_OBJ, self, DATA_TYPE_DATAPTR) return NULL;
Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/src/builtins-list.c 2004-06-15 22:39:40 UTC (rev 626)
@@ -235,6 +235,19 @@
return list_obj;
}
+//********************************* list10 ************************************
+obj_p list10(isp ist, obj_p item1, obj_p item2, obj_p item3, obj_p item4,
+ obj_p item5, obj_p item6, obj_p item7, obj_p item8,
+ obj_p item9, obj_p item10 ){
+ obj_p list_obj = NEW_LIST(10);
+ list_append_no_lock(list_obj, item1); list_append_no_lock(list_obj, item2);
+ list_append_no_lock(list_obj, item3); list_append_no_lock(list_obj, item4);
+ list_append_no_lock(list_obj, item5); list_append_no_lock(list_obj, item6);
+ list_append_no_lock(list_obj, item7); list_append_no_lock(list_obj, item8);
+ list_append_no_lock(list_obj, item9); list_append_no_lock(list_obj, item10);
+ return list_obj;
+}
+
//********************************* quicksort *********************************
int obj_lt(obj_p a, obj_p b, isp ist, obj_p cmp_func) {
obj_p res, arr[4];
Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c 2004-06-15 07:11:26 UTC (rev 625)
+++ trunk/src/object.c 2004-06-15 22:39:40 UTC (rev 626)
@@ -157,6 +157,7 @@
dll_services.list4 = list4;
dll_services.list6 = list6;
dll_services.list8 = list8;
+ dll_services.list10 = list10;
dll_services.raise_exception = raise_exception;
dll_services.new_object = new_object;
dll_services.copy_object_data = copy_object_data;