付録 B: Typedef とマクロ
定数
#define FALSE 0 // RWBoolean 値 (defs.h)
#define TRUE 1 // RWBoolean 値 (defs.h)
#define rwnil 0 // nil ポインタ (defs.h)
#define RWTOOLS 0x700 // (実際の現在のバージョン番号)
// number) (tooldefs.h)
const RWoffset RWNIL = -1L; // RWFile にはオフセットがない
// (defs.h)
const size_t RW_NPOS = ~(size_t)0; // 配列へのインデックスが
// 見つからない (defs.h)
Typedef
typedef unsigned short RWClassID; // (defs.h) 各クラスで一意 typedef int RWBoolean; // (defs.h) TRUE または FALSE typedef unsigned char RWByte; // (defs.h) ビットフラッグ アトム typedef RWCollectable* RWCollectableP // (tooldefs.h) トークン化に必要 typedef unsigned short RWErrNo // (defs.h) エラー処理に使用 typedef long RWoffset; // (tooldefs.h) ファイルオフセットに使用 typedef unsigned long RWspace; // (tooldefs.h) ファイルレコードに使用 typedef long RWstoredValue; // (tooldefs.h) ファイルオフセットに使用 typedef void* RWvoid; // (tooldefs.h) void* の配列用
関数へのポインタ
typedef void (*RWapplyCollectable) (RWCollectable*, void*);
typedef void (*RWapplyGeneric) (void*, void*);
typedef void (*RWapplyKeyAndValue) (RWCollectable*,
RWCollectable*, void*);
typedef void (*RWauditFunction) (unsigned char, void*);
typedef void (*RWdiskTreeApply) (const char*,
RWstoredValue, void*);
typedef int (*RWdiskTreeCompare) (const char*, const char*,
size_t);
typedef RWBoolean (*RWtestGeneric) (const void*, const void*);
typedef RWBoolean (*RWtestCollectable) (const RWCollectable*,
const void*);
typedef RWBoolean (*RWtestCollectablePair) (const RWCollectable*,
constRWCollectable*,void*);
typedef RWCollectable* (*RWuserCreator) ();
Enumerations
enum RWSeverity {RWWARNING, RWDEFAULT, RWFATAL}
以下は、関連するクラスのメンバ関数やコンストラクタの動作を変更します。太字で示されている値は、デフォルト値です。
RWCString::enum stripType {leading,trailing,both} // 文字を剥ぎ取る場所
RWCString::enum caseCompare {exact, ignoreCase} // 比較中に大文字小文字
// の区別をしない
RWCString::enum scopeType {one, all} // 置換する部分文字列
// の数
RWBTreeOnDisk::enum styleMode {V6Style, V5Style} // ファイル形式
RWBTreeOnDisk::enum createMode {autoCreate, create} //(再使用,新規作成)
// ファイルの B-ツリー
RWeostream::enum Endian { LittleEndian, // コンストラクタ
BigEndian, HostEndian }
// 引数
RWLocale::enum CurrSymbol { NONE, LOCAL, INTL } // 「asString」メソッド
// で使用
RWWString::enum stripType {leading,trailing,both} // 文字を剥ぎ取る場所
RWWString::enum caseCompare {exact, ignoreCase} // 比較中に大文字小文字
// の区別をしない
RWWString::enum scopeType {one, all} // 置換する部分文字列
// の数
Tools.h++ の公開マクロ
これらのマクロは、Tools.h++ API の一部としてユーザが使用できるように、定義されています。
collect.h ファイル
// マクロの本体は記載されていない。『Tools.h++ Class Reference』のRwcollectable // およびこのマニュアルを参照。 #define RWDECLARE_ABSTRACT_COLLECTABLE(className) #define RWDEFINE_ABSTRACT_COLLECTABLE(className) #define RWDECLARE_COLLECTABLE(className) #define RWDEFINE_COLLECTABLE(className,id) #define RWDEFINE_NAMED_COLLECTABLE(className,str)
defs.h ファイル
// RWDEBUG が定義されるときに以下のように定義する。それ以外の場合は、何も定義しない。 #define RWPOSTCONDITION(a) assert( (a) != 0 ) #define RWPRECONDITION2(a,b) assert( (a) != 0 ) #define RWPOSTCONDITION2(a,b) assert( (a) != 0 ) #define RWPRECONDITION2(a,b) assert((b, (a) !=0)) #define RWPOSTCONDITION2(a,b) assert((b, (a) !=0)) #define RWASSERT(a) assert( (a) != 0 )
edefs.h ファイル
// マクロの本体は記載されていない。第 14 章「永続性」を参照。 #define RWDECLARE_PERSISTABLE_IO(CLASS,ISTR,OSTR) #define RWDECLARE_PERSISTABLE_TEMPLATE_IO(TEMPLATE, ISTR, OSTR) #define RWDECLARE_PERSISTABLE_TEMPLATE_IO_2(TEMPLATE, ISTR, OSTR) #define RWDECLARE_PERSISTABLE_TEMPLATE_IO_3(TEMPLATE, ISTR, OSTR) #define RWDECLARE_PERSISTABLE_TEMPLATE_IO_4(TEMPLATE, ISTR, OSTR) #define RWDECLARE_PERSISTABLE(CLASS) #define RWDECLARE_PERSISTABLE_TEMPLATE(TEMPLATE) #define RWDECLARE_PERSISTABLE_TEMPLATE_2(TEMPLATE) #define RWDECLARE_PERSISTABLE_TEMPLATE_3(TEMPLATE) #define RWDECLARE_PERSISTABLE_TEMPLATE_4(TEMPLATE)
epersist.h ファイル
// マクロの本体は記載されていない。第 14 章「永続性」を参照。 #define RWDEFINE_PERSISTABLE_IO(CLASS,ISTR,OSTR) #define RWDEFINE_PERSISTABLE_TEMPLATE_IO(TEMPLATE,ISTR,OSTR) #define RWDEFINE_PERSISTABLE_TEMPLATE_IO_2(TEMPLATE,ISTR,OSTR #define RWDEFINE_PERSISTABLE_TEMPLATE_IO_3(TEMPLATE,ISTR,OSTR) #define RWDEFINE_PERSISTABLE_TEMPLATE_IO_4(TEMPLATE,ISTR,OSTR) #define RWDEFINE_PERSISTABLE(CLASS) #define RWDEFINE_PERSISTABLE_TEMPLATE(TEMPLATE) #define RWDEFINE_PERSISTABLE_TEMPLATE_2(TEMPLATE) #define RWDEFINE_PERSISTABLE_TEMPLATE_3(TEMPLATE) #define RWDEFINE_PERSISTABLE_TEMPLATE_4(TEMPLATE)
strmshft.h ファイル
// 便利なマクロ #define RW_PROVIDE_DVSTREAM_INSERTER(DerivedOstream,vstreamable) #define RW_PROVIDE_DVSTREAM_EXTRACTOR(DerivedIstream,vstreamable)
tphasht.h、tvhasht.h、tphdict.h、tvhdict.h、tphmmap.h、tvhmmap.h、tphset.h、tvhset.h
の各ファイル
// 現在のコンパイラと ANSI 準拠のコンパイラ間で移植可能なコードを // 書く場合に便利。 // テンプレートを参照 #define RWDefHArgs(T) ,RWTHasher<T>,equal_to<T>
In files tpsrtvec.h, tvsrtvec.h
// 現在のコンパイラと ANSI 準拠のコンパイラ間で移植可能なコードを // 書く場合に便利。 // テンプレートを参照 #define RWDefCArgs(T) ,less<T>
Smalltalk 標準インタフェース
(RW_STD_TYPEDEFS を定義することでアクティブになる)
typedef RWBag Bag; typedef RWBagIterator BagIterator; typedef RWBinaryTree SortedCollection; typedef RWBinaryTreeIterator SortedCollectionIterator; typedef RWBitVec BitVec typedef RWCollectable Object; // All-too-common type! typedef RWCollectableDate Date; typedef RWCollectableInt Integer; typedef RWCollectableString String; typedef RWCollectableTime Time; typedef RWCollection Collection; typedef RWHashDictionary Dictionary; typedef RWHashDictionaryIterator DictionaryIterator; typedef RWIdentityDictionary IdentityDictionary; typedef RWIdentitySet IdentitySet; typedef RWOrdered OrderedCollection; typedef RWOrderedIterator OrderedCollectionIterator; typedef RWSequenceable SequenceableCollection; typedef RWSet Set; typedef RWSetIterator SetIterator; typedef RWSlistCollectables LinkedList; typedef RWSlistCollectablesIterator LinkedListIterator; typedef RWSlistCollectablesQueue Queue; typedef RWSlistCollectablesStack Stack;