/* * epw.h - 電子ブック/EPWINGユーティリティー ヘッダーファイル * * Written by Junn Ohta (ohta@src.ricoh.co.jp). Public Domain. */ typedef unsigned char uchr; typedef unsigned long ulng; typedef unsigned char byte; typedef unsigned int word; typedef unsigned long dword; #define OK 0 #define ERR (-1) #define FALSE 0 #define TRUE 1 /* * 書籍ブロックサイズ */ #define BLKSIZ 2048 /* * 複合書籍管理情報識別子 */ #define ID_CINFO 0xff /* * 書籍管理情報ブロックの構造 */ #define ITEMS_LEN 2 /* 書籍構成要素数 */ #define RESV1_LEN 2 /* 予備領域1(書籍種別/保護情報) */ #define IDXHNDL_LEN 1 /* インデックス作成情報の取扱法 */ #define RESV2_LEN 11 /* 予備領域2 */ /* (以下構成要素数だけくり返し) */ #define ITEMID_LEN 1 /* 書籍構成要素識別子 */ #define RESV3_LEN 1 /* 予備領域3 */ #define TOPBLK_LEN 4 /* 先頭アドレス(ブロック番号) */ #define BLKS_LEN 4 /* 領域サイズ(ブロック数) */ #define IDXVALID_LEN 1 /* インデックス作成情報有効性 */ #define IDXINFO_LEN 3 /* インデックス作成情報 */ #define RESV4_LEN 2 /* 予備領域4 */ /* (くり返し終わり) */ #define DSPVALID_LEN 1 /* 表示方法初期値情報有効無効フラグ */ #define RESV5_LEN 3 /* 予備領域5 */ #define DSPLIST_LEN 1 /* 一覧表表示 */ #define DSPSTYLE_LEN 1 /* 本文表示法 */ #define RESV6_LEN 10 /* 予備領域6 */ /* * 複合検索管理情報ブロックの構造 */ #define CENTS_LEN 2 /* 複合エントリ数 */ #define CRESV1_LEN 14 /* 予備領域1 */ /* (以下エントリ数だけくり返し) */ #define CITEMS_LEN 1 /* 書籍構成要素数 */ #define CRESV2_LEN 1 /* 予備領域2 */ #define CNAME_LEN 30 /* 検索名称 */ /* (以下要素数だけくり返し) */ #define CITEMID_LEN 1 /* 書籍構成要素識別子 */ #define CRESV3_LEN 1 /* 予備領域3 */ #define CTOPBLK_LEN 4 /* 先頭アドレス(ブロック番号)*/ #define CBLKS_LEN 4 /* 領域サイズ(ブロック数) */ #define CRESV4_LEN 6 /* 予備領域4 */ /* (くり返し終わり) */ /* (くり返し終わり) */ /* * CRESV4_LENはJIS X4081(平成8年11月30日発行の第1刷)によれば5だが、 * 実際の書籍では6になっている。 */ /* * 前方参照定義 */ typedef struct info_t INFO_T; /* 書籍管理情報 */ typedef struct item_t ITEM_T; /* 書籍構成要素 */ typedef struct cinfo_t CINFO_T; /* 複合検索管理情報 */ typedef struct cent_t CENT_T; /* 複合エントリ */ typedef struct citem_t CITEM_T; /* 複合検索書籍構成要素 */ /* * 書籍管理情報 */ struct info_t { word items; /* 登録書籍数 */ byte resv1[RESV1_LEN]; /* 予備領域1 */ byte idxhndl; /* インデックス作成情報の取扱法 */ byte resv2[RESV2_LEN]; /* 予備領域2 */ ITEM_T *item; /* 書籍構成要素 */ byte dspvalid; /* 有効無効フラグ */ byte resv5[RESV5_LEN]; /* 予備領域5 */ byte dsplist; /* 一覧表表示 */ byte dspstyle; /* 本文表示法 */ byte resv6[RESV6_LEN]; /* 予備領域6 */ }; /* * 書籍構成要素 */ struct item_t { byte itemid; /* 書籍構成要素識別子 */ byte resv3[RESV3_LEN]; /* 予備領域3 */ dword topblk; /* 先頭アドレス */ dword blks; /* 領域サイズ */ byte idxvalid; /* インデックス作成情報有効性 */ dword idxinfo; /* インデックス作成情報 */ byte resv4[RESV4_LEN]; /* 予備領域4 */ CINFO_T *cinfo; /* 複合検索管理情報 */ }; /* * 複合検索管理情報 */ struct cinfo_t { word cents; /* 複合エントリ数 */ byte cresv1[CRESV1_LEN]; /* 予備領域1 */ CENT_T *cent; /* 複合エントリ */ }; /* * 複合エントリ */ struct cent_t { byte citems; /* 書籍構成要素数 */ byte cresv2[CRESV2_LEN]; /* 予備領域2 */ byte cname[CNAME_LEN]; /* 検索名称 */ CITEM_T *citem; /* 複合書籍構成要素 */ }; /* * 複合書籍構成要素 */ struct citem_t { uchr citemid; /* 書籍構成要素識別子 */ uchr cresv3[CRESV3_LEN]; /* 予備領域3 */ dword ctopblk; /* 先頭アドレス */ dword cblks; /* 領域サイズ */ uchr cresv4[CRESV4_LEN]; /* 予備領域4 */ }; /* * bread.c */ int open_book(); int close_book(); int locate_block(); int read_block(); long cur_block(); int cur_off(); byte getbyte(); word getword(); dword getdword(); long getbcd(); byte *getbytes(); INFO_T *getinfo(); void freeinfo(); /* * bwrite.c */ int open_newbook(); int close_newbook(); int locate_newblock(); int write_newblock(); long cur_newblock(); int cur_newoff(); int get_error(); void reset_error(); int putbyte(); int putword(); int putdword(); int putbcd(); int putbytes(); int putinfo();