aboutsummaryrefslogtreecommitdiff
path: root/generic/tkZinc.h
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tkZinc.h')
-rw-r--r--generic/tkZinc.h30
1 files changed, 28 insertions, 2 deletions
diff --git a/generic/tkZinc.h b/generic/tkZinc.h
index 5bc84e1..cd052be 100644
--- a/generic/tkZinc.h
+++ b/generic/tkZinc.h
@@ -35,6 +35,31 @@
#include "List.h"
#include "MapInfo.h"
+typedef struct _TagSearch {
+ WidgetInfo *wi;
+ Item current; /* Pointer to last item returned. */
+ Item previous; /* The item right before the current
+ * is tracked so if the current is
+ * deleted we don't have to start from the
+ * beginning. */
+ ZnBool over; /* Non-zero means NextItem should always
+ * return NULL. */
+ int type; /* search type */
+ int id; /* item id for searches by id */
+
+ char *tag; /* tag expression string */
+ int tag_index; /* current position in string scan */
+ int tag_len; /* length of tag expression string */
+
+ char *rewrite_buf; /* tag string (after removing escapes) */
+ unsigned int rewrite_buf_alloc; /* available space for rewrites */
+
+ struct _TagSearchExpr *expr; /* compiled tag expression */
+ GroupItem group;
+ ZnBool recursive;
+ ZnList item_stack;
+} TagSearch;
+
#ifdef PTK
Tcl_Obj *NewLongObj(long val);
Tcl_Obj *NewBooleanObj(ZnBool val);
@@ -50,8 +75,9 @@ void SetStringObj(Tcl_Obj *o, char *val);
char *Tcl_GetString(Tcl_Obj *obj);
#endif
-int ZnItemsWithTagOrId(WidgetInfo *wi, Tcl_Obj *tag_or_id, Item *item,
- Item **item_list);
+int ZnItemWithTagOrId(WidgetInfo *wi, Tcl_Obj *tag_or_id, Item group,
+ ZnBool recursive, Item *item, TagSearch **search_var);
+void ZnTagSearchDestroy(TagSearch *search);
int ParseCoordList(WidgetInfo *wi, Tcl_Obj *arg, ZnPoint **pts,
int *num_pts);
void DoItem(Tcl_Interp *interp, Item item, int part, Tk_Uid tag_uid);