1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\ 2 * This is GNU Go, a Go program. Contact gnugo@gnu.org, or see * 3 * http://www.gnu.org/software/gnugo/ for more information. * 4 * * 5 * Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, * 6 * 2008 and 2009 by the Free Software Foundation. * 7 * * 8 * This program is free software; you can redistribute it and/or * 9 * modify it under the terms of the GNU General Public License as * 10 * published by the Free Software Foundation - version 3 or * 11 * (at your option) any later version. * 12 * * 13 * This program is distributed in the hope that it will be useful, * 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 16 * GNU General Public License in file COPYING for more details. * 17 * * 18 * You should have received a copy of the GNU General Public * 19 * License along with this program; if not, write to the Free * 20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * 21 * Boston, MA 02111, USA. * 22 \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 24 #ifndef _DFA_H_ 25 #define _DFA_H_ 26 27 #if MAX_BOARD > 11 28 #define DFA_MAX_BOARD MAX_BOARD 29 #else 30 #define DFA_MAX_BOARD 11 31 #endif 32 #define DFA_MAX_ORDER ((2 * DFA_MAX_BOARD - 1) \ 33 * (2 * DFA_MAX_BOARD - 1)) 34 #define DFA_BASE (3 * DFA_MAX_BOARD) 35 #define DFA_POS(i, j) (((i) + DFA_MAX_BOARD) * DFA_BASE \ 36 + ((j) + DFA_MAX_BOARD)) 37 38 #ifndef EMPTY 39 #define EMPTY 0 /* . */ 40 #define WHITE 1 /* O */ 41 #define BLACK 2 /* X */ 42 #endif 43 #define OUT_BOARD 3 /* # */ 44 45 46 /* Maximum pattern matched at one positions. */ 47 #define DFA_MAX_MATCHED (8 * 24) 48 49 50 /* DFA spiral order. */ 51 extern int spiral[DFA_MAX_ORDER][8]; 52 53 void build_spiral_order(void); 54 55 56 /* The run-time data structures declared here are different from those 57 * used internally to build the DFA. */ 58 59 /* Attribute list. */ 60 typedef struct attrib_rt 61 { 62 short val; 63 short next; 64 } attrib_rt_t; 65 66 /* DFA state. */ 67 typedef struct state_rt 68 { 69 short next[4]; 70 short att; 71 } state_rt_t; 72 73 typedef struct dfa_rt 74 { 75 /* File header. */ 76 const char name[80]; 77 78 /* Transition graph. */ 79 const state_rt_t *states; 80 81 /* Attributes sets. */ 82 const attrib_rt_t *indexes; 83 } dfa_rt_t; 84 85 86 87 #endif /* _DFA_H_ */ 88 89 90 /* 91 * Local Variables: 92 * tab-width: 8 93 * c-basic-offset: 2 94 * End: 95 */ 96