diff options
-rw-r--r-- | data/typesystem/color.oxm | 487 | ||||
-rw-r--r-- | src/core/model/Document.cpp | 14 | ||||
-rw-r--r-- | src/core/model/Document.hpp | 10 | ||||
-rw-r--r-- | src/core/model/Domain.cpp | 14 | ||||
-rw-r--r-- | src/core/model/Domain.hpp | 8 | ||||
-rw-r--r-- | src/core/model/Project.cpp | 18 | ||||
-rw-r--r-- | src/core/model/Project.hpp | 11 | ||||
-rw-r--r-- | src/core/model/RootNode.cpp | 10 | ||||
-rw-r--r-- | src/core/model/RootNode.hpp | 21 | ||||
-rw-r--r-- | src/core/model/Typesystem.cpp | 14 | ||||
-rw-r--r-- | src/core/model/Typesystem.hpp | 8 | ||||
-rw-r--r-- | src/core/resource/ResourceRequest.cpp | 14 | ||||
-rw-r--r-- | src/plugins/xml/XmlParser.cpp | 4 | ||||
-rw-r--r-- | test/plugins/xml/XmlParserTest.cpp | 1 | ||||
-rw-r--r-- | testdata/xmlparser/color.oxm | 18 | ||||
-rw-r--r-- | testdata/xmlparser/generic.oxm | 11 |
16 files changed, 372 insertions, 291 deletions
diff --git a/data/typesystem/color.oxm b/data/typesystem/color.oxm index 27e9471..f9eb53a 100644 --- a/data/typesystem/color.oxm +++ b/data/typesystem/color.oxm @@ -1,248 +1,245 @@ <?xml version="1.0" standalone="yes"?> <typesystem name="color"> - <types> - <struct name="color"> - <field name="r" type="int"/> - <field name="g" type="int"/> - <field name="b" type="int"/> - </struct> - </types> - <constants> - <constant name="aquamarine1" type="color" value="[127,255,212]"/> - <constant name="aquamarine2" type="color" value="[118,238,198]"/> - <constant name="aquamarine3" type="color" value="[102,205,170]"/> - <constant name="aquamarine" type="color" value="[127,255,212]"/> - <constant name="azure1" type="color" value="[240,255,255]"/> - <constant name="azure2" type="color" value="[224,238,238]"/> - <constant name="azure3" type="color" value="[193,205,205]"/> - <constant name="azure4" type="color" value="[131,139,139]"/> - <constant name="azure" type="color" value="[240,255,255]"/> - <constant name="beige" type="color" value="[245,245,220]"/> - <constant name="bisque1" type="color" value="[255,228,196]"/> - <constant name="bisque2" type="color" value="[238,213,183]"/> - <constant name="bisque3" type="color" value="[205,183,158]"/> - <constant name="bisque4" type="color" value="[139,125,107]"/> - <constant name="bisque" type="color" value="[255,228,196]"/> - <constant name="brown" type="color" value="[165,42,42]"/> - <constant name="burlywood1" type="color" value="[255,211,155]"/> - <constant name="burlywood2" type="color" value="[238,197,145]"/> - <constant name="burlywood3" type="color" value="[205,170,125]"/> - <constant name="burlywood" type="color" value="[222,184,135]"/> - <constant name="chartreuse" type="color" value="[127,255,0]"/> - <constant name="chocolate" type="color" value="[210,105,30]"/> - <constant name="coral" type="color" value="[255,127,80]"/> - <constant name="cornsilk1" type="color" value="[255,248,220]"/> - <constant name="cornsilk2" type="color" value="[238,232,205]"/> - <constant name="cornsilk3" type="color" value="[205,200,177]"/> - <constant name="cornsilk4" type="color" value="[139,136,120]"/> - <constant name="cornsilk" type="color" value="[255,248,220]"/> - <constant name="crimson" type="color" value="[220,20,60]"/> - <constant name="firebrick" type="color" value="[178,34,34]"/> - <constant name="fuchsia" type="color" value="[255,0,255]"/> - <constant name="gainsboro" type="color" value="[220,220,220]"/> - <constant name="goldenrod" type="color" value="[218,165,32]"/> - <constant name="gold" type="color" value="[255,215,0]"/> - <constant name="gray100" type="color" value="[255,255,255]"/> - <constant name="gray40" type="color" value="[102,102,102]"/> - <constant name="gray41" type="color" value="[105,105,105]"/> - <constant name="gray42" type="color" value="[107,107,107]"/> - <constant name="gray43" type="color" value="[110,110,110]"/> - <constant name="gray44" type="color" value="[112,112,112]"/> - <constant name="gray45" type="color" value="[115,115,115]"/> - <constant name="gray46" type="color" value="[117,117,117]"/> - <constant name="gray47" type="color" value="[120,120,120]"/> - <constant name="gray48" type="color" value="[122,122,122]"/> - <constant name="gray49" type="color" value="[125,125,125]"/> - <constant name="gray50" type="color" value="[127,127,127]"/> - <constant name="gray51" type="color" value="[130,130,130]"/> - <constant name="gray52" type="color" value="[133,133,133]"/> - <constant name="gray53" type="color" value="[135,135,135]"/> - <constant name="gray54" type="color" value="[138,138,138]"/> - <constant name="gray55" type="color" value="[140,140,140]"/> - <constant name="gray56" type="color" value="[143,143,143]"/> - <constant name="gray57" type="color" value="[145,145,145]"/> - <constant name="gray58" type="color" value="[148,148,148]"/> - <constant name="gray59" type="color" value="[150,150,150]"/> - <constant name="gray60" type="color" value="[153,153,153]"/> - <constant name="gray61" type="color" value="[156,156,156]"/> - <constant name="gray62" type="color" value="[158,158,158]"/> - <constant name="gray63" type="color" value="[161,161,161]"/> - <constant name="gray64" type="color" value="[163,163,163]"/> - <constant name="gray65" type="color" value="[166,166,166]"/> - <constant name="gray66" type="color" value="[168,168,168]"/> - <constant name="gray67" type="color" value="[171,171,171]"/> - <constant name="gray68" type="color" value="[173,173,173]"/> - <constant name="gray69" type="color" value="[176,176,176]"/> - <constant name="gray70" type="color" value="[179,179,179]"/> - <constant name="gray71" type="color" value="[181,181,181]"/> - <constant name="gray72" type="color" value="[184,184,184]"/> - <constant name="gray73" type="color" value="[186,186,186]"/> - <constant name="gray74" type="color" value="[189,189,189]"/> - <constant name="gray75" type="color" value="[191,191,191]"/> - <constant name="gray76" type="color" value="[194,194,194]"/> - <constant name="gray77" type="color" value="[196,196,196]"/> - <constant name="gray78" type="color" value="[199,199,199]"/> - <constant name="gray79" type="color" value="[201,201,201]"/> - <constant name="gray80" type="color" value="[204,204,204]"/> - <constant name="gray81" type="color" value="[207,207,207]"/> - <constant name="gray82" type="color" value="[209,209,209]"/> - <constant name="gray83" type="color" value="[212,212,212]"/> - <constant name="gray84" type="color" value="[214,214,214]"/> - <constant name="gray85" type="color" value="[217,217,217]"/> - <constant name="gray86" type="color" value="[219,219,219]"/> - <constant name="gray87" type="color" value="[222,222,222]"/> - <constant name="gray88" type="color" value="[224,224,224]"/> - <constant name="gray89" type="color" value="[227,227,227]"/> - <constant name="gray90" type="color" value="[229,229,229]"/> - <constant name="gray91" type="color" value="[232,232,232]"/> - <constant name="gray92" type="color" value="[235,235,235]"/> - <constant name="gray93" type="color" value="[237,237,237]"/> - <constant name="gray94" type="color" value="[240,240,240]"/> - <constant name="gray95" type="color" value="[242,242,242]"/> - <constant name="gray96" type="color" value="[245,245,245]"/> - <constant name="gray97" type="color" value="[247,247,247]"/> - <constant name="gray98" type="color" value="[250,250,250]"/> - <constant name="gray99" type="color" value="[252,252,252]"/> - <constant name="gray" type="color" value="[190,190,190]"/> - <constant name="grey100" type="color" value="[255,255,255]"/> - <constant name="grey40" type="color" value="[102,102,102]"/> - <constant name="grey41" type="color" value="[105,105,105]"/> - <constant name="grey42" type="color" value="[107,107,107]"/> - <constant name="grey43" type="color" value="[110,110,110]"/> - <constant name="grey44" type="color" value="[112,112,112]"/> - <constant name="grey45" type="color" value="[115,115,115]"/> - <constant name="grey46" type="color" value="[117,117,117]"/> - <constant name="grey47" type="color" value="[120,120,120]"/> - <constant name="grey48" type="color" value="[122,122,122]"/> - <constant name="grey49" type="color" value="[125,125,125]"/> - <constant name="grey50" type="color" value="[127,127,127]"/> - <constant name="grey51" type="color" value="[130,130,130]"/> - <constant name="grey52" type="color" value="[133,133,133]"/> - <constant name="grey53" type="color" value="[135,135,135]"/> - <constant name="grey54" type="color" value="[138,138,138]"/> - <constant name="grey55" type="color" value="[140,140,140]"/> - <constant name="grey56" type="color" value="[143,143,143]"/> - <constant name="grey57" type="color" value="[145,145,145]"/> - <constant name="grey58" type="color" value="[148,148,148]"/> - <constant name="grey59" type="color" value="[150,150,150]"/> - <constant name="grey60" type="color" value="[153,153,153]"/> - <constant name="grey61" type="color" value="[156,156,156]"/> - <constant name="grey62" type="color" value="[158,158,158]"/> - <constant name="grey63" type="color" value="[161,161,161]"/> - <constant name="grey64" type="color" value="[163,163,163]"/> - <constant name="grey65" type="color" value="[166,166,166]"/> - <constant name="grey66" type="color" value="[168,168,168]"/> - <constant name="grey67" type="color" value="[171,171,171]"/> - <constant name="grey68" type="color" value="[173,173,173]"/> - <constant name="grey69" type="color" value="[176,176,176]"/> - <constant name="grey70" type="color" value="[179,179,179]"/> - <constant name="grey71" type="color" value="[181,181,181]"/> - <constant name="grey72" type="color" value="[184,184,184]"/> - <constant name="grey73" type="color" value="[186,186,186]"/> - <constant name="grey74" type="color" value="[189,189,189]"/> - <constant name="grey75" type="color" value="[191,191,191]"/> - <constant name="grey76" type="color" value="[194,194,194]"/> - <constant name="grey77" type="color" value="[196,196,196]"/> - <constant name="grey78" type="color" value="[199,199,199]"/> - <constant name="grey79" type="color" value="[201,201,201]"/> - <constant name="grey80" type="color" value="[204,204,204]"/> - <constant name="grey81" type="color" value="[207,207,207]"/> - <constant name="grey82" type="color" value="[209,209,209]"/> - <constant name="grey83" type="color" value="[212,212,212]"/> - <constant name="grey84" type="color" value="[214,214,214]"/> - <constant name="grey85" type="color" value="[217,217,217]"/> - <constant name="grey86" type="color" value="[219,219,219]"/> - <constant name="grey87" type="color" value="[222,222,222]"/> - <constant name="grey88" type="color" value="[224,224,224]"/> - <constant name="grey89" type="color" value="[227,227,227]"/> - <constant name="grey90" type="color" value="[229,229,229]"/> - <constant name="grey91" type="color" value="[232,232,232]"/> - <constant name="grey92" type="color" value="[235,235,235]"/> - <constant name="grey93" type="color" value="[237,237,237]"/> - <constant name="grey94" type="color" value="[240,240,240]"/> - <constant name="grey95" type="color" value="[242,242,242]"/> - <constant name="grey96" type="color" value="[245,245,245]"/> - <constant name="grey97" type="color" value="[247,247,247]"/> - <constant name="grey98" type="color" value="[250,250,250]"/> - <constant name="grey99" type="color" value="[252,252,252]"/> - <constant name="grey" type="color" value="[190,190,190]"/> - <constant name="honeydew1" type="color" value="[240,255,240]"/> - <constant name="honeydew2" type="color" value="[224,238,224]"/> - <constant name="honeydew3" type="color" value="[193,205,193]"/> - <constant name="honeydew4" type="color" value="[131,139,131]"/> - <constant name="honeydew" type="color" value="[240,255,240]"/> - <constant name="ivory1" type="color" value="[255,255,240]"/> - <constant name="ivory2" type="color" value="[238,238,224]"/> - <constant name="ivory3" type="color" value="[205,205,193]"/> - <constant name="ivory4" type="color" value="[139,139,131]"/> - <constant name="ivory" type="color" value="[255,255,240]"/> - <constant name="khaki1" type="color" value="[255,246,143]"/> - <constant name="khaki2" type="color" value="[238,230,133]"/> - <constant name="khaki3" type="color" value="[205,198,115]"/> - <constant name="khaki" type="color" value="[240,230,140]"/> - <constant name="lavender" type="color" value="[230,230,250]"/> - <constant name="linen" type="color" value="[250,240,230]"/> - <constant name="magenta1" type="color" value="[255,0,255]"/> - <constant name="magenta2" type="color" value="[238,0,238]"/> - <constant name="magenta3" type="color" value="[205,0,205]"/> - <constant name="magenta4" type="color" value="[139,0,139]"/> - <constant name="magenta" type="color" value="[255,0,255]"/> - <constant name="maroon1" type="color" value="[255,52,179]"/> - <constant name="maroon2" type="color" value="[238,48,167]"/> - <constant name="maroon3" type="color" value="[205,41,144]"/> - <constant name="maroon" type="color" value="[176,48,96]"/> - <constant name="moccasin" type="color" value="[255,228,181]"/> - <constant name="olive" type="color" value="[128,128,0]"/> - <constant name="orange" type="color" value="[255,165,0]"/> - <constant name="orchid1" type="color" value="[255,131,250]"/> - <constant name="orchid2" type="color" value="[238,122,233]"/> - <constant name="orchid3" type="color" value="[205,105,201]"/> - <constant name="orchid4" type="color" value="[139,71,137]"/> - <constant name="orchid" type="color" value="[218,112,214]"/> - <constant name="peru" type="color" value="[205,133,63]"/> - <constant name="pink1" type="color" value="[255,181,197]"/> - <constant name="pink2" type="color" value="[238,169,184]"/> - <constant name="pink3" type="color" value="[205,145,158]"/> - <constant name="pink4" type="color" value="[139,99,108]"/> - <constant name="pink" type="color" value="[255,192,203]"/> - <constant name="plum1" type="color" value="[255,187,255]"/> - <constant name="plum2" type="color" value="[238,174,238]"/> - <constant name="plum3" type="color" value="[205,150,205]"/> - <constant name="plum4" type="color" value="[139,102,139]"/> - <constant name="plum" type="color" value="[221,160,221]"/> - <constant name="purple1" type="color" value="[155,48,255]"/> - <constant name="purple2" type="color" value="[145,44,238]"/> - <constant name="purple3" type="color" value="[125,38,205]"/> - <constant name="purple" type="color" value="[160,32,240]"/> - <constant name="red" type="color" value="[255,0,0]"/> - <constant name="salmon1" type="color" value="[255,140,105]"/> - <constant name="salmon" type="color" value="[250,128,114]"/> - <constant name="seashell1" type="color" value="[255,245,238]"/> - <constant name="seashell2" type="color" value="[238,229,222]"/> - <constant name="seashell3" type="color" value="[205,197,191]"/> - <constant name="seashell4" type="color" value="[139,134,130]"/> - <constant name="seashell" type="color" value="[255,245,238]"/> - <constant name="sienna" type="color" value="[160,82,45]"/> - <constant name="silver" type="color" value="[192,192,192]"/> - <constant name="snow1" type="color" value="[255,250,250]"/> - <constant name="snow2" type="color" value="[238,233,233]"/> - <constant name="snow3" type="color" value="[205,201,201]"/> - <constant name="snow4" type="color" value="[139,137,137]"/> - <constant name="snow" type="color" value="[255,250,250]"/> - <constant name="tan" type="color" value="[210,180,140]"/> - <constant name="thistle1" type="color" value="[255,225,255]"/> - <constant name="thistle2" type="color" value="[238,210,238]"/> - <constant name="thistle3" type="color" value="[205,181,205]"/> - <constant name="thistle4" type="color" value="[139,123,139]"/> - <constant name="thistle" type="color" value="[216,191,216]"/> - <constant name="tomato" type="color" value="[255,99,71]"/> - <constant name="violet" type="color" value="[238,130,238]"/> - <constant name="wheat1" type="color" value="[255,231,186]"/> - <constant name="wheat2" type="color" value="[238,216,174]"/> - <constant name="wheat3" type="color" value="[205,186,150]"/> - <constant name="wheat4" type="color" value="[139,126,102]"/> - <constant name="wheat" type="color" value="[245,222,179]"/> - <constant name="white" type="color" value="[255,255,255]"/> - <constant name="yellow" type="color" value="[255,255,0]"/> - </constants> + <struct name="color"> + <field name="r" type="int"/> + <field name="g" type="int"/> + <field name="b" type="int"/> + </struct> + + <constant name="aquamarine1" type="color" value="[127,255,212]"/> + <constant name="aquamarine2" type="color" value="[118,238,198]"/> + <constant name="aquamarine3" type="color" value="[102,205,170]"/> + <constant name="aquamarine" type="color" value="[127,255,212]"/> + <constant name="azure1" type="color" value="[240,255,255]"/> + <constant name="azure2" type="color" value="[224,238,238]"/> + <constant name="azure3" type="color" value="[193,205,205]"/> + <constant name="azure4" type="color" value="[131,139,139]"/> + <constant name="azure" type="color" value="[240,255,255]"/> + <constant name="beige" type="color" value="[245,245,220]"/> + <constant name="bisque1" type="color" value="[255,228,196]"/> + <constant name="bisque2" type="color" value="[238,213,183]"/> + <constant name="bisque3" type="color" value="[205,183,158]"/> + <constant name="bisque4" type="color" value="[139,125,107]"/> + <constant name="bisque" type="color" value="[255,228,196]"/> + <constant name="brown" type="color" value="[165,42,42]"/> + <constant name="burlywood1" type="color" value="[255,211,155]"/> + <constant name="burlywood2" type="color" value="[238,197,145]"/> + <constant name="burlywood3" type="color" value="[205,170,125]"/> + <constant name="burlywood" type="color" value="[222,184,135]"/> + <constant name="chartreuse" type="color" value="[127,255,0]"/> + <constant name="chocolate" type="color" value="[210,105,30]"/> + <constant name="coral" type="color" value="[255,127,80]"/> + <constant name="cornsilk1" type="color" value="[255,248,220]"/> + <constant name="cornsilk2" type="color" value="[238,232,205]"/> + <constant name="cornsilk3" type="color" value="[205,200,177]"/> + <constant name="cornsilk4" type="color" value="[139,136,120]"/> + <constant name="cornsilk" type="color" value="[255,248,220]"/> + <constant name="crimson" type="color" value="[220,20,60]"/> + <constant name="firebrick" type="color" value="[178,34,34]"/> + <constant name="fuchsia" type="color" value="[255,0,255]"/> + <constant name="gainsboro" type="color" value="[220,220,220]"/> + <constant name="goldenrod" type="color" value="[218,165,32]"/> + <constant name="gold" type="color" value="[255,215,0]"/> + <constant name="gray100" type="color" value="[255,255,255]"/> + <constant name="gray40" type="color" value="[102,102,102]"/> + <constant name="gray41" type="color" value="[105,105,105]"/> + <constant name="gray42" type="color" value="[107,107,107]"/> + <constant name="gray43" type="color" value="[110,110,110]"/> + <constant name="gray44" type="color" value="[112,112,112]"/> + <constant name="gray45" type="color" value="[115,115,115]"/> + <constant name="gray46" type="color" value="[117,117,117]"/> + <constant name="gray47" type="color" value="[120,120,120]"/> + <constant name="gray48" type="color" value="[122,122,122]"/> + <constant name="gray49" type="color" value="[125,125,125]"/> + <constant name="gray50" type="color" value="[127,127,127]"/> + <constant name="gray51" type="color" value="[130,130,130]"/> + <constant name="gray52" type="color" value="[133,133,133]"/> + <constant name="gray53" type="color" value="[135,135,135]"/> + <constant name="gray54" type="color" value="[138,138,138]"/> + <constant name="gray55" type="color" value="[140,140,140]"/> + <constant name="gray56" type="color" value="[143,143,143]"/> + <constant name="gray57" type="color" value="[145,145,145]"/> + <constant name="gray58" type="color" value="[148,148,148]"/> + <constant name="gray59" type="color" value="[150,150,150]"/> + <constant name="gray60" type="color" value="[153,153,153]"/> + <constant name="gray61" type="color" value="[156,156,156]"/> + <constant name="gray62" type="color" value="[158,158,158]"/> + <constant name="gray63" type="color" value="[161,161,161]"/> + <constant name="gray64" type="color" value="[163,163,163]"/> + <constant name="gray65" type="color" value="[166,166,166]"/> + <constant name="gray66" type="color" value="[168,168,168]"/> + <constant name="gray67" type="color" value="[171,171,171]"/> + <constant name="gray68" type="color" value="[173,173,173]"/> + <constant name="gray69" type="color" value="[176,176,176]"/> + <constant name="gray70" type="color" value="[179,179,179]"/> + <constant name="gray71" type="color" value="[181,181,181]"/> + <constant name="gray72" type="color" value="[184,184,184]"/> + <constant name="gray73" type="color" value="[186,186,186]"/> + <constant name="gray74" type="color" value="[189,189,189]"/> + <constant name="gray75" type="color" value="[191,191,191]"/> + <constant name="gray76" type="color" value="[194,194,194]"/> + <constant name="gray77" type="color" value="[196,196,196]"/> + <constant name="gray78" type="color" value="[199,199,199]"/> + <constant name="gray79" type="color" value="[201,201,201]"/> + <constant name="gray80" type="color" value="[204,204,204]"/> + <constant name="gray81" type="color" value="[207,207,207]"/> + <constant name="gray82" type="color" value="[209,209,209]"/> + <constant name="gray83" type="color" value="[212,212,212]"/> + <constant name="gray84" type="color" value="[214,214,214]"/> + <constant name="gray85" type="color" value="[217,217,217]"/> + <constant name="gray86" type="color" value="[219,219,219]"/> + <constant name="gray87" type="color" value="[222,222,222]"/> + <constant name="gray88" type="color" value="[224,224,224]"/> + <constant name="gray89" type="color" value="[227,227,227]"/> + <constant name="gray90" type="color" value="[229,229,229]"/> + <constant name="gray91" type="color" value="[232,232,232]"/> + <constant name="gray92" type="color" value="[235,235,235]"/> + <constant name="gray93" type="color" value="[237,237,237]"/> + <constant name="gray94" type="color" value="[240,240,240]"/> + <constant name="gray95" type="color" value="[242,242,242]"/> + <constant name="gray96" type="color" value="[245,245,245]"/> + <constant name="gray97" type="color" value="[247,247,247]"/> + <constant name="gray98" type="color" value="[250,250,250]"/> + <constant name="gray99" type="color" value="[252,252,252]"/> + <constant name="gray" type="color" value="[190,190,190]"/> + <constant name="grey100" type="color" value="[255,255,255]"/> + <constant name="grey40" type="color" value="[102,102,102]"/> + <constant name="grey41" type="color" value="[105,105,105]"/> + <constant name="grey42" type="color" value="[107,107,107]"/> + <constant name="grey43" type="color" value="[110,110,110]"/> + <constant name="grey44" type="color" value="[112,112,112]"/> + <constant name="grey45" type="color" value="[115,115,115]"/> + <constant name="grey46" type="color" value="[117,117,117]"/> + <constant name="grey47" type="color" value="[120,120,120]"/> + <constant name="grey48" type="color" value="[122,122,122]"/> + <constant name="grey49" type="color" value="[125,125,125]"/> + <constant name="grey50" type="color" value="[127,127,127]"/> + <constant name="grey51" type="color" value="[130,130,130]"/> + <constant name="grey52" type="color" value="[133,133,133]"/> + <constant name="grey53" type="color" value="[135,135,135]"/> + <constant name="grey54" type="color" value="[138,138,138]"/> + <constant name="grey55" type="color" value="[140,140,140]"/> + <constant name="grey56" type="color" value="[143,143,143]"/> + <constant name="grey57" type="color" value="[145,145,145]"/> + <constant name="grey58" type="color" value="[148,148,148]"/> + <constant name="grey59" type="color" value="[150,150,150]"/> + <constant name="grey60" type="color" value="[153,153,153]"/> + <constant name="grey61" type="color" value="[156,156,156]"/> + <constant name="grey62" type="color" value="[158,158,158]"/> + <constant name="grey63" type="color" value="[161,161,161]"/> + <constant name="grey64" type="color" value="[163,163,163]"/> + <constant name="grey65" type="color" value="[166,166,166]"/> + <constant name="grey66" type="color" value="[168,168,168]"/> + <constant name="grey67" type="color" value="[171,171,171]"/> + <constant name="grey68" type="color" value="[173,173,173]"/> + <constant name="grey69" type="color" value="[176,176,176]"/> + <constant name="grey70" type="color" value="[179,179,179]"/> + <constant name="grey71" type="color" value="[181,181,181]"/> + <constant name="grey72" type="color" value="[184,184,184]"/> + <constant name="grey73" type="color" value="[186,186,186]"/> + <constant name="grey74" type="color" value="[189,189,189]"/> + <constant name="grey75" type="color" value="[191,191,191]"/> + <constant name="grey76" type="color" value="[194,194,194]"/> + <constant name="grey77" type="color" value="[196,196,196]"/> + <constant name="grey78" type="color" value="[199,199,199]"/> + <constant name="grey79" type="color" value="[201,201,201]"/> + <constant name="grey80" type="color" value="[204,204,204]"/> + <constant name="grey81" type="color" value="[207,207,207]"/> + <constant name="grey82" type="color" value="[209,209,209]"/> + <constant name="grey83" type="color" value="[212,212,212]"/> + <constant name="grey84" type="color" value="[214,214,214]"/> + <constant name="grey85" type="color" value="[217,217,217]"/> + <constant name="grey86" type="color" value="[219,219,219]"/> + <constant name="grey87" type="color" value="[222,222,222]"/> + <constant name="grey88" type="color" value="[224,224,224]"/> + <constant name="grey89" type="color" value="[227,227,227]"/> + <constant name="grey90" type="color" value="[229,229,229]"/> + <constant name="grey91" type="color" value="[232,232,232]"/> + <constant name="grey92" type="color" value="[235,235,235]"/> + <constant name="grey93" type="color" value="[237,237,237]"/> + <constant name="grey94" type="color" value="[240,240,240]"/> + <constant name="grey95" type="color" value="[242,242,242]"/> + <constant name="grey96" type="color" value="[245,245,245]"/> + <constant name="grey97" type="color" value="[247,247,247]"/> + <constant name="grey98" type="color" value="[250,250,250]"/> + <constant name="grey99" type="color" value="[252,252,252]"/> + <constant name="grey" type="color" value="[190,190,190]"/> + <constant name="honeydew1" type="color" value="[240,255,240]"/> + <constant name="honeydew2" type="color" value="[224,238,224]"/> + <constant name="honeydew3" type="color" value="[193,205,193]"/> + <constant name="honeydew4" type="color" value="[131,139,131]"/> + <constant name="honeydew" type="color" value="[240,255,240]"/> + <constant name="ivory1" type="color" value="[255,255,240]"/> + <constant name="ivory2" type="color" value="[238,238,224]"/> + <constant name="ivory3" type="color" value="[205,205,193]"/> + <constant name="ivory4" type="color" value="[139,139,131]"/> + <constant name="ivory" type="color" value="[255,255,240]"/> + <constant name="khaki1" type="color" value="[255,246,143]"/> + <constant name="khaki2" type="color" value="[238,230,133]"/> + <constant name="khaki3" type="color" value="[205,198,115]"/> + <constant name="khaki" type="color" value="[240,230,140]"/> + <constant name="lavender" type="color" value="[230,230,250]"/> + <constant name="linen" type="color" value="[250,240,230]"/> + <constant name="magenta1" type="color" value="[255,0,255]"/> + <constant name="magenta2" type="color" value="[238,0,238]"/> + <constant name="magenta3" type="color" value="[205,0,205]"/> + <constant name="magenta4" type="color" value="[139,0,139]"/> + <constant name="magenta" type="color" value="[255,0,255]"/> + <constant name="maroon1" type="color" value="[255,52,179]"/> + <constant name="maroon2" type="color" value="[238,48,167]"/> + <constant name="maroon3" type="color" value="[205,41,144]"/> + <constant name="maroon" type="color" value="[176,48,96]"/> + <constant name="moccasin" type="color" value="[255,228,181]"/> + <constant name="olive" type="color" value="[128,128,0]"/> + <constant name="orange" type="color" value="[255,165,0]"/> + <constant name="orchid1" type="color" value="[255,131,250]"/> + <constant name="orchid2" type="color" value="[238,122,233]"/> + <constant name="orchid3" type="color" value="[205,105,201]"/> + <constant name="orchid4" type="color" value="[139,71,137]"/> + <constant name="orchid" type="color" value="[218,112,214]"/> + <constant name="peru" type="color" value="[205,133,63]"/> + <constant name="pink1" type="color" value="[255,181,197]"/> + <constant name="pink2" type="color" value="[238,169,184]"/> + <constant name="pink3" type="color" value="[205,145,158]"/> + <constant name="pink4" type="color" value="[139,99,108]"/> + <constant name="pink" type="color" value="[255,192,203]"/> + <constant name="plum1" type="color" value="[255,187,255]"/> + <constant name="plum2" type="color" value="[238,174,238]"/> + <constant name="plum3" type="color" value="[205,150,205]"/> + <constant name="plum4" type="color" value="[139,102,139]"/> + <constant name="plum" type="color" value="[221,160,221]"/> + <constant name="purple1" type="color" value="[155,48,255]"/> + <constant name="purple2" type="color" value="[145,44,238]"/> + <constant name="purple3" type="color" value="[125,38,205]"/> + <constant name="purple" type="color" value="[160,32,240]"/> + <constant name="red" type="color" value="[255,0,0]"/> + <constant name="salmon1" type="color" value="[255,140,105]"/> + <constant name="salmon" type="color" value="[250,128,114]"/> + <constant name="seashell1" type="color" value="[255,245,238]"/> + <constant name="seashell2" type="color" value="[238,229,222]"/> + <constant name="seashell3" type="color" value="[205,197,191]"/> + <constant name="seashell4" type="color" value="[139,134,130]"/> + <constant name="seashell" type="color" value="[255,245,238]"/> + <constant name="sienna" type="color" value="[160,82,45]"/> + <constant name="silver" type="color" value="[192,192,192]"/> + <constant name="snow1" type="color" value="[255,250,250]"/> + <constant name="snow2" type="color" value="[238,233,233]"/> + <constant name="snow3" type="color" value="[205,201,201]"/> + <constant name="snow4" type="color" value="[139,137,137]"/> + <constant name="snow" type="color" value="[255,250,250]"/> + <constant name="tan" type="color" value="[210,180,140]"/> + <constant name="thistle1" type="color" value="[255,225,255]"/> + <constant name="thistle2" type="color" value="[238,210,238]"/> + <constant name="thistle3" type="color" value="[205,181,205]"/> + <constant name="thistle4" type="color" value="[139,123,139]"/> + <constant name="thistle" type="color" value="[216,191,216]"/> + <constant name="tomato" type="color" value="[255,99,71]"/> + <constant name="violet" type="color" value="[238,130,238]"/> + <constant name="wheat1" type="color" value="[255,231,186]"/> + <constant name="wheat2" type="color" value="[238,216,174]"/> + <constant name="wheat3" type="color" value="[205,186,150]"/> + <constant name="wheat4" type="color" value="[139,126,102]"/> + <constant name="wheat" type="color" value="[245,222,179]"/> + <constant name="white" type="color" value="[255,255,255]"/> + <constant name="yellow" type="color" value="[255,255,0]"/> </typesystem> diff --git a/src/core/model/Document.cpp b/src/core/model/Document.cpp index f452695..8c87cfe 100644 --- a/src/core/model/Document.cpp +++ b/src/core/model/Document.cpp @@ -653,6 +653,18 @@ bool Document::doValidate(Logger &logger) const return valid & continueValidation(annotations, logger); } +void Document::doReference(Handle<Node> node) +{ + if (node->isa(RttiTypes::Domain)) { + referenceDomain(node.cast<Domain>()); + } +} + +RttiSet Document::doGetReferenceTypes() const +{ + return RttiSet{&RttiTypes::Domain}; +} + Rooted<StructuredEntity> Document::createRootStructuredEntity( Handle<StructuredClass> descriptor, Variant attributes, std::string name) { @@ -723,7 +735,7 @@ bool Document::hasChild(Handle<StructureNode> s) const /* Type registrations */ namespace RttiTypes { const Rtti Document = RttiBuilder<ousia::Document>("Document") - .parent(&Node) + .parent(&RootNode) .composedOf({&AnnotationEntity, &StructuredEntity}); const Rtti StructureNode = RttiBuilder<ousia::StructureNode>("StructureNode").parent(&Node); diff --git a/src/core/model/Document.hpp b/src/core/model/Document.hpp index dcb8966..ad8cbca 100644 --- a/src/core/model/Document.hpp +++ b/src/core/model/Document.hpp @@ -115,6 +115,7 @@ #include "Node.hpp" #include "Domain.hpp" +#include "RootNode.hpp" #include "Typesystem.hpp" namespace ousia { @@ -719,17 +720,18 @@ public: * Graph. It also references the domains that have been used within this * document and the AnnotationEntities that span over Anchors in this Document. */ -class Document : public Node { +class Document : public RootNode { private: // TODO: Might there be several roots? E.g. metadata? Owned<StructuredEntity> root; NodeVector<AnnotationEntity> annotations; NodeVector<Domain> domains; - void doResolve(ResolutionState &state) override; - protected: + void doResolve(ResolutionState &state) override; bool doValidate(Logger &logger) const override; + void doReference(Handle<Node> node) override; + RttiSet doGetReferenceTypes() const override; public: /** @@ -739,7 +741,7 @@ public: * @param name is a name for this Document. */ Document(Manager &mgr, std::string name) - : Node(mgr, std::move(name), nullptr), annotations(this) + : RootNode(mgr, std::move(name), nullptr), annotations(this) { } diff --git a/src/core/model/Domain.cpp b/src/core/model/Domain.cpp index 360aa83..ef505dd 100644 --- a/src/core/model/Domain.cpp +++ b/src/core/model/Domain.cpp @@ -469,6 +469,18 @@ bool Domain::doValidate(Logger &logger) const continueValidationCheckDuplicates(typesystems, logger); } +void Domain::doReference(Handle<Node> node) +{ + if (node->isa(RttiTypes::Domain)) { + referenceTypesystem(node.cast<Typesystem>()); + } +} + +RttiSet Domain::doGetReferenceTypes() const +{ + return RttiSet{&RttiTypes::Domain}; +} + void Domain::addStructuredClass(Handle<StructuredClass> s) { // only add it if we need to. @@ -559,7 +571,7 @@ const Rtti StructuredClass = const Rtti AnnotationClass = RttiBuilder<ousia::AnnotationClass>("AnnotationClass").parent(&Descriptor); const Rtti Domain = RttiBuilder<ousia::Domain>("Domain") - .parent(&Node) + .parent(&RootNode) .composedOf({&StructuredClass, &AnnotationClass}); } } diff --git a/src/core/model/Domain.hpp b/src/core/model/Domain.hpp index 7704d36..6648551 100644 --- a/src/core/model/Domain.hpp +++ b/src/core/model/Domain.hpp @@ -206,6 +206,7 @@ #include <core/RangeSet.hpp> #include "Node.hpp" +#include "RootNode.hpp" #include "Typesystem.hpp" namespace ousia { @@ -879,7 +880,7 @@ public: * are part of this domain. TODO: Do we want to be able to restrict Annotations * to certain Structures? */ -class Domain : public Node { +class Domain : public RootNode { friend StructuredClass; friend AnnotationClass; @@ -890,8 +891,9 @@ private: protected: void doResolve(ResolutionState &state) override; - bool doValidate(Logger &logger) const override; + void doReference(Handle<Node> node) override; + RttiSet doGetReferenceTypes() const override; public: /** @@ -903,7 +905,7 @@ public: * references to this Domain. */ Domain(Manager &mgr, std::string name = "") - : Node(mgr, std::move(name), nullptr), + : RootNode(mgr, std::move(name), nullptr), structuredClasses(this), annotationClasses(this), typesystems(this) diff --git a/src/core/model/Project.cpp b/src/core/model/Project.cpp index b355969..31530f3 100644 --- a/src/core/model/Project.cpp +++ b/src/core/model/Project.cpp @@ -26,7 +26,7 @@ namespace ousia { Project::Project(Manager &mgr) - : Node(mgr), + : RootNode(mgr), systemTypesystem(acquire(new SystemTypesystem(mgr))), documents(this) { @@ -41,6 +41,16 @@ void Project::doResolve(ResolutionState &state){ continueResolveComposita(documents, documents.getIndex(), state); } +void Project::doReference(Handle<Node> node) { + if (node->isa(RttiTypes::Document)) { + referenceDocument(node.cast<Document>()); + } +} + +RttiSet Project::doGetReferenceTypes() const { + return RttiSet{&RttiTypes::Document}; +} + Rooted<SystemTypesystem> Project::getSystemTypesystem() { return systemTypesystem; @@ -55,7 +65,7 @@ Rooted<Typesystem> Project::createTypesystem(const std::string &name) Rooted<Document> Project::createDocument(const std::string &name) { Rooted<Document> document{new Document(getManager(), name)}; - addDocument(document); + referenceDocument(document); return document; } @@ -64,7 +74,7 @@ Rooted<Domain> Project::createDomain(const std::string &name) return Rooted<Domain>{new Domain(getManager(), systemTypesystem, name)}; } -void Project::addDocument(Handle<Document> document) +void Project::referenceDocument(Handle<Document> document) { invalidate(); documents.push_back(document); @@ -74,7 +84,7 @@ const NodeVector<Document> &Project::getDocuments() const { return documents; } namespace RttiTypes { const Rtti Project = RttiBuilder<ousia::Project>("Project") - .parent(&Node) + .parent(&RootNode) .composedOf(&Document) .composedOf(&SystemTypesystem); } diff --git a/src/core/model/Project.hpp b/src/core/model/Project.hpp index 9b81058..480609c 100644 --- a/src/core/model/Project.hpp +++ b/src/core/model/Project.hpp @@ -28,13 +28,14 @@ #ifndef _OUSIA_PROJECT_HPP_ #define _OUSIA_PROJECT_HPP_ -#include "Node.hpp" +#include <core/common/Rtti.hpp> + +#include "RootNode.hpp" namespace ousia { // Forward declarations class Logger; -class Rtti; class Registry; class SystemTypesystem; class Typesystem; @@ -46,7 +47,7 @@ class Domain; * documents are stored. It also contains an instance of the SystemTypesystem * and allows for simple creation of new Typesystem and Domain instances. */ -class Project : public Node { +class Project : public RootNode { private: /** * Private instance of the system typesystem which is distributed as a @@ -62,6 +63,8 @@ private: protected: bool doValidate(Logger &loger) const override; void doResolve(ResolutionState &state) override; + void doReference(Handle<Node> node) override; + RttiSet doGetReferenceTypes() const override; public: /** @@ -108,7 +111,7 @@ public: * * @param document is the document that should be added to the project. */ - void addDocument(Handle<Document> document); + void referenceDocument(Handle<Document> document); /** * Returns all documents of this project. diff --git a/src/core/model/RootNode.cpp b/src/core/model/RootNode.cpp index fa05c36..821c50c 100644 --- a/src/core/model/RootNode.cpp +++ b/src/core/model/RootNode.cpp @@ -22,17 +22,17 @@ namespace ousia { -void RootNode::import(Handle<Node> node) +void RootNode::reference(Handle<Node> node) { - if (!node->type().isOneOf(doGetImportTypes())) { + if (!node->type().isOneOf(getReferenceTypes())) { throw OusiaException( std::string("Node with type ") + node->type().name + - std::string(" cannot be imported in a ") + type().name); + std::string(" cannot be referenced in a ") + type().name); } - doImport(node); + doReference(node); } -RttiSet RootNode::getImportTypes() { return doGetImportTypes(); } +RttiSet RootNode::getReferenceTypes() const { return doGetReferenceTypes(); } namespace RttiTypes { const Rtti RootNode = RttiBuilder<ousia::RootNode>("RootNode").parent(&Node); diff --git a/src/core/model/RootNode.hpp b/src/core/model/RootNode.hpp index 1ed72f1..173a6e4 100644 --- a/src/core/model/RootNode.hpp +++ b/src/core/model/RootNode.hpp @@ -28,6 +28,9 @@ #ifndef _OUSIA_ROOT_NODE_HPP_ #define _OUSIA_ROOT_NODE_HPP_ +#include <core/managed/Managed.hpp> +#include <core/common/Rtti.hpp> + #include "Node.hpp" namespace ousia { @@ -43,16 +46,16 @@ protected: * Imports the given node. The node was checked to be one of the supported * types. * - * @param node is the node that should be imported. + * @param node is the node that should be referenced. */ - virtual void doImport(Handle<Node> node) = 0; + virtual void doReference(Handle<Node> node) = 0; /** - * Should return a set of types that can be imported by this Node. + * Should return a set of types that can be referenced by this Node. * - * @return a set of Node types that may be imported by this Node. + * @return a set of Node types that may be referenced by this Node. */ - virtual RttiSet doGetImportTypes() = 0; + virtual RttiSet doGetReferenceTypes() const = 0; public: using Node::Node; @@ -63,14 +66,14 @@ public: * * @param node is the node that should be imported. */ - void import(Handle<Node> node); + void reference(Handle<Node> node); /** - * Returns a set of types that can be imported by this Node. + * Returns a set of types that can be referenced by this Node. * - * @return a set of types that can be imported. + * @return a set of types that can be referenced. */ - RttiSet getImportTypes(); + RttiSet getReferenceTypes() const; }; namespace RttiTypes { diff --git a/src/core/model/Typesystem.cpp b/src/core/model/Typesystem.cpp index dc6df63..1711129 100644 --- a/src/core/model/Typesystem.cpp +++ b/src/core/model/Typesystem.cpp @@ -633,6 +633,18 @@ bool Typesystem::doValidate(Logger &logger) const continueValidationCheckDuplicates(types, logger); } +void Typesystem::doReference(Handle<Node> node) +{ + if (node->isa(RttiTypes::Typesystem)) { + referenceTypesystem(node.cast<Typesystem>()); + } +} + +RttiSet Typesystem::doGetReferenceTypes() const +{ + return RttiSet{&RttiTypes::Typesystem}; +} + Rooted<StructType> Typesystem::createStructType(const std::string &name) { Rooted<StructType> structType{new StructType(getManager(), name, this)}; @@ -688,7 +700,7 @@ const Rtti UnknownType = const Rtti Constant = RttiBuilder<ousia::Constant>("Constant").parent(&Node); const Rtti Attribute = RttiBuilder<ousia::Attribute>("Attribute").parent(&Node); const Rtti Typesystem = - RttiBuilder<ousia::Typesystem>("Typesystem").parent(&Node).composedOf( + RttiBuilder<ousia::Typesystem>("Typesystem").parent(&RootNode).composedOf( {&StringType, &IntType, &DoubleType, &BoolType, &EnumType, &StructType, &Constant}); const Rtti SystemTypesystem = RttiBuilder<ousia::SystemTypesystem>( diff --git a/src/core/model/Typesystem.hpp b/src/core/model/Typesystem.hpp index 9d85d80..b14ff62 100644 --- a/src/core/model/Typesystem.hpp +++ b/src/core/model/Typesystem.hpp @@ -38,6 +38,7 @@ #include <core/common/Variant.hpp> #include "Node.hpp" +#include "RootNode.hpp" namespace ousia { @@ -1025,7 +1026,7 @@ public: /** * The Typesystem class represents a collection of types and constants. */ -class Typesystem : public Node { +class Typesystem : public RootNode { private: /** * List containing all types. @@ -1044,8 +1045,9 @@ private: protected: void doResolve(ResolutionState &state) override; - bool doValidate(Logger &logger) const override; + void doReference(Handle<Node> node) override; + RttiSet doGetReferenceTypes() const override; public: /** @@ -1055,7 +1057,7 @@ public: * @param name is the name of the typesystem. */ Typesystem(Manager &mgr, std::string name) - : Node(mgr, std::move(name)), + : RootNode(mgr, std::move(name)), types(this), constants(this), typesystems(this) diff --git a/src/core/resource/ResourceRequest.cpp b/src/core/resource/ResourceRequest.cpp index f820bc3..41aec75 100644 --- a/src/core/resource/ResourceRequest.cpp +++ b/src/core/resource/ResourceRequest.cpp @@ -146,6 +146,12 @@ bool ResourceRequest::deduce(Registry ®istry, Logger &logger) { bool ok = true; + // Make sure the given file name is not empty + if (path.empty()) { + logger.error("Filename may not be empty"); + return false; + } + // Try to deduce the mimetype if none was given if (mimetype.empty()) { mimetype = registry.getMimetypeForFilename(path); @@ -206,10 +212,10 @@ bool ResourceRequest::deduce(Registry ®istry, Logger &logger) if (resourceType != ResourceType::UNKNOWN) { supportedTypes = limitSupportedTypes(resourceType, supportedTypes); if (supportedTypes.empty()) { - logger.error( - std::string("File of type \"") + mimetype + - std::string("\" cannot be included with relationship ") + - Resource::getResourceTypeName(resourceType)); + logger.error(std::string("Resource of type \"") + mimetype + + std::string("\" and relationship \"") + + Resource::getResourceTypeName(resourceType) + + std::string("\" cannot be included here")); ok = false; } } else { diff --git a/src/plugins/xml/XmlParser.cpp b/src/plugins/xml/XmlParser.cpp index d36c5fe..45320ca 100644 --- a/src/plugins/xml/XmlParser.cpp +++ b/src/plugins/xml/XmlParser.cpp @@ -327,9 +327,9 @@ public: // Perform the actual import, register the imported node within the leaf // node Rooted<Node> imported = - context().import(src, type, rel, leafRootNode->getImportTypes()); + context().import(src, type, rel, leafRootNode->getReferenceTypes()); if (imported != nullptr) { - leafRootNode->import(imported); + leafRootNode->reference(imported); } } diff --git a/test/plugins/xml/XmlParserTest.cpp b/test/plugins/xml/XmlParserTest.cpp index 2b352fd..909c4ee 100644 --- a/test/plugins/xml/XmlParserTest.cpp +++ b/test/plugins/xml/XmlParserTest.cpp @@ -44,6 +44,7 @@ struct XmlStandaloneEnvironment : public StandaloneEnvironment { XmlStandaloneEnvironment(ConcreteLogger &logger) : StandaloneEnvironment(logger) { + fileLocator.addDefaultSearchPaths(); fileLocator.addUnittestSearchPath("xmlparser"); registry.registerDefaultExtensions(); diff --git a/testdata/xmlparser/color.oxm b/testdata/xmlparser/color.oxm new file mode 100644 index 0000000..17adea4 --- /dev/null +++ b/testdata/xmlparser/color.oxm @@ -0,0 +1,18 @@ +<?xml version="1.0" standalone="yes"?> +<typesystem name="color"> + <struct name="color"> + <field name="r" type="int"/> + <field name="g" type="int"/> + <field name="b" type="int"/> + </struct> + + <constant name="aquamarine1" type="color" value="[127,255,212]"/> + <constant name="aquamarine2" type="color" value="[118,238,198]"/> + <constant name="aquamarine3" type="color" value="[102,205,170]"/> + <constant name="aquamarine" type="color" value="[127,255,212]"/> + <constant name="azure1" type="color" value="[240,255,255]"/> + <constant name="azure2" type="color" value="[224,238,238]"/> + <constant name="azure3" type="color" value="[193,205,205]"/> + <constant name="azure4" type="color" value="[131,139,139]"/> + <constant name="azure" type="color" value="[240,255,255]"/> +</typesystem> diff --git a/testdata/xmlparser/generic.oxm b/testdata/xmlparser/generic.oxm index b148364..a5a4dd6 100644 --- a/testdata/xmlparser/generic.oxm +++ b/testdata/xmlparser/generic.oxm @@ -1,18 +1,19 @@ <?xml version="1.0" standalone="yes"?> -<typesystem name="color"> - <struct name="color"> +<typesystem name="bla"> + <import>color</import> + <!--<struct name="color"> <field name="r" type="int"/> <field name="g" type="int"/> <field name="b" type="int"/> - </struct> + </struct>--> <constant name="zero" value="0" type="int" /> <constant name="zeros" value="[0, 0, 0]" type="int[]" /> - <constant name="manyZeros" value="[[0, 0], [0, 0], [0, 0]]" type="int[][][]" /> + <constant name="manyZeros" value="[[0, 0], [0, 0], [0, 0]]" type="int[][]" /> <constant name="black" value="[zero, zero, zero]" type="color" /> <struct name="structWithColor"> <field name="color" type="color" default="black" /> </struct> - <constant name="blackStructWithColor" value="[color=black]" type="structWithColor" /> + <constant name="blackStructWithColor" value="[color=aquamarine]" type="structWithColor" /> </typesystem> <!--<domain name="color"> <struct name="bla" cardinality="{1,2}" isa="blub"/> |