~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to plug-ins/script-fu/tinyscheme/scheme-private.h

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2007-05-02 16:33:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070502163303-bvzhjzbpw8qglc4y
Tags: 2.3.16-1ubuntu1
* Resynchronized with Debian, remaining Ubuntu changes:
  - debian/rules: i18n magic.
* debian/control.in:
  - Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch,
  debian/patches/10_dont_show_wizard.patch: updated.
* debian/patches/04_composite-signedness.patch,
  debian/patches/05_add-letter-spacing.patch: dropped, used upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* scheme-private.h */
 
2
 
 
3
#ifndef _SCHEME_PRIVATE_H
 
4
#define _SCHEME_PRIVATE_H
 
5
 
 
6
#include "scheme.h"
 
7
/*------------------ Ugly internals -----------------------------------*/
 
8
/*------------------ Of interest only to FFI users --------------------*/
 
9
 
 
10
enum scheme_port_kind {
 
11
  port_free=0,
 
12
  port_file=1,
 
13
  port_string=2,
 
14
  port_input=16,
 
15
  port_output=32
 
16
};
 
17
 
 
18
typedef struct port {
 
19
  unsigned char kind;
 
20
  union {
 
21
    struct {
 
22
      FILE *file;
 
23
      int closeit;
 
24
    } stdio;
 
25
    struct {
 
26
      char *start;
 
27
      char *past_the_end;
 
28
      char *curr;
 
29
    } string;
 
30
  } rep;
 
31
} port;
 
32
 
 
33
/* cell structure */
 
34
struct cell {
 
35
  unsigned int _flag;
 
36
  union {
 
37
    struct {
 
38
      char   *_svalue;
 
39
      char   *_skey;
 
40
      int   _length;
 
41
    } _string;
 
42
    num _number;
 
43
    port *_port;
 
44
    foreign_func _ff;
 
45
    struct {
 
46
      struct cell *_car;
 
47
      struct cell *_cdr;
 
48
    } _cons;
 
49
  } _object;
 
50
};
 
51
 
 
52
struct scheme {
 
53
/* arrays for segments */
 
54
func_alloc malloc;
 
55
func_dealloc free;
 
56
 
 
57
/* return code */
 
58
int retcode;
 
59
int tracing;
 
60
 
 
61
#define CELL_SEGSIZE    5000  /* # of cells in one segment */
 
62
#define CELL_NSEGMENT   20    /* # of segments for cells */
 
63
char *alloc_seg[CELL_NSEGMENT];
 
64
pointer cell_seg[CELL_NSEGMENT];
 
65
int     last_cell_seg;
 
66
 
 
67
/* We use 5 registers. */
 
68
pointer args;            /* register for arguments of function */
 
69
pointer envir;           /* stack register for current environment */
 
70
pointer code;            /* register for current code */
 
71
pointer dump;            /* stack register for next evaluation */
 
72
pointer safe_foreign;    /* register to avoid gc problems */
 
73
 
 
74
int interactive_repl;    /* are we in an interactive REPL? */
 
75
int print_output;        /* set to 1 to print results and error messages */
 
76
int print_error;         /* set to 1 while printing error messages */
 
77
 
 
78
struct cell _sink;
 
79
pointer sink;            /* when mem. alloc. fails */
 
80
struct cell _NIL;
 
81
pointer NIL;             /* special cell representing empty cell */
 
82
struct cell _HASHT;
 
83
pointer T;               /* special cell representing #t */
 
84
struct cell _HASHF;
 
85
pointer F;               /* special cell representing #f */
 
86
struct cell _EOF_OBJ;
 
87
pointer EOF_OBJ;         /* special cell representing end-of-file object */
 
88
pointer oblist;          /* pointer to symbol table */
 
89
pointer global_env;      /* pointer to global environment */
 
90
 
 
91
/* global pointers to special symbols */
 
92
pointer LAMBDA;               /* pointer to syntax lambda */
 
93
pointer QUOTE;           /* pointer to syntax quote */
 
94
 
 
95
pointer QQUOTE;               /* pointer to symbol quasiquote */
 
96
pointer UNQUOTE;         /* pointer to symbol unquote */
 
97
pointer UNQUOTESP;       /* pointer to symbol unquote-splicing */
 
98
pointer FEED_TO;         /* => */
 
99
pointer COLON_HOOK;      /* *colon-hook* */
 
100
pointer ERROR_HOOK;      /* *error-hook* */
 
101
pointer SHARP_HOOK;  /* *sharp-hook* */
 
102
 
 
103
pointer free_cell;       /* pointer to top of free cells */
 
104
long    fcells;          /* # of free cells */
 
105
 
 
106
pointer inport;
 
107
pointer outport;
 
108
pointer save_inport;
 
109
pointer loadport;
 
110
 
 
111
#define MAXFIL 64
 
112
port load_stack[MAXFIL];     /* Stack of open files for port -1 (LOADing) */
 
113
int nesting_stack[MAXFIL];
 
114
int file_i;
 
115
int nesting;
 
116
 
 
117
char    gc_verbose;      /* if gc_verbose is not zero, print gc status */
 
118
char    no_memory;       /* Whether mem. alloc. has failed */
 
119
 
 
120
#define LINESIZE 1024
 
121
char    linebuff[LINESIZE];
 
122
char    strbuff[LINESIZE];
 
123
 
 
124
FILE *tmpfp;
 
125
int tok;
 
126
int print_flag;
 
127
pointer value;
 
128
int op;
 
129
 
 
130
void *ext_data;     /* For the benefit of foreign functions */
 
131
long gensym_cnt;
 
132
 
 
133
struct scheme_interface *vptr;
 
134
void *dump_base;     /* pointer to base of allocated dump stack */
 
135
int dump_size;       /* number of frames allocated for dump stack */
 
136
 
 
137
gunichar backchar;
 
138
int bc_flag;
 
139
};
 
