Tools.h++ 7.0 ユーザーズガイド: B - Typedef とマクロ

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.

# Typedef とマクロ | # B |

#### Constans :

    #define FALSE   0                              // RWBoolean 値 (defs.h)
    #define TRUE    1                              // RWBoolean 値 (defs.h)
    #define rwnil   0                              // NULL ポインタ (defs.h)
    #define RWTOOLS 0x700                          // (実際の現行バージョン番号)
                                                   // (tooldefs.h)
    const RWoffset RWNIL = -1L;                    // RWFile に「オフセットなし」
                                                   // (defs.h)
    const size_t RW_NPOSRW_NPOS = ~(size_t)0;      // 配列へのインデックスとして「検出されず」
                                                   // (defs.h)

#### Typedefs :

    typedef    unsigned short    RWClassID;        // (defs.h)     各クラスに固有
                                                   //
    typedef    int               RWBoolean;        // (defs.h)     TRUE または FALSE
    typedef    unsigned char     RWByte;           // (defs.h)     Bitflag 不可分
    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*             RWvoidRWvoid;     // (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)            ();

#### 列挙型

    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++ 7.0 クラスライブラリ・リファレンスマニュアル』と本書の
    // 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 の場合

    // マクロ本体は削除されます。持続性に関する節を参照してください。

    #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 の場合

    // マクロ本体は削除されます。持続性に関する節を参照してください。
    #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>

##### ファイル tpsrtvec.h、tvsrtvec.h の場合

    // 「現在」と「ANSI 準拠」の各コンパイラの間で移植可能なコードを
    // 作成する場合に便利です。
    // See templates.
    #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; // すべて非常に一般的なタイプ
    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;