Download List

Project Description

CLDAQ is a class library using C++ to support construction of data acquisition system. CLDAQ provide you with function, network-distributed environment (off course network-undistributed also), object persistency, HW(CAMAC,VME,RS232C,GPIB,etc) access and so

==

System Requirements

System requirement is not defined

Released at 2003-12-09 01:03
CLDAQ 1.11.0 (1 files Hide)

Release Notes

うーん,年内最後の更新かもしんない.
どうしても締切まもれないだめな人です.



おもな更新内容
----
DataRecordやDataSectionに ==(),!=() を実装しました.
if (record=="TAG") { みたいな使い方できます
----
ObjectStreamの[]とかSize()とかを実装
これはかなり大きな仕事でした
element=stream["TAG"]["TAG"]["TAG"]["TAG"];
element=stream[0][1][2][3];
element=stream[0]["TAG"][3]["TAG"];
とか,
for (Tint i = 0;i<stream.Size();i++) {
record=stream[ i ];
}
----
上のアクセスを高速化するためのいくつかのテクニック
----
正規表現関係のバクフィックス
std::stringのバグだと信じます
----
システムロガーの実装
とかゆうと語弊があるね.
システムロガーにメッセージ送信を安易に解決しました.
Tinfo << "Message information" << Tendl;
Temerg << "Emergency Message" << Tendl;
とか,T????にメッセージわたすだけ.シスログごとこわしゃしないか
不安だったけど,だいじょうぶみたいです.
----
オブジェクトフィルターの実装
このへんだいぶいじくった.
入力と出力のフィルタを別扱いにしたのが設計上の大きな変更
圧縮/解凍フィルターを用意しました
データ形状にもよりますが2〜3倍の性能向上を確認しました.
理由の全ては圧縮率にあって,フィルタなしのレコードに対して
実に99%の圧縮率!2GBのレコードは10MB程度まで圧縮されます.
I/Oの時間をぎりぎりまで少なくしたわけです.
----
GPLになるべく厳密に準拠するようにしました.



Changelog

2003-12-09 00:20 goiwai

* .cvsignore (1.7, CLDAQ-1-11-00): [no log message]

2003-12-08 16:06 goiwai

* source/run/TRunManager.cc (1.11, CLDAQ-1-11-00):
著作権情報の表示を行なうようにしました.
完全には理解していないにせよなるべくGPLに準拠しようと思いまして.

2003-12-08 16:05 goiwai

* source/commands/: TPrintWarrantyCommand.cc (1.1),
TPrintWarrantyCommand.hh (1.1) (utags: CLDAQ-1-11-00):
著作権や保証の情報を表示します.
かっこだけでなくなるべく厳密にGPLに準拠しようと思いまして.

2003-12-08 13:26 goiwai

* examples/software/bench/: GNUmakefile (1.2), constants.h (1.1),
ifilebench.cc (1.2), ifilterbench.cc (1.2), ofilebench.cc (1.2),
ofilterbench.cc (1.2) (utags: CLDAQ-1-11-00): [no log message]

2003-12-08 13:26 goiwai

* examples/software/bench/: sysread.cc (1.1), syswrite.cc (1.1)
(utags: CLDAQ-1-11-00): 4kBずつ read/write するプログラム
よけいなことはいっさいしないです. 評価用にどうぞ.

2003-12-07 17:17 goiwai

* source/persistency/TDecompressObjectFilter.cc (1.2,
CLDAQ-1-11-00):
ファイルの終端間際でデコードに失敗するバグを修整しました.

2003-12-07 15:20 goiwai

* examples/software/: GNUmakefile (1.4, CLDAQ-1-11-00),
bench/GNUmakefile (1.1), bench/ifilebench.cc (1.1),
bench/ifilterbench.cc (1.1), bench/ofilebench.cc (1.1),
bench/ofilterbench.cc (1.1):
ベンチーマーク用プログラムを追加しました.
測定をなるべく厳密に行なえるようにtest以下のプログラムを若干修整したも
のです.

2003-12-07 14:44 goiwai

* source/system/TBenchmark.hh (1.5, CLDAQ-1-11-00):
非constのGetSystemTimer()とGetSystemClock()を追加しました.

2003-12-07 14:07 goiwai

* source/datarecord/TDataRecord.cc (1.9, CLDAQ-1-11-00):
Test()が作るデータを4kBちょうどにしました.

2003-12-06 20:21 goiwai

* examples/vme/st02/GNUmakefile (1.10, CLDAQ-1-11-00):
dumpruninfoを追加

2003-12-06 20:18 goiwai

* examples/vme/st02/st02OFFdumpruninfo.cc (1.1, CLDAQ-1-11-00):
レコードのラン情報のみ出力します.

2003-12-06 20:13 goiwai

* examples/vme/st02/st02OFFctig-all.cc (1.1, CLDAQ-1-11-00):
st02OFFctigの一括処理プログラムです.

2003-12-06 20:13 goiwai

* examples/: vme/st02/GNUmakefile (1.9), rs232c/rs01/rs01setup
(1.13, CLDAQ-1-11-00): [no log message]

2003-12-06 20:13 goiwai

* examples/vme/st02/st02OFFctig.cc (1.3, CLDAQ-1-11-00):
レコードのパラメーターをチェックするようにしました.

2003-12-06 20:09 goiwai

* tests/compress.cc (1.5, CLDAQ-1-11-00): [no log message]

2003-12-06 20:08 goiwai

* tests/deserialize.cc (1.1, CLDAQ-1-11-00):
デシリアライズのチェック.
デシリアライズしたデータレコードが元のデータレコードと等価かチェックし
ています.

2003-12-06 20:06 goiwai

* tests/serialize.cc (1.1, CLDAQ-1-11-00):
データレコードのシリアライズ機能のテスト.
ストリーマブルオブジェクトに特化したファイルコピーです.

2003-12-06 20:04 goiwai

* tests/: ifilter.cc (1.1), ifilterdump.cc (1.1) (utags:
CLDAQ-1-11-00):
解凍フィルタを通して保存したデータレコードを読みこみます.

2003-12-06 20:04 goiwai

* tests/ofilter.cc (1.1, CLDAQ-1-11-00):
圧縮フィルタを通してデータレコードの保存をします.

2003-12-06 20:03 goiwai

* tests/decompress.cc (1.4, CLDAQ-1-11-00):
バッファの取り方がへんてこだったので直しました.

2003-12-06 20:02 goiwai

* tests/ofile.cc (1.4, CLDAQ-1-11-00): たいした修整じゃないのです.

2003-12-06 20:00 goiwai

* tests/GNUmakefile (1.10, CLDAQ-1-11-00): いろいろ追加

2003-12-06 19:59 goiwai

* source/datarecord/: TDataElement.cc (1.7, CLDAQ-1-11-00),
TDataElement.hh (1.8, CLDAQ-1-11-00), TDataRecord.cc (1.8),
TDataRecord.hh (1.8, CLDAQ-1-11-00), TDataSection.cc (1.7,
CLDAQ-1-11-00), TDataSection.hh (1.8, CLDAQ-1-11-00),
TDataSegment.cc (1.7, CLDAQ-1-11-00), TDataSegment.hh (1.8,
CLDAQ-1-11-00), TStreamableObject.hh (1.6, CLDAQ-1-11-00):
Serialize(Tvoid*) -> Serialize(const Tvoid*)に変更しました.
Deserialize(const Tvoid*)を追加しました.
手抜きの実装なので,バッファオーバーフローの可能性があります.
Reallocate()とかするような仕組みが必要です.

2003-12-06 19:56 goiwai

* source/persistency/: TInputObjectFile.cc (1.8),
TInputObjectFile.hh (1.7), TInputObjectFileOnline.cc (1.3),
TInputObjectFileOnline.hh (1.4), TInputObjectSharedMemory.cc
(1.4), TInputObjectSharedMemory.hh (1.5), TInputObjectSocket.cc
(1.4), TInputObjectSocket.hh (1.5), TInputObjectStream.cc (1.4),
TInputObjectStream.hh (1.6), TObjectStream.cc (1.4),
TObjectStream.hh (1.5), TOutputObjectFile.cc (1.5),
TOutputObjectFile.hh (1.5), TOutputObjectSharedMemory.cc (1.4),
TOutputObjectSharedMemory.hh (1.5), TOutputObjectSocket.cc (1.4),
TOutputObjectSocket.hh (1.5), TOutputObjectStream.cc (1.4),
TOutputObjectStream.hh (1.5) (utags: CLDAQ-1-11-00):
フィルタ関連の修整と Read(),Write()の戻り値の修整です.
Read()もWrite()も処理したレコードサイズを返します.
フィルタがある場合も同様です.
それぞれのストリームのDataSizeの扱いですが,これは扱ったレコードサイズ
でなく扱ったファイルやソケットなどのサイズになります.レコードサイズと
一致するとは限りません.

2003-12-06 19:52 goiwai

* source/persistency/TObjectFilter.hh (1.5, CLDAQ-1-11-00):
入力と出力のフィルターを分散させました.
これによって,TobjectFilterは不要なものになってしまいましたが,拡張可能
性がある部分なのでのこしておきます.

2003-12-06 19:50 goiwai

* source/persistency/: TCompressObjectFilter.cc (1.5),
TCompressObjectFilter.hh (1.6) (utags: CLDAQ-1-11-00):
可逆な圧縮フィルターです.
手抜きの実装なのでまだファイルにしか対応していませんが,2倍以上速度性能
が向上します.

2003-12-06 19:49 goiwai

* source/persistency/: TCompressObjectFilter.cc (1.4),
TCompressObjectFilter.hh (1.5): : ENTER LOG. LINES BEGINNING
WITH
`CVS:' are removed automatically

2003-12-06 19:48 goiwai

* source/persistency/: TDecompressObjectFilter.cc (1.1),
TDecompressObjectFilter.hh (1.1, CLDAQ-1-11-00):
可逆な圧縮フィルタです.
手抜きの実装なので,まだファイルにしか対応していませんが,2倍以上速度性
能が向上します.

2003-12-06 19:18 goiwai

* source/persistency/: TInputObjectFilter.cc (1.1),
TInputObjectFilter.hh (1.1), TOutputObjectFilter.cc (1.1),
TOutputObjectFilter.hh (1.1) (utags: CLDAQ-1-11-00):
入力フィルターと出力フィルターを別扱いにしました.
これらは純粋仮想関数Filtering()を含みます.

2003-12-06 19:13 goiwai

* source/system/: TSystemLogging.cc (1.5), TSystemLogging.hh (1.6)
(utags: CLDAQ-1-11-00): TSystemLogging& operator=() -> const
TSystemLogging& operator=() に変更しました.

2003-12-06 19:12 goiwai

* source/system/Tsyslog.h (1.2, CLDAQ-1-11-00):
システムロガーとやりとりをします. CLDAQ標準

2003-12-05 14:22 goiwai

* tests/regex3.cc (1.1, CLDAQ-1-11-00):
HTMLファイルからリンクを抜きだします.
厳密な一致は行なってません.

2003-12-05 08:20 goiwai

* source/system/: Tglobals.h (1.7), Ttypes.h (1.16) (utags:
CLDAQ-1-11-00): DEBUGのときなんかにわりと便利な CLDAQ_DEBUG()
マクロあたりをのちょい修整.

2003-12-05 08:19 goiwai

* source/system/: TSystemLogging.cc (1.4), TSystemLogging.hh (1.5):
システムロガーにメッセージ送信するための部品です.
ここでexternするとリンクできないといって怒られるので
Tsyslog.hというファイルでextern宣言しています.

2003-12-05 08:18 goiwai

* source/system/Tsyslog.h (1.1):
ostream風にシステムロガーにメッセージを送信できる
TemergやTinfoなどがextern宣言されています. Tinfo << "message" <<
Tendl; とかすればロガーにメッセージ送信します.

2003-12-05 08:16 goiwai

* tests/syslog.cc (1.1, CLDAQ-1-11-00):
ostream風にシステムロガーにメッセージを送信します.

2003-12-03 14:33 goiwai

* tests/.cvsignore (1.1, CLDAQ-1-11-00): *.drec, *.html, CLDAQ.last
を無視リストに追加

2003-12-03 14:31 goiwai

* .cvsignore (1.6): docs を追加

2003-12-03 14:30 goiwai

* .cvsignore (1.5): ChangeLog*, tmp, lib, bin
を無視リストに追記しました.

2003-12-03 14:24 goiwai

* .cvsignore (1.4): [no log message]

2003-12-02 07:22 goiwai

* ChangeLog (1.16), ChangeLog (1.17), .cvsignore (1.3): [no log
message]

2003-12-01 15:42 goiwai

* ChangeLog (1.15): [no log message]

2003-12-01 11:30 goiwai

* ChangeLog (1.14): [no log message]

2003-12-01 10:40 goiwai

* .cvsignore (1.1), ChangeLog (1.13), .cvsignore (1.2): [no log
message]

2003-11-29 23:44 goiwai

* tests/: compress.cc (1.4), ifile2.cc (1.2, CLDAQ-1-11-00): [no
log message]

2003-11-27 16:35 goiwai

* source/commands/: TSleepCommand.cc (1.7), TWaitCommand.cc (1.3)
(utags: CLDAQ-1-11-00): [no log message]

2003-11-27 16:34 goiwai

* source/persistency/: TInputObjectFile.cc (1.7), TObjectFile.cc
(1.7, CLDAQ-1-11-00):
TInputObjectFile::operator[](index)の挙動がおかしかったので直しました.
そしてちょっとだけ高速化しました.
これであらかたバグはつぶしたと思うんですけど...

2003-11-27 15:30 goiwai

* source/system/Tsplash.h (1.5, CLDAQ-1-11-00):
意味はないけど画像を変更しました.

2003-11-27 13:34 goiwai

* tests/regex2.cc (1.2, CLDAQ-1-11-00): [no log message]

2003-11-27 09:10 goiwai

* tests/GNUmakefile (1.9): [no log message]

2003-11-27 09:10 goiwai

* tests/regex2.cc (1.1): 正規表現を解釈する TRegularExpression
の使用例その2 サブマッチの取扱いなんかをやってます.

2003-11-27 08:42 goiwai

* source/system/TUtilities.cc (1.4, CLDAQ-1-11-00):
GetBaseName(),GetDirectoryName(),で使ってた std::string::copy
にはどう もバグ入りのようですので, strncpy でごまかしました.

2003-11-26 04:13 goiwai

* source/commands/: TExecuteCommand.cc (1.6, CLDAQ-1-11-00),
TWaitCommand.cc (1.2): [no log message]

2003-11-25 23:39 goiwai

* source/commands/TExecuteCommand.cc (1.5):
mutexで排他制御しないといけませんね.ちょっと謎です.

2003-11-25 22:43 goiwai

* source/run/TRunManager.cc (1.10):
/system/waitコマンドを追加しました.

2003-11-25 22:43 goiwai

* source/commands/TExecuteCommand.cc (1.4):
とりあえず,ループ時の問題を解消しました.
まだ満足に動きません.特にスリープするようなコマンドに対して.

2003-11-25 22:41 goiwai

* source/commands/: TWaitCommand.cc (1.1), TWaitCommand.hh (1.1,
CLDAQ-1-11-00): まだ作りかけですが.
手打ち入力だと動くんですけど,マクロとして実行すると,ずっとスリープします.

2003-11-25 14:09 goiwai

* source/commands/TSleepCommand.cc (1.6):
Threadといっしょにスリープしてしまう問題に終止符.

2003-11-25 07:41 goiwai

* tests/: GNUmakefile (1.8), ifile2.cc (1.1):
ifile2.ccを追加しました.
もうひとつのストリーム(今のとこファイルに特化)へのアクセス方法を示す例
題です.

2003-11-25 07:38 goiwai

* source/persistency/: TInputObjectFile.cc (1.6), TObjectFile.cc
(1.6):
Size(),operator[int]を使ったときに異常に遅くなる問題を解消しました.

ストリームからの読みだしサイズが実際のファイルサイズと一致しない問題を
解決しました.

2003-11-24 16:06 goiwai

* source/persistency/: TInputObjectFile.cc (1.5),
TInputObjectFile.hh (1.6): operator[]( const Tstring& id ) と
operator[]( Tint index ) を実装しま した. stream["TAG"] や
stream[index] でレコードが取りだせます.

2003-11-24 16:04 goiwai

* source/persistency/: TObjectFile.cc (1.5), TObjectFile.hh (1.6,
CLDAQ-1-11-00): 以下のメンバ関数を追加しました.
このへんはオフラインむけの関数と考えて下さい.
ソケットやメモリに対してこのへんを実装するのは骨が折れそうなので,ファ
イルのみへの実装とします.

Tint GetStreamSize() const;
ストリームの全長をバイト単位で返します.

Tint Size() const; ストリームに含まれるレコードの数を返します.

Tint FindDataRecord( const Tstring& id, Tint offset = 0 ) const;
Tint Find( const Tstring& id, Tint offset = 0 ) const;
IDに一致するレコード位置を返します.そのときオフセットもその位置になります.

Tint FindDataRecord( Tint index, Tint offset = 0 ) const; Tint
Find( Tint index, Tint offset = 0 ) const;
index番目のレコード位置を返します.そのときオフセットもその位置になります.

2003-11-24 15:57 goiwai

* source/datarecord/TDataElement.hh (1.7):
Size()メンバ関数を追加しました.
抱えているプリミティブ型の数を返します.

2003-11-24 15:56 goiwai

* source/datarecord/TDataSegment.hh (1.7):
Size()メンバ関数を追加しました.
抱えているDataElementの数を返します.

2003-11-24 15:56 goiwai

* source/datarecord/TDataSection.hh (1.7):
Size()メンバ関数を追加しました.
抱えているDataSegmentの数を返します.

2003-11-24 15:55 goiwai

* source/datarecord/TStreamableObject.hh (1.5):
Size()を純粋仮想関数として追加しました.

2003-11-24 15:54 goiwai

* source/datarecord/TDataRecord.hh (1.7):
Size()メンバ関数を追加しました.
抱えているDataSectionの数を返します.

2003-11-22 22:54 goiwai

* config/scripts/cldaq-config (1.4, CLDAQ-1-11-00): [no log
message]

2003-11-06 14:56 goiwai

* config/scripts/projectbuilder (1.4, CLDAQ-1-11-00):
表示されるコメントがおかしかったので直しました.

2003-11-05 05:25 goiwai

* source/modules/: TVmeDaughterBoardMemoryModule.cc (1.5),
TVmeDaughterBoardMemoryModule.hh (1.5) (utags: CLDAQ-1-11-00):
コメントうっておきました

2003-11-05 02:02 goiwai

* source/modules/TVmeDaughterBoardMemoryModule.cc (1.4):
コメントをうっておきました

2003-11-05 02:02 goiwai

* source/system/Ttypes.h (1.15): バージョン番号変更

2003-11-04 21:15 goiwai

* examples/vme/st02/st02setup (1.7, CLDAQ-1-11-00): [no log
message]

2003-11-04 21:03 goiwai

* source/datarecord/: TDataElement.cc (1.6), TDataElement.hh (1.6),
TDataRecord.cc (1.7), TDataRecord.hh (1.6), TDataSection.cc
(1.6), TDataSection.hh (1.6), TDataSegment.cc (1.6),
TDataSegment.hh (1.6):
==演算子と!=演算子を実装しました.具体的には if ( record ==
"String" ) { hoeghoge; } のような使い方が出来ます.単純に theID
メンバとを比較して結果を返します.

2003-11-04 21:01 goiwai

* examples/vme/st02/: GNUmakefile (1.8), st02OFFdump.cc (1.1,
CLDAQ-1-11-00): CCDのデータ部分のみをダンプします.

2003-11-04 19:43 goiwai

* examples/vme/st02/st02setup (1.6):
アップデートサイクルを変更しました

2003-11-04 16:40 goiwai

* source/modules/: TCamacCrateController.hh (1.5), TCamacModule.cc
(1.4), TCamacModule.hh (1.5) (utags: CLDAQ-1-11-00):
CAMACドライバへインターフェース部分である CamacDriverInterface
の名前 を TCamacDriverInterface に変更しました.
またこの型をTCamacModuleクラス内部に閉じ込めました.
その他,文法的に無意味な部分を修整しました.手元にハードがないので,動作
確認していませんが,もし動かなくなるようならこの部分が原因です.

2003-11-03 22:33 goiwai

* ChangeLog (1.12): [no log message]