wow. that was easy: git mv core nucleus
[feisty_meow.git] / nucleus / tools / dependency_tool / def.h
diff --git a/nucleus/tools/dependency_tool/def.h b/nucleus/tools/dependency_tool/def.h
new file mode 100644 (file)
index 0000000..de4e418
--- /dev/null
@@ -0,0 +1,195 @@
+/* $XConsortium: def.h,v 1.25 94/04/17 20:10:33 gildea Exp $ */
+/*
+
+Copyright (c) 1993, 1994  X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+
+*/
+
+#include <stdio.h>
+#include "Xosdefs.h"
+#ifdef WIN32
+#endif
+#ifdef __OS2__
+#define __STDC__ 1
+#include "Xos2defs.h"
+#endif
+#include "Xfuncproto.h"
+#include <ctype.h>
+#ifndef X_NOT_POSIX
+#ifndef _POSIX_SOURCE
+#define _POSIX_SOURCE
+#endif
+#endif
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define MAXDEFINES 512
+#define MAXFILES   4000
+#define MAXDIRS    640
+#define SYMTABINC  10  /* must be > 1 for define() to work right */
+
+/* the following must match the directives table in main.c */
+#define IF               0
+#define IFDEF            1
+#define IFNDEF           2
+#define ELSE             3
+#define ENDIF            4
+#define DEFINE           5
+#define UNDEF            6
+#define INCLUDE          7
+#define LINE             8
+#define PRAGMA           9
+#define ERROR           10
+#define IDENT           11
+#define SCCS            12
+#define ELIF            13
+#define EJECT           14
+#define IMPORT          15
+
+#define IFFALSE         16     /* pseudo value --- never matched */
+#define ELIFFALSE       17     /* pseudo value --- never matched */
+#define INCLUDEDOT      18     /* pseudo value --- never matched */
+#define IFGUESSFALSE    19     /* pseudo value --- never matched */
+#define ELIFGUESSFALSE  20     /* pseudo value --- never matched */
+
+///#define DEBUG
+  // uncomment this for debugging version.
+
+#ifdef DEBUG
+extern int  _debugmask;
+/*
+ * debug levels are:
+ * 
+ *     0  show ifn*(def)*,endif
+ *     1  trace defined/!defined
+ *     2  show #include
+ *     3  show #include SYMBOL
+ *     4-6  unused
+ */
+#define debug(level,arg) { if (_debugmask & (1 << level)) warning arg; }
+#else
+#define  debug(level,arg) {}
+#endif /* DEBUG */
+
+struct symtab {
+  char  *s_name;
+  char  *s_value;
+};
+
+struct inclist {
+  char    *i_incstring;  /* string from #include line */
+  char    *i_file;  /* path name of the include file */
+  inclist          **i_list;  /* list of files it itself includes */
+  int    i_listlen;  /* length of i_list */
+  symtab  *i_defs;  /* symbol table for this file */
+  int    i_ndefs;  /* current # defines */
+  int    i_deflen;  /* amount of space in table */
+  bool    i_defchecked;  /* whether defines have been checked */
+  bool    i_notified;  /* whether we have revealed includes */
+  bool    i_marked;  /* whether it's in the makefile */
+  bool    i_searched;  /* whether we have read this */
+  bool         i_included_sym; /* whether #include SYMBOL was found */
+          /* Can't use i_list if true */
+};
+
+struct filepointer {
+  char  *f_p;
+  char  *f_base;
+  char  *f_end;
+  long  f_len;
+  long  f_line;
+  char  *f_name;
+};
+
+#ifndef X_NOT_STDC_ENV
+#include <stdlib.h>
+#if defined(macII) && !defined(__STDC__)  /* stdlib.h fails to define these */
+char *malloc(), *realloc();
+#endif /* macII */
+#else
+char      *malloc();
+char      *realloc();
+#endif
+
+/*
+char      *getline();
+symtab    *slookup();
+symtab    *isdefined();
+symtab    *fdefined();
+filepointer  *getfile();
+inclist *newinclude(register char *, register char *);
+inclist    *inc_path();
+*/
+
+// cppsetup.cpp:
+int cppsetup(register char *line, register filepointer *filep,
+    register inclist *inc);
+
+// include.cpp
+inclist *newinclude(register char *newfile, register char *incstring);
+void inc_clean();
+inclist *inc_path(register char *file, register char *include, bool dot,
+    bool &failure_okay);
+void included_by(register inclist *ip, register inclist *newfile);
+
+// main.cpp:
+char *base_name(register char  *file);
+char *copy(register char *str);
+filepointer *getfile(char  *file);
+void freefile(filepointer  *fp);
+char *getline(register filepointer  *filep);
+int match(register const char *str, register const char **list);
+void redirect(char  *line, char  *makefile);
+#if NeedVarargsPrototypes
+  void fatalerr(const char *, ...);
+  void warning(const char *, ...);
+  void warning1(const char *, ...);
+#endif
+
+// parse.cpp:
+void define(char  *def, inclist  *file);
+void define2(char  *name, char  *val, inclist  *file);
+int deftype(register char  *line, register filepointer *filep,
+    register inclist *file_red, register inclist *file,
+    int parse_it);
+symtab *fdefined(register char *symbol, inclist *file, inclist **srcfile);
+int find_includes(filepointer *filep, inclist *file,
+    inclist *file_red, int recursion, bool failOK);
+int gobble(register filepointer *filep, inclist *file,
+    inclist *file_red);
+symtab *isdefined(register char *symbol, inclist *file,
+    inclist  **srcfile);
+symtab *slookup(register char  *symbol, register inclist *file);
+void undefine(char  *symbol, register inclist *file);
+int zero_value(register char  *exp, register filepointer *filep,
+    register inclist *file_red);
+
+// pr.cpp:
+void add_include(filepointer *filep, inclist  *file,
+    inclist  *file_red, char  *include, bool dot, bool failOK);
+void pr(register inclist *ip, char *file, char *base, bool rc_file);
+void recursive_pr_include(register inclist *head, register char *file,
+    register char *base);
+