この章の目次にもどる
次頁:第2章 TRON コード体系にすすむ

第1章 基本データタイプ


共通して使われる型の定義を以下に記述する。

基本データ型:ITRON共通

typedef char            B;          /* 符号付き 8ビット整数 */
typedef short           H;          /* 符号付き16ビット整数 */
typedef int             W;          /* 符号付き32ビット整数 */
typedef unsigned char   UB;         /* 符号無し 8ビット整数 */
typedef unsigned short  UH;         /* 符号無し16ビット整数 */
typedef unsigned int    UW;         /* 符号無し32ビット整数 */

typedef char            VB;         /* 不定型 8ビットデータ */
typedef short           VH;         /* 不定型16ビットデータ */
typedef int             VW;         /* 不定型32ビットデータ */

typedef void            *VP;        /* 不定型データへのポインタ */

typedef void            (*FP)();    /* 一般関数ポインタ */

以上のデータ型はITRONと共通である。

Volatile: コンパイラによる最適化禁止指定

typedef volatile W      _W;     /* 最適化禁止の符号付き 8ビット整数 */
typedef volatile H      _H;     /* 最適化禁止の符号付き16ビット整数 */
typedef volatile B      _B;     /* 最適化禁止の符号付き32ビット整数 */

typedef volatile UW     _UW;    /* 最適化禁止の符号無し 8ビット整数 */
typedef volatile UH     _UH;    /* 最適化禁止の符号無し16ビット整数 */
typedef volatile UB     _UB;    /* 最適化禁止の符号無し32ビット整数 */

typedef volatile void   _void;

修飾型

#define CONST       const       /* 変数・関数の代入禁止指定 */

#define LOCAL       static      /* モジュール(*)内でのみ使われる */
                                /* 変数・関数 */

#define EXPORT                  /* プログラム中の任意の箇所で参照  */
                                /* 可能な変数・関数の定義          */
                                /* 1個の変数・関数について EXPORT  */
                                /* 宣言はプログラム中に1箇所だけ   */
                                /* 記述                            */
#define IMPORT      extern      /* プログラム中の任意の箇所で参照  */
                                /* 可能な変数・関数の参照宣言      */
                                /* 1モジュールに1個の参照宣言で    */
                                /* EXPORT された変数・関数の使用が */
                                /* 可能                            */
#define VOID        void        /* 空の型 */
* モジュール

プログラムはソースコードをコンパイル・リンクして作成されるが、 そのソースコードは通常、 複数のソースファイルに分割して記述されている。 以降、本書ではこのソースファイル 1 個の単位をモジュールと呼ぶ。

数値型

typedef float       FLOAT;      /* 単精度(32ビット)浮動小数点 */
typedef double      DOUBLE;     /* 倍精度(64ビット)浮動小数点 */
typedef int         BOOL;       /* TRUE or FALSE */
typedef W           (*FUNCP)(); /* W 関数へのポインタ */

ブール値

typedef enum {
    False = 0, 
    True = 1
} Bool;         /* ブール値 */

ID番号

typedef W       ID;     /* ID番号 */

時間

typedef W       MSEC;   /* ミリ秒 */
typedef W       STIME;  /* システム時間 */
                        /* 1985/01/01 00:00:00 GMT からの秒数 */

文字コード

typedef UH      TC;         /* TRON 文字コード */
#define TNULL   ((TC) 0)    /* 文字列終端の文字コード値 */

エラーコード

ビッグエンディアンの場合

typedef union {
    W           err;            /* エラーコード */
    struct {
            H   eclass;         /* エラークラス */
            UH  detail;         /* 詳細エラー   */
    } c;
} ErrCode;

リトルエンディアンの場合

typedef union {
    W           err;            /* エラーコード */
    struct {
            UH  detail;         /* 詳細エラー   */
            H   eclass;         /* エラークラス */
    } c;
} ErrCode;

システムコールの関数値は以下のいずれかである。

typedef W       ERR;        /* エラーコード                       */
                            /* エラーまたは正常のみ戻す場合に使用 */
typedef W       WERR;       /* システムコール関数値               */
                            /* エラーまたは意味のある値を戻す     */
                            /* 場合に使用                         */

エラーコードとして通常は ERR を使用し、 詳細が必要な場合は ErrCode を使用する。

#define OK      (0)         /* 正常(OK) */

共通定義

#define CLR         0x0000      /* クリア指定     */
#define NOCLR       0x0008      /* ノークリア指定 */
#define DELEXIT     0x8000      /* 終了時削除指定 */

大きさ

typedef struct Size {
    H     h;    /* 幅 */
    H     v;    /* 高さ */
} SIZE;

typedef struct point {
    H     x;    /* 水平座標値 */
    H     y;    /* 垂直座標値 */
} PNT;

長方形

typedef union rect {
    struct _rect {
        H       left;       /* 左の座標値 */
        H       top;        /* 上の座標値 */
        H       right;      /* 右の座標値 */
        H       bottom;     /* 下の座標値 */
    } c;
    struct {
        PNT     lefttop;    /* 左上の点 */
        PNT     rightbot;   /* 右下の点 */
    } p;
} RECT;

ファイルへのリンク

#define L_FSNM      20    /* ファイルシステム名の長さ(文字数) */
typedef struct {
    TC    fs_name[L_FSNM];
                          /* ファイルシステム名 */
    UH    f_id;           /* ファイルID  */
    UH    atr1;           /* 属性データ1 */
    UH    atr2;           /* 属性データ2 */
    UH    atr3;           /* 属性データ3 */
    UH    atr4;           /* 属性データ4 */
    UH    atr5;           /* 属性データ5 */
} LINK;

ウィンドウ

typedef W       WID;     /* ウィンドウID */

この章の目次にもどる
次頁:第2章 TRON コード体系にすすむ