/*
 * CDE - Common Desktop Environment
 *
 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
 *
 * These libraries and programs are free software; you can
 * redistribute them and/or modify them under the terms of the GNU
 * Lesser General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * These libraries and programs are distributed in the hope that
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with these libraries and programs; if not, write
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA 02110-1301 USA
 */
/* $XConsortium: proto.h /main/3 1995/11/08 10:03:00 rswiston $ */
/*
                   Copyright (c) 1988, 1989 Hewlett-Packard Co.
*/

/* Proto.h contains function prototypes for program BUILD. */


int addarc(STATE *from, STATE *to, ELTSTRUCT *label, ANDGROUP *and, LOGICAL optional, 
  int id, LOGICAL minim, ELTSTRUCT **errelt);

void adddefent(M_WCHAR *mapname);

LOGICAL addent(M_WCHAR *name);

void addex(void);

void addkeyword(void);

LOGICAL addmapname(M_WCHAR *p, LOGICAL define);

void addndent(M_WCHAR *p);

void addpar(void);

void addsref(M_WCHAR *p);

LOGICAL m_allwhite(const M_WCHAR *string);

void checkand(ANDGROUP *andstart, ANDGROUP *andptr, STATE *start, TREE *root, 
  ELTSTRUCT **errelt);

LOGICAL checkdefault(const M_WCHAR *string);

int checkdfsa(STATE *from, ELTSTRUCT *label, ANDGROUP *and, int id, ELTSTRUCT **errelt);

int checkrepeat(STATE *from, ANDGROUP *and, ELTSTRUCT **errelt);

void copyintolist(STATELIST *from, STATELIST **to);

void countdown(M_TRIE *parent, int *count);

void defmapname(void);

char *deftype(int n);

void dellist(STATELIST **list);

void delstartarcs(void);

void done(void);

void dumpentnode(FILE *file, M_TRIE *value);

void dumpmapnode(FILE *file, M_TRIE *value);

void dumpsrefnode(FILE *file,
  M_TRIE *value);

void dumpptrie(M_TRIE *intname, char *extname, FILE *file, char *externdef, char *defdef,
  void (*proc)( FILE *, M_TRIE *));

void m_dumptrie(FILE   *file,
  M_TRIE *xtrie,
  char   *extname,
  int    *count,
  void  (*proc)(M_ENTITY *));

void eltblocks(FILE *tempfile);

void eltreeout(void);

void endmodel(void);

void entout(char *fname);

char *enttype(int n);

void m_error(char *text);

void m_err1(const char *text, const M_WCHAR *arg);

void m_mberr1(char *text, const char *arg);

void m_err2(const char *text, const M_WCHAR *arg1, const M_WCHAR *arg2);

void exout(void);

void m_free(void *block, char *msg);

void freetree(TREE *ruletree);

void found(LOGICAL *flag, char *delim);

void fsa(void);

int getachar(void);

ANDGROUP *getand(void);

LOGICAL getname(int first);

STATE *getstate(void);

int gettoken(int *c, int context);

TREE *gettreenode(void);

void initialize(void);

LOGICAL litproc(int delim);

void makeand(LOGICAL *canbenull, TREE *root, int optional);

LOGICAL makefsa(TREE *root, int optional);

void makeor(LOGICAL *canbenull, TREE *root);

void makeseq(LOGICAL *canbenull, TREE *root, int optional);

void *m_malloc(int size, char *msg);

void msgline(char *text);

void msg1line(char *text, char *arg1);

void nondeterm(TREE *root, int c, ELTSTRUCT *eltp);

void normdefault(M_WCHAR *string);

LOGICAL notinlist(STATELIST *item, STATELIST *list);

ELTSTRUCT *ntrelt(M_WCHAR *p);

void m_openchk(FILE **ptr, char *name, char *mode);

void parout(void);

char *partype(int n);

LOGICAL permitspcd(ARC *a);

void pop(void);

void prulend(void);

void push(void);

LOGICAL regenerate(TREE *start, TREE *stop);

void repeat(TREE *root);

void ruleinit(void);

void rulend(void);

LOGICAL samelabelarc(ARC *a, STATE *s);

void savelhs(LOGICAL param);

void savestartarcs(void);

int scan(void);

void setdefault(const M_WCHAR *string);

void simplebranch(TREE *root, ELTSTRUCT *value, ANDGROUP *group, int optional);

void skiptoend(void);

int m_sprscon(int i, int j);

void srefout(void);

STATE *startfsa(TREE *root, LOGICAL *canbenull);

void tempelt(ELTSTRUCT *eltp, FILE *tempfile);

void template(void);

char *typecon(int n);

void undodelim(M_WCHAR *delim);

void ungetachar(int c);

int m_wcupstrcmp(const M_WCHAR *p, const M_WCHAR *q);

int m_wcmbupstrcmp(const M_WCHAR *p, const char *q);

int m_mbmbupstrcmp(const char *p, const char *q);

void warning(char *text);

void warning1(char *text, M_WCHAR *arg);

void warning2(char *text, M_WCHAR *arg1, M_WCHAR *arg2);

void warning3(char *text, M_WCHAR *arg1, M_WCHAR *arg2, M_WCHAR *arg3);

void warning4(char *text, M_WCHAR *arg1, M_WCHAR *arg2, M_WCHAR *arg3, M_WCHAR *arg4);

LOGICAL m_whitespace(M_WCHAR c);

