CXCORE リファレンス マニュアル
- 基本構造体(Basic Structures)
- 配列操作(Operations on Arrays)
- 動的構造体(Dynamic Structures)
- 描画関数(Drawing Functions)
- データ永続性と実行時型情報(Data Persistence and RTTI)
- ファイルストレージ(File Storage)
- データの書き込み(Writing Data)
- データの読み込み(Reading Data)
- 実行時型情報と汎用関数(RTTI and Generic Functions)
- その他の関数(Miscellaneous Functions)
- エラーハンドリングとシステム関数(Error Handling and System Functions)
データ永続性と実行時型情報(Data Persistence and RTTI)
実行時型情報と汎用関数(RTTI and Generic Functions)
CvTypeInfo
型情報
typedef int (CV_CDECL *CvIsInstanceFunc)( const void* struct_ptr ); typedef void (CV_CDECL *CvReleaseFunc)( void** struct_dblptr ); typedef void* (CV_CDECL *CvReadFunc)( CvFileStorage* storage, CvFileNode* node ); typedef void (CV_CDECL *CvWriteFunc)( CvFileStorage* storage, const char* name, const void* struct_ptr, CvAttrList attributes ); typedef void* (CV_CDECL *CvCloneFunc)( const void* struct_ptr ); typedef struct CvTypeInfo { int flags; /* 使用されない */ int header_size; /* sizeof(CvTypeInfo) */ struct CvTypeInfo* prev; /* リスト内で一つ前に登録された型 */ struct CvTypeInfo* next; /* リスト内で一つ後に登録された型 */ const char* type_name; /* ファイルストレージに書き込まれた型の名前 */ /* メソッド */ CvIsInstanceFunc is_instance; /* 渡されたオブジェクトがその型に属するかをチェックする */ CvReleaseFunc release; /* オブジェクトを解放する(メモリなど) */ CvReadFunc read; /* ファイルストレージからオブジェクトを読み込む */ CvWriteFunc write; /* ファイルストレージにオブジェクトを書き込む */ CvCloneFunc clone; /* オブジェクトのコピーを生成する */ } CvTypeInfo;
構造体CvTypeInfoは,標準型もしくはユーザ定義型のいずれかに関する情報を含む. その型のインスタンスは,対応するCvTypeInfo構造体へのポインタを持つ可能性がある. どのような場合でも,関数cvTypeOfを使うことで,与えられたオブジェクトの型情報を見つけることができる. また別の方法として,オブジェクトをファイルストレージから読み込む時に使うcvFindType を用いて型の名前から見つけることもできる. ユーザは新しい型をcvRegisterTypeを使って,型情報構造体を型リストの先頭に登録できる. このように,一般的な標準の型から特別な型を作成し,基本的なメソッドをオーバーライドすることが可能である.
RegisterType
新しい型を登録する
void cvRegisterType( const CvTypeInfo* info );
- info
- 型情報構造体.
関数cvRegisterTypeは,infoに記述された新しい型を登録する. この関数は構造体のコピーを作成するので,ユーザは関数呼び出し後にその構造体を削除しなければならない.
UnregisterType
型の登録を取り消す
void cvUnregisterType( const char* type_name );
- type_name
- 登録を取り消す型の名前.
関数cvUnregisterTypeは,指定した名前の型の登録を取り消す. もしその名前が不明であれば,cvTypeOfを使って型のインスタンスから探すか, もしくはcvFirstTypeから型リストを順に見て型情報を探し, cvUnregisterType(info->type_name)を実行することで取り消すことができる.
FirstType
型リストの先頭を返す
CvTypeInfo* cvFirstType( void );
関数cvFirstTypeは,登録されている型のリストの先頭のものを返す. CvTypeInfo構造体のprevと nextフィールドを使うことで,リストをすべて走査できる.
FindType
名前から型を見つける
CvTypeInfo* cvFindType( const char* type_name );
- type_name
- 型の名前.
関数cvFindTypeは,登録された型を名前で探す. NULLを返した場合,指定した名前の型は存在しない.
TypeOf
オブジェクトの型を返す
CvTypeInfo* cvTypeOf( const void* struct_ptr );
- struct_ptr
- オブジェクトへのポインタ.
関数cvTypeOfは,与えられたオブジェクトの型を見つける. 登録された型のリストを走査し,それぞれの型情報構造体の関数/メソッドis_instanceを呼び, それらの一つが非0を返すか,すべてのリストを走査し終えるまで繰り返す.後者の場合,この関数はNULLを返す.
Release
オブジェクトを解放する
void cvRelease( void** struct_ptr );
- struct_ptr
- オブジェクトのポインタのポインタ.
関数cvReleaseは,与えられたオブジェクトの型を見つけ,与えられたポインタのポインタを引数にreleaseを呼ぶ.
Clone
オブジェクトのコピーを作成する
void* cvClone( const void* struct_ptr );
- struct_ptr
- コピーするオブジェクト.
関数cvCloneは,与えたオブジェクトの型を見つけ,渡されたオブジェクトを引数にcloneを呼ぶ.
Save
オブジェクトをファイルに保存する
void cvSave( const char* filename, const void* struct_ptr,
const char* name=NULL,
const char* comment=NULL,
CvAttrList attributes=cvAttrList());
- filename
- ファイル名.
- struct_ptr
- 保存するオブジェクト.
- name
- オブジェクト名(オプション).NULLの場合,名前はfilenameから生成される.
- comment
- ファイルの最初に置かれるコメント(オプション).
- attributes
- cvWriteに渡される属性(オプション).
関数cvSaveは,オブジェクトをファイルに保存する. これは,cvWriteへの簡単なインタフェースを提供する.
Load
オブジェクトをファイルから読み込む
void* cvLoad( const char* filename, CvMemStorage* memstorage=NULL,
const char* name=NULL, const char** real_name=NULL );
- filename
- ファイル名.
- memstorage
- CvSeqやCvGraph などの動的構造体のためのメモリストレージ.行列や画像には用いられない.
- name
- オブジェクト名(オプション).NULLの場合,ファイルストレージにある最初のトップレベルオブジェクトが読み込まれる.
- real_name
- 読み込まれたオブジェクトの名前が代入される出力パラメータ(オプション)name=NULLの場合に役立つ.
関数cvLoadは,ファイルからオブジェクトを読み込む. これはcvReadへの簡単なインタフェースを提供する. オブジェクトが読み込まれた後,ファイルストレージは閉じられて一時的なバッファは全て消去される. 従って,シーケンスや輪郭,グラフなどの動的構造体を読み込むためには,この関数に正しい出力先メモリストレージを与える必要がある.