株式会社エス・スリー・フォー

付録 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;