aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/cb/cb.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/cb/cb.h')
-rw-r--r--src/cmd/cb/cb.h172
1 files changed, 172 insertions, 0 deletions
diff --git a/src/cmd/cb/cb.h b/src/cmd/cb/cb.h
new file mode 100644
index 00000000..d7ceee08
--- /dev/null
+++ b/src/cmd/cb/cb.h
@@ -0,0 +1,172 @@
+#define IF 1
+#define ELSE 2
+#define CASE 3
+#define TYPE 4
+#define DO 5
+#define STRUCT 6
+#define OTHER 7
+
+#define ALWAYS 01
+#define NEVER 02
+#define SOMETIMES 04
+
+#define YES 1
+#define NO 0
+
+#define KEYWORD 1
+#define DATADEF 2
+#define SINIT 3
+
+#define CLEVEL 200
+#define IFLEVEL 100
+#define DOLEVEL 100
+#define OPLENGTH 100
+#define LINE 2048
+#define LINELENG 2048
+#define MAXTABS 8
+#define TABLENG 8
+#define TEMP 20480
+
+#define OUT outs(clev->tabs); Bputc(output, '\n');opflag = lbegin = 1; count = 0
+#define OUTK OUT; keyflag = 0;
+#define BUMP clev->tabs++; clev->pdepth++
+#define UNBUMP clev->tabs -= clev->pdepth; clev->pdepth = 0
+#define eatspace() while((cc=getch()) == ' ' || cc == '\t'); unget(cc)
+#define eatallsp() while((cc=getch()) == ' ' || cc == '\t' || cc == '\n'); unget(cc)
+
+struct indent { /* one for each level of { } */
+ int tabs;
+ int pdepth;
+ int iflev;
+ int ifc[IFLEVEL];
+ int spdepth[IFLEVEL];
+} ind[CLEVEL];
+struct indent *clev = ind;
+struct keyw {
+ char *name;
+ char punc;
+ char type;
+} key[] = {
+ "switch", ' ', OTHER,
+ "do", ' ', DO,
+ "while", ' ', OTHER,
+ "if", ' ', IF,
+ "for", ' ', OTHER,
+ "else", ' ', ELSE,
+ "case", ' ', CASE,
+ "default", ' ', CASE,
+ "char", '\t', TYPE,
+ "int", '\t', TYPE,
+ "short", '\t', TYPE,
+ "long", '\t', TYPE,
+ "unsigned", '\t', TYPE,
+ "float", '\t', TYPE,
+ "double", '\t', TYPE,
+ "struct", ' ', STRUCT,
+ "union", ' ', STRUCT,
+ "enum", ' ', STRUCT,
+ "extern", ' ', TYPE,
+ "register", ' ', TYPE,
+ "static", ' ', TYPE,
+ "typedef", ' ', TYPE,
+ 0, 0, 0
+};
+struct op {
+ char *name;
+ char blanks;
+ char setop;
+} op[] = {
+ "+=", ALWAYS, YES,
+ "-=", ALWAYS, YES,
+ "*=", ALWAYS, YES,
+ "/=", ALWAYS, YES,
+ "%=", ALWAYS, YES,
+ ">>=", ALWAYS, YES,
+ "<<=", ALWAYS, YES,
+ "&=", ALWAYS, YES,
+ "^=", ALWAYS, YES,
+ "|=", ALWAYS, YES,
+ ">>", ALWAYS, YES,
+ "<<", ALWAYS, YES,
+ "<=", ALWAYS, YES,
+ ">=", ALWAYS, YES,
+ "==", ALWAYS, YES,
+ "!=", ALWAYS, YES,
+ "=", ALWAYS, YES,
+ "&&", ALWAYS, YES,
+ "||", ALWAYS, YES,
+ "++", NEVER, NO,
+ "--", NEVER, NO,
+ "->", NEVER, NO,
+ "<", ALWAYS, YES,
+ ">", ALWAYS, YES,
+ "+", ALWAYS, YES,
+ "/", ALWAYS, YES,
+ "%", ALWAYS, YES,
+ "^", ALWAYS, YES,
+ "|", ALWAYS, YES,
+ "!", NEVER, YES,
+ "~", NEVER, YES,
+ "*", SOMETIMES, YES,
+ "&", SOMETIMES, YES,
+ "-", SOMETIMES, YES,
+ "?", ALWAYS,YES,
+ ":", ALWAYS,YES,
+ 0, 0,0
+};
+Biobuf *input;
+Biobuf *output;
+int strict = 0;
+int join = 0;
+int opflag = 1;
+int keyflag = 0;
+int paren = 0;
+int split = 0;
+int folded = 0;
+int dolevel =0;
+int dotabs[DOLEVEL];
+int docurly[DOLEVEL];
+int dopdepth[DOLEVEL];
+int structlev = 0;
+int question = 0;
+char string[LINE];
+char *lastlook;
+char *p = string;
+char temp[TEMP];
+char *tp;
+int err = 0;
+char *lastplace = temp;
+char *tptr = temp;
+int maxleng = LINELENG;
+int maxtabs = MAXTABS;
+int count = 0;
+char next = '\0';
+int inswitch =0;
+int lbegin = 1;
+int lineno = 0;
+
+void work(void);
+void gotif(void);
+void gotelse(void);
+int checkif(char *);
+void gotdo(void);
+void resetdo(void);
+void gottype(struct keyw *lptr);
+void gotstruct(void);
+void gotop(int);
+void keep(struct op *);
+int getnl(void);
+void ptabs(int);
+void outs(int);
+void putch(char, int);
+struct keyw *lookup(char *, char *);
+int comment(int);
+void putspace(char, int);
+int getch(void);
+void unget(char);
+char *getnext(int);
+void copy(char *);
+void clearif(struct indent *);
+char puttmp(char, int);
+void error(char *);
+int cpp_comment(int);