3 * @brief ゲームデータ初期化処理のヘッダファイル
6 * Copyright (c) 2000 Robert Ruehlmann
8 * This software may be copied and distributed for educational, research,
9 * and not for profit purposes provided that this copyright and statement
10 * are included in all such copies.
13 #ifndef INCLUDED_INIT_H
14 #define INCLUDED_INIT_H
23 #define PARSE_ERROR_GENERIC 1
24 #define PARSE_ERROR_OBSOLETE_FILE 2
25 #define PARSE_ERROR_MISSING_RECORD_HEADER 3
26 #define PARSE_ERROR_NON_SEQUENTIAL_RECORDS 4
27 #define PARSE_ERROR_INVALID_FLAG 5
28 #define PARSE_ERROR_UNDEFINED_DIRECTIVE 6
29 #define PARSE_ERROR_OUT_OF_MEMORY 7
30 #define PARSE_ERROR_OUT_OF_BOUNDS 8
31 #define PARSE_ERROR_TOO_FEW_ARGUMENTS 9
32 #define PARSE_ERROR_TOO_MANY_ARGUMENTS 10
33 #define PARSE_ERROR_TOO_MANY_ALLOCATIONS 11
34 #define PARSE_ERROR_INVALID_SPELL_FREQ 12
35 #define PARSE_ERROR_INVALID_ITEM_NUMBER 13
36 #define PARSE_ERROR_TOO_MANY_ENTRIES 14
38 #define PARSE_ERROR_MAX 15
42 typedef struct header header;
44 typedef errr (*parse_info_txt_func)(char *buf, header *head);
48 * @brief 各初期データ用ヘッダ構造体 / Template file header information (see "init.c"). 16 bytes.
50 * Note that the sizes of many of the "arrays" are between 32768 and
51 * 65535, and so we must use "unsigned" values to hold the "sizes" of
52 * these arrays below. Normally, I try to avoid using unsigned values,
53 * since they can cause all sorts of bizarre problems, but I have no
54 * choice here, at least, until the "race" array is split into "normal"
55 * and "unique" monsters, which may or may not actually help.
57 * Note that, on some machines, for example, the Macintosh, the standard
58 * "read()" and "write()" functions cannot handle more than 32767 bytes
59 * at one time, so we need replacement functions, see "util.c" for details.
61 * Note that, on some machines, for example, the Macintosh, the standard
62 * "malloc()" function cannot handle more than 32767 bytes at one time,
63 * but we may assume that the "ralloc()" function can handle up to 65535
64 * butes at one time. We should not, however, assume that the "ralloc()"
65 * function can handle more than 65536 bytes at a time, since this might
66 * result in segmentation problems on certain older machines, and in fact,
67 * we should not assume that it can handle exactly 65536 bytes at a time,
68 * since the internal functions may use an unsigned short to specify size.
70 * In general, these problems occur only on machines (such as most personal
71 * computers) which use 2 byte "int" values, and which use "int" for the
72 * arguments to the relevent functions.
76 byte v_major; /* Version -- major */
77 byte v_minor; /* Version -- minor */
78 byte v_patch; /* Version -- patch */
79 byte v_extra; /* Version -- extra */
82 u16b info_num; /* Number of "info" records */
84 u16b info_len; /* Size of each "info" record */
87 u16b head_size; /* Size of the "header" in bytes */
89 u32b info_size; /* Size of the "info" array in bytes */
91 u32b name_size; /* Size of the "name" array in bytes */
93 u32b text_size; /* Size of the "text" array in bytes */
95 u32b tag_size; /* Size of the "tag" array in bytes */
102 parse_info_txt_func parse_info_txt;
104 void (*retouch)(header *head);
107 extern errr init_info_txt(FILE *fp, char *buf, header *head,
108 parse_info_txt_func parse_info_txt_line);
110 #ifdef ALLOW_TEMPLATES
111 extern errr parse_z_info(char *buf, header *head);
112 extern errr parse_v_info(char *buf, header *head);
113 extern errr parse_f_info(char *buf, header *head);
114 extern void retouch_f_info(header *head);
115 extern errr parse_k_info(char *buf, header *head);
116 extern errr parse_a_info(char *buf, header *head);
117 extern errr parse_e_info(char *buf, header *head);
118 extern errr parse_r_info(char *buf, header *head);
119 extern errr parse_d_info(char *buf, header *head);
120 extern errr parse_s_info(char *buf, header *head);
121 extern errr parse_m_info(char *buf, header *head);
126 extern int error_idx;
127 extern int error_line;
129 #endif /* ALLOW_TEMPLATES */
135 extern header z_head;
136 extern header v_head;
137 extern header f_head;
138 extern header k_head;
139 extern header a_head;
140 extern header e_head;
141 extern header r_head;
142 extern header p_head;
143 extern header h_head;
144 extern header b_head;
145 extern header g_head;
147 #endif /* INCLUDED_INIT_H */