@=~ ~p typesetter = texinfo ~p maximum_input_line_length = infinity ~O~~{ $/Visual/VisPattern.gnrc+instance=ComponentView:inst $/Visual/StdDrawings.fw ~} ~O~~{ ~ ~} ~O~~{ ~ ~} ~$~+=~{ SYMBOL Type INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptText="Fehler: Diese Sicht ist nicht fuer Typen gedacht!"; END; /* Komponenten =========== */ CLASS SYMBOL ComponentDefinition INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing = ADDROF(ComponentDefinitionDrawing); END; SYMBOL ProcedureDefinition INHERITS ComponentDefinition END; SYMBOL TaskDefinition INHERITS ComponentDefinition END; SYMBOL TaskName INHERITS ComponentNameClass END; SYMBOL ProcedureName INHERITS ComponentNameClass END; SYMBOL ComponentNameClass INHERITS VP_ContainerSSS, VP_TextTerminal COMPUTE SYNT.VP_OblContainerName="Name"; SYNT.VP_OptText=THIS.persName; SYNT.VP_OptTextAttr="persName"; SYNT.VP_OptFont="big"; END; SYMBOL Topology INHERITS VP_ContainerSSS, VP_IconTerminal COMPUTE SYNT.VP_OblContainerName="Topology"; SYNT.VP_OptImage="topologie"; END; SYMBOL InterfaceClass INHERITS VP_ContainerSSS, VP_SimpleList COMPUTE SYNT.VP_OblContainerName="Interface"; SYNT.VP_OptAlignInWidth=VisAlignBuoy; SYNT.VP_OptElementDistance=10; SYNT.VP_OptMinWidth1=5; SYNT.VP_OptMinWidth2=5; END; SYMBOL ProcedureInterface INHERITS InterfaceClass END; SYMBOL TaskInterface INHERITS InterfaceClass END; SYMBOL Port INHERITS VP_ListNode END; SYMBOL _List_Port INHERITS VP_ListContext END; SYMBOL _List_NormalPort INHERITS VP_ListContext END; SYMBOL NormalPort INHERITS VP_TextTerminal COMPUTE SYNT.TriangleDirection=NOT(THIS.persDirection); SYNT.LineDirection=1; SYNT.DrawingDimension=THIS.persDimension; SYNT.VP_OptText=THIS.persName; SYNT.VP_OptTextAttr="persName"; SYNT.VP_OptFrameDrawing= NEW(PortDrawing(THIS.TriangleDirection,0,THIS.persDimension,0,THIS.pers3TypeColor)); END; SYMBOL TopologyPort INHERITS VP_TextTerminal COMPUTE SYNT.TriangleDirection=NOT(THIS.persDirection); SYNT.LineDirection=1; SYNT.DrawingDimension=THIS.persDimension; SYNT.VP_OptText=THIS.persName; SYNT.VP_OptTextAttr="persName"; SYNT.VP_OptFrameDrawing= NEW(PortDrawing(THIS.TriangleDirection,0,THIS.persDimension,1,THIS.pers3TypeColor)); END; SYMBOL ProcedureCode INHERITS VP_ContainerSSS, VP_Form COMPUTE SYNT.VP_OblContainerName = "Code"; SYNT.VP_OptDrawing = ADDROF(ProcedureCodeDrawing); END; SYMBOL TaskCode INHERITS VP_ContainerSSS, VP_Form COMPUTE SYNT.VP_OblContainerName = "Code"; SYNT.VP_OptDrawing = ADDROF(TaskCodeDrawing); END; SYMBOL FormalParameter INHERITS VP_ContainerSSS, VP_IconTerminal COMPUTE SYNT.VP_OblContainerName="FormalParameter"; SYNT.VP_OptImage="paramdecl"; END; SYMBOL CodeBody INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName = "Body"; END; SYMBOL Constructor INHERITS VP_ContainerSSS, VP_IconTerminal COMPUTE SYNT.VP_OblContainerName="Constructor"; SYNT.VP_OptImage="constructor"; END; /* Anweisungen =========== */ SYMBOL Stmts INHERITS VP_RecursiveList COMPUTE SYNT.VP_OblRoot=ADDROF(StmtListRootDrawing); SYNT.VP_OblRec=ADDROF(StmtListRecDrawing); SYNT.VP_OblTerm=ADDROF(visNullDrawing); SYNT.VP_OptInsPointProc = "::instanz::insert_applied_pattern"; SYNT.VP_OptInsPointProcArgs = VLAPPEND(VLAPPEND(VLLIST(),"persComponentDefInstConnection"),0); END; SYMBOL _List_Stmt INHERITS VP_ListContext END; SYMBOL Stmt INHERITS VP_ListNode END; /* Loop ---- */ SYMBOL Loop INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing = ADDROF(LoopDrawing); END; SYMBOL LoopBody INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName = "body"; END; /* If-Kaskade ---------- */ SYMBOL IfCascade INHERITS VP_RecursiveList COMPUTE SYNT.VP_OblRoot = ADDROF(IfRootDrawing); SYNT.VP_OblRec = ADDROF(IfRecDrawing); SYNT.VP_OblTerm = ADDROF(IfTermDrawing); END; SYMBOL _List_IfBranch INHERITS VP_ListContext END; SYMBOL IfBranch INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing = ADDROF(IfBranchDrawing); END; SYMBOL IfBody INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName="Body"; END; SYMBOL ElseBranch INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName="Else"; END; /* Terminale --------- */ SYMBOL Send INHERITS VP_IconTerminal COMPUTE SYNT.VP_OptImage="staticsend"; END; SYMBOL Receive INHERITS VP_IconTerminal COMPUTE SYNT.VP_OptImage="receive"; END; SYMBOL Sequential INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptText=THIS.persDescription; SYNT.VP_OptTextAttr="persDescription"; SYNT.VP_OptDefault="SEQ"; SYNT.VP_OptFrameDrawing=NEW(FrameDrawing("-fill green -width 1",2)); END; SYMBOL IfExpr INHERITS VP_ContainerSSS, VP_TextTerminal COMPUTE SYNT.VP_OblContainerName="Expr"; SYNT.VP_OptText=INCLUDING IfBranch.persCondition; SYNT.VP_OptTextAttr="persCondition"; SYNT.VP_VisualContext=INCLUDING IfBranch.VP_VisualContext; SYNT.VP_OptDefault="COND"; SYNT.VP_OptFrameDrawing=NEW(FrameDrawing("-fill lightblue -width 1",2)); END; /* Subtasks ======== */ SYMBOL SubElements INHERITS VP_Set, VP_ContainerSSS COMPUTE SYNT.VP_OblContainerName = "Subtasks"; SYNT.VP_OptBorderDimensions = 5; SYNT.VP_OptDistanceMin = 5; SYNT.VP_OptContainerKind = 2; SYNT.VP_OptFrameStyle = "-fill white -outline {}"; SYNT.VP_OptStartSize = VisIntVector(150,200); SYNT.VP_OptInsPointSize = VLREGION(0,0,50,70); SYNT.VP_ListContextPTR = CONSTITUENT VP_ListContext.VP_ListContextPTR SHIELD VP_ListContext; SYNT.VP_OptInsPointProc = "::instanz::insert_applied_pattern"; SYNT.VP_OptInsPointProcArgs = VLAPPEND(VLAPPEND(VLLIST(),"persComponentDefInstConnection"),"0"); SYNT.VP_OptInsPointShape = "mrectangle"; END; SYMBOL _List_SubElement INHERITS VP_ListContext END; SYMBOL SubElement INHERITS VP_MovableContext END; SYMBOL Collector INHERITS VP_Terminal , VP_Movable COMPUTE SYNT.VP_OptSize=VisIntVector(5,5); SYNT.VP_OptFigureStyle="-fill black"; END; SYMBOL Subtask INHERITS VP_Form, VP_Movable COMPUTE SYNT.VP_OptDrawing=IF(EQ(THIS.persInstance,0), VisDrawingPtr(ADDROF(SubtaskDrawing)), VisDrawingPtr(ADDROF(SubtaskTopDrawing))); SYNT.VP_OptFrameDrawing=NEW(FrameDrawing(NULL,0,VisIntVector(60,80))); END; ~} ~$~+=~{ SYMBOL SubElements INHERITS VP_ComponentView_Set END; SYMBOL SubElement INHERITS VP_ComponentView_MovableContext END; ~} ~$~+=~{ SYMBOL SubtaskName INHERITS VP_TextTerminal, VP_ContainerSSS COMPUTE SYNT.VP_OblContainerName="Name"; SYNT.VP_OptFill=IF(INCLUDING Subtask.pers3Deleted,VLCharPtr("red"),VLCharPtr("black")); SYNT.VP_OptText=INCLUDING Subtask.pers3DefName; END; SYMBOL PortPositionClass: posEast: int; SYMBOL SubtaskEastPorts INHERITS VP_Container, PortPositionClass COMPUTE SYNT.VP_OblContainerName="EastPorts"; SYNT.posEast=1; END; SYMBOL SubtaskWestPorts INHERITS VP_Container, PortPositionClass COMPUTE SYNT.VP_OblContainerName="WestPorts"; SYNT.posEast=0; END; SYMBOL ProcedureCallPorts INHERITS VP_Container, PortPositionClass COMPUTE SYNT.VP_OblContainerName="Ports"; SYNT.posEast=0; END; SYMBOL SubcomponentPorts INHERITS VP_SimpleList COMPUTE SYNT.VP_OptAlignInWidth=VisAlignBuoy; SYNT.VP_OptInsPointValidity=INCLUDING SubcomponentClass.nodePtr; SYNT.VP_OptMinWidth1=5; SYNT.VP_OptMinWidth2=5; END; SYMBOL _List_SubcomponentPort INHERITS VP_ListContext END; SYMBOL SubcomponentClass: instance: int, nodePtr: NODEPTR; SYMBOL SubcomponentClass COMPUTE SYNT.nodePtr=_currn; END; SYMBOL Subtask INHERITS SubcomponentClass COMPUTE SYNT.instance=THIS.persInstance; END; SYMBOL ProcedureCall INHERITS SubcomponentClass COMPUTE SYNT.instance=0; END; SYMBOL SubcomponentPort INHERITS VP_TextTerminal COMPUTE SYNT.TriangleDirection=EQ(THIS.pers3Direction, INCLUDING PortPositionClass.posEast); SYNT.LineDirection=INCLUDING PortPositionClass.posEast; SYNT.DrawingDimension=ADD(THIS.pers3Dimension, AND(INCLUDING SubcomponentClass.instance,NOT(THIS.pers3Direction))); SYNT.VP_OptText=THIS.pers3DefName; SYNT.VP_OptFill=IF(THIS.pers3Deleted,VLCharPtr("red"),VLCharPtr("black")); SYNT.VP_OptFrameDrawing= NEW(PortDrawing( THIS.TriangleDirection, NOT(INCLUDING PortPositionClass.posEast), THIS.DrawingDimension, 0, THIS.pers3TypeColor)); END; SYMBOL ProcedureCall INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing=ADDROF(ProcedureCallDrawing); END; SYMBOL ProcedureCallValues INHERITS VP_ContainerSSS, VP_TextTerminal COMPUTE SYNT.VP_OblContainerName="Name"; SYNT.VP_OptFill=IF(INCLUDING ProcedureCall.pers3Deleted,VLCharPtr("red"),VLCharPtr("black")); SYNT.VP_OptText=INCLUDING ProcedureCall.pers3DefName; END; /* Verbindungen ============ */ SYMBOL LineSpace1 INHERITS VP_ContainerSSS, VP_Terminal, VP_RelationCrossArea COMPUTE SYNT.VP_OblContainerName="Linespace1"; SYNT.VP_OptFigureStyle="-outline {}"; SYNT.VP_OptSize=VisIntVector(20,20); END; SYMBOL LineSpace2 INHERITS VP_ContainerSSS, VP_Terminal, VP_RelationCrossArea COMPUTE SYNT.VP_OblContainerName="Linespace2"; SYNT.VP_OptFigureStyle="-outline {}"; SYNT.VP_OptSize=VisIntVector(20,20); END; SYMBOL ProcedureDefinition INHERITS VP_RelationAreaDD END; SYMBOL TaskDefinition INHERITS VP_RelationAreaDD END; SYMBOL _List_Connection INHERITS VP_ListSimpleRelations COMPUTE SYNT.VP_OptDD=1; END; /* Endpunkt-Klassen */ SYMBOL CommIconClass INHERITS VP_EndPointDD COMPUTE SYNT.VP_OptDirection=visWest; SYNT.VP_OptTarget=1; SYNT.VP_OptTargetX=0; SYNT.VP_OptTargetY=DIV(SELECT(PTRSELECT(THIS.VP_ContainerInterface2Ptr,size),y),2); END; SYMBOL PortClass: TriangleDirection: int, LineDirection: int, DrawingDimension: int; SYMBOL PortClass INHERITS VP_EndPointDD COMPUTE SYNT.VP_OptLineDirection=IF(THIS.LineDirection,visEast,visWest); SYNT.VP_OptTarget=1; SYNT.VP_OptTargetX=ADD(SELECT(PTRSELECT(THIS.VP_ContainerInterface2Ptr,alignmentPoint),x), MUL( IF(THIS.LineDirection,1,NEG(1)), IF(EQ(THIS.LineDirection,THIS.TriangleDirection),15, ADD(6, MUL(THIS.DrawingDimension,6))))); SYNT.VP_OptTargetY=DIV(SELECT(PTRSELECT(THIS.VP_ContainerInterface2Ptr,size),y),2); END; /* konkrete Endpunkte */ SYMBOL NormalPort INHERITS PortClass END; SYMBOL TopologyPort INHERITS PortClass END; SYMBOL SubcomponentPort INHERITS PortClass END; SYMBOL Send INHERITS CommIconClass END; SYMBOL Receive INHERITS CommIconClass END; SYMBOL Collector INHERITS VP_EndPointDD END; SYMBOL Connection INHERITS VP_RelationTypeOrthogonal COMPUTE SYNT.VP_OptLineType = IF(VLInt(GetVLProp(_currn,"smoothLines")), VLCharPtr("-width 2 -smooth 1"), VLCharPtr("-width 2 -smooth 0")); SYNT.VP_OptSimplify = 1; END; ~} ~O~~{ SYMBOL Connection COMPUTE SetVLProp(_currn,"smoothLines", INCLUDING ProgramDefinition.persSmoothLines); /* SetVLProp(_currn,"smoothLines", VLInt(1)); */ END; ~} ~$~+=~{ SYMBOL Connection INHERITS VP_ComponentView_RelationType END; SYMBOL NormalPort INHERITS VP_ComponentView_EndPoint END; SYMBOL TopologyPort INHERITS VP_ComponentView_EndPoint END; SYMBOL SubcomponentPort INHERITS VP_ComponentView_EndPoint END; SYMBOL Send INHERITS VP_ComponentView_EndPoint END; SYMBOL Receive INHERITS VP_ComponentView_EndPoint END; SYMBOL Collector INHERITS VP_ComponentView_EndPoint END; ~} ~$~+=~{ ~}