#pragma interface #ifndef GRAPH_H #define GRAPH_H #undef box enum GRAPH_MODE { GR_EVAL, GR_DRAW }; class GR_NODE { public: int x; int y; int z; struct { int x,y; } right,left,top,bottom; // Connection point coordinate int width; int height; int depth; struct { int top; int left; int right; int bottom; }margin; int level_right; // Level to the left int level_sub; // Level below GR_NODE *tbsub[5]; // Sub-node providing the definition of this // one int nbsub; GR_NODE *tbright[5];// Node on the right int nbright; /*~PROTOBEG~ GR_NODE */ public: GR_NODE (void); void setz (int _z); ~GR_NODE (void); /*~PROTOEND~ GR_NODE */ }; #define _TLMP_grnode enum ANCHOR { ANCHOR_LEFT, ANCHOR_TOP, ANCHOR_RIGHT, ANCHOR_BOTTOM }; struct GR_BASE{ public: /*~PROTOBEG~ GR_BASE */ public: void drawellipse (GRAPH_MODE mode, GR_NODE&node, int w, int h); void drawellipse (GRAPH_MODE mode, GR_NODE&node, int w, int h, const char *title, const char *desc); void drawrect (GRAPH_MODE mode, GR_NODE&node, int w, int h); void drawrect (GRAPH_MODE mode, GR_NODE&node, int w, int h, const char *title, const char *desc); void linkarcarrow (GR_NODE&node1, ANCHOR anch1, GR_NODE&node2, ANCHOR anch2); void linkarrow (GR_NODE&node1, ANCHOR anch1, GR_NODE&node2, ANCHOR anch2); void linkline (GR_NODE&node1, ANCHOR anch1, GR_NODE&node2, ANCHOR anch2); /*~PROTOEND~ GR_BASE */ }; struct _F_grnode : public GR_BASE{ class grnode_private *priv; #define _F_grnode_right1(nom) void nom right1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_right1( ); #define _F_grnode_link1(nom) void nom link1(GR_NODE &node1, GR_NODE &node2) virtual _F_grnode_link1( ); #define _F_grnode_right2(nom) void nom right2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_right2( ); #define _F_grnode_link2(nom) void nom link2(GR_NODE &node1, GR_NODE &node2) virtual _F_grnode_link2( ); #define _F_grnode_right3(nom) void nom right3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_right3( ); #define _F_grnode_link3(nom) void nom link3(GR_NODE &node1, GR_NODE &node2) virtual _F_grnode_link3( ); #define _F_grnode_right4(nom) void nom right4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_right4( ); #define _F_grnode_link4(nom) void nom link4(GR_NODE &node1, GR_NODE &node2) virtual _F_grnode_link4( ); #define _F_grnode_right5(nom) void nom right5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_right5( ); #define _F_grnode_link5(nom) void nom link5(GR_NODE &node1, GR_NODE &node2) virtual _F_grnode_link5( ); #define _F_grnode_sub1(nom) int nom sub1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_sub1( ); #define _F_grnode_sub2(nom) int nom sub2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_sub2( ); #define _F_grnode_sub3(nom) int nom sub3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_sub3( ); #define _F_grnode_sub4(nom) int nom sub4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_sub4( ); #define _F_grnode_sub5(nom) int nom sub5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_sub5( ); #define _F_grnode_draw(nom) void nom draw(GRAPH_MODE mode, GR_NODE &node) virtual _F_grnode_draw( )=0; // Various functions }; #define _TLMP_grgroup struct _F_grgroup: public GR_BASE{ #define _F_grgroup_draw(nom) void nom draw(GRAPH_MODE mode, GR_NODE &node) virtual _F_grgroup_draw( )=0; #define _F_grgroup_group(nom) void nom group(GRAPH_MODE mode, GR_NODE &node) virtual _F_grgroup_group( )=0; }; #define _TLMP_grsteps struct _F_grsteps: public GR_BASE{ #define _F_grsteps_step1(nom) void nom step1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step1( )=0; #define _F_grsteps_step2(nom) void nom step2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step2( )=0; #define _F_grsteps_step3(nom) void nom step3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step3( ); #define _F_grsteps_step4(nom) void nom step4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step4( ); #define _F_grsteps_step5(nom) void nom step5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step5( ); #define _F_grsteps_step6(nom) void nom step6(GRAPH_MODE mode, GR_NODE &node) virtual _F_grsteps_step6( ); #define _F_grsteps_link1(nom) void nom link1(GR_NODE &node1, GR_NODE &node2) virtual _F_grsteps_link1( ); #define _F_grsteps_link2(nom) void nom link2(GR_NODE &node1, GR_NODE &node2) virtual _F_grsteps_link2( ); #define _F_grsteps_link3(nom) void nom link3(GR_NODE &node1, GR_NODE &node2) virtual _F_grsteps_link3( ); #define _F_grsteps_link4(nom) void nom link4(GR_NODE &node1, GR_NODE &node2) virtual _F_grsteps_link4( ); #define _F_grsteps_link5(nom) void nom link5(GR_NODE &node1, GR_NODE &node2) virtual _F_grsteps_link5( ); }; #define _TLMP_UNIFORM_OBJECT struct _F_UNIFORM_OBJECT{ #define _F_UNIFORM_OBJECT_draw(nom) void nom draw (GRAPH_MODE mode, GR_NODE &node, int w, int h, const char *title, const char *desc) virtual _F_UNIFORM_OBJECT_draw( )=0; }; class UNIFORM_OBJECT{ _F_UNIFORM_OBJECT *c; int maxheight; int maxwidth; int maxdepth; /*~PROTOBEG~ UNIFORM_OBJECT */ public: UNIFORM_OBJECT (_F_UNIFORM_OBJECT&_c); void draw (GRAPH_MODE mode, GR_NODE&node, const char *desc); void draw (GRAPH_MODE mode, GR_NODE&node, const char *title, const char *desc); private: void fitsize (GR_NODE&node); public: /*~PROTOEND~ UNIFORM_OBJECT */ }; #define _TLMP_grhline struct _F_grhline { #define _F_grhline_top(nom) void nom top(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_top( )=0; #define _F_grhline_item1(nom) void nom item1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item1( )=0; #define _F_grhline_item2(nom) void nom item2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item2( ); #define _F_grhline_item3(nom) void nom item3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item3( ); #define _F_grhline_item4(nom) void nom item4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item4( ); #define _F_grhline_item5(nom) void nom item5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item5( ); #define _F_grhline_item6(nom) void nom item6(GRAPH_MODE mode, GR_NODE &node) virtual _F_grhline_item6( ); #define _F_grhline_link1(nom) void nom link1(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link1( ); #define _F_grhline_link2(nom) void nom link2(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link2( ); #define _F_grhline_link3(nom) void nom link3(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link3( ); #define _F_grhline_link4(nom) void nom link4(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link4( ); #define _F_grhline_link5(nom) void nom link5(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link5( ); #define _F_grhline_link6(nom) void nom link6(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grhline_link6( ); }; #define _TLMP_grbox struct _F_grbox { #define _F_grbox_box(nom) void nom box(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_box( )=0; // On bottom of the box #define _F_grbox_bitem1(nom) void nom bitem1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem1( ); #define _F_grbox_bitem2(nom) void nom bitem2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem2( ); #define _F_grbox_bitem3(nom) void nom bitem3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem3( ); #define _F_grbox_bitem4(nom) void nom bitem4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem4( ); #define _F_grbox_bitem5(nom) void nom bitem5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem5( ); #define _F_grbox_bitem6(nom) void nom bitem6(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_bitem6( ); #define _F_grbox_blink1(nom) void nom blink1(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink1( ); #define _F_grbox_blink2(nom) void nom blink2(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink2( ); #define _F_grbox_blink3(nom) void nom blink3(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink3( ); #define _F_grbox_blink4(nom) void nom blink4(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink4( ); #define _F_grbox_blink5(nom) void nom blink5(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink5( ); #define _F_grbox_blink6(nom) void nom blink6(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_blink6( ); // On top of the box #define _F_grbox_titem1(nom) void nom titem1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem1( ); #define _F_grbox_titem2(nom) void nom titem2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem2( ); #define _F_grbox_titem3(nom) void nom titem3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem3( ); #define _F_grbox_titem4(nom) void nom titem4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem4( ); #define _F_grbox_titem5(nom) void nom titem5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem5( ); #define _F_grbox_titem6(nom) void nom titem6(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_titem6( ); #define _F_grbox_tlink1(nom) void nom tlink1(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink1( ); #define _F_grbox_tlink2(nom) void nom tlink2(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink2( ); #define _F_grbox_tlink3(nom) void nom tlink3(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink3( ); #define _F_grbox_tlink4(nom) void nom tlink4(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink4( ); #define _F_grbox_tlink5(nom) void nom tlink5(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink5( ); #define _F_grbox_tlink6(nom) void nom tlink6(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_tlink6( ); // On the left #define _F_grbox_litem(nom) void nom litem(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_litem( ); #define _F_grbox_llink(nom) void nom llink(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_llink( ); // On the right #define _F_grbox_ritem(nom) void nom ritem(GRAPH_MODE mode, GR_NODE &node) virtual _F_grbox_ritem( ); #define _F_grbox_rlink(nom) void nom rlink(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grbox_rlink( ); }; #define _TLMP_grstar struct _F_grstar { #define _F_grstar_center(nom) void nom center(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_center( )=0; #define _F_grstar_item1(nom) void nom item1(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item1( )=0; #define _F_grstar_item2(nom) void nom item2(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item2( ); #define _F_grstar_item3(nom) void nom item3(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item3( ); #define _F_grstar_item4(nom) void nom item4(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item4( ); #define _F_grstar_item5(nom) void nom item5(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item5( ); #define _F_grstar_item6(nom) void nom item6(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item6( ); #define _F_grstar_item7(nom) void nom item7(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item7( ); #define _F_grstar_item8(nom) void nom item8(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item8( ); #define _F_grstar_item9(nom) void nom item9(GRAPH_MODE mode, GR_NODE &node) virtual _F_grstar_item9( ); #define _F_grstar_link1(nom) void nom link1(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link1( ); #define _F_grstar_link2(nom) void nom link2(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link2( ); #define _F_grstar_link3(nom) void nom link3(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link3( ); #define _F_grstar_link4(nom) void nom link4(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link4( ); #define _F_grstar_link5(nom) void nom link5(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link5( ); #define _F_grstar_link6(nom) void nom link6(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link6( ); #define _F_grstar_link7(nom) void nom link7(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link7( ); #define _F_grstar_link8(nom) void nom link8(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link8( ); #define _F_grstar_link9(nom) void nom link9(int x, int y,GRAPH_MODE mode,GR_NODE &node) virtual _F_grstar_link9( ); }; #define _TLMP_grchip struct _F_grchip { #define _F_grchip_drawbody(x) void x drawbody (GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_drawbody( )=0; #define _F_grchip_drawlpin(xx) void xx drawlpin (int x,int y, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_drawlpin( ); #define _F_grchip_drawtpin(xx) void xx drawtpin (int x,int y, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_drawtpin( ); #define _F_grchip_drawrpin(xx) void xx drawrpin (int x,int y, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_drawrpin( ); #define _F_grchip_drawbpin(xx) void xx drawbpin (int x,int y, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_drawbpin( ); #define _F_grchip_left(x) void x left(int pin, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_left( ); #define _F_grchip_right(x) void x right(int pin, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_right( ); #define _F_grchip_top(x) void x top(int pin, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_top( ); #define _F_grchip_bottom(x) void x bottom(int pin, GRAPH_MODE mode, GR_NODE &node) virtual _F_grchip_bottom( ); }; #define _TLMP_grmanage struct _F_grmanage { #define _F_grmanage_exec(nom) void nom exec(GRAPH_MODE mode, GR_NODE &node) virtual _F_grmanage_exec( )=0; }; #include "graph.pp" #endif