メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

FIDocConverter.h

説明を見る。
00001 #ifndef _FIDOCONVERTER
00002 #define _FIDOCONVERTER
00003 #include "FIDocNode.h"
00004 #include "FITypeDesc.h"
00005 #include <set>
00006 
00007 /** @file FIDocConverter.h ドキュメントを別のドキュメントに変換する */
00008 namespace Spr{;
00009 
00010 class FIDocConverter;
00011 
00012 /** 変換のテンプレート  */
00013 class FIDocConvBase: public UTRefCount{
00014 public:
00015     //@name ノード・フィールドのマッチング.
00016     //@{
00017     /// ノードの型名
00018     virtual UTString GetType() const = 0;
00019     //@}
00020 
00021     /// 前順序変換動作
00022     virtual void Pre(FIDocConverter* ctx){}
00023     /// 後順序変換動作
00024     virtual void Post(FIDocConverter* ctx){}
00025 };
00026 inline bool operator < (const FIDocConvBase& d1, const FIDocConvBase& d2){
00027     return d1.GetType().compare(d2.GetType()) < 0;
00028 }
00029 
00030 /** 属性の移動  */
00031 class FIDocConvMove: public FIDocConvBase{
00032 public:
00033     /// 移動先のフィールド名
00034     FIString fieldTo;
00035     /// 前順序変換動作
00036     virtual void Pre(FIDocConverter* ctx);
00037 };
00038 
00039 /** ドキュメントのコンバータ    */
00040 class FIDocConverter{
00041 protected:
00042     UTRef<FIDocNodeBase> from, to, root;
00043     typedef std::multiset< UTRef<FIDocConvBase> , UTContentsLess< UTRef<FIDocConvBase> > > Convs;
00044     Convs convs;
00045     UTRef<FITypeDescDb> typeDb;
00046 public:
00047     /// タイプDBの取得
00048     FITypeDescDb* GetTypeDb(){ return typeDb; }
00049     /// タイプDBの設定  
00050     void SetTypeDb(FITypeDescDb* t) { typeDb = t; }
00051     /// 変換元のルートノードを渡し,変換を行う.
00052     void Convert(FIDocNodeBase* r);
00053     /// 変換フィルタの追加
00054     void Register(FIDocConvBase* f);
00055 public:
00056     FIDocNodeBase* GetRoot(){ return root; }
00057     /// 現在変換中の変換元ノード
00058     FIDocNodeBase* From();
00059     /// 現在変換中の変換先ノード
00060     FIDocNodeBase* To();
00061     /// 現在変換中の変換先ノードの移動
00062     void ChangeTo(FIString t);
00063     /// 現在変換中の変換先ノードの移動
00064     void UpTo();
00065     /// ノードの作成
00066     virtual FIDocNodeBase* CreateNode(FIString t);
00067 };
00068 
00069 
00070 
00071 
00072 
00073 
00074 }   //  namespace Spr
00075 #endif

Springheadに対してSun Apr 16 01:57:51 2006に生成されました。  doxygen 1.4.1