/*
* 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();
syntax highlighted by Code2HTML, v. 0.9.1