summaryrefslogtreecommitdiff
path: root/writerfilter/source/doctok/xmigen.el
blob: 6f0f35524d76660c42637401c77581f26bf585b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
(defun insert-uml-class-begin (name)
  (insert "<UML:Class xmi.id=\"" name "\" name=\"" name "\">\n"))

(defun insert-uml-class-end ()
  (insert "</UML:Class>\n"))

(defun insert-uml-stereotype (stereotype)
  (insert "<UML:ModelElement.stereotype>\n")
  (insert "  <UML:Stereotype xmi.idref=\"" stereotype "\"/>\n")
  (insert "</UML:ModelElement.stereotype>\n"))


(defun insert-uml-taggedvalue (value type)
  (insert "    <UML:ModelElement.taggedValue>\n")
  (insert "      <UML:TaggedValue>\n")
  (insert "        <UML:TaggedValue.dataValue>" value "</UML:TaggedValue.dataValue>\n")
  (insert "        <UML:TaggedValue.type>\n")
  (insert "          <UML:TagDefinition xmi.idref=\"" type "\"/>\n")
  (insert "        </UML:TaggedValue.type>\n")
  (insert "      </UML:TaggedValue>\n")
  (insert "    </UML:ModelElement.taggedValue>\n"))
  
(defun insert-uml-attribute (type name offset bits mask shift comment attrid)
  (insert "<UML:Classifier.feature>\n")
  (insert "  <UML:Attribute name=\"" name "\">\n")
  (insert-uml-taggedvalue comment "comment")
  (insert-uml-taggedvalue offset "offset")
  (insert-uml-taggedvalue bits "bits")
  (insert-uml-taggedvalue mask "mask")
  (insert-uml-taggedvalue shift "shift")
  (insert-uml-taggedvalue attrid "attrid")
  (insert "    <UML:StructuralFeature.type>\n")
  (insert "      <UML:DataType xmi.idref=\"" type "\"/>\n")
  (insert "    </UML:StructuralFeature.type>\n")
  (insert "    <UML:ModelElement.stereotype>\n")
  (insert "      <UML:Stereotype xmi.idref=\"attribute\"/>\n")
  (insert "    </UML:ModelElement.stereotype>\n")
  (insert "  </UML:Attribute>\n")
  (insert "</UML:Classifier.feature>\n"))

(defun insert-uml-attribute-array (type arraycount name offset bits mask shift comment attrid)
  (insert "<UML:Classifier.feature>\n")
  (insert "  <UML:Attribute name=\"" name "\">\n")
  (insert-uml-taggedvalue comment "comment")
  (insert-uml-taggedvalue offset "offset")
  (insert-uml-taggedvalue bits "bits")
  (insert-uml-taggedvalue mask "mask")
  (insert-uml-taggedvalue shift "shift")
  (insert-uml-taggedvalue attrid "attrid")
  (insert-uml-taggedvalue arraycount "arraycount")
  (insert "    <UML:StructuralFeature.type>\n")
  (insert "      <UML:DataType xmi.idref=\"" type "\"/>\n")
  (insert "    </UML:StructuralFeature.type>\n")
  (insert "    <UML:ModelElement.stereotype>\n")
  (insert "      <UML:Stereotype xmi.idref=\"array\"/>\n")
  (insert "    </UML:ModelElement.stereotype>\n")
  (insert "  </UML:Attribute>\n")
  (insert "</UML:Classifier.feature>\n"))

(defun insert-uml-operation (type name comment opid)
  (insert "<UML:Classifier.feature>\n")
  (insert "  <UML:Operation name=\"" name "\" >\n")
  (insert-uml-taggedvalue opid "opid")
  (insert "    <UML:BehavioralFeature.parameter>\n")
  (insert "      <UML:Parameter kind=\"return\" name=\"return\">\n")
  (insert "        <UML:Parameter.type>\n")
  (insert "          <UML:Class xmi.idref=\"" type "\" />\n")
  (insert "        </UML:Parameter.type>\n")
  (insert "      </UML:Parameter>\n")
  (insert "    </UML:BehavioralFeature.parameter>\n")
  (insert "    <UML:ModelElement.stereotype>\n")
  (insert "      <UML:Stereotype xmi.idref=\"attribute\" />\n")
  (insert "    </UML:ModelElement.stereotype>\n")
  (insert "  </UML:Operation>\n")
  (insert "</UML:Classifier.feature>\n"))

(defun insert-uml-binary (name comment opid)
  (insert "<UML:Classifier.feature>\n")
  (insert "  <UML:Operation name=\"" name "\" >\n")
  (insert-uml-taggedvalue opid "opid")
  (insert "    <UML:BehavioralFeature.parameter>\n")
  (insert "      <UML:Parameter kind=\"return\" name=\"return\">\n")
  (insert "        <UML:Parameter.type>\n")
  (insert "          <UML:Class xmi.idref=\"Binary\" />\n")
  (insert "        </UML:Parameter.type>\n")
  (insert "      </UML:Parameter>\n")
  (insert "    </UML:BehavioralFeature.parameter>\n")
  (insert "    <UML:ModelElement.stereotype>\n")
  (insert "      <UML:Stereotype xmi.idref=\"binary\" />\n")
  (insert "    </UML:ModelElement.stereotype>\n")
  (insert "  </UML:Operation>\n")
  (insert "</UML:Classifier.feature>\n"))

(defun insert-uml-operation-array (type name comment opid)
  (insert "<UML:Classifier.feature>\n")
  (insert "  <UML:Operation name=\"" name "\" >\n")
  (insert-uml-taggedvalue opid "opid")
  (insert "    <UML:BehavioralFeature.parameter>\n")
  (insert "      <UML:Parameter kind=\"return\" name=\"return\">\n")
  (insert "        <UML:Parameter.type>\n")
  (insert "          <UML:Class xmi.idref=\"" type "\" />\n")
  (insert "        </UML:Parameter.type>\n")
  (insert "      </UML:Parameter>\n")
  (insert "    </UML:BehavioralFeature.parameter>\n")
  (insert "    <UML:ModelElement.stereotype>\n")
  (insert "      <UML:Stereotype xmi.idref=\"array\" />\n")
  (insert "    </UML:ModelElement.stereotype>\n")
  (insert "  </UML:Operation>\n")
  (insert "</UML:Classifier.feature>\n"))

(defun insert-uml-generalization (parent child)
  (insert "<UML:Generalization isSpecification=\"false\" xmi.id=\"" child "-" parent "\" >\n")
  (insert "  <UML:Generalization.child>\n")
  (insert "    <UML:Class xmi.idref=\"" child "\" />\n")
  (insert "  </UML:Generalization.child>\n")
  (insert "  <UML:Generalization.parent>\n")
  (insert "    <UML:Class xmi.idref=\"" parent "\" />\n")
  (insert "  </UML:Generalization.parent>\n")
  (insert "</UML:Generalization>\n"))

(defun insert-uml-sprm (name sprmcode kind)
  (insert-uml-class-begin name) 
  (insert-uml-stereotype "ww8sprm")
  (insert-uml-taggedvalue sprmcode "sprmcode")
  (insert-uml-taggedvalue (concat "rtf:" name) "sprmid")
  (insert-uml-taggedvalue kind "kind")
  (insert-uml-class-end))