adding zephyr-im master branch
This commit is contained in:
126
zwgc/node.h
Normal file
126
zwgc/node.h
Normal file
@ -0,0 +1,126 @@
|
||||
/* This file is part of the Project Athena Zephyr Notification System.
|
||||
* It is one of the source files comprising zwgc, the Zephyr WindowGram
|
||||
* client.
|
||||
*
|
||||
* Created by: Marc Horowitz <marc@athena.mit.edu>
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (c) 1989 by the Massachusetts Institute of Technology.
|
||||
* For copying and distribution information, see the file
|
||||
* "mit-copyright.h".
|
||||
*/
|
||||
|
||||
|
||||
#include <zephyr/mit-copyright.h>
|
||||
|
||||
#ifndef node_MODULE
|
||||
#define node_MODULE
|
||||
|
||||
#include "new_string.h"
|
||||
|
||||
#define STRING_CONSTANT_OPCODE 0
|
||||
#define VARREF_OPCODE 1
|
||||
#define VARNAME_OPCODE 2
|
||||
|
||||
#define NOT_OPCODE 3
|
||||
|
||||
#define PLUS_OPCODE 4
|
||||
#define AND_OPCODE 5
|
||||
#define OR_OPCODE 6
|
||||
#define EQ_OPCODE 7
|
||||
#define NEQ_OPCODE 8
|
||||
#define REGEQ_OPCODE 9
|
||||
#define REGNEQ_OPCODE 10
|
||||
|
||||
#define BUFFER_OPCODE 11
|
||||
|
||||
#define SUBSTITUTE_OPCODE 12
|
||||
#define PROTECT_OPCODE 13
|
||||
#define VERBATIM_OPCODE 14
|
||||
#define STYLESTRIP_OPCODE 15
|
||||
#define GETENV_OPCODE 16
|
||||
#define UPCASE_OPCODE 17
|
||||
#define DOWNCASE_OPCODE 18
|
||||
#define ZVAR_OPCODE 19
|
||||
#define GET_OPCODE 20
|
||||
|
||||
#define LANY_OPCODE 21
|
||||
#define RANY_OPCODE 22
|
||||
#define LBREAK_OPCODE 23
|
||||
#define RBREAK_OPCODE 24
|
||||
#define LSPAN_OPCODE 25
|
||||
#define RSPAN_OPCODE 26
|
||||
|
||||
#define LAST_EXPR_OPCODE 26
|
||||
|
||||
#define NOOP_OPCODE 27
|
||||
#define SET_OPCODE 28
|
||||
#define FIELDS_OPCODE 29
|
||||
|
||||
#define PRINT_OPCODE 30
|
||||
#define CLEARBUF_OPCODE 31
|
||||
|
||||
#define APPENDPORT_OPCODE 32
|
||||
#define EXECPORT_OPCODE 33
|
||||
#define INPUTPORT_OPCODE 34
|
||||
#define OUTPUTPORT_OPCODE 35
|
||||
#define PUT_OPCODE 36
|
||||
#define CLOSEINPUT_OPCODE 37
|
||||
#define CLOSEOUTPUT_OPCODE 38
|
||||
#define CLOSEPORT_OPCODE 39
|
||||
|
||||
#define EXEC_OPCODE 40
|
||||
|
||||
#define IF_STMT_OPCODE 41
|
||||
#define CASE_OPCODE 42
|
||||
#define WHILE_OPCODE 43
|
||||
#define BREAK_OPCODE 44
|
||||
#define EXIT_OPCODE 45
|
||||
|
||||
#define IF_OPCODE 46
|
||||
#define ELSEIF_OPCODE 47
|
||||
#define ELSE_OPCODE 48
|
||||
#define MATCHLIST_OPCODE 49
|
||||
#define DEFAULT_OPCODE 50
|
||||
|
||||
#define NUMBER_OF_OPCODES 51
|
||||
|
||||
typedef struct _Node {
|
||||
int opcode; /* Read-only */
|
||||
struct _Node *next;
|
||||
union {
|
||||
string string_constant;
|
||||
struct {
|
||||
struct _Node *first;
|
||||
struct _Node *second;
|
||||
} nodes;
|
||||
} d;
|
||||
} Node;
|
||||
|
||||
/* Function externs */
|
||||
|
||||
extern void node_DestroyAllNodes(void);
|
||||
|
||||
extern Node *node_create_string_constant(int, string);
|
||||
|
||||
extern Node *node_create_noary(int);
|
||||
extern Node *node_create_unary(int, Node *);
|
||||
extern Node *node_create_binary(int, Node *, Node *);
|
||||
|
||||
/*
|
||||
* Node *reverse_list_of_nodes(Node *list)
|
||||
* Modifies: the nodes on the linked list list
|
||||
* Effects: Reverses the linked list list and returns it.
|
||||
* This is done by modifing the next pointers of the
|
||||
* list elements to point to the previous node & returning
|
||||
* the address of the (previously) last node.
|
||||
*/
|
||||
|
||||
extern Node *reverse_list_of_nodes(Node *);
|
||||
|
||||
#ifdef DEBUG
|
||||
extern void node_display(Node *);
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user