FS2_Open
Open source remastering of the Freespace 2 engine
sexp_tree.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 #ifndef _SEXP_TREE_H
11 #define _SEXP_TREE_H
12 
13 // 4786 is identifier truncated to 255 characters (happens all the time in Microsoft #includes) -- Goober5000
14 #pragma warning(disable: 4786)
15 
16 #include "parse/sexp.h"
17 #include "parse/parselo.h"
18 
19 // Goober5000 - it's dynamic now
20 //#define MAX_SEXP_TREE_SIZE 500
21 //#define MAX_SEXP_TREE_SIZE 1050
22 //#define MAX_SEXP_TREE_SIZE ((MAX_SEXP_NODES)*2/3)
23 
24 // tree_node type
25 #define SEXPT_UNUSED 0x0000
26 #define SEXPT_UNINIT 0x0001
27 #define SEXPT_UNKNOWN 0x0002
28 
29 #define SEXPT_VALID 0x1000
30 #define SEXPT_TYPE_MASK 0x00ff
31 #define SEXPT_TYPE(X) (SEXPT_TYPE_MASK & X)
32 
33 #define SEXPT_OPERATOR 0x0010
34 #define SEXPT_NUMBER 0x0020
35 #define SEXPT_STRING 0x0040
36 #define SEXPT_VARIABLE 0x0080
37 
38 // tree_node flag
39 #define NOT_EDITABLE 0x00
40 #define OPERAND 0x01
41 #define EDITABLE 0x02
42 #define COMBINED 0x04
43 
44 // Bitmaps
45 #define BITMAP_OPERATOR 0
46 #define BITMAP_DATA 1
47 #define BITMAP_VARIABLE 2
48 #define BITMAP_ROOT 3
49 #define BITMAP_ROOT_DIRECTIVE 4
50 #define BITMAP_CHAIN 5
51 #define BITMAP_CHAIN_DIRECTIVE 6
52 #define BITMAP_GREEN_DOT 7
53 #define BITMAP_BLACK_DOT 8
54 #define BITMAP_BLUE_DOT BITMAP_ROOT
55 #define BITMAP_RED_DOT BITMAP_ROOT_DIRECTIVE
56 #define BITMAP_NUMBERED_DATA 9
57 //Therefore NEXT DEFINE should be 9+12 or 21
58 
59 
60 
61 // tree behavior modes (or tree subtype)
62 #define ST_LABELED_ROOT 0x10000
63 #define ST_ROOT_DELETABLE 0x20000
64 #define ST_ROOT_EDITABLE 0x40000
65 
66 #define MODE_GOALS (1 | ST_LABELED_ROOT | ST_ROOT_DELETABLE)
67 #define MODE_EVENTS (2 | ST_LABELED_ROOT | ST_ROOT_DELETABLE | ST_ROOT_EDITABLE)
68 #define MODE_CAMPAIGN (3 | ST_LABELED_ROOT | ST_ROOT_DELETABLE)
69 
70 // various tree operations notification codes (to be handled by derived class)
71 #define ROOT_DELETED 1
72 #define ROOT_RENAMED 2
73 
74 #define SEXP_ITEM_F_DUP (1<<0)
75 
76 /*
77  * Notes: An sexp_tree_item is basically a node in a tree. The sexp_tree is an array of
78  * these node items.
79  */
80 
82 {
83 public:
85 
86  int type;
87  int parent; // pointer to parent of this item
88  int child; // pointer to first child of this item
89  int next; // pointer to next sibling
90  int flags;
91  char text[2 * TOKEN_LENGTH + 2];
92  HTREEITEM handle;
93 };
94 
96 {
97 public:
98  int type;
99  int op;
100  const char *text;
101  int flags;
103 
104  sexp_list_item() : flags(0), next(NULL) {}
105 
106  void set_op(int op_num);
107  void set_data(const char *str, int t = (SEXPT_STRING | SEXPT_VALID));
108  void set_data_dup(const char *str, int t = (SEXPT_STRING | SEXPT_VALID));
109 
110  void add_op(int op_num);
111  void add_data(const char *str, int t = (SEXPT_STRING | SEXPT_VALID));
112  void add_data_dup(const char *str, int t = (SEXPT_STRING | SEXPT_VALID));
113  void add_list(sexp_list_item *list);
114 
115  void shallow_copy(const sexp_list_item *src);
116  void destroy();
117 };
118 
119 class sexp_tree : public CTreeCtrl
120 {
121 public:
122  sexp_tree();
123 
124  int find_text(const char *text, int *find);
125  int query_restricted_opf_range(int opf);
126  void verify_and_fix_arguments(int node);
127  void post_load();
128  void update_help(HTREEITEM h);
129  const char *help(int code);
130  HTREEITEM insert(LPCTSTR lpszItem, int image = BITMAP_ROOT, int sel_image = BITMAP_ROOT, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
131  HTREEITEM handle(int node);
132  int get_type(HTREEITEM h);
133  void setup(CEdit *ptr = NULL);
134  int query_false(int node = -1);
135  int add_default_operator(int op, int argnum);
136  int get_default_value(sexp_list_item *item, char *text_buf, int op, int i);
138  int query_default_argument_available(int op, int i);
139  void swap_roots(HTREEITEM one, HTREEITEM two);
140  void move_branch(int source, int parent = -1);
141  HTREEITEM move_branch(HTREEITEM source, HTREEITEM parent = TVI_ROOT, HTREEITEM after = TVI_LAST);
142  void copy_branch(HTREEITEM source, HTREEITEM parent = TVI_ROOT, HTREEITEM after = TVI_LAST);
143  void setup_selected(HTREEITEM h = NULL);
144  void add_or_replace_operator(int op, int replace_flag = 0);
145 // void replace_one_arg_operator(const char *op, const char *data, int type);
146  void replace_operator(const char *op);
147  void replace_data(const char *data, int type);
148  void replace_variable_data(int var_idx, int type);
149  void link_modified(int *ptr);
150  void ensure_visible(int node);
151  int node_error(int node, const char *msg, int *bypass);
152  void expand_branch(HTREEITEM h);
153  void expand_operator(int node);
154  void merge_operator(int node);
155  int end_label_edit(TVITEMA &item);
156  int edit_label(HTREEITEM h);
157  int identify_arg_type(int node);
158  int count_args(int node);
159  void right_clicked(int mode = 0);
161  virtual void build_tree();
162  void set_node(int index, int type, const char *text);
163  void free_node(int node, int cascade = 0);
164  int allocate_node(int parent, int after = -1);
165  int allocate_node();
166  int find_free_node();
167  void clear_tree(const char *op = NULL);
168  void reset_handles();
169  int save_tree(int node = -1);
170  void load_tree(int index, const char *deflt = "true");
171  void add_one_arg_operator(const char *op, const char *data, int type);
172  void add_operator(const char *op, HTREEITEM h = TVI_ROOT);
173  int add_data(const char *data, int type);
174  int add_variable_data(const char *data, int type);
175  void add_sub_tree(int node, HTREEITEM root);
176  int load_sub_tree(int index, bool valid, const char *text);
177  void hilite_item(int node);
178  const char *match_closest_operator(const char *str, int node);
179  void delete_sexp_tree_variable(const char *var_name);
180  void modify_sexp_tree_variable(const char *old_name, int sexp_var_index);
182  int get_tree_name_to_sexp_variable_index(const char *tree_name);
183  int get_modify_variable_type(int parent);
184  int get_variable_count(const char *var_name);
185  int get_loadout_variable_count(int var_index);
186 
187  // Goober5000
188  int find_argument_number(int parent_node, int child_node);
189  int find_ancestral_argument_number(int parent_op, int child_node);
190  int query_node_argument_type(int node);
191 
192  //WMC
193  int get_sibling_place(int node);
194  int get_data_image(int node);
195 
196 
197  sexp_list_item *get_listing_opf(int opf, int parent_node, int arg_index);
199  sexp_list_item *get_listing_opf_bool(int parent_node = -1);
202  sexp_list_item *get_listing_opf_ship(int parent_node = -1);
204  sexp_list_item *get_listing_opf_subsystem(int parent_node, int arg_index);
208  sexp_list_item *get_listing_opf_ai_goal(int parent_node);
222  sexp_list_item *get_listing_opf_goal_name(int parent_node);
226  sexp_list_item *get_listing_opf_event_name(int parent_node);
257  sexp_list_item *get_listing_opf_subsystem_or_none(int parent_node, int arg_index);
258  sexp_list_item *get_listing_opf_subsys_or_generic(int parent_node, int arg_index);
280 
281  int m_mode;
283  int select_sexp_node; // used to select an sexp item on dialog box open.
285  HTREEITEM m_h_drag;
286  HTREEITEM m_h_drop;
287  CImageList *m_p_image_list;
288  CEdit *help_box;
290  CPoint m_pt;
291 
292  // ClassWizard generated virtual function overrides
293  //{{AFX_VIRTUAL(sexp_tree)
294  public:
295  virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
296  //}}AFX_VIRTUAL
297 
298  // Generated message map functions
299 protected:
300  //{{AFX_MSG(sexp_tree)
301  afx_msg void OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
302  afx_msg void OnMouseMove(UINT nFlags, CPoint point);
303  afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
304  afx_msg void OnDestroy();
305  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
306  afx_msg void OnKeydown(NMHDR* pNMHDR, LRESULT* pResult);
307  //}}AFX_MSG
308 
309  int load_branch(int index, int parent);
310  int save_branch(int cur, int at_root = 0);
311  void free_node2(int node);
312 
313  int flag;
314  int *modified;
315 
318 
319  HTREEITEM item_handle;
321  // these 2 variables are used to help location data sources. Sometimes looking up
322  // valid data can require complex code just to get to an index that is required to
323  // locate data. These are set up in right_clicked() to try and short circuit having
324  // to do the lookup again in the code that actually does the adding or replacing of
325  // the data if it's selected.
326  int add_instance; // a source reference index indicator for adding data
327  int replace_instance; // a source reference index indicator for replacing data
328 
329  DECLARE_MESSAGE_MAP()
330 };
331 
332 #endif
CImageList * m_p_image_list
Definition: sexp_tree.h:287
void expand_operator(int node)
Definition: sexp_tree.cpp:2815
int i
Definition: multi_pxo.cpp:466
#define SEXPT_STRING
Definition: sexp_tree.h:35
HTREEITEM item_handle
Definition: sexp_tree.h:319
int find_argument_number(int parent_node, int child_node)
Definition: sexp_tree.cpp:4508
int query_default_argument_available(int op)
Definition: sexp_tree.cpp:2609
sexp_list_item * get_listing_opf_message()
Definition: sexp_tree.cpp:5271
sexp_list_item * get_listing_opf_order_recipient()
Definition: sexp_tree.cpp:5544
sexp_list_item * get_listing_opf_who_from()
Definition: sexp_tree.cpp:5318
sexp_list_item * get_listing_opf_string()
Definition: sexp_tree.cpp:5650
sexp_list_item * get_listing_opf(int opf, int parent_node, int arg_index)
Definition: sexp_tree.cpp:4124
char text[2 *TOKEN_LENGTH+2]
Definition: sexp_tree.h:91
GLfloat GLfloat GLfloat GLfloat h
Definition: Glext.h:7280
void add_sub_tree(int node, HTREEITEM root)
Definition: sexp_tree.cpp:476
HTREEITEM m_h_drag
Definition: sexp_tree.h:285
void reset_handles()
Definition: sexp_tree.cpp:115
sexp_list_item * get_listing_opf_turret_target_order()
Definition: sexp_tree.cpp:5878
int add_default_operator(int op, int argnum)
Definition: sexp_tree.cpp:2188
int query_node_argument_type(int node)
Definition: sexp_tree.cpp:1402
sexp_list_item * get_listing_opf_dockee_point(int parent_node)
Definition: sexp_tree.cpp:5235
GLuint index
Definition: Glext.h:5608
CPoint m_pt
Definition: sexp_tree.h:290
sexp_list_item * next
Definition: sexp_tree.h:102
sexp_list_item * get_listing_opf_damage_type()
Definition: sexp_tree.cpp:5927
sexp_list_item * get_listing_opf_ship_effect()
Definition: sexp_tree.cpp:5392
sexp_list_item * get_listing_opf_ship_class_name()
Definition: sexp_tree.cpp:5697
sexp_list_item * get_listing_opf_sound_environment_option()
Definition: sexp_tree.cpp:5362
#define BITMAP_ROOT
Definition: sexp_tree.h:48
#define SEXPT_UNUSED
Definition: sexp_tree.h:25
void copy_branch(HTREEITEM source, HTREEITEM parent=TVI_ROOT, HTREEITEM after=TVI_LAST)
Definition: sexp_tree.cpp:3590
sexp_list_item * get_listing_opf_support_ship_class()
Definition: sexp_tree.cpp:5041
void set_data(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
Definition: sexp_tree.cpp:2092
sexp_list_item * get_listing_opf_medal_name()
Definition: sexp_tree.cpp:5659
int get_item_index_to_var_index()
Definition: sexp_tree.cpp:6117
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: Glext.h:5230
void free_node2(int node)
Definition: sexp_tree.cpp:427
int find_free_node()
Definition: sexp_tree.cpp:311
sexp_list_item * get_listing_opf_subsystem_or_none(int parent_node, int arg_index)
Definition: sexp_tree.cpp:5757
void link_modified(int *ptr)
Definition: sexp_tree.cpp:3156
void add_op(int op_num)
Definition: sexp_tree.cpp:2112
UINT WPARAM wParam
Definition: msacm.h:1064
int add_variable_data(const char *data, int type)
Definition: sexp_tree.cpp:2889
GLenum mode
Definition: Glext.h:5794
SCP_vector< sexp_tree_item > tree_nodes
Definition: sexp_tree.h:316
sexp_list_item * get_listing_opf_jump_nodes()
Definition: sexp_tree.cpp:5778
afx_msg void OnMouseMove(UINT nFlags, CPoint point)
Definition: sexp_tree.cpp:3670
void delete_sexp_tree_variable(const char *var_name)
Definition: sexp_tree.cpp:6038
const char * match_closest_operator(const char *str, int node)
Definition: sexp_tree.cpp:1501
void setup(CEdit *ptr=NULL)
Definition: sexp_tree.cpp:3754
int edit_label(HTREEITEM h)
Definition: sexp_tree.cpp:1349
UINT WPARAM LPARAM lParam
Definition: msacm.h:1064
sexp_list_item * get_listing_opf_hud_gauge_name()
Definition: sexp_tree.cpp:5707
int total_nodes
Definition: sexp_tree.h:317
const char * text
Definition: sexp_tree.h:100
unsigned int UINT
Definition: config.h:82
afx_msg void OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
Definition: sexp_tree.cpp:3638
int find_text(const char *text, int *find)
Definition: sexp_tree.cpp:4052
HTREEITEM m_h_drop
Definition: sexp_tree.h:286
sexp_list_item * get_listing_opf_ship_point()
Definition: sexp_tree.cpp:5424
int get_default_value(sexp_list_item *item, char *text_buf, int op, int i)
Definition: sexp_tree.cpp:2265
sexp_list_item * get_listing_opf_variable_type()
sexp_list_item * get_listing_opf_persona()
Definition: sexp_tree.cpp:5292
sexp_list_item * get_listing_opf_weapon_name()
Definition: sexp_tree.cpp:5675
void set_node(int index, int type, const char *text)
Definition: sexp_tree.cpp:443
sexp_list_item * get_listing_opf_priority()
Definition: sexp_tree.cpp:5340
int get_type(HTREEITEM h)
Definition: sexp_tree.cpp:3873
sexp_list_item * get_listing_opf_docker_point(int parent_node)
Definition: sexp_tree.cpp:5198
void right_clicked(int mode=0)
Definition: sexp_tree.cpp:570
sexp_list_item * get_listing_opf_game_snds()
Definition: sexp_tree.cpp:6021
long LPARAM
Definition: config.h:101
void verify_and_fix_arguments(int node)
Definition: sexp_tree.cpp:3229
GLenum type
Definition: Gl.h:1492
int get_tree_name_to_sexp_variable_index(const char *tree_name)
Definition: sexp_tree.cpp:6128
int get_variable_count(const char *var_name)
Definition: sexp_tree.cpp:6143
int root_item
Definition: sexp_tree.h:320
HWND DWORD code
Definition: vddraw.h:425
void swap_roots(HTREEITEM one, HTREEITEM two)
Definition: sexp_tree.cpp:3623
sexp_list_item * get_listing_opf_adjust_audio_volume()
Definition: sexp_tree.cpp:5372
sexp_list_item * get_listing_opf_background_bitmap()
Definition: sexp_tree.cpp:5825
sexp_list_item * get_listing_opf_departure_location()
Definition: sexp_tree.cpp:5118
void update_help(HTREEITEM h)
Definition: sexp_tree.cpp:3891
sexp_list_item * get_listing_opf_goal_name(int parent_node)
Definition: sexp_tree.cpp:5502
sexp_list_item * get_listing_opf_sun_bitmap()
Definition: sexp_tree.cpp:5838
sexp_list_item * get_listing_opf_iff()
Definition: sexp_tree.cpp:5019
int save_branch(int cur, int at_root=0)
Definition: sexp_tree.cpp:260
void replace_operator(const char *op)
Definition: sexp_tree.cpp:3459
sexp_list_item * get_listing_opf_point()
Definition: sexp_tree.cpp:5000
virtual void build_tree()
Definition: sexp_tree.cpp:465
sexp_list_item * get_listing_opf_skybox_flags()
Definition: sexp_tree.cpp:5814
sexp_list_item * get_listing_opf_ship_wing_point_or_none()
Definition: sexp_tree.cpp:5476
afx_msg void OnLButtonUp(UINT nFlags, CPoint point)
Definition: sexp_tree.cpp:3690
sexp_list_item * get_listing_opf_nebula_patterns()
Definition: sexp_tree.cpp:6006
int get_data_image(int node)
Definition: sexp_tree.cpp:4563
int end_label_edit(TVITEMA &item)
Definition: sexp_tree.cpp:1412
sexp_list_item * get_listing_opf_nebula_storm_type()
Definition: sexp_tree.cpp:5851
void shallow_copy(const sexp_list_item *src)
afx_msg void OnKeydown(NMHDR *pNMHDR, LRESULT *pResult)
Definition: sexp_tree.cpp:4083
BOOL m_dragging
Definition: sexp_tree.h:284
sexp_list_item * get_listing_opf_sound_environment()
Definition: sexp_tree.cpp:5350
sexp_list_item * get_listing_opf_ship_wing()
Definition: sexp_tree.cpp:5534
sexp_list_item * get_listing_opf_font()
Definition: sexp_tree.cpp:5306
sexp_list_item * get_listing_opf_ship_not_player()
Definition: sexp_tree.cpp:5731
sexp_list_item * get_listing_opf_explosion_option()
Definition: sexp_tree.cpp:5403
sexp_list_item * get_listing_opf_huge_weapon()
Definition: sexp_tree.cpp:5718
sexp_list_item * get_listing_opf_skybox_model()
Definition: sexp_tree.cpp:5806
sexp_list_item * get_listing_opf_keypress()
Definition: sexp_tree.cpp:5567
void merge_operator(int node)
Definition: sexp_tree.cpp:2851
const char * help(int code)
Definition: sexp_tree.cpp:3856
int op_num
Definition: multi_sexp.cpp:48
int get_modify_variable_type(int parent)
Definition: sexp_tree.cpp:3188
sexp_list_item * get_listing_opf_subsystem(int parent_node, int arg_index)
Definition: sexp_tree.cpp:4777
sexp_list_item * get_listing_opf_soundtrack_name()
Definition: sexp_tree.cpp:5092
sexp_list_item * get_listing_opf_post_effect()
Definition: sexp_tree.cpp:5889
sexp_list_item * get_listing_opf_waypoint_path()
Definition: sexp_tree.cpp:5413
sexp_list_item * get_listing_opf_animation_type()
Definition: sexp_tree.cpp:5938
int add_data(const char *data, int type)
Definition: sexp_tree.cpp:2874
GLdouble GLdouble t
Definition: Glext.h:5329
void expand_branch(HTREEITEM h)
Definition: sexp_tree.cpp:2841
sexp_list_item * get_listing_opf_arrival_location()
Definition: sexp_tree.cpp:5107
int query_restricted_opf_range(int opf)
Definition: sexp_tree.cpp:4099
HTREEITEM insert(LPCTSTR lpszItem, int image=BITMAP_ROOT, int sel_image=BITMAP_ROOT, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsertAfter=TVI_LAST)
Definition: sexp_tree.cpp:3832
sexp_list_item * get_listing_opf_ship_wing_wholeteam()
Definition: sexp_tree.cpp:5434
sexp_list_item * get_listing_opf_positive()
Definition: sexp_tree.cpp:4667
CEdit * mini_help_box
Definition: sexp_tree.h:289
void replace_data(const char *data, int type)
Definition: sexp_tree.cpp:3395
sexp_list_item * get_listing_opf_ssm_class()
Definition: sexp_tree.cpp:5058
int m_mode
Definition: sexp_tree.h:281
sexp_list_item * get_listing_opf_bool(int parent_node=-1)
Definition: sexp_tree.cpp:4639
afx_msg void OnLButtonDown(UINT nFlags, CPoint point)
Definition: sexp_tree.cpp:3664
sexp_list_item * get_listing_opf_ship_type()
Definition: sexp_tree.cpp:5555
void move_branch(int source, int parent=-1)
Definition: sexp_tree.cpp:3511
sexp_list_item * get_listing_opf_intel_name()
Definition: sexp_tree.cpp:5686
sexp_list_item * get_listing_opf_ship_wing_point()
Definition: sexp_tree.cpp:5465
sexp_list_item * get_listing_opf_ai_order()
Definition: sexp_tree.cpp:5614
sexp_list_item * get_listing_opf_armor_type()
Definition: sexp_tree.cpp:5917
int BOOL
Definition: config.h:80
sexp_list_item * get_listing_opf_skill_level()
Definition: sexp_tree.cpp:5625
#define TOKEN_LENGTH
Definition: globals.h:41
void add_data(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
Definition: sexp_tree.cpp:2128
sexp_list_item * get_listing_opf_hud_gauge()
Definition: sexp_tree.cpp:5382
sexp_list_item * get_listing_opf_turret_target_priorities()
Definition: sexp_tree.cpp:5905
int load_sub_tree(int index, bool valid, const char *text)
Definition: sexp_tree.cpp:535
void ensure_visible(int node)
Definition: sexp_tree.cpp:3146
sexp_list_item * get_listing_opf_wing()
Definition: sexp_tree.cpp:4756
sexp_list_item * get_listing_opf_weapon_banks()
Definition: sexp_tree.cpp:5957
void set_op(int op_num)
Definition: sexp_tree.cpp:2074
void add_operator(const char *op, HTREEITEM h=TVI_ROOT)
Definition: sexp_tree.cpp:2906
void add_data_dup(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
Definition: sexp_tree.cpp:2144
void replace_variable_data(int var_idx, int type)
Definition: sexp_tree.cpp:3424
void free_node(int node, int cascade=0)
Definition: sexp_tree.cpp:394
int get_sibling_place(int node)
Definition: sexp_tree.cpp:4586
void set_data_dup(const char *str, int t=(SEXPT_STRING|SEXPT_VALID))
Definition: sexp_tree.cpp:2102
int * modified
Definition: sexp_tree.h:314
sexp_list_item * get_listing_opf_mission_name()
Definition: sexp_tree.cpp:5486
int allocate_node()
Definition: sexp_tree.cpp:325
int save_tree(int node=-1)
Definition: sexp_tree.cpp:237
HTREEITEM handle(int node)
Definition: sexp_tree.cpp:3851
void post_load()
Definition: sexp_tree.cpp:458
long LRESULT
Definition: config.h:100
#define SEXPT_VALID
Definition: sexp_tree.h:29
int flag
Definition: sexp_tree.h:313
sexp_list_item * get_listing_opf_flexible_argument()
Definition: sexp_tree.cpp:4627
sexp_list_item * get_listing_opf_hud_elements()
Definition: sexp_tree.cpp:5949
GLenum src
Definition: Glext.h:5917
GLenum GLsizei GLenum GLenum const GLvoid * data
Definition: Gl.h:1509
int find_ancestral_argument_number(int parent_op, int child_node)
Definition: sexp_tree.cpp:4533
sexp_list_item * get_listing_opf_ship_flags()
Definition: sexp_tree.cpp:5975
CEdit * help_box
Definition: sexp_tree.h:288
int ctree_size
Definition: sexp_tree.h:160
void load_tree(int index, const char *deflt="true")
Definition: sexp_tree.cpp:124
sexp_list_item * get_listing_opf_ai_goal(int parent_node)
Definition: sexp_tree.cpp:5157
void add_or_replace_operator(int op, int replace_flag=0)
Definition: sexp_tree.cpp:2036
int node_error(int node, const char *msg, int *bypass)
Definition: sexp_tree.cpp:3118
GLsizei GLsizei GLchar * source
Definition: Glext.h:5625
sexp_list_item * get_listing_opf_nebula_poof()
Definition: sexp_tree.cpp:5865
sexp_list_item * get_listing_opf_ship_wing_shiponteam_point()
Definition: sexp_tree.cpp:5447
void hilite_item(int node)
Definition: sexp_tree.cpp:3139
afx_msg void OnDestroy()
Definition: sexp_tree.cpp:3838
sexp_list_item * get_listing_opf_team_colors()
Definition: sexp_tree.cpp:5995
sexp_list_item * get_listing_opf_mission_moods()
Definition: sexp_tree.cpp:5965
sexp_list_item * get_listing_opf_cargo()
Definition: sexp_tree.cpp:5636
int add_instance
Definition: sexp_tree.h:326
sexp_list_item * get_listing_opf_null()
Definition: sexp_tree.cpp:4615
void add_list(sexp_list_item *list)
Definition: sexp_tree.cpp:2160
HTREEITEM handle
Definition: sexp_tree.h:92
int load_branch(int index, int parent)
Definition: sexp_tree.cpp:166
int query_false(int node=-1)
Definition: sexp_tree.cpp:221
int select_sexp_node
Definition: sexp_tree.h:283
sexp_list_item * get_listing_opf_event_name(int parent_node)
Definition: sexp_tree.cpp:5581
int replace_instance
Definition: sexp_tree.h:327
sexp_list_item * get_listing_opf_number()
Definition: sexp_tree.cpp:4682
int count_args(int node)
Definition: sexp_tree.cpp:1307
int identify_arg_type(int node)
Definition: sexp_tree.cpp:1322
sexp_list_item * get_listing_opf_variable_names()
Definition: sexp_tree.cpp:5791
void add_one_arg_operator(const char *op, const char *data, int type)
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam)
Definition: sexp_tree.cpp:1557
int item_index
Definition: sexp_tree.h:282
sexp_list_item * get_listing_opf_ai_class()
Definition: sexp_tree.cpp:5030
sexp_list_item * get_listing_opf_arrival_anchor_all()
Definition: sexp_tree.cpp:5129
sexp_list_item * get_listing_opf_subsys_or_generic(int parent_node, int arg_index)
Definition: sexp_tree.cpp:5767
sexp_list_item * get_listing_opf_ship_with_bay()
Definition: sexp_tree.cpp:5070
void clear_tree(const char *op=NULL)
Definition: sexp_tree.cpp:99
void modify_sexp_tree_variable(const char *old_name, int sexp_var_index)
Definition: sexp_tree.cpp:6078
int get_loadout_variable_count(int var_index)
Definition: sexp_tree.cpp:6166
sexp_list_item * get_listing_opf_ship(int parent_node=-1)
Definition: sexp_tree.cpp:4696
sexp_list_item * get_listing_opf_ship_or_none()
Definition: sexp_tree.cpp:5747
sexp_list_item * get_listing_opf_subsystem_type(int parent_node)
Definition: sexp_tree.cpp:4954
void setup_selected(HTREEITEM h=NULL)
Definition: sexp_tree.cpp:553