#define MAX_OPENING_SEQUENCE 20
#define MAX_PATTERN 200
-char *patternfile = PATTERNFILE;
+small_short pattern_data[MAX_PATTERN_DATA];
+
+/* minimal ShowMessage to avoid dependency on extraneous display code */
+static void
+Dummy_ShowMessage(char *s)
+{
+ printf("%s\n", s);
+}
+static struct display dummydsp = {
+ .ShowMessage = Dummy_ShowMessage,
+};
+struct display *dsp = &dummydsp;
#define is_digit(c) (((c) >= '0') && ((c) <= '9'))
#define is_alpha(c) ((((c) >= 'a') && ((c) <= 'z')) \
void
-ReadOpeningSequences (short *pindex)
-
+ReadOpeningSequences (short *pindex, const char* patternfile)
{
FILE *fd;
char s[256];
short max_pattern = 0;
short max_opening_sequence = 0;
- if ((fd = fopen (patternfile, "r")) == NULL)
- fd = fopen ("gnushogi.pat", "r");
+ fd = fopen (patternfile, "r");
- if (fd != NULL)
- {
- *pindex = 0;
+ if (fd == NULL) {
+ sprintf(s, "no pattern file '%s'", patternfile);
+ dsp->ShowMessage(s);
+ return;
+ }
+
+ *pindex = 0;
- while (fgets (s, 256, fd) != NULL)
+ while (fgets (s, 256, fd) != NULL)
+ {
+ if (*s == '#')
{
- if (*s == '#')
+ /* comment, skip line */
+ }
+ else if (is_alpha(*s))
+ {
+ if (max_opening_sequence++ > 0)
{
- /* comment, skip line */
+ pattern_data[(*pindex)++] = END_OF_PATTERNS;
}
- else if (is_alpha(*s))
- {
- if (max_opening_sequence++ > 0)
- {
- pattern_data[(*pindex)++] = END_OF_PATTERNS;
- }
- pattern_data[(*pindex)++] = ValueOfOpeningName(s);
+ pattern_data[(*pindex)++] = ValueOfOpeningName(s);
+ }
+ else
+ {
+ if (ScanPattern(s, pindex))
+ {
+ dsp->ShowMessage("error in pattern sequence...");
+ exit(1);
}
else
{
- if (ScanPattern(s, pindex))
- {
- ShowMessage("error in pattern sequence...");
- exit(1);
- }
- else
- {
- max_pattern++;
- }
+ max_pattern++;
}
}
+ }
- pattern_data[(*pindex)++] = END_OF_PATTERNS;
- pattern_data[(*pindex)++] = END_OF_SEQUENCES;
+ pattern_data[(*pindex)++] = END_OF_PATTERNS;
+ pattern_data[(*pindex)++] = END_OF_SEQUENCES;
- sprintf(s,
- "Pattern: %d bytes for %d sequences with %d patterns.\n",
- *pindex, max_opening_sequence, max_pattern);
- ShowMessage(s);
+ sprintf(s,
+ "Pattern: %d bytes for %d sequences with %d patterns.\n",
+ *pindex, max_opening_sequence, max_pattern);
+ dsp->ShowMessage(s);
- fclose(fd);
- } else {
- sprintf(s, "no pattern file '%s'", patternfile);
- ShowMessage(s);
- }
+ fclose(fd);
}
void
-WriteOpeningSequences (short pindex)
+WriteOpeningSequences (short pindex, const char* patternincfile)
{
FILE *fd;
short n = 0;
short max_pattern = 0;
short max_opening_sequence = 0;
- fd = fopen ("pattern.inc", "w");
+ fd = fopen (patternincfile, "w");
fprintf(fd, "#define MAX_PATTERN_DATA %d\n\n", pindex);
fprintf(fd, "small_short pattern_data[MAX_PATTERN_DATA] =\n{\n");