lib/DataStorage.hh
00001 // データ格納/ファイル出力クラス
00002 // 2011/02/20 Yuki YOKOKURA
00003 //
00004 // データを一時的に格納し,CSV/TAB区切りDATファイルとして出力します。
00005 //
00006 // Copyright (C) 2011 Yuki YOKOKURA
00007 // This program is free software;
00008 // you can redistribute it and/or modify it under the terms of the GNU General Public License
00009 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
00010 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00011 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00012 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
00013 // Besides, you can negotiate about other options of licenses instead of GPL.
00014 // If you would like to get other licenses, please contact us<yuki@katsura.sd.keio.ac.jp>.
00015 
00016 #ifndef DATASTORAGE
00017 #define DATASTORAGE
00018 
00019 #include <fstream>
00020 
00021 namespace ARCS {        // ARCS名前空間
00022         enum SaveType {
00023                 STRG_FORMAT_CSV,        // CSVファイルとして保存
00024                 STRG_FORMAT_DAT,        // DAT(タブ区切り)ファイルとして保存
00025         };
00026         
00027         class DataStorage {
00028                 private:
00029                         DataStorage(const DataStorage&);                                        // コピーコンストラクタ使用禁止
00030                         const DataStorage& operator=(const DataStorage&);       // 代入演算子使用禁止
00031                         const unsigned int N;           //              格納する変数の数
00032                         const unsigned long Ts;         // [ns] サンプリング時間
00033                         const double Tend;                      // [s]  保存する時間
00034                         const unsigned long tlen;       //              保存する要素数
00035                         double** Data;                          //              データ格納用変数
00036                         unsigned long count;            //              要素数カウンタ
00037                 
00038                 public:
00039                         DataStorage(const unsigned int NumOfVar, const unsigned long SmplTime, const double SaveTime);
00040                         // コンストラクタ NumOfVar;変数の数,SmplTime;[ns] 制御周期,SaveTime;[s] 保存時間
00041                         ~DataStorage();                                         // デストラクタ
00042                         void PutData(double* Value, unsigned int NumOfVar);     // データの格納 Value;データ値,NumOfVar;変数の数
00043                         bool SaveDataFile(const char* const FileName, const SaveType FileType);
00044                         // CSV/DATファイルの保存 FileName;ファイル名,FileType;ファイル形式,戻り値;true=完了,false=失敗
00045                         void ClearCounter(void);                        // 要素数カウンタをクリア
00046         };
00047 }
00048 
00049 #endif
00050 
00051 
00052 
 All Classes Files