1 #ifndef _types__h__included__
2 #define _types__h__included__
9 /* Object marked for garbage collection. */
10 #define OF_MARKED_FOR_GC 1
11 /* Already execuing message handler. */
12 #define OF_EXECUTING 2
13 /* on line, no non-whitespace yet. */
15 /* Last was non-whitespace. */
16 #define PS_LAST_NOT_WS 1
17 /* Last was whitespace, non-ws seen. */
18 #define PS_WHITESPACE 2
19 /* Last was newline. */
21 /* Last was Carriage return. */
25 /* On non-comment line. */
26 #define PS2_NOT_COMMENT 1
27 /* On comment line. */
40 /* Class of object. */
41 struct class* o_class
;
42 /* Special receiver. */
43 void (*o_special
)(struct context
* ctx
, struct message
* msg
);
44 /* Previous object. */
45 struct object
* o_prev
;
47 struct object
* o_next
;
49 struct object
* o_fields
[0];
56 struct object
* m_target
;
57 /* Previous message in queue. */
58 struct message
* m_prev
;
59 /* Next message in queue. */
60 struct message
* m_next
;
61 /* Number of parameters in message. */
62 size_t m_parameter_count
;
63 /* Parameters contained. */
64 struct object
* m_parameters
[0];
70 /* Object reference held. */
71 struct object
* s_object
;
72 /* Next stack slot. */
79 /* Object list head. */
80 struct object
* v_object_list
;
81 /* Message queue head. */
82 struct message
* v_msgq_head
;
83 /* Message queue tail. */
84 struct message
* v_msgq_tail
;
85 /* Greatest locals count for any class. */
87 /* Message queue lock. */
88 struct lock v_msgq_lock
;
96 /* Message being handled. */
97 struct message
* c_message
;
98 /* Stack top pointer. */
99 struct stack
* c_stacktop
;
100 /* Instruction pointer. */
102 /* Number register value. */
104 /* Alternative mode flag. */
109 struct object
* c_locals
[0];
117 /* Main parser status. */
119 /* Secondary parser status. */
121 /* Backslash flag. */
122 unsigned p_backslash
;
123 /* Number of class to parse. */
125 /* Number of fields. */
127 /* Number of locals. */
129 /* Max number of locals. */
131 /* Allocated size of instructions. */
132 size_t p_ins_allocated
;
133 /* Real size of instructions. */
136 unsigned char* p_ins
;
139 /* Have value for field. 0 = no, 1 = zero, 2 = nonzero. */
140 unsigned p_have_field_value
;