Moved 3 rc promotion keywords from gschem into libgeda (fix for bug#1748143)
[geda-gaf/peter-b.git] / libgeda / include / struct.h
blobcbedca38d0fb66130bcf4b2e8f49bc3c1c59905d
1 /* gEDA - GPL Electronic Design Automation
2 * libgeda - gEDA's Library
3 * Copyright (C) 1998-2004 Ales V. Hvezda
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef STRUCT_H
21 #define STRUCT_H
23 #include <glib.h> /* Include needed to make GList work. */
25 /* Wrappers around a new list mechanism */
26 typedef struct _GedaList SELECTION;
28 /* gschem structures (gschem) */
29 typedef struct st_complex COMPLEX;
30 typedef struct st_line LINE;
31 typedef struct st_circle CIRCLE;
32 typedef struct st_arc ARC;
33 typedef struct st_box BOX;
34 typedef struct st_picture PICTURE;
35 typedef struct st_text TEXT;
37 typedef struct st_attrib ATTRIB;
38 typedef struct st_object OBJECT;
39 typedef struct st_page PAGE;
40 typedef struct st_toplevel TOPLEVEL;
41 typedef struct st_color COLOR;
42 typedef struct st_undo UNDO;
43 typedef struct st_tile TILE;
44 typedef struct st_tile_loc TILE_LOC;
46 typedef struct st_conn CONN;
47 typedef struct st_bus_ripper BUS_RIPPER;
49 /* Used when you move objects and you want the nets/pins to stretch */
50 typedef struct st_stretch STRETCH;
52 /* netlist structures (gnetlist) */
53 typedef struct st_netlist NETLIST;
54 typedef struct st_cpinlist CPINLIST;
55 typedef struct st_net NET;
57 /* sch check structures (gschcheck) */
58 typedef struct st_schcheck SCHCHECK;
59 typedef struct st_chkerrs CHKERRS;
61 /* Managed text buffers */
62 typedef struct _TextBuffer TextBuffer;
64 /* Component library objects */
65 typedef struct _CLibSource CLibSource;
66 typedef struct _CLibSymbol CLibSymbol;
68 /* Component library search modes */
69 typedef enum { CLIB_EXACT=0, CLIB_GLOB } CLibSearchMode;
71 /* f_open behaviour flags. See documentation for f_open_flags() in
72 f_basic.c. */
73 typedef enum { F_OPEN_RC = 1,
74 F_OPEN_CHECK_BACKUP = 2,
75 F_OPEN_RESTORE_CWD = 4,
76 } FOpenFlags;
78 /* PB : change begin */
79 /* PB : these enum are constant to define :
80 - the end of open line of an object ;
81 - the type of the line of an object ;
82 - the filling of a closed object. */
83 /* PB : used in struct st_object (predefined type OBJECT)*/
84 typedef enum {END_NONE, END_SQUARE, END_ROUND} OBJECT_END;
85 typedef enum {TYPE_SOLID, TYPE_DOTTED, TYPE_DASHED, TYPE_CENTER, TYPE_PHANTOM, TYPE_ERASE} OBJECT_TYPE;
86 typedef enum {FILLING_HOLLOW, FILLING_FILL, FILLING_MESH, FILLING_HATCH, FILLING_VOID} OBJECT_FILLING;
87 /* PB : change end */
90 struct st_line {
91 int x[2];
92 int y[2];
96 /* pb20011014 - name the grips */
97 #define LINE_END1 0
98 #define LINE_END2 1
100 struct st_arc {
101 int x, y; /* world */
103 int width;
104 int height;
106 int start_angle;
107 int end_angle;
109 /* pb20011014 - name the grips */
110 #define ARC_CENTER 0
111 #define ARC_RADIUS 1
112 #define ARC_START_ANGLE 2
113 #define ARC_END_ANGLE 3
115 struct st_box {
116 /* upper is considered the origin */
117 int upper_x, upper_y; /* world */
118 int lower_x, lower_y;
121 /* pb20011014 - name the grips */
122 #define BOX_UPPER_LEFT 0
123 #define BOX_LOWER_RIGHT 1
124 #define BOX_UPPER_RIGHT 2
125 #define BOX_LOWER_LEFT 3
127 struct st_picture {
128 GdkPixbuf *original_picture;
129 GdkPixbuf *displayed_picture;
131 double ratio;
132 char *filename;
133 int angle;
134 char mirrored;
135 char embedded;
137 /* upper is considered the origin */
138 int upper_x, upper_y; /* world */
139 int lower_x, lower_y;
143 #define PICTURE_UPPER_LEFT 0
144 #define PICTURE_LOWER_RIGHT 1
145 #define PICTURE_UPPER_RIGHT 2
146 #define PICTURE_LOWER_LEFT 3
149 struct st_text {
150 int x, y; /* world origin */
152 char *string; /* text stuff */
153 int length;
154 int size;
155 int alignment;
156 int displayed_width;
157 int displayed_height;
158 int angle;
160 OBJECT *prim_objs;
163 struct st_complex {
164 int x, y; /* world origin */
166 int angle; /* orientation, only multiples
167 * of 90 degrees allowed */
168 /* in degrees */
169 int mirror;
171 OBJECT *prim_objs; /* Primitive objects */
172 /* objects which make up the */
173 /* complex */
176 struct st_circle {
177 int center_x, center_y; /* world */
178 int radius;
180 /* pb20011010 - removed : used only in o_circle_draw_xor() and
181 meaning unclear */
183 /* pb20011014 - name the grips */
184 #define CIRCLE_CENTER 0
185 #define CIRCLE_RADIUS 1
187 struct st_object {
188 int type; /* Basic information */
189 int sid;
190 char *name;
192 int w_top; /* Bounding box information */
193 int w_left; /* in world coords */
194 int w_right;
195 int w_bottom;
197 COMPLEX *complex;
198 LINE *line;
199 CIRCLE *circle;
200 ARC *arc;
201 BOX *box;
202 TEXT *text;
203 PICTURE *picture;
205 GList *tile_locs; /* tile locations */
207 GList *conn_list; /* List of connections */
208 /* to and from this object */
210 /* PB : change begin */
211 /* PB : every graphical primitive have more or less the same options. */
212 /* PB : depending on its nature a primitive is concerned with one or more */
213 /* PB : of these fields. If not, value must be ignored. */
214 OBJECT_END line_end;
215 OBJECT_TYPE line_type;
216 int line_width;
217 int line_space;
218 int line_length;
220 OBJECT_FILLING fill_type;
221 int fill_width;
222 int fill_angle1, fill_pitch1;
223 int fill_angle2, fill_pitch2;
224 /* PB : change end */
226 int visited; /* used in gnetlist for travesal purposes */
228 gboolean complex_embedded; /* is embedded component? */
229 gchar *complex_basename; /* Component Library Symbol name */
230 OBJECT *complex_parent; /* Complex parent object pointer */
231 /* used only in complex head nodes */
233 /* unused for now */
234 void (*action_func)(); /* Execute function */
236 void (*sel_func)(); /* Selected function */
237 void (*draw_func)(); /* Draw function */
239 int color; /* Which color */
240 int saved_color; /* Saved color */
241 int selected; /* object selected flag */
242 int locked_color; /* Locked color (used to save */
243 /* the object's real color */
244 /* when the object is locked) */
246 int draw_grips; /* if selected, enables
247 drawing of grips */
249 /* controls which direction bus rippers go */
250 /* it is either 0 for un-inited, */
251 /* 1 for right, -1 for left (horizontal bus) */
252 /* 1 for up, -1 for down (vertial bus) */
253 int bus_ripper_direction; /* only valid on buses */
256 int font_text_size; /* used only with fonts defs */
257 OBJECT *font_prim_objs; /* used only with fonts defs */
259 ATTRIB *attribs; /* attribute stuff */
260 ATTRIB *attached_to; /* when object is an attribute */
261 int attribute;
262 int show_name_value;
263 int visibility;
265 int whichend; /* for pins only, either 0 or 1 */
266 int pin_type; /* for pins only, either NET or BUS */
268 OBJECT *prev;
269 OBJECT *next;
273 struct st_attrib {
274 OBJECT *object; /* object attribute is connected to */
276 OBJECT *copied_to; /* used when copying attributes */
278 ATTRIB *prev;
279 ATTRIB *next;
282 struct st_conn {
283 OBJECT *other_object; /* The "other" object connected to this one */
284 int type; /* Always in reference to how the "other" */
285 /* object is connected to the current one */
286 int x, y; /* x, y coord of the connection */
287 int whichone; /* which endpoint of the current object */
288 /* caused this connection */
289 int other_whichone; /* which endpoint of the "other" object */
290 /* caused this connection */
293 /* this structure is used in gschem to add rippers when drawing nets */
294 /* it is never stored in any object, it is only temporary */
295 struct st_bus_ripper
297 int x[2];
298 int y[2];
301 struct st_stretch
303 OBJECT *object;
304 CONN *connection;
306 int whichone;
308 STRETCH *prev;
309 STRETCH *next;
312 struct st_undo {
314 /* one of these is used, depending on if you are doing in-memory */
315 /* or file based undo state saving */
316 char *filename;
317 OBJECT *object_head;
319 /* either UNDO_ALL or UNDO_VIEWPORT_ONLY */
320 int type;
322 /* viewport information */
323 int left, top, right, bottom;
325 /* up and down the hierarchy */
326 int up;
327 /* used to control which pages are viewable when moving around */
328 int page_control;
330 UNDO *prev;
331 UNDO *next;
334 struct st_tile {
335 GList *objects;
337 int top, left, right, bottom;
340 struct st_tile_loc {
341 int i, j; /* these are the indices into the tile structure */
344 struct st_page {
346 int pid;
348 OBJECT *object_head;
349 OBJECT *object_tail;
350 OBJECT *object_parent;
351 SELECTION *selection_list; /* new selection mechanism */
352 GList *complex_place_list;
353 OBJECT *attrib_place_head;
354 OBJECT *attrib_place_tail;
355 OBJECT *object_lastplace;
356 OBJECT *object_selected;
357 STRETCH *stretch_head;
358 STRETCH *stretch_tail;
360 char *page_filename;
361 int CHANGED; /* changed flag */
362 /*int zoom_factor; no longer used*/
363 int left, right, top, bottom; /* World coord limits */
364 double coord_aspectratio; /* Real worldcoords ratio (?) */
366 float to_screen_x_constant;
367 float to_screen_y_constant;
369 float to_world_x_constant;
370 float to_world_y_constant;
372 TILE world_tiles[MAX_TILES_X][MAX_TILES_Y];
374 /* Undo/Redo Stacks and pointers */
375 /* needs to go into page mechanism actually */
376 UNDO *undo_bottom;
377 UNDO *undo_current;
378 UNDO *undo_tos; /* Top Of Stack */
380 /* up and down the hierarchy */
381 /* this holds the pid of the parent page */
382 int up;
383 /* int down; not needed */
385 /* used to control which pages are viewable when moving around */
386 int page_control;
388 /* backup variables */
389 GTimeVal last_load_or_save_time;
390 char saved_since_first_loaded;
391 gint ops_since_last_backup;
392 gchar do_autosave_backup;
394 /* Function which asks the user wether to load a newer backup file */
395 int (*load_newer_backup_func)();
397 /* left to right movement */
398 PAGE *prev;
399 PAGE *next;
402 struct st_toplevel {
404 int wid; /* Window id, always unique */
406 int num_untitled; /* keep track of untitled wins */
408 int start_x;
409 int start_y;
410 int save_x;
411 int save_y;
412 int last_x;
413 int last_y;
414 int second_x;
415 int second_y;
416 int loc_x, loc_y;
417 int distance;
419 /* used by attribute dialog */
420 /* also used by text add dialog */
421 char *current_attribute;
424 /* used by add picture dialog */
425 GdkPixbuf *current_pixbuf;
427 double pixbuf_wh_ratio; /* width/height ratio of the pixbuf */
428 char *pixbuf_filename;
430 int current_visible; /* in o_attrib.c */
431 int current_show;
432 /* have to decided on attribute list stuff */
433 /* if it should go in here or not */
434 /* leave outside for now */
436 gchar *internal_symbol_name;
437 /* have to decided on component list stuff */
438 /* if it should go in here or not */
439 /* leave outside for now */
441 GList *RC_list; /* List of RC files which have been read in. */
443 char *series_name; /* Current series basename */
444 char *untitled_name; /* untitled sch basename */
445 char *font_directory; /* path of the vector fonts */
446 char *scheme_directory; /* path of the scheme scripts */
447 char *bitmap_directory; /* path of the bitmaps */
449 int event_state; /* Current event state */
451 int inside_action; /* Are we doing an action? */
452 int rotated_inside; /* Was the selection rotated
453 inside an action? */
455 int init_left, init_right; /* Starting values for above */
456 int init_top, init_bottom;
458 int win_width, win_height; /* Actual size of window (?) */
459 int width, height; /* height, width of window */
460 int image_width, image_height; /* h, w of image write */
461 int snap; /* Snap on/off*/
462 int grid; /* Grid on/off*/
463 int min_zoom; /* minimum zoom factor */
464 int max_zoom; /* maximum zoom factor */
466 /* starting window width used to control text */
467 int starting_width;
469 /* location to hold current alignment of text */
470 int text_alignment;
472 /* location to hold current line type selection */
473 int line_type;
475 /* location to hold current fill type selection (PB) */
476 int fill_type;
478 int override_color; /* used in doing selections */
479 int inside_redraw; /* complex vs list redrawing */
480 double window_aspectratio; /* Window ratio (?) */
481 int display_height; /* display params */
482 int display_width; /* could me made global (?) */
484 int DONT_DRAW_CONN; /* misc flags */
485 int DONT_RESIZE;
486 int DONT_EXPOSE;
487 int DONT_REDRAW;
488 int DONT_RECALC;
489 int FORCE_CONN_UPDATE;
490 int ADDING_SEL;
491 int REMOVING_SEL;
493 int drawbounding_action_mode; /* outline vs bounding box */
494 int last_drawb_mode; /* last above mode */
496 int CONTROLKEY; /* control key pressed? */
497 int SHIFTKEY; /* shift key pressed? */
498 int ALTKEY; /* alt key pressed? */
500 int doing_pan; /* mouse pan status flag */
502 /* page system */
503 PAGE *page_head;
504 PAGE *page_tail;
505 PAGE *page_current;
507 /* buffer_number is used by the buffer copy/cut/paste mechanism */
508 /* in gschem to keep track of the current buffer number */
509 int buffer_number;
511 /* show_hidden_text is used to control which text is hidden in gschem */
512 int show_hidden_text;
514 /* Variable to keep track of what value the complex is at */
515 int complex_rotate;
517 void (*last_callback)(); /* Last i_call* cmd executed */
518 char *cwd; /* current working directory */
520 GList* major_changed_refdes; /* A list of all refdes's that have */
521 /* major symbol version changes */
523 /* main window widgets */
524 GtkWidget *main_window;
525 GtkWidget *drawing_area;
526 GtkWidget *menubar;
527 GtkWidget *popup_menu;
528 GtkWidget *h_scrollbar;
529 GtkWidget *v_scrollbar;
530 GtkObject *h_adjustment;
531 GtkObject *v_adjustment;
532 GtkWidget *left_label;
533 GtkWidget *middle_label;
534 GtkWidget *right_label;
535 GtkWidget *filename_label;
536 GtkWidget *grid_label;
537 GtkWidget *status_label;
539 GtkWidget *toolbar_select;
540 GtkWidget *toolbar_net;
541 GtkWidget *toolbar_bus;
542 GtkWidget *toolbar_edit;
543 GtkWidget *toolbar_move;
544 GtkWidget *toolbar_copy;
545 GtkWidget *toolbar_delete;
546 GtkWidget *toolbar_rotate;
547 GtkWidget *toolbar_mirror;
549 /* Dialog boxes */
550 GtkWidget *fowindow; /* File open */
551 GtkWidget *fswindow; /* File save */
552 GtkWidget *sowindow; /* Script open */
553 GtkWidget *pfswindow; /* Picture File Selection window */
554 GtkWidget *pcfswindow; /* Picture Change File Selection window */
555 int saveas_flag; /* what action after save? */
557 GtkWidget *aswindow; /* Attribute select */
558 GtkWidget *attr_list;
559 GtkWidget *asentry_name;
560 GtkWidget *asentry_value;
562 GtkWidget *cswindow; /* component select */
563 GtkWidget *clib_list;
564 GtkWidget *basename_list;
566 GtkWidget *iwindow; /* image write dialog box */
567 GtkWidget *ifilename_entry;
569 GtkWidget *pswindow; /* page select */
571 /* misc dialogs */
572 GtkWidget *tiwindow; /* text input */
573 GtkWidget *tewindow; /* text edit */
574 GtkWidget *teentry;
575 GtkWidget *ltwindow; /* line type / width edit */
576 GtkWidget *ftwindow; /* fill type edit (PB) */
577 GtkWidget *sewindow; /* slot edit */
578 GtkWidget *seentry;
579 GtkWidget *exwindow; /* exit confirm */
580 GtkWidget *aawindow; /* arc attribs */
581 GtkWidget *mawindow; /* multi attribute */
582 GtkWidget *aewindow; /* attribute edit */
583 GtkWidget *aaentry_start;
584 GtkWidget *aaentry_sweep;
585 GtkWidget *trwindow; /* translate */
586 GtkWidget *trentry;
587 GtkWidget *tswindow; /* text size */
588 GtkWidget *tshowwindow; /* text show window */
589 GtkWidget *thidewindow; /* text hide window */
590 GtkWidget *tfindwindow; /* text find window */
591 GtkWidget *tsentry; /* used in edit/edit and */
592 /* Text size and the snap */
593 /* size dialog boxes */
595 GtkWidget *abwindow; /* Help/About... dialog*/
596 GtkWidget *hkwindow; /* Help/Hotkeys... dialog*/
597 GtkWidget *cowindow;
598 GtkWidget *coord_world;
599 GtkWidget *coord_screen;
601 GtkWidget *clwindow;
602 int edit_color;
604 /* this is the drawing_area's X drawable */
605 GdkWindow *window;
607 /* graphics context stuff */
608 GdkGC *gc;
609 GdkGC *xor_gc;
610 GdkGC *outline_xor_gc;
611 GdkGC *bounding_xor_gc;
612 GdkGC *bus_gc;
614 /* backingstore pixmap */
615 GdkPixmap *backingstore;
617 /* used for visual feedback when pressing keyboard accelerators */
618 gchar *keyaccel_string;
620 /* rc/user parameters */
621 int graphic_color;
622 int pin_color;
623 int text_color;
625 /* backup variables */
626 int auto_save_interval;
627 gint auto_save_timeout;
630 /* not used anywhere yet, but will be */
631 int logic_bubble_color;
632 int zoom_box_color;
633 int text_caps;
634 int attribute_color;
635 int detachedattr_color;
636 int text_size;
638 /* used by math funcs for the snapping */
639 int snap_size;
641 int grid_color;
642 int background_color;
643 int select_color;
644 int bb_color;
645 int lock_color;
646 int net_endpoint_color;
647 int junction_color;
648 int net_color;
649 int bus_color;
650 int override_net_color;
651 int override_bus_color;
652 int override_pin_color;
653 int pin_style;
654 int net_style;
655 int bus_style;
656 int line_style;
657 int zoom_with_pan;
659 /* can be either OUTLINE or BOUNDINGBOX */
660 int actionfeedback_mode;
662 /* controls if text is drawn or not in copy/move/place ops */
663 int text_feedback;
665 /* zoom factor at which text is displayed completely */
666 int text_display_zoomfactor;
668 /* can be either NONE, FILLEDBOX, EMPTYBOX, X */
669 int net_endpoint_mode;
671 /* can be either NONE or FILLED or EMPTY */
672 int net_midpoint_mode;
674 /* controls whether objects are clipped */
675 int object_clipping;
677 /* controls if complex objects are embedded */
678 int embed_complex;
680 /* controls if complex objects are included */
681 int include_complex;
683 /* controls how text is printed (vector / PS font) */
684 int text_output;
686 /* controls if scrollbars are displayed */
687 int scrollbars_flag;
689 /* either landscape or portrait */
690 int print_orientation;
692 /* either TRUE or FALSE (color or no color) */
693 int image_color;
695 /* either TRUE or FALSE (color or no color) */
696 int print_color;
698 /* color used color ouput for background */
699 int print_color_background;
701 /* setpagedevice orientation option enable (TRUE or FALSE) */
702 int setpagedevice_orientation;
704 /* setpagedevice pagesize option enable (TRUE or FALSE) */
705 int setpagedevice_pagesize;
707 /* The name of the prolog file to paste into the Postscript output */
708 char *postscript_prolog;
710 /* Use this as a scaling factor for the output font */
711 float postscript_font_scale;
713 /* color of the stroke points */
714 int stroke_color;
716 /* controls if the log windows mapped on startup */
717 int log_window;
719 /* controls if the log window is decorated or not */
720 int log_window_type;
722 /* controls what the third mouse button does */
723 int third_button;
725 /* controls what the third mouse button does */
726 int middle_button;
728 /* controls if the net consolidation code is used */
729 int net_consolidate;
731 /* controls if the preview area is enabled or not */
732 int file_preview;
734 /* controls how much freedom user has when traversing the hierarchy */
735 int enforce_hierarchy;
737 /* controls if text origin marker is displayed or not */
738 int text_origin_marker;
740 /* controls if text is completely drawn during mouse pan */
741 int fast_mousepan;
743 /*controls if expose events raise dialog boxes*/
744 int raise_dialog_boxes;
746 /*controls if attribute promotion happens */
747 int attribute_promotion;
749 /* controls if invisible attribs are promoted */
750 int promote_invisible;
752 /* controls if invisible attribs are kept and not deleted */
753 int keep_invisible;
755 /* controls if after doing a place the */
756 /* same component can be placed again */
757 int continue_component_place;
759 /* Number of undo levels stored on disk */
760 int undo_levels;
762 /* Controls if undo is enabled or not */
763 int undo_control;
765 /* Type of undo (disk/memory) */
766 int undo_type;
768 /* Controls if grips are enabled or not */
769 int draw_grips;
771 /* controls if nets are rubberbanded as you move */
772 /* them (or connecting comps) */
773 int netconn_rubberband;
775 /* sort the component library */
776 int sort_component_library;
778 /* warp the cursor when zooming */
779 int warp_cursor;
781 /* controls if the toolbar(s) are enabled or disabled */
782 int toolbars;
784 /* controls if the handleboxes are enabled or disabled */
785 int handleboxes;
787 /* either window or limits */
788 int print_output_type;
790 /* BUTT, ROUND, SQUARE caps */
791 int print_output_capstyle;
793 /* either window or limits */
794 int image_output_type;
796 /* landscape printing only */
797 int paper_width, paper_height;
799 /* controls the size of the bus rippers */
800 int bus_ripper_size;
802 /* controls the type of the bus ripper (either component or net) */
803 int bus_ripper_type;
805 /* filename of the bus ripper component if set above */
806 char *bus_ripper_symname;
808 /* controls whether or not the the bus ripper is symmetric or not */
809 int bus_ripper_rotation;
811 /* controls if the whole bounding box is used in the auto whichend code */
812 int force_boundingbox;
814 /* controls the grid dot size */
815 int grid_dot_size;
817 /* controls the mode of the grid (either variable or fixed) */
818 int grid_mode;
820 /* controls the mininum number of pixels necessary for the grid to be */
821 /* displayed */
822 int grid_fixed_threshold;
824 /* controls the threshold (in lines of text) when the multi-line text */
825 /* output font is forced to vector */
826 int print_vector_threshold;
828 /* controls the offset (in world coordinates) that are added to netname */
829 /* attributes when they are attached to vertical or horizontal nets */
830 int add_attribute_offset;
832 /* Controls if drag can move objects or not */
833 int drag_can_move;
835 /* List of attributes to always promote */
836 char *always_promote_attributes;
838 /* Controls the gain of the mouse pan */
839 int mousepan_gain;
841 /* Controls the gain of the keyboard pan */
842 int keyboardpan_gain;
844 /* The command to send postscript to when printing */
845 char *print_command;
847 /* Number of pixels around an object we can still select it with */
848 int select_slack_pixels;
850 /* gnetlist specific */
851 int net_naming_priority;
852 int hierarchy_traversal;
853 int hierarchy_uref_mangle;
854 int hierarchy_netname_mangle;
855 int hierarchy_netattrib_mangle;
856 char *hierarchy_uref_separator;
857 char *hierarchy_netname_separator;
858 char *hierarchy_netattrib_separator;
859 int hierarchy_netattrib_order;
860 int hierarchy_netname_order;
861 int hierarchy_uref_order;
862 char *unnamed_netname;
864 TOPLEVEL *next;
865 TOPLEVEL *prev;
868 /* structures below are for gnetlist */
870 /* for every component in the object database */
871 struct st_netlist {
873 int nlid;
875 char *component_uref;
877 OBJECT *object_ptr;
879 CPINLIST *cpins;
881 char *hierarchy_tag;
882 int composite_component;
884 NETLIST *prev;
885 NETLIST *next;
889 /* for every pin on a component */
890 struct st_cpinlist {
891 int plid;
893 char *pin_number;
894 char *net_name; /* this is resolved at very end */
895 char *pin_label;
897 NET *nets;
899 CPINLIST *prev;
900 CPINLIST *next;
903 /* the net run connected to a pin */
904 struct st_net {
906 int nid;
908 int net_name_has_priority;
909 char *net_name;
910 char *pin_label;
912 char *connected_to; /* new to replace above */
914 NET *prev;
915 NET *next;
918 /* By Jamil Khatib */
919 /* typedef struct st_chkerrs CHKERRS; */
921 /* Schem check struct */
922 struct st_schcheck {
923 int no_errors; /* No of Errors */
924 int no_warnings; /* No of Warinings */
926 CHKERRS * sheet_errs;
928 CHKERRS *float_nets; /* Header of the list of floating nets */
929 int net_errs; /* No of floating nets */
931 OBJECT *float_pins; /* Header of List of floating pins*/
932 int pin_errs; /* No of floating pins */
934 int net_names; /* No of mismatched net names */
938 struct st_chkerrs{
940 OBJECT * err_obj;
941 CHKERRS * next;
947 struct st_color {
948 char *color_name;
949 char *outline_color_name;
950 char *ps_color_string;
951 int image_red, image_green, image_blue;
953 GdkColor *gtk_color;
954 GdkColor *gtk_outline_color;
955 int image_color;
959 struct st_attrib_smob {
960 TOPLEVEL *world; /* We need this when updating schematic */
961 ATTRIB *attribute;
964 struct st_object_smob {
965 TOPLEVEL *world; /* We need this when updating schematic */
966 OBJECT *object;
969 struct st_page_smob {
970 TOPLEVEL *world; /* We need this when updating schematic */
971 PAGE *page;
974 /* used by the rc loading mechanisms */
975 typedef struct {
976 int m_val;
977 char *m_str;
978 } vstbl_entry;
980 #endif