ecere:File: removed File::Open method and restored FileOpen function. extras:CSVParse...
authorRejean Loyer <rejean.loyer@gmail.com>
Sun, 29 May 2011 18:03:36 +0000 (14:03 -0400)
committerRejean Loyer <rejean.loyer@gmail.com>
Sun, 29 May 2011 18:03:36 +0000 (14:03 -0400)
ecere/src/sys/File.ec
extras/CSVDataParser.ec [moved from extras/CSVFileValuesParser.ec with 96% similarity]
extras/CSVParser.ec [moved from extras/CSVFile.ec with 87% similarity]

index caa0fe8..2f541a1 100644 (file)
@@ -728,6 +728,7 @@ public:
       return result;
    }
 
+#if 0
    virtual bool Open(char * fileName, FileOpenMode mode)
    {
       bool result = false;
@@ -759,6 +760,7 @@ public:
       }
       return result;
    }
+#endif
 
    virtual void Close()
    {
@@ -915,10 +917,30 @@ public File FileOpen(char * fileName, FileOpenMode mode)
          File file = File {};
          if(file)
          {
-            if(file.Open(fileName, mode))
-               result = file;
+            FILE_FileOpen(fileName, mode, &file.input, &file.output);
+
+            //file.mode = mode;
+            if(!file.input && !file.output);
             else
+            {
+               openCount++;
+               result = file;
+               // TESTING ENABLING FILE BUFFERING BY DEFAULT... DOCUMENT ANY ISSUE
+               /*
+               if(file.input)
+                  setvbuf(file.input, null, _IONBF, 0);
+               else
+                  setvbuf(file.output, null, _IONBF, 0);
+               */
+            }
+            if(!result)
+            {
                delete file;
+               /* TOFIX:
+               LogErrorCode((mode == Read || mode == ReadWrite) ? 
+                  ERR_FILE_NOT_FOUND : ERR_FILE_WRITE_FAILED, fileName);
+               */
+            }
          }
       }
    }
similarity index 96%
rename from extras/CSVFileValuesParser.ec
rename to extras/CSVDataParser.ec
index 56549e9..d6f0479 100644 (file)
@@ -1,5 +1,5 @@
 public import "ecere"
-public import "CSVFile"
+public import "CSVParser"
 
 import "timeTools"
 
@@ -23,7 +23,7 @@ public class Column : struct
    }
 }
 
-public class CSVFileValuesParser : public CSVFile
+public class CSVDataParser : public CSVParser
 {
 public:
    ColumnType * columnsTypes;
@@ -35,7 +35,7 @@ public:
    void Process()
    {
       rowCount = 0;
-      CSVFile::Process();
+      CSVParser::Process();
    }
 
    bool OnRowStrings(Array<String> strings)
similarity index 87%
rename from extras/CSVFile.ec
rename to extras/CSVParser.ec
index 589db58..bd05d8a 100644 (file)
@@ -2,7 +2,18 @@
 
 public import "ecere"
 
-public struct CSVFileParameters
+// to be moved in ecere?
+public class FileHandler
+{
+   public File file;
+
+   ~FileHandler()
+   {
+      delete file;
+   }
+}
+
+public struct CSVParserParameters
 {
    char fieldSeparator;
    char valueQuotes;
@@ -12,9 +23,9 @@ public struct CSVFileParameters
    //bool checkCurlies;
 };
 
-CSVFileParameters classicParameters = { ',', '\"', 0, false };
+CSVParserParameters classicParameters = { ',', '\"', 0, false };
 
-public struct CSVFileState
+public struct CSVParserState
 {
    uint lineNum;
    uint charNum;
@@ -22,11 +33,11 @@ public struct CSVFileState
    uint fieldNum;
 };
 
-public class CSVFile : public File
+public class CSVParser : public FileHandler
 {
 public:
-   CSVFileParameters options;
-   CSVFileState info;
+   CSVParserParameters options;
+   CSVParserState info;
 
    void PrintMessage(typed_object object, ...)
    {
@@ -62,7 +73,7 @@ public:
       info.rowNum = 0;
       info.fieldNum = 0;
 
-      while(!Eof() && status)
+      while(!file.Eof() && status)
       {
          int c, offset = 0;
 
@@ -76,7 +87,7 @@ public:
             start = 0;
          }
 
-         readCount = offset + Read(&buffer[offset], 1, buffer.minAllocSize - offset);
+         readCount = offset + file.Read(&buffer[offset], 1, buffer.minAllocSize - offset);
          for(c = offset; c < readCount && status; c++)
          {
             char ch = buffer[c];