140
 
 
141
/* operator code */
 
142
enum scheme_opcodes {
 
143
#define _OP_DEF(A,B,C,D,E,OP) OP,
 
144
#include "opdefines.h"
 
145
  OP_MAXDEFINED
 
146
};
 
147
 
 
148
 
 
149
#define cons(sc,a,b) _cons(sc,a,b,0)
 
150
#define immutable_cons(sc,a,b) _cons(sc,a,b,1)
 
151
 
 
152
int is_string(pointer p);
 
153
char *string_value(pointer p);
 
154
int is_number(pointer p);
 
155
num nvalue(pointer p);
 
156
long ivalue(pointer p);
 
157
double rvalue(pointer p);
 
158
int is_integer(pointer p);
 
159
int is_real(pointer p);
 
160
int is_character(pointer p);
 
161
int string_length(pointer p);
 
162
gunichar charvalue(pointer p);
 
163
int is_vector(pointer p);
 
164
 
 
165
int is_port(pointer p);
 
166
 
 
167
int is_pair(pointer p);
 
168
pointer pair_car(pointer p);
 
169
pointer pair_cdr(pointer p);
 
170
pointer set_car(pointer p, pointer q);
 
171
pointer set_cdr(pointer p, pointer q);
 
172
 
 
173
int is_symbol(pointer p);
 
174
char *symname(pointer p);
 
175
char *symkey(pointer p);
 
176
int hasprop(pointer p);
 
177
 
 
178
int is_syntax(pointer p);
 
179
int is_proc(pointer p);
 
180
int is_foreign(pointer p);
 
181
char *syntaxname(pointer p);
 
182
int is_closure(pointer p);
 
183
int is_macro(pointer p);
 
184
pointer closure_code(pointer p);
 
185
pointer closure_env(pointer p);
 
186
 
 
187
int is_continuation(pointer p);
 
188
int is_promise(pointer p);
 
189
int is_environment(pointer p);
 
190
int is_immutable(pointer p);
 
191
void setimmutable(pointer p);
 
192
 
 
193
#endif