OSDN Git Service

#37287 #37353 (2.2.0.89) 新しい型定義を全大文字化。 / New typedef change to full-large letter.
[hengband/hengband.git] / src / init.h
1 /*!
2  * @file init.h
3  * @brief ゲームデータ初期化処理のヘッダファイル
4  * @date 2015/01/02
5  * @author
6  * Copyright (c) 2000 Robert Ruehlmann
7  * @details
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.
11  */
12
13 #ifndef INCLUDED_INIT_H
14 #define INCLUDED_INIT_H
15
16 #include "h-basic.h"
17
18
19 #if 0
20 /*
21  * Parse errors
22  */
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
37
38 #define PARSE_ERROR_MAX                     15
39 #endif /* 0 */
40
41
42 typedef struct header header;
43
44 typedef errr (*parse_info_txt_func)(char *buf, header *head);
45
46 /*!
47  * @struct header
48  * @brief 各初期データ用ヘッダ構造体 / Template file header information (see "init.c").  16 bytes.
49  * @details
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.
56  *
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.
60  *
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.
69  *
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.
73  */
74 struct header
75 {
76         byte v_major;           /* Version -- major */
77         byte v_minor;           /* Version -- minor */
78         byte v_patch;           /* Version -- patch */
79         byte v_extra;           /* Version -- extra */
80
81
82         u16b info_num;          /* Number of "info" records */
83
84         u16b info_len;          /* Size of each "info" record */
85
86
87         u16b head_size;         /* Size of the "header" in bytes */
88
89         STR_OFFSET info_size;           /* Size of the "info" array in bytes */
90         STR_OFFSET name_size;           /* Size of the "name" array in bytes */
91         STR_OFFSET text_size;           /* Size of the "text" array in bytes */
92         STR_OFFSET tag_size;            /* Size of the "tag" array in bytes */
93
94         void *info_ptr;
95         char *name_ptr;
96         char *text_ptr;
97         char *tag_ptr;
98
99         parse_info_txt_func parse_info_txt;
100
101         void (*retouch)(header *head);
102 };
103
104 extern errr init_info_txt(FILE *fp, char *buf, header *head,
105                           parse_info_txt_func parse_info_txt_line);
106
107 #ifdef ALLOW_TEMPLATES
108 extern errr parse_z_info(char *buf, header *head);
109 extern errr parse_v_info(char *buf, header *head);
110 extern errr parse_f_info(char *buf, header *head);
111 extern void retouch_f_info(header *head);
112 extern errr parse_k_info(char *buf, header *head);
113 extern errr parse_a_info(char *buf, header *head);
114 extern errr parse_e_info(char *buf, header *head);
115 extern errr parse_r_info(char *buf, header *head);
116 extern errr parse_d_info(char *buf, header *head);
117 extern errr parse_s_info(char *buf, header *head);
118 extern errr parse_m_info(char *buf, header *head);
119
120 /*
121  * Error tracking
122  */
123 extern int error_idx;
124 extern int error_line;
125
126 #endif /* ALLOW_TEMPLATES */
127
128
129 /*
130  * File headers
131  */
132 extern header z_head;
133 extern header v_head;
134 extern header f_head;
135 extern header k_head;
136 extern header a_head;
137 extern header e_head;
138 extern header r_head;
139 extern header p_head;
140 extern header h_head;
141 extern header b_head;
142 extern header g_head;
143
144 #endif /* INCLUDED_INIT_H */