return result;
}
+#if 0
virtual bool Open(char * fileName, FileOpenMode mode)
{
bool result = false;
}
return result;
}
+#endif
virtual void Close()
{
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);
+ */
+ }
}
}
}
public import "ecere"
-public import "CSVFile"
+public import "CSVParser"
import "timeTools"
}
}
-public class CSVFileValuesParser : public CSVFile
+public class CSVDataParser : public CSVParser
{
public:
ColumnType * columnsTypes;
void Process()
{
rowCount = 0;
- CSVFile::Process();
+ CSVParser::Process();
}
bool OnRowStrings(Array<String> strings)
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;
//bool checkCurlies;
};
-CSVFileParameters classicParameters = { ',', '\"', 0, false };
+CSVParserParameters classicParameters = { ',', '\"', 0, false };
-public struct CSVFileState
+public struct CSVParserState
{
uint lineNum;
uint charNum;
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, ...)
{
info.rowNum = 0;
info.fieldNum = 0;
- while(!Eof() && status)
+ while(!file.Eof() && status)
{
int c, offset = 0;
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];