00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __EXCFILE_H
00025 #define __EXCFILE_H
00026
00027 #include <iostream>
00028 #include <fstream>
00029 #include <string>
00030 #include <vector>
00031
00032 #include "ExDefine.h"
00033
00034
00035 #define FILE_EMPTY 0
00036 #define FILE_CONSOLE 1
00037 #define FILE_COMMAND 2
00038 #define FILE_SET 3
00039 #define FILE_INTERFACE 4
00040 #define FILE_PARTICULE 5
00041 #define FILE_BATCH 6
00042 #define FILEUNKNOWN 7
00043
00044 enum { RO, WO, WOA, RW, RWA };
00045
00046 using namespace std;
00047
00048 class ExCFileDataAction {
00049 private:
00050 string action;
00051 int command;
00052 string param;
00053 public:
00054 ExCFileDataAction () {};
00055 ExCFileDataAction (string s, int c) { action = s; command = c; };
00056 void setAction (string s) { action = s; };
00057 string getAction (void) { return action; };
00058
00059 void setCommand (int c) { command = c; };
00060 int getCommand (void) { return command; };
00061
00062 void setParam (string p) { param = p; };
00063 string getParam (void) { return param; };
00064
00065 void setActionCommand (string s, int c) { action = s; command = c; };
00066 void setActionCommand (string s, int c, string p) { action = s; command = c; param = p; };
00067 };
00068
00069 class ExCFileData {
00070 private:
00071 int type;
00072 vector<ExCFileDataAction> content;
00073 public:
00074 ExCFileData () { type = FILE_EMPTY; };
00075 ExCFileData (int t, vector<ExCFileDataAction> s) { type = t; content = s; };
00076 void setType (int t) { type = t; };
00077 int getType (void) { return type; };
00078 void setContent (vector<ExCFileDataAction> s) { content = s; };
00079 void addElement (ExCFileDataAction s) { content.push_back (s); }
00080 vector<ExCFileDataAction> getContent (void) { return content; };
00081 };
00082
00083 class ExCFile {
00084 protected:
00085 string filename;
00086 ios_base::openmode mode;
00087 public:
00088 ExCFile () {};
00089 ExCFile (string s) { filename = s; };
00090 ExCFile (string s, int m) { filename = s, setOpenMode (m); };
00091 virtual ~ExCFile ();
00092 bool open (void);
00093 bool close (void);
00094 void setOpenMode (int);
00095 ios_base::openmode getOpenMode (int);
00096
00097 void setFileName (string s) { filename = s; };
00098 std::string getFileName (void) { return filename; };
00099
00100 bool exist (void);
00101 vector<std::string> getContent (void);
00102 bool add (std::string);
00103 bool addLine (void);
00104 };
00105
00106 class ExCFileReader : public ExCFile {
00107 private:
00108 ExCFileData *file_data;
00109 public:
00110 ExCFileReader () : ExCFile () { file_data = new ExCFileData; };
00111 ExCFileReader (string);
00112 ExCFileData getContent (void);
00113 };
00114
00115 class ExCFileWriter : public ExCFile {
00116 public:
00117 ExCFileWriter () : ExCFile () {};
00118 ExCFileWriter (string);
00119 void setContent (ExCFileData);
00120 };
00121
00122 #endif // __EXCFILE_H