summaryrefslogtreecommitdiff
path: root/3rd-party/xfpt/src/structs.h
blob: ec2de8ba3bb8d51cfc9d7bc002153c3b0bea7226 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*************************************************
*     xfpt - Simple ASCII->Docbook processor     *
*************************************************/

/* Copyright (c) University of Cambridge, 2012 */
/* Written by Philip Hazel. */

/* This module contains definitions of structures that are used throughout the
program. */

/* Include file stack item */

typedef struct istackstr {
  struct istackstr *prev;
  int linenumber;
  FILE *file;
  uschar filename[256];
} istackstr;

/* Flag stack item */

typedef struct flagstr {
  struct flagstr *next;
  int     length1;
  uschar *flag1;
  uschar *rep1;
  int     length2;
  uschar *flag2;
  uschar *rep2;
} flagstr;

/* Pushed string stack item */

typedef struct pushstr {
  struct pushstr *next;
  int letter;
  int check;
  uschar *macname;
  uschar string[1];
} pushstr;

/* Macro content and argument item */

typedef struct argstr {
  struct argstr *next;
  uschar *string;
} argstr;

/* Macro definition item */

typedef struct macrodef {
  struct macrodef *next;
  argstr *lines;
  argstr *args;
  uschar *name;
  int namelength;
} macrodef;

/* Macro execution item */

typedef struct macroexe {
  struct macroexe *prev;
  macrodef *macro;
  argstr *args;
  argstr *nextline;
} macroexe;

/* Structure for each node in a tree, used for defined entities. */

typedef struct tree_node {
  struct tree_node *left;      /* pointer to left child */
  struct tree_node *right;     /* pointer to right child */
  uschar *data;                /* pointer to the value */
  uschar  balance;             /* balancing factor */
  uschar  name[1];             /* node name - variable length */
} tree_node;

/* End of structs.h */