cb2256 | 1995-10-11 | Fredrik Hübinette (Hubbe) | | |
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | ||| This file a part of Pike, and is copyright by Fredrik Hubinette
||| Pike is distributed as GPL (General Public License)
|
cb2256 | 1995-10-11 | Fredrik Hübinette (Hubbe) | | ||| See the files COPYING and DISCLAIMER for more information.
\*/
|
24ddc7 | 1998-03-28 | Henrik Grubbström (Grubba) | |
|
50edc8 | 2001-07-13 | Henrik Grubbström (Grubba) | | * $Id: program.h,v 1.138 2001/07/13 11:26:39 grubba Exp $
|
24ddc7 | 1998-03-28 | Henrik Grubbström (Grubba) | | */
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | | #ifndef PROGRAM_H
#define PROGRAM_H
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
#include <stdarg.h>
|
afa694 | 1997-01-28 | Fredrik Hübinette (Hubbe) | | #include "global.h"
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #include "pike_types.h"
|
90e978 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | #include "pike_macros.h"
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #include "svalue.h"
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | | #include "time_stuff.h"
|
e9ce61 | 2001-03-29 | Per Hedbor | | #include "program_id.h"
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | |
#define STRUCT
#include "compilation.h"
#define EXTERN
#include "compilation.h"
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | |
PMOD_PROTO extern struct program_state * Pike_compiler;
|
b81873 | 2001-07-08 | Henrik Grubbström (Grubba) | | #ifdef HAVE_COMPUTED_GOTO
#define PIKE_OPCODE_T void *
extern PIKE_OPCODE_T *fcode_to_opcode;
|
afa1c6 | 2001-07-09 | Henrik Grubbström (Grubba) | | extern struct op_2_f {
PIKE_OPCODE_T opcode;
INT32 fcode;
} *opcode_to_fcode;
|
b81873 | 2001-07-08 | Henrik Grubbström (Grubba) | | #else /* !HAVE_COMPUTED_GOTO */
#ifdef SHORT_PIKE_OPCODE
#define PIKE_OPCODE_T unsigned INT16
#else /* !SHORT_PIKE_OPCODE */
#define PIKE_OPCODE_T unsigned INT8
#endif /* SHORT_PIKE_OPCODE */
#endif /* HAVE_COMPUTED_GOTO */
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | |
|
bcd574 | 1999-03-17 | Fredrik Hübinette (Hubbe) | | #ifdef PIKE_DEBUG
#define PROGRAM_LINE_ARGS int line, char *file
#else
#define PROGRAM_LINE_ARGS void
#endif
|
9e2686 | 1999-12-31 | Martin Stjernholm | | extern struct pike_string *this_program_string;
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | | #define LFUN___INIT 0
#define LFUN_CREATE 1
#define LFUN_DESTROY 2
#define LFUN_ADD 3
#define LFUN_SUBTRACT 4
#define LFUN_AND 5
#define LFUN_OR 6
#define LFUN_XOR 7
#define LFUN_LSH 8
#define LFUN_RSH 9
#define LFUN_MULTIPLY 10
#define LFUN_DIVIDE 11
#define LFUN_MOD 12
#define LFUN_COMPL 13
#define LFUN_EQ 14
#define LFUN_LT 15
#define LFUN_GT 16
#define LFUN___HASH 17
#define LFUN_CAST 18
#define LFUN_NOT 19
|
774b06 | 1996-08-03 | Fredrik Hübinette (Hubbe) | | #define LFUN_INDEX 20
#define LFUN_ASSIGN_INDEX 21
|
dffa01 | 1997-01-15 | Fredrik Hübinette (Hubbe) | | #define LFUN_ARROW 22
#define LFUN_ASSIGN_ARROW 23
|
0683be | 1997-01-26 | Fredrik Hübinette (Hubbe) | | #define LFUN__SIZEOF 24
#define LFUN__INDICES 25
#define LFUN__VALUES 26
#define LFUN_CALL 27
|
1b89ad | 1997-10-10 | Fredrik Hübinette (Hubbe) | | #define LFUN_RADD 28
#define LFUN_RSUBTRACT 29
#define LFUN_RAND 30
#define LFUN_ROR 31
#define LFUN_RXOR 32
#define LFUN_RLSH 33
#define LFUN_RRSH 34
#define LFUN_RMULTIPLY 35
#define LFUN_RDIVIDE 36
#define LFUN_RMOD 37
|
ee3780 | 1999-02-09 | Fredrik Hübinette (Hubbe) | | #define LFUN_ADD_EQ 38
|
aa73fc | 1999-10-21 | Fredrik Hübinette (Hubbe) | | #define LFUN__IS_TYPE 39
#define LFUN__SPRINTF 40
|
2ba919 | 1999-10-23 | Fredrik Hübinette (Hubbe) | | #define LFUN__EQUAL 41
|
a3453e | 2001-02-05 | Per Hedbor | | #define LFUN__M_DELETE 42
|
226d64 | 2001-02-24 | Henrik Grubbström (Grubba) | | #define LFUN__GET_ITERATOR 43
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | |
|
226d64 | 2001-02-24 | Henrik Grubbström (Grubba) | | #define NUM_LFUNS 44
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | |
extern char *lfun_names[];
|
286afb | 2001-02-05 | Henrik Grubbström (Grubba) | | extern struct pike_string *lfun_strings[];
|
dfa5b3 | 1996-12-05 | Fredrik Hübinette (Hubbe) | | #ifndef STRUCT_SVALUE_DECLARED
#define STRUCT_SVALUE_DECLARED
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct svalue;
|
dfa5b3 | 1996-12-05 | Fredrik Hübinette (Hubbe) | | #endif
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #ifndef STRUCT_NODE_S_DECLARED
#define STRUCT_NODE_S_DECLARED
struct node_s;
#endif
|
dfa5b3 | 1996-12-05 | Fredrik Hübinette (Hubbe) | | #ifndef STRUCT_OBJECT_DECLARED
#define STRUCT_OBJECT_DECLARED
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct object;
|
dfa5b3 | 1996-12-05 | Fredrik Hübinette (Hubbe) | | #endif
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | * to the C/PIKE function body.
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | *
* c) A number of flags to send to 'add_simul_efun' to specify side effects
* and such.
*/
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | | * 2^16 functions + global variables
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | * 2^16 inherits
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | * 2^16 arguments to pike functions
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | | * 2^32 efuns
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | * 2^8 local variables (and arguments)
*/
union idptr
{
void (*c_fun)(INT32);
|
a850e3 | 2000-08-14 | Henrik Grubbström (Grubba) | | ptrdiff_t offset;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | };
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_PIKE_FUNCTION 1
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_C_FUNCTION 2
#define IDENTIFIER_FUNCTION 3
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_CONSTANT 4
#define IDENTIFIER_VARARGS 8
|
6bc928 | 1998-04-10 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_PROTOTYPED 16
|
97f628 | 2000-03-07 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_SCOPED 32 /* This is used for local functions only */
|
8322b6 | 2000-05-08 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_SCOPE_USED 64 /* contains scoped local functions */
|
eff2b0 | 2001-07-03 | Henrik Grubbström (Grubba) | | #define IDENTIFIER_ALIAS 128 /* This identifier is an alias. */
|
d2c608 | 1996-11-07 | Fredrik Hübinette (Hubbe) | |
#define IDENTIFIER_IS_FUNCTION(X) ((X) & IDENTIFIER_FUNCTION)
|
199425 | 1999-09-06 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_IS_PIKE_FUNCTION(X) ((X) & IDENTIFIER_PIKE_FUNCTION)
|
d2c608 | 1996-11-07 | Fredrik Hübinette (Hubbe) | | #define IDENTIFIER_IS_CONSTANT(X) ((X) & IDENTIFIER_CONSTANT)
#define IDENTIFIER_IS_VARIABLE(X) (!((X) & (IDENTIFIER_FUNCTION | IDENTIFIER_CONSTANT)))
|
eff2b0 | 2001-07-03 | Henrik Grubbström (Grubba) | | #define IDENTIFIER_IS_ALIAS(X) ((X) & IDENTIFIER_ALIAS)
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
eff2b0 | 2001-07-03 | Henrik Grubbström (Grubba) | | #define IDENTIFIER_MASK 255
|
97f628 | 2000-03-07 | Fredrik Hübinette (Hubbe) | |
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct identifier
{
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | struct pike_string *name;
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct pike_type *type;
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | unsigned INT8 identifier_flags;
unsigned INT8 run_time_type;
unsigned INT16 opt_flags;
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | #ifdef PROFILING
unsigned INT32 num_calls;
|
a2a880 | 1998-03-18 | Per Hedbor | | unsigned INT32 total_time;
|
618963 | 1998-11-12 | Fredrik Hübinette (Hubbe) | | unsigned INT32 self_time;
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | #endif /* PROFILING */
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | union idptr func;
};
|
454d54 | 1999-09-18 | Fredrik Hübinette (Hubbe) | | struct program_constant
{
struct svalue sval;
struct pike_string *name;
};
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
b92e34 | 1999-12-30 | Henrik Grubbström (Grubba) | | #define ID_STATIC 0x01 /* Symbol is not visible by indexing */
#define ID_PRIVATE 0x02 /* Symbol is not visible by inherit */
#define ID_NOMASK 0x04 /* Symbol may not be overloaded */
|
f80d57 | 1999-11-23 | Henrik Grubbström (Grubba) | | #define ID_PUBLIC 0x08
#define ID_PROTECTED 0x10
#define ID_INLINE 0x20
|
b92e34 | 1999-12-30 | Henrik Grubbström (Grubba) | | #define ID_HIDDEN 0x40 /* needed? */
|
f80d57 | 1999-11-23 | Henrik Grubbström (Grubba) | | #define ID_INHERITED 0x80
|
b92e34 | 1999-12-30 | Henrik Grubbström (Grubba) | | #define ID_OPTIONAL 0x100 /* Symbol is not required by the interface */
#define ID_EXTERN 0x200 /* Symbol is defined later */
|
5ca435 | 2000-07-12 | Henrik Grubbström (Grubba) | | #define ID_VARIANT 0x400 /* Function is overloaded by argument. */
|
eff2b0 | 2001-07-03 | Henrik Grubbström (Grubba) | | #define ID_ALIAS 0x800 /* Variable is an overloaded alias. */
|
f80d57 | 1999-11-23 | Henrik Grubbström (Grubba) | |
|
eff2b0 | 2001-07-03 | Henrik Grubbström (Grubba) | | #define ID_MODIFIER_MASK 0x0fff
|
f80d57 | 1999-11-23 | Henrik Grubbström (Grubba) | |
|
b92e34 | 1999-12-30 | Henrik Grubbström (Grubba) | | #define ID_STRICT_TYPES 0x8000 /* #pragma strict_types */
|
001aa5 | 2001-06-08 | Fredrik Hübinette (Hubbe) | | #define ID_SAVE_PARENT 0x10000 /* pragma save_parent */
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
struct reference
{
|
cb2256 | 1995-10-11 | Fredrik Hübinette (Hubbe) | | unsigned INT16 inherit_offset;
unsigned INT16 identifier_offset;
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | INT16 id_flags;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | };
struct inherit
{
|
342fef | 2000-08-23 | Fredrik Hübinette (Hubbe) | | INT16 inherit_level;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | INT16 identifier_level;
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | INT16 parent_identifier;
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | INT16 parent_offset;
|
b81935 | 2000-08-14 | Henrik Grubbström (Grubba) | | ptrdiff_t storage_offset;
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | struct object *parent;
struct program *prog;
struct pike_string *name;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | };
|
454d54 | 1999-09-18 | Fredrik Hübinette (Hubbe) | | struct pike_trampoline
{
struct pike_frame *frame;
INT32 func;
};
|
aa68b1 | 2001-03-19 | Fredrik Hübinette (Hubbe) | |
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
#define PROGRAM_OPTIMIZED 1
#define PROGRAM_FIXED 2
#define PROGRAM_FINISHED 4
#define PROGRAM_PASS_1_DONE 8
|
8aae6d | 1999-08-19 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_DESTRUCT_IMMEDIATE 0x10
|
b504ed | 1997-09-21 | Fredrik Hübinette (Hubbe) | |
|
8aae6d | 1999-08-19 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_HAS_C_METHODS 0x20
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | |
#define PROGRAM_CONSTANT 0x40
|
8aae6d | 1999-08-19 | Fredrik Hübinette (Hubbe) | |
|
199425 | 1999-09-06 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_USES_PARENT 0x80
|
199425 | 1999-09-06 | Fredrik Hübinette (Hubbe) | |
|
1b0ac8 | 1999-10-29 | Martin Stjernholm | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_NO_WEAK_FREE 0x100
|
1b0ac8 | 1999-10-29 | Martin Stjernholm | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_NO_EXPLICIT_DESTRUCT 0x200
|
1b0ac8 | 1999-10-29 | Martin Stjernholm | |
|
8ba59a | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_AVOID_CHECK 0x400
|
8ba59a | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
aa68b1 | 2001-03-19 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | #define PROGRAM_VIRGIN 0x800
|
aa68b1 | 2001-03-19 | Fredrik Hübinette (Hubbe) | |
|
22d799 | 2001-06-23 | Fredrik Hübinette (Hubbe) | |
#define PROGRAM_NEEDS_PARENT 0x1000
|
b5dc81 | 2001-07-12 | Fredrik Hübinette (Hubbe) | |
#define PROG_EVENT_INIT 0
#define PROG_EVENT_EXIT 1
#define PROG_EVENT_GC_RECURSE 2
#define PROG_EVENT_GC_CHECK 3
#define NUM_PROG_EVENTS 4
|
8ba59a | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | |
#define LOW_PARENT_INFO(O,P) ((struct parent_info *)(PIKE_OBJ_STORAGE((O)) + (P)->parent_info_storage))
#define PARENT_INFO(O) LOW_PARENT_INFO( (O), (O)->prog)
struct parent_info
{
struct object *parent;
INT16 parent_identifier;
};
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct program
{
|
45637c | 2001-04-07 | Fredrik Hübinette (Hubbe) | | PIKE_MEMORY_OBJECT_MEMBERS;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | INT32 id;
|
342fef | 2000-08-23 | Fredrik Hübinette (Hubbe) | | INT32 parent_program_id;
|
2ad3c0 | 1999-09-16 | Fredrik Hübinette (Hubbe) | |
|
b81935 | 2000-08-14 | Henrik Grubbström (Grubba) | | ptrdiff_t storage_needed;
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | ptrdiff_t xstorage;
ptrdiff_t parent_info_storage;
|
8f29a3 | 1999-09-15 | Fredrik Hübinette (Hubbe) | | INT16 flags;
|
90e978 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | unsigned INT8 alignment_needed;
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | | struct timeval timestamp;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
struct program *next;
struct program *prev;
|
f3c715 | 2001-04-14 | Fredrik Hübinette (Hubbe) | | struct program *parent;
|
a5d45c | 2001-05-26 | Henrik Grubbström (Grubba) | | struct node_s *(*optimize)(struct node_s *n);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
|
b5dc81 | 2001-07-12 | Fredrik Hübinette (Hubbe) | | void (*event_handler)(int);
|
71f3a2 | 1998-11-22 | Fredrik Hübinette (Hubbe) | | #ifdef PIKE_DEBUG
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | unsigned INT32 checksum;
#endif
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | #ifdef PROFILING
unsigned INT32 num_clones;
#endif /* PROFILING */
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | size_t total_size;
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
#define FOO(NUMTYPE,TYPE,NAME) TYPE * NAME ;
#include "program_areas.h"
#define FOO(NUMTYPE,TYPE,NAME) NUMTYPE PIKE_CONCAT(num_,NAME) ;
#include "program_areas.h"
|
558069 | 1996-06-21 | Fredrik Hübinette (Hubbe) | | INT16 lfuns[NUM_LFUNS];
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | };
|
3c43b8 | 1999-03-19 | Fredrik Hübinette (Hubbe) | | #define INHERIT_FROM_PTR(P,X) (dmalloc_touch(struct program *,(P))->inherits + (X)->inherit_offset)
#define PROG_FROM_PTR(P,X) (dmalloc_touch(struct program *,INHERIT_FROM_PTR(P,X)->prog))
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #define ID_FROM_PTR(P,X) (PROG_FROM_PTR(P,X)->identifiers+(X)->identifier_offset)
#define INHERIT_FROM_INT(P,X) INHERIT_FROM_PTR(P,(P)->identifier_references+(X))
#define PROG_FROM_INT(P,X) PROG_FROM_PTR(P,(P)->identifier_references+(X))
#define ID_FROM_INT(P,X) ID_FROM_PTR(P,(P)->identifier_references+(X))
|
7477e2 | 2000-02-16 | Henrik Grubbström (Grubba) | | #define FIND_LFUN(P,N) ( dmalloc_touch(struct program *,(P))->flags & PROGRAM_FIXED?((P)->lfuns[(N)]):low_find_lfun((P), (N)) )
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
|
e83eb9 | 2001-03-22 | Fredrik Hübinette (Hubbe) | | #define free_program(p) do{ struct program *_=(p); debug_malloc_touch(_); if(!sub_ref(_)) really_free_program(_); }while(0)
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
199498 | 1998-04-07 | Fredrik Hübinette (Hubbe) | |
|
10e16f | 1999-11-04 | Henrik Grubbström (Grubba) | | extern struct object *error_handler;
|
a376db | 2001-06-08 | Henrik Grubbström (Grubba) | | extern struct object *compat_handler;
|
10e16f | 1999-11-04 | Henrik Grubbström (Grubba) | |
|
1ca3ba | 1997-10-13 | Fredrik Hübinette (Hubbe) | | extern struct program *first_program;
|
421801 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | extern struct program *pike_trampoline_program;
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | extern struct program *gc_internal_program;
|
964949 | 1998-02-27 | Fredrik Hübinette (Hubbe) | |
|
ddc142 | 2000-06-26 | Henrik Grubbström (Grubba) | | extern int compilation_depth;
|
8aae6d | 1999-08-19 | Fredrik Hübinette (Hubbe) | |
#define SEE_STATIC 1
#define SEE_PRIVATE 2
|
964949 | 1998-02-27 | Fredrik Hübinette (Hubbe) | | #define COMPILER_IN_CATCH 1
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
|
90e978 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | #define ADD_STORAGE(X) low_add_storage(sizeof(X), ALIGNOF(X),0)
|
1f5bfe | 1999-09-28 | Fredrik Hübinette (Hubbe) | | #define STORAGE_NEEDED(X) ((X)->storage_needed - (X)->inherits[0].storage_offset)
|
90e978 | 1999-01-31 | Fredrik Hübinette (Hubbe) | |
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #define FOO(NUMTYPE,TYPE,NAME) void PIKE_CONCAT(add_to_,NAME(TYPE ARG));
#include "program_areas.h"
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void ins_int(INT32 i, void (*func)(char tmp));
void ins_short(INT16 i, void (*func)(char tmp));
|
591c0c | 1997-01-19 | Fredrik Hübinette (Hubbe) | | void use_module(struct svalue *s);
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | | void unuse_modules(INT32 howmany);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | struct node_s *find_module_identifier(struct pike_string *ident,
int see_inherit);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | struct program *parent_compilation(int level);
|
b8cda2 | 1997-01-21 | Fredrik Hübinette (Hubbe) | | struct program *id_to_program(INT32 id);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void optimize_program(struct program *p);
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | | int program_function_index_compare(const void *a,const void *b);
|
50edc8 | 2001-07-13 | Henrik Grubbström (Grubba) | | struct pike_string *find_program_name(struct program *p, INT32 *line);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void fixate_program(void);
|
05590d | 1998-04-23 | Fredrik Hübinette (Hubbe) | | struct program *low_allocate_program(void);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void low_start_new_program(struct program *p,
|
993ba7 | 2000-02-15 | Fredrik Hübinette (Hubbe) | | struct pike_string *name,
int flags,
int *idp);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT void debug_start_new_program(PROGRAM_LINE_ARGS);
PMOD_EXPORT void really_free_program(struct program *p);
|
5683de | 1995-11-06 | Fredrik Hübinette (Hubbe) | | void dump_program_desc(struct program *p);
|
e964ae | 1998-04-08 | Fredrik Hübinette (Hubbe) | | int sizeof_variable(int run_time_type);
|
624d09 | 1996-02-24 | Fredrik Hübinette (Hubbe) | | void check_program(struct program *p);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | struct program *end_first_pass(int finish);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT struct program *debug_end_program(void);
|
b81935 | 2000-08-14 | Henrik Grubbström (Grubba) | | PMOD_EXPORT size_t low_add_storage(size_t size, size_t alignment,
ptrdiff_t modulo_orig);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT void set_init_callback(void (*init)(struct object *));
PMOD_EXPORT void set_exit_callback(void (*exit)(struct object *));
PMOD_EXPORT void set_gc_recurse_callback(void (*m)(struct object *));
PMOD_EXPORT void set_gc_check_callback(void (*m)(struct object *));
|
b5dc81 | 2001-07-12 | Fredrik Hübinette (Hubbe) | | void pike_set_prog_event_callback(void (*cb)(int));
|
a5d45c | 2001-05-26 | Henrik Grubbström (Grubba) | | void pike_set_prog_optimize_callback(struct node_s *(*opt)(struct node_s *));
|
d429a7 | 1998-02-24 | Fredrik Hübinette (Hubbe) | | int low_reference_inherited_identifier(struct program_state *q,
int e,
|
8aae6d | 1999-08-19 | Fredrik Hübinette (Hubbe) | | struct pike_string *name,
int flags);
|
ddc142 | 2000-06-26 | Henrik Grubbström (Grubba) | | int find_inherit(struct program *p, struct pike_string *name);
|
d429a7 | 1998-02-24 | Fredrik Hübinette (Hubbe) | | node *reference_inherited_identifier(struct pike_string *super_name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct pike_string *function_name);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | void rename_last_inherit(struct pike_string *n);
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | void low_inherit(struct program *p,
struct object *parent,
int parent_identifier,
int parent_offset,
INT32 flags,
struct pike_string *name);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT void do_inherit(struct svalue *s,
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | INT32 flags,
struct pike_string *name);
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | void compiler_do_inherit(node *n,
INT32 flags,
struct pike_string *name);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void simple_do_inherit(struct pike_string *s,
INT32 flags,
struct pike_string *name);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | int isidentifier(struct pike_string *s);
|
05c7cd | 1997-07-19 | Fredrik Hübinette (Hubbe) | | int low_define_variable(struct pike_string *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct pike_type *type,
|
05c7cd | 1997-07-19 | Fredrik Hübinette (Hubbe) | | INT32 flags,
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | size_t offset,
|
05c7cd | 1997-07-19 | Fredrik Hübinette (Hubbe) | | INT32 run_time_type);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int map_variable(char *name,
|
05c7cd | 1997-07-19 | Fredrik Hübinette (Hubbe) | | char *type,
INT32 flags,
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | size_t offset,
|
05c7cd | 1997-07-19 | Fredrik Hübinette (Hubbe) | | INT32 run_time_type);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int quick_map_variable(char *name,
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | int name_length,
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | size_t offset,
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | char *type,
int type_length,
INT32 run_time_type,
INT32 flags);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | int define_variable(struct pike_string *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct pike_type *type,
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int simple_add_variable(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | char *type,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_constant(struct pike_string *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct svalue *c,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int simple_add_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct svalue *c,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_integer_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | INT32 i,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int quick_add_integer_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | int name_length,
INT32 i,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_float_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | double f,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_string_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | char *str,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_program_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct program *p,
INT32 flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int add_object_constant(char *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct object *o,
INT32 flags);
PMOD_EXPORT int add_function_constant(char *name, void (*cfun)(INT32),
char * type, INT16 flags);
|
790114 | 2000-08-15 | Henrik Grubbström (Grubba) | | PMOD_EXPORT int debug_end_class(char *name, ptrdiff_t namelen, INT32 flags);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | INT32 define_function(struct pike_string *name,
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | struct pike_type *type,
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | unsigned INT8 flags,
unsigned INT8 function_flags,
union idptr *func,
unsigned INT16 opt_flags);
|
c0e446 | 1998-06-23 | Fredrik Hübinette (Hubbe) | | int really_low_find_shared_string_identifier(struct pike_string *name,
struct program *prog,
|
101602 | 1999-10-28 | Fredrik Hübinette (Hubbe) | | int flags);
|
51f0e0 | 2000-08-10 | Henrik Grubbström (Grubba) | | int low_find_lfun(struct program *p, ptrdiff_t lfun);
|
286afb | 2001-02-05 | Henrik Grubbström (Grubba) | | int lfun_lookup_id(struct pike_string *lfun_name);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | int low_find_shared_string_identifier(struct pike_string *name,
struct program *prog);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct ff_hash;
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | int find_shared_string_identifier(struct pike_string *name,
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct program *prog);
|
6f3ad0 | 2001-07-02 | Martin Stjernholm | | PMOD_EXPORT int find_identifier(const char *name,struct program *prog);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | int store_prog_string(struct pike_string *str);
|
101602 | 1999-10-28 | Fredrik Hübinette (Hubbe) | | int store_constant(struct svalue *foo,
int equal,
struct pike_string *constant_name);
|
15ff8c | 1998-05-25 | Henrik Grubbström (Grubba) | | struct array *program_indices(struct program *p);
struct array *program_values(struct program *p);
|
e43583 | 1998-05-25 | Henrik Grubbström (Grubba) | | void program_index_no_free(struct svalue *to, struct program *p,
struct svalue *ind);
|
101602 | 1999-10-28 | Fredrik Hübinette (Hubbe) | | int get_small_number(char **q);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | void start_line_numbering(void);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | void store_linenumber(INT32 current_line, struct pike_string *current_file);
|
50edc8 | 2001-07-13 | Henrik Grubbström (Grubba) | | PMOD_EXPORT struct pike_string *get_program_line(struct program *prog,
INT32 *linep);
PMOD_EXPORT struct pike_string *get_line(PIKE_OPCODE_T *pc,
struct program *prog,
INT32 *linep);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void my_yyerror(char *fmt,...) ATTRIBUTE((format(printf,1,2)));
|
03318e | 2000-03-16 | Fredrik Hübinette (Hubbe) | | struct program *compile(struct pike_string *prog,
|
ac8715 | 2000-09-25 | Fredrik Hübinette (Hubbe) | | struct object *handler,
int major,
|
aa68b1 | 2001-03-19 | Fredrik Hübinette (Hubbe) | | int minor,
struct program *target,
struct object *placeholder);
|
d6896c | 2000-12-16 | Marcus Comstedt | | PMOD_EXPORT int pike_add_function2(char *name, void (*cfun)(INT32),
|
d68a07 | 2001-02-20 | Henrik Grubbström (Grubba) | | char *type, unsigned INT8 flags,
unsigned INT16 opt_flags);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT int quick_add_function(char *name,
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | int name_length,
void (*cfun)(INT32),
char *type,
int type_length,
unsigned INT8 flags,
unsigned INT16 opt_flags);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void check_all_programs(void);
|
421801 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | void init_program(void);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void cleanup_program(void);
|
c94c37 | 1996-03-28 | Fredrik Hübinette (Hubbe) | | void gc_mark_program_as_referenced(struct program *p);
|
1f2133 | 2000-07-28 | Fredrik Hübinette (Hubbe) | | void real_gc_cycle_check_program(struct program *p, int weak);
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | unsigned gc_touch_all_programs(void);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void gc_check_all_programs(void);
void gc_mark_all_programs(void);
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | void gc_cycle_check_all_programs(void);
|
45d87e | 2000-07-18 | Martin Stjernholm | | void gc_zap_ext_weak_refs_in_programs(void);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void gc_free_all_unreferenced_programs(void);
|
c3c703 | 1996-12-04 | Fredrik Hübinette (Hubbe) | | void count_memory_in_programs(INT32 *num_, INT32 *size_);
|
421801 | 1999-01-31 | Fredrik Hübinette (Hubbe) | | void push_compiler_frame(int lexical_scope);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | void pop_local_variables(int level);
void pop_compiler_frame(void);
|
63540d | 2000-08-15 | Henrik Grubbström (Grubba) | | ptrdiff_t low_get_storage(struct program *o, struct program *p);
|
d6896c | 2000-12-16 | Marcus Comstedt | | PMOD_EXPORT char *get_storage(struct object *o, struct program *p);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | struct program *low_program_from_function(struct program *p,
INT32 i);
|
3cd748 | 2001-04-28 | Martin Stjernholm | | PMOD_EXPORT struct program *program_from_function(const struct svalue *f);
PMOD_EXPORT struct program *program_from_svalue(const struct svalue *s);
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | struct find_child_cache_s;
int find_child(struct program *parent, struct program *child);
void yywarning(char *fmt, ...) ATTRIBUTE((format(printf,1,2)));
|
0ee27b | 1998-04-14 | Fredrik Hübinette (Hubbe) | | struct implements_cache_s;
|
d6896c | 2000-12-16 | Marcus Comstedt | | PMOD_EXPORT int implements(struct program *a, struct program *b);
PMOD_EXPORT int is_compatible(struct program *a, struct program *b);
|
03318e | 2000-03-16 | Fredrik Hübinette (Hubbe) | | int yyexplain_not_implements(struct program *a, struct program *b, int flags);
|
d6896c | 2000-12-16 | Marcus Comstedt | | PMOD_EXPORT void *parent_storage(int depth);
|
ac8715 | 2000-09-25 | Fredrik Hübinette (Hubbe) | | PMOD_EXPORT void change_compiler_compatibility(int major, int minor);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | #define ADD_FUNCTION(NAME, FUNC, TYPE, FLAGS) \
quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUNC, TYPE,\
CONSTANT_STRLEN(TYPE), FLAGS, \
OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND)
|
45ee5d | 1999-02-10 | Fredrik Hübinette (Hubbe) | |
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | #define ADD_PROTOTYPE(NAME, TYPE, FLAGS) \
|
106f59 | 2000-08-31 | Henrik Grubbström (Grubba) | | ADD_FUNCTION(NAME, 0, TYPE, FLAGS)
#define ADD_FUNCTION2(NAME, FUNC, TYPE, FLAGS, OPT_FLAGS) \
quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUNC, TYPE,\
CONSTANT_STRLEN(TYPE), FLAGS, OPT_FLAGS)
#define ADD_PROTOTYPE2(NAME, TYPE, FLAGS, OPT_FLAGS) \
ADD_FUNCTION2(NAME, 0, TYPE, FLAGS, OPT_FLAGS)
|
f0dcda | 2000-03-13 | Henrik Grubbström (Grubba) | |
|
106f59 | 2000-08-31 | Henrik Grubbström (Grubba) | | #define ADD_INT_CONSTANT(NAME, CONST, FLAGS) \
quick_add_integer_constant(NAME, CONSTANT_STRLEN(NAME), CONST, FLAGS)
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
106f59 | 2000-08-31 | Henrik Grubbström (Grubba) | | #define PIKE_MAP_VARIABLE(NAME, OFFSET, TYPE, RTTYPE, FLAGS) \
quick_map_variable(NAME, CONSTANT_STRLEN(NAME), OFFSET, \
TYPE, CONSTANT_STRLEN(TYPE), RTTYPE, FLAGS)
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | |
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | #define ADD_FUNCTION_DTYPE(NAME,FUN,DTYPE,FLAGS) do { \
DTYPE_START; \
{DTYPE} \
{ \
struct pike_string *_t; \
DTYPE_END(_t); \
quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUN, \
_t->str, _t->len, FLAGS, \
OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); \
free_string(_t); \
} \
|
91aab4 | 1999-12-13 | Martin Stjernholm | | } while (0)
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | #define pike_add_function(NAME, CFUN, TYPE, FLAGS) \
pike_add_function2(NAME, CFUN, TYPE, FLAGS, \
OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND)
|
0542ef | 1999-11-17 | Fredrik Hübinette (Hubbe) | | #ifndef NO_PIKE_SHORTHAND
#define add_function pike_add_function
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #endif
|
3c0c28 | 1998-01-26 | Fredrik Hübinette (Hubbe) | |
|
852415 | 1999-12-14 | Fredrik Hübinette (Hubbe) | | #define START_NEW_PROGRAM_ID(ID) do { \
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | | start_new_program(); \
Pike_compiler->new_program->id=PIKE_CONCAT3(PROG_,ID,_ID); \
}while(0)
|
852415 | 1999-12-14 | Fredrik Hübinette (Hubbe) | |
|
3c0c28 | 1998-01-26 | Fredrik Hübinette (Hubbe) | | #ifdef DEBUG_MALLOC
|
d00c50 | 1999-03-11 | Henrik Grubbström (Grubba) | | #define end_program() ((struct program *)debug_malloc_pass(debug_end_program()))
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #define end_class(NAME, FLAGS) (debug_malloc_touch(Pike_compiler->new_program), debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS))
|
3c0c28 | 1998-01-26 | Fredrik Hübinette (Hubbe) | | #else
|
45ee5d | 1999-02-10 | Fredrik Hübinette (Hubbe) | | #define end_class(NAME,FLAGS) debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS)
|
3c0c28 | 1998-01-26 | Fredrik Hübinette (Hubbe) | | #define end_program debug_end_program
#endif
|
bcd574 | 1999-03-17 | Fredrik Hübinette (Hubbe) | |
#ifdef PIKE_DEBUG
#define start_new_program() debug_start_new_program(__LINE__,__FILE__)
#else
#define start_new_program() debug_start_new_program()
#endif
|
852415 | 1999-12-14 | Fredrik Hübinette (Hubbe) | |
|
45d87e | 2000-07-18 | Martin Stjernholm | | #define gc_cycle_check_program(X, WEAK) \
gc_cycle_enqueue((gc_cycle_check_cb *) real_gc_cycle_check_program, (X), (WEAK))
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | |
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | |
#define Pike_new_program Pike_compiler->new_program
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | |
|
4f9158 | 2001-01-10 | Martin Stjernholm | |
|
ac8715 | 2000-09-25 | Fredrik Hübinette (Hubbe) | | #define TEST_COMPAT(MAJOR,MINOR) \
(Pike_compiler->compat_major < (MAJOR) || \
(Pike_compiler->compat_major == (MAJOR) && \
Pike_compiler->compat_minor <= (MINOR)))
|
e2d9e6 | 2000-06-10 | Martin Stjernholm | | #endif /* PROGRAM_H */
|
1ef557 | 2000-08-30 | Henrik Grubbström (Grubba) | |
#ifndef LAS_H
#include "las.h"
#endif /* !LAS_H */
|