summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-29 21:15:18 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-29 21:15:18 +0000
commitb71531b42b3325fd6079a7039aae8641262c8adf (patch)
treea5b9aa16924c541fcb424ee9460b1ac7f5a89352
parenta0f67cc97c0050d907145e312135b60c0125e56e (diff)
downloadATCD-DS-main.tar.gz
branching/taggingDS-main
-rw-r--r--modules/CIAO/CCF/Bootstrap.rules93
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/CIDL.mpc15
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.cpp27
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.hpp22
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Parser.cpp242
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Parser.hpp123
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction.hpp17
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.cpp29
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.hpp48
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Elements.hpp23
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Factory.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp83
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp27
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp35
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp53
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp119
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp46
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph.hpp15
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.cpp126
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.hpp103
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.cpp33
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.hpp65
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.cpp81
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.hpp122
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Token.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal.hpp15
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp60
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.tpp41
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal/Elements.hpp36
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.cpp195
-rw-r--r--modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.hpp125
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc7
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.cpp5
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.hpp222
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp338
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.cpp120
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.hpp14
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp61
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationCxx.hpp385
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp277
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp153
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationXML.hpp233
-rw-r--r--modules/CIAO/CCF/CCF/CodeGenerationKit/Regex.hpp51
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/CompilerElements.mpc7
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Context.hpp112
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Diagnostic.hpp192
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/ExH.hpp12
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/FileSystem.hpp33
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Introspection.cpp26
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Introspection.hpp12
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.cpp955
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp45
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.cpp57
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/ReferenceCounting.hpp12
-rw-r--r--modules/CIAO/CCF/CCF/CompilerElements/TokenStream.hpp82
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/IDL2.mpc16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp964
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.hpp203
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Parser.cpp2360
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Parser.hpp872
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Parsing/Action.hpp142
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Parsing/Elements.hpp168
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Parsing/Recovery.hpp325
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Attribute.hpp43
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Const.hpp29
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Elements.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Enum.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Exception.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp104
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp205
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp55
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp119
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp39
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp133
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp320
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp94
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp72
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp41
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp67
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp102
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp200
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp50
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp41
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp260
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp69
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp113
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp41
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp65
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp51
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp351
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp84
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp266
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp99
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp45
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp146
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp327
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp65
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp225
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp57
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp293
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp65
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp152
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp149
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp48
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Include.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Interface.hpp52
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Member.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Module.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Native.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp73
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.cpp29
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Struct.hpp37
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/TypeId.hpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp52
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/Union.hpp49
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueType.hpp49
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp32
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp37
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph.hpp32
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.cpp37
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.cpp145
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.hpp264
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.cpp656
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.hpp1078
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.tpp14
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.cpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.hpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.cpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.hpp51
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp443
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4103
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp427
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4102
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.m417
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.hpp91
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.tpp188
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp486
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp1013
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.cpp122
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.hpp181
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.cpp24
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.hpp56
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.cpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.hpp35
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.cpp33
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.hpp35
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.cpp253
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.hpp239
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.cpp33
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.hpp41
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.cpp228
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.hpp359
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.cpp82
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.hpp106
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.cpp58
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.hpp87
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.cpp67
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.hpp41
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.cpp255
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.hpp287
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.ipp73
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.cpp56
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.hpp104
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.cpp177
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.hpp158
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.cpp102
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.hpp174
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp90
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp107
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Token.cpp13
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Token.hpp348
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Array.cpp78
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Array.hpp51
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.cpp280
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.hpp170
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp471
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.tpp128
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.cpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.hpp30
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.cpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.hpp36
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.cpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.hpp101
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/IntExpression.hpp757
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.cpp15
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp89
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.tpp99
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Member.cpp50
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Member.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Module.cpp15
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp48
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Native.cpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Native.hpp24
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.cpp15
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp178
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.tpp201
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.cpp111
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.hpp69
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/String.cpp93
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/String.hpp64
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.cpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.hpp35
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.cpp37
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp107
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.cpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Union.cpp81
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/Union.hpp63
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.cpp15
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.hpp89
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.tpp150
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp59
-rw-r--r--modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp54
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/IDL3.mpc15
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.cpp30
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.hpp22
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Parser.cpp1154
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Parser.hpp256
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction.hpp26
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Component.hpp43
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Consumes.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Elements.hpp23
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Emits.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventType.hpp49
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp32
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Factory.hpp68
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Home.hpp43
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp32
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp32
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp202
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp51
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp88
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp30
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp88
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp293
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp57
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp152
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp134
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp230
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp50
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp155
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp155
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp43
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp284
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp84
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp89
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp89
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp38
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp101
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp42
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Provides.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Publishes.hpp28
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticAction/Uses.hpp31
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph.hpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp187
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp234
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp67
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp106
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp104
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp79
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp149
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Token.hpp34
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal.hpp16
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Component.cpp128
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp319
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Component.tpp195
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Elements.hpp21
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp90
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.tpp151
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Home.cpp381
-rw-r--r--modules/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp219
-rw-r--r--modules/CIAO/CCF/Config.rules83
-rw-r--r--modules/CIAO/CCF/Documentation/Build.html402
-rw-r--r--modules/CIAO/CCF/Documentation/DesignNotes459
-rw-r--r--modules/CIAO/CCF/Documentation/TODO98
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp1860
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp34
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp228
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl21
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig6
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1.idl23
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig33
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl18
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.idl74
-rw-r--r--modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig72
-rw-r--r--modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp25
-rw-r--r--modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp32
-rw-r--r--modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp113
-rw-r--r--modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp286
-rw-r--r--modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp112
-rw-r--r--modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp386
-rw-r--r--modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/cdd.cpp144
-rw-r--r--modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.cpp32
-rw-r--r--modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.hpp34
-rw-r--r--modules/CIAO/CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp533
-rw-r--r--modules/CIAO/CCF/Example/IDL2/CxxMapping/driver.cpp96
-rw-r--r--modules/CIAO/CCF/Example/IDL2/CxxMapping/test.idl12
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/Generator.cpp32
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/Generator.hpp34
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/GeneratorImpl.hpp228
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/driver.cpp97
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/result.cidl.orig14
-rw-r--r--modules/CIAO/CCF/Test/CIDL/Compiler/test.cidl21
-rw-r--r--modules/CIAO/CCF/Test/CompilerElements/CPP/driver.cpp40
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Compiler/driver.cpp94
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Compiler/result.idl.orig88
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Compiler/test.idl151
-rw-r--r--modules/CIAO/CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl25
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Parser/Recovery/interface.idl41
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Parser/Recovery/module.idl38
-rw-r--r--modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp165
-rw-r--r--modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp17
-rw-r--r--modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp16
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.cpp32
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.hpp34
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp682
-rw-r--r--modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/recreate.cpp24
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/Generator.cpp32
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/Generator.hpp34
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/GeneratorImpl.hpp616
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/driver.cpp97
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/result.idl.orig103
-rw-r--r--modules/CIAO/CCF/Test/IDL3/Compiler/test.idl166
-rw-r--r--modules/CIAO/CCF/Version1
-rw-r--r--modules/CIAO/CIAO-INSTALL.html267
-rw-r--r--modules/CIAO/CIAO.mwc5
-rw-r--r--modules/CIAO/CIAO_DAnCE.mwc8
-rw-r--r--modules/CIAO/CIAO_TAO.mwc28
-rw-r--r--modules/CIAO/CIAO_TAO_DAnCE.mwc25
-rw-r--r--modules/CIAO/CIDLC/AttributeHeaderEmitters.cpp196
-rw-r--r--modules/CIAO/CIDLC/AttributeHeaderEmitters.hpp119
-rw-r--r--modules/CIAO/CIDLC/AttributeSourceEmitters_T.hpp360
-rw-r--r--modules/CIAO/CIDLC/CIDLC.mpc16
-rw-r--r--modules/CIAO/CIDLC/CIDLC.mwc10
-rw-r--r--modules/CIAO/CIDLC/Collectors.hpp280
-rw-r--r--modules/CIAO/CIDLC/CompositionEmitter.cpp27
-rw-r--r--modules/CIAO/CIDLC/CompositionEmitter.hpp26
-rw-r--r--modules/CIAO/CIDLC/CorbaTypeNameEmitters.cpp2014
-rw-r--r--modules/CIAO/CIDLC/CorbaTypeNameEmitters.hpp469
-rw-r--r--modules/CIAO/CIDLC/CxxNamePrinter.cpp103
-rw-r--r--modules/CIAO/CIDLC/CxxNamePrinter.hpp18
-rw-r--r--modules/CIAO/CIDLC/DescriptorGenerator.cpp582
-rw-r--r--modules/CIAO/CIDLC/DescriptorGenerator.hpp35
-rw-r--r--modules/CIAO/CIDLC/EmitterBase.cpp11
-rw-r--r--modules/CIAO/CIDLC/EmitterBase.hpp20
-rw-r--r--modules/CIAO/CIDLC/EmitterContext.cpp45
-rw-r--r--modules/CIAO/CIDLC/EmitterContext.hpp35
-rw-r--r--modules/CIAO/CIDLC/ExecImplGenerator.cpp201
-rw-r--r--modules/CIAO/CIDLC/ExecImplGenerator.hpp44
-rw-r--r--modules/CIAO/CIDLC/ExecImplHeaderGenerator.cpp819
-rw-r--r--modules/CIAO/CIDLC/ExecImplHeaderGenerator.hpp43
-rw-r--r--modules/CIAO/CIDLC/ExecImplSourceGenerator.cpp1136
-rw-r--r--modules/CIAO/CIDLC/ExecImplSourceGenerator.hpp43
-rw-r--r--modules/CIAO/CIDLC/ExecutorMappingGenerator.cpp2099
-rw-r--r--modules/CIAO/CIDLC/ExecutorMappingGenerator.hpp32
-rw-r--r--modules/CIAO/CIDLC/InterfaceEmitter.cpp26
-rw-r--r--modules/CIAO/CIDLC/InterfaceEmitter.hpp30
-rw-r--r--modules/CIAO/CIDLC/Literals.cpp81
-rw-r--r--modules/CIAO/CIDLC/Literals.hpp58
-rw-r--r--modules/CIAO/CIDLC/ModuleEmitter.cpp22
-rw-r--r--modules/CIAO/CIDLC/ModuleEmitter.hpp24
-rw-r--r--modules/CIAO/CIDLC/OperationHeaderEmitters.cpp264
-rw-r--r--modules/CIAO/CIDLC/OperationHeaderEmitters.hpp151
-rw-r--r--modules/CIAO/CIDLC/ParameterEmitter_T.hpp33
-rw-r--r--modules/CIAO/CIDLC/README.html95
-rw-r--r--modules/CIAO/CIDLC/RepositoryIdGenerator.cpp289
-rw-r--r--modules/CIAO/CIDLC/RepositoryIdGenerator.hpp21
-rw-r--r--modules/CIAO/CIDLC/ServantGenerator.cpp220
-rw-r--r--modules/CIAO/CIDLC/ServantGenerator.hpp53
-rw-r--r--modules/CIAO/CIDLC/ServantHeaderGenerator.cpp1783
-rw-r--r--modules/CIAO/CIDLC/ServantHeaderGenerator.hpp54
-rw-r--r--modules/CIAO/CIDLC/ServantSourceGenerator.cpp4476
-rw-r--r--modules/CIAO/CIDLC/ServantSourceGenerator.hpp53
-rw-r--r--modules/CIAO/CIDLC/SizeTypeCalculator.cpp217
-rw-r--r--modules/CIAO/CIDLC/SizeTypeCalculator.hpp21
-rw-r--r--modules/CIAO/CIDLC/UnescapedNamePrinter.hpp23
-rw-r--r--modules/CIAO/CIDLC/Upcase.hpp21
-rw-r--r--modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp78
-rw-r--r--modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp66
-rw-r--r--modules/CIAO/CIDLC/Version1
-rw-r--r--modules/CIAO/CIDLC/cidlc.cpp386
-rw-r--r--modules/CIAO/COPYING123
-rw-r--r--modules/CIAO/ChangeLog42
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-04a5390
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-04b2250
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-06a8579
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-06b2752
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-07a1122
-rw-r--r--modules/CIAO/ChangeLogs/ChangeLog-pre_release6202
-rw-r--r--modules/CIAO/DAnCE/Deployment.mwc4
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.cpp169
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.h128
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc21
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h58
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp2017
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h504
-rw-r--r--modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl16
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/DAM_Map.cpp122
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/DAM_Map.h72
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc16
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp247
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp512
-rw-r--r--modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h175
-rw-r--r--modules/CIAO/DAnCE/Interfaces/ExecutionManagerDaemon.idl25
-rw-r--r--modules/CIAO/DAnCE/Interfaces/ExecutionManager_stub_export.h54
-rw-r--r--modules/CIAO/DAnCE/Interfaces/Interfaces.mpc39
-rw-r--r--modules/CIAO/DAnCE/Interfaces/NodeManagerDaemon.idl35
-rw-r--r--modules/CIAO/DAnCE/Interfaces/NodeManager_stub_export.h54
-rw-r--r--modules/CIAO/DAnCE/Interfaces/NodeManager_svnt_export.h54
-rw-r--r--modules/CIAO/DAnCE/Interfaces/README2
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/CIAO_NodeApplication_export.h54
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.cpp138
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.h103
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/Container_Impl.cpp609
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/Container_Impl.h215
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/Container_Impl.inl37
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.cpp39
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.h62
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator_export.h54
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApp_Configurator.h90
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication.cpp52
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc41
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.cpp252
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.h70
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.inl9
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp1256
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h371
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.inl78
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp448
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.h133
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.inl13
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTNA_Configurator_Export.h54
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.cpp108
-rw-r--r--modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.h78
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/CIAO_NAM_Export.h54
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp651
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h137
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.cpp95
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.h60
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc24
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp1161
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h404
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl49
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.cpp115
-rw-r--r--modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.h67
-rw-r--r--modules/CIAO/DAnCE/NodeManager/BaseMonitor.h63
-rw-r--r--modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.cpp155
-rw-r--r--modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.h107
-rw-r--r--modules/CIAO/DAnCE/NodeManager/Monitor.mpc28
-rw-r--r--modules/CIAO/DAnCE/NodeManager/MonitorCB.cpp59
-rw-r--r--modules/CIAO/DAnCE/NodeManager/MonitorCB.h73
-rw-r--r--modules/CIAO/DAnCE/NodeManager/MonitorController.cpp234
-rw-r--r--modules/CIAO/DAnCE/NodeManager/MonitorController.h123
-rw-r--r--modules/CIAO/DAnCE/NodeManager/NAM_Map.cpp52
-rw-r--r--modules/CIAO/DAnCE/NodeManager/NAM_Map.h72
-rw-r--r--modules/CIAO/DAnCE/NodeManager/NodeManager.mpc33
-rw-r--r--modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp698
-rw-r--r--modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h341
-rw-r--r--modules/CIAO/DAnCE/NodeManager/Node_Manager.cpp288
-rw-r--r--modules/CIAO/DAnCE/NodeManager/README13
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp270
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h128
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp28
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h171
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl155
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc22
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp153
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h78
-rw-r--r--modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h58
-rw-r--r--modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp327
-rw-r--r--modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc33
-rw-r--r--modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp418
-rw-r--r--modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h101
-rw-r--r--modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h58
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/Options.cpp147
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/Options.h93
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp256
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h113
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp20
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h40
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/README46
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp265
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h81
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RMadmin.cpp249
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp279
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc53
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl13
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp1267
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h280
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp101
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h66
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp375
-rw-r--r--modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h117
-rw-r--r--modules/CIAO/DAnCE/StaticConfigurator/README29
-rw-r--r--modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl119
-rw-r--r--modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl20
-rw-r--r--modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.cpp159
-rw-r--r--modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.mpc10
-rw-r--r--modules/CIAO/DAnCE/TargetManager/CmpClient.cpp271
-rw-r--r--modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp738
-rw-r--r--modules/CIAO/DAnCE/TargetManager/DomainDataManager.h290
-rw-r--r--modules/CIAO/DAnCE/TargetManager/DomainEvents.idl25
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TM_Client.mpc21
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager.cidl27
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager.mpc62
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl79
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManagerImpl.idl39
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp395
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h218
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager_exec_export.h54
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager_stub_export.h54
-rw-r--r--modules/CIAO/DAnCE/TargetManager/TargetManager_svnt_export.h54
-rw-r--r--modules/CIAO/DAnCE/TargetManager/descriptors/Domain.cdd101
-rw-r--r--modules/CIAO/DAnCE/TargetManager/descriptors/NodeDetails.dat2
-rw-r--r--modules/CIAO/DAnCE/TargetManager/descriptors/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp92
-rw-r--r--modules/CIAO/DAnCE/TargetManager/descriptors/run_test_TargetManager.pl160
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc163
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl19
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl34
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp254
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp155
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp169
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp140
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/README12
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp149
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h149
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h54
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h54
-rw-r--r--modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h54
-rwxr-xr-xmodules/CIAO/DAnCE/tests/NodeApplicationTest/run_test.pl47
-rwxr-xr-xmodules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_ex.pl47
-rwxr-xr-xmodules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_simple.pl47
-rwxr-xr-xmodules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl62
-rw-r--r--modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat3
-rw-r--r--modules/CIAO/MPC/config/ciao_client_dnc.mpb9
-rw-r--r--modules/CIAO/MPC/config/ciao_component_dnc.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_config_handlers.mpb25
-rw-r--r--modules/CIAO/MPC/config/ciao_config_handlers_base.mpb13
-rw-r--r--modules/CIAO/MPC/config/ciao_container_dnc.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_deployment_stub.mpb9
-rw-r--r--modules/CIAO/MPC/config/ciao_deployment_svnt.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_domainapplicationmanager_dnc.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_events_base_dnc.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_events_dnc.mpb9
-rw-r--r--modules/CIAO/MPC/config/ciao_executionmanager_stub.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_nodeapplication.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_nodeapplicationmanager.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_nodemanager_stub.mpb9
-rw-r--r--modules/CIAO/MPC/config/ciao_nodemanager_svnt.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_noop_configurator.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_plan_generator.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_race_component.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_race_default.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_race_monitor.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_rtevent_dnc.mpb9
-rw-r--r--modules/CIAO/MPC/config/ciao_servant_dnc.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_server_dnc.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_static_dnc_app.mpb5
-rw-r--r--modules/CIAO/MPC/config/ciao_targetmanager_stub.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciao_targetmanager_svnt.mpb7
-rw-r--r--modules/CIAO/MPC/config/ciao_xml_utils.mpb8
-rw-r--r--modules/CIAO/MPC/config/ciaocidldefaults.mpb24
-rw-r--r--modules/CIAO/MPC/config/cidlc.mpb15
-rw-r--r--modules/CIAO/MPC/config/dance_extension_stub.mpb6
-rw-r--r--modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb23
-rw-r--r--modules/CIAO/NEWS764
-rw-r--r--modules/CIAO/PROBLEM-REPORT-FORM95
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller.cidl28
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller.idl64
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller.mpc64
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller_exec.cpp160
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller_exec.h120
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Controller/Component/Controller_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.idl21
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.mpc59
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.cidl25
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.idl22
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc95
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.cpp167
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.h132
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/Injector.cpp185
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp97
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl27
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl34
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat1
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp312
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h121
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable119
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp24
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h214
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl162
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp269
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.h158
-rw-r--r--modules/CIAO/RACE/Input_Adapters/LocationUpdater/README.txt12
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/Injector.cpp180
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp24
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h214
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl162
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp86
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl26
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp451
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.h151
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl33
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable118
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat1
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp265
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h121
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h58
-rw-r--r--modules/CIAO/RACE/Input_Adapters/PlanGenerator/README.txt15
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.idl19
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.mpc60
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Component/Output_Manager.idl18
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc58
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/Interface/PlanEgress.idl22
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.cidl25
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.idl21
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc76
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.cpp198
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.h152
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.cidl25
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.idl32
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc100
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.cpp205
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.h156
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Interface/PlanIngress.idl22
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc58
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.cidl28
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.idl32
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.mpc103
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.cpp206
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.h157
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_I.idl24
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc60
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/Base/Planner.idl24
-rw-r--r--modules/CIAO/RACE/Planners/Base/Planner.mpc60
-rw-r--r--modules/CIAO/RACE/Planners/Base/Planner_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/Base/Planner_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/Interface/Planner_I.idl22
-rw-r--r--modules/CIAO/RACE/Planners/Interface/Planner_Interface.mpc58
-rw-r--r--modules/CIAO/RACE/Planners/Interface/Planner_Interface_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/Interface/Planner_Interface_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.cidl25
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.idl23
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc100
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.cpp230
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.h170
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_stub_export.h54
-rw-r--r--modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/common/RACE_common.idl17
-rw-r--r--modules/CIAO/RACE/common/RACE_common.mpc58
-rw-r--r--modules/CIAO/RACE/common/RACE_common_stub_export.h54
-rw-r--r--modules/CIAO/RACE/common/RACE_common_svnt_export.h54
-rw-r--r--modules/CIAO/RACE/descriptors/Deployment.xsd776
-rw-r--r--modules/CIAO/RACE/descriptors/Modified_Deployment.xsd790
-rw-r--r--modules/CIAO/RACE/descriptors/XMI.xsd35
-rw-r--r--modules/CIAO/RACE/descriptors/deployment.dat1
-rw-r--r--modules/CIAO/RACE/descriptors/flattened_deploymentplan.cdp361
-rw-r--r--modules/CIAO/README152
-rw-r--r--modules/CIAO/Release53
-rw-r--r--modules/CIAO/VERSION12
-rw-r--r--modules/CIAO/bin/PerlCIAO/TestUtils.base3
-rw-r--r--modules/CIAO/bin/PerlCIAO/TestUtils.pm323
-rw-r--r--modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm78
-rw-r--r--modules/CIAO/bin/PerlCIAO/generate_container.pl126
-rw-r--r--modules/CIAO/bin/PerlCIAO/perlciao.mpc9
-rwxr-xr-xmodules/CIAO/bin/generate_component_mpc.pl263
-rwxr-xr-xmodules/CIAO/bin/replace_dummy_with_dummylabel.sh10
-rwxr-xr-xmodules/CIAO/bin/valgrind_nodedaemon.py87
-rw-r--r--modules/CIAO/ciao/CCM_Base.idl26
-rw-r--r--modules/CIAO/ciao/CCM_CCM2Context.idl45
-rw-r--r--modules/CIAO/ciao/CCM_CCMException.idl41
-rw-r--r--modules/CIAO/ciao/CCM_ClientContainerInterceptor.idl27
-rw-r--r--modules/CIAO/ciao/CCM_ClientContainerInterceptorRegistration.idl24
-rw-r--r--modules/CIAO/ciao/CCM_Component.idl22
-rw-r--r--modules/CIAO/ciao/CCM_ComponentId.idl47
-rw-r--r--modules/CIAO/ciao/CCM_Configurator.idl31
-rw-r--r--modules/CIAO/ciao/CCM_Container.idl25
-rw-r--r--modules/CIAO/ciao/CCM_ContainerClientRequestInfo.idl20
-rw-r--r--modules/CIAO/ciao/CCM_ContainerInterceptor.idl21
-rw-r--r--modules/CIAO/ciao/CCM_ContainerRequestInfo.idl22
-rw-r--r--modules/CIAO/ciao/CCM_ContainerServantRequestInfo.idl25
-rw-r--r--modules/CIAO/ciao/CCM_ContainerServerRequestInfo.idl20
-rw-r--r--modules/CIAO/ciao/CCM_ContainerStubRequestInfo.idl24
-rw-r--r--modules/CIAO/ciao/CCM_Container_Ex.idl23
-rw-r--r--modules/CIAO/ciao/CCM_Context.idl44
-rw-r--r--modules/CIAO/ciao/CCM_Cookie.idl29
-rw-r--r--modules/CIAO/ciao/CCM_Core.mpc322
-rw-r--r--modules/CIAO/ciao/CCM_EnterpriseComponent.idl25
-rw-r--r--modules/CIAO/ciao/CCM_Entity2Context.idl48
-rw-r--r--modules/CIAO/ciao/CCM_EntityComponent.idl51
-rw-r--r--modules/CIAO/ciao/CCM_EntityContext.idl35
-rw-r--r--modules/CIAO/ciao/CCM_Enumeration.idl38
-rw-r--r--modules/CIAO/ciao/CCM_EventBase.idl25
-rw-r--r--modules/CIAO/ciao/CCM_EventConsumerBase.idl50
-rw-r--r--modules/CIAO/ciao/CCM_Events.idl102
-rw-r--r--modules/CIAO/ciao/CCM_ExecutorLocator.idl39
-rw-r--r--modules/CIAO/ciao/CCM_ExtensionComponent.idl20
-rw-r--r--modules/CIAO/ciao/CCM_ExtensionContext.idl37
-rw-r--r--modules/CIAO/ciao/CCM_Home.idl52
-rw-r--r--modules/CIAO/ciao/CCM_HomeConfiguration.idl33
-rw-r--r--modules/CIAO/ciao/CCM_HomeExecutorBase.idl27
-rw-r--r--modules/CIAO/ciao/CCM_HomeFinder.idl39
-rw-r--r--modules/CIAO/ciao/CCM_HomeRegistration.idl34
-rw-r--r--modules/CIAO/ciao/CCM_InvalidRegistration.idl14
-rw-r--r--modules/CIAO/ciao/CCM_KeylessCCMHome.idl30
-rw-r--r--modules/CIAO/ciao/CCM_Navigation.idl54
-rw-r--r--modules/CIAO/ciao/CCM_Object.idl106
-rw-r--r--modules/CIAO/ciao/CCM_PrimaryKeyBase.idl24
-rw-r--r--modules/CIAO/ciao/CCM_ProxyHomeRegistration.idl36
-rw-r--r--modules/CIAO/ciao/CCM_QoS.idl31
-rw-r--r--modules/CIAO/ciao/CCM_Receptacle.idl68
-rw-r--r--modules/CIAO/ciao/CCM_ServantContainerInterceptor.idl26
-rw-r--r--modules/CIAO/ciao/CCM_ServantContainerInterceptorRegistration.idl24
-rw-r--r--modules/CIAO/ciao/CCM_ServerContainerInterceptor.idl28
-rw-r--r--modules/CIAO/ciao/CCM_ServerContainerInterceptorRegistration.idl24
-rw-r--r--modules/CIAO/ciao/CCM_Session2Context.idl50
-rw-r--r--modules/CIAO/ciao/CCM_SessionComponent.idl62
-rw-r--r--modules/CIAO/ciao/CCM_SessionContext.idl31
-rw-r--r--modules/CIAO/ciao/CCM_SessionSynchronization.idl39
-rw-r--r--modules/CIAO/ciao/CCM_StandardConfigurator.idl38
-rw-r--r--modules/CIAO/ciao/CCM_StateIdFactory.idl72
-rw-r--r--modules/CIAO/ciao/CCM_StubContainerInterceptor.idl26
-rw-r--r--modules/CIAO/ciao/CCM_StubContainerInterceptorRegistration.idl24
-rw-r--r--modules/CIAO/ciao/CCM_Transaction.idl89
-rw-r--r--modules/CIAO/ciao/CIAO_Client_Export.h50
-rw-r--r--modules/CIAO/ciao/CIAO_Config.h20
-rw-r--r--modules/CIAO/ciao/CIAO_Container_Export.h50
-rw-r--r--modules/CIAO/ciao/CIAO_NodeApplication_CallBack.idl23
-rw-r--r--modules/CIAO/ciao/CIAO_ServerResources.idl237
-rw-r--r--modules/CIAO/ciao/CIAO_Server_Export.h50
-rw-r--r--modules/CIAO/ciao/CIAO_SwapExec.idl12
-rw-r--r--modules/CIAO/ciao/CIAO_UpgradeableContext.idl17
-rw-r--r--modules/CIAO/ciao/CIAO_common.h80
-rw-r--r--modules/CIAO/ciao/Client_init.cpp56
-rw-r--r--modules/CIAO/ciao/Client_init.h47
-rw-r--r--modules/CIAO/ciao/Components.idl18
-rw-r--r--modules/CIAO/ciao/Container_Base.cpp617
-rw-r--r--modules/CIAO/ciao/Container_Base.h333
-rw-r--r--modules/CIAO/ciao/Container_Base.inl14
-rw-r--r--modules/CIAO/ciao/Context_Impl_Base.cpp98
-rw-r--r--modules/CIAO/ciao/Context_Impl_Base.h116
-rw-r--r--modules/CIAO/ciao/Context_Impl_T.cpp72
-rw-r--r--modules/CIAO/ciao/Context_Impl_T.h105
-rw-r--r--modules/CIAO/ciao/Cookies.cpp72
-rw-r--r--modules/CIAO/ciao/Cookies.h73
-rw-r--r--modules/CIAO/ciao/Cookies.inl16
-rw-r--r--modules/CIAO/ciao/CosPersistentState.idl24
-rw-r--r--modules/CIAO/ciao/Deployment.idl36
-rw-r--r--modules/CIAO/ciao/Deployment_Application.idl34
-rw-r--r--modules/CIAO/ciao/Deployment_ApplicationManager.idl28
-rw-r--r--modules/CIAO/ciao/Deployment_Base.idl40
-rw-r--r--modules/CIAO/ciao/Deployment_Connection.idl43
-rw-r--r--modules/CIAO/ciao/Deployment_Container.idl93
-rw-r--r--modules/CIAO/ciao/Deployment_Core.idl49
-rw-r--r--modules/CIAO/ciao/Deployment_Data.idl40
-rw-r--r--modules/CIAO/ciao/Deployment_DeploymentPlan.idl192
-rw-r--r--modules/CIAO/ciao/Deployment_DomainApplicationManager.idl65
-rw-r--r--modules/CIAO/ciao/Deployment_Events.idl95
-rw-r--r--modules/CIAO/ciao/Deployment_ExecutionManager.idl52
-rw-r--r--modules/CIAO/ciao/Deployment_NodeApplication.idl122
-rw-r--r--modules/CIAO/ciao/Deployment_NodeApplicationManager.idl58
-rw-r--r--modules/CIAO/ciao/Deployment_NodeManager.idl58
-rw-r--r--modules/CIAO/ciao/Deployment_Packaging_Data.idl160
-rw-r--r--modules/CIAO/ciao/Deployment_RepositoryManager.idl40
-rw-r--r--modules/CIAO/ciao/Deployment_TargetData.idl64
-rw-r--r--modules/CIAO/ciao/Deployment_TargetManager.idl40
-rw-r--r--modules/CIAO/ciao/Deployment_Target_Data.idl14
-rw-r--r--modules/CIAO/ciao/Deployment_common.h54
-rw-r--r--modules/CIAO/ciao/Deployment_stub_export.h58
-rw-r--r--modules/CIAO/ciao/Deployment_svnt_export.h58
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Activator.cpp66
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Activator.h102
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Servant_Base.cpp27
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Servant_Base.h54
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Servant_T.cpp90
-rw-r--r--modules/CIAO/ciao/Dynamic_Component_Servant_T.h86
-rw-r--r--modules/CIAO/ciao/Home_Servant_Impl_Base.cpp36
-rw-r--r--modules/CIAO/ciao/Home_Servant_Impl_Base.h73
-rw-r--r--modules/CIAO/ciao/Home_Servant_Impl_T.cpp230
-rw-r--r--modules/CIAO/ciao/Home_Servant_Impl_T.h119
-rw-r--r--modules/CIAO/ciao/NodeApp_CB_Impl.cpp64
-rw-r--r--modules/CIAO/ciao/NodeApp_CB_Impl.h78
-rw-r--r--modules/CIAO/ciao/Object_Set_T.cpp133
-rw-r--r--modules/CIAO/ciao/Object_Set_T.h130
-rw-r--r--modules/CIAO/ciao/Object_Set_T.inl20
-rw-r--r--modules/CIAO/ciao/Port_Activator.cpp41
-rw-r--r--modules/CIAO/ciao/Port_Activator.h91
-rw-r--r--modules/CIAO/ciao/Port_Activator_T.cpp83
-rw-r--r--modules/CIAO/ciao/Port_Activator_T.h82
-rw-r--r--modules/CIAO/ciao/Security.idl23
-rw-r--r--modules/CIAO/ciao/Servant_Activator.cpp191
-rw-r--r--modules/CIAO/ciao/Servant_Activator.h109
-rw-r--r--modules/CIAO/ciao/Servant_Impl_Base.cpp659
-rw-r--r--modules/CIAO/ciao/Servant_Impl_Base.h266
-rw-r--r--modules/CIAO/ciao/Servant_Impl_T.cpp262
-rw-r--r--modules/CIAO/ciao/Servant_Impl_T.h124
-rw-r--r--modules/CIAO/ciao/Servant_Impl_Utils_T.cpp164
-rw-r--r--modules/CIAO/ciao/Server_init.cpp234
-rw-r--r--modules/CIAO/ciao/Server_init.h91
-rw-r--r--modules/CIAO/ciao/StandardConfigurator_Impl.cpp39
-rw-r--r--modules/CIAO/ciao/StandardConfigurator_Impl.h75
-rw-r--r--modules/CIAO/ciao/Swapping_Container.cpp247
-rw-r--r--modules/CIAO/ciao/Swapping_Container.h125
-rw-r--r--modules/CIAO/ciao/Swapping_Container.inl8
-rw-r--r--modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.cpp35
-rw-r--r--modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.h65
-rw-r--r--modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.cpp222
-rw-r--r--modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.h129
-rw-r--r--modules/CIAO/ciao/Upgradeable_Context_Impl_T.cpp88
-rw-r--r--modules/CIAO/ciao/Upgradeable_Context_Impl_T.h86
-rw-r--r--modules/CIAO/ciao/Version.h9
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp100
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.h82
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events.mpc20
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp37
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h142
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl79
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc26
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h53
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_Events_Export.h53
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h58
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp833
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h359
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl54
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc27
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp37
-rw-r--r--modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h38
-rw-r--r--modules/CIAO/docs/ConfigValues.html270
-rw-r--r--modules/CIAO/docs/EnvVars.html35
-rw-r--r--modules/CIAO/docs/Purify.html72
-rw-r--r--modules/CIAO/docs/RT-Extension.html132
-rw-r--r--modules/CIAO/docs/TODO.html259
-rw-r--r--modules/CIAO/docs/Trace.html32
-rw-r--r--modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd93
-rw-r--r--modules/CIAO/docs/XML/componentassembly.dtd367
-rw-r--r--modules/CIAO/docs/XML/corbacomponent.dtd316
-rw-r--r--modules/CIAO/docs/XML/properties.dtd87
-rw-r--r--modules/CIAO/docs/XML/softpkg.dtd220
-rw-r--r--modules/CIAO/docs/cidlc.html296
-rw-r--r--modules/CIAO/docs/com-impl.html60
-rw-r--r--modules/CIAO/docs/generate_component_mpc.html105
-rw-r--r--modules/CIAO/docs/imgs/CCM-v5.vsdbin0 -> 486912 bytes
-rw-r--r--modules/CIAO/docs/imgs/CCM.vsdbin0 -> 643072 bytes
-rw-r--r--modules/CIAO/docs/imgs/DAnCE-Dynamic.pngbin0 -> 71061 bytes
-rw-r--r--modules/CIAO/docs/imgs/DAnCE-Dynamic.sxdbin0 -> 46579 bytes
-rw-r--r--modules/CIAO/docs/imgs/File-Gen-Existing.pngbin0 -> 40181 bytes
-rw-r--r--modules/CIAO/docs/imgs/File-Gen-Future.pngbin0 -> 41057 bytes
-rw-r--r--modules/CIAO/docs/imgs/File_Generation_Flow.vsdbin0 -> 107008 bytes
-rw-r--r--modules/CIAO/docs/imgs/IDL-CIDL-classes.vsdbin0 -> 201216 bytes
-rw-r--r--modules/CIAO/docs/imgs/basic-container.pngbin0 -> 8000 bytes
-rw-r--r--modules/CIAO/docs/imgs/ciao-dynamic1.jpgbin0 -> 56203 bytes
-rw-r--r--modules/CIAO/docs/imgs/ciao-dynamic2.jpgbin0 -> 46081 bytes
-rw-r--r--modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpgbin0 -> 44220 bytes
-rw-r--r--modules/CIAO/docs/imgs/ciao-static1.jpgbin0 -> 53013 bytes
-rw-r--r--modules/CIAO/docs/imgs/ciao-static2.jpgbin0 -> 64775 bytes
-rw-r--r--modules/CIAO/docs/imgs/component-basic.pngbin0 -> 151172 bytes
-rw-r--r--modules/CIAO/docs/imgs/dance_arch.jpgbin0 -> 70602 bytes
-rw-r--r--modules/CIAO/docs/imgs/dance_arch.vsdbin0 -> 100352 bytes
-rw-r--r--modules/CIAO/docs/imgs/deployment.pngbin0 -> 10392 bytes
-rw-r--r--modules/CIAO/docs/imgs/extended-container.pngbin0 -> 19243 bytes
-rw-r--r--modules/CIAO/docs/imgs/home-config.pngbin0 -> 9873 bytes
-rw-r--r--modules/CIAO/docs/imgs/static_dance_arch.jpgbin0 -> 58200 bytes
-rw-r--r--modules/CIAO/docs/imgs/static_dance_arch.vsdbin0 -> 86528 bytes
-rw-r--r--modules/CIAO/docs/imgs/static_dance_impl.jpgbin0 -> 56173 bytes
-rw-r--r--modules/CIAO/docs/imgs/static_dance_impl.vsdbin0 -> 101888 bytes
-rw-r--r--modules/CIAO/docs/index.html169
-rw-r--r--modules/CIAO/docs/new_components.html129
-rw-r--r--modules/CIAO/docs/releasenotes/dance.html229
-rw-r--r--modules/CIAO/docs/releasenotes/index.html170
-rw-r--r--modules/CIAO/docs/releasenotes/switch.html35
-rw-r--r--modules/CIAO/docs/schema/Basic_Deployment_Data.xsd349
-rw-r--r--modules/CIAO/docs/schema/CIAOEvents.xsd104
-rw-r--r--modules/CIAO/docs/schema/CIAOServerResources.xsd194
-rw-r--r--modules/CIAO/docs/schema/Deployment.xsd29
-rw-r--r--modules/CIAO/docs/schema/Modified_Deployment.xsd826
-rw-r--r--modules/CIAO/docs/schema/README.html64
-rw-r--r--modules/CIAO/docs/schema/SANet_Network.xsd98
-rw-r--r--modules/CIAO/docs/schema/ServerResourceUsage.txt79
-rw-r--r--modules/CIAO/docs/schema/Spec_Defined_Deployment.xsd897
-rw-r--r--modules/CIAO/docs/schema/Spec_Defined_XMI.xsd35
-rw-r--r--modules/CIAO/docs/schema/Task_Map.xsd90
-rw-r--r--modules/CIAO/docs/schema/ccd.xsd27
-rw-r--r--modules/CIAO/docs/schema/cdd.xsd60
-rw-r--r--modules/CIAO/docs/schema/cdp.xsd27
-rw-r--r--modules/CIAO/docs/schema/ciaopolicy.xsd607
-rw-r--r--modules/CIAO/docs/schema/cid.xsd80
-rw-r--r--modules/CIAO/docs/schema/cpd.xsd35
-rw-r--r--modules/CIAO/docs/schema/iad.xsd32
-rw-r--r--modules/CIAO/docs/schema/pcd.xsd32
-rw-r--r--modules/CIAO/docs/schema/toplevel.xsd15
-rw-r--r--modules/CIAO/docs/schema/unused_elements.xsd161
-rw-r--r--modules/CIAO/docs/schema/xsc-banner.cpp11
-rw-r--r--modules/CIAO/docs/schema/xsc-banner.h18
-rwxr-xr-xmodules/CIAO/docs/static_ciao_contents.html359
-rwxr-xr-xmodules/CIAO/docs/static_ciao_index.html23
-rwxr-xr-xmodules/CIAO/docs/static_ciao_toc.html26
-rw-r--r--modules/CIAO/docs/static_config_example.html1353
-rw-r--r--modules/CIAO/docs/static_config_rtexample.html1079
-rw-r--r--modules/CIAO/docs/static_dance.html214
-rw-r--r--modules/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp1126
-rw-r--r--modules/CIAO/docs/templates/CIAO_Glue_Session_Template.h694
-rw-r--r--modules/CIAO/docs/templates/CIAO_Glue_Session_Template.inl471
-rw-r--r--modules/CIAO/docs/templates/Executor.idl246
-rw-r--r--modules/CIAO/docs/templates/cidl_template.cidl31
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/01.html185
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/02.html554
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/03.html79
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/04.html77
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Icons/AddConnMode.gifbin0 -> 106 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Icons/SetMode.gifbin0 -> 125 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig1.jpgbin0 -> 13971 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig10.jpgbin0 -> 46474 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig11.jpgbin0 -> 35787 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig12.jpgbin0 -> 37716 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig2.jpgbin0 -> 91314 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig3.jpgbin0 -> 23857 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig4.jpgbin0 -> 30686 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig5.jpgbin0 -> 38395 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig6.jpgbin0 -> 92958 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig7.jpgbin0 -> 43408 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig8.jpgbin0 -> 36874 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Images/fig9.jpgbin0 -> 28539 bytes
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/Model/Quoter.xme2003
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/index.html195
-rw-r--r--modules/CIAO/docs/tutorials/CoSMIC/style.css15
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/01.html838
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/02.html326
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/03.html1387
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/04.html413
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cidl22
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cpp110
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.idl35
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.mpc84
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp200
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.h141
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl21
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp115
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl42
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc88
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp358
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h258
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/README.html172
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl41
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc46
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.ccd33
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cid35
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd14
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad29
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad14
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad29
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd41
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cid35
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd14
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad29
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad14
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad29
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd17
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Libraries.iad8
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cdp16
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cid41
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cpd13
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.dat3
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.pcd10
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd35
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp222
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/package.tpd8
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl40
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/Step1.JPGbin0 -> 17752 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/Step2.JPGbin0 -> 29764 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/Step3.JPGbin0 -> 32189 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/Step6.JPGbin0 -> 10762 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/Steps for Developing CCM Applications.jpgbin0 -> 82487 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpgbin0 -> 13971 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpgbin0 -> 46474 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpgbin0 -> 35787 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpgbin0 -> 37716 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpgbin0 -> 91314 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpgbin0 -> 23857 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpgbin0 -> 30686 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpgbin0 -> 38395 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpgbin0 -> 92958 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpgbin0 -> 43408 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpgbin0 -> 36874 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpgbin0 -> 28539 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpgbin0 -> 15027 bytes
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/index.html655
-rw-r--r--modules/CIAO/docs/value_factory_registration.html49
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.cidl20
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl17
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc83
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedEDEI.idl33
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp191
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h128
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_stub_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMClosedED/config1
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice.cidl20
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl30
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc66
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDeviceEI.idl30
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp164
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h130
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice_stub_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMDevice/BMDevice_svnt_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.cidl18
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl15
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc82
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplayEI.idl33
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp154
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h111
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_stub_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BasicSP.idl47
-rw-r--r--modules/CIAO/examples/BasicSP/BasicSP.mpc30
-rw-r--r--modules/CIAO/examples/BasicSP/BasicSP_stub_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/BasicSP_svnt_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC.cidl21
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC.idl41
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC.mpc113
-rw-r--r--modules/CIAO/examples/BasicSP/EC/ECEI.idl32
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC_exec.cpp293
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC_exec.h187
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC_exec_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC_stub_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/EC/EC_svnt_export.h58
-rw-r--r--modules/CIAO/examples/BasicSP/EC/README9
-rw-r--r--modules/CIAO/examples/BasicSP/EC/client.cpp62
-rw-r--r--modules/CIAO/examples/BasicSP/EC/controller.cpp128
-rw-r--r--modules/CIAO/examples/BasicSP/README.html70
-rw-r--r--modules/CIAO/examples/BasicSP/RepoMan_Usage.html117
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe.ccd51
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe.cid35
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe.cpd14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe_Exec.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe_Stub.iad14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Airframe_Svnt.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/DeploymentPlan.cdp24
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Domain.cdd25
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS.ccd44
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS.cid35
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS.cpd15
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS_Exec.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS_Stub.iad14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/GPS_Svnt.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cid82
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cpd13
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/HUDisplay.pcd10
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Libraries.iad8
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay.ccd34
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cid35
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cpd14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Exec.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Stub.iad14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Svnt.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer.ccd38
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer.cid46
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer.cpd14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer_Exec.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer_Stub.iad14
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/Timer_Svnt.iad29
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/XMI.xsd35
-rwxr-xr-xmodules/CIAO/examples/BasicSP/descriptors/basicNodeDaemon.pl57
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/basicsp.dat3
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/flattened_deploymentplan.cdp422
-rw-r--r--modules/CIAO/examples/BasicSP/descriptors/package.tpd8
-rwxr-xr-xmodules/CIAO/examples/BasicSP/descriptors/run_test.pl175
-rw-r--r--modules/CIAO/examples/Display/Display_Base/Display_Base.idl46
-rw-r--r--modules/CIAO/examples/Display/Display_Base/Display_Base.mpc52
-rw-r--r--modules/CIAO/examples/Display/Display_Base/Display_Base_skel_export.h58
-rw-r--r--modules/CIAO/examples/Display/Display_Base/Display_Base_stub_export.h58
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS.cidl19
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS.idl29
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS.mpc83
-rw-r--r--modules/CIAO/examples/Display/GPS/GPSEI.idl33
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_exec.cpp166
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_exec.h140
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_exec_export.h58
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_stub_export.h58
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_svnt_export.h58
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp155
-rw-r--r--modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h133
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay.cidl12
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl29
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc83
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp148
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h109
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec_export.h58
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay_stub_export.h58
-rw-r--r--modules/CIAO/examples/Display/NavDisplay/NavDisplay_svnt_export.h58
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp28
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h27
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h20
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp165
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h51
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp38
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h23
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc46
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp201
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h119
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp9
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h57
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp63
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h49
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp25
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h25
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp90
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h47
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp30
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h28
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp48
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h35
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gifbin0 -> 42629 bytes
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gifbin0 -> 207612 bytes
-rw-r--r--modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm651
-rw-r--r--modules/CIAO/examples/Display/README.html177
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen.cidl17
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen.idl34
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen.mpc93
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp332
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen_exec.h185
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen_exec_export.h54
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen_stub_export.h58
-rw-r--r--modules/CIAO/examples/Display/RateGen/RateGen_svnt_export.h58
-rw-r--r--modules/CIAO/examples/Display/RateGen/controller.cpp123
-rw-r--r--modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp26
-rw-r--r--modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd826
-rw-r--r--modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/examples/Display/descriptors/XMI.xsd35
-rwxr-xr-xmodules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl57
-rw-r--r--modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp305
-rwxr-xr-xmodules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl40
-rwxr-xr-xmodules/CIAO/examples/Display/descriptors/run_test_without_ns.pl173
-rw-r--r--modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl21
-rw-r--r--modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc60
-rw-r--r--modules/CIAO/examples/Hello/Hello_Base/Hello_Base_stub_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Hello_Base/Hello_Base_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Hello/ReDaC-Usage.html308
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver.cidl17
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver.idl20
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver.mpc97
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp129
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver_exec.h105
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver_exec_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver_stub_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Receiver/Receiver_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender.cidl17
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender.idl43
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender.mpc114
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender_exec.cpp190
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender_exec.h176
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender_exec_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender_stub_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Sender/Sender_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Hello/Sender/starter.cpp90
-rw-r--r--modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp16
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Domain.cdd17
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Hello.cid93
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Hello.cpd13
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Hello.pcd10
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Libraries.iad8
-rw-r--r--modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver.ccd34
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver.cid24
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver.cpd14
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver_Exec.iad29
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver_Stub.iad14
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Receiver_Svnt.iad29
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender.ccd48
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender.cid24
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender.cpd14
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender_Exec.iad29
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender_Stub.iad14
-rw-r--r--modules/CIAO/examples/Hello/descriptors/Sender_Svnt.iad29
-rw-r--r--modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan.cdp240
-rw-r--r--modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp222
-rw-r--r--modules/CIAO/examples/Hello/descriptors/package.tpd8
-rw-r--r--modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl40
-rwxr-xr-xmodules/CIAO/examples/Hello/descriptors/run_test.pl192
-rwxr-xr-xmodules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl158
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/RTsvc.conf5
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/input.csr70
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.cdp215
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.csr73
-rw-r--r--modules/CIAO/examples/Hello/descriptors_RTCCM/rt-example.cdp271
-rwxr-xr-xmodules/CIAO/examples/Hello/descriptors_RTCCM/rt_run_test.pl163
-rw-r--r--modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan.cdp222
-rw-r--r--modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp267
-rw-r--r--modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp223
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/NodeManagerMap.dat2
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat2
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-collocated.ced14
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-federation.ced50
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-filters.ced51
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-example.ced14
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-mcast.ced58
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced47
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced50
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp.ced49
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp260
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp260
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp233
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp231
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp246
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp246
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp246
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp278
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/rtec.conf1
-rwxr-xr-xmodules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons.pl40
-rwxr-xr-xmodules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl42
-rw-r--r--modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl40
-rw-r--r--modules/CIAO/examples/Hello/descriptors_naming/deploymentplan_naming.cdp240
-rw-r--r--modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan.cdp224
-rw-r--r--modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp229
-rw-r--r--modules/CIAO/examples/Hello/step-by-step.html202
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component.cidl21
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component.idl38
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component.mpc73
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component_exec.cpp183
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component_exec.h145
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component_exec_export.h58
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component_stub_export.h58
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Component_svnt_export.h58
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Interface.idl22
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Interface.mpc46
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Interface_skel_export.h58
-rw-r--r--modules/CIAO/examples/Null_Component/Null_Interface_stub_export.h58
-rw-r--r--modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp103
-rw-r--r--modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc21
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Deployment.xsd29
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Domain.cdd10
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat3
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Assembly.cid13
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Assembly_Package.cpd11
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Component.ccd15
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid35
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Component_Package.cpd13
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Component_exec.iad30
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Component_stub.iad8
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Null_Component_svnt.iad25
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/PackageConfiguration.pcd6
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/Plan.cdp73
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/XMI.xsd35
-rw-r--r--modules/CIAO/examples/Null_Component/descriptors/package.tpd6
-rw-r--r--modules/CIAO/examples/Null_Component/model/Null_Component.mgabin0 -> 19249 bytes
-rw-r--r--modules/CIAO/examples/Null_Component/model/Null_Component.xme843
-rw-r--r--modules/CIAO/examples/Null_Component/plan.h32
-rw-r--r--modules/CIAO/examples/Philosophers/Philosophers.idl75
-rw-r--r--modules/CIAO/examples/Philosophers/README1
-rw-r--r--modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.idl21
-rw-r--r--modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.mpc38
-rw-r--r--modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_stub_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver.cidl17
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver.idl21
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver.mpc63
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver_exec.cpp185
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver_exec.h125
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver_exec_export.h53
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver_stub_export.h53
-rw-r--r--modules/CIAO/examples/Swapping/Receiver/Receiver_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender.cidl17
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender.idl32
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender.mpc121
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec.cpp217
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec.h193
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp157
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_1.h130
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp142
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_2.h131
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_exec_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_stub_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/Sender_svnt_export.h54
-rw-r--r--modules/CIAO/examples/Swapping/Sender/starter.cpp97
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Benchmark.idl48
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Benchmark.mpc49
-rw-r--r--modules/CIAO/performance-tests/Benchmark/BenchmarkE.idl33
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Benchmark_stub_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Benchmark_svnt_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp24
-rw-r--r--modules/CIAO/performance-tests/Benchmark/LatencyTest.h33
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp30
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h29
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc18
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt15
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README12
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp93
-rwxr-xr-xmodules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl87
-rw-r--r--modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf5
-rw-r--r--modules/CIAO/performance-tests/Benchmark/README32
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/README9
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.cidl19
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl29
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc95
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl33
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp151
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h121
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp174
-rwxr-xr-xmodules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl115
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf6
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl19
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl30
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc109
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl34
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp183
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h110
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h50
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h49
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h49
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp51
-rwxr-xr-xmodules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl103
-rwxr-xr-xmodules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl78
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp28
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h42
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc14
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl16
-rw-r--r--modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp96
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad34
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini5
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad112
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt65
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd46
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd43
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad49
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd44
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd39
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad41
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat5
-rw-r--r--modules/CIAO/performance-tests/Benchmark/descriptors/test.dat2
-rw-r--r--modules/CIAO/performance-tests/Benchmark/server.cpp89
-rw-r--r--modules/CIAO/performance-tests/Benchmark/svc.conf6
-rw-r--r--modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp229
-rw-r--r--modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc9
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver.cidl13
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl21
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc81
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp318
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h121
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver_stub_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/Receiver/Receiver_svnt_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender.cidl13
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender.idl41
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc82
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp720
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h82
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender_exec_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender_stub_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/Sender/Sender_svnt_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/common/Protocols.idl29
-rw-r--r--modules/CIAO/performance-tests/Protocols/common/Protocols.mpc54
-rw-r--r--modules/CIAO/performance-tests/Protocols/common/Protocols_skel_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/common/Protocols_stub_export.h54
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini5
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd40
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd37
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd40
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd37
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/default.cad59
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/remote.cad62
-rwxr-xr-xmodules/CIAO/performance-tests/Protocols/descriptors/run_test.pl77
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/svc.conf1
-rw-r--r--modules/CIAO/performance-tests/Protocols/descriptors/test.dat2
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/README26
-rwxr-xr-xmodules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip40
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl13
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc10
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h9
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc150
-rwxr-xr-xmodules/CIAO/performance-tests/mico/mico-thrput-st/mico-env14
-rw-r--r--modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc43
-rw-r--r--modules/CIAO/rules.ciao.GNU64
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM93
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl17
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl27
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc102
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl19
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp613
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h260
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h50
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h50
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h50
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp197
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp117
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat2
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr30
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl177
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl52
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc45
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_skel_export.h50
-rw-r--r--modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_stub_export.h50
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/Basic.idl57
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/Basic_stub_export.h58
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/Basic_svnt_export.h58
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen.cidl19
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl45
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc120
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen_exec_export.h58
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen_stub_export.h58
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/CodeGen_svnt_export.h58
-rw-r--r--modules/CIAO/tests/CIDL/CodeGen/README40
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl51
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl29
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc18
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl24
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl46
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl68
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl87
-rw-r--r--modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl38
-rw-r--r--modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Events/Abstract/Abstract_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Events/Abstract/Abstract_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Events/Any/Any.mpc26
-rw-r--r--modules/CIAO/tests/IDL3/Events/Any/EventAny.idl16
-rw-r--r--modules/CIAO/tests/IDL3/Events/Any/README35
-rw-r--r--modules/CIAO/tests/IDL3/Events/Any/main.cpp84
-rwxr-xr-xmodules/CIAO/tests/IDL3/Events/Any/run_test.pl31
-rw-r--r--modules/CIAO/tests/IDL3/Events/Regular/Regular.idl44
-rw-r--r--modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc20
-rw-r--r--modules/CIAO/tests/IDL3/Events/Regular/Regular_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Events/Regular/Regular_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl31
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Basic/Basic_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Basic/Basic_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl35
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Factory/Factory_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Factory/Factory_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl30
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Finder/Finder_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Finder/Finder_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl33
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/All/README69
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc28
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl53
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl30
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl83
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl25
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl27
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl38
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl28
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc18
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl22
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc17
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl28
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc18
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_stub_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_svnt_export.h54
-rw-r--r--modules/CIAO/tests/IDL3/Lookup/README21
-rw-r--r--modules/CIAO/tests/IDL3/Lookup/lookup_test.idl76
-rw-r--r--modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc18
-rw-r--r--modules/CIAO/tests/Minimum/Minimum_Base/Minimum.mpc60
-rw-r--r--modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl17
-rw-r--r--modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_stub_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver.cidl17
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver.idl18
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver.mpc97
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp161
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h126
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver_exec_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver_stub_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Receiver/Receiver_svnt_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender.cidl17
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender.idl28
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender.mpc95
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp168
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender_exec.h130
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender_exec_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender_stub_export.h54
-rw-r--r--modules/CIAO/tests/Minimum/Sender/Sender_svnt_export.h54
-rw-r--r--modules/CIAO/tests/tests.mwc9
-rw-r--r--modules/CIAO/tools/Config_Handlers/ADD_Handler.cpp178
-rw-r--r--modules/CIAO/tools/Config_Handlers/ADD_Handler.h73
-rw-r--r--modules/CIAO/tools/Config_Handlers/Any_Handler.cpp47
-rw-r--r--modules/CIAO/tools/Config_Handlers/Any_Handler.h61
-rw-r--r--modules/CIAO/tools/Config_Handlers/BasicSP.cdp489
-rw-r--r--modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.cpp14086
-rw-r--r--modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.hpp7096
-rw-r--r--modules/CIAO/tools/Config_Handlers/CCD_Handler.cpp186
-rw-r--r--modules/CIAO/tools/Config_Handlers/CCD_Handler.h57
-rw-r--r--modules/CIAO/tools/Config_Handlers/CEPE_Handler.cpp51
-rw-r--r--modules/CIAO/tools/Config_Handlers/CEPE_Handler.h67
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp1360
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp514
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp197
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h74
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc28
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/CIAO_Events/test.cpp58
-rw-r--r--modules/CIAO/tools/Config_Handlers/CPD_Handler.cpp150
-rw-r--r--modules/CIAO/tools/Config_Handlers/CPD_Handler.h68
-rw-r--r--modules/CIAO/tools/Config_Handlers/CRDD_Handler.cpp66
-rw-r--r--modules/CIAO/tools/Config_Handlers/CRDD_Handler.h67
-rw-r--r--modules/CIAO/tools/Config_Handlers/Common.h41
-rw-r--r--modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp41
-rw-r--r--modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.h61
-rw-r--r--modules/CIAO/tools/Config_Handlers/Config_Handlers.mpc107
-rw-r--r--modules/CIAO/tools/Config_Handlers/Config_Handlers_Common_Export.h58
-rw-r--r--modules/CIAO/tools/Config_Handlers/Config_Handlers_Export.h58
-rw-r--r--modules/CIAO/tools/Config_Handlers/DD_Handler.cpp244
-rw-r--r--modules/CIAO/tools/Config_Handlers/DD_Handler.h119
-rw-r--r--modules/CIAO/tools/Config_Handlers/DP_Handler.cpp325
-rw-r--r--modules/CIAO/tools/Config_Handlers/DP_Handler.h91
-rw-r--r--modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.cpp107
-rw-r--r--modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.h67
-rw-r--r--modules/CIAO/tools/Config_Handlers/DataType_Handler.cpp180
-rw-r--r--modules/CIAO/tools/Config_Handlers/DataType_Handler.h62
-rw-r--r--modules/CIAO/tools/Config_Handlers/Deployment.cpp660
-rw-r--r--modules/CIAO/tools/Config_Handlers/Deployment.hpp153
-rw-r--r--modules/CIAO/tools/Config_Handlers/DnC_Dump.cpp964
-rw-r--r--modules/CIAO/tools/Config_Handlers/DnC_Dump.h152
-rw-r--r--modules/CIAO/tools/Config_Handlers/DnC_Dump_T.cpp90
-rw-r--r--modules/CIAO/tools/Config_Handlers/DnC_Dump_T.h50
-rw-r--r--modules/CIAO/tools/Config_Handlers/Dump_Obj.cpp64
-rw-r--r--modules/CIAO/tools/Config_Handlers/Dump_Obj.h76
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler.mpc18
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp180
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.h60
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp241
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h72
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp72
-rw-r--r--modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h49
-rw-r--r--modules/CIAO/tools/Config_Handlers/ERE_Handler.cpp52
-rw-r--r--modules/CIAO/tools/Config_Handlers/ERE_Handler.h70
-rw-r--r--modules/CIAO/tools/Config_Handlers/ESD_Handler.cpp127
-rw-r--r--modules/CIAO/tools/Config_Handlers/ESD_Handler.h73
-rw-r--r--modules/CIAO/tools/Config_Handlers/IDD_Handler.cpp162
-rw-r--r--modules/CIAO/tools/Config_Handlers/IDD_Handler.h76
-rw-r--r--modules/CIAO/tools/Config_Handlers/IDREF_Base.cpp114
-rw-r--r--modules/CIAO/tools/Config_Handlers/IDREF_Base.h92
-rw-r--r--modules/CIAO/tools/Config_Handlers/ID_Handler.cpp45
-rw-r--r--modules/CIAO/tools/Config_Handlers/ID_Handler.h78
-rw-r--r--modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp122
-rw-r--r--modules/CIAO/tools/Config_Handlers/IRDD_Handler.h71
-rw-r--r--modules/CIAO/tools/Config_Handlers/MDD_Handler.cpp177
-rw-r--r--modules/CIAO/tools/Config_Handlers/MDD_Handler.h71
-rw-r--r--modules/CIAO/tools/Config_Handlers/PCD_Handler.cpp140
-rw-r--r--modules/CIAO/tools/Config_Handlers/PCD_Handler.h75
-rw-r--r--modules/CIAO/tools/Config_Handlers/PSPE_Handler.cpp145
-rw-r--r--modules/CIAO/tools/Config_Handlers/PSPE_Handler.h65
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp271
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.h59
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp390
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.h67
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp162
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h74
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp165
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp124
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.h66
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h65
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp165
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.h69
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp75
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h58
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc54
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h58
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp140
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h71
-rw-r--r--modules/CIAO/tools/Config_Handlers/Package_Handlers/test.cpp113
-rw-r--r--modules/CIAO/tools/Config_Handlers/Property_Handler.cpp51
-rw-r--r--modules/CIAO/tools/Config_Handlers/Property_Handler.h71
-rw-r--r--modules/CIAO/tools/Config_Handlers/RDD_Handler.cpp57
-rw-r--r--modules/CIAO/tools/Config_Handlers/RDD_Handler.h63
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.cpp70
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.h48
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp5088
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp2546
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.cpp44
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.h52
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.cpp51
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.h50
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.cpp91
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp73
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.h45
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.cpp114
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.h45
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc39
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.cpp162
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.h77
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.cpp81
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.h48
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.cpp63
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.h46
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/input.csr70
-rw-r--r--modules/CIAO/tools/Config_Handlers/RT-CCM/test.cpp89
-rw-r--r--modules/CIAO/tools/Config_Handlers/Req_Handler.cpp57
-rw-r--r--modules/CIAO/tools/Config_Handlers/Req_Handler.h71
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_CID_Handler.cpp173
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_CID_Handler.h79
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.cpp57
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.h78
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.cpp46
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.h64
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.cpp52
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.h78
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_PC_Intf.cpp75
-rw-r--r--modules/CIAO/tools/Config_Handlers/STD_PC_Intf.h62
-rw-r--r--modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp118
-rw-r--r--modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h69
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/Exceptions.h39
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/Functors.h87
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/Utils.mpc15
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.cpp72
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.h65
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.cpp240
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.h95
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp55
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.h66
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XercesString.cpp143
-rw-r--r--modules/CIAO/tools/Config_Handlers/Utils/XercesString.h75
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.hpp72
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.ipp10
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.tpp11
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.hpp22
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.tpp97
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp574
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Types.ipp8
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Types.tpp9
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp159
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.ipp10
-rw-r--r--modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.tpp10
-rw-r--r--modules/CIAO/tools/Config_Handlers/XML_File_Intf.cpp65
-rw-r--r--modules/CIAO/tools/Config_Handlers/XML_File_Intf.h51
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp572
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Elements.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Elements.tpp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp182
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp141
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Parser.hpp67
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Parser.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Parser.tpp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.hpp275
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.tpp195
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Writer.hpp81
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Writer.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/Writer.tpp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/XML.hpp490
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/XML.ipp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/XML.tpp7
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp554
-rw-r--r--modules/CIAO/tools/Config_Handlers/XSC_XML_Handlers_Export.h54
-rw-r--r--modules/CIAO/tools/Config_Handlers/ccd.cpp1524
-rw-r--r--modules/CIAO/tools/Config_Handlers/ccd.hpp775
-rw-r--r--modules/CIAO/tools/Config_Handlers/cdd.cpp3392
-rw-r--r--modules/CIAO/tools/Config_Handlers/cdd.hpp1735
-rw-r--r--modules/CIAO/tools/Config_Handlers/cdp.cpp1345
-rw-r--r--modules/CIAO/tools/Config_Handlers/cdp.hpp703
-rw-r--r--modules/CIAO/tools/Config_Handlers/cid.cpp4124
-rw-r--r--modules/CIAO/tools/Config_Handlers/cid.hpp2061
-rw-r--r--modules/CIAO/tools/Config_Handlers/cpd.cpp1268
-rw-r--r--modules/CIAO/tools/Config_Handlers/cpd.hpp658
-rw-r--r--modules/CIAO/tools/Config_Handlers/iad.cpp1510
-rw-r--r--modules/CIAO/tools/Config_Handlers/iad.hpp779
-rw-r--r--modules/CIAO/tools/Config_Handlers/pcd.cpp1378
-rw-r--r--modules/CIAO/tools/Config_Handlers/pcd.hpp698
-rw-r--r--modules/CIAO/tools/Config_Handlers/test.cdp1827
-rw-r--r--modules/CIAO/tools/Config_Handlers/test.cpp120
-rw-r--r--modules/CIAO/tools/Config_Handlers/toplevel.cpp238
-rw-r--r--modules/CIAO/tools/Config_Handlers/toplevel.hpp168
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc67
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/README128
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h40
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_extern.h86
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp131
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_global.h85
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp436
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_helper.h186
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp32
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp119
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp191
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h49
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp1722
-rw-r--r--modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h114
-rw-r--r--modules/CIAO/tools/tools.mwc7
1797 files changed, 276577 insertions, 0 deletions
diff --git a/modules/CIAO/CCF/Bootstrap.rules b/modules/CIAO/CCF/Bootstrap.rules
new file mode 100644
index 00000000000..b995b842d45
--- /dev/null
+++ b/modules/CIAO/CCF/Bootstrap.rules
@@ -0,0 +1,93 @@
+# file : Bootstrap.rules
+# author : Boris Kolpackov <boris@kolpackov.net>
+# cvs-id : $Id$
+
+# basics
+#
+#
+
+define set
+$(eval $1 := $(strip $2))
+endef
+
+define get
+$(value $(strip $1))
+endef
+
+define sub
+$(shell echo $$(($1-$2)))
+endef
+
+define add
+$(shell echo $$(($1+$2)))
+endef
+
+# stack
+#
+#
+
+define push
+$(eval $1 +=$(strip $2))
+endef
+
+define pop
+$(eval $1 :=$(wordlist 1,$(call sub, $(words $(value $(strip $1))), 1),$(value $(strip $1))))
+endef
+
+define top
+$(word $(words $(value $(strip $1))),$(value $(strip $1)))
+endef
+
+# local
+#
+#
+
+define path_to_id
+$(subst /,_,$(subst .,_,$(strip $1)))
+endef
+
+MAKEFILE := $(word $(call sub,$(words $(MAKEFILE_LIST)),1),$(MAKEFILE_LIST))
+INCLUSION_ID := $(call path_to_id,$(MAKEFILE))
+
+define get_inclusion_id
+$(INCLUSION_ID)
+endef
+
+define local_set
+$(eval $(strip $(call get_inclusion_id))_$1 := $(strip $2))
+endef
+
+define local_get
+$($(strip $(call get_inclusion_id))_$1)
+endef
+
+define local_origin
+$(origin $(strip $(call get_inclusion_id))_$1)
+endef
+
+
+define _get_inclusion_count
+$(if $(call local_get,INCLUSION_COUNT),$(call local_get,INCLUSION_COUNT),0)
+endef
+
+define _set_inclusion_count
+$(call local_set,INCLUSION_COUNT,$1)
+endef
+
+# include
+#
+#
+
+define include
+$(strip
+ $(eval $(call push, include_stack, $(MAKEFILE))) \
+ $(eval MAKEFILE :=$(strip $1)) \
+ $(eval $(call push, inclusion_id_stack, $(INCLUSION_ID))) \
+ $(eval $(call _set_inclusion_count,$(call add,$(call _get_inclusion_count),1))) \
+ $(eval INCLUSION_ID :=$(INCLUSION_ID)_$(call local_get,INCLUSION_COUNT)_$(call path_to_id,$1)) \
+ $(eval include $1) \
+ $(eval INCLUSION_ID :=$(call top, inclusion_id_stack)) \
+ $(eval $(call pop, inclusion_id_stack)) \
+ $(eval MAKEFILE :=$(call top, include_stack)) \
+ $(eval $(call pop, include_stack)))
+endef
diff --git a/modules/CIAO/CCF/CCF/CIDL/CIDL.mpc b/modules/CIAO/CCF/CCF/CIDL/CIDL.mpc
new file mode 100644
index 00000000000..833f3979582
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/CIDL.mpc
@@ -0,0 +1,15 @@
+//$Id$
+
+project(CIDL): cidlc {
+ sharedname =
+ staticname = CIDL
+ libout = ..
+
+ Source_Files {
+ .
+ ./SemanticGraph
+ ./Traversal
+ ./SemanticAction
+ ./SemanticAction/Impl
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.cpp b/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.cpp
new file mode 100644
index 00000000000..6bc50409d28
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.cpp
@@ -0,0 +1,27 @@
+// file : CCF/CIDL/LexicalAnalyzer.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/LexicalAnalyzer.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ LexicalAnalyzer::
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is)
+ : IDL2::LexicalAnalyzer (is),
+ IDL3::LexicalAnalyzer (is)
+ {
+ // Keywords (alphabetic order).
+
+ keyword_table_.insert ("composition");
+ keyword_table_.insert ("entity" );
+ keyword_table_.insert ("executor" );
+ keyword_table_.insert ("implements" );
+ keyword_table_.insert ("process" );
+ keyword_table_.insert ("service" );
+ keyword_table_.insert ("session" );
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.hpp b/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.hpp
new file mode 100644
index 00000000000..978c06b8bef
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/LexicalAnalyzer.hpp
@@ -0,0 +1,22 @@
+// file : CCF/CIDL/LexicalAnalyzer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_LEXICAL_ANALYZER_HPP
+#define CCF_CIDL_LEXICAL_ANALYZER_HPP
+
+#include "CCF/IDL3/LexicalAnalyzer.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ class LexicalAnalyzer : public virtual IDL3::LexicalAnalyzer
+ {
+ public:
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is);
+ };
+ }
+}
+
+#endif // CCF_CIDL_LEXICAL_ANALYZER_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Parser.cpp b/modules/CIAO/CCF/CCF/CIDL/Parser.cpp
new file mode 100644
index 00000000000..790410f3921
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Parser.cpp
@@ -0,0 +1,242 @@
+// file : CCF/CIDL/Parser.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/Parser.hpp"
+
+//
+// Note: DO NOT run emacs indenter (or any other indentation tool) over
+// this file because it will most likely break BNF indentation.
+//
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ using IDL2::Parsing::DiagnosticType;
+ using IDL2::Parsing::RecoveryMethod;
+
+ Parser::
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f)
+ : IDL2::Parser (context, dout, l, f),
+ IDL3::Parser (context, dout, l, f),
+ lexer_ (l),
+ actions_ (f),
+
+ COMPOSITION ("composition"),
+ ENTITY ("entity" ),
+ EXECUTOR ("executor" ),
+ IMPLEMENTS ("implements" ),
+ PROCESS ("process" ),
+ SERVICE ("service" ),
+ SESSION ("session" ),
+
+ // Composition
+ //
+ act_composition_begin (
+ this, &Parser::act_composition_begin_core),
+
+ act_composition_open_scope (
+ f.composition (), &SemanticAction::Scope::open_scope),
+
+ act_composition_close_scope (
+ f.composition (), &SemanticAction::Scope::close_scope),
+
+ act_composition_end (
+ f.composition (), &SemanticAction::Composition::end),
+
+
+ // Home Executor
+ //
+ act_home_executor_begin (
+ f.home_executor (), &SemanticAction::HomeExecutor::begin),
+
+ act_home_executor_implements (
+ f.home_executor (), &SemanticAction::HomeExecutor::implements),
+
+ act_home_executor_manages (
+ f.home_executor (), &SemanticAction::HomeExecutor::manages),
+
+ act_home_executor_end (
+ f.home_executor (), &SemanticAction::HomeExecutor::end)
+
+ {
+ IDL3::Parser::extension =
+ composition_decl
+ | extension
+ ;
+
+ //
+ // Composition
+ //
+ composition_decl =
+ COMPOSITION
+ >> guard
+ (
+ (
+ assertion ("composition category expected",
+ DiagnosticType::BEFORE)
+ (
+ composition_category
+ )
+ >> assertion ("composition name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_composition_begin]
+
+ >> assertion ("'{' expected",
+ f.composition (),
+ &SemanticAction::Composition::end)
+ (
+ LCBRACE[act_composition_open_scope]
+ )
+
+ >> assertion ("home executor declaration expected",
+ f.composition (),
+ &SemanticAction::Composition::close_scope,
+ &SemanticAction::Composition::end,
+ DiagnosticType::BEFORE)
+ (
+ hood (home_executor_decl)
+ [
+ handler (f.composition (),
+ &SemanticAction::Composition::close_scope,
+ &SemanticAction::Composition::end)
+ ]
+ )
+
+ >> assertion ("'}' expected",
+ f.composition (),
+ &SemanticAction::Composition::close_scope,
+ &SemanticAction::Composition::end,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_composition_close_scope]
+ )
+
+ >> assertion ("';' expected",
+ f.composition (),
+ &SemanticAction::Composition::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_composition_end]
+ )
+
+ )[error_handler]
+ ;
+
+ composition_category =
+ ENTITY
+ | PROCESS
+ | SERVICE
+ | SESSION
+ ;
+
+
+ //
+ // Home executor
+ //
+ home_executor_decl =
+ HOME
+ >> EXECUTOR
+ >> guard
+ (
+ assertion ("home executor name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_home_executor_begin]
+ )
+
+ >> assertion ("'{' expected",
+ f.home_executor (),
+ &SemanticAction::HomeExecutor::end)
+ (
+ LCBRACE
+ )
+
+ >> assertion ("implements declaration expected",
+ f.home_executor (),
+ &SemanticAction::HomeExecutor::end,
+ DiagnosticType::BEFORE)
+ (
+ hood (home_executor_home_impl_decl)
+ [
+ handler (f.home_executor (),
+ &SemanticAction::HomeExecutor::end)
+ ]
+ )
+
+ >> assertion ("manages declaration expected",
+ f.home_executor (),
+ &SemanticAction::HomeExecutor::end,
+ DiagnosticType::BEFORE)
+ (
+ hood (home_executor_executor_decl)
+ [
+ handler (f.home_executor (),
+ &SemanticAction::HomeExecutor::end)
+ ]
+ )
+
+ >> assertion ("'}' expected",
+ f.home_executor (),
+ &SemanticAction::HomeExecutor::end,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE
+ )
+
+ >> assertion ("';' expected",
+ f.home_executor (),
+ &SemanticAction::HomeExecutor::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_home_executor_end]
+ )
+
+ )[error_handler]
+ ;
+
+
+ home_executor_home_impl_decl =
+ IMPLEMENTS
+ >> guard
+ (
+ assertion ("home name expected",
+ DiagnosticType::BEFORE)
+ (
+ identifier[act_home_executor_implements]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+
+ home_executor_executor_decl =
+ MANAGES
+ >> guard
+ (
+ assertion ("executor name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_home_executor_manages]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/Parser.hpp b/modules/CIAO/CCF/CCF/CIDL/Parser.hpp
new file mode 100644
index 00000000000..719f97f184d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Parser.hpp
@@ -0,0 +1,123 @@
+// file : CCF/CIDL/Parser.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_PARSER_HPP
+#define CCF_CIDL_PARSER_HPP
+
+#include "CCF/CompilerElements/Context.hpp"
+
+#include "CCF/IDL3/Parser.hpp"
+
+#include "CCF/CIDL/LexicalAnalyzer.hpp"
+#include "CCF/CIDL/SemanticAction.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ using IDL3::ActionExecutor;
+ using IDL3::NoArgAction;
+ using IDL3::OneArgAction;
+ using IDL3::TwoArgAction;
+
+ class Parser : public virtual IDL3::Parser
+ {
+ protected:
+ LexicalAnalyzer const& lexer_;
+ SemanticAction::Factory& actions_;
+
+ //
+ // Primitives (alphabetic order).
+ //
+
+ KeywordParser COMPOSITION;
+ KeywordParser ENTITY;
+ KeywordParser EXECUTOR;
+ KeywordParser IMPLEMENTS;
+ KeywordParser PROCESS;
+ KeywordParser SERVICE;
+ KeywordParser SESSION;
+
+ //
+ // Language
+ //
+
+ Rule extension;
+
+ // Composition
+ Rule composition_decl;
+ Rule composition_category;
+
+ // Home executor
+ Rule home_executor_decl;
+ Rule home_executor_home_impl_decl;
+ Rule home_executor_executor_decl;
+
+ public:
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f);
+
+ protected:
+ void
+ act_composition_begin_core (Iterator begin, Iterator) const
+ {
+ SemanticAction::Composition::Category::Value c;
+
+ if((*begin)->lexeme () == "entity")
+ {
+ c = SemanticAction::Composition::Category::entity;
+ }
+ else if ((*begin)->lexeme () == "process")
+ {
+ c = SemanticAction::Composition::Category::process;
+ }
+ else if ((*begin)->lexeme () == "service")
+ {
+ c = SemanticAction::Composition::Category::service;
+ }
+ else
+ {
+ c = SemanticAction::Composition::Category::session;
+ }
+
+ begin++;
+
+ actions_.composition ().begin (
+ ReferenceCounting::strict_cast<SimpleIdentifier> (*begin), c);
+ }
+
+ // Composition
+ //
+ ActionExecutor<Parser>
+ act_composition_begin;
+
+ ScopeAction
+ act_composition_open_scope;
+
+ ScopeAction
+ act_composition_close_scope;
+
+ NoArgAction<SemanticAction::Composition>
+ act_composition_end;
+
+ // Home Executor
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::HomeExecutor>
+ act_home_executor_begin;
+
+ OneArgAction<IdentifierPtr, SemanticAction::HomeExecutor>
+ act_home_executor_implements;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::HomeExecutor>
+ act_home_executor_manages;
+
+ NoArgAction<SemanticAction::HomeExecutor>
+ act_home_executor_end;
+ };
+ }
+}
+
+#endif // CCF_CIDL_PARSER_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction.hpp
new file mode 100644
index 00000000000..faf75dbc28a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction.hpp
@@ -0,0 +1,17 @@
+// file : CCF/CIDL/SemanticAction.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_HPP
+
+#include "CCF/IDL3/SemanticAction.hpp"
+
+#include "CCF/CIDL/SemanticAction/Elements.hpp"
+
+#include "CCF/CIDL/SemanticAction/Composition.hpp"
+#include "CCF/CIDL/SemanticAction/HomeExecutor.hpp"
+
+#include "CCF/CIDL/SemanticAction/Factory.hpp"
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.cpp
new file mode 100644
index 00000000000..e8eb6f99924
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.cpp
@@ -0,0 +1,29 @@
+// file : CCF/CIDL/SemanticAction/Composition.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticAction/Composition.hpp"
+
+#include <ostream>
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ }
+ }
+}
+
+namespace
+{
+ char* labels[] = {"entity", "process", "service", "session" };
+}
+
+std::ostream&
+operator<< (std::ostream& o,
+ CCF::CIDL::SemanticAction::Composition::Category::Value v)
+{
+ return o << labels[v];
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.hpp
new file mode 100644
index 00000000000..8c46b83326c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Composition.hpp
@@ -0,0 +1,48 @@
+// file : CCF/CIDL/SemanticAction/Composition.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_COMPOSITION_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_COMPOSITION_HPP
+
+#include "CCF/CIDL/SemanticAction/Elements.hpp"
+
+#include <iosfwd>
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ struct Composition : Scope
+ {
+ struct Category
+ {
+ enum Value
+ {
+ entity , process, service, session
+ };
+ };
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id, Category::Value category) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+std::ostream&
+operator<< (std::ostream& o,
+ CCF::CIDL::SemanticAction::Composition::Category::Value v);
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_COMPOSITION_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Elements.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Elements.hpp
new file mode 100644
index 00000000000..83c80bdf56b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Elements.hpp
@@ -0,0 +1,23 @@
+// file : CCF/CIDL/SemanticAction/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_ELEMENTS_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_ELEMENTS_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+#include "CCF/CIDL/Token.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ using IDL3::SemanticAction::Scope;
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Factory.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Factory.hpp
new file mode 100644
index 00000000000..521602ac70f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Factory.hpp
@@ -0,0 +1,31 @@
+// file : CCF/CIDL/SemanticAction/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_FACTORY_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticAction/Factory.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ struct Composition;
+ struct HomeExecutor;
+
+ struct Factory : virtual IDL3::SemanticAction::Factory
+ {
+ virtual Composition&
+ composition () = 0;
+
+ virtual HomeExecutor&
+ home_executor () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp
new file mode 100644
index 00000000000..ea8397fcf03
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp
@@ -0,0 +1,34 @@
+// file : CCF/CIDL/SemanticAction/HomeExecutor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_HOME_EXECUTOR_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_HOME_EXECUTOR_HPP
+
+#include "CCF/CIDL/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ struct HomeExecutor
+ {
+ virtual void
+ begin (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ implements (IdentifierPtr const& id) = 0;
+
+ virtual void
+ manages (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_HOME_EXECUTOR_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp
new file mode 100644
index 00000000000..a39a801cd15
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp
@@ -0,0 +1,83 @@
+// file : CCF/CIDL/SemanticAction/Impl/Composition.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticAction/Impl/Composition.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Composition::
+ Composition (Context& c)
+ : ScopeBase<SemanticGraph::Composition> (c)
+ {
+ }
+
+ void Composition::
+ begin (SimpleIdentifierPtr const& id, Category::Value c)
+ {
+ if (ctx.trace ()) cerr << "composition " << id << endl;
+
+ if(c == Category::entity)
+ {
+ now (ctx.tu ().new_node<EntityComposition> (
+ ctx.file (), id->line ()));
+ }
+ else if (c == Category::process)
+ {
+ now (ctx.tu ().new_node<ProcessComposition> (
+ ctx.file (), id->line ()));
+ }
+ else if (c == Category::service)
+ {
+ now (ctx.tu ().new_node<ServiceComposition> (
+ ctx.file (), id->line ()));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SessionComposition> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), id->lexeme ());
+ }
+
+ void Composition::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Composition::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Composition::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp
new file mode 100644
index 00000000000..9bfce6dc78c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp
@@ -0,0 +1,42 @@
+// file : CCF/CIDL/SemanticAction/Impl/Composition.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_IMPL_COMPOSITION_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_IMPL_COMPOSITION_HPP
+
+#include "CCF/CIDL/SemanticGraph/Composition.hpp"
+#include "CCF/CIDL/SemanticAction/Composition.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Composition : SemanticAction::Composition,
+ ScopeBase<SemanticGraph::Composition>
+ {
+ Composition (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id, Category::Value c);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_IMPL_COMPOSITION_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp
new file mode 100644
index 00000000000..5e4a0e2525e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp
@@ -0,0 +1,27 @@
+// file : CCF/CIDL/SemanticAction/Impl/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+
+#include "CCF/CIDL/SemanticAction/Elements.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using IDL3::SemanticAction::Impl::Context;
+ using IDL3::SemanticAction::Impl::Base;
+ using IDL3::SemanticAction::Impl::ScopeBase;
+ }
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp
new file mode 100644
index 00000000000..37a6e589ca5
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp
@@ -0,0 +1,35 @@
+// file : CCF/CIDL/SemanticAction/Impl/Factory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+
+#include "CCF/CIDL/SemanticAction/Impl/Factory.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Factory::
+ Factory (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ SemanticGraph::TranslationUnit& tu)
+ : IDL2::SemanticAction::Impl::Factory (context, dout, tu),
+ IDL3::SemanticAction::Impl::Factory (context, dout, tu),
+
+ composition_ (ctx_),
+ home_executor_ (ctx_)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp
new file mode 100644
index 00000000000..4cea4e35b82
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp
@@ -0,0 +1,53 @@
+// file : CCF/CIDL/SemanticAction/Impl/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+
+#include "CCF/CIDL/SemanticAction/Factory.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Factory.hpp"
+
+#include "CCF/CIDL/SemanticAction/Impl/Composition.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ //
+ //
+ //
+ struct Factory : virtual CIDL::SemanticAction::Factory,
+ virtual IDL3::SemanticAction::Impl::Factory
+ {
+ Factory (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ SemanticGraph::TranslationUnit& tu);
+
+ virtual SemanticAction::Composition&
+ composition ()
+ {
+ return composition_;
+ }
+
+ virtual SemanticAction::HomeExecutor&
+ home_executor ()
+ {
+ return home_executor_;
+ }
+
+ private:
+ Composition composition_;
+ HomeExecutor home_executor_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_IMPL_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp
new file mode 100644
index 00000000000..acbb6e9f5e0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp
@@ -0,0 +1,119 @@
+// file : CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ HomeExecutor::
+ HomeExecutor (Context& c)
+ : Base (c)
+ {
+ }
+
+ void HomeExecutor::
+ begin (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "home executor " << id << endl;
+
+ id_ = id;
+ he_ = &ctx.tu ().new_node<SemanticGraph::HomeExecutor> (
+ ctx.file (), id->line ());
+ }
+
+ void HomeExecutor::
+ implements (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "implements " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ c_ = 0;
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Home& h (
+ resolve<SemanticGraph::Home> (from, name, Flags::defined));
+
+ c_ = &dynamic_cast<SemanticGraph::Component&> (
+ h.manages ().managee ());
+
+ ctx.tu ().new_edge<Implements> (*he_, h);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid implements specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no home with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in implements specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to implement forward-declared home "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "implementation of forward-declared home is illegal"
+ << endl;
+ }
+ }
+
+ void HomeExecutor::
+ manages (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "manages " << id << endl;
+
+ if (c_ != 0)
+ {
+ SemanticGraph::ComponentExecutor& ce (
+ ctx.tu ().new_node<SemanticGraph::ComponentExecutor> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Implements> (ce, *c_);
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), ce, id->lexeme ());
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *he_, id_->lexeme ());
+
+ ctx.tu ().new_edge<Manages> (*he_, ce);
+ }
+ }
+
+ void HomeExecutor::
+ end ()
+ {
+ id_ = 0;
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp
new file mode 100644
index 00000000000..23d3a3e7cca
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp
@@ -0,0 +1,46 @@
+// file : CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_ACTION_IMPL_HOME_EXECUTOR_HPP
+#define CCF_CIDL_SEMANTIC_ACTION_IMPL_HOME_EXECUTOR_HPP
+
+#include "CCF/CIDL/SemanticGraph/Executor.hpp"
+#include "CCF/CIDL/SemanticAction/HomeExecutor.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct HomeExecutor : SemanticAction::HomeExecutor, Base
+ {
+ HomeExecutor (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id);
+
+ virtual void
+ implements (IdentifierPtr const& id);
+
+ virtual void
+ manages (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ SimpleIdentifierPtr id_;
+ SemanticGraph::HomeExecutor* he_;
+ SemanticGraph::Component* c_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_ACTION_IMPL_HOME_EXECUTOR_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph.hpp
new file mode 100644
index 00000000000..9e4d2006029
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph.hpp
@@ -0,0 +1,15 @@
+// file : CCF/CIDL/SemanticGraph.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_GRAPH_HPP
+#define CCF_CIDL_SEMANTIC_GRAPH_HPP
+
+#include "CCF/IDL3/SemanticGraph.hpp"
+
+#include "CCF/CIDL/SemanticGraph/Elements.hpp"
+
+#include "CCF/CIDL/SemanticGraph/Composition.hpp"
+#include "CCF/CIDL/SemanticGraph/Executor.hpp"
+
+#endif // CCF_CIDL_SEMANTIC_GRAPH_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.cpp
new file mode 100644
index 00000000000..429699d1b5d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.cpp
@@ -0,0 +1,126 @@
+// file : CCF/CIDL/SemanticGraph/Composition.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticGraph/Composition.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+
+ // Composition
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ composition_init_ ()
+ {
+ TypeInfo ti (typeid (Composition));
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo composition_ (composition_init_ ());
+ }
+
+ TypeInfo const& Composition::
+ static_type_info () { return composition_; }
+
+ Composition::
+ ~Composition ()
+ {
+ }
+
+
+ // EntityComposition
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ entity_composition_init_ ()
+ {
+ TypeInfo ti (typeid (EntityComposition));
+ ti.add_base (
+ Access::PUBLIC, true, Composition::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo entity_composition_ (entity_composition_init_ ());
+ }
+
+ TypeInfo const& EntityComposition::
+ static_type_info () { return entity_composition_; }
+
+
+ // ProcessComposition
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ process_composition_init_ ()
+ {
+ TypeInfo ti (typeid (ProcessComposition));
+ ti.add_base (
+ Access::PUBLIC, true, Composition::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo process_composition_ (process_composition_init_ ());
+ }
+
+ TypeInfo const& ProcessComposition::
+ static_type_info () { return process_composition_; }
+
+
+ // ServiceComposition
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ service_composition_init_ ()
+ {
+ TypeInfo ti (typeid (ServiceComposition));
+ ti.add_base (
+ Access::PUBLIC, true, Composition::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo service_composition_ (service_composition_init_ ());
+ }
+
+ TypeInfo const& ServiceComposition::
+ static_type_info () { return service_composition_; }
+
+
+ // SessionComposition
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ session_composition_init_ ()
+ {
+ TypeInfo ti (typeid (SessionComposition));
+ ti.add_base (
+ Access::PUBLIC, true, Composition::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo session_composition_ (session_composition_init_ ());
+ }
+
+ TypeInfo const& SessionComposition::
+ static_type_info () { return session_composition_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.hpp
new file mode 100644
index 00000000000..663029580da
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Composition.hpp
@@ -0,0 +1,103 @@
+// file : CCF/CIDL/SemanticGraph/Composition.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_GRAPH_COMPOSITION_HPP
+#define CCF_CIDL_SEMANTIC_GRAPH_COMPOSITION_HPP
+
+#include "CCF/CIDL/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ class Composition : public virtual Scope
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Composition () // Only for virtual inheritance.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Composition () = 0;
+ };
+
+ class EntityComposition : public virtual Composition
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ EntityComposition (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class ProcessComposition : public virtual Composition
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ProcessComposition (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class ServiceComposition : public virtual Composition
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ServiceComposition (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class SessionComposition : public virtual Composition
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ SessionComposition (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_GRAPH_COMPOSITION_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.cpp
new file mode 100644
index 00000000000..349f1854786
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.cpp
@@ -0,0 +1,33 @@
+// file : CCF/CIDL/SemanticGraph/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ implements_init_ ()
+ {
+ TypeInfo ti (typeid (Implements));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo implements_ (implements_init_ ());
+ }
+
+ TypeInfo const& Implements::
+ static_type_info () { return implements_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.hpp
new file mode 100644
index 00000000000..625221116e7
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Elements.hpp
@@ -0,0 +1,65 @@
+// file : CCF/CIDL/SemanticGraph/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_GRAPH_ELEMENTS_HPP
+#define CCF_CIDL_SEMANTIC_GRAPH_ELEMENTS_HPP
+
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ using namespace IDL3::SemanticGraph;
+
+
+ class Implements : public virtual Edge
+ {
+ public:
+ Type&
+ implementer () const
+ {
+ return *implementer_;
+ }
+
+ Type&
+ implementee () const
+ {
+ return *implementee_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Implements ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Type& n)
+ {
+ implementer_ = &n;
+ }
+
+ void
+ set_right_node (Type& n)
+ {
+ implementee_ = &n;
+ }
+
+ private:
+ Type* implementer_;
+ Type* implementee_;
+ };
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_GRAPH_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.cpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.cpp
new file mode 100644
index 00000000000..9a4214bcd0e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.cpp
@@ -0,0 +1,81 @@
+// file : CCF/CIDL/SemanticGraph/Executor.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/SemanticGraph/Executor.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Executor
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ executor_init_ ()
+ {
+ TypeInfo ti (typeid (Executor));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo executor_ (executor_init_ ());
+ }
+
+ TypeInfo const& Executor::
+ static_type_info () { return executor_; }
+
+ Executor::
+ ~Executor ()
+ {
+ }
+
+
+ // ComponentExecutor
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ component_executorinit_ ()
+ {
+ TypeInfo ti (typeid (ComponentExecutor));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo component_executor (component_executorinit_ ());
+ }
+
+ TypeInfo const& ComponentExecutor::
+ static_type_info () { return component_executor; }
+
+
+ // HomeExecutor
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ home_executorinit_ ()
+ {
+ TypeInfo ti (typeid (HomeExecutor));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo home_executor (home_executorinit_ ());
+ }
+
+ TypeInfo const& HomeExecutor::
+ static_type_info () { return home_executor; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.hpp b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.hpp
new file mode 100644
index 00000000000..378638b2187
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/SemanticGraph/Executor.hpp
@@ -0,0 +1,122 @@
+// file : CCF/CIDL/SemanticGraph/Executor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_SEMANTIC_GRAPH_EXECUTOR_HPP
+#define CCF_CIDL_SEMANTIC_GRAPH_EXECUTOR_HPP
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+#include "CCF/CIDL/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Executor : public virtual Type
+ {
+ public:
+ Implements&
+ implements () const
+ {
+ return *implements_;
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Executor () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Executor () = 0;
+
+ void
+ add_edge_left (Implements& e)
+ {
+ implements_ = &e;
+ }
+
+ private:
+ Implements* implements_;
+ };
+
+
+ //
+ //
+ //
+ class ComponentExecutor : public virtual Executor
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ComponentExecutor (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class HomeExecutor : public virtual Executor
+ {
+ public:
+ Manages&
+ manages () const
+ {
+ return *manages_;
+ }
+
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ HomeExecutor (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Executor::add_edge_left;
+
+ void
+ add_edge_left (Manages& e)
+ {
+ manages_ = &e;
+ }
+
+ private:
+ Manages* manages_;
+ };
+
+ }
+ }
+}
+
+#endif // CCF_CIDL_SEMANTIC_GRAPH_EXECUTOR_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Token.hpp b/modules/CIAO/CCF/CCF/CIDL/Token.hpp
new file mode 100644
index 00000000000..40bd13b252c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Token.hpp
@@ -0,0 +1,34 @@
+// file : CCF/CIDL/Token.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_TOKEN_HPP
+#define CCF_CIDL_TOKEN_HPP
+
+#include "CCF/IDL3/Token.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ using IDL3::Token;
+ using IDL3::TokenPtr;
+ using IDL3::TokenList;
+ using IDL3::EndOfStream;
+ using IDL3::EndOfStreamPtr;
+ using IDL3::Keyword;
+ using IDL3::KeywordPtr;
+ using IDL3::Punctuation;
+ using IDL3::PunctuationPtr;
+ using IDL3::Identifier;
+ using IDL3::IdentifierPtr;
+ using IDL3::SimpleIdentifier;
+ using IDL3::SimpleIdentifierPtr;
+ using IDL3::ScopedIdentifier;
+ using IDL3::ScopedIdentifierPtr;
+ using IDL3::StringLiteral;
+ using IDL3::StringLiteralPtr;
+ }
+}
+
+#endif // CCF_CIDL_TOKEN_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal.hpp b/modules/CIAO/CCF/CCF/CIDL/Traversal.hpp
new file mode 100644
index 00000000000..119c813f554
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal.hpp
@@ -0,0 +1,15 @@
+// file : CCF/CIDL/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_TRAVERSAL_HPP
+#define CCF_CIDL_TRAVERSAL_HPP
+
+#include "CCF/IDL3/Traversal.hpp"
+
+#include "CCF/CIDL/Traversal/Elements.hpp"
+
+#include "CCF/CIDL/Traversal/Composition.hpp"
+#include "CCF/CIDL/Traversal/Executor.hpp"
+
+#endif // CCF_CIDL_TRAVERSAL_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp b/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp
new file mode 100644
index 00000000000..e93fa976e7e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.hpp
@@ -0,0 +1,60 @@
+// file : CCF/CIDL/Traversal/Composition.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_TRAVERSAL_COMPOSITION_HPP
+#define CCF_CIDL_TRAVERSAL_COMPOSITION_HPP
+
+#include "CCF/CIDL/SemanticGraph/Composition.hpp"
+#include "CCF/CIDL/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ struct CompositionTemplate : ScopeTemplate<T>
+ {
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ post (T&);
+ };
+
+
+ typedef
+ CompositionTemplate <SemanticGraph::Composition>
+ Composition;
+
+ typedef
+ CompositionTemplate <SemanticGraph::EntityComposition>
+ EntityComposition;
+
+ typedef
+ CompositionTemplate <SemanticGraph::ProcessComposition>
+ ProcessComposition;
+
+ typedef
+ CompositionTemplate <SemanticGraph::ServiceComposition>
+ ServiceComposition;
+
+
+ typedef
+ CompositionTemplate <SemanticGraph::SessionComposition>
+ SessionComposition;
+ }
+ }
+}
+
+#include "CCF/CIDL/Traversal/Composition.tpp"
+
+#endif // CCF_CIDL_TRAVERSAL_COMPOSITION_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.tpp b/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.tpp
new file mode 100644
index 00000000000..8a6ff03e496
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal/Composition.tpp
@@ -0,0 +1,41 @@
+// file : CCF/CIDL/Traversal/Composition.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace Traversal
+ {
+
+ template <typename T>
+ void CompositionTemplate<T>::
+ traverse (T& c)
+ {
+ pre (c);
+ name (c);
+ names (c);
+ post (c);
+ }
+
+ template <typename T>
+ void CompositionTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void CompositionTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void CompositionTemplate<T>::
+ post (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal/Elements.hpp b/modules/CIAO/CCF/CCF/CIDL/Traversal/Elements.hpp
new file mode 100644
index 00000000000..72ffd2613db
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal/Elements.hpp
@@ -0,0 +1,36 @@
+// file : CCF/CIDL/Traversal/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_TRAVERSAL_ELEMENTS_HPP
+#define CCF_CIDL_TRAVERSAL_ELEMENTS_HPP
+
+#include "CCF/IDL3/Traversal/Elements.hpp"
+
+#include "CCF/CIDL/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace Traversal
+ {
+ using namespace IDL3::Traversal;
+
+ //
+ //
+ //
+ struct Implements : Edge<SemanticGraph::Implements>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.implementee ());
+ }
+ };
+
+ }
+ }
+}
+
+#endif // CCF_CIDL_TRAVERSAL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.cpp b/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.cpp
new file mode 100644
index 00000000000..efcb9681d66
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.cpp
@@ -0,0 +1,195 @@
+// file : CCF/CIDL/Traversal/Executor.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CIDL/Traversal/Executor.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace Traversal
+ {
+ // Executor
+ //
+ //
+ void Executor::
+ traverse (Type& e)
+ {
+ pre (e);
+ name (e);
+ implements (e);
+ post (e);
+ }
+
+ void Executor::
+ pre (Type&)
+ {
+ }
+
+ void Executor::
+ name (Type&)
+ {
+ }
+
+ void Executor::
+ implements (Type& e, EdgeDispatcherBase& d)
+ {
+ d.traverse (e.implements ());
+ }
+
+ void Executor::
+ implements (Type& e)
+ {
+ implements_pre (e);
+ implements (e, edge_traverser ());
+ implements_post (e);
+ }
+
+ void Executor::
+ implements_pre (Type&)
+ {
+ }
+
+ void Executor::
+ implements_post (Type&)
+ {
+ }
+
+ void Executor::
+ post (Type&)
+ {
+ }
+
+
+ // ComponentExecutor
+ //
+ //
+ void ComponentExecutor::
+ traverse (Type& e)
+ {
+ pre (e);
+ name (e);
+ implements (e);
+ post (e);
+ }
+
+ void ComponentExecutor::
+ pre (Type&)
+ {
+ }
+
+ void ComponentExecutor::
+ name (Type&)
+ {
+ }
+
+ void ComponentExecutor::
+ implements (Type& e, EdgeDispatcherBase& d)
+ {
+ d.traverse (e.implements ());
+ }
+
+ void ComponentExecutor::
+ implements (Type& e)
+ {
+ implements_pre (e);
+ implements (e, edge_traverser ());
+ implements_post (e);
+ }
+
+ void ComponentExecutor::
+ implements_pre (Type&)
+ {
+ }
+
+ void ComponentExecutor::
+ implements_post (Type&)
+ {
+ }
+
+ void ComponentExecutor::
+ post (Type&)
+ {
+ }
+
+
+
+ // HomeExecutor
+ //
+ //
+ void HomeExecutor::
+ traverse (Type& e)
+ {
+ pre (e);
+ name (e);
+ implements (e);
+ manages (e);
+ post (e);
+ }
+
+ void HomeExecutor::
+ pre (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ name (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ implements (Type& e, EdgeDispatcherBase& d)
+ {
+ d.traverse (e.implements ());
+ }
+
+ void HomeExecutor::
+ implements (Type& e)
+ {
+ implements_pre (e);
+ implements (e, edge_traverser ());
+ implements_post (e);
+ }
+
+ void HomeExecutor::
+ implements_pre (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ implements_post (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ manages (Type& e, EdgeDispatcherBase& d)
+ {
+ d.traverse (e.manages ());
+ }
+
+ void HomeExecutor::
+ manages (Type& e)
+ {
+ manages_pre (e);
+ manages (e, edge_traverser ());
+ manages_post (e);
+ }
+
+ void HomeExecutor::
+ manages_pre (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ manages_post (Type&)
+ {
+ }
+
+ void HomeExecutor::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.hpp b/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.hpp
new file mode 100644
index 00000000000..6bb543aee9d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CIDL/Traversal/Executor.hpp
@@ -0,0 +1,125 @@
+// file : CCF/CIDL/Traversal/Executor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CIDL_TRAVERSAL_EXECUTOR_HPP
+#define CCF_CIDL_TRAVERSAL_EXECUTOR_HPP
+
+#include "CCF/CIDL/SemanticGraph/Executor.hpp"
+
+#include "CCF/CIDL/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace CIDL
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ struct Executor : Node<SemanticGraph::Executor>
+ {
+ virtual void
+ traverse (Type& e);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ implements (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ implements (Type&);
+
+ virtual void
+ implements_pre (Type&);
+
+ virtual void
+ implements_post (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+
+ //
+ //
+ //
+ struct ComponentExecutor : Node<SemanticGraph::ComponentExecutor>
+ {
+ virtual void
+ traverse (Type& e);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ implements (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ implements (Type&);
+
+ virtual void
+ implements_pre (Type&);
+
+ virtual void
+ implements_post (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+
+ //
+ //
+ //
+ struct HomeExecutor : Node<SemanticGraph::HomeExecutor>
+ {
+ virtual void
+ traverse (Type& e);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ implements (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ implements (Type&);
+
+ virtual void
+ implements_pre (Type&);
+
+ virtual void
+ implements_post (Type&);
+
+ virtual void
+ manages (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ manages (Type&);
+
+ virtual void
+ manages_pre (Type&);
+
+ virtual void
+ manages_post (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_CIDL_TRAVERSAL_EXECUTOR_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc b/modules/CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
new file mode 100644
index 00000000000..e978244e1ae
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
@@ -0,0 +1,7 @@
+//$Id$
+
+project(CodeGenerationKit): cidlc {
+ sharedname =
+ staticname = CodeGenerationKit
+ libout = ..
+}
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.cpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.cpp
new file mode 100644
index 00000000000..018aea6ffcf
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.cpp
@@ -0,0 +1,5 @@
+// file : CCF/CodeGenerationKit/CommandLine.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.hpp
new file mode 100644
index 00000000000..6c3d84b2481
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLine.hpp
@@ -0,0 +1,222 @@
+// file : CCF/CodeGenerationKit/CommandLine.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef COMMAND_LINE_HPP
+#define COMMAND_LINE_HPP
+
+#include <algorithm>
+#include <vector>
+#include <string>
+
+//@@ this stuff needs proper reimplementation
+
+class CommandLine
+{
+public:
+ CommandLine ()
+ {
+ }
+
+ // Option constrain checking
+public:
+
+ bool
+ require (std::string option) const throw ()
+ {
+ return std::find_if (options.begin (),
+ options.end (),
+ OptionNamePredicat (option)) != options.end ();
+ }
+
+ bool
+ depends (std::string dependant,
+ std::string principal) const throw ()
+ {
+ Options::const_iterator begin = options.begin ();
+ Options::const_iterator end = options.end ();
+
+ if (std::find_if (begin, end, OptionNamePredicat (dependant)) != end)
+ {
+ return std::find_if (begin, end, OptionNamePredicat (principal)) != end;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+ bool
+ inconsistent (std::string a,
+ std::string b) const throw ()
+ {
+ Options::const_iterator begin = options.begin ();
+ Options::const_iterator end = options.end ();
+
+ if (std::find_if (begin, end, OptionNamePredicat (a)) != end)
+ {
+ return std::find_if (begin, end, OptionNamePredicat (b)) == end;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+ std::string
+ get_value (std::string name, std::string const& not_found_value) const
+ {
+ Options::const_iterator i = std::find_if (
+ options.begin (),
+ options.end (),
+ OptionNamePredicat (name));
+
+ if (i != options.end () && !(i->value ().empty ()))
+ {
+ return i->value ();
+ }
+ else
+ {
+ return not_found_value;
+ }
+ }
+
+ // @@ the option should probably be searched in reverse order
+ //
+
+ std::string
+ get_value (std::string name, char const* not_found_value) const
+ {
+ Options::const_iterator i = std::find_if (
+ options.begin (),
+ options.end (),
+ OptionNamePredicat (name));
+
+ if (i != options.end () && !(i->value ().empty ()))
+ {
+ return i->value ();
+ }
+ else
+ {
+ return std::string (not_found_value);
+ }
+ }
+
+ bool
+ get_value (std::string name, bool not_found_value) const
+ {
+ Options::const_iterator i = std::find_if (
+ options.begin (),
+ options.end (),
+ OptionNamePredicat (name));
+
+ if (i != options.end ())
+ {
+ return true;
+ }
+ else
+ {
+ return not_found_value;
+ }
+ }
+
+
+ struct Option
+ {
+ Option (std::string const& name)
+ : name_ (name)
+ {
+ }
+
+ Option (std::string const& name,
+ std::string const& value)
+ : name_ (name),
+ value_ (value)
+ {
+ }
+
+ std::string const&
+ name () const
+ {
+ return name_;
+ }
+
+ std::string const&
+ value () const
+ {
+ return value_;
+ }
+
+ private:
+ std::string name_;
+ std::string value_;
+ };
+
+ typedef
+ std::vector<Option>
+ Options;
+
+ typedef
+ Options::const_iterator
+ OptionsIterator;
+
+ OptionsIterator
+ options_begin () const
+ {
+ return options.begin ();
+ }
+
+ OptionsIterator
+ options_end () const
+ {
+ return options.end ();
+ }
+
+ // Arguments
+ //
+ //
+
+ typedef
+ std::vector<std::string>
+ Arguments;
+
+ typedef
+ Arguments::const_iterator
+ ArgumentsIterator;
+
+ ArgumentsIterator
+ arguments_begin () const
+ {
+ return arguments.begin ();
+ }
+
+ ArgumentsIterator
+ arguments_end () const
+ {
+ return arguments.end ();
+ }
+
+public:
+
+ struct OptionNamePredicat
+ {
+ OptionNamePredicat (std::string const& name)
+ : name_ (name)
+ {
+ }
+
+ bool operator ()(Option const& option) throw ()
+ {
+ return name_ == option.name ();
+ }
+
+ private:
+ std::string const name_;
+ };
+
+ std::string command;
+ Options options;
+ Arguments arguments;
+};
+
+#endif // COMMAND_LINE_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp
new file mode 100644
index 00000000000..a7c6961cf1f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp
@@ -0,0 +1,338 @@
+// file : CCF/CodeGenerationKit/CommandLineDescriptor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef COMMAND_LINE_DESCRIPTOR_H
+#define COMMAND_LINE_DESCRIPTOR_H
+
+#include <map>
+#include <list>
+#include <vector>
+#include <string>
+#include <ostream>
+#include <cassert>
+
+
+namespace CL
+{
+ struct OptionType
+ {
+ enum Value
+ {
+ flag,
+ value
+ };
+
+ OptionType (Value v)
+ : v_ (v)
+ {
+ }
+
+ operator Value () const
+ {
+ return v_;
+ }
+
+ private:
+ Value v_;
+ };
+
+
+ class OptionDescription
+ {
+ public:
+ OptionDescription (std::string name,
+ std::string description,
+ OptionType type,
+ bool optional = true)
+ : optional_ (optional),
+ type_ (type),
+ name_ (name),
+ value_synopsis_ (),
+ description_ (description)
+ {
+ // There should be value_synopsis for non-flag options.
+ //
+ assert (type == OptionType::flag);
+ }
+
+
+ OptionDescription (std::string name,
+ std::string value_synopsis,
+ std::string description,
+ OptionType type,
+ bool optional = true)
+ : optional_ (optional),
+ type_ (type),
+ name_ (name),
+ value_synopsis_ (value_synopsis),
+ description_ (description)
+ {
+ }
+
+ public:
+ bool
+ optional () const
+ {
+ return optional_;
+ }
+
+ OptionType
+ type () const
+ {
+ return type_;
+ }
+
+ std::string
+ name () const
+ {
+ return name_;
+ }
+
+ std::string
+ value_synopsis () const
+ {
+ return value_synopsis_;
+ }
+
+ std::string
+ description () const
+ {
+ return description_;
+ }
+
+
+ private:
+ bool optional_;
+ OptionType type_;
+ std::string name_;
+ std::string value_synopsis_;
+ std::string description_;
+ };
+
+
+ class Description
+ {
+ public:
+ Description (std::string command)
+ : command_ (command)
+ {
+ }
+
+ private:
+ Description (Description const&);
+
+ Description&
+ operator= (Description const&);
+
+ private:
+ // We are storing pointer to elements in this list in the map below.
+ // To prevent element moving we will use list instead of vector.
+ //
+ typedef
+ std::list<OptionDescription>
+ OptionDescriptionList;
+
+ typedef
+ std::map<std::string, OptionDescription*>
+ OptionDescriptionMap;
+
+ public:
+
+ std::string
+ command () const
+ {
+ return command_;
+ }
+
+
+ public:
+ typedef
+ OptionDescriptionList::const_iterator
+ OptionIterator;
+
+ OptionIterator
+ begin_option () const
+ {
+ return options_.begin ();
+ }
+
+ OptionIterator
+ end_option () const
+ {
+ return options_.end ();
+ }
+
+ typedef
+ OptionDescriptionMap::const_iterator
+ OptionMapIterator;
+
+ OptionDescription const*
+ find_option (std::string const& option) const
+ {
+ OptionDescriptionMap::const_iterator i (
+ option_map_.find (option));
+
+ return i == option_map_.end () ? 0 : i->second;
+ }
+
+ void
+ add_option (OptionDescription const& od)
+ {
+ options_.push_back (od);
+ option_map_[od.name ()] = &options_.back ();
+ }
+
+ private:
+ typedef
+ std::vector<std::string>
+ ArgumentDescriptionList;
+
+ public:
+ typedef
+ ArgumentDescriptionList::const_iterator
+ ArgumentIterator;
+
+ ArgumentIterator
+ begin_argument () const
+ {
+ return arguments_.begin ();
+ }
+
+ ArgumentIterator
+ end_argument () const
+ {
+ return arguments_.end ();
+ }
+
+ void
+ add_argument (std::string arg)
+ {
+ arguments_.push_back (arg);
+ }
+
+ private:
+ std::string command_;
+ OptionDescriptionList options_;
+ OptionDescriptionMap option_map_;
+ ArgumentDescriptionList arguments_;
+ };
+
+ inline void
+ print_text (std::ostream& os, Description const& d)
+ {
+ using std::endl;
+
+ os << d.command ();
+
+ Description::OptionIterator ob = d.begin_option ();
+ Description::OptionIterator oe = d.end_option ();
+
+ if (ob != oe)
+ {
+ os << " { OPTIONS }";
+ }
+
+ Description::ArgumentIterator ab = d.begin_argument ();
+ Description::ArgumentIterator ae = d.end_argument ();
+
+ for (; ab != ae; ab++)
+ {
+ os << " <" << *ab << ">";
+ }
+
+ os << endl << endl;
+
+ for (; ob != oe; ob++)
+ {
+ bool flag (ob->type () == OptionType::flag);
+ bool optional (ob->optional ());
+ std::string prefix (ob->name ().length () == 1 ? "-" : "--");
+
+ os << (optional ? "[" : "") << prefix << ob->name ()
+ << (flag ? "" : " ") << ob->value_synopsis ()
+ << (optional ? "]" : "")
+ << endl;
+
+ os << "\t\t" << ob->description () << endl << endl;
+ }
+
+ }
+
+
+ inline void
+ print_html (std::ostream& os, Description const& d)
+ {
+ using std::endl;
+
+ os << "<html>" << endl
+ << "<body>" << endl
+ << "<div align=\"center\">" << endl
+ << "<table width=\"700\" border=\"0\" cellspacing=\"0\" "
+ << "cellpadding=\"0\">" << endl
+ << "<tr>" << endl
+ << "<td>" << endl;
+
+ os << "<p>" << endl
+ << "<code>" << endl;
+
+ os << d.command ();
+
+ Description::OptionIterator ob = d.begin_option ();
+ Description::OptionIterator oe = d.end_option ();
+
+ if (ob != oe)
+ {
+ os << " { OPTIONS }";
+ }
+
+ Description::ArgumentIterator ab = d.begin_argument ();
+ Description::ArgumentIterator ae = d.end_argument ();
+
+ for (; ab != ae; ab++)
+ {
+ os << " &lt;" << *ab << "&gt;";
+ }
+
+ os << endl
+ << "</code>" << endl
+ << "</p>" << endl;
+
+
+ os << "<dl>" << endl;
+
+ for (; ob != oe; ob++)
+ {
+ bool flag (ob->type () == OptionType::flag);
+ bool optional (ob->optional ());
+ std::string prefix (ob->name ().length () == 1 ? "-" : "--");
+
+ os << "<dt>" << endl
+ << "<code>" << endl
+ << (optional ? "[" : "") << prefix << ob->name ()
+ << (flag ? "" : " ") << ob->value_synopsis ()
+ << (optional ? "]" : "") << endl
+ << "</code>" << endl
+ << "</dt>" << endl;
+
+ os << "<dd>" << endl
+ << "<p>" << endl
+ << ob->description () << endl
+ << "</p>" << endl
+ << "</dd>" << endl;
+ }
+
+ os << "</dl>" << endl;
+
+ os << "</td>" << endl
+ << "</tr>" << endl
+ << "</table>" << endl
+ << "</div>" << endl
+ << "</body>" << endl
+ << "</html>" << endl;
+
+ }
+}
+
+
+#endif // COMMAND_LINE_DESCRIPTOR_H
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.cpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.cpp
new file mode 100644
index 00000000000..5f7d1d603bd
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.cpp
@@ -0,0 +1,120 @@
+// file : CCF/CodeGenerationKit/CommandLineParser.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CodeGenerationKit/CommandLineParser.hpp"
+
+#include <string>
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+bool
+parse (int argc, char* argv[], CL::Description const& cld, CommandLine& cl)
+{
+ cl.command = argv[0];
+
+ bool seen_double_dash (false);
+
+ for (int i (1); i < argc; ++i)
+ {
+ std::string arg (argv[i]);
+
+ if (seen_double_dash)
+ {
+ cl.arguments.push_back (arg);
+ continue;
+ }
+
+ if (arg == "--")
+ {
+ seen_double_dash = true;
+ continue;
+ }
+
+ if (arg.length () > 0 && arg[0] == '-')
+ {
+ if (arg.length () > 1 && arg[1] == '-')
+ {
+ // Double-dash (long) option.
+ //
+
+ std::string op (arg, 2);
+
+ if (CL::OptionDescription const* d = cld.find_option (op))
+ {
+ if (d->type () == CL::OptionType::value)
+ {
+ if (++i >= argc)
+ {
+ cerr << argv[0] << ": argument expected for option '--"
+ << op << "'" << endl;
+ return false;
+ }
+
+ // cerr << "--" << op << ": " << argv[i] << endl;
+
+ cl.options.push_back (CommandLine::Option (op, argv[i]));
+ }
+ else
+ cl.options.push_back (CommandLine::Option (op));
+
+ continue;
+ }
+ }
+ else
+ {
+ // Single-dash (short) option. We support two formats: '-D foo' and
+ // -Dfoo.
+ //
+ std::string op (arg, 1, 1);
+
+ if (CL::OptionDescription const* d = cld.find_option (op))
+ {
+ if (d->type () == CL::OptionType::value)
+ {
+ std::string value;
+
+ if (arg.length () > 2)
+ {
+ value.assign (arg, 2, arg.size () - 2);
+ }
+ else
+ {
+ if (++i >= argc)
+ {
+ cerr << argv[0] << ": argument expected for option '-"
+ << op << "'" << endl;
+ return false;
+ }
+
+ value = argv[i];
+ }
+
+ // cerr << "-" << op << ": " << value << endl;
+
+ cl.options.push_back (CommandLine::Option (op, value));
+ }
+ else
+ {
+ if (arg.length () > 2)
+ {
+ cerr << argv[0] << ": argument not expected for option '-"
+ << op << "' in '" << arg << "'" << endl;
+ return false;
+ }
+
+ cl.options.push_back (CommandLine::Option (op));
+ }
+
+ continue;
+ }
+ }
+ }
+
+ cl.arguments.push_back (arg);
+ }
+
+ return true;
+}
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.hpp
new file mode 100644
index 00000000000..2e85dc7e266
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/CommandLineParser.hpp
@@ -0,0 +1,14 @@
+// file : CCF/CodeGenerationKit/CommandLineParser.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef COMMAND_LINE_PARSER_H
+#define COMMAND_LINE_PARSER_H
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+bool
+parse (int argc, char* argv[], CL::Description const&, CommandLine&);
+
+#endif // COMMAND_LINE_PARSER_H
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp
new file mode 100644
index 00000000000..713f917e834
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationBuffer.hpp
@@ -0,0 +1,61 @@
+// file : CCF/CodeGenerationKit/IndentationBuffer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_BUFFER_HPP
+#define CCF_CODE_GENERATION_KIT_INDENTATION_BUFFER_HPP
+
+#include "CCF/CompilerElements/ExH.hpp"
+
+#include <string>
+
+namespace Indentation
+{
+ template <typename C>
+ class Buffer
+ {
+ public:
+ class Exception_ {};
+ typedef
+ ExH::Compound <Exception_, ExH::Logic::DescriptiveException>
+ Exception;
+
+ class EndOfStream_ {};
+ typedef
+ ExH::Compound <EndOfStream_, Exception>
+ EndOfStream;
+
+ public:
+ virtual
+ ~Buffer () throw () {}
+
+ public:
+ typedef
+ std::char_traits<C>
+ traits_type;
+
+ typedef
+ typename traits_type::char_type
+ char_type;
+
+ typedef
+ typename traits_type::int_type
+ int_type;
+
+ public:
+ virtual int_type
+ put (char_type c) throw (Exception, ExH::System::Exception) = 0;
+
+ // Unbuffer flushes internal formatting buffers (if any).
+ // Note that unbuffer is not exactly flushing since it can
+ // result in formatting errors and in general can not be
+ // called at arbitrary points. Natural use case would be
+ // to call unbuffer at the end of the stream when no more
+ // data is expected.
+ //
+ virtual void
+ unbuffer () throw (EndOfStream, Exception, ExH::System::Exception) = 0;
+ };
+}
+
+#endif // CCF_CODE_GENERATION_KIT_INDENTATION_BUFFER_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationCxx.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationCxx.hpp
new file mode 100644
index 00000000000..b7451969555
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationCxx.hpp
@@ -0,0 +1,385 @@
+// file : CCF/CodeGenerationKit/IndentationCxx.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_CXX_HPP
+#define CCF_CODE_GENERATION_KIT_INDENTATION_CXX_HPP
+
+#include <deque>
+#include <stack>
+
+#include "CCF/CodeGenerationKit/IndentationBuffer.hpp"
+
+namespace Indentation
+{
+ template <typename C>
+ class Cxx : public Buffer<C>
+ {
+ public:
+ typedef
+ typename Buffer<C>::traits_type
+ traits_type;
+
+ typedef
+ typename Buffer<C>::char_type
+ char_type;
+
+ typedef
+ typename Buffer<C>::int_type
+ int_type;
+
+ typedef
+ typename Buffer<C>::EndOfStream
+ EndOfStream;
+
+ public:
+ Cxx (Buffer<C>& out)
+ : out_ (out),
+ position_ (0),
+ paren_balance_ (0),
+ spaces_ (2),
+ construct_ (OTHER)
+ {
+ indentation_.push (0);
+ }
+
+ virtual
+ ~Cxx () throw () {}
+
+ public:
+ virtual int_type
+ put (char_type c) throw (ExH::System::Exception)
+ {
+ int_type result = traits_type::to_int_type (c);
+
+ try
+ {
+ bool defaulting = false;
+
+ if (!hold_.empty () && hold_.back () == '(')
+ {
+ unbuffer (); // We don't need to hold it any more.
+
+ if (c == '\n')
+ indentation_.push (indentation_.top () + spaces_);
+ else
+ indentation_.push (position_);
+ }
+
+ switch (c)
+ {
+ case '\n':
+ {
+ hold_.push_back (c);
+ position_ = 0; // Starting a new line.
+
+ if (construct_ == CXX_COMMENT)
+ {
+ //std::cerr << "end comment" << endl;
+ construct_ = OTHER;
+ }
+
+ break;
+ }
+ case '{':
+ {
+ ensure_new_line ();
+ output_indentation ();
+ result = write (c);
+ ensure_new_line ();
+
+ indentation_.push (indentation_.top () + spaces_);
+
+ break;
+ }
+ case '}':
+ {
+ if (indentation_.size () > 1)
+ indentation_.pop ();
+
+ // Reduce multiple newlines to one.
+ while (hold_.size () > 1)
+ {
+ typename Hold::reverse_iterator i = hold_.rbegin ();
+ if (*i == '\n' && *(i + 1) == '\n') hold_.pop_back ();
+ else break;
+ }
+
+ ensure_new_line ();
+ output_indentation ();
+
+ hold_.push_back (c);
+
+
+ // Add double newline after '}'.
+ //
+ hold_.push_back ('\n');
+ hold_.push_back ('\n');
+ position_ = 0;
+
+ break;
+ }
+ case ';':
+ {
+ if (paren_balance_ != 0)
+ {
+ // We are inside for (;;) statement. Nothing to do here.
+ //
+ defaulting = true;
+ }
+ else
+ {
+ // Handling '};' case.
+ //
+
+ bool brace (false);
+
+ if (hold_.size () > 1 && hold_.back () == '\n')
+ {
+ bool pop_nl (false);
+
+ for (typename Hold::reverse_iterator
+ i (hold_.rbegin ()), e (hold_.rend ()); i != e; ++i)
+ {
+ if (*i != '\n')
+ {
+ if (*i == '}') brace = pop_nl = true;
+ break;
+ }
+ }
+
+ if (pop_nl) while (hold_.back () == '\n') hold_.pop_back ();
+ }
+
+ output_indentation ();
+ result = write (c);
+ position_++;
+
+ if (brace)
+ {
+ hold_.push_back ('\n');
+ hold_.push_back ('\n');
+ }
+
+ if (construct_ != STRING_LITERAL && construct_ != CHAR_LITERAL)
+ {
+ ensure_new_line ();
+ }
+ }
+
+ break;
+ }
+ case '\\':
+ {
+ if (construct_ != CXX_COMMENT)
+ {
+ output_indentation ();
+ hold_.push_back (c);
+ position_++;
+ }
+ else
+ defaulting = true;
+
+ break;
+ }
+ case '\"':
+ {
+ if (construct_ != CXX_COMMENT &&
+ (hold_.empty () || hold_.back () != '\\'))
+ {
+ // not escape sequence
+ if (construct_ == STRING_LITERAL) construct_ = OTHER;
+ else construct_ = STRING_LITERAL;
+ }
+
+ defaulting = true;
+ break;
+ }
+ case '\'':
+ {
+ if (construct_ != CXX_COMMENT &&
+ (hold_.empty () || hold_.back () != '\\'))
+ {
+ // not escape sequence
+ if (construct_ == CHAR_LITERAL) construct_ = OTHER;
+ else
+ {
+ //std::cerr << "char literal" << endl;
+ construct_ = CHAR_LITERAL;
+ }
+
+ }
+
+ defaulting = true;
+ break;
+ }
+ case '(':
+ {
+ if (construct_ == OTHER)
+ {
+ // Hold it so that we can see what's coming next.
+ //
+ output_indentation ();
+ hold_.push_back (c);
+ position_++;
+ paren_balance_++;
+ }
+ else
+ defaulting = true;
+
+ break;
+ }
+ case ')':
+ {
+ if (construct_ == OTHER)
+ {
+ if (indentation_.size () > 1)
+ indentation_.pop ();
+
+ if (paren_balance_ > 0)
+ paren_balance_--;
+ }
+
+ defaulting = true;
+ break;
+ }
+ case '/':
+ {
+ if (construct_ == OTHER)
+ {
+ if (!hold_.empty () && hold_.back () == '/')
+ {
+ construct_ = CXX_COMMENT;
+ //std::cerr << "start comment" << endl;
+ defaulting = true;
+ }
+ else
+ {
+ output_indentation ();
+ hold_.push_back (c);
+ position_++;
+ }
+ }
+ else
+ {
+ defaulting = true;
+ }
+
+ break;
+ }
+ default:
+ {
+ defaulting = true;
+ break;
+ }
+ }
+
+ if (defaulting)
+ {
+ output_indentation ();
+ result = write (c);
+ position_++;
+ }
+ }
+ catch (Full const&)
+ {
+ result = traits_type::eof ();
+ }
+
+ return result;
+ }
+
+ virtual void
+ unbuffer () throw (EndOfStream, ExH::System::Exception)
+ {
+ int_type result;
+
+ while (!hold_.empty ())
+ {
+ result = out_.put (hold_.front ());
+
+ //@@ failed
+ if (result == traits_type::eof ())
+ {
+ throw EndOfStream ("unable to flush buffer");
+ }
+
+ hold_.pop_front ();
+ }
+ }
+
+ private:
+ class Full {};
+
+ void
+ ensure_new_line ()
+ {
+ if (hold_.empty () || hold_.back () != '\n')
+ {
+ hold_.push_back ('\n');
+ position_ = 0; // Starting a new line.
+ }
+ }
+
+
+ void
+ output_indentation () throw (Full)
+ {
+ if (!hold_.empty () && hold_.back () == '\n')
+ {
+ for (unsigned long i = 0; i < indentation_.top (); i++)
+ write (' ');
+
+ position_ += indentation_.top ();
+ }
+ }
+
+ int_type
+ write (char_type c) throw (Full)
+ {
+ hold_.push_back (c);
+
+ int_type result (traits_type::eof ());
+
+ while (!hold_.empty ())
+ {
+ result = out_.put (hold_.front ());
+
+ if (result == traits_type::eof ())
+ throw Full ();
+
+ hold_.pop_front ();
+ }
+
+ return result;
+ }
+
+
+ private:
+ Buffer<C>& out_;
+ unsigned long position_; // Current position on the line.
+ unsigned long paren_balance_; // ( ) balance.
+ std::stack<unsigned long> indentation_;
+ unsigned long spaces_;
+
+ bool suppress_nl_;
+
+ enum Construct
+ {
+ OTHER,
+ CXX_COMMENT,
+ STRING_LITERAL,
+ CHAR_LITERAL
+ };
+
+ Construct construct_;
+
+ typedef
+ std::deque<int_type>
+ Hold;
+
+ Hold hold_;
+ };
+}
+
+#endif // CCF_CODE_GENERATION_KIT_INDENTATION_IDL_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp
new file mode 100644
index 00000000000..24f9866eac4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationIDL.hpp
@@ -0,0 +1,277 @@
+// file : CCF/CodeGenerationKit/IndentationIDL.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_IDL_HPP
+#define CCF_CODE_GENERATION_KIT_INDENTATION_IDL_HPP
+
+#include <deque>
+
+#include "CCF/CodeGenerationKit/IndentationBuffer.hpp"
+
+namespace Indentation
+{
+ template <typename C>
+ class IDL : public Buffer<C>
+ {
+ public:
+ typedef
+ typename Buffer<C>::traits_type
+ traits_type;
+
+ typedef
+ typename Buffer<C>::char_type
+ char_type;
+
+ typedef
+ typename Buffer<C>::int_type
+ int_type;
+
+ typedef
+ typename Buffer<C>::EndOfStream
+ EndOfStream;
+
+ public:
+ IDL (Buffer<C>& out)
+ : out_ (out),
+ indentation_ (0),
+ spaces_ (2),
+ construct_ (OTHER)
+ {
+ }
+
+ virtual
+ ~IDL () throw () {}
+
+ public:
+ virtual int_type
+ put (char_type c) throw (ExH::System::Exception)
+ {
+ int_type result = traits_type::to_int_type (c);
+
+ try
+ {
+ bool defaulting = false;
+ switch (c)
+ {
+ case '\n':
+ {
+ hold_.push_back (c);
+ break;
+ }
+ case '{':
+ {
+ ensure_new_line ();
+ output_indentation ();
+ result = write (c);
+ ensure_new_line ();
+ indentation_++;
+ break;
+ }
+ case '}':
+ {
+ if (indentation_ > 0) indentation_--;
+
+ // Reduce multiple newlines to one.
+ while (hold_.size () > 1)
+ {
+ typename Hold::reverse_iterator i = hold_.rbegin ();
+ if (*i == '\n' && *(i + 1) == '\n') hold_.pop_back ();
+ else break;
+ }
+
+ ensure_new_line ();
+ output_indentation ();
+
+ hold_.push_back (c);
+
+ // result = write (c);
+
+ //ensure_new_line ();
+
+ // Add double newline after '}'.
+ //
+ hold_.push_back ('\n');
+ hold_.push_back ('\n');
+
+
+ break;
+ }
+ case ';':
+ {
+ // Handling '};' case.
+ //
+
+ bool brace (false);
+
+ if (hold_.size () > 1 && hold_.back () == '\n')
+ {
+ bool pop_nl (false);
+
+ for (typename Hold::reverse_iterator
+ i (hold_.rbegin ()), e (hold_.rend ()); i != e; ++i)
+ {
+ if (*i != '\n')
+ {
+ if (*i == '}') brace = pop_nl = true;
+ break;
+ }
+ }
+
+ if (pop_nl) while (hold_.back () == '\n') hold_.pop_back ();
+ }
+
+ output_indentation ();
+ result = write (c);
+
+ if (brace)
+ {
+ hold_.push_back ('\n');
+ hold_.push_back ('\n');
+ }
+
+ if (construct_ != STRING_LITERAL && construct_ != CHAR_LITERAL)
+ {
+ ensure_new_line ();
+ }
+ break;
+ }
+ case '\\':
+ {
+ hold_.push_back (c);
+ break;
+ }
+ case '\"':
+ {
+ if (hold_.empty () || hold_.back () != '\\')
+ {
+ // not escape sequence
+ if (construct_ == STRING_LITERAL) construct_ = OTHER;
+ else construct_ = STRING_LITERAL;
+ }
+
+ defaulting = true;
+ break;
+ }
+ case '\'':
+ {
+ if (hold_.empty () || hold_.back () != '\\')
+ {
+ // not escape sequence
+ if (construct_ == CHAR_LITERAL) construct_ = OTHER;
+ else construct_ = CHAR_LITERAL;
+ }
+
+ defaulting = true;
+ break;
+ }
+ default:
+ {
+ defaulting = true;
+ break;
+ }
+ }
+
+ if (defaulting)
+ {
+ output_indentation ();
+ result = write (c);
+ }
+ }
+ catch (Full const&)
+ {
+ result = traits_type::eof ();
+ }
+
+ return result;
+ }
+
+ virtual void
+ unbuffer () throw (EndOfStream, ExH::System::Exception)
+ {
+ int_type result;
+
+ while (!hold_.empty ())
+ {
+ result = out_.put (hold_.front ());
+
+ //@@ failed
+ if (result == traits_type::eof ())
+ {
+ throw EndOfStream ("unable to flush buffer");
+ }
+
+ hold_.pop_front ();
+ }
+ }
+
+ private:
+ class Full {};
+
+ void
+ ensure_new_line ()
+ {
+ if (hold_.empty () || hold_.back () != '\n')
+ {
+ hold_.push_back ('\n');
+ }
+ }
+
+
+ void
+ output_indentation () throw (Full)
+ {
+ if (!hold_.empty () && hold_.back () == '\n')
+ {
+ for (unsigned long i = 0; i < indentation_ * spaces_; i++)
+ {
+ write (' ');
+ }
+ }
+ }
+
+ int_type
+ write (char_type c) throw (Full)
+ {
+ hold_.push_back (c);
+
+ int_type result (traits_type::eof ());
+
+ while (!hold_.empty ())
+ {
+ result = out_.put (hold_.front ());
+
+ if (result == traits_type::eof ()) throw Full ();
+
+ hold_.pop_front ();
+ }
+
+ return result;
+ }
+
+
+ private:
+ Buffer<C>& out_;
+ unsigned long indentation_;
+ unsigned long spaces_;
+
+ bool suppress_nl_;
+
+ enum Construct
+ {
+ OTHER,
+ STRING_LITERAL,
+ CHAR_LITERAL
+ };
+
+ Construct construct_;
+
+ typedef
+ std::deque<int_type>
+ Hold;
+
+ Hold hold_;
+ };
+}
+
+#endif // CCF_CODE_GENERATION_KIT_INDENTATION_IDL_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp
new file mode 100644
index 00000000000..40259a694f6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp
@@ -0,0 +1,153 @@
+// file : CCF/CodeGenerationKit/IndentationImplanter.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER
+#define CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER
+
+#include <ostream>
+
+#include "CCF/CodeGenerationKit/IndentationBuffer.hpp"
+
+namespace Indentation
+{
+ template <typename C>
+ class ToStreamBufAdapter : public std::basic_streambuf<C>
+ {
+ public:
+ typedef
+ typename std::basic_streambuf<C>::traits_type
+ traits_type;
+
+ typedef
+ typename std::basic_streambuf<C>::char_type
+ char_type;
+
+ typedef
+ typename std::basic_streambuf<C>::int_type
+ int_type;
+
+ public:
+ ToStreamBufAdapter (Buffer<C>& b)
+ : buffer_ (b)
+ {
+ }
+
+ virtual int_type
+ overflow (int_type c)
+ {
+ return buffer_.put (traits_type::to_char_type (c));
+ }
+
+ virtual int
+ sync ()
+ {
+ return 0;
+ }
+
+ private:
+ Buffer<C>& buffer_;
+ };
+
+ template <typename C>
+ class FromStreamBufAdapter : public Buffer<C>
+ {
+ public:
+ typedef
+ typename Buffer<C>::traits_type
+ traits_type;
+
+ typedef
+ typename Buffer<C>::char_type
+ char_type;
+
+ typedef
+ typename Buffer<C>::int_type
+ int_type;
+
+ typedef
+ typename Buffer<C>::Exception
+ Exception;
+
+ public:
+ FromStreamBufAdapter (std::basic_streambuf<C>& b)
+ : buffer_ (b)
+ {
+ }
+
+ virtual int_type
+ put (char_type c) throw (Exception, ExH::System::Exception)
+ {
+ return buffer_.sputc (c);
+ }
+
+ virtual void
+ unbuffer () throw (ExH::System::Exception)
+ {
+ try
+ {
+ if (buffer_.pubsync () == 0) return;
+ }
+ catch (std::ios_base::failure const&)
+ {
+ }
+
+ throw Exception ("underlying std::streambuf::sync failed");
+ }
+
+ private:
+ std::basic_streambuf<C>& buffer_;
+ };
+
+ template <template <typename> class BufferType, typename C = char>
+ class Implanter
+ {
+ public:
+ Implanter (std::basic_ostream<C>& os)
+ : os_ (os),
+ prev_ (os_.rdbuf ()),
+ from_adapter_ (*prev_),
+ buffer_ (from_adapter_),
+ to_adapter_ (buffer_)
+ {
+ os_.rdbuf (&to_adapter_);
+ }
+
+ template <typename Arg0>
+ Implanter (std::basic_ostream<C>& os, Arg0 a0)
+ : os_ (os),
+ prev_ (os_.rdbuf ()),
+ from_adapter_ (*prev_),
+ buffer_ (from_adapter_, a0),
+ to_adapter_ (buffer_)
+ {
+ os_.rdbuf (&to_adapter_);
+ }
+
+ ~Implanter ()
+ {
+ try
+ {
+ buffer_.unbuffer ();
+ }
+ catch (...)
+ {
+ // there is nothing I can do...
+ }
+
+ os_.rdbuf (prev_);
+ }
+
+ private:
+ std::basic_ostream<C>& os_;
+ std::basic_streambuf<C>* prev_;
+
+ FromStreamBufAdapter<C> from_adapter_;
+
+ BufferType<C> buffer_;
+
+ ToStreamBufAdapter<C> to_adapter_;
+ };
+}
+
+#endif // CCF_CODE_GENERATION_KIT_INDENTATION_IMPLANTER
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationXML.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationXML.hpp
new file mode 100644
index 00000000000..774a70e501f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/IndentationXML.hpp
@@ -0,0 +1,233 @@
+// file : CCF/CodeGenerationKit/IndentationXML.hpp
+// author : Diego Sevilla Ruiz <dsevilla@ditec.um.es>
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_CODE_GENERATION_KIT_INDENTATION_XML_HPP
+#define CCF_CODE_GENERATION_KIT_INDENTATION_XML_HPP
+
+#include <deque>
+
+#include "CCF/CodeGenerationKit/IndentationBuffer.hpp"
+
+namespace Indentation
+{
+ template <typename C>
+ class XML : public Buffer<C>
+ {
+ public:
+ typedef
+ typename Buffer<C>::traits_type
+ traits_type;
+
+ typedef
+ typename Buffer<C>::char_type
+ char_type;
+
+ typedef
+ typename Buffer<C>::int_type
+ int_type;
+
+ typedef
+ typename Buffer<C>::EndOfStream
+ EndOfStream;
+
+ public:
+ XML (Buffer<C>& out)
+ : out_ (out),
+ indentation_ (0),
+ base_indent_ (indentation_),
+ spaces_ (2),
+ construct_ (OTHER)
+ {
+ }
+
+ virtual
+ ~XML () throw () {}
+
+ public:
+ virtual int_type
+ put (char_type c) throw (ExH::System::Exception)
+ {
+ int_type result = traits_type::to_int_type (c);
+
+ try
+ {
+ switch (c)
+ {
+ case '\n':
+ {
+ flush_buffer ();
+
+ // If we are inside a tag, just output an artificial tab character
+ if (construct_ == INSIDE_TAG)
+ {
+ hold_.push_back (c);
+ c = traits_type::to_int_type (' ');
+
+ // spaces_ - 1 because at the end the last space will be
+ // put into the hold_ queue.
+ for (unsigned long i = 0; i < spaces_ - 1; i++)
+ hold_.push_back (c);
+ }
+
+ base_indent_ = indentation_;
+
+ break;
+ }
+
+ // Case with <?xxx and <!DOCTYPE (for example).
+ // We still don't handle XML comments
+ case '?':
+ case '!':
+ {
+ if (construct_ == INSIDE_TAG && hold_.back () == '<')
+ indentation_--;
+
+ break;
+ }
+
+ case '<':
+ {
+ //@@ This construct must not be INSIDE_TAG
+ if (construct_ == OTHER)
+ {
+ construct_ = INSIDE_TAG;
+ indentation_++;
+ }
+
+ break;
+ }
+
+ case '>':
+ {
+ if (construct_ == INSIDE_TAG)
+ construct_ = OTHER;
+
+ break;
+ }
+
+ case '/':
+ {
+ if (construct_ == INSIDE_TAG)
+ {
+ if (hold_.back () == '<')
+ indentation_ -= 2;
+ else
+ indentation_--;
+
+ if (indentation_ < 0)
+ indentation_ = 0;
+ }
+
+ break;
+ }
+
+ case '\"':
+ {
+ if (construct_ == INSIDE_TAG)
+ construct_ = STRING_LITERAL;
+ else if (construct_ == STRING_LITERAL)
+ construct_ = INSIDE_TAG;
+
+ break;
+ }
+
+ }
+
+ hold_.push_back (c);
+
+ }
+ catch (Full const&)
+ {
+ result = traits_type::eof ();
+ }
+
+ return result;
+ }
+
+ virtual void
+ unbuffer () throw (EndOfStream, ExH::System::Exception)
+ {
+ try
+ {
+ flush_buffer ();
+ } catch (const Full&)
+ {
+ throw EndOfStream ("unable to flush buffer");
+ }
+ }
+
+ private:
+ class Full {};
+
+ void
+ flush_buffer () throw (Full)
+ {
+ long delta = indentation_ - base_indent_;
+
+ if (delta > 0)
+ delta = 0;
+
+ while (!hold_.empty ())
+ {
+ int_type c = hold_.front ();
+
+ write (c);
+
+ if (c == '\n')
+ output_indentation (base_indent_ + delta);
+
+ hold_.pop_front ();
+ }
+ }
+
+ void
+ output_indentation (unsigned long indentation) throw (Full)
+ {
+ for (unsigned long i = 0; i < indentation * spaces_; i++)
+ {
+ write (' ');
+ }
+ }
+
+ int_type
+ write (int_type c) throw (Full)
+ {
+ int_type result;
+
+ result = out_.put (c);
+
+ if (result == traits_type::eof ()) throw Full ();
+
+ return result;
+ }
+
+
+ private:
+ Buffer<C>& out_;
+ long indentation_;
+ unsigned long base_indent_;
+ unsigned long spaces_;
+
+ enum Construct
+ {
+ OTHER,
+ /* Strings literals can only happen inside tags, like:
+ * <tag whatever="xxx
+ */
+ STRING_LITERAL,
+ INSIDE_TAG
+ };
+
+ Construct construct_;
+
+ typedef
+ std::deque<int_type>
+ Hold;
+
+ Hold hold_;
+ };
+}
+
+#endif // CCF_CODE_GENERATION_KIT_INDENTATION_XML_HPP
diff --git a/modules/CIAO/CCF/CCF/CodeGenerationKit/Regex.hpp b/modules/CIAO/CCF/CCF/CodeGenerationKit/Regex.hpp
new file mode 100644
index 00000000000..b92ed9d4f42
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CodeGenerationKit/Regex.hpp
@@ -0,0 +1,51 @@
+// file : CCF/CodeGenerationKit/Regex.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_RUNTIME_REGEX_HPP
+#define CCF_RUNTIME_REGEX_HPP
+
+#include <string>
+#include <boost/regex.hpp>
+
+namespace regex
+{
+ template <typename C>
+ std::basic_string<C>
+ perl_s (std::basic_string<C> const& src, std::basic_string<C> const& e)
+ {
+ typedef std::basic_string<C> string;
+ typedef typename string::size_type size;
+
+ if (e.empty ())
+ return src;
+
+ C delimiter (e[0]);
+
+ size first = e.find (delimiter);
+ size middle = e.find (delimiter, first + 1);
+ size last = e.find (delimiter, middle + 1);
+
+ string pattern (e, first + 1, middle - first - 1);
+ string format (e, middle + 1, last - middle - 1);
+
+ //std::cout << pattern << " " << format << std::endl;
+
+ boost::basic_regex<C> expr (pattern);
+
+ return regex_merge (
+ src,
+ expr,
+ format,
+ boost::match_default | boost::format_all );
+ }
+
+ template <typename C>
+ std::basic_string<C>
+ perl_s (std::basic_string<C> const& src, C const* e)
+ {
+ return perl_s (src, std::basic_string<C> (e));
+ }
+}
+
+#endif // CCF_RUNTIME_REGEX_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/CompilerElements.mpc b/modules/CIAO/CCF/CCF/CompilerElements/CompilerElements.mpc
new file mode 100644
index 00000000000..54b81f8c557
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/CompilerElements.mpc
@@ -0,0 +1,7 @@
+//$Id$
+
+project(CompilerElements): cidlc {
+ sharedname =
+ staticname = CompilerElements
+ libout = ..
+}
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Context.hpp b/modules/CIAO/CCF/CCF/CompilerElements/Context.hpp
new file mode 100644
index 00000000000..fe799e32b48
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Context.hpp
@@ -0,0 +1,112 @@
+// file : CCF/CompilerElements/Context.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_COMPILER_ELEMENTS_CONTEXT_HPP
+#define CCF_COMPILER_ELEMENTS_CONTEXT_HPP
+
+#include <map>
+#include <string>
+#include <Utility/Hetero/Container.hpp>
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ class Context
+ {
+ typedef
+ std::map<std::string, Utility::Hetero::Container>
+ Map;
+
+ public:
+ Context ()
+ {
+ }
+
+ public:
+ class NotFound {};
+ class Typing {};
+
+ Map::size_type
+ count (char const* key) const throw ()
+ {
+ return map_.count (key);
+ }
+
+ template <typename T>
+ T const&
+ get (char const* key) const throw (NotFound, Typing)
+ {
+ Map::const_iterator i = map_.find (key);
+ if (i == map_.end ()) throw NotFound ();
+
+ try
+ {
+ return i->second. template value<T> ();
+ }
+ catch (Utility::Hetero::Typing const&)
+ {
+ throw Typing ();
+ }
+
+ }
+
+ template <typename T>
+ T const&
+ get (char const* key, T const& def) const throw (Typing)
+ {
+ Map::const_iterator i = map_.find (key);
+ if (i == map_.end ()) return def;
+
+ try
+ {
+ return i->second. template value<T> ();
+ }
+ catch (Utility::Hetero::Typing const&)
+ {
+ throw Typing ();
+ }
+ }
+
+ template <typename T>
+ void
+ set (char const* key, T const& value) throw (Typing)
+ {
+ try
+ {
+ if (!map_.insert (std::pair<std::string,
+ Utility::Hetero::Container>(key, value)).second)
+ {
+ Map::iterator i = map_.find (key);
+ i->second.template value <T> () = value;
+ }
+ }
+ catch (Utility::Hetero::Typing const&)
+ {
+ throw Typing ();
+ }
+ }
+
+ void
+ remove (char const* key) throw (NotFound)
+ {
+ Map::iterator i (map_.find (key));
+
+ if (i == map_.end ()) throw NotFound ();
+
+ map_.erase (i);
+ }
+
+ private:
+ Map map_;
+
+ private:
+ // Copy semanic is not supported.
+ Context (Context const&) throw ();
+ Context& operator= (Context const&) throw ();
+ };
+ }
+}
+
+#endif // CCF_COMPILER_ELEMENTS_CONTEXT_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Diagnostic.hpp b/modules/CIAO/CCF/CCF/CompilerElements/Diagnostic.hpp
new file mode 100644
index 00000000000..34eb0006b69
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Diagnostic.hpp
@@ -0,0 +1,192 @@
+// file : CCF/CompilerElements/Diagnostic.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_DIAGNOSTIC_HPP
+#define CCF_DIAGNOSTIC_HPP
+
+#include <string>
+#include <sstream>
+#include <iostream>
+
+#include "CCF/CompilerElements/ExH.hpp"
+
+//@@ Should be inside CCF namespace
+
+namespace Diagnostic
+{
+ //
+ //
+ //
+ class Record : public std::ostringstream
+ {
+ public:
+
+ struct Type
+ {
+ enum Value
+ {
+ INFO,
+ WARNING,
+ ERROR
+ };
+ };
+
+ Record (Type::Value type,
+ std::string file,
+ unsigned long line,
+ std::string description = "")
+ : std::ostringstream (description),
+ type_ (type),
+ file_ (file),
+ line_ (line)
+ {
+ }
+
+ public:
+
+ Type::Value
+ type () const
+ {
+ return type_;
+ }
+
+ std::string
+ file () const
+ {
+ return file_;
+ }
+
+ unsigned long line () const
+ {
+ return line_;
+ }
+
+ std::string
+ description () const
+ {
+ return str ();
+ }
+
+ private:
+ Type::Value type_;
+ std::string file_;
+ unsigned long line_;
+ };
+
+
+ //
+ //
+ //
+ struct Info : public Record
+ {
+ Info (std::string file,
+ unsigned long line,
+ std::string description = "")
+ : Record (Type::INFO, file, line, description)
+ {
+ }
+ };
+
+
+ //
+ //
+ //
+ struct Warning : public Record
+ {
+ Warning (std::string file,
+ unsigned long line,
+ std::string description = "")
+ : Record (Type::WARNING, file, line, description)
+ {
+ }
+ };
+
+
+ //
+ //
+ //
+ struct Error : public Record
+ {
+ Error (std::string file,
+ unsigned long line,
+ std::string description = "")
+ : Record (Type::ERROR, file, line, description)
+ {
+ }
+ };
+
+
+ //
+ //
+ //
+ class Stream
+ {
+ public:
+
+ Stream ()
+ : info_count_ (0),
+ warning_count_ (0),
+ error_count_ (0)
+ {
+ }
+
+
+ Stream&
+ operator<< (Record const& msg)
+ {
+ std::cerr << msg.file () << ":" << msg.line () << ": "
+ << msg.description () << std::endl;
+
+ switch (msg.type ())
+ {
+ case Record::Type::INFO:
+ {
+ info_count_++;
+ break;
+ }
+ case Record::Type::WARNING:
+ {
+ warning_count_++;
+ }
+ case Record::Type::ERROR:
+ {
+ error_count_++;
+ }
+ }
+
+ return *this;
+ }
+
+ public:
+ unsigned long
+ info_count ()
+ {
+ return info_count_;
+ }
+
+ unsigned long
+ warning_coun ()
+ {
+ return warning_count_;
+ }
+
+ unsigned long
+ error_count ()
+ {
+ return error_count_;
+ }
+
+ private:
+ unsigned long info_count_;
+ unsigned long warning_count_;
+ unsigned long error_count_;
+
+ private:
+ // Copy semanic is not supported.
+ Stream (Stream const&) throw ();
+ Stream& operator= (Stream const&) throw ();
+ };
+}
+
+#endif // CCF_DIAGNOSTIC_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/ExH.hpp b/modules/CIAO/CCF/CCF/CompilerElements/ExH.hpp
new file mode 100644
index 00000000000..ad7e1b71950
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/ExH.hpp
@@ -0,0 +1,12 @@
+// file : CCF/CompilerElements/ExH.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_RUNTIME_EX_H_H
+#define CCF_RUNTIME_EX_H_H
+
+#include "Utility/ExH/ExH.hpp"
+
+namespace ExH = Utility::ExH;
+
+#endif // CCF_RUNTIME_EX_H_H
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/FileSystem.hpp b/modules/CIAO/CCF/CCF/CompilerElements/FileSystem.hpp
new file mode 100644
index 00000000000..ba9483f04e6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/FileSystem.hpp
@@ -0,0 +1,33 @@
+// file : CCF/CompilerElements/FileSystem.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_RUNTIME_FILE_SYSTEM_HPP
+#define CCF_RUNTIME_FILE_SYSTEM_HPP
+
+#include <string>
+
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/exception.hpp>
+#include <boost/filesystem/operations.hpp>
+
+namespace fs
+{
+ using namespace boost::filesystem;
+
+ inline path
+ normalize (path const& p)
+ {
+ path result;
+
+ for (path::iterator i (p.begin ()), e (p.end ()); i != e; ++i)
+ {
+ if (*i != ".") result /= path (*i, native);
+ }
+
+ return result;
+ }
+}
+
+#endif // CCF_RUNTIME_FILE_SYSTEM_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Introspection.cpp b/modules/CIAO/CCF/CCF/CompilerElements/Introspection.cpp
new file mode 100644
index 00000000000..9e625e0272a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Introspection.cpp
@@ -0,0 +1,26 @@
+// file : CCF/CompilerElements/Introspection.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+//
+// This is a hack to avoid link dependency on Utility library.
+//
+
+#include "Utility/Introspection/Object.hpp"
+
+namespace Utility
+{
+ namespace Introspection
+ {
+ namespace
+ {
+ TypeInfo object_ (typeid (Object));
+ }
+
+ TypeInfo const& Object::
+ static_type_info () throw ()
+ {
+ return object_;
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Introspection.hpp b/modules/CIAO/CCF/CCF/CompilerElements/Introspection.hpp
new file mode 100644
index 00000000000..898e596fa88
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Introspection.hpp
@@ -0,0 +1,12 @@
+// file : CCF/CompilerElements/Introspection.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_RUNTIME_INTROSPECTION_HPP
+#define CCF_RUNTIME_INTROSPECTION_HPP
+
+#include "Utility/Introspection/Introspection.hpp"
+
+namespace Introspection = Utility::Introspection;
+
+#endif // CCF_RUNTIME_INTROSPECTION_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.cpp b/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.cpp
new file mode 100644
index 00000000000..e52750ba74e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.cpp
@@ -0,0 +1,955 @@
+// file : CCF/CompilerElements/Preprocessor.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <deque>
+#include <locale>
+#include <string>
+
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+using std::string;
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ namespace CPP
+ {
+ /*
+ namespace Phase2
+ {
+ class TokenPrototype
+ {
+ public:
+ struct Type
+ {
+ enum Value
+ {
+ punctuation,
+ keyword,
+ identifier
+ eos
+ };
+ };
+
+ TokenPrototype (Type::Value type, string const& lexeme)
+ : type_ (type), lexeme_ (lexeme)
+ {
+ }
+
+ Type::Value
+ type () const
+ {
+ return type_;
+ }
+
+ string
+ lexeme () const
+ {
+ return lexeme_;
+ }
+
+ private:
+ Type::Value type_;
+ string lexeme_;
+ };
+
+ bool
+ operator== (TokenPrototype const& a, TokenPrototype const& b)
+ {
+ return a.type () == b.type () && a.lexeme () == b.lexeme ();
+ }
+
+ class Token : public TokenPrototype
+ {
+ public:
+ Token (Type::Value type,
+ string const& lexeme,
+ unsigned long line)
+ : TokenPrototype (type, lexeme), line_ (line)
+ {
+ }
+
+ unsigned long
+ line () const
+ {
+ return line_;
+ }
+
+ private:
+ unsigned long line_;
+ };
+
+
+ class Scanner : public TokenStream<Token>
+ {
+ public:
+ Scanner (TokenStream<CPP::Token>& is)
+ : is_ (is)
+ {
+ }
+
+ virtual Token
+ next ()
+ {
+ try
+ {
+ InToken t (get_ns ());
+
+ switch (t)
+ {
+ case '#':
+ {
+ return Token (Token::Type::punctuation, "#", t.line ());
+ }
+ case '\n':
+ {
+ return Token (Token::Type::punctuation, "\n", t.line ());
+ }
+ }
+ }
+ catch (EOS const&)
+ {
+ }
+ }
+
+ private:
+ typedef
+ CPP::Token
+ InToken;
+
+ class EOS {};
+
+ InToken
+ get () throw (EOS)
+ {
+ if (ibuffer_.empty ())
+ {
+ InToken t (is_.next ());
+ if (t == InToken::eos) throw EOS ();
+ return t;
+ }
+ else
+ {
+ InToken t (ibuffer_.front ());
+ ibuffer_.pop_front ();
+
+ if (t == InToken::eos) throw EOS ();
+ return t;
+ }
+ }
+
+ // Get first non-space token
+ //
+ InToken
+ get_ns () throw (EOS)
+ {
+ InToken t (get ());
+
+ while (is_space (t)) t = get ();
+ }
+
+ bool
+ is_space (InToken const& t)
+ {
+ return t == ' ' || t == '\t';
+ }
+
+ private:
+ TokenStream<CPP::Token>& is_;
+ std::deque<InTokent> ibuffer_;
+ };
+ }
+ */
+
+ // PreprocessorImpl
+ //
+ //
+ class Preprocessor::PreprocessorImpl : public TokenStream<Token>
+ {
+ public:
+ virtual
+ ~PreprocessorImpl ()
+ {
+ }
+
+ PreprocessorImpl (TokenStream<char>& is, Symbols const& symbols)
+ : loc_ ("C"),
+ state_ (State::preprocessing),
+ ln_ (1),
+ is_ (is),
+ dsa_ (copy_),
+ symbols_ (symbols),
+ balance_ (0),
+ skip_balance_ (0)
+ {
+ }
+
+ virtual Token
+ next ()
+ {
+ while (true)
+ {
+ if (line_.empty ())
+ scan_line ();
+
+ Token t (line_.front ());
+ line_.pop_front ();
+
+ if (skip_balance_ != 0 && t != Token::eos)
+ continue;
+
+ return t;
+ }
+ }
+
+ private:
+
+ // Line-scanning
+ //
+ //
+
+ class DequeStreamAdapter : public TokenStream<Token>
+ {
+ public:
+ DequeStreamAdapter (std::deque<Token>& d)
+ : d_ (d)
+ {
+ }
+
+ virtual Token
+ next ()
+ {
+ Token t (d_.front ());
+ d_.pop_front ();
+ return t;
+ }
+
+ private:
+ std::deque<Token>& d_;
+ };
+
+ void
+ scan_line ()
+ {
+ bool eos (false);
+
+ while (line_.empty () && !eos)
+ {
+ for (;;)
+ {
+ Token t (next_token ());
+
+ if (t == Token::eos)
+ {
+ eos = true;
+
+ // Add new line if it's missing at the end of line.
+ //
+ if (!line_.empty () && line_.back () != '\n')
+ {
+ //@@ should issue a warning here
+ //
+ line_.push_back (Token ('\n', line_.back ().line ()));
+ }
+ }
+ else
+ {
+ line_.push_back (t);
+ }
+
+ if (eos || t == '\n') break;
+ }
+
+ /*
+ cerr << "line: \'";
+
+ for (std::deque<Token>::iterator
+ i (line_.begin ()), e (line_.end ()); i != e; ++i)
+ {
+ if (*i != Token::eos) cerr << *i;
+ }
+
+ cerr << '\'' << endl;
+ */
+
+ // Check if it is a PP directive
+ //
+
+ if (!line_.empty ())
+ {
+ copy_ = line_;
+ ls_buffer_.clear ();
+ copy_.push_back (Token::eos); // add eos
+
+ try
+ {
+ Token t (ls_get_ns ());
+
+ // cerr << "t = \'" << t << '\'' << endl;
+
+ if (t == '#')
+ {
+ scan_directive ();
+ }
+ }
+ catch (EOS const&)
+ {
+ // cerr << "EOS" << endl;
+
+ // error condition?
+ Token t ('\n', line_.front ().line ());
+ line_.clear ();
+ line_.push_back (t);
+ }
+ }
+ }
+
+ if (eos)
+ {
+ if (balance_ > 0)
+ {
+ cerr << "missing endif directive at the end of file" << endl;
+ }
+
+ line_.push_back (Token::eos);
+ }
+ }
+
+
+ void
+ scan_directive ()
+ {
+ Token t (ls_get_ns ());
+
+ string lexeme;
+
+ if (std::isalpha<char> (t, loc_))
+ {
+ for (;std::isalpha<char> (t, loc_); t = ls_get ())
+ lexeme += t;
+
+ ls_ret (t);
+ }
+
+ // cerr << "lexeme " << lexeme << endl;
+
+ if (lexeme == "include")
+ {
+ scan_include ();
+ return;
+ }
+ else if (lexeme == "if")
+ {
+ ++balance_;
+ }
+ else if (lexeme == "ifdef" || lexeme == "ifndef")
+ {
+ ++balance_;
+
+ string symbol;
+ Token t (ls_get_ns ());
+
+
+ if (is_first_id_char (t))
+ {
+ for (;is_id_char (t); t = ls_get ())
+ symbol += t;
+ ls_ret (t);
+ }
+
+ if (!symbol.empty ())
+ {
+ //cerr << "symbol " << symbol << endl;
+
+ if (skip_balance_ == 0) // Unless we are already skipping.
+ {
+ bool defined (symbols_.find (symbol) != symbols_.end ());
+
+ if ((!defined && lexeme == "ifdef") ||
+ (defined && lexeme == "ifndef"))
+ skip_balance_ = balance_;
+ }
+ }
+ else
+ {
+ cerr << t.line () << ": no symbol specified for " << lexeme
+ << " directive" << endl;
+ throw EOS (); //@@ tmp
+ }
+ }
+ else if (lexeme == "elif" || lexeme == "else")
+ {
+ // For now we treat elif just like else.
+ //
+ if (skip_balance_ == balance_)
+ skip_balance_ = 0;
+ else if (skip_balance_ == 0) // Unless we are already skipping.
+ skip_balance_ = balance_; // Start skipping now.
+ }
+ else if (lexeme == "endif")
+ {
+ if (skip_balance_ == balance_)
+ skip_balance_ = 0;
+
+ if (balance_ > 0)
+ --balance_;
+ else
+ {
+ cerr << t.line () << ": extraneous endif directive" << endl;
+ throw EOS (); //@@ tmp
+ }
+ }
+ else if (lexeme == "error")
+ {
+ if (skip_balance_ == 0)
+ {
+ string msg;
+ Token t (ls_get_ns ());
+
+ if (t != '\n')
+ {
+ for (;t != '\n'; t = ls_get ())
+ msg += t;
+ ls_ret (t);
+ }
+
+ cerr << t.line () << ": error: " << msg << endl;
+ throw EOS (); //@@ tmp
+ }
+ }
+
+ // By default we replace this directive with a newline.
+ //
+ {
+ Token t ('\n', line_.front ().line ());
+ line_.clear ();
+ line_.push_back (t);
+ }
+ }
+
+ void
+ scan_include ()
+ {
+ Token t (ls_get_ns ());
+
+ char finilizer;
+
+ switch (t)
+ {
+ case '\"':
+ {
+ finilizer = '\"';
+ break;
+
+ }
+ case '<':
+ {
+ finilizer = '>';
+ break;
+ }
+ default:
+ {
+ cerr << t.line () << ": invalid include directive" << endl;
+ throw EOS (); //@@ tmp
+ }
+ }
+
+ string path;
+
+ for (t = ls_get (); t != finilizer && t != '\n'; t = ls_get ())
+ {
+ path += t;
+ }
+
+ if (t != finilizer)
+ {
+ cerr << t.line () << ": invalid include directive" << endl;
+ throw EOS (); // @@ tmp
+ }
+
+ string repl (finilizer == '>' ? "__binclude \"" : "__qinclude \"");
+ repl += path + "\";\n";
+
+ line_.clear ();
+
+ for (string::const_iterator i (repl.begin ()), e (repl.end ());
+ i != e; ++i)
+ {
+ line_.push_back (Token (*i, t.line ()));
+ }
+ }
+
+ // Char-scanning
+ //
+ //
+
+ Token
+ next_token ()
+ {
+ if (!obuffer_.empty ())
+ {
+ Token t (obuffer_.front ());
+ obuffer_.pop_front ();
+ return t;
+ }
+
+ try
+ {
+ switch (state_)
+ {
+ case State::preprocessing:
+ {
+ return preprocessing ();
+ }
+ case State::string_literal:
+ {
+ return string_literal ();
+ }
+ case State::char_literal:
+ {
+ return char_literal ();
+ }
+ }
+ }
+ catch (EOS const&)
+ {
+ }
+
+ return Token::eos;
+ }
+
+ Token
+ preprocessing ()
+ {
+ unsigned long l (ln_);
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '\'':
+ {
+ state_ = State::char_literal;
+ break;
+ }
+ case '\"':
+ {
+ state_ = State::string_literal;
+ break;
+ }
+ case '\\':
+ {
+ return escape ();
+ }
+ case '\n':
+ {
+ ++ln_;
+ break;
+ }
+ case '/':
+ {
+ return slash ();
+ }
+ }
+
+ return Token (c, l);
+ }
+
+
+ Token
+ string_literal ()
+ {
+ unsigned long l (ln_);
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '\"':
+ {
+ state_ = State::preprocessing;
+ break;
+ }
+ case '\\':
+ {
+ return escape ();
+ }
+ case '\n':
+ {
+ ++ln_;
+ break;
+ }
+ }
+
+ return Token (c, l);
+ }
+
+
+ Token
+ char_literal ()
+ {
+ unsigned long l (ln_);
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '\'':
+ {
+ state_ = State::preprocessing;
+ break;
+ }
+ case '\\':
+ {
+ return escape ();
+ }
+ case '\n':
+ {
+ ++ln_;
+ break;
+ }
+ }
+
+ return Token (c, l);
+ }
+
+
+ Token
+ escape ()
+ {
+ try
+ {
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '\n':
+ {
+ ++ln_;
+ return next_token ();
+ }
+ case '\'':
+ {
+ if (state_ != State::char_literal &&
+ state_ != State::string_literal)
+ {
+ state_ = State::char_literal;
+ }
+
+ put (Token ('\'', ln_));
+ return Token ('\\', ln_);
+ }
+ case '\"':
+ {
+ if (state_ != State::char_literal &&
+ state_ != State::string_literal)
+ {
+ state_ = State::string_literal;
+ }
+
+ put (Token ('\"', ln_));
+ return Token ('\\', ln_);
+ }
+ default:
+ {
+ ret (c);
+ return Token ('\\', ln_);
+ }
+ }
+ }
+ catch (EOS const&)
+ {
+ ret_eos ();
+ return Token ('\\', ln_);
+ }
+ }
+
+
+ Token
+ slash ()
+ {
+ unsigned long l (ln_);
+
+ try
+ {
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '*': // C comment
+ {
+ return c_comment ();
+ }
+ case '/': // C++ comment
+ {
+ return cxx_comment ();
+ }
+ default:
+ {
+ ret (c);
+ break;
+ }
+ }
+ }
+ catch (EOS const&)
+ {
+ ret_eos ();
+ }
+
+ return Token ('/', l);
+ }
+
+
+ Token
+ c_comment ()
+ {
+ // Replace the whole C comment with the single space.
+ //
+ unsigned long l (ln_);
+
+ try
+ {
+ char_type c (get ());
+
+ for (bool done (false); !done;)
+ {
+ switch (c)
+ {
+ case '\n':
+ {
+ ++ln_;
+ break;
+ }
+ case '*':
+ {
+ c = get ();
+ if (c == '/') done = true;
+ continue;
+ }
+ }
+
+ c = get ();
+ }
+ }
+ catch (EOS const&)
+ {
+ put (Token::eos);
+ }
+
+ return Token (' ', l);
+ }
+
+
+ Token
+ cxx_comment ()
+ {
+ // Replace the whole C++ comment with the single space.
+ //
+ unsigned long l (ln_);
+
+ try
+ {
+ for (bool done (false); !done;)
+ {
+ char_type c (get ());
+
+ switch (c)
+ {
+ case '\n':
+ {
+ ++ln_;
+ done = true;
+ break;
+ }
+ }
+ }
+ }
+ catch (EOS const&)
+ {
+ put (Token::eos);
+ }
+
+ return Token ('\n', l);
+ }
+
+ // Low-level utility functions.
+ //
+ private:
+ typedef
+ TokenStream<char>::int_type
+ int_type;
+
+ typedef
+ TokenStream<char>::char_type
+ char_type;
+
+ char_type
+ to_char_type (int_type i)
+ {
+ return TokenStream<char>::to_char_type (i);
+ }
+
+ bool
+ eos (int_type i)
+ {
+ return TokenStream<char>::eos () == i;
+ }
+
+ class EOS {};
+
+ char_type
+ get () throw (EOS)
+ {
+ int_type i;
+
+ if (ibuffer_.empty ())
+ {
+ i = is_.next ();
+ }
+ else
+ {
+ i = ibuffer_.front ();
+ ibuffer_.pop_front ();
+ }
+
+ if (eos (i)) throw EOS ();
+
+ return to_char_type (i);
+ }
+
+ void
+ ret (char_type t)
+ {
+ ibuffer_.push_front (t);
+ }
+
+ void
+ ret_eos ()
+ {
+ ibuffer_.push_front (TokenStream<char>::eos ());
+ }
+
+ void
+ put (Token const& t)
+ {
+ obuffer_.push_back (t);
+ }
+
+
+ // line-scanner utility functions
+ //
+ //
+ void
+ ls_ret (Token const& t)
+ {
+ ls_buffer_.push_front (t);
+ }
+
+ Token
+ ls_get () throw (EOS)
+ {
+ if (ls_buffer_.empty ())
+ {
+ Token t (dsa_.next ());
+ if (t == Token::eos) throw EOS ();
+ return t;
+ }
+ else
+ {
+ Token t (ls_buffer_.front ());
+ ls_buffer_.pop_front ();
+
+ if (t == Token::eos) throw EOS ();
+ return t;
+ }
+ }
+
+ // Get first non-space token
+ //
+ Token
+ ls_get_ns () throw (EOS)
+ {
+ Token t (ls_get ());
+
+ while (ls_is_space (t)) t = ls_get ();
+ return t;
+ }
+
+ bool
+ ls_is_space (Token const& t)
+ {
+ return t == ' ' || t == '\t';
+ }
+
+ bool
+ is_first_id_char (Token const& t)
+ {
+ return std::isalpha<char> (t, loc_) || t == '_';
+ }
+
+ bool
+ is_id_char (Token const& t)
+ {
+ return std::isalnum<char> (t, loc_) || t == '_';
+ }
+
+ private:
+ struct State
+ {
+ enum Value
+ {
+ preprocessing,
+ string_literal,
+ char_literal
+ };
+ };
+
+ std::locale loc_;
+
+ State::Value state_;
+ unsigned long ln_;
+
+ TokenStream<char>& is_;
+
+ std::deque<int_type> ibuffer_;
+ std::deque<Token> obuffer_;
+
+ std::deque<Token> line_;
+
+ std::deque<Token> copy_;
+ DequeStreamAdapter dsa_;
+ std::deque<Token> ls_buffer_;
+
+ Symbols symbols_;
+ unsigned long balance_; // Current #if*/#endif balance.
+ unsigned long skip_balance_; // #if*/#endif balance at which we began
+ // skipping. 0 indicates no skipping.
+
+ };
+
+
+ // Preprocessor
+ //
+ //
+ Preprocessor::
+ ~Preprocessor ()
+ {
+ }
+
+ Preprocessor::
+ Preprocessor (TokenStream<char>& is, Symbols const& symbols)
+ : impl_ (new PreprocessorImpl (is, symbols))
+ {
+ }
+
+ Token Preprocessor::
+ next ()
+ {
+ return impl_->next ();
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp b/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp
new file mode 100644
index 00000000000..994c889a3f8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/Preprocessor.hpp
@@ -0,0 +1,45 @@
+// file : CCF/CompilerElements/Preprocessor.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_COMPILER_ELEMENTS_PREPROCESSOR_HPP
+#define CCF_COMPILER_ELEMENTS_PREPROCESSOR_HPP
+
+#include <memory>
+#include <string>
+#include <set>
+
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/PreprocessorToken.hpp"
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ namespace CPP
+ {
+ typedef
+ std::set<std::string>
+ Symbols;
+
+ class Preprocessor : public TokenStream<Token>
+ {
+ public:
+ virtual
+ ~Preprocessor ();
+
+ Preprocessor (TokenStream<char>& is, Symbols const&);
+
+ virtual Token
+ next ();
+
+ private:
+ class PreprocessorImpl;
+
+ std::auto_ptr<PreprocessorImpl> impl_;
+ };
+ }
+ }
+}
+
+#endif // CCF_COMPILER_ELEMENTS_PREPROCESSOR_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.cpp b/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.cpp
new file mode 100644
index 00000000000..5f3e629243e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.cpp
@@ -0,0 +1,57 @@
+// file : CCF/CompilerElements/PreprocessorToken.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CompilerElements/PreprocessorToken.hpp"
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ namespace CPP
+ {
+ Token const Token::eos;
+
+ Token::
+ Token (char c, unsigned long line)
+ : c_ (traits::to_int_type (c)), line_ (line)
+ {
+ }
+
+ Token::
+ Token ()
+ : c_ (traits::eof ()), line_ (0)
+ {
+ }
+
+ Token::
+ operator char () const throw (EOS)
+ {
+ if (*this == eos) throw EOS ();
+
+ return traits::to_char_type (c_);
+ }
+
+
+ unsigned long Token::
+ line () const throw (EOS)
+ {
+ if (*this == eos) throw EOS ();
+
+ return line_;
+ }
+
+ bool
+ operator== (Token const& a, Token const& b)
+ {
+ return a.c_ == b.c_;
+ }
+
+ bool
+ operator!= (Token const& a, Token const& b)
+ {
+ return a.c_ != b.c_;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.hpp b/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.hpp
new file mode 100644
index 00000000000..5c82076a01c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/PreprocessorToken.hpp
@@ -0,0 +1,58 @@
+// file : CCF/CompilerElements/PreprocessorToken.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_COMPILER_ELEMENTS_PREPROCESSOR_TOKEN_HPP
+#define CCF_COMPILER_ELEMENTS_PREPROCESSOR_TOKEN_HPP
+
+#include <string>
+
+//@@ It is probably a good idea to move preprocessor into a
+// separate library.
+//
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ namespace CPP
+ {
+ class Token
+ {
+ public:
+ static Token const eos;
+
+ public:
+ Token (char c, unsigned long line);
+
+ class EOS {};
+
+ operator char () const throw (EOS);
+
+ unsigned long
+ line () const throw (EOS);
+
+ friend bool
+ operator== (Token const& a, Token const& b);
+
+ friend bool
+ operator!= (Token const& a, Token const& b);
+
+ private:
+ // Constructs eos token.
+ //
+ Token ();
+
+ private:
+ typedef
+ std::char_traits<char>
+ traits;
+
+ traits::int_type c_;
+ unsigned long line_;
+ };
+ }
+ }
+}
+
+#endif // CCF_COMPILER_ELEMENTS_PREPROCESSOR_TOKEN_HPP
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/ReferenceCounting.hpp b/modules/CIAO/CCF/CCF/CompilerElements/ReferenceCounting.hpp
new file mode 100644
index 00000000000..0c3e0057d59
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/ReferenceCounting.hpp
@@ -0,0 +1,12 @@
+// file : CCF/CompilerElements/ReferenceCounting.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_RUNTIME_REFERENCE_COUNTING_H
+#define CCF_RUNTIME_REFERENCE_COUNTING_H
+
+#include "Utility/ReferenceCounting/ReferenceCounting.hpp"
+
+namespace ReferenceCounting = Utility::ReferenceCounting;
+
+#endif // CCF_RUNTIME_REFERENCE_COUNTING_H
diff --git a/modules/CIAO/CCF/CCF/CompilerElements/TokenStream.hpp b/modules/CIAO/CCF/CCF/CompilerElements/TokenStream.hpp
new file mode 100644
index 00000000000..f1d3ab4fb8c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/CompilerElements/TokenStream.hpp
@@ -0,0 +1,82 @@
+// file : CCF/CompilerElements/TokenStream.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_COMPILER_ELEMENTS_TOKEN_STREAM_HPP
+#define CCF_COMPILER_ELEMENTS_TOKEN_STREAM_HPP
+
+#include <string>
+#include <istream>
+
+namespace CCF
+{
+ namespace CompilerElements
+ {
+ template <typename Token>
+ class TokenStream
+ {
+ public:
+ // (JP 06-04-06) Not required by C++ spec, but it
+ // eliminates buggy GCC warnings.
+ virtual ~TokenStream () {}
+
+ virtual Token
+ next () = 0;
+ };
+
+ template <>
+ class TokenStream<char>
+ {
+ public:
+ typedef
+ std::char_traits<char>
+ traits;
+
+ typedef
+ traits::int_type
+ int_type;
+
+ typedef
+ traits::char_type
+ char_type;
+
+ public:
+ virtual int_type
+ next () = 0;
+
+ static char_type
+ to_char_type (int_type i)
+ {
+ return traits::to_char_type (i);
+ }
+
+ static int_type
+ eos ()
+ {
+ return traits::eof ();
+ }
+ };
+
+ class InputStreamAdapter : public TokenStream<char>
+ {
+ public:
+ InputStreamAdapter (std::istream& is)
+ : is_ (is)
+ {
+ }
+
+ public:
+
+ virtual int_type
+ next ()
+ {
+ return is_.get ();
+ }
+
+ private:
+ std::istream& is_;
+ };
+ }
+}
+
+#endif // CCF_COMPILER_ELEMENTS_TOKEN_STREAM_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/IDL2.mpc b/modules/CIAO/CCF/CCF/IDL2/IDL2.mpc
new file mode 100644
index 00000000000..74273a71a7f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/IDL2.mpc
@@ -0,0 +1,16 @@
+//$Id$
+
+project(IDL2): cidlc {
+ sharedname =
+ staticname = IDL2
+ libout = ..
+
+ Source_Files {
+ .
+ ./SemanticGraph
+ ./Traversal
+ ./SemanticAction
+ ./SemanticAction/Impl
+
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp b/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp
new file mode 100644
index 00000000000..e357a1a0c28
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.cpp
@@ -0,0 +1,964 @@
+// file : CCF/IDL2/LexicalAnalyzer.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/LexicalAnalyzer.hpp"
+
+#include <stdlib.h> // strtol
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+using std::string;
+using std::pair;
+using std::size_t;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ LexicalAnalyzer::
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is)
+ : loc_ ("C"), is_ (is)
+ {
+ // Keywords (alphabetic order).
+ //
+
+ keyword_table_.insert ("abstract" );
+ keyword_table_.insert ("attribute" );
+ keyword_table_.insert ("__binclude" );
+ keyword_table_.insert ("case" );
+ keyword_table_.insert ("const" );
+ keyword_table_.insert ("custom" );
+ keyword_table_.insert ("default" );
+ keyword_table_.insert ("exception" );
+ keyword_table_.insert ("enum" );
+ keyword_table_.insert ("factory" );
+ keyword_table_.insert ("getraises" );
+ keyword_table_.insert ("in" );
+ keyword_table_.insert ("inout" );
+ keyword_table_.insert ("interface" );
+ keyword_table_.insert ("__qinclude" );
+ keyword_table_.insert ("local" );
+ keyword_table_.insert ("module" );
+ keyword_table_.insert ("native" );
+ keyword_table_.insert ("oneway" );
+ keyword_table_.insert ("out" );
+ keyword_table_.insert ("private" );
+ keyword_table_.insert ("public" );
+ keyword_table_.insert ("raises" );
+ keyword_table_.insert ("readonly" );
+ keyword_table_.insert ("sequence" );
+ keyword_table_.insert ("setraises" );
+ keyword_table_.insert ("struct" );
+ keyword_table_.insert ("supports" );
+ keyword_table_.insert ("switch" );
+ keyword_table_.insert ("truncatable");
+ keyword_table_.insert ("typedef" );
+ keyword_table_.insert ("typeid" );
+ keyword_table_.insert ("typeprefix" );
+ keyword_table_.insert ("union" );
+ keyword_table_.insert ("valuetype" );
+
+ // Identifiers (alphabetic order).
+ //
+ // Note: if you are planning to hack something up
+ // in the code below, first make sure you understand
+ // how everything works!
+ //
+
+ IdentifierTreeNode end;
+
+ identifier_tree_["Object" ] = end;
+ identifier_tree_["ValueBase"] = end;
+ identifier_tree_["any" ] = end;
+ identifier_tree_["boolean" ] = end;
+ identifier_tree_["char" ] = end;
+ identifier_tree_["double" ] = end;
+ identifier_tree_["float" ] = end;
+
+ IdentifierTreeNode long_;
+ long_["" ] = end;
+ long_["double"] = end;
+ long_["long" ] = end;
+
+ identifier_tree_["long" ] = long_;
+ identifier_tree_["octet" ] = end;
+ identifier_tree_["short" ] = end;
+ identifier_tree_["string" ] = end;
+
+ IdentifierTreeNode unsigned_long_;
+ unsigned_long_["" ] = end;
+ unsigned_long_["long"] = end;
+
+ IdentifierTreeNode unsigned_;
+ unsigned_["long" ] = unsigned_long_;
+ unsigned_["short" ] = end;
+
+ identifier_tree_["unsigned" ] = unsigned_;
+ identifier_tree_["void" ] = end;
+ identifier_tree_["wchar" ] = end;
+ identifier_tree_["wstring" ] = end;
+
+ // punctuation (pair-matched).
+ //
+ punctuation_table_.insert (":");
+ punctuation_table_.insert (",");
+ punctuation_table_.insert ("{");
+ punctuation_table_.insert ("}");
+ punctuation_table_.insert ("[");
+ punctuation_table_.insert ("]");
+ punctuation_table_.insert ("(");
+ punctuation_table_.insert (")");
+ punctuation_table_.insert ("<");
+ punctuation_table_.insert (">");
+ punctuation_table_.insert (";");
+
+ // operators
+ //
+ operator_table_.insert ("+"); // add
+ operator_table_.insert ("&"); // and
+ operator_table_.insert ("~"); // com
+ operator_table_.insert ("/"); // div
+ operator_table_.insert ("="); // eq
+ operator_table_.insert ("<<"); // lsh
+ operator_table_.insert ("*"); // mul
+ operator_table_.insert ("|"); // or
+ operator_table_.insert ("%"); // rem
+ operator_table_.insert ("-"); // sub
+ operator_table_.insert (">>"); // rsh
+ operator_table_.insert ("^"); // xor
+ }
+
+
+ LexicalAnalyzer::Char LexicalAnalyzer::
+ get ()
+ {
+ if (!ibuffer_.empty ())
+ {
+ Char c = ibuffer_.front ();
+ ibuffer_.pop_front ();
+ return c;
+ }
+ else
+ {
+ return is_.next ();
+ }
+ }
+
+ LexicalAnalyzer::Char LexicalAnalyzer::
+ peek ()
+ {
+ if (ibuffer_.empty ())
+ {
+ ibuffer_.push_back (is_.next ());
+ }
+
+ return ibuffer_.front ();
+ }
+
+ LexicalAnalyzer::Char LexicalAnalyzer::
+ peek_more ()
+ {
+ while (ibuffer_.size () < 2)
+ {
+ ibuffer_.push_back (is_.next ());
+ }
+
+ return ibuffer_.at (1);
+ }
+
+ void LexicalAnalyzer::
+ ret (Char const& c)
+ {
+ ibuffer_.push_front (c);
+ }
+
+
+ TokenPtr LexicalAnalyzer::
+ next ()
+ {
+ while (true) // Recovery loop.
+ {
+ Char c = skip_space (get ());
+
+ if (is_eos (c)) return TokenPtr (new EndOfStream (0));
+
+ TokenPtr token;
+
+ if (character_literal (c, token)) return token;
+
+ if (string_literal (c, token)) return token;
+
+ if (integer_literal (c, token)) return token;
+
+ // Check for identifier after literals because it can be
+ // triggered by wide string prefix (L"...").
+ //
+ if (is_alpha (c) || c == '_' || (c == ':' && peek () == ':'))
+ {
+ return identifier (c);
+ }
+
+ // Check for punctuation after identifier because ':' in
+ // scoped name will trigger.
+ //
+ if (operator_ (c, token)) return token;
+
+ if (punctuation (c, token)) return token;
+
+ cerr << c.line () << ": error: unable to derive any token "
+ << "from \'" << c << "\'" << endl;
+
+
+ //Do some primitive error recovery.
+ //
+ while (c != ';')
+ {
+ c = skip_space (get ());
+ if (is_eos (c)) return TokenPtr (new EndOfStream (0));
+ }
+ }
+ }
+
+ LexicalAnalyzer::Char LexicalAnalyzer::
+ skip_space (Char c)
+ {
+ while (!is_eos (c) && is_space (c)) c = get ();
+
+ return c;
+ }
+
+ bool LexicalAnalyzer::
+ read_simple_identifier (string& lexeme, CharBuffer& buf)
+ {
+ Char c = skip_space (get ());
+
+ buf.push_back (c);
+
+ if (is_eos (c)) return false;
+
+ if (is_alpha (c) || c == '_')
+ {
+ lexeme += c;
+
+ while (true)
+ {
+ c = peek ();
+
+ if (is_eos (c))
+ {
+ cerr << "warning: no new line at the end of file" << endl;
+ break;
+ }
+
+ if (is_alnum (c) || c == '_')
+ {
+ get ();
+ buf.push_back (c);
+ lexeme += c;
+ continue;
+ }
+
+ break;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+
+ bool LexicalAnalyzer::
+ traverse_identifier_tree (string& lexeme, IdentifierTreeNode const& node)
+ {
+ if (node.map_.empty ()) return true;
+
+ CharBuffer buf;
+ string part;
+
+ if (read_simple_identifier (part, buf))
+ {
+ IdentifierTreeNode::PrefixMap::const_iterator i (
+ node.map_.find (part));
+
+ if (i != node.map_.end ())
+ {
+ if (traverse_identifier_tree (part, i->second))
+ {
+ lexeme += " " + part;
+ return true;
+ }
+ }
+ }
+
+ // Return characters to the buffer in case we couldn't
+ // match anything.
+
+ for(;!buf.empty (); buf.pop_back ()) ret (buf.back ());
+
+ // Check is the node.map_ contains empty key which indicates
+ // that what we've got is good enough.
+ //
+ return node.map_.find ("") != node.map_.end ();
+ }
+
+
+ TokenPtr LexicalAnalyzer::
+ identifier (Char c)
+ {
+ unsigned long line (c.line ());
+
+ string lexeme;
+
+ enum
+ {
+ simple,
+ scoped,
+ other
+ } type = simple;
+
+ if (c == ':')
+ {
+ //@@ not checking for eos here
+ if ((c = get ()) != ':')
+ {
+ cerr << "error: " << c.line () << ": \':\' expected."
+ << endl;
+
+ return TokenPtr (new EndOfStream (0));
+ //@@ error handling is lame for lexical analyzer.
+ }
+
+ lexeme = "::";
+ type = scoped;
+ c = get ();
+ }
+
+ // First caracter of an identifier.
+ //
+ if (is_eos (c))
+ {
+ cerr << "error: invalid identifier" << endl;
+ return TokenPtr (new EndOfStream (0));
+ }
+
+ if (is_alpha (c) || c == '_')
+ {
+ lexeme += c;
+ }
+ else
+ {
+ cerr << "error: invalid identifier" << endl;
+ return TokenPtr (new EndOfStream (0));
+ }
+
+ while (true)
+ {
+ c = peek ();
+
+ if (is_eos (c))
+ {
+ cerr << "warning: no new line at the end of file" << endl;
+ break;
+ }
+
+ // cerr << "lexer::identifier: peeking on \'" << c.char_ ()
+ // << "\'; current lexeme \'" << lexeme << "\'"
+ // << endl;
+
+ if (is_alnum (c) || c == '_')
+ {
+ get ();
+ lexeme += c;
+ continue;
+ }
+
+ if (c == ':' && peek_more () == ':')
+ {
+ get ();
+ get ();
+ lexeme += "::";
+ if (type == simple) type = other;
+ continue;
+ }
+
+ break;
+ }
+
+ //cerr << "lexer: found identifier with lexeme \'"
+ // << lexeme << "\'" << endl;
+
+ if (type == simple)
+ {
+ // Check if it's a keyword.
+ {
+ KeywordTable::const_iterator i (keyword_table_.find (lexeme));
+
+ if (i != keyword_table_.end ())
+ {
+ return TokenPtr (new Keyword (*i, line));
+ }
+
+ // This part is tricky. If it's after 6pm then come back
+ // in the morning. In essence I want the same name
+ // ('string' and 'wstring') to be recognized as a keyword
+ // in one case and as an identifier in the other. When
+ // we see 'string' followed by '<' we want it to be a
+ // keyword. If it's just all by itself then we want to treat
+ // it as an identifier (since it is a complete construct
+ // by itself). So here we are going to check for that.
+ //
+
+ if (lexeme == "string" || lexeme == "wstring")
+ {
+ Char c = skip_space (get ());
+ ret (c);
+
+ if (c == '<')
+ {
+ return TokenPtr (new Keyword (lexeme, line));
+ }
+ }
+ }
+
+ // Check if it is a reserved identifier.
+ //
+
+ {
+ IdentifierTreeNode::PrefixMap::const_iterator i (
+ identifier_tree_.map_.find (lexeme));
+
+ if (i != identifier_tree_.map_.end ())
+ {
+ if (traverse_identifier_tree (lexeme, i->second))
+ {
+ return TokenPtr (
+ new SimpleIdentifier (lexeme, line));
+ }
+ else
+ {
+ //@@ error
+ }
+ }
+ }
+
+ // Check if it is a boolean literal.
+ //
+ if (lexeme == "TRUE" || lexeme == "FALSE")
+ {
+ return TokenPtr (new BooleanLiteral (lexeme, line));
+ }
+
+ // Default to SimpleIdentifier.
+ //
+ return TokenPtr (new SimpleIdentifier (lexeme, line));
+ }
+ else if (type == scoped)
+ {
+ return TokenPtr (new ScopedIdentifier (lexeme, line));
+ }
+ else //type == other
+ {
+ return TokenPtr (new Identifier (lexeme, line));
+ }
+ }
+
+ bool LexicalAnalyzer::
+ punctuation (Char c, TokenPtr& token)
+ {
+ unsigned long line (c.line ());
+
+ PunctuationTable::const_iterator i = punctuation_table_.begin ();
+
+ while (true)
+ {
+ for (;i != punctuation_table_.end () && (*i)[0] != c; ++i);
+
+ if (i == punctuation_table_.end ()) return false;
+
+ if (i->size () == 2) // two-character punctuation
+ {
+ Char pc (peek ());
+
+ if (!is_eos (pc) && (*i)[1] == pc)
+ {
+ get ();
+ }
+ else
+ {
+ // Move on to the next candidate.
+ //
+ ++i;
+ continue;
+ }
+ }
+
+ token = TokenPtr (new Punctuation (*i, line));
+ return true;
+ }
+ }
+
+ bool LexicalAnalyzer::
+ operator_ (Char c, TokenPtr& token)
+ {
+ unsigned long line (c.line ());
+
+ OperatorTable::const_iterator i = operator_table_.begin ();
+
+ while (true)
+ {
+ for (;i != operator_table_.end () && (*i)[0] != c; ++i);
+
+ if (i == operator_table_.end ()) return false;
+
+ if (i->size () == 2) // two-character operator
+ {
+ Char pc (peek ());
+
+ if (!is_eos (pc) && (*i)[1] == pc)
+ {
+ get ();
+ }
+ else
+ {
+ // Move on to the next candidate.
+ //
+ ++i;
+ continue;
+ }
+ }
+
+ token = TokenPtr (new Operator (*i, line));
+ return true;
+ }
+ }
+
+ pair<char, size_t> LexicalAnalyzer::
+ scan_char (char const* s) throw (Format)
+ {
+ if (*s == '\0')
+ {
+ throw Format ();
+ }
+ else if (*s != '\\')
+ {
+ return pair<char, size_t> (*s, 1);
+ }
+ else
+ {
+ // Expected size is 2.
+ //
+ pair<char, size_t> r ('\0', 2);
+
+ switch (*++s)
+ {
+ case 'n':
+ r.first = '\n';
+ break;
+
+ case 't':
+ r.first = '\t';
+ break;
+
+ case 'v':
+ r.first = '\v';
+ break;
+
+ case 'b':
+ r.first = '\b';
+ break;
+
+ case 'r':
+ r.first = '\r';
+ break;
+
+ case 'f':
+ r.first = '\f';
+ break;
+
+ case 'a':
+ r.first = '\a';
+ break;
+
+ case '\\':
+ r.first = '\\';
+ break;
+
+ case '?':
+ r.first = '\?';
+ break;
+
+ case '\'':
+ r.first = '\'';
+ break;
+
+ case '"':
+ r.first = '\"';
+ break;
+
+ case 'x':
+ {
+ // hex
+
+ char c (*++s);
+
+ if(is_hex_digit (c))
+ {
+ // Maximum 2 digits.
+ //
+ string holder (s, 2);
+
+ char* end;
+
+ // Cannot fail. -1 < v < 256.
+ //
+ long v (strtol(holder.c_str (), &end, 16));
+
+ r.first = static_cast<char> (v);
+ r.second = 2 + end - holder.c_str ();
+ }
+ else
+ {
+ throw Format ();
+ }
+ break;
+ }
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ // Maximum 3 digits.
+ //
+ string holder (s, 3);
+
+ char* end;
+
+ // Cannot fail.
+ //
+ long v (strtol(holder.c_str (), &end, 8));
+
+ if (v < 0 || v > 255) throw Format ();
+
+ r.first = static_cast<char> (v);
+ r.second = 1 + end - holder.c_str ();
+
+ break;
+ }
+ default:
+ {
+ throw Format ();
+ }
+ }
+
+ return r;
+
+ }
+ }
+
+ string LexicalAnalyzer::
+ scan_string (string const& s) throw (Format)
+ {
+ string r;
+
+ char const* p = s.c_str ();
+
+ while (*p != '\0')
+ {
+ pair<char, size_t> c (scan_char (p));
+
+ if (c.first == '\0') throw Format ();
+
+ r += c.first;
+ p += c.second;
+ }
+
+ return r;
+ }
+
+
+ bool LexicalAnalyzer::
+ character_literal (Char c, TokenPtr& token)
+ {
+ if (c != '\'') return false;
+
+ unsigned long line (c.line ());
+ string lexeme;
+
+ Char prev (c);
+
+ while (true)
+ {
+ c = get ();
+
+ if (is_eos (c))
+ {
+ cerr << "error: end of file while reading character literal"
+ << endl;
+ break;
+ }
+
+ if (c == '\'' && prev != '\\') break;
+
+ lexeme += c;
+ prev = c;
+ }
+
+ try
+ {
+ pair<char, size_t> r (scan_char (lexeme.c_str ()));
+ if (r.second != lexeme.size ()) throw Format ();
+
+ token = TokenPtr (new CharacterLiteral (r.first, lexeme, line));
+ return true;
+ }
+ catch (Format const&)
+ {
+ cerr << "error: invalid character literal format" << endl;
+ return false;
+ }
+ }
+
+ bool LexicalAnalyzer::
+ string_literal (Char c, TokenPtr& token)
+ {
+ if (c != '\"') return false;
+
+ unsigned long line (c.line ());
+ string lexeme;
+ string value;
+
+ try
+ {
+ while (true)
+ {
+ string r (string_literal_trailer ());
+ value += scan_string (r);
+ lexeme += '\"' + r + '\"';
+
+ // Check if there are more strings.
+ //
+
+ c = skip_space (get ());
+
+ if (c != '\"')
+ {
+ ret (c); // put it back
+ break;
+ }
+
+
+ // Add single space as a string separator.
+ //
+ lexeme += " ";
+ }
+
+ // cerr << "string literal: <" << lexeme << ">/<" << value << ">"
+ // << endl;
+
+ token = TokenPtr (new StringLiteral (value, lexeme, line));
+ return true;
+ }
+ catch (Format const&)
+ {
+ cerr << "error: invalid string literal format" << endl;
+ return false;
+ }
+ }
+
+ string LexicalAnalyzer::
+ string_literal_trailer ()
+ {
+ string r;
+
+ Char prev ('\"', 0);
+
+ while (true)
+ {
+ Char c = get ();
+
+ if (is_eos (c))
+ {
+ cerr << "error: end of file while reading string literal" << endl;
+ break;
+ }
+
+ if (c == '\"' && prev != '\\') break;
+
+ r += c;
+ prev = c;
+ }
+
+ return r;
+ }
+
+ unsigned long long LexicalAnalyzer::
+ scan_integer (string const& s, unsigned short base)
+ throw (Format, Boundary)
+ {
+ unsigned long long const max (~0ULL);
+ unsigned long long bound (max / base);
+
+
+ char const* p (s.c_str ());
+
+ // Skip leading 0 if any.
+ //
+ while (*p != '\0' && *p == '0') ++p;
+
+
+ unsigned long long result (0);
+
+ while(*p != '\0')
+ {
+ unsigned short digit;
+
+ char c (to_upper (*p));
+
+ if (is_dec_digit (c))
+ {
+ digit = c - '0';
+ }
+ else if (is_hex_digit (c))
+ {
+ digit = c - 'A' + 10;
+ }
+ else
+ {
+ throw Format ();
+ }
+
+ if (digit > base) throw Format ();
+
+ if (result > bound)
+ {
+ // cerr << "boundary: base: " << base << "; bound: " << std::hex
+ // << bound << "; result: " << std::hex << result << endl;
+
+ throw Boundary ();
+ }
+
+
+ result *= base;
+ result += digit;
+
+ ++p;
+ }
+
+ return result;
+ }
+
+ //@@ need to return unparsed characters for recovery (like in
+ // integer_literal).
+ //
+ bool LexicalAnalyzer::
+ integer_literal (Char c, TokenPtr& token)
+ {
+ try
+ {
+ if (!is_dec_digit (c)) return false;
+
+ unsigned long line (c.line ());
+
+ ret (c); // Temporarily return the character.
+
+ string lexeme, number;
+
+ unsigned short base (10); // assume 10
+
+ // Determine base and get rid of its identifications.
+ //
+ //
+ if (c == '0')
+ {
+ lexeme += c;
+
+ get ();
+
+ Char pc (peek ());
+
+ if (!is_eos (pc))
+ {
+ if (pc == 'x' || pc == 'X')
+ {
+ get ();
+ base = 16;
+ lexeme += pc;
+
+ c = peek ();
+ }
+ else
+ {
+ base = 8;
+ if (!is_oct_digit (pc))
+ {
+ number += c; // this is needed to handle single 0
+ }
+
+ c = pc;
+ }
+ }
+ else
+ {
+ number += c; // this is needed to handle single 0
+ }
+ }
+
+ while (true)
+ {
+ // Make sure c is a legal character.
+ //
+
+ if (is_eos (c)) break;
+
+ if (base == 8 && !is_oct_digit (c))
+ {
+ break;
+ }
+ else if (base == 10 && !is_dec_digit (c))
+ {
+ break;
+ }
+ else if (!is_hex_digit (c))
+ {
+ break;
+ }
+
+ get ();
+
+ lexeme += c;
+ number += c;
+
+ c = peek ();
+ }
+
+ if (number.empty ()) throw Format ();
+
+ unsigned long long value (scan_integer (number, base));
+
+ //cerr << "integer literal: <" << lexeme << ">/<" << number << ">/<"
+ // << value << ">" << endl;
+
+ token = TokenPtr (new IntegerLiteral (value, lexeme, line));
+ return true;
+ }
+ catch (Format const&)
+ {
+ cerr << "error: invalid integer literal format" << endl;
+ return false;
+ }
+ catch (Boundary const&)
+ {
+ cerr << "error: integer literal is too big" << endl;
+ return false;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.hpp b/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.hpp
new file mode 100644
index 00000000000..e75641e40c8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/LexicalAnalyzer.hpp
@@ -0,0 +1,203 @@
+// file : CCF/IDL2/LexicalAnalyzer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_LEXICAL_ANALYZER_HPP
+#define CCF_IDL2_LEXICAL_ANALYZER_HPP
+
+#include <set>
+#include <map>
+#include <deque>
+#include <locale>
+#include <string>
+
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/PreprocessorToken.hpp"
+#include "CCF/IDL2/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ //@@ Call to get() after eof is illegal.
+ //
+ //
+
+ class LexicalAnalyzer : public CompilerElements::TokenStream<TokenPtr>
+ {
+ public:
+ virtual
+ ~LexicalAnalyzer () throw () {}
+
+ public:
+
+ typedef
+ CompilerElements::CPP::Token
+ Char;
+
+ typedef
+ std::deque<Char>
+ CharBuffer;
+
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is);
+
+ virtual TokenPtr
+ next ();
+
+ protected:
+ virtual Char
+ skip_space (Char c);
+
+ virtual TokenPtr
+ identifier (Char c);
+
+ virtual bool
+ punctuation (Char c, TokenPtr& token);
+
+ virtual bool
+ operator_ (Char c, TokenPtr& token);
+
+ virtual bool
+ character_literal (Char c, TokenPtr& token);
+
+ virtual bool
+ string_literal (Char c, TokenPtr& token);
+
+ virtual std::string
+ string_literal_trailer ();
+
+ virtual bool
+ integer_literal (Char c, TokenPtr& token);
+
+ // Literal scanners.
+ //
+ //
+ class Format {};
+ class Boundary {};
+
+ std::pair<char, std::size_t>
+ scan_char (char const* s) throw (Format);
+
+ std::string
+ scan_string (std::string const& s) throw (Format);
+
+ unsigned long long
+ scan_integer (std::string const& s, unsigned short base)
+ throw (Format, Boundary);
+
+ protected:
+ virtual Char
+ get ();
+
+ virtual Char
+ peek ();
+
+ virtual Char
+ peek_more ();
+
+ virtual void
+ ret (Char const& c);
+
+ protected:
+ // Character utility functions.
+ //
+ bool
+ is_alpha (char c) const
+ {
+ return std::isalpha (c, loc_);
+ }
+
+ bool
+ is_oct_digit (char c) const
+ {
+ return std::isdigit (c, loc_) && c != '8' && c != '9';
+ }
+
+ bool
+ is_dec_digit (char c) const
+ {
+ return std::isdigit (c, loc_);
+ }
+
+ bool
+ is_hex_digit (char c) const
+ {
+ return std::isxdigit (c, loc_);
+ }
+
+ bool
+ is_alnum (char c) const
+ {
+ return std::isalnum (c, loc_);
+ }
+
+ bool
+ is_space (char c) const
+ {
+ return std::isspace (c, loc_);
+ }
+
+ bool
+ is_eos (Char const& c) const
+ {
+ return c == Char::eos;
+ }
+
+ char
+ to_upper (char c) const
+ {
+ return std::toupper (c, loc_);
+ }
+
+ protected:
+ typedef
+ std::set<std::string>
+ KeywordTable;
+
+ struct IdentifierTreeNode
+ {
+ typedef
+ std::map<std::string, IdentifierTreeNode>
+ PrefixMap;
+
+ IdentifierTreeNode&
+ operator[] (char const* key)
+ {
+ return map_[key];
+ }
+
+ PrefixMap map_;
+ };
+
+ typedef
+ std::set<std::string>
+ PunctuationTable;
+
+ typedef
+ std::set<std::string>
+ OperatorTable;
+
+ protected:
+ bool
+ read_simple_identifier (std::string& lexeme, CharBuffer& buf);
+
+ bool
+ traverse_identifier_tree (std::string& lexeme,
+ IdentifierTreeNode const& node);
+
+ protected:
+ std::locale loc_;
+
+ CompilerElements::TokenStream<Char>& is_;
+
+ CharBuffer ibuffer_;
+
+ KeywordTable keyword_table_;
+ IdentifierTreeNode identifier_tree_;
+ PunctuationTable punctuation_table_;
+ OperatorTable operator_table_;
+ };
+ }
+}
+
+#endif // CCF_IDL2_LEXICAL_ANALYZER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Parser.cpp b/modules/CIAO/CCF/CCF/IDL2/Parser.cpp
new file mode 100644
index 00000000000..c368ad2b5d7
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Parser.cpp
@@ -0,0 +1,2360 @@
+// file : CCF/IDL2/Parser.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Parser.hpp"
+
+//
+// Note: DO NOT run emacs indenter (or any other indentation tool) over
+// this file because it will most likely break BNF indentation.
+//
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ using Parsing::DiagnosticType;
+ using Parsing::RecoveryMethod;
+
+ Parser::
+ ~Parser ()
+ {
+ }
+
+ Parser::
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f)
+ : dout_ (dout),
+ lexer_ (l),
+ actions_ (f),
+
+ error_handler (context, dout),
+
+ ABSTRACT ("abstract" ),
+ ATTRIBUTE ("attribute" ),
+ BINCLUDE ("__binclude" ),
+ CASE ("case" ),
+ CONST ("const" ),
+ CUSTOM ("custom" ),
+ DEFAULT ("default" ),
+ ENUM ("enum" ),
+ EXCEPTION ("exception" ),
+ FACTORY ("factory" ),
+ GETRAISES ("getraises" ),
+ IN ("in" ),
+ INOUT ("inout" ),
+ INTERFACE ("interface" ),
+ QINCLUDE ("__qinclude" ),
+ LOCAL ("local" ),
+ MODULE ("module" ),
+ NATIVE ("native" ),
+ ONEWAY ("oneway" ),
+ OUT ("out" ),
+ PRIVATE ("private" ),
+ PUBLIC ("public" ),
+ RAISES ("raises" ),
+ READONLY ("readonly" ),
+ SEQUENCE ("sequence" ),
+ SETRAISES ("setraises" ),
+ STRING ("string" ),
+ STRUCT ("struct" ),
+ SUPPORTS ("supports" ),
+ SWITCH ("switch" ),
+ TRUNCATABLE ("truncatable"),
+ TYPEDEF ("typedef" ),
+ TYPEID ("typeid" ),
+ TYPEPREFIX ("typeprefix" ),
+ UNION ("union" ),
+ VALUETYPE ("valuetype" ),
+ WSTRING ("wstring" ),
+
+ COLON (":"),
+ COMMA (","),
+ LCBRACE ("{"),
+ RCBRACE ("}"),
+ LSBRACE ("["),
+ RSBRACE ("]"),
+ LPAREN ("("),
+ RPAREN (")"),
+ LT ("<"),
+ GT (">"),
+ SEMI (";"),
+
+
+ ADD ("+"),
+ AND ("&"),
+ COM ("~"),
+ DIV ("/"),
+ EQ ("="),
+ LSH ("<<"),
+ MUL ("*"),
+ OR ("|"),
+ REM ("%"),
+ SUB ("-"),
+ RSH (">>"),
+ XOR ("^"),
+
+
+ // Attribute
+ //
+ //
+ act_attribute_begin_ro (
+ f.attribute (), &SemanticAction::Attribute::begin_ro),
+
+ act_attribute_begin_rw (
+ f.attribute (), &SemanticAction::Attribute::begin_rw),
+
+ act_attribute_type (
+ f.attribute (), &SemanticAction::Attribute::type),
+
+ act_attribute_name (
+ f.attribute (), &SemanticAction::Attribute::name),
+
+ act_attribute_get_raises (
+ f.attribute (), &SemanticAction::Attribute::get_raises),
+
+ act_attribute_set_raises (
+ f.attribute (), &SemanticAction::Attribute::set_raises),
+
+ act_attribute_end (
+ f.attribute (), &SemanticAction::Attribute::end),
+
+ // Const
+ //
+ act_const_begin (
+ f.const_ (), &SemanticAction::Const::begin),
+
+ act_const_expr (
+ f.const_ (), &SemanticAction::Const::expr),
+
+ // Enum
+ //
+ //
+ act_enum_begin (
+ f.enum_ (), &SemanticAction::Enum::begin),
+
+ act_enum_enumerator (
+ f.enum_ (), &SemanticAction::Enum::enumerator),
+
+ act_enum_end (
+ f.enum_ (), &SemanticAction::Enum::end),
+
+
+ // Expression
+ //
+
+ act_const_expr_flush (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::flush),
+
+ act_numeric_expression_const (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::const_),
+
+ act_numeric_expression_integer_literal (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::integer_literal),
+
+ act_numeric_expression_pre (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::pre),
+
+ act_numeric_expression_pos (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::pos),
+
+ act_numeric_expression_neg (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::neg),
+
+ act_numeric_expression_com (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::com),
+
+ act_numeric_expression_mul (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::mul),
+
+ act_numeric_expression_div (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::div),
+
+ act_numeric_expression_rem (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::rem),
+
+ act_numeric_expression_add (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::add),
+
+ act_numeric_expression_sub (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::sub),
+
+ act_numeric_expression_rsh (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::rsh),
+
+ act_numeric_expression_lsh (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::lsh),
+
+ act_numeric_expression_and (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::and_),
+
+ act_numeric_expression_xor (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::xor_),
+
+ act_numeric_expression_or (
+ f.numeric_expression (),
+ &SemanticAction::NumericExpression::or_),
+
+ // Exception
+ //
+ //
+ act_exception_begin (
+ f.exception (), &SemanticAction::Exception::begin),
+
+ act_exception_open_scope (
+ f.exception (), &SemanticAction::Scope::open_scope),
+
+ act_exception_close_scope (
+ f.exception (), &SemanticAction::Scope::close_scope),
+
+ act_exception_end (
+ f.exception (), &SemanticAction::Exception::end),
+
+
+ // Include
+ //
+ //
+ act_include_quote (
+ f.include (), &SemanticAction::Include::quote),
+
+ act_include_bracket (
+ f.include (), &SemanticAction::Include::bracket),
+
+ act_include_end (
+ f.include (), &SemanticAction::Include::end),
+
+
+ // Interface
+ //
+ //
+ act_interface_begin_abstract_def (
+ f.interface (), &SemanticAction::Interface::begin_abstract_def),
+
+ act_interface_begin_abstract_fwd (
+ f.interface (), &SemanticAction::Interface::begin_abstract_fwd),
+
+ act_interface_begin_local_def (
+ f.interface (), &SemanticAction::Interface::begin_local_def),
+
+ act_interface_begin_local_fwd (
+ f.interface (), &SemanticAction::Interface::begin_local_fwd),
+
+ act_interface_begin_unconstrained_def (
+ f.interface (),
+ &SemanticAction::Interface::begin_unconstrained_def),
+
+ act_interface_begin_unconstrained_fwd (
+ f.interface (),
+ &SemanticAction::Interface::begin_unconstrained_fwd),
+
+ act_interface_inherits (
+ f.interface (), &SemanticAction::Interface::inherits),
+
+ act_interface_open_scope (
+ f.interface (), &SemanticAction::Scope::open_scope),
+
+ act_interface_close_scope (
+ f.interface (), &SemanticAction::Scope::close_scope),
+
+ act_interface_end (f.interface (), &SemanticAction::Interface::end),
+
+
+ // Member
+ //
+ //
+ act_member_type (
+ f.member (), &SemanticAction::Member::type),
+
+ act_member_name (
+ f.member (), &SemanticAction::Member::name),
+
+ act_member_end (
+ f.member (), &SemanticAction::Member::end),
+
+
+ // Module
+ //
+ //
+ act_module_begin (f.module (), &SemanticAction::Module::begin),
+
+ act_module_open_scope (
+ f.module (), &SemanticAction::Scope::open_scope),
+
+ act_module_close_scope (
+ f.module (), &SemanticAction::Scope::close_scope),
+
+ act_module_end (f.module (), &SemanticAction::Module::end),
+
+
+ // Native
+ //
+ //
+ act_native_name (
+ f.native (), &SemanticAction::Native::name),
+
+ act_native_end (
+ f.native (), &SemanticAction::Native::end),
+
+
+ // Operation
+ //
+ //
+ act_operation_one_way (
+ f.operation (), &SemanticAction::Operation::one_way),
+
+ act_operation_two_way (
+ f.operation (), &SemanticAction::Operation::two_way),
+
+ act_operation_type (
+ f.operation (), &SemanticAction::Operation::type),
+
+ act_operation_name (
+ f.operation (), &SemanticAction::Operation::name),
+
+ act_operation_parameter (
+ this, &Parser::act_operation_parameter_core),
+
+ act_operation_raises (
+ f.operation (), &SemanticAction::Operation::raises),
+
+
+ // Struct
+ //
+ //
+ act_struct_begin_def (
+ f.struct_ (), &SemanticAction::Struct::begin_def),
+
+ act_struct_begin_fwd (
+ f.struct_ (), &SemanticAction::Struct::begin_fwd),
+
+ act_struct_open_scope (
+ f.struct_ (), &SemanticAction::Scope::open_scope),
+
+ act_struct_close_scope (
+ f.struct_ (), &SemanticAction::Scope::close_scope),
+
+ act_struct_end (f.struct_ (), &SemanticAction::Struct::end),
+
+
+ // Typedef
+ //
+ //
+ act_typedef_pre (
+ f.typedef_ (), &SemanticAction::Typedef::pre),
+
+ act_typedef_begin (
+ f.typedef_ (), &SemanticAction::Typedef::begin),
+
+ act_typedef_begin_unbounded_seq (
+ f.typedef_ (), &SemanticAction::Typedef::begin_unbounded_seq),
+
+ act_typedef_begin_bounded_seq (
+ f.typedef_ (), &SemanticAction::Typedef::begin_bounded_seq),
+
+ act_typedef_begin_bounded_string (
+ f.typedef_ (), &SemanticAction::Typedef::begin_bounded_string),
+
+ act_typedef_begin_bounded_wstring (
+ f.typedef_ (), &SemanticAction::Typedef::begin_bounded_wstring),
+
+ act_typedef_begin_array (
+ f.typedef_ (), &SemanticAction::Typedef::begin_array),
+
+ act_typedef_bound (
+ f.typedef_ (), &SemanticAction::Typedef::bound),
+
+ act_typedef_declarator (
+ f.typedef_ (), &SemanticAction::Typedef::declarator),
+
+ act_typedef_end (
+ f.typedef_ (), &SemanticAction::Typedef::end),
+
+
+ // TypeId
+ //
+ //
+ act_type_id_begin (f.type_id (), &SemanticAction::TypeId::begin),
+ act_type_id_end (f.type_id (), &SemanticAction::TypeId::end),
+
+
+ // TypePrefix
+ //
+ //
+ act_type_prefix_begin (f.type_prefix (),
+ &SemanticAction::TypePrefix::begin),
+
+ act_type_prefix_end (f.type_prefix (),
+ &SemanticAction::TypePrefix::end),
+
+ // Union
+ //
+ //
+ act_union_begin_def (
+ f.union_ (), &SemanticAction::Union::begin_def),
+
+ act_union_begin_fwd (
+ f.union_ (), &SemanticAction::Union::begin_fwd),
+
+ act_union_type (
+ f.union_ (), &SemanticAction::Union::type),
+
+ act_union_open_scope (
+ f.union_ (), &SemanticAction::Scope::open_scope),
+
+ act_union_member_type (
+ f.union_ (), &SemanticAction::Union::member_type),
+
+ act_union_member_name (
+ f.union_ (), &SemanticAction::Union::member_name),
+
+ act_union_close_scope (
+ f.union_ (), &SemanticAction::Scope::close_scope),
+
+ act_union_end (
+ f.union_ (), &SemanticAction::Union::end),
+
+
+ // ValueType
+ //
+ //
+ act_value_type_begin_abstract_def (
+ f.value_type (), &SemanticAction::ValueType::begin_abstract_def),
+
+ act_value_type_begin_abstract_fwd (
+ f.value_type (), &SemanticAction::ValueType::begin_abstract_fwd),
+
+ act_value_type_begin_concrete_def (
+ f.value_type (), &SemanticAction::ValueType::begin_concrete_def),
+
+ act_value_type_begin_concrete_fwd (
+ f.value_type (), &SemanticAction::ValueType::begin_concrete_fwd),
+
+ act_value_type_inherits (
+ f.value_type (), &SemanticAction::ValueType::inherits),
+
+ act_value_type_supports (
+ f.value_type (), &SemanticAction::ValueType::supports),
+
+ act_value_type_open_scope (
+ f.value_type (), &SemanticAction::Scope::open_scope),
+
+ act_value_type_close_scope (
+ f.value_type (), &SemanticAction::Scope::close_scope),
+
+ act_value_type_end (
+ f.value_type (), &SemanticAction::ValueType::end),
+
+
+ // ValueTypeFactory
+ //
+ act_value_type_factory_name (
+ f.value_type_factory (), &SemanticAction::ValueTypeFactory::name),
+
+ act_value_type_factory_parameter (
+ f.value_type_factory (), &SemanticAction::ValueTypeFactory::parameter),
+
+ act_value_type_factory_raises (
+ f.value_type_factory (), &SemanticAction::ValueTypeFactory::raises),
+
+
+
+ // ValueTypeMember
+ //
+ act_value_type_member_begin_private (
+ f.value_type_member (),
+ &SemanticAction::ValueTypeMember::begin_private),
+
+ act_value_type_member_begin_public (
+ f.value_type_member (),
+ &SemanticAction::ValueTypeMember::begin_public),
+
+ act_value_type_member_type (
+ f.value_type_member (), &SemanticAction::ValueTypeMember::type),
+
+ act_value_type_member_name (
+ f.value_type_member (), &SemanticAction::ValueTypeMember::name),
+
+ act_value_type_member_end (
+ f.value_type_member (), &SemanticAction::ValueTypeMember::end)
+
+ {
+ language =
+ guard
+ (
+ guard
+ (
+ assertion ("declaration or include directive expected",
+ DiagnosticType::BEFORE)
+ (
+ (+import >> *declaration)
+ | +declaration
+ )
+ >> assertion ("declaration or include directive expected",
+ DiagnosticType::BEFORE)
+ (
+ EOS
+ )
+ )[error_handler]
+ )[root_error_handler] // Stops bailing out (rethrowing).
+ ;
+
+ import = include_decl
+ ;
+
+ include_decl =
+ (
+ (QINCLUDE >> string_literal[act_include_quote])
+ | (BINCLUDE >> string_literal[act_include_bracket])
+ )
+ >> SEMI[act_include_end]
+ ;
+
+ // There are two classes of types: The first class includes
+ // interface and valuetype. The second class includes all
+ // other types like struct, etc. I wonder how I can represent
+ // it in the grammar.
+ //
+
+ declaration =
+ abstract_type_decl
+ | const_decl
+ | extension
+ | local_type_decl
+ | module_decl
+ | type_decl
+ | type_id_decl
+ | type_prefix_decl
+ | unconstrained_interface_decl
+ | concrete_value_type_decl
+ ;
+
+ type_decl =
+ enum_decl
+ | exception_decl
+ | native_decl
+ | struct_decl
+ | typedef_decl
+ | union_decl
+ ;
+
+ type_id_decl =
+ TYPEID
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("string literal expected",
+ DiagnosticType::BEFORE)
+ (
+ string_literal
+ )
+ )[act_type_id_begin]
+
+ >> assertion ("';' expected",
+ f.type_id (),
+ &SemanticAction::TypeId::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_type_id_end]
+ )
+ )[error_handler]
+ ;
+
+ type_prefix_decl =
+ TYPEPREFIX
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("string literal expected",
+ DiagnosticType::BEFORE)
+ (
+ string_literal
+ )
+ )[act_type_prefix_begin]
+
+ >> assertion ("';' expected",
+ f.type_prefix (),
+ &SemanticAction::TypePrefix::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_type_prefix_end]
+ )
+ )[error_handler]
+ ;
+
+ abstract_type_decl =
+ ABSTRACT
+ >> guard
+ (
+ assertion ("interface or valuetype declaration expected")
+ (
+ (INTERFACE >> abstract_interface_decl)
+ |
+ (VALUETYPE >> abstract_value_type_decl)
+ )
+ )[error_handler]
+ ;
+
+ local_type_decl =
+ LOCAL
+ >> guard
+ (
+ assertion ("interface declaration expected")
+ (
+ INTERFACE >> local_interface_decl
+ )
+ )[error_handler]
+ ;
+
+ module_decl =
+ MODULE
+ >> guard
+ (
+ assertion ("module name expected")
+ (
+ simple_identifier[act_module_begin]
+ )
+ >> assertion ("'{' expected",
+ f.module (),
+ &SemanticAction::Module::end)
+ (
+ LCBRACE[act_module_open_scope]
+ )
+ >> assertion ("declaration expected",
+ f.module (),
+ &SemanticAction::Module::close_scope,
+ &SemanticAction::Module::end,
+ DiagnosticType::BEFORE)
+ (
+ hood (+declaration)
+ [
+ handler (f.module (),
+ &SemanticAction::Module::close_scope,
+ &SemanticAction::Module::end)
+ ]
+ )
+ >> assertion ("declaration or '}' expected",
+ f.module (),
+ &SemanticAction::Module::close_scope,
+ &SemanticAction::Module::end,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_module_close_scope]
+ )
+ >> assertion ("';' expected",
+ f.module (),
+ &SemanticAction::Module::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_module_end]
+ )
+ )[error_handler]
+ ;
+
+ // const
+ //
+ //
+ const_decl =
+ CONST
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("const name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_const_begin]
+ >> assertion ("'=' expected")
+ (
+ EQ[act_const_expr_flush] // flush expression stacks
+ )
+ >> assertion ("const expression expected")
+ (
+ const_expr[act_const_expr]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+
+ // const expression
+ //
+ //
+
+ const_expr =
+ boolean_const_expr
+ | character_const_expr
+ | numeric_const_expr
+ | string_const_expr
+ ;
+
+ boolean_const_expr = boolean_literal;
+
+ character_const_expr = character_literal;
+
+ string_const_expr = string_literal;
+
+
+ //
+ //
+ numeric_const_expr =
+ guard
+ (
+ numeric_or_expr
+ )[error_handler]
+ ;
+
+ numeric_or_expr =
+ numeric_xor_expr
+ >> *(
+ OR[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_xor_expr
+ )
+ )[act_numeric_expression_or]
+ ;
+
+ numeric_xor_expr =
+ numeric_and_expr
+ >> *(
+ XOR[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_and_expr
+ )
+ )[act_numeric_expression_xor]
+ ;
+
+
+ numeric_and_expr =
+ numeric_shift_expr
+ >> *(
+ AND[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_shift_expr
+ )
+ )[act_numeric_expression_and]
+ ;
+
+ numeric_shift_expr =
+ numeric_add_expr
+ >> *(
+ (
+ RSH[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_add_expr
+ )
+ )[act_numeric_expression_rsh]
+ |
+ (
+ LSH[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_add_expr
+ )
+ )[act_numeric_expression_lsh]
+ )
+ ;
+
+ numeric_add_expr =
+ numeric_mul_expr
+ >> *(
+ ( ADD[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_mul_expr
+ )
+ )[act_numeric_expression_add]
+
+ |
+ ( SUB[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_mul_expr
+ )
+ )[act_numeric_expression_sub]
+ )
+ ;
+
+ numeric_mul_expr =
+ numeric_unary_expr
+ >> *(
+ ( MUL[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_unary_expr
+ )
+ )[act_numeric_expression_mul]
+
+ |
+ ( DIV[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_unary_expr
+ )
+ )[act_numeric_expression_div]
+
+ |
+ ( REM[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_unary_expr
+ )
+ )[act_numeric_expression_rem]
+ )
+ ;
+
+ numeric_unary_expr =
+ numeric_primary_expr
+
+ | ADD[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_primary_expr[act_numeric_expression_pos]
+ )
+
+ | SUB[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_primary_expr[act_numeric_expression_neg]
+ )
+
+ | COM[act_numeric_expression_pre]
+ >> assertion ("expression expected")
+ (
+ numeric_primary_expr[act_numeric_expression_com]
+ )
+ ;
+
+ numeric_primary_expr =
+ identifier[act_numeric_expression_const]
+ | integer_literal[act_numeric_expression_integer_literal]
+ | LPAREN
+ >> assertion ("expression expected")
+ (
+ numeric_const_expr
+ )
+ >> assertion ("')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ ;
+
+
+ // enum
+ //
+ //
+ enum_decl =
+ ENUM
+ >> guard
+ (
+ assertion ("enum name expected")
+ (
+ simple_identifier[act_enum_begin]
+ )
+ >> hood
+ (
+ assertion ("'{' expected")
+ (
+ LCBRACE
+ )
+ >> enumerator_decl >> *(COMMA >> enumerator_decl)
+ >> assertion ("',' or '}' expected",
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE
+ )
+ )
+ [
+ handler (f.enum_ (),
+ &SemanticAction::Enum::end)
+ ]
+ >> assertion ("';' expected",
+ f.enum_ (),
+ &SemanticAction::Enum::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_enum_end]
+ )
+ )[error_handler]
+ ;
+
+ enumerator_decl =
+ assertion ("enumerator name expected")
+ (
+ simple_identifier[act_enum_enumerator]
+ )
+ ;
+
+
+ // interface
+ //
+ //
+ abstract_interface_decl =
+ guard
+ (
+ assertion ("abstract interface declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_interface_begin_abstract_fwd][act_interface_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_interface_begin_abstract_def]
+
+ >> hood
+ (
+ interface_inheritance_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_interface_open_scope]
+ )
+ >> hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_interface_begin_abstract_def][act_interface_open_scope]
+
+ >> hood
+ (
+ hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ local_interface_decl =
+ guard
+ (
+ assertion ("local interface declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_interface_begin_local_fwd][act_interface_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_interface_begin_local_def]
+
+ >> hood
+ (
+ interface_inheritance_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_interface_open_scope]
+ )
+ >> hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_interface_begin_local_def][act_interface_open_scope]
+
+ >> hood
+ (
+ hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ unconstrained_interface_decl =
+ INTERFACE
+ >> guard
+ (
+ assertion ("interface declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_interface_begin_unconstrained_fwd][act_interface_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_interface_begin_unconstrained_def]
+
+ >> hood
+ (
+ interface_inheritance_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_interface_open_scope]
+ )
+ >> hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_interface_begin_unconstrained_def][act_interface_open_scope]
+
+ >> hood
+ (
+ hood (interface_body)
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.interface (),
+ &SemanticAction::Interface::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_interface_close_scope]
+ )
+ )
+ [
+ handler (f.interface (),
+ &SemanticAction::Interface::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.interface (),
+ &SemanticAction::Interface::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_interface_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ interface_inheritance_spec =
+ guard
+ (
+ assertion ("base interface name expected")
+ (
+ identifier[act_interface_inherits]
+ )
+ >> *(
+ COMMA
+ >> assertion ("base eventtype name expected")
+ (
+ identifier[act_interface_inherits]
+ )
+ )
+ )[error_handler]
+ ;
+
+ interface_body =
+ *(
+ const_decl
+ | type_decl
+ | type_id_decl
+ | type_prefix_decl
+
+ | attribute_decl
+ | operation_decl
+ )
+ ;
+
+
+ // attribute
+ //
+ //
+ attribute_decl =
+ guard
+ (
+ (
+ (
+ READONLY
+ >> assertion ("'attribute' expected")
+ (
+ ATTRIBUTE
+ )
+ )[act_attribute_begin_ro]
+
+ >> hood (attribute_ro_decl_trailer)
+ [
+ handler (f.attribute (),
+ &SemanticAction::Attribute::end)
+ ]
+ >> assertion ("';' expected",
+ f.attribute (),
+ &SemanticAction::Attribute::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_attribute_end]
+ )
+ )
+ |
+ (
+ ATTRIBUTE[act_attribute_begin_rw]
+ >> hood (attribute_rw_decl_trailer)
+ [
+ handler (f.attribute (),
+ &SemanticAction::Attribute::end)
+ ]
+ >> assertion ("';' expected",
+ f.attribute (),
+ &SemanticAction::Attribute::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_attribute_end]
+ )
+ )
+ )[error_handler]
+ ;
+
+
+ attribute_ro_decl_trailer =
+ assertion ("attribute type name expected")
+ (
+ identifier[act_attribute_type]
+ )
+ >> assertion ("attribute name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_attribute_name]
+ )
+ >> !(
+ attribute_ro_raises_spec
+ |
+ +(
+ COMMA
+ >> assertion ("attribute name expected")
+ (
+ simple_identifier[act_attribute_name]
+ )
+ )
+ )
+ ;
+
+ attribute_rw_decl_trailer =
+ assertion ("attribute type name expected")
+ (
+ identifier[act_attribute_type]
+ )
+ >> assertion ("attribute name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_attribute_name]
+ )
+ >> !(
+ attribute_rw_raises_spec
+ |
+ +(
+ COMMA
+ >> assertion ("attribute name expected")
+ (
+ simple_identifier[act_attribute_name]
+ )
+ )
+ )
+ ;
+
+ attribute_ro_raises_spec =
+ RAISES
+ >> attribute_get_raises_list;
+
+
+ attribute_rw_raises_spec =
+ (
+ (GETRAISES >> attribute_get_raises_list)
+ >> !(SETRAISES >> attribute_set_raises_list)
+ )
+ |
+ (SETRAISES >> attribute_set_raises_list)
+ ;
+
+ attribute_get_raises_list =
+ assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> assertion ("exception name expected")
+ (
+ identifier[act_attribute_get_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_attribute_get_raises]
+ )
+ )
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ ;
+
+ attribute_set_raises_list =
+ assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> assertion ("exception name expected")
+ (
+ identifier[act_attribute_set_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_attribute_set_raises]
+ )
+ )
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ ;
+
+
+ // exception
+ //
+ //
+ exception_decl =
+ EXCEPTION
+ >> guard
+ (
+ assertion ("exception name expected")
+ (
+ simple_identifier[act_exception_begin]
+ )
+ >> hood
+ (
+ assertion ("'{' expected")
+ (
+ LCBRACE[act_exception_open_scope]
+ )
+ >> hood (exception_body)
+ [
+ handler (f.exception (),
+ &SemanticAction::Exception::close_scope)
+ ]
+ >> assertion ("member declaration or '}' expected",
+ f.exception (),
+ &SemanticAction::Exception::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_exception_close_scope]
+ )
+ )
+ [
+ handler (f.exception (),
+ &SemanticAction::Exception::end)
+ ]
+ >> assertion ("';' expected",
+ f.exception (),
+ &SemanticAction::Exception::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_exception_end]
+ )
+ )[error_handler]
+ ;
+
+ exception_body =
+ *member_decl
+ ;
+
+
+ // direction specifier
+ //
+ //
+ direction_specifier =
+ IN
+ | OUT
+ | INOUT
+ ;
+
+
+ // member
+ //
+ //
+ member_decl =
+ identifier[act_member_type]
+ >> guard
+ (
+ hood
+ (
+ assertion ("member name expected")
+ (
+ simple_identifier[act_member_name]
+ )
+ >> *(
+ COMMA
+ >> assertion ("member name expected")
+ (
+ simple_identifier[act_member_name]
+ )
+ )
+ )
+ [
+ handler (f.member (),
+ &SemanticAction::Member::end)
+ ]
+ >> assertion ("';' expected",
+ f.member (),
+ &SemanticAction::Member::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_member_end]
+ )
+ )[error_handler]
+ ;
+
+ // native
+ //
+ //
+ native_decl =
+ NATIVE
+ >> guard
+ (
+ assertion ("native name expected")
+ (
+ simple_identifier[act_native_name]
+ )
+ >> assertion ("';' expected",
+ f.native (),
+ &SemanticAction::Native::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_native_end]
+ )
+ )[error_handler]
+ ;
+
+
+ // operation
+ //
+ //
+ operation_decl =
+ guard
+ (
+ (
+ (
+ ONEWAY[act_operation_one_way]
+ >> assertion ("operation return type name expected")
+ (
+ identifier[act_operation_type]
+ )
+ )
+ |
+ (
+ identifier[act_operation_two_way][act_operation_type]
+ )
+ )
+ >> operation_decl_trailer
+ )[error_handler]
+ ;
+
+
+ operation_decl_trailer =
+ assertion ("operation name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_operation_name]
+ )
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> operation_parameter_list
+ >> assertion ("parameter declaration or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> !(
+ RAISES
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> operation_raises_list
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ ;
+
+ operation_parameter_list =
+ *(
+ operation_parameter
+ >> *(
+ COMMA
+ >> assertion ("parameter declaration expected")
+ (
+ operation_parameter
+ )
+ )
+ )
+ ;
+
+ operation_parameter =
+ (
+ direction_specifier
+ >> assertion ("parameter type name expected")
+ (
+ identifier
+ )
+ >> assertion ("parameter name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_operation_parameter]
+ ;
+
+ operation_raises_list =
+ assertion ("exception name expected")
+ (
+ identifier[act_operation_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_operation_raises]
+ )
+ )
+ ;
+
+
+ // struct
+ //
+ //
+ struct_decl =
+ STRUCT
+ >> guard
+ (
+ assertion ("struct declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_struct_begin_fwd][act_struct_end]
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_struct_begin_def][act_struct_open_scope]
+ >> hood
+ (
+ hood
+ (
+ assertion ("member declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ struct_body
+ )
+ )
+ [
+ handler (f.struct_ (),
+ &SemanticAction::Struct::close_scope)
+ ]
+ >> assertion ("member declaration or '}' expected",
+ f.struct_ (),
+ &SemanticAction::Struct::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_struct_close_scope]
+ )
+ )
+ [
+ handler (f.struct_ (),
+ &SemanticAction::Struct::end)
+ ]
+ >> assertion ("';' expected",
+ f.struct_ (),
+ &SemanticAction::Struct::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_struct_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ struct_body =
+ +member_decl
+ ;
+
+
+ // typedef
+ //
+ //
+
+ typedef_decl =
+ TYPEDEF[act_typedef_pre]
+ >> guard
+ (
+ assertion ("type name expected")
+ (
+ typedef_type_spec
+ )
+ >> typedef_declarator
+ >> *(COMMA >> typedef_declarator)
+ >> assertion ("';' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_typedef_end]
+ )
+ )[error_handler]
+ ;
+
+ typedef_declarator =
+ (
+ assertion ("typedef name expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ simple_identifier
+ )
+ >> !( LSBRACE[act_typedef_begin_array][act_const_expr_flush]
+ >> assertion ("const expression expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ numeric_const_expr[act_typedef_bound]
+ )
+ >> assertion ("']' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ RSBRACE
+ )
+ )
+ >> *( LSBRACE[act_const_expr_flush]
+ >> assertion ("const expression expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ numeric_const_expr[act_typedef_bound]
+ )
+ >> assertion ("']' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ RSBRACE
+ )
+ )
+ )[act_typedef_declarator]
+ ;
+
+ typedef_type_spec =
+ identifier[act_typedef_begin]
+ |
+ (
+ SEQUENCE
+ >> assertion ("'<' expected")
+ (
+ LT
+ )
+ >> (
+ (identifier >> GT)[act_typedef_begin_unbounded_seq]
+ |
+ (
+ assertion ("sequence type name expected")
+ (
+ identifier[act_typedef_begin_bounded_seq]
+ )
+ >> assertion ("'>' or ',' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ COMMA[act_const_expr_flush] // flush expression stacks
+ )
+ >> assertion ("const expression expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ numeric_const_expr[act_typedef_bound]
+ )
+ >> assertion ("'>' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ GT
+ )
+ )
+ )
+ )
+ |
+ (
+ STRING
+ >> assertion ("'<' expected")
+ (
+ LT[act_const_expr_flush] // flush expression stacks
+ )
+ >> assertion ("const expression expected")
+ (
+ numeric_const_expr[act_typedef_begin_bounded_string]
+ )
+ >> assertion ("'>' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ GT
+ )
+ )
+ |
+ (
+ WSTRING
+ >> assertion ("'<' expected")
+ (
+ LT[act_const_expr_flush] // flush expression stacks
+ )
+ >> assertion ("const expression expected")
+ (
+ numeric_const_expr[act_typedef_begin_bounded_wstring]
+ )
+ >> assertion ("'>' expected",
+ f.typedef_ (),
+ &SemanticAction::Typedef::end)
+ (
+ GT
+ )
+ )
+ ;
+
+ // union
+ //
+ //
+
+ union_decl =
+ UNION
+ >> guard
+ (
+ assertion ("union declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_union_begin_fwd][act_union_end]
+ |
+ (
+ (
+ simple_identifier
+ >> SWITCH
+ )[act_union_begin_def]
+
+ >> hood (union_def_trailer)
+ [
+ handler (f.union_ (),
+ &SemanticAction::Union::end)
+ ]
+ >> assertion ("';' expected",
+ f.union_ (),
+ &SemanticAction::Union::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_union_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ union_def_trailer =
+ assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> assertion ("discriminator type name expected")
+ (
+ identifier[act_union_type]
+ )
+ >> assertion ("')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_union_open_scope]
+ )
+ >> hood
+ (
+ assertion ("case statement expected")
+ (
+ union_body
+ )
+ )
+ [
+ handler (f.union_ (),
+ &SemanticAction::Union::close_scope)
+ ]
+ >> assertion ("case statement or \'}\' expected",
+ f.union_ (),
+ &SemanticAction::Union::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_union_close_scope]
+ )
+ ;
+
+
+ union_body =
+ +guard
+ (
+ +union_case_label
+ >> assertion ("type name expected",
+ DiagnosticType::BEFORE)
+ (
+ identifier[act_union_member_type]
+ )
+ >> assertion ("member name expected")
+ (
+ simple_identifier[act_union_member_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ union_case_label =
+ (
+ CASE[act_const_expr_flush] // flush expression stacks
+ >> assertion ("const expression expected")
+ (
+ const_expr
+ )
+ >> assertion ("':' expected")
+ (
+ COLON
+ )
+ )
+ |
+ ( DEFAULT
+ >> assertion ("':' expected")
+ (
+ COLON
+ )
+ )
+ ;
+
+
+ // valuetype
+ //
+ //
+ abstract_value_type_decl =
+ guard
+ (
+ assertion ("abstract valuetype declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_value_type_begin_abstract_fwd][act_value_type_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_value_type_begin_abstract_def]
+
+ >> hood
+ (
+ value_type_inheritance_spec
+ >> !(SUPPORTS >> value_type_supports_spec)
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_value_type_open_scope]
+ )
+ >> hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> SUPPORTS
+ )[act_value_type_begin_abstract_def]
+
+ >> hood
+ (
+ value_type_supports_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_value_type_open_scope]
+ )
+ >> hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_value_type_begin_abstract_def][act_value_type_open_scope]
+
+ >> hood
+ (
+ hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+
+ concrete_value_type_decl =
+ VALUETYPE
+ >> guard
+ (
+ assertion ("valuetype declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_value_type_begin_concrete_fwd][act_value_type_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_value_type_begin_concrete_def]
+
+ >> hood
+ (
+ value_type_inheritance_spec
+ >> !(SUPPORTS >> value_type_supports_spec)
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_value_type_open_scope]
+ )
+ >> hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> SUPPORTS
+ )[act_value_type_begin_concrete_def]
+
+ >> hood
+ (
+ value_type_supports_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_value_type_open_scope]
+ )
+ >> hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_value_type_begin_concrete_def][act_value_type_open_scope]
+
+ >> hood
+ (
+ hood (value_type_body)
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::close_scope)
+ ]
+ >> assertion ("declaration or '}' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_value_type_close_scope]
+ )
+ )
+ [
+ handler (f.value_type (),
+ &SemanticAction::ValueType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.value_type (),
+ &SemanticAction::ValueType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_value_type_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ value_type_inheritance_spec =
+ guard
+ (
+ assertion ("base valuetype name expected")
+ (
+ identifier[act_value_type_inherits]
+ )
+ >> *(
+ COMMA
+ >> assertion ("base valuetype name expected")
+ (
+ identifier[act_value_type_inherits]
+ )
+ )
+ )[error_handler]
+ ;
+
+ value_type_supports_spec =
+ guard
+ (
+ assertion ("supported interface name expected")
+ (
+ identifier[act_value_type_supports]
+ )
+ >> *(
+ COMMA
+ >> assertion ("supported interface name expected")
+ (
+ identifier[act_value_type_supports]
+ )
+ )
+ )[error_handler]
+ ;
+
+ value_type_body =
+ *(
+ const_decl
+ | type_decl
+ | type_id_decl
+ | type_prefix_decl
+
+ | attribute_decl
+ | operation_decl
+ | value_type_member_decl
+ | value_type_factory_decl
+ )
+ ;
+
+
+ // valuetype factory
+ //
+ //
+ value_type_factory_decl =
+ FACTORY
+ >> guard
+ (
+ assertion ("factory name expected")
+ (
+ simple_identifier[act_value_type_factory_name]
+ )
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> value_type_factory_parameter_list
+ >> assertion ("parameter declaration or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> !(
+ RAISES
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> value_type_factory_raises_list
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ value_type_factory_parameter_list =
+ *(
+ value_type_factory_parameter
+ >> *(COMMA >> value_type_factory_parameter)
+ )
+ ;
+
+ value_type_factory_parameter =
+ IN
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("parameter name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_value_type_factory_parameter]
+ )[error_handler]
+ ;
+
+ value_type_factory_raises_list =
+ guard
+ (
+ assertion ("exception name expected")
+ (
+ identifier[act_value_type_factory_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_value_type_factory_raises]
+ )
+ )
+ )[error_handler]
+ ;
+
+
+ // valuetype member
+ //
+ //
+ value_type_member_decl =
+ (
+ PUBLIC[act_value_type_member_begin_public]
+ | PRIVATE[act_value_type_member_begin_private]
+ )
+ >> guard
+ (
+ assertion ("type name expected")
+ (
+ identifier[act_value_type_member_type]
+ )
+ >> assertion ("member name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_value_type_member_name]
+ )
+ >> *(
+ COMMA
+ >> assertion ("member name expected")
+ (
+ simple_identifier[act_value_type_member_name]
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Parser.hpp b/modules/CIAO/CCF/CCF/IDL2/Parser.hpp
new file mode 100644
index 00000000000..2a6e6b92b01
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Parser.hpp
@@ -0,0 +1,872 @@
+// file : CCF/IDL2/Parser.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_PARSER_HPP
+#define CCF_IDL2_PARSER_HPP
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+
+#include "CCF/IDL2/SemanticAction.hpp"
+#include "CCF/IDL2/LexicalAnalyzer.hpp"
+
+#include "CCF/IDL2/Parsing/Elements.hpp"
+#include "CCF/IDL2/Parsing/Action.hpp"
+#include "CCF/IDL2/Parsing/Recovery.hpp"
+
+// #$%^ing MS.
+//
+#ifdef CONST
+#undef CONST
+#undef FACTORY
+#undef IN
+#undef OUT
+#endif
+
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ using Parsing::ActionExecutor;
+ using Parsing::NoArgAction;
+ using Parsing::OneArgAction;
+ using Parsing::TwoArgAction;
+
+ class Parser
+ {
+ public:
+ virtual
+ ~Parser ();
+
+ protected:
+ Diagnostic::Stream& dout_;
+ LexicalAnalyzer const& lexer_;
+ SemanticAction::Factory& actions_;
+
+ protected:
+ typedef
+ Parsing::Iterator
+ Iterator;
+
+ //
+ // Primitives
+ //
+
+ typedef
+ Parsing::EndOfStreamParser
+ EndOfStreamParser;
+
+ typedef
+ Parsing::KeywordParser
+ KeywordParser;
+
+ typedef
+ Parsing::PunctuationParser
+ PunctuationParser;
+
+ typedef
+ Parsing::OperatorParser
+ OperatorParser;
+
+ typedef
+ Parsing::IdentifierParser
+ IdentifierParser;
+
+ typedef
+ Parsing::SimpleIdentifierParser
+ SimpleIdentifierParser;
+
+
+ typedef
+ Parsing::RecoveryDescriptor
+ RecoveryDescriptor;
+
+ typedef
+ Parsing::Assertion
+ Assertion;
+
+ typedef
+ Parsing::RecoveryStatus
+ RecoveryStatus;
+
+ typedef
+ Parsing::Guard
+ Guard;
+
+ //@@ names are not thought out weel for error handling
+
+ struct ErrorHandler
+ {
+ ErrorHandler (CompilerElements::Context& context,
+ Diagnostic::Stream& dout)
+ : dout_ (dout),
+ context_ (context)
+ {
+ }
+
+ RecoveryStatus
+ operator() (Parsing::Scanner const& s, Parsing::Error e) const
+ {
+ Iterator i = e.where;
+
+ switch (e.descriptor->diagnostic_)
+ {
+ case Parsing::DiagnosticType::BEFORE:
+ {
+ Diagnostic::Error rec (
+ context_.get<fs::path> ("file-path").native_file_string (),
+ (*i)->line ());
+
+ rec << "before \'" << (*i)->lexeme () << "\': "
+ << e.descriptor->description_;
+
+ dout_ << rec;
+ break;
+ }
+ case Parsing::DiagnosticType::AFTER:
+ {
+ i--;
+
+ Diagnostic::Error rec (
+ context_.get<fs::path> ("file-path").native_file_string (),
+ (*i)->line ());
+
+ rec << "after \'" << (*i)->lexeme () << "\': "
+ << e.descriptor->description_;
+
+ dout_ << rec;
+ break;
+ }
+ case Parsing::DiagnosticType::NONE:
+ {
+ }
+ }
+
+ if (e.descriptor->action_one_.get ())
+ e.descriptor->action_one_->execute ();
+
+ if (e.descriptor->action_two_.get ())
+ e.descriptor->action_two_->execute ();
+
+ switch (e.descriptor->recovery_)
+ {
+ case Parsing::RecoveryMethod::STANDARD:
+ {
+ unsigned long balance = 0;
+
+ for (Iterator t = e.where; t != s.last; t++)
+ {
+ //std::cerr << "error recovery: skipping " << (*t)->lexeme ()
+ // << std::endl;
+
+ if ((*t)->lexeme () == "{") balance++;
+ else if ((*t)->lexeme () == "}")
+ {
+ if (balance > 0) balance--;
+ else
+ {
+ t++;
+ if ((*t)->lexeme () == ";") t++;
+
+ int length = t - s.first;
+ s.first += length;
+ return RecoveryStatus (RecoveryStatus::accept, length);
+ }
+ }
+
+ if (balance == 0 && (*t)->lexeme () == ";")
+ {
+ int length = t - s.first + 1;
+ s.first += length;
+ return RecoveryStatus (RecoveryStatus::accept, length);
+ }
+ }
+
+ switch (e.descriptor->diagnostic_)
+ {
+ case Parsing::DiagnosticType::BEFORE:
+ {
+ Diagnostic::Error rec (
+ context_.get<fs::path> ("file-path").native_file_string (),
+ (*i)->line ());
+
+ rec << "before \'" << (*i)->lexeme () << "\': "
+ << "unable to recover from previous error: bailing out";
+
+ dout_ << rec;
+ break;
+ }
+ case Parsing::DiagnosticType::AFTER:
+ {
+ Diagnostic::Error rec (
+ context_.get<fs::path> ("file-path").native_file_string (),
+ (*i)->line ());
+
+ rec << "after \'" << (*i)->lexeme () << "\': "
+ << "unable to recover from previous error: bailing out";
+
+ dout_ << rec;
+ break;
+ }
+ case Parsing::DiagnosticType::NONE:
+ {
+ }
+ }
+
+ e.descriptor->recovery_ = Parsing::RecoveryMethod::BAIL_OUT;
+ e.descriptor->diagnostic_ = Parsing::DiagnosticType::NONE;
+
+ e.descriptor->action_one_.reset ();
+ e.descriptor->action_two_.reset ();
+
+ // return RecoveryStatus (RecoveryStatus::rethrow);
+ throw e;
+ }
+ case Parsing::RecoveryMethod::NONE:
+ default:
+ {
+ int length = e.where - s.first;
+ s.first += length;
+ return RecoveryStatus (RecoveryStatus::accept, length);
+ }
+ case Parsing::RecoveryMethod::BAIL_OUT:
+ {
+ e.descriptor->recovery_ = Parsing::RecoveryMethod::BAIL_OUT;
+ e.descriptor->diagnostic_ = Parsing::DiagnosticType::NONE;
+
+ e.descriptor->action_one_.reset ();
+ e.descriptor->action_two_.reset ();
+
+ // return RecoveryStatus (RecoveryStatus::rethrow);
+ throw e;
+ }
+ }
+ }
+
+ Diagnostic::Stream& dout_;
+ CompilerElements::Context& context_;
+ };
+
+ struct RootErrorHandler
+ {
+ RecoveryStatus
+ operator() (Parsing::Scanner const&, Parsing::Error&) const
+ {
+ return RecoveryStatus (RecoveryStatus::fail);
+ }
+ };
+
+ struct handler
+ {
+ template<typename Object>
+ handler (Object& obj,
+ void (Object::*action_one)())
+ : action_one_ (Parsing::call_thunk (obj, action_one)),
+ action_two_ (0)
+ {
+ }
+
+ template<typename Object>
+ handler (Object& obj,
+ void (Object::*action_one)(),
+ void (Object::*action_two)())
+ : action_one_ (Parsing::call_thunk (obj, action_one)),
+ action_two_ (Parsing::call_thunk (obj, action_two))
+ {
+ }
+
+ handler (handler const& h)
+ : action_one_ (h.action_one_.get () ? h.action_one_->clone () : 0),
+ action_two_ (h.action_two_.get () ? h.action_two_->clone () : 0)
+ {
+ }
+
+ RecoveryStatus
+ operator() (Parsing::Scanner const&, Parsing::Error e) const
+ {
+ /*
+ assert (
+ e.descriptor->diagnostic_ == Parsing::DiagnosticType::NONE &&
+ e.descriptor->recovery_ == Parsing::RecoveryMethod::BAIL_OUT
+ );
+ */
+
+ if (action_one_.get ()) action_one_->execute ();
+ if (action_two_.get ()) action_two_->execute ();
+
+ // return RecoveryStatus (RecoveryStatus::rethrow);
+ throw e;
+ }
+
+ std::auto_ptr<Parsing::Thunk> action_one_;
+ std::auto_ptr<Parsing::Thunk> action_two_;
+ };
+
+ Guard guard;
+ Guard hood;
+ Assertion assertion;
+ ErrorHandler error_handler;
+ RootErrorHandler root_error_handler;
+
+ // End of stream parser.
+ //
+ EndOfStreamParser EOS;
+
+ // Keyword parsers (alphabetic order).
+ //
+ KeywordParser ABSTRACT;
+ KeywordParser ATTRIBUTE;
+ KeywordParser BINCLUDE;
+ KeywordParser CASE;
+ KeywordParser CONST;
+ KeywordParser CUSTOM;
+ KeywordParser DEFAULT;
+ KeywordParser ENUM;
+ KeywordParser EXCEPTION;
+ KeywordParser FACTORY;
+ KeywordParser GETRAISES;
+ KeywordParser IN;
+ KeywordParser INOUT;
+ KeywordParser INTERFACE;
+ KeywordParser QINCLUDE;
+ KeywordParser LOCAL;
+ KeywordParser MODULE;
+ KeywordParser NATIVE;
+ KeywordParser ONEWAY;
+ KeywordParser OUT;
+ KeywordParser PRIVATE;
+ KeywordParser PUBLIC;
+ KeywordParser RAISES;
+ KeywordParser READONLY;
+ KeywordParser SEQUENCE;
+ KeywordParser SETRAISES;
+ KeywordParser STRING;
+ KeywordParser STRUCT;
+ KeywordParser SUPPORTS;
+ KeywordParser SWITCH;
+ KeywordParser TRUNCATABLE;
+ KeywordParser TYPEDEF;
+ KeywordParser TYPEID;
+ KeywordParser TYPEPREFIX;
+ KeywordParser UNION;
+ KeywordParser VALUETYPE;
+ KeywordParser WSTRING;
+
+ // Punctuation parsers (alphabetic group order).
+ //
+ PunctuationParser COLON;
+ PunctuationParser COMMA;
+ PunctuationParser LCBRACE;
+ PunctuationParser RCBRACE;
+ PunctuationParser LSBRACE;
+ PunctuationParser RSBRACE;
+ PunctuationParser LPAREN;
+ PunctuationParser RPAREN;
+ PunctuationParser LT;
+ PunctuationParser GT;
+ PunctuationParser SEMI;
+
+ OperatorParser ADD;
+ OperatorParser AND;
+ OperatorParser COM;
+ OperatorParser DIV;
+ OperatorParser EQ;
+ OperatorParser LSH;
+ OperatorParser MUL;
+ OperatorParser OR;
+ OperatorParser REM;
+ OperatorParser SUB;
+ OperatorParser RSH;
+ OperatorParser XOR;
+
+
+ IdentifierParser identifier;
+ SimpleIdentifierParser simple_identifier;
+
+ Parsing::BooleanLiteralParser boolean_literal;
+ Parsing::CharacterLiteralParser character_literal;
+ Parsing::IntegerLiteralParser integer_literal;
+ Parsing::StringLiteralParser string_literal;
+
+ //
+ // Language
+ //
+ typedef
+ Parsing::Rule
+ Rule;
+
+ Rule language;
+ Rule import;
+ Rule declaration;
+ Rule extension;
+
+ Rule include_decl;
+
+ Rule type_decl;
+
+ Rule module_decl;
+
+ Rule const_decl;
+ Rule const_expr;
+
+ Rule enum_decl;
+ Rule enumerator_decl;
+
+ Rule boolean_const_expr;
+ Rule character_const_expr;
+ Rule numeric_const_expr;
+
+ Rule numeric_or_expr;
+ Rule numeric_xor_expr;
+ Rule numeric_and_expr;
+ Rule numeric_shift_expr;
+ Rule numeric_add_expr;
+ Rule numeric_mul_expr;
+ Rule numeric_unary_expr;
+ Rule numeric_primary_expr;
+
+ Rule string_const_expr;
+
+ Rule abstract_type_decl;
+ Rule local_type_decl;
+
+ Rule abstract_interface_decl;
+ Rule local_interface_decl;
+ Rule unconstrained_interface_decl;
+ Rule interface_inheritance_spec;
+ Rule interface_body;
+
+ Rule attribute_decl;
+ Rule attribute_ro_decl_trailer;
+ Rule attribute_rw_decl_trailer;
+ Rule attribute_ro_raises_spec;
+ Rule attribute_rw_raises_spec;
+ Rule attribute_get_raises_list;
+ Rule attribute_set_raises_list;
+
+ Rule exception_decl;
+ Rule exception_body;
+
+ Rule direction_specifier;
+
+ Rule member_decl;
+
+ Rule native_decl;
+
+ Rule operation_decl;
+ Rule operation_decl_trailer;
+ Rule operation_parameter_list;
+ Rule operation_parameter;
+ Rule operation_raises_list;
+
+ Rule struct_decl;
+ Rule struct_body;
+
+ Rule typedef_decl;
+ Rule typedef_declarator;
+ Rule typedef_type_spec;
+
+ Rule type_id_decl;
+ Rule type_prefix_decl;
+
+ Rule union_decl;
+ Rule union_def_trailer;
+ Rule union_body;
+ Rule union_case_label;
+
+ Rule abstract_value_type_decl;
+ Rule concrete_value_type_decl;
+ Rule value_type_inheritance_spec;
+ Rule value_type_supports_spec;
+ Rule value_type_body;
+
+ Rule value_type_factory_decl;
+ Rule value_type_factory_parameter_list;
+ Rule value_type_factory_parameter;
+ Rule value_type_factory_raises_list;
+
+ Rule value_type_member_decl;
+ public:
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f);
+
+ virtual Rule const&
+ start() const
+ {
+ return language;
+ }
+
+ protected:
+
+ //
+ // Semantic actions
+ //
+ typedef
+ NoArgAction<SemanticAction::Scope>
+ ScopeAction;
+
+
+ // Attribute
+ //
+ //
+ NoArgAction<SemanticAction::Attribute>
+ act_attribute_begin_ro, act_attribute_begin_rw;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Attribute>
+ act_attribute_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Attribute>
+ act_attribute_name;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Attribute>
+ act_attribute_get_raises;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Attribute>
+ act_attribute_set_raises;
+
+ NoArgAction<SemanticAction::Attribute>
+ act_attribute_end;
+
+ // Const
+ //
+ TwoArgAction<IdentifierPtr, SimpleIdentifierPtr, SemanticAction::Const>
+ act_const_begin;
+
+ NoArgAction<SemanticAction::Const>
+ act_const_expr;
+
+
+ // Enum
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Enum>
+ act_enum_begin, act_enum_enumerator;
+
+ NoArgAction<SemanticAction::Enum>
+ act_enum_end;
+
+ // Expression
+ //
+ NoArgAction<SemanticAction::NumericExpression>
+ act_const_expr_flush;
+
+ OneArgAction<IdentifierPtr, SemanticAction::NumericExpression>
+ act_numeric_expression_const;
+
+ OneArgAction<IntegerLiteralPtr, SemanticAction::NumericExpression>
+ act_numeric_expression_integer_literal;
+
+ OneArgAction<OperatorPtr, SemanticAction::NumericExpression>
+ act_numeric_expression_pre;
+
+ NoArgAction<SemanticAction::NumericExpression>
+ act_numeric_expression_pos,
+ act_numeric_expression_neg,
+ act_numeric_expression_com,
+ act_numeric_expression_mul,
+ act_numeric_expression_div,
+ act_numeric_expression_rem,
+ act_numeric_expression_add,
+ act_numeric_expression_sub,
+ act_numeric_expression_rsh,
+ act_numeric_expression_lsh,
+ act_numeric_expression_and,
+ act_numeric_expression_xor,
+ act_numeric_expression_or;
+
+
+ // Exception
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Exception>
+ act_exception_begin;
+
+ ScopeAction
+ act_exception_open_scope;
+
+ ScopeAction
+ act_exception_close_scope;
+
+ NoArgAction<SemanticAction::Exception>
+ act_exception_end;
+
+
+ // Include
+ //
+ //
+ OneArgAction<StringLiteralPtr, SemanticAction::Include>
+ act_include_quote, act_include_bracket;
+
+ NoArgAction<SemanticAction::Include>
+ act_include_end;
+
+ // Interface
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Interface>
+ act_interface_begin_abstract_def,
+ act_interface_begin_abstract_fwd,
+ act_interface_begin_local_def,
+ act_interface_begin_local_fwd,
+ act_interface_begin_unconstrained_def,
+ act_interface_begin_unconstrained_fwd;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Interface>
+ act_interface_inherits;
+
+ ScopeAction
+ act_interface_open_scope;
+
+ ScopeAction
+ act_interface_close_scope;
+
+ NoArgAction<SemanticAction::Interface>
+ act_interface_end;
+
+
+ // Member
+ //
+ //
+ OneArgAction<IdentifierPtr, SemanticAction::Member>
+ act_member_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Member>
+ act_member_name;
+
+ NoArgAction<SemanticAction::Member>
+ act_member_end;
+
+
+ // Module
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Module>
+ act_module_begin;
+
+ ScopeAction
+ act_module_open_scope;
+
+ ScopeAction
+ act_module_close_scope;
+
+ NoArgAction<SemanticAction::Module>
+ act_module_end;
+
+ // Native
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Native>
+ act_native_name;
+
+ NoArgAction<SemanticAction::Native>
+ act_native_end;
+
+
+ // Operation
+ //
+ //
+ NoArgAction<SemanticAction::Operation>
+ act_operation_one_way, act_operation_two_way;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Operation>
+ act_operation_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Operation>
+ act_operation_name;
+
+ void
+ act_operation_parameter_core (Iterator begin, Iterator) const
+ {
+ SemanticAction::Operation::Direction::Value d;
+
+ if((*begin)->lexeme () == "in")
+ {
+ d = SemanticAction::Operation::Direction::in;
+ }
+ else if((*begin)->lexeme () == "out")
+ {
+ d = SemanticAction::Operation::Direction::out;
+ }
+ else
+ {
+ d = SemanticAction::Operation::Direction::inout;
+ }
+
+ begin++;
+
+ actions_.operation ().parameter (
+ d,
+ ReferenceCounting::strict_cast<Identifier>(*begin),
+ ReferenceCounting::strict_cast<SimpleIdentifier>(*(begin + 1)));
+ }
+
+ ActionExecutor<Parser>
+ act_operation_parameter;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Operation>
+ act_operation_raises;
+
+
+ // Struct
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Struct>
+ act_struct_begin_def;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Struct>
+ act_struct_begin_fwd;
+
+ ScopeAction
+ act_struct_open_scope;
+
+ ScopeAction
+ act_struct_close_scope;
+
+ NoArgAction<SemanticAction::Struct>
+ act_struct_end;
+
+
+ // Typedef
+ //
+ //
+ OneArgAction<KeywordPtr, SemanticAction::Typedef>
+ act_typedef_pre;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Typedef>
+ act_typedef_begin;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Typedef>
+ act_typedef_begin_unbounded_seq;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Typedef>
+ act_typedef_begin_bounded_seq;
+
+ NoArgAction<SemanticAction::Typedef>
+ act_typedef_begin_bounded_string;
+
+ NoArgAction<SemanticAction::Typedef>
+ act_typedef_begin_bounded_wstring;
+
+ NoArgAction<SemanticAction::Typedef>
+ act_typedef_begin_array;
+
+ NoArgAction<SemanticAction::Typedef>
+ act_typedef_bound;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Typedef>
+ act_typedef_declarator;
+
+ NoArgAction<SemanticAction::Typedef>
+ act_typedef_end;
+
+
+ // TypeId
+ //
+ //
+ TwoArgAction<IdentifierPtr,
+ StringLiteralPtr,
+ SemanticAction::TypeId>
+ act_type_id_begin;
+
+ NoArgAction<SemanticAction::TypeId>
+ act_type_id_end;
+
+
+ // TypePrefix
+ //
+ //
+ TwoArgAction<IdentifierPtr,
+ StringLiteralPtr,
+ SemanticAction::TypePrefix>
+ act_type_prefix_begin;
+
+ NoArgAction<SemanticAction::TypePrefix>
+ act_type_prefix_end;
+
+ // Union
+ //
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Union>
+ act_union_begin_def, act_union_begin_fwd;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Union>
+ act_union_type;
+
+ ScopeAction
+ act_union_open_scope;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Union>
+ act_union_member_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Union>
+ act_union_member_name;
+
+ ScopeAction
+ act_union_close_scope;
+
+ NoArgAction<SemanticAction::Union>
+ act_union_end;
+
+
+ // ValueType
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::ValueType>
+ act_value_type_begin_abstract_def,
+ act_value_type_begin_abstract_fwd,
+ act_value_type_begin_concrete_def,
+ act_value_type_begin_concrete_fwd;
+
+ OneArgAction<IdentifierPtr, SemanticAction::ValueType>
+ act_value_type_inherits, act_value_type_supports;
+
+ ScopeAction
+ act_value_type_open_scope;
+
+ ScopeAction
+ act_value_type_close_scope;
+
+ NoArgAction<SemanticAction::ValueType>
+ act_value_type_end;
+
+
+ // ValueTypeFactory
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::ValueTypeFactory>
+ act_value_type_factory_name;
+
+ TwoArgAction<IdentifierPtr,
+ SimpleIdentifierPtr,
+ SemanticAction::ValueTypeFactory>
+ act_value_type_factory_parameter;
+
+ OneArgAction<IdentifierPtr, SemanticAction::ValueTypeFactory>
+ act_value_type_factory_raises;
+
+
+ // ValueTypeMember
+ //
+ NoArgAction<SemanticAction::ValueTypeMember>
+ act_value_type_member_begin_private;
+
+ NoArgAction<SemanticAction::ValueTypeMember>
+ act_value_type_member_begin_public;
+
+ OneArgAction<IdentifierPtr, SemanticAction::ValueTypeMember>
+ act_value_type_member_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::ValueTypeMember>
+ act_value_type_member_name;
+
+ NoArgAction<SemanticAction::ValueTypeMember>
+ act_value_type_member_end;
+
+ };
+ }
+}
+
+#endif // CCF_IDL2_PARSER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Parsing/Action.hpp b/modules/CIAO/CCF/CCF/IDL2/Parsing/Action.hpp
new file mode 100644
index 00000000000..2737abafb58
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Parsing/Action.hpp
@@ -0,0 +1,142 @@
+// file : CCF/IDL2/Parsing/Action.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_PARSING_ACTION_HPP
+#define CCF_IDL2_PARSING_ACTION_HPP
+
+#include "CCF/IDL2/Parsing/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Parsing
+ {
+ //
+ //
+ //
+ template <typename Obj>
+ class ActionExecutor
+ {
+ public:
+
+ typedef
+ void (Obj::*SemanticAction)(Iterator, Iterator) const;
+
+ ActionExecutor (Obj const* obj, SemanticAction action)
+ : obj_ (obj), action_ (action)
+ {
+ }
+
+ void operator () (Iterator begin, Iterator end) const
+ {
+ (obj_->*action_) (begin, end);
+ }
+
+ private:
+ Obj const* obj_;
+ SemanticAction action_;
+ };
+
+
+ //
+ //
+ //
+ template <typename Obj>
+ class NoArgAction
+ {
+ public:
+
+ typedef
+ void (Obj::*Action)();
+
+ NoArgAction (Obj& obj, Action action)
+ : obj_ (obj), action_ (action)
+ {
+ }
+
+ void operator () (Iterator, Iterator) const
+ {
+ (obj_.*action_) ();
+ }
+
+ private:
+ Obj& obj_;
+ Action action_;
+ };
+
+
+ //@@ Should prbably use Type instead of TypePtr
+ //
+ //
+ //
+ template <typename TypePtr, typename Obj>
+ class OneArgAction
+ {
+ public:
+
+ typedef
+ void (Obj::*Action)(TypePtr const&);
+
+ OneArgAction (Obj& obj, Action action)
+ : obj_ (obj), action_ (action)
+ {
+ }
+
+ void operator () (Iterator begin, Iterator end) const
+ {
+ if (end - begin != 1 )
+ {
+ //@@ throw
+ }
+
+ //@@ error handling if the strict_cast fails
+ (obj_.*action_) (
+ ReferenceCounting::strict_cast<typename TypePtr::Type> (*begin));
+ }
+
+ private:
+ Obj& obj_;
+ Action action_;
+ };
+
+
+ //
+ //
+ //
+ template <typename Arg1, typename Arg2, typename Obj>
+ class TwoArgAction
+ {
+ public:
+
+ typedef
+ void (Obj::*Action)(Arg1 const&, Arg2 const&);
+
+ TwoArgAction (Obj& obj, Action action)
+ : obj_ (obj), action_ (action)
+ {
+ }
+
+ void operator () (Iterator begin, Iterator end) const
+ {
+ if (end - begin != 2 )
+ {
+ //@@ throw
+ }
+
+ //@@ error handling if strict_cast fails
+ (obj_.*action_) (
+ ReferenceCounting::strict_cast<typename Arg1::Type> (*begin),
+ ReferenceCounting::strict_cast<typename Arg2::Type> (*(begin + 1)));
+ }
+
+ private:
+ Obj& obj_;
+ Action action_;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_PARSING_ACTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Parsing/Elements.hpp b/modules/CIAO/CCF/CCF/IDL2/Parsing/Elements.hpp
new file mode 100644
index 00000000000..88e091d8845
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Parsing/Elements.hpp
@@ -0,0 +1,168 @@
+// file : CCF/IDL2/Parsing/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_PARSING_ELEMENTS_HPP
+#define CCF_IDL2_PARSING_ELEMENTS_HPP
+
+#include <string>
+
+#include <boost/spirit.hpp>
+
+#include "CCF/IDL2/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Parsing
+ {
+ using namespace boost::spirit;
+
+ typedef
+ TokenList::iterator
+ Iterator;
+
+ typedef
+ scanner<Iterator, scanner_policies<> >
+ Scanner;
+
+ typedef
+ rule<Scanner>
+ Rule;
+
+
+ //
+ //
+ //
+ template <typename Type>
+ struct IdentityParser : public parser <IdentityParser<Type> >
+ {
+ typedef
+ IdentityParser
+ self_t;
+
+ IdentityParser (std::string lexeme)
+ : lexeme_ (lexeme)
+ {
+ }
+
+ typename parser_result<self_t, Scanner>::type
+ parse(Scanner const& scan) const
+ {
+ if (!scan.at_end())
+ {
+ TokenPtr t = *scan;
+
+ if(ReferenceCounting::strict_cast<Type> (t) != 0 &&
+ lexeme_ == t->lexeme ())
+ {
+ Iterator save(scan.first);
+ ++scan;
+ return scan.create_match(1, t, save, scan.first);
+ }
+ }
+ return scan.no_match();
+ }
+
+ private:
+ std::string lexeme_;
+ };
+
+ typedef
+ IdentityParser<Keyword>
+ KeywordParser;
+
+ typedef
+ IdentityParser<Punctuation>
+ PunctuationParser;
+
+ typedef
+ IdentityParser<Operator>
+ OperatorParser;
+
+ //
+ //
+ //
+ template <typename Type>
+ struct TypeParser : public parser <TypeParser<Type> >
+ {
+ typedef
+ TypeParser
+ self_t;
+
+ typename parser_result<self_t, Scanner>::type
+ parse(Scanner const& scan) const
+ {
+ if (!scan.at_end())
+ {
+ TokenPtr t = *scan;
+
+ if(ReferenceCounting::strict_cast<Type> (t) != 0)
+ {
+ Iterator save(scan.first);
+ ++scan;
+ return scan.create_match(1, t, save, scan.first);
+ }
+ }
+ return scan.no_match();
+ }
+ };
+
+ typedef
+ TypeParser<EndOfStream>
+ EndOfStreamParser;
+
+ typedef
+ TypeParser<Identifier>
+ IdentifierParser;
+
+ typedef
+ TypeParser<SimpleIdentifier>
+ SimpleIdentifierParser;
+
+ typedef
+ TypeParser<ScopedIdentifier>
+ ScopedIdentifierParser;
+
+ // Literal parsers.
+ //
+
+ typedef
+ TypeParser<BooleanLiteral>
+ BooleanLiteralParser;
+
+ typedef
+ TypeParser<CharacterLiteral>
+ CharacterLiteralParser;
+
+ typedef
+ TypeParser<IntegerLiteral>
+ IntegerLiteralParser;
+
+ typedef
+ TypeParser<StringLiteral>
+ StringLiteralParser;
+
+ //
+ //
+ //
+ inline bool
+ parse (Iterator const& first_,
+ Iterator const& last,
+ Rule const& rule)
+ {
+ Iterator first = first_;
+ Scanner scan(first, last);
+ match<nil_t> hit = rule.parse(scan);
+
+ bool result = parse_info<Iterator>(
+ first, hit, hit && (first == last), hit.length()).full;
+
+ return result;
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_PARSING_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Parsing/Recovery.hpp b/modules/CIAO/CCF/CCF/IDL2/Parsing/Recovery.hpp
new file mode 100644
index 00000000000..d8b3739b335
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Parsing/Recovery.hpp
@@ -0,0 +1,325 @@
+// file : CCF/IDL2/Parsing/Recovery.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_PARSING_RECOVERY_HPP
+#define CCF_IDL2_PARSING_RECOVERY_HPP
+
+#include <memory>
+
+#include "CCF/CompilerElements/ReferenceCounting.hpp"
+#include "CCF/IDL2/Parsing/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Parsing
+ {
+
+ //
+ //
+ //
+ struct RecoveryMethod
+ {
+ enum Value
+ {
+ NONE,
+ STANDARD,
+ BAIL_OUT
+ };
+ };
+
+
+ //
+ //
+ //
+ struct DiagnosticType
+ {
+ enum Value
+ {
+ BEFORE,
+ AFTER,
+ NONE
+ };
+ };
+
+
+ //
+ //
+ //
+ class Thunk
+ {
+ public:
+ virtual
+ ~Thunk () {}
+
+ virtual void
+ execute () = 0;
+
+ virtual Thunk*
+ clone () const = 0;
+ };
+
+
+ //
+ //
+ //
+ template<typename Object>
+ class ThunkImpl : public Thunk
+ {
+ public:
+ typedef void (Object::*Func)();
+
+ ThunkImpl (Object& obj, Func func)
+ : obj_(obj),
+ func_ (func)
+ {
+ }
+
+ virtual void
+ execute ()
+ {
+ (obj_.*func_)();
+ }
+
+ virtual Thunk*
+ clone () const
+ {
+ return new ThunkImpl<Object> (obj_, func_);
+ }
+
+ private:
+ Object& obj_;
+ Func func_;
+ };
+
+ //
+ //
+ //
+ template<typename Object>
+ Thunk*
+ call_thunk (Object& obj, void (Object::*func)())
+ {
+ return new ThunkImpl<Object> (obj, func);
+ }
+
+
+ //
+ //
+ //
+ struct RecoveryDescriptor :
+ public virtual ReferenceCounting::DefaultImpl <>
+ {
+ virtual ~RecoveryDescriptor () throw () {}
+
+ RecoveryDescriptor (std::string d,
+ RecoveryMethod::Value recovery,
+ DiagnosticType::Value diagnostic)
+ : action_one_ (0),
+ action_two_ (0),
+ description_ (d),
+ recovery_ (recovery),
+ diagnostic_ (diagnostic)
+ {
+ }
+
+ template<typename Object>
+ RecoveryDescriptor (std::string d,
+ RecoveryMethod::Value recovery,
+ DiagnosticType::Value diagnostic,
+ Object& obj,
+ void (Object::*action_one)())
+ : action_one_ (call_thunk (obj, action_one)),
+ action_two_ (0),
+ description_ (d),
+ recovery_ (recovery),
+ diagnostic_ (diagnostic)
+ {
+ }
+
+ template<typename Object>
+ RecoveryDescriptor (std::string d,
+ RecoveryMethod::Value recovery,
+ DiagnosticType::Value diagnostic,
+ Object& obj,
+ void (Object::*action_one)(),
+ void (Object::*action_two)())
+ : action_one_ (call_thunk (obj, action_one)),
+ action_two_ (call_thunk (obj, action_two)),
+ description_ (d),
+ recovery_ (recovery),
+ diagnostic_ (diagnostic)
+ {
+ }
+
+ RecoveryDescriptor (RecoveryDescriptor const& rd)
+ : action_one_ (rd.action_one_.get () ? rd.action_one_->clone () : 0),
+ action_two_ (rd.action_two_.get () ? rd.action_two_->clone () : 0),
+ description_ (rd.description_),
+ recovery_ (rd.recovery_),
+ diagnostic_ (rd.diagnostic_)
+ {
+ }
+
+
+ std::auto_ptr<Thunk> action_one_;
+ std::auto_ptr<Thunk> action_two_;
+ std::string description_;
+ RecoveryMethod::Value recovery_;
+ DiagnosticType::Value diagnostic_;
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<RecoveryDescriptor>
+ RecoveryDescriptorPtr;
+
+
+ // I have to use a pointer to RecoveryDescriptor instead of
+ // just RecoveryDescriptor to subvert constness of descriptor
+ // member in spirit::parser_error.
+ //
+ //
+
+ typedef
+ parser_error<RecoveryDescriptorPtr, Iterator>
+ Error;
+
+
+ //
+ //
+ //
+ struct Assertion
+ {
+ typedef
+ assertion<RecoveryDescriptorPtr>
+ AssertionImpl;
+
+ AssertionImpl
+ operator () (RecoveryMethod::Value recovery = RecoveryMethod::NONE)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor ("", recovery, DiagnosticType::NONE)));
+ }
+
+ AssertionImpl
+ operator () (std::string d,
+ RecoveryMethod::Value recovery = RecoveryMethod::STANDARD,
+ DiagnosticType::Value diagnostic = DiagnosticType::AFTER)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (d, recovery, diagnostic)));
+ }
+
+ AssertionImpl
+ operator () (std::string d,
+ DiagnosticType::Value diagnostic)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ d, RecoveryMethod::STANDARD, diagnostic)));
+ }
+
+ template<typename Object>
+ AssertionImpl
+ operator () (std::string d,
+ Object& obj,
+ void (Object::*action_one)(),
+ RecoveryMethod::Value recovery = RecoveryMethod::STANDARD,
+ DiagnosticType::Value diagnostic = DiagnosticType::AFTER)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ d, recovery, diagnostic, obj, action_one)));
+ }
+
+ template<typename Object>
+ AssertionImpl
+ operator () (std::string d,
+ Object& obj,
+ void (Object::*action_one)(),
+ DiagnosticType::Value diagnostic)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ d, RecoveryMethod::STANDARD, diagnostic, obj, action_one)));
+ }
+
+ template<typename Object>
+ AssertionImpl
+ operator () (Object& obj,
+ void (Object::*action_one)(),
+ RecoveryMethod::Value recovery = RecoveryMethod::BAIL_OUT)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ "", recovery, DiagnosticType::NONE, obj, action_one)));
+ }
+
+ template<typename Object>
+ AssertionImpl
+ operator () (std::string d,
+ Object& obj,
+ void (Object::*action_one)(),
+ void (Object::*action_two)(),
+ RecoveryMethod::Value recovery = RecoveryMethod::STANDARD,
+ DiagnosticType::Value diagnostic = DiagnosticType::AFTER)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ d, recovery, diagnostic, obj, action_one, action_two)));
+ }
+
+ template<typename Object>
+ AssertionImpl
+ operator () (std::string d,
+ Object& obj,
+ void (Object::*action_one)(),
+ void (Object::*action_two)(),
+ DiagnosticType::Value diagnostic)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor (
+ d, RecoveryMethod::STANDARD, diagnostic, obj, action_one, action_two)));
+ }
+
+
+ template<typename Object>
+ AssertionImpl
+ operator () (Object& obj,
+ void (Object::*action_one)(),
+ void (Object::*action_two)(),
+ RecoveryMethod::Value recovery = RecoveryMethod::BAIL_OUT)
+ {
+ return AssertionImpl (
+ RecoveryDescriptorPtr (
+ new RecoveryDescriptor ("",
+ recovery,
+ DiagnosticType::NONE,
+ obj,
+ action_one,
+ action_two)));
+ }
+
+ };
+
+ typedef
+ error_status<>
+ RecoveryStatus;
+
+ typedef
+ guard<RecoveryDescriptorPtr>
+ Guard;
+ }
+ }
+}
+
+#endif // CCF_IDL2_PARSING_RECOVERY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction.hpp
new file mode 100644
index 00000000000..7311cf90910
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL2/SemanticAction.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+#include "CCF/IDL2/SemanticAction/Factory.hpp"
+
+#include "CCF/IDL2/SemanticAction/Attribute.hpp"
+#include "CCF/IDL2/SemanticAction/Const.hpp"
+#include "CCF/IDL2/SemanticAction/Enum.hpp"
+#include "CCF/IDL2/SemanticAction/Exception.hpp"
+#include "CCF/IDL2/SemanticAction/Include.hpp"
+#include "CCF/IDL2/SemanticAction/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Member.hpp"
+#include "CCF/IDL2/SemanticAction/Module.hpp"
+#include "CCF/IDL2/SemanticAction/Native.hpp"
+#include "CCF/IDL2/SemanticAction/NumericExpression.hpp"
+#include "CCF/IDL2/SemanticAction/Operation.hpp"
+#include "CCF/IDL2/SemanticAction/Struct.hpp"
+#include "CCF/IDL2/SemanticAction/Typedef.hpp"
+#include "CCF/IDL2/SemanticAction/TypeId.hpp"
+#include "CCF/IDL2/SemanticAction/Union.hpp"
+#include "CCF/IDL2/SemanticAction/ValueType.hpp"
+#include "CCF/IDL2/SemanticAction/ValueTypeFactory.hpp"
+#include "CCF/IDL2/SemanticAction/ValueTypeMember.hpp"
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Attribute.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Attribute.hpp
new file mode 100644
index 00000000000..d113d9136cf
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Attribute.hpp
@@ -0,0 +1,43 @@
+// file : CCF/IDL2/SemanticAction/Attribute.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_ATTRIBUTE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_ATTRIBUTE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Attribute
+ {
+ virtual void
+ begin_ro () = 0;
+
+ virtual void
+ begin_rw () = 0;
+
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ get_raises (IdentifierPtr const& id) = 0;
+
+ virtual void
+ set_raises (IdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_ATTRIBUTE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Const.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Const.hpp
new file mode 100644
index 00000000000..dcb7c0054ac
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Const.hpp
@@ -0,0 +1,29 @@
+// file : CCF/IDL2/SemanticAction/Const.hpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_CONST_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_CONST_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Const
+ {
+ virtual void
+ begin (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name) = 0;
+
+ virtual void
+ expr () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_CONST_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Elements.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Elements.hpp
new file mode 100644
index 00000000000..18687171a78
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Elements.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL2/SemanticAction/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_ELEMENTS_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_ELEMENTS_HPP
+
+#include "CCF/IDL2/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Scope
+ {
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Enum.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Enum.hpp
new file mode 100644
index 00000000000..c0822d44470
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Enum.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL2/SemanticAction/Enum.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_ENUM_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_ENUM_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Enum
+ {
+ virtual void
+ begin (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ enumerator (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_ENUM_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Exception.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Exception.hpp
new file mode 100644
index 00000000000..02230082b49
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Exception.hpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/SemanticAction/Exception.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_EXCEPTION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_EXCEPTION_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Exception : Scope
+ {
+ virtual void
+ begin (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_EXCEPTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp
new file mode 100644
index 00000000000..2f84d760710
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Factory.hpp
@@ -0,0 +1,104 @@
+// file : CCF/IDL2/SemanticAction/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_FACTORY_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_FACTORY_HPP
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Attribute;
+ struct Const;
+ struct Enum;
+ struct Exception;
+ struct Include;
+ struct Interface;
+ struct Member;
+ struct Module;
+ struct Native;
+ struct NumericExpression;
+ struct Operation;
+ struct Struct;
+ struct Typedef;
+ struct TypeId;
+ struct TypePrefix;
+ struct Union;
+ struct ValueType;
+ struct ValueTypeFactory;
+ struct ValueTypeMember;
+
+ //
+ //
+ //
+ struct Factory
+ {
+ virtual
+ ~Factory () {}
+
+ virtual Attribute&
+ attribute () = 0;
+
+ virtual Const&
+ const_ () = 0;
+
+ virtual SemanticAction::Enum&
+ enum_ () = 0;
+
+ virtual SemanticAction::Exception&
+ exception () = 0;
+
+ virtual Include&
+ include () = 0;
+
+ virtual Interface&
+ interface () = 0;
+
+ virtual Member&
+ member () = 0;
+
+ virtual Module&
+ module () = 0;
+
+ virtual Native&
+ native () = 0;
+
+ virtual NumericExpression&
+ numeric_expression () = 0;
+
+ virtual Operation&
+ operation () = 0;
+
+ virtual Struct&
+ struct_ () = 0;
+
+ virtual Typedef&
+ typedef_ () = 0;
+
+ virtual TypeId&
+ type_id () = 0;
+
+ virtual TypePrefix&
+ type_prefix () = 0;
+
+ virtual Union&
+ union_ () = 0;
+
+ virtual ValueType&
+ value_type () = 0;
+
+ virtual ValueTypeFactory&
+ value_type_factory () = 0;
+
+ virtual ValueTypeMember&
+ value_type_member () = 0;
+ };
+
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp
new file mode 100644
index 00000000000..dde00c85988
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp
@@ -0,0 +1,205 @@
+// file : CCF/IDL2/SemanticAction/Impl/Attribute.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Attribute::
+ Attribute (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Attribute::
+ begin_ro ()
+ {
+ if (ctx.trace ()) cerr << "readonly attribute" << endl;
+
+ readonly_ = true;
+
+
+ }
+
+ void Attribute::
+ begin_rw ()
+ {
+ if (ctx.trace ()) cerr << "readwrite attribute" << endl;
+
+ readonly_ = false;
+ }
+
+ void Attribute::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ type_ = 0;
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<Type> (from, name, Flags::complete);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid attribute declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+ cerr << "using non-type as an attribute type is illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void Attribute::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << id << endl;
+
+ if (type_ != 0)
+ {
+ if (readonly_)
+ a_ = &ctx.tu ().new_node<ReadAttribute> (
+ ctx.file (), id->line ());
+ else
+ a_ = &ctx.tu ().new_node<ReadWriteAttribute> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Belongs> (*a_, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *a_, id->lexeme ());
+ }
+ }
+
+ void Attribute::
+ get_raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "get-raise " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<GetRaises> (
+ dynamic_cast<ReadAttribute&> (*a_), e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+
+ void Attribute::
+ set_raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "set-raise " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<SetRaises> (
+ dynamic_cast<WriteAttribute&> (*a_), e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+
+ void Attribute::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp
new file mode 100644
index 00000000000..88bc8e5016a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp
@@ -0,0 +1,55 @@
+// file : CCF/IDL2/SemanticAction/Impl/Attribute.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_ATTRIBUTE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_ATTRIBUTE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Attribute.hpp"
+#include "CCF/IDL2/SemanticAction/Attribute.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Attribute : SemanticAction::Attribute, Base
+ {
+ Attribute (Context& c);
+
+ virtual void
+ begin_ro ();
+
+ virtual void
+ begin_rw ();
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ get_raises (IdentifierPtr const& id);
+
+ virtual void
+ set_raises (IdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ bool readonly_;
+ SemanticGraph::Type* type_;
+ SemanticGraph::Attribute* a_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_ATTRIBUTE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp
new file mode 100644
index 00000000000..9685d0874ee
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp
@@ -0,0 +1,119 @@
+// file : CCF/IDL2/SemanticAction/Impl/Const.cpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Const.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Const::
+ Const (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Const::
+ begin (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ())
+ cerr << "const " << type_id << " " << name_id << endl;
+
+ const_ = 0;
+
+ SimpleName name (name_id->lexeme ());
+ Name type_name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, type_name, Flags::complete));
+
+ if (dynamic_cast<Octet*> (&t) ||
+ dynamic_cast<Short*> (&t) ||
+ dynamic_cast<UnsignedShort*> (&t) ||
+ dynamic_cast<Long*> (&t) ||
+ dynamic_cast<UnsignedLong*> (&t) ||
+ dynamic_cast<LongLong*> (&t) ||
+ dynamic_cast<UnsignedLongLong*> (&t))
+ {
+ // Integer constant.
+ //
+ const_ = &ctx.tu ().new_node<SemanticGraph::IntConst> (
+ ctx.file (), name_id->line ());
+
+ ctx.tu ().new_edge<Belongs> (*const_, t);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *const_, name);
+ }
+
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid const declaration" << endl;
+ throw;
+ }
+
+ //@@ I am not handling NotUnique here. For example if
+ // I provide module name as type then the compiler
+ // will ICE. Think about other places it may happen
+ // (attribute, value memebr, typeded, others?).
+ //
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << type_name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << type_name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as a const type is illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void Const::
+ expr ()
+ {
+ //@@ Need to check if int_exp_stack is empty.
+ //
+ if (const_ && ctx.int_exp_size () > 0)
+ {
+ IntExpression& expr (ctx.int_exp_pop ());
+
+ ctx.tu ().new_edge<Initializes> (expr, *const_);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp
new file mode 100644
index 00000000000..37ac3153d16
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp
@@ -0,0 +1,39 @@
+// file : CCF/IDL2/SemanticAction/Impl/Const.hpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_CONST_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_CONST_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticAction/Const.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Const : SemanticAction::Const, Base
+ {
+ Const (Context& c);
+
+ virtual void
+ begin (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name);
+
+ virtual void
+ expr ();
+
+ private:
+ SemanticGraph::Const* const_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_CONST_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp
new file mode 100644
index 00000000000..0076b9d757c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp
@@ -0,0 +1,133 @@
+// file : CCF/IDL2/SemanticAction/Impl/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace
+{
+ bool trace (false);
+}
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ // @@ Need pointer iterator adapter.
+
+ using namespace SemanticGraph;
+ using SemanticGraph::Scope;
+
+ Nameables
+ resolve (TranslationUnit& tu,
+ ScopedName const& from,
+ Name const& name) throw (NotFound)
+ {
+
+ if (trace) cerr << "resolve: starting resolution process for \'"
+ << name << "\' from \'" << from << "\'" << endl;
+
+ Nameables r;
+
+ // Check if name is already scoped.
+ //
+ if (name.scoped ())
+ {
+ r = tu.lookup (ScopedName (name));
+ }
+ else
+ {
+ // Obtain all nodes corresponding to this scope name.
+ //
+
+ for (ScopedName next (from);;)
+ {
+ Nameables scopes (tu.lookup (next));
+
+ // Lookup the name in each scope.
+ //
+ for (Nameables::const_iterator
+ i (scopes.begin ()), end (scopes.end ());
+ i != end; ++i)
+ {
+ if (Scope* s = dynamic_cast<Scope*> (*i))
+ {
+ s->lookup (name, r);
+ }
+ }
+
+ if (r.begin () != r.end () || next.simple ())
+ {
+ // Found something -or- at the root scope.
+ //
+ break;
+ }
+
+ next = ScopedName (next.begin (), next.end () - 1);
+ }
+ }
+
+ if (r.begin () == r.end ())
+ {
+ if (trace) cerr << "resolve: resolution process for \'"
+ << name << "\' from \'" << from << "\' failed."
+ << endl;
+
+ throw NotFound ();
+ }
+ else
+ {
+ if (trace) cerr << "resolve: resolution process for \'"
+ << name << "\' from \'" << from << "\' succeeded:"
+ << endl;
+
+ for (Nameables::const_iterator i (r.begin ()), end (r.end ());
+ i != end; ++i)
+ {
+ if (trace) cerr << "\t\'" << (**i).scoped_name () << "\'"
+ << endl;
+ }
+ }
+
+ return r;
+ }
+
+
+ // Lookup *all* scopes for a simple name
+ //
+ //
+ Nameable*
+ lookup (SemanticGraph::TranslationUnit& tu,
+ SemanticGraph::Scope& in,
+ SemanticGraph::SimpleName const& name) throw (NotUnique)
+ {
+ Nameables r;
+
+ Nameables scopes (tu.lookup (in.scoped_name ()));
+
+ for (Nameables::const_iterator
+ i (scopes.begin ()), end (scopes.end ());
+ i != end; ++i)
+ {
+ dynamic_cast<Scope&> (**i).lookup (name, r);
+ }
+
+ if (r.size () > 1) throw NotUnique ();
+
+ if (r.empty ()) return 0;
+
+ return *(r.begin ());
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp
new file mode 100644
index 00000000000..51da2657b5d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp
@@ -0,0 +1,320 @@
+// file : CCF/IDL2/SemanticAction/Impl/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+
+#include <stack>
+
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+/*
+ Design notes:
+
+ (1) I am using stack-based approach to handle cases like this:
+
+ struct A
+ {
+ struct B
+ {
+ struct C
+ {
+ ...
+ } c;
+
+ } b;
+ };
+
+ Even though you can't write the same let's say for interface
+ I am still using stack approach for consistency and possible
+ meta-coding.
+
+*/
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+
+ //
+ //
+ //
+ class Context
+ {
+ public:
+ Context (bool trace,
+ SemanticGraph::TranslationUnit& tu,
+ CompilerElements::Context& parsing_context)
+ : trace_ (trace),
+ tu_ (tu),
+ parsing_context_ (parsing_context)
+ {
+ }
+
+ bool
+ trace ()
+ {
+ return trace_;
+ }
+
+ SemanticGraph::TranslationUnit&
+ tu () const
+ {
+ return tu_;
+ }
+
+ SemanticGraph::Scope&
+ scope () const
+ {
+ return *scope_;
+ }
+
+ void
+ scope (SemanticGraph::Scope& scope)
+ {
+ scope_ = &scope;
+ }
+
+ SemanticGraph::TranslationRegion&
+ region () const
+ {
+ return *region_;
+ }
+
+ void
+ region (SemanticGraph::TranslationRegion& r)
+ {
+ region_ = &r;
+ }
+
+ CompilerElements::Context&
+ parsing_context () const
+ {
+ return parsing_context_;
+ }
+
+ SemanticGraph::Path const&
+ file () const
+ {
+ return parsing_context_.get<SemanticGraph::Path> ("file-path");
+ }
+
+ public:
+ void
+ int_exp_push (SemanticGraph::IntExpression& e)
+ {
+ int_exp_stack_.push (&e);
+ }
+
+ SemanticGraph::IntExpression&
+ int_exp_pop ()
+ {
+ SemanticGraph::IntExpression& e (*int_exp_stack_.top ());
+ int_exp_stack_.pop ();
+ return e;
+ }
+
+ std::size_t
+ int_exp_size ()
+ {
+ return int_exp_stack_.size ();
+ }
+
+ void
+ int_exp_flush ()
+ {
+ while (int_exp_stack_.size ())
+ int_exp_stack_.pop ();
+ }
+
+ private:
+ bool trace_;
+ SemanticGraph::TranslationUnit& tu_;
+ SemanticGraph::TranslationRegion* region_;
+ SemanticGraph::Scope* scope_;
+
+ CompilerElements::Context& parsing_context_;
+
+ std::stack<SemanticGraph::IntExpression*> int_exp_stack_;
+
+ private:
+ Context (Context const&);
+ void operator= (Context const&);
+ };
+
+
+ //
+ //
+ //
+ class Base
+ {
+ protected:
+ virtual
+ ~Base ()
+ {
+ }
+
+ Base (Context& c)
+ : ctx (c)
+ {
+ }
+
+ protected:
+
+ class Resolve {};
+
+ template <typename Id>
+ struct ExceptionTemplate : Resolve
+ {
+ explicit
+ ExceptionTemplate (SemanticGraph::ScopedName name)
+ : name_ (name)
+ {
+ }
+
+ SemanticGraph::ScopedName
+ name () const
+ {
+ return name_;
+ }
+
+ private:
+ SemanticGraph::ScopedName name_;
+ };
+
+
+ struct NotFound : Resolve {};
+
+ class WrongType_ {};
+ typedef ExceptionTemplate<WrongType_> WrongType;
+
+ class NotUnique : Resolve {};
+
+ class NotDefined_ {};
+ typedef ExceptionTemplate<NotDefined_> NotDefined;
+
+ class NotComplete_ {};
+ typedef ExceptionTemplate<NotComplete_> NotComplete;
+
+ struct Flags
+ {
+ enum Value
+ {
+ none = 0x00,
+ complete = 0x01,
+ defined = 0x02
+ };
+ };
+
+ template <typename T>
+ T&
+ resolve (SemanticGraph::ScopedName const& from,
+ SemanticGraph::Name const& name,
+ Flags::Value flags = Flags::none)
+ throw (NotFound, NotUnique, WrongType, NotDefined, NotComplete);
+
+
+ class AlreadyInherited_ {};
+ typedef ExceptionTemplate<AlreadyInherited_> AlreadyInherited;
+
+ class AlreadySupported_ {};
+ typedef ExceptionTemplate<AlreadySupported_> AlreadySupported;
+
+ template<typename I>
+ void
+ check_inheritance (I begin, I end, SemanticGraph::Nameable& t)
+ throw (AlreadyInherited);
+
+ template<typename I>
+ void
+ check_support (I begin, I end, SemanticGraph::Nameable& t)
+ throw (AlreadySupported);
+
+ protected:
+ Context& ctx;
+ };
+
+
+ //
+ //
+ //
+ template <typename T>
+ class ScopeBase : public Base
+ {
+ protected:
+ ScopeBase (Context& c)
+ : Base (c)
+ {
+ }
+
+ protected:
+ T&
+ now () const
+ {
+ return *now_;
+ }
+
+ void
+ now (T& t)
+ {
+ now_ = &t;
+ }
+
+ void
+ push (SemanticGraph::Scope& t)
+ {
+ stack_.push (&t);
+ }
+
+ void
+ pop ()
+ {
+ stack_.pop ();
+ }
+
+ SemanticGraph::Scope&
+ top ()
+ {
+ return *stack_.top ();
+ }
+
+ private:
+ T* now_;
+ std::stack<SemanticGraph::Scope*> stack_;
+ };
+
+
+ //
+ //
+ //
+ class NotFound {};
+ class NotUnique {};
+
+ SemanticGraph::Nameables
+ resolve (SemanticGraph::TranslationUnit& tu,
+ SemanticGraph::ScopedName const& from,
+ SemanticGraph::Name const& name) throw (NotFound);
+
+
+
+
+ SemanticGraph::Nameable*
+ lookup (SemanticGraph::TranslationUnit& tu,
+ SemanticGraph::Scope& in,
+ SemanticGraph::SimpleName const& name) throw (NotUnique);
+ }
+ }
+ }
+}
+
+#include "CCF/IDL2/SemanticAction/Impl/Elements.tpp"
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp
new file mode 100644
index 00000000000..13d4e8905d4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp
@@ -0,0 +1,94 @@
+// file : CCF/IDL2/SemanticAction/Impl/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ template <typename T>
+ T& Base::
+ resolve (SemanticGraph::ScopedName const& from,
+ SemanticGraph::Name const& name,
+ Flags::Value flags)
+ throw (NotFound, NotUnique, WrongType, NotDefined, NotComplete)
+ {
+ using namespace SemanticGraph;
+
+ try
+ {
+ Nameables nodes (Impl::resolve (ctx.tu (), from, name));
+
+
+ if (nodes.size () != 1) throw NotUnique ();
+
+ Nameable& node (**(nodes.begin ()));
+
+ try
+ {
+ T& t (dynamic_cast<T&> (node));
+
+ if (flags & Flags::defined)
+ {
+ if (!t.defined ()) throw NotDefined (node.scoped_name ());
+ }
+
+ if (flags & Flags::complete)
+ {
+ SemanticGraph::Type& type (
+ dynamic_cast<SemanticGraph::Type&> (t));
+
+ if (!type.complete ())
+ {
+ throw NotComplete (node.scoped_name ());
+ }
+ }
+
+ return t;
+ }
+ catch (std::bad_cast const&)
+ {
+ throw WrongType (node.scoped_name ());
+ }
+ }
+ catch (Impl::NotFound const&)
+ {
+ throw NotFound ();
+ }
+ }
+
+ template<typename I>
+ void Base::
+ check_inheritance (I begin, I end, SemanticGraph::Nameable& t)
+ throw (AlreadyInherited)
+ {
+ for (;begin != end; ++begin)
+ {
+ if ((**begin).inheritee () == t)
+ {
+ throw AlreadyInherited (t.scoped_name ());
+ }
+ }
+ }
+
+ template<typename I>
+ void Base::
+ check_support (I begin, I end, SemanticGraph::Nameable& t)
+ throw (AlreadySupported)
+ {
+ for (;begin != end; ++begin)
+ {
+ if ((**begin).supportee () == t)
+ {
+ throw AlreadySupported (t.scoped_name ());
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp
new file mode 100644
index 00000000000..cece740ed39
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp
@@ -0,0 +1,72 @@
+// file : CCF/IDL2/SemanticAction/Impl/Enum.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Enum.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Enum::
+ Enum (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Enum::
+ begin (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "enum " << id << endl;
+
+ type_ = 0;
+
+ SimpleName name (id->lexeme ());
+
+ type_ = &ctx.tu ().new_node<SemanticGraph::Enum> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *type_, name);
+ }
+
+ void Enum::
+ enumerator (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "enumerator " << id << endl;
+
+ //@@ Need to check for redeclaration of the name.
+ //
+
+ SimpleName name (id->lexeme ());
+
+ if (type_ != 0)
+ {
+ Enumerator& e (
+ ctx.tu ().new_node<Enumerator> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (e, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), e, name);
+ }
+ }
+
+ void Enum::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp
new file mode 100644
index 00000000000..df25fb0455f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp
@@ -0,0 +1,41 @@
+// file : CCF/IDL2/SemanticAction/Impl/Enum.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_ENUM_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_ENUM_HPP
+
+#include "CCF/IDL2/SemanticGraph/Enum.hpp"
+#include "CCF/IDL2/SemanticAction/Enum.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Enum : SemanticAction::Enum, Base
+ {
+ Enum (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id);
+
+ virtual void
+ enumerator (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ SemanticGraph::Enum* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_ENUM_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp
new file mode 100644
index 00000000000..63af631c4b9
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp
@@ -0,0 +1,67 @@
+// file : CCF/IDL2/SemanticAction/Impl/Exception.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Exception.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Exception::
+ Exception (Context& c)
+ : ScopeBase<SemanticGraph::Exception> (c)
+ {
+ }
+
+ void Exception::
+ begin (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "exception " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ now (ctx.tu ().new_node<SemanticGraph::Exception> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Exception::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Exception::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Exception::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp
new file mode 100644
index 00000000000..6ed44048b36
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL2/SemanticAction/Impl/Exception.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_EXCEPTION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_EXCEPTION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+#include "CCF/IDL2/SemanticAction/Exception.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Exception : SemanticAction::Exception,
+ ScopeBase<SemanticGraph::Exception>
+ {
+ Exception (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_EXCEPTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp
new file mode 100644
index 00000000000..6a680d14831
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp
@@ -0,0 +1,102 @@
+// file : CCF/IDL2/SemanticAction/Impl/Factory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+
+#include "CCF/IDL2/SemanticAction/Impl/Factory.hpp"
+
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ template <typename X>
+ void Factory::
+ define_fund_type (Root& root, SimpleName const& name)
+ {
+ ctx_.tu ().template new_edge<Defines> (
+ root,
+ ctx_.tu ().template new_node<X> ("fundamental-types", 0), name);
+ }
+
+ Factory::
+ Factory (CompilerElements::Context& parsing_context,
+ Diagnostic::Stream&,
+ SemanticGraph::TranslationUnit& tu)
+ : ctx_ (parsing_context.get ("trace-semantic-action", false),
+ tu,
+ parsing_context),
+
+ attribute_ (ctx_),
+ const__ (ctx_),
+ enum__ (ctx_),
+ exception_ (ctx_),
+ include_ (ctx_),
+ interface_ (ctx_),
+ member_ (ctx_),
+ module_ (ctx_),
+ native_ (ctx_),
+ numeric_expression_ (ctx_),
+ operation_ (ctx_),
+ struct__ (ctx_),
+ typedef__ (ctx_),
+ type_id_ (ctx_),
+ type_prefix_ (ctx_),
+ union__ (ctx_),
+ value_type_ (ctx_),
+ value_type_factory_ (ctx_),
+ value_type_member_ (ctx_)
+ {
+ // Implied translation region with fundamental types.
+ //
+ TranslationRegion& ftr (
+ tu.new_node<TranslationRegion> (
+ "fundamental-type", 0));
+
+ tu.new_edge<ContainsImplied> (tu, ftr, "fundamental-type");
+
+ Root& fr (tu.new_node<Root> ("fundamental-types", 0));
+ tu.new_edge<ContainsRoot> (ftr, fr);
+
+ define_fund_type<Object> (fr, "Object");
+ define_fund_type<ValueBase> (fr, "ValueBase");
+ define_fund_type<Any> (fr, "any");
+ define_fund_type<Boolean> (fr, "boolean");
+ define_fund_type<Char> (fr, "char");
+ define_fund_type<Double> (fr, "double");
+ define_fund_type<Float> (fr, "float");
+ define_fund_type<Long> (fr, "long");
+ define_fund_type<LongDouble> (fr, "long double");
+ define_fund_type<LongLong> (fr, "long long");
+ define_fund_type<Octet> (fr, "octet");
+ define_fund_type<Short> (fr, "short");
+ define_fund_type<String> (fr, "string");
+ define_fund_type<UnsignedLong> (fr, "unsigned long");
+ define_fund_type<UnsignedLongLong> (fr, "unsigned long long");
+ define_fund_type<UnsignedShort> (fr, "unsigned short");
+ define_fund_type<Void> (fr, "void");
+ define_fund_type<Wchar> (fr, "wchar");
+ define_fund_type<Wstring> (fr, "wstring");
+
+ TranslationRegion& principal (
+ tu.new_node<TranslationRegion> (ctx_.file (), 0));
+
+ tu.new_edge<ContainsPrincipal> (tu, principal);
+
+ Root& root (tu.new_node<Root> (ctx_.file (), 0));
+ tu.new_edge<ContainsRoot> (principal, root);
+
+ ctx_.region (principal);
+ ctx_.scope (root);
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp
new file mode 100644
index 00000000000..f385fdec57f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp
@@ -0,0 +1,200 @@
+// file : CCF/IDL2/SemanticAction/Impl/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+
+#include "CCF/CompilerElements/Diagnostic.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+
+#include "CCF/IDL2/SemanticAction/Factory.hpp"
+
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+//@@ It would be nice to move this includes into .cpp
+//
+#include "CCF/IDL2/SemanticAction/Impl/Attribute.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Const.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Enum.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Exception.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Include.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Member.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Module.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Native.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Operation.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Struct.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Union.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/ValueType.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Factory : virtual IDL2::SemanticAction::Factory
+ {
+ Factory (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ SemanticGraph::TranslationUnit& tu);
+
+ virtual SemanticAction::Attribute&
+ attribute ()
+ {
+ return attribute_;
+ }
+
+ virtual SemanticAction::Const&
+ const_ ()
+ {
+ return const__;
+ }
+
+ virtual SemanticAction::Enum&
+ enum_ ()
+ {
+ return enum__;
+ }
+
+ virtual SemanticAction::Exception&
+ exception ()
+ {
+ return exception_;
+ }
+
+ virtual SemanticAction::Include&
+ include ()
+ {
+ return include_;
+ }
+
+ virtual SemanticAction::Interface&
+ interface ()
+ {
+ return interface_;
+ }
+
+ virtual SemanticAction::Member&
+ member ()
+ {
+ return member_;
+ }
+
+ virtual SemanticAction::Module&
+ module ()
+ {
+ return module_;
+ }
+
+ virtual SemanticAction::Native&
+ native ()
+ {
+ return native_;
+ }
+
+ virtual SemanticAction::NumericExpression&
+ numeric_expression ()
+ {
+ return numeric_expression_;
+ }
+
+ virtual SemanticAction::Operation&
+ operation ()
+ {
+ return operation_;
+ }
+
+ virtual SemanticAction::Struct&
+ struct_ ()
+ {
+ return struct__;
+ }
+
+ virtual SemanticAction::Typedef&
+ typedef_ ()
+ {
+ return typedef__;
+ }
+
+ virtual SemanticAction::TypeId&
+ type_id ()
+ {
+ return type_id_;
+ }
+
+ virtual SemanticAction::TypePrefix&
+ type_prefix ()
+ {
+ return type_prefix_;
+ }
+
+ virtual SemanticAction::Union&
+ union_ ()
+ {
+ return union__;
+ }
+
+ virtual SemanticAction::ValueType&
+ value_type ()
+ {
+ return value_type_;
+ }
+
+ virtual ValueTypeFactory&
+ value_type_factory ()
+ {
+ return value_type_factory_;
+ }
+
+ virtual SemanticAction::ValueTypeMember&
+ value_type_member ()
+ {
+ return value_type_member_;
+ }
+
+ protected:
+ Context ctx_;
+
+ private:
+ template <typename X>
+ void
+ define_fund_type (SemanticGraph::Root& root,
+ SemanticGraph::SimpleName const& name);
+
+ private:
+ Attribute attribute_;
+ Const const__;
+ Enum enum__;
+ Exception exception_;
+ Include include_;
+ Interface interface_;
+ Member member_;
+ Module module_;
+ Native native_;
+ NumericExpression numeric_expression_;
+ Operation operation_;
+ Struct struct__;
+ Typedef typedef__;
+ TypeId type_id_;
+ TypePrefix type_prefix_;
+ Union union__;
+ ValueType value_type_;
+ ValueTypeFactory value_type_factory_;
+ ValueTypeMember value_type_member_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp
new file mode 100644
index 00000000000..5fcbe4a0c31
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp
@@ -0,0 +1,50 @@
+// file : CCF/IDL2/SemanticAction/Impl/Include.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Include.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ // @@ This is left unimplemented for now. Later, code from
+ // IDL3 should be copied here. Or better yet this implementation
+ // should allow customization via overriding.
+ //
+ Include::
+ Include (Context& c)
+ : ctx (c)
+ {
+ }
+
+ void Include::
+ quote (StringLiteralPtr const& sl)
+ {
+ if (ctx.trace ()) cerr << "__qinclude " << sl << endl;
+ }
+
+ void Include::
+ bracket (StringLiteralPtr const& sl)
+ {
+ if (ctx.trace ()) cerr << "__binclude " << sl << endl;
+ }
+
+ void Include::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp
new file mode 100644
index 00000000000..57b573e23a3
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp
@@ -0,0 +1,41 @@
+// file : CCF/IDL2/SemanticAction/Impl/Include.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
+
+
+#include "CCF/IDL2/SemanticAction/Include.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Include : SemanticAction::Include
+ {
+ Include (Context& c);
+
+ virtual void
+ quote (StringLiteralPtr const& sl);
+
+ virtual void
+ bracket (StringLiteralPtr const& sl);
+
+ virtual void
+ end ();
+
+ private:
+ Context& ctx;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp
new file mode 100644
index 00000000000..63c5dc9d5be
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp
@@ -0,0 +1,260 @@
+// file : CCF/IDL2/SemanticAction/Impl/Interface.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Interface.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Interface::
+ Interface (Context& c)
+ : ScopeBase<SemanticGraph::Interface> (c)
+ {
+ }
+
+ void Interface::
+ begin_abstract_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "abstract interface def " << id << endl;
+
+ qualifier_ = Qualifier::abstract;
+
+ SimpleName name (id->lexeme ());
+
+ //@@ Not handling NotUnique exception.
+ //
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ begin_abstract_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "abstract interface fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ begin_local_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "local interface def " << id << endl;
+
+ qualifier_ = Qualifier::local;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<LocalInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<LocalInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ begin_local_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "local interface fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<LocalInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<LocalInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ begin_unconstrained_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "unconstrained interface def " << id
+ << endl;
+
+ qualifier_ = Qualifier::unconstrained;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<UnconstrainedInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<UnconstrainedInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ begin_unconstrained_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "unconstrained interface fwd " << id
+ << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<UnconstrainedInterface&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<UnconstrainedInterface> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Interface::
+ inherits (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " inherits " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Interface& i (
+ resolve<SemanticGraph::Interface> (from, name, Flags::defined));
+
+ switch (qualifier_)
+ {
+ case Qualifier::abstract:
+ {
+ if (dynamic_cast<AbstractInterface*> (&i)) break;
+
+ throw WrongType (i.scoped_name ());
+ }
+ case Qualifier::unconstrained:
+ {
+ if (dynamic_cast<UnconstrainedInterface*> (&i) ||
+ dynamic_cast<AbstractInterface*> (&i)) break;
+
+ throw WrongType (i.scoped_name ());
+ }
+ default: break;
+ }
+
+ check_inheritance (now ().inherits_begin (),
+ now ().inherits_end (),
+ i);
+
+ ctx.tu ().new_edge<Inherits> (now (), i);
+ ctx.tu ().new_edge<Extends> (now (), i);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in inheritance specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to inherit from forward-declared interface "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "inheritance from forward-declared interface is illegal"
+ << endl;
+ }
+ catch (AlreadyInherited const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly inheriting from interface \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ void Interface::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Interface::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Interface::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
new file mode 100644
index 00000000000..f25315a1a28
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
@@ -0,0 +1,69 @@
+// file : CCF/IDL2/SemanticAction/Impl/Interface.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Interface.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Interface : SemanticAction::Interface,
+ ScopeBase<SemanticGraph::Interface>
+ {
+ Interface (Context& c);
+
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_local_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_local_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_unconstrained_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_unconstrained_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ inherits (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+
+ private:
+ struct Qualifier
+ {
+ enum Value { abstract, local, unconstrained };
+ };
+
+ Qualifier::Value qualifier_;
+ };
+
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp
new file mode 100644
index 00000000000..790bb2a6c95
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp
@@ -0,0 +1,113 @@
+// file : CCF/IDL2/SemanticAction/Impl/Member.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Member.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Member::
+ Member (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Member::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "member " << id << endl;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ // With introduction of CORBA 3.1 we have a new beast:
+ // struct with incoplete members which itself becomes
+ // incomplete.
+ //
+ type_ = &resolve<Type> (from, name/*, Flags::complete*/);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid member declaration" << endl;
+ throw;
+ }
+
+ //@@ I am not handling NotUnique here. For example if
+ // I provide module name as type then the compiler
+ // will ICE. Think about other places it may happen
+ // (attribute, value memebr, typeded, others?).
+ //
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type as a member type is illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+
+ void Member::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ SimpleName name (id->lexeme ());
+
+ SemanticGraph::Member& m (
+ ctx.tu ().new_node<SemanticGraph::Member> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (m, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), m, name);
+ }
+ }
+
+ void Member::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp
new file mode 100644
index 00000000000..2ec51a1ab01
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp
@@ -0,0 +1,41 @@
+// file : CCF/IDL2/SemanticAction/Impl/Member.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticAction/Member.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Member : SemanticAction::Member, Base
+ {
+ Member (Context& c);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ SemanticGraph::Type* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp
new file mode 100644
index 00000000000..b2b003d6d73
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp
@@ -0,0 +1,65 @@
+// file : CCF/IDL2/SemanticAction/Impl/Module.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Module.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Module::
+ Module (Context& c)
+ : ScopeBase<SemanticGraph::Module> (c)
+ {
+ }
+
+ void Module::
+ begin (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "module " << id << endl;
+
+ now (ctx.tu ().new_node<SemanticGraph::Module> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), id->lexeme ());
+ }
+
+ void Module::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Module::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Module::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp
new file mode 100644
index 00000000000..1fbbc4c78fc
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL2/SemanticAction/Impl/Module.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_MODULE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_MODULE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+#include "CCF/IDL2/SemanticAction/Module.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Module : SemanticAction::Module,
+ ScopeBase<SemanticGraph::Module>
+ {
+ Module (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_MODULE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp
new file mode 100644
index 00000000000..162fd1d5bfe
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp
@@ -0,0 +1,51 @@
+// file : CCF/IDL2/SemanticAction/Impl/Native.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Native.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Native.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Native::
+ Native (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Native::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "native " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ SemanticGraph::Native& n (
+ ctx.tu ().new_node<SemanticGraph::Native> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), n, name);
+ }
+
+ void Native::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp
new file mode 100644
index 00000000000..52875c58862
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/SemanticAction/Impl/Native.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_NATIVE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_NATIVE_HPP
+
+#include "CCF/IDL2/SemanticAction/Native.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Native : SemanticAction::Native, Base
+ {
+ Native (Context& c);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_NATIVE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp
new file mode 100644
index 00000000000..e949438aff8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp
@@ -0,0 +1,351 @@
+// file : CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ NumericExpression::
+ NumericExpression (Context& c)
+ : Base (c)
+ {
+ }
+
+ void NumericExpression::
+ flush ()
+ {
+ if (ctx.trace ())
+ cerr << "expression" << endl;
+
+ ctx.int_exp_flush ();
+ }
+
+ void NumericExpression::
+ const_ (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "const " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Const& c (resolve<Const> (from, name));
+
+ if (IntConst* ic = dynamic_cast<IntConst*> (&c))
+ {
+ ctx.int_exp_push (*ic);
+ }
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid reference to const" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no const with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a const declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-const as a reference to const is illegal"
+ << endl;
+ }
+ }
+
+ void NumericExpression::
+ integer_literal (IntegerLiteralPtr const& il)
+ {
+ if (ctx.trace ())
+ cerr << "integer literal " << il->value () << endl;
+
+ ctx.int_exp_push (
+ ctx.tu ().new_node<IntLiteral> (
+ ctx.file (), il->line (), il->value ()));
+ }
+
+ void NumericExpression::
+ pre (OperatorPtr const& op)
+ {
+ line_ = op->line ();
+ }
+
+ void NumericExpression::
+ pos ()
+ {
+ if (ctx.trace ())
+ cerr << "unary +" << endl;
+
+ // Nothing to do.
+ }
+
+ void NumericExpression::
+ neg ()
+ {
+ if (ctx.trace ())
+ cerr << "unary -" << endl;
+
+ if (ctx.int_exp_size () < 1)
+ return;
+
+ IntExpression& expr (ctx.int_exp_pop ());
+
+ IntNeg& neg (ctx.tu ().new_node<IntNeg> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntNegates> (neg, expr);
+
+ ctx.int_exp_push (neg);
+ }
+
+ void NumericExpression::
+ com ()
+ {
+ if (ctx.trace ())
+ cerr << "unary ~" << endl;
+
+ if (ctx.int_exp_size () < 1)
+ return;
+
+ IntExpression& expr (ctx.int_exp_pop ());
+
+ IntCom& com (ctx.tu ().new_node<IntCom> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntComplements> (com, expr);
+
+ ctx.int_exp_push (com);
+ }
+
+ void NumericExpression::
+ mul ()
+ {
+ if (ctx.trace ())
+ cerr << "*" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& multiplier (ctx.int_exp_pop ());
+ IntExpression& multiplicand (ctx.int_exp_pop ());
+
+ IntMul& mul (ctx.tu ().new_node<IntMul> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntMultiplies> (mul, multiplicand);
+ ctx.tu ().new_edge<IntMultiplies> (mul, multiplier);
+
+ ctx.int_exp_push (mul);
+ }
+
+ void NumericExpression::
+ div ()
+ {
+ if (ctx.trace ())
+ cerr << "/" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& divisor (ctx.int_exp_pop ());
+ IntExpression& divident (ctx.int_exp_pop ());
+
+ IntDiv& div (ctx.tu ().new_node<IntDiv> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntDivides> (div, divident);
+ ctx.tu ().new_edge<IntDivides> (div, divisor);
+
+ ctx.int_exp_push (div);
+ }
+
+ void NumericExpression::
+ rem ()
+ {
+ if (ctx.trace ())
+ cerr << "%" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& divisor (ctx.int_exp_pop ());
+ IntExpression& divident (ctx.int_exp_pop ());
+
+ IntRem& rem (ctx.tu ().new_node<IntRem> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntDivides> (rem, divident);
+ ctx.tu ().new_edge<IntDivides> (rem, divisor);
+
+ ctx.int_exp_push (rem);
+ }
+
+
+ void NumericExpression::
+ add ()
+ {
+ if (ctx.trace ())
+ cerr << "+" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& second_item (ctx.int_exp_pop ());
+ IntExpression& first_item (ctx.int_exp_pop ());
+
+ IntAdd& add (ctx.tu ().new_node<IntAdd> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntAdds> (add, first_item);
+ ctx.tu ().new_edge<IntAdds> (add, second_item);
+
+ ctx.int_exp_push (add);
+ }
+
+ void NumericExpression::
+ sub ()
+ {
+ if (ctx.trace ())
+ cerr << "-" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& subtrahend (ctx.int_exp_pop ());
+ IntExpression& minuend (ctx.int_exp_pop ());
+
+ IntSub& sub (ctx.tu ().new_node<IntSub> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntSubtracts> (sub, minuend);
+ ctx.tu ().new_edge<IntSubtracts> (sub, subtrahend);
+
+ ctx.int_exp_push (sub);
+ }
+
+ void NumericExpression::
+ rsh ()
+ {
+ if (ctx.trace ())
+ cerr << ">>" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& factor (ctx.int_exp_pop ());
+ IntExpression& pattern (ctx.int_exp_pop ());
+
+ IntRsh& rsh (ctx.tu ().new_node<IntRsh> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntShifts> (rsh, pattern);
+ ctx.tu ().new_edge<IntShifts> (rsh, factor);
+
+ ctx.int_exp_push (rsh);
+ }
+
+ void NumericExpression::
+ lsh ()
+ {
+ if (ctx.trace ())
+ cerr << "<<" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& factor (ctx.int_exp_pop ());
+ IntExpression& pattern (ctx.int_exp_pop ());
+
+ IntLsh& lsh (ctx.tu ().new_node<IntLsh> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntShifts> (lsh, pattern);
+ ctx.tu ().new_edge<IntShifts> (lsh, factor);
+
+ ctx.int_exp_push (lsh);
+ }
+
+ void NumericExpression::
+ and_ ()
+ {
+ if (ctx.trace ())
+ cerr << "&" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& second_pattern (ctx.int_exp_pop ());
+ IntExpression& first_pattern (ctx.int_exp_pop ());
+
+ IntAnd& and_ (ctx.tu ().new_node<IntAnd> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntConjuncts> (and_, first_pattern);
+ ctx.tu ().new_edge<IntConjuncts> (and_, second_pattern);
+
+ ctx.int_exp_push (and_);
+ }
+
+ void NumericExpression::
+ xor_ ()
+ {
+ if (ctx.trace ())
+ cerr << "^" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& second_pattern (ctx.int_exp_pop ());
+ IntExpression& first_pattern (ctx.int_exp_pop ());
+
+ IntXor& xor_ (ctx.tu ().new_node<IntXor> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntExclusivelyDisjuncts> (xor_, first_pattern);
+ ctx.tu ().new_edge<IntExclusivelyDisjuncts> (xor_, second_pattern);
+
+ ctx.int_exp_push (xor_);
+ }
+
+ void NumericExpression::
+ or_ ()
+ {
+ if (ctx.trace ())
+ cerr << "|" << endl;
+
+ if (ctx.int_exp_size () < 2)
+ return;
+
+ IntExpression& second_pattern (ctx.int_exp_pop ());
+ IntExpression& first_pattern (ctx.int_exp_pop ());
+
+ IntOr& or_ (ctx.tu ().new_node<IntOr> (ctx.file (), line_));
+
+ ctx.tu ().new_edge<IntInclusivelyDisjuncts> (or_, first_pattern);
+ ctx.tu ().new_edge<IntInclusivelyDisjuncts> (or_, second_pattern);
+
+ ctx.int_exp_push (or_);
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp
new file mode 100644
index 00000000000..fe0b399cb60
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp
@@ -0,0 +1,84 @@
+// file : CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_NUMERIC_EXPRESSION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_NUMERIC_EXPRESSION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticAction/NumericExpression.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct NumericExpression : SemanticAction::NumericExpression, Base
+ {
+ NumericExpression (Context& c);
+
+ virtual void
+ flush ();
+
+ virtual void
+ const_ (IdentifierPtr const&);
+
+ virtual void
+ integer_literal (IntegerLiteralPtr const&);
+
+ virtual void
+ pre (OperatorPtr const&);
+
+ virtual void
+ pos ();
+
+ virtual void
+ neg ();
+
+ virtual void
+ com ();
+
+ virtual void
+ mul ();
+
+ virtual void
+ div ();
+
+ virtual void
+ rem ();
+
+ virtual void
+ add ();
+
+ virtual void
+ sub ();
+
+ virtual void
+ rsh ();
+
+ virtual void
+ lsh ();
+
+ virtual void
+ and_ ();
+
+ virtual void
+ xor_ ();
+
+ virtual void
+ or_ ();
+
+
+ private:
+ unsigned long line_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_NUMERIC_EXPRESSION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp
new file mode 100644
index 00000000000..7401e2f65ea
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp
@@ -0,0 +1,266 @@
+// file : CCF/IDL2/SemanticAction/Impl/Operation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Operation.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Operation::
+ Operation (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Operation::
+ one_way ()
+ {
+ if (ctx.trace ()) cerr << "oneway ";
+ one_way_ = true;
+ }
+
+ void Operation::
+ two_way ()
+ {
+ if (ctx.trace ()) cerr << "twoway ";
+ one_way_ = false;
+ }
+
+ void Operation::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "operation " << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<Type> (from, name, Flags::complete);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid operation declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type as an operation return type is illegal"
+ << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void Operation::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (one_way_)
+ {
+ if (dynamic_cast<Void*> (type_) == 0)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid operation declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "oneway operation should have void as a return type"
+ << endl;
+ }
+
+ op_ = &ctx.tu ().new_node<OneWayOperation> (
+ ctx.file (), id->line ());
+ }
+ else
+ op_ = &ctx.tu ().new_node<TwoWayOperation> (
+ ctx.file (), id->line ());
+
+ SimpleName name (id->lexeme ());
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *op_, name);
+
+ if (type_)
+ {
+ ctx.tu ().new_edge<Returns> (*op_, *type_);
+ }
+ }
+
+
+ void Operation::
+ parameter (Direction::Value direction,
+ IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ()) cerr << "parameter " << direction << " "
+ << type_id << " " << name_id << endl;
+
+ Name name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ struct NotIn : Resolve {};
+
+ try
+ {
+ try
+ {
+ if (one_way_ && direction != Direction::in)
+ throw NotIn ();
+
+ Type& t (resolve<Type> (from, name, Flags::complete));
+
+ Parameter* p (0);
+
+ switch (direction)
+ {
+ case Direction::in:
+ {
+ p = &ctx.tu ().new_node<InParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ());
+ break;
+ }
+ case Direction::out:
+ {
+ p = &ctx.tu ().new_node<OutParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ());
+ break;
+ }
+ case Direction::inout:
+ {
+ p = &ctx.tu ().new_node<InOutParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ());
+ break;
+ }
+ }
+
+ ctx.tu ().new_edge<Belongs> (*p, t);
+ ctx.tu ().new_edge<Receives> (*op_, *p);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid parameter declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as an operation parameter type is "
+ << "illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ catch (NotIn const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "parameter of oneway operation should have \'in\' "
+ << "direction" << endl;
+ }
+ }
+
+
+ void Operation::
+ raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "raises " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ struct OneWay : Resolve {};
+
+ try
+ {
+ try
+ {
+ if (one_way_)
+ throw OneWay ();
+
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<Raises> (*op_, e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ catch (OneWay const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "oneway operation may not raise exceptions" << endl;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp
new file mode 100644
index 00000000000..e45cef9fcf4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticAction/Impl/Operation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_OPERATION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_OPERATION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+#include "CCF/IDL2/SemanticAction/Operation.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ //
+ //
+ //
+ struct Operation : SemanticAction::Operation, Base
+ {
+ Operation (Context& c);
+
+ virtual void
+ one_way ();
+
+ virtual void
+ two_way ();
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ parameter (Direction::Value direction,
+ IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id);
+
+ virtual void
+ raises (IdentifierPtr const& id);
+
+ private:
+ bool one_way_;
+ SemanticGraph::Type* type_;
+ SemanticGraph::Operation* op_;
+ };
+
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_OPERATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp
new file mode 100644
index 00000000000..966eba12824
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp
@@ -0,0 +1,99 @@
+// file : CCF/IDL2/SemanticAction/Impl/Struct.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Struct.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Struct::
+ Struct (Context& c)
+ : ScopeBase<SemanticGraph::Struct> (c)
+ {
+ }
+
+ // @@ I need a mechanism for propagating exceptions from
+ // semantic actions to the parser in order to stop
+ // semantic action invocation.
+ //
+
+ void Struct::
+ begin_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "struct def " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Struct&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Struct> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Struct::
+ begin_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "struct fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Struct&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Struct> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Struct::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Struct::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Struct::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp
new file mode 100644
index 00000000000..0fafd69962f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp
@@ -0,0 +1,45 @@
+// file : CCF/IDL2/SemanticAction/Impl/Struct.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_STRUCT_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_STRUCT_HPP
+
+#include "CCF/IDL2/SemanticGraph/Struct.hpp"
+#include "CCF/IDL2/SemanticAction/Struct.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Struct : SemanticAction::Struct,
+ ScopeBase<SemanticGraph::Struct>
+ {
+ Struct (Context& c);
+
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_STRUCT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp
new file mode 100644
index 00000000000..816d83f6d12
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp
@@ -0,0 +1,146 @@
+// file : CCF/IDL2/SemanticAction/Impl/TypeId.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/TypeId.hpp"
+
+#include "CCF/IDL2/SemanticGraph/TypeId.hpp"
+
+// These inclusions are needed to ensure that typeprefix is applied to a
+// suitable declaration.
+
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ // TypeId
+ //
+ //
+ TypeId::
+ TypeId (Context& c)
+ : ctx (c)
+ {
+ }
+
+ void TypeId::
+ begin (IdentifierPtr const& d, StringLiteralPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "typeid " << d << " " << id << endl;
+
+ Name name (d->lexeme ());
+ SemanticGraph::StringLiteral tid (id->value ());
+
+ try
+ {
+ ScopedName from (ctx.scope ().scoped_name ());
+ Nameables nodes (resolve (ctx.tu (), from, name));
+
+ ScopedName full ((**(nodes.begin ())).scoped_name ());
+
+ SemanticGraph::TypeId& ti (
+ ctx.tu ().new_node<SemanticGraph::TypeId> (
+ ctx.file (), d->line (), full, tid));
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), ti, "typeid");
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "invalid typeid declaration" << endl;
+
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "no declaration with name \'"
+ << name << "\' visible from scope \'"
+ << ctx.scope ().scoped_name () << "\'" << endl;
+ }
+ }
+
+ void TypeId::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+
+
+ // TypePrefix
+ //
+ //
+ TypePrefix::
+ TypePrefix (Context& c)
+ : ctx (c)
+ {
+ }
+
+ void TypePrefix::
+ begin (IdentifierPtr const& d, StringLiteralPtr const& prefix)
+ {
+ if (ctx.trace ()) cerr << "typeprefix " << d << " " << prefix
+ << endl;
+
+ Name name (d->lexeme ());
+ SemanticGraph::StringLiteral tprefix (prefix->value ());
+
+ try
+ {
+ ScopedName from (ctx.scope ().scoped_name ());
+ Nameables nodes (resolve (ctx.tu (), from, name));
+
+ Nameable& node (**(nodes.begin ()));
+
+ dynamic_cast<SemanticGraph::Scope&> (node);
+
+ ScopedName full (node.scoped_name ());
+
+ SemanticGraph::TypePrefix& tp (
+ ctx.tu ().new_node<SemanticGraph::TypePrefix> (
+ ctx.file (), d->line (), full, tprefix));
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), tp, "typeprefix");
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "invalid typeprefix declaration" << endl;
+
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "no declaration with name \'"
+ << name << "\' visible from scope \'"
+ << ctx.scope ().scoped_name () << "\'" << endl;
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "invalid typeprefix declaration" << endl;
+
+ cerr << ctx.file () << ":" << d->line () << ": error: "
+ << "no suitable declaration with name \'"
+ << name << "\' visible from scope \'"
+ << ctx.scope ().scoped_name () << "\'" << endl;
+ }
+ }
+
+ void TypePrefix::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp
new file mode 100644
index 00000000000..e88971eade4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticAction/Impl/TypeId.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPE_ID_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPE_ID_HPP
+
+#include "CCF/IDL2/SemanticAction/TypeId.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ //
+ //
+ //
+ struct TypeId : SemanticAction::TypeId
+ {
+ TypeId (Context& c);
+
+ virtual void
+ begin (IdentifierPtr const& d, StringLiteralPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ Context& ctx;
+ };
+
+
+ //
+ //
+ //
+ struct TypePrefix : SemanticAction::TypePrefix
+ {
+ TypePrefix (Context& c);
+
+ virtual void
+ begin (IdentifierPtr const& d, StringLiteralPtr const& prefix);
+
+ virtual void
+ end ();
+
+ private:
+ Context& ctx;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPE_ID_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp
new file mode 100644
index 00000000000..fcd4257fa52
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp
@@ -0,0 +1,327 @@
+// file : CCF/IDL2/SemanticAction/Impl/Typedef.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Typedef.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Array.hpp"
+#include "CCF/IDL2/SemanticGraph/Sequence.hpp"
+#include "CCF/IDL2/SemanticGraph/String.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+//@@ names used in smantic actions are inconsistent
+// e.g. begin () vs name (), etc
+//
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Typedef::
+ Typedef (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Typedef::
+ pre (KeywordPtr const& id)
+ {
+ line_ = id->line ();
+ }
+
+ void Typedef::
+ begin (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "typedef " << id << endl;
+
+ define_ = false;
+ type_ = 0;
+ array_type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<Type> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid typedef declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type in typedef is illegal" << endl;
+ }
+ }
+
+ void Typedef::
+ begin_unbounded_seq (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "typedef u-sequence<" << id << ">" << endl;
+
+ define_ = true;
+ type_ = 0;
+ array_type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name));
+
+ UnboundedSequence& s (
+ ctx.tu ().new_node<UnboundedSequence> (
+ ctx.file (), line_));
+
+ ctx.tu ().new_edge<ArgumentsWithType> (t, s);
+
+ type_ = &s;
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid sequence declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type in sequence specialization is illegal"
+ << endl;
+ }
+ }
+
+ void Typedef::
+ begin_bounded_seq (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "typedef b-sequence<" << id << ">" << endl;
+
+ define_ = true;
+ type_ = 0;
+ array_type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name));
+
+ BoundedSequence& s (
+ ctx.tu ().new_node<BoundedSequence> (
+ ctx.file (), line_));
+
+ ctx.tu ().new_edge<ArgumentsWithType> (t, s);
+
+ type_ = &s;
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid sequence declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type in sequence specialization is illegal"
+ << endl;
+ }
+ }
+
+ void Typedef::
+ begin_bounded_string ()
+ {
+ if (ctx.trace ()) cerr << "typedef b-string" << endl;
+
+ define_ = true;
+ type_ = 0;
+ array_type_ = 0;
+
+ type_ = &ctx.tu ().new_node<BoundedString> (ctx.file (), line_);
+ bound ();
+ }
+
+ void Typedef::
+ begin_bounded_wstring ()
+ {
+ if (ctx.trace ()) cerr << "typedef b-wstring" << endl;
+
+ define_ = true;
+ type_ = 0;
+ array_type_ = 0;
+
+ type_ = &ctx.tu ().new_node<BoundedWideString> (ctx.file (), line_);
+ bound ();
+ }
+
+ void Typedef::
+ begin_array ()
+ {
+ if (ctx.trace ()) cerr << "array" << endl;
+
+ define_ = true;
+ array_type_ = 0;
+
+ if (type_ == 0)
+ return;
+
+ if (type_->named_begin () == type_->named_end ())
+ {
+ cerr << ctx.file () << ":" << line_ << ": error: "
+ << "anonymous types in array declarations "
+ << "are not supported" << endl;
+
+ cerr << ctx.file () << ":" << line_ << ": error: "
+ << "use another typedef to name this type" << endl;
+
+ return;
+ }
+
+ Array& a (ctx.tu ().new_node<Array> (ctx.file (), line_));
+ ctx.tu ().new_edge<ArgumentsWithType> (*type_, a);
+
+ array_type_ = &a;
+ }
+
+ void Typedef::
+ bound ()
+ {
+ if (ctx.trace ()) cerr << "bound" << endl;
+
+ if (ctx.int_exp_size () < 1)
+ return;
+
+ IntExpression& expr (ctx.int_exp_pop ());
+
+ if (array_type_ != 0)
+ {
+ Specialization& s (dynamic_cast<Specialization&> (*array_type_));
+ ctx.tu ().new_edge<ArgumentsWithValue> (expr, s);
+ }
+ else if (type_ != 0)
+ {
+ Specialization& s (dynamic_cast<Specialization&> (*type_));
+ ctx.tu ().new_edge<ArgumentsWithValue> (expr, s);
+ }
+ }
+
+ void Typedef::
+ declarator (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ try
+ {
+ if (lookup (ctx.tu (), ctx.scope (), name) == 0)
+ {
+ if (array_type_ != 0)
+ {
+ assert (define_);
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *array_type_, name);
+
+ define_ = false;
+ array_type_ = 0;
+ }
+ else if (type_ != 0)
+ {
+ if (define_)
+ {
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *type_, name);
+ define_ = false;
+ }
+ else
+ {
+ ctx.tu ().new_edge<Aliases> (ctx.scope (), *type_, name);
+ }
+ }
+ return;
+ }
+ }
+ catch (NotUnique const& )
+ {
+ }
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid typedef declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "redeclaration of name " << name << endl;
+
+ array_type_ = 0;
+ }
+
+ void Typedef::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp
new file mode 100644
index 00000000000..638bbc8afd8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp
@@ -0,0 +1,65 @@
+// file : CCF/IDL2/SemanticAction/Impl/Typedef.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticAction/Typedef.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Typedef : SemanticAction::Typedef, Base
+ {
+ Typedef (Context& c);
+
+ virtual void
+ pre (KeywordPtr const& id);
+
+ virtual void
+ begin (IdentifierPtr const& id);
+
+ virtual void
+ begin_unbounded_seq (IdentifierPtr const& id);
+
+ virtual void
+ begin_bounded_seq (IdentifierPtr const& id);
+
+ virtual void
+ begin_bounded_string ();
+
+ virtual void
+ begin_bounded_wstring ();
+
+ virtual void
+ begin_array ();
+
+ virtual void
+ bound ();
+
+ virtual void
+ declarator (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ bool define_;
+ unsigned long line_;
+ SemanticGraph::Type* type_;
+ SemanticGraph::Type* array_type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_TYPEDEF_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp
new file mode 100644
index 00000000000..375b8a9abab
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp
@@ -0,0 +1,225 @@
+// file : CCF/IDL2/SemanticAction/Impl/Union.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/Union.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Enum.hpp"
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Union::
+ Union (Context& c)
+ : ScopeBase<SemanticGraph::Union> (c)
+ {
+ }
+
+ void Union::
+ begin_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "union def " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Union&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Union> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Union::
+ begin_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "union fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Union&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Union> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Union::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "type " << id << endl;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<Type> (from, name);
+
+ if (!(dynamic_cast<Enum*> (type_) ||
+ dynamic_cast<Boolean*> (type_) ||
+ dynamic_cast<Char*> (type_) ||
+ dynamic_cast<Wchar*> (type_) ||
+ dynamic_cast<Short*> (type_) ||
+ dynamic_cast<UnsignedShort*> (type_) ||
+ dynamic_cast<Long*> (type_) ||
+ dynamic_cast<UnsignedLong*> (type_) ||
+ dynamic_cast<LongLong*> (type_) ||
+ dynamic_cast<UnsignedLongLong*> (type_)))
+ {
+ throw WrongType (type_->scoped_name ());
+ }
+
+ ctx.tu ().new_edge<ArgumentsWithType> (*type_, now ());
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid union declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a valid discriminant type" << endl;
+ }
+ }
+
+ void Union::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Union::
+ member_type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "type " << id << endl;
+
+ member_type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ // With introduction of CORBA 3.1 we have a new beast:
+ // union with incoplete members which itself becomes
+ // incomplete.
+ //
+ member_type_ = &resolve<Type> (from, name/*, Flags::complete*/);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid union member declaration" << endl;
+ throw;
+ }
+
+ //@@ I am not handling NotUnique here. For example if
+ // I provide module name as type then the compiler
+ // will ICE. Think about other places it may happen
+ // (attribute, value memebr, typeded, others?).
+ //
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type as an member type is illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void Union::
+ member_name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "name " << id << endl;
+
+ if (member_type_)
+ {
+ SimpleName name (id->lexeme ());
+
+ SemanticGraph::UnionMember& m (
+ ctx.tu ().new_node<SemanticGraph::UnionMember> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (m, *member_type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), m, name);
+ }
+ }
+
+ void Union::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Union::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp
new file mode 100644
index 00000000000..8ab8022c62a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp
@@ -0,0 +1,57 @@
+// file : CCF/IDL2/SemanticAction/Impl/Union.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_UNION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_UNION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Union.hpp"
+#include "CCF/IDL2/SemanticAction/Union.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Union : SemanticAction::Union, ScopeBase<SemanticGraph::Union>
+ {
+ Union (Context& c);
+
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ member_type (IdentifierPtr const& id);
+
+ virtual void
+ member_name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+
+ private:
+ SemanticGraph::Type* type_;
+ SemanticGraph::Type* member_type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_UNION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp
new file mode 100644
index 00000000000..3d6b92132e6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp
@@ -0,0 +1,293 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueType.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/ValueType.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ ValueType::
+ ValueType (Context& c)
+ : ScopeBase<SemanticGraph::ValueType> (c)
+ {
+ }
+
+ void ValueType::
+ begin_abstract_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "abstract valuetype def " << id << endl;
+
+ qualifier_ = Qualifier::abstract;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractValueType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractValueType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void ValueType::
+ begin_abstract_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "abstract valuetype fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractValueType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractValueType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void ValueType::
+ begin_concrete_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "concrete valuetype def " << id << endl;
+
+ qualifier_ = Qualifier::concrete;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<ConcreteValueType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<ConcreteValueType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void ValueType::
+ begin_concrete_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "concrete valuetype fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<ConcreteValueType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<ConcreteValueType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void ValueType::
+ inherits (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "inherits " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::ValueType& v (
+ resolve<SemanticGraph::ValueType> (from, name, Flags::defined));
+
+ check_inheritance (now ().inherits_begin (),
+ now ().inherits_end (),
+ v);
+
+
+ bool abstract (dynamic_cast<AbstractValueType*> (&v) != 0);
+
+ if (dynamic_cast<AbstractValueType*> (&now ()) != 0)
+ {
+ // Abstract valuetype may only inherit from abstract ones.
+ //
+ if (!abstract)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "abstract valuetype `" << now ().name ()
+ << "\' may not inherit from concrete valuetype `"
+ << v.scoped_name () << "\'" << endl;
+ return;
+ }
+ }
+ else
+ {
+ // Concrete valuetype may inherit from single concrete
+ // valutype in which case it should be the first in the
+ // inheritance list.
+ //
+ if (now ().inherits_begin () != now ().inherits_end () &&
+ !abstract)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "concrete valuetype `" << v.scoped_name ()
+ << "\' is not the first in the inheritance list of "
+ << "valuetype `" << now ().name () << "\'" << endl;
+ return;
+ }
+ }
+
+ ctx.tu ().new_edge<Inherits> (now (), v);
+ ctx.tu ().new_edge<Extends> (now (), v);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no valuetype with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in inheritance specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to inherit from the forward-declared valuetype "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "inheritance from a forward-declared valuetype is illegal"
+ << endl;
+ }
+ catch (AlreadyInherited const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly inheriting from valuetype \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ void ValueType::
+ supports (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "supports " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Interface& i (
+ resolve<SemanticGraph::Interface> (from, name, Flags::defined));
+
+ check_support (now ().supports_begin (),
+ now ().supports_end (),
+ i);
+
+ ctx.tu ().new_edge<Supports> (now (), i);
+ ctx.tu ().new_edge<Extends> (now (), i);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid supports specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in supports specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to support forward-declared interface "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "support of forward-declared interface is illegal"
+ << endl;
+ }
+ catch (AlreadySupported const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly supporting interface \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ void ValueType::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void ValueType::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void ValueType::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp
new file mode 100644
index 00000000000..da0bea59a84
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp
@@ -0,0 +1,65 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_HPP
+
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+#include "CCF/IDL2/SemanticAction/ValueType.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct ValueType : SemanticAction::ValueType,
+ ScopeBase<SemanticGraph::ValueType>
+ {
+ ValueType (Context& c);
+
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_concrete_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_concrete_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ inherits (IdentifierPtr const& id);
+
+ virtual void
+ supports (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+
+ private:
+ struct Qualifier
+ {
+ enum Value { abstract, concrete };
+ };
+
+ Qualifier::Value qualifier_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp
new file mode 100644
index 00000000000..f87138f9b70
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp
@@ -0,0 +1,152 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ ValueTypeFactory::
+ ValueTypeFactory (Context& c)
+ : Base (c)
+ {
+ }
+
+ void ValueTypeFactory::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ f_ = 0;
+
+ SemanticGraph::ValueType& h (
+ dynamic_cast<SemanticGraph::ValueType&>(ctx.scope ()));
+
+ SimpleName name (id->lexeme ());
+
+ f_ = &ctx.tu ().new_node<SemanticGraph::ValueTypeFactory> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Returns> (*f_, h);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *f_, name);
+ }
+
+
+ void ValueTypeFactory::
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ()) cerr << "parameter in " << " "
+ << type_id << " " << name_id << endl;
+
+ if (f_ == 0) return;
+
+ Name name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name, Flags::complete));
+
+ Parameter& p (
+ ctx.tu ().new_node<InParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ()));
+
+ ctx.tu ().new_edge<Belongs> (p, t);
+ ctx.tu ().new_edge<Receives> (*f_, p);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid parameter declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as an factory parameter type is "
+ << "illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void ValueTypeFactory::
+ raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "raises " << id << endl;
+
+ if (f_ == 0) return;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<Raises> (*f_, e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp
new file mode 100644
index 00000000000..949492152e5
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_FACTORY_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_FACTORY_HPP
+
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+#include "CCF/IDL2/SemanticAction/ValueTypeFactory.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct ValueTypeFactory : SemanticAction::ValueTypeFactory, Base
+ {
+ ValueTypeFactory (Context& c);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id);
+
+ virtual void
+ raises (IdentifierPtr const& id);
+
+ private:
+ SemanticGraph::ValueTypeFactory* f_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp
new file mode 100644
index 00000000000..c85b8023a07
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp
@@ -0,0 +1,149 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp"
+
+#include "CCF/IDL2/SemanticGraph/ValueTypeMember.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ ValueTypeMember::
+ ValueTypeMember (Context& c)
+ : Base (c)
+ {
+ }
+
+ void ValueTypeMember::
+ begin_private ()
+ {
+ if (ctx.trace ())
+ cerr << "private valuetype member" << endl;
+
+ access_ = SemanticGraph::ValueTypeMember::Access::private_;
+ }
+
+ void ValueTypeMember::
+ begin_public ()
+ {
+ if (ctx.trace ())
+ cerr << "public valuetype member" << endl;
+
+ access_ = SemanticGraph::ValueTypeMember::Access::public_;
+ }
+
+ void ValueTypeMember::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << " type: " << id << endl;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<Type> (from, name, Flags::complete);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid valuetype member declaration" << endl;
+ throw;
+ }
+
+ //@@ I am not handling NotUnique here. For example if
+ // I provide module name as type then the compiler
+ // will ICE. Think about other places it may happen
+ // (attribute, value memebr, typeded, others?).
+ //
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-type as a valuetype member type is illegal"
+ << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+
+ void ValueTypeMember::
+ name (SimpleIdentifierPtr const& id)
+ {
+ using namespace SemanticGraph;
+
+ if (ctx.trace ()) cerr << " name: " << id << endl;
+
+ if (type_)
+ {
+ SimpleName name (id->lexeme ());
+
+ SemanticGraph::ValueTypeMember* m;
+
+ switch (access_)
+ {
+ case SemanticGraph::ValueTypeMember::Access::private_:
+ {
+ m = &ctx.tu ().new_node<ValueTypePrivateMember> (
+ ctx.file (), id->line ());
+ break;
+ }
+ case SemanticGraph::ValueTypeMember::Access::public_:
+ {
+ m = &ctx.tu ().new_node<ValueTypePublicMember> (
+ ctx.file (), id->line ());
+ break;
+ }
+ default:
+ {
+ abort ();
+ }
+ }
+
+ ctx.tu ().new_edge<Belongs> (*m, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *m, name);
+ }
+ }
+
+ void ValueTypeMember::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp
new file mode 100644
index 00000000000..96e575cd35f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp
@@ -0,0 +1,48 @@
+// file : CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticGraph/ValueTypeMember.hpp"
+#include "CCF/IDL2/SemanticAction/ValueTypeMember.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct ValueTypeMember : SemanticAction::ValueTypeMember, Base
+ {
+ ValueTypeMember (Context& c);
+
+ virtual void
+ begin_private ();
+
+ virtual void
+ begin_public ();
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ end ();
+
+ private:
+ SemanticGraph::ValueTypeMember::Access::Value access_;
+ SemanticGraph::Type* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_VALUE_TYPE_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Include.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Include.hpp
new file mode 100644
index 00000000000..f67dbfd1914
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Include.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL2/SemanticAction/Include.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_INCLUDE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_INCLUDE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Include
+ {
+ virtual void
+ quote (StringLiteralPtr const& sl) = 0;
+
+ virtual void
+ bracket (StringLiteralPtr const& sl) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_INCLUDE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Interface.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Interface.hpp
new file mode 100644
index 00000000000..ebbb2398764
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Interface.hpp
@@ -0,0 +1,52 @@
+// file : CCF/IDL2/SemanticAction/Interface.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_INTERFACE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_INTERFACE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Interface : Scope
+ {
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_local_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_local_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_unconstrained_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_unconstrained_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ inherits (IdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_INTERFACE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Member.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Member.hpp
new file mode 100644
index 00000000000..a5e835ee351
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Member.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL2/SemanticAction/Member.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Member
+ {
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Module.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Module.hpp
new file mode 100644
index 00000000000..08411592eac
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Module.hpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/SemanticAction/Module.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_MODULE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_MODULE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Module : Scope
+ {
+ virtual void
+ begin (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_MODULE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Native.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Native.hpp
new file mode 100644
index 00000000000..ed7fd4422f5
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Native.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL2/SemanticAction/Native.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_NATIVE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_NATIVE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Native
+ {
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_NATIVE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp
new file mode 100644
index 00000000000..4b0423d8e63
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp
@@ -0,0 +1,73 @@
+// file : CCF/IDL2/SemanticAction/NumericExpression.hpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_NUMERIC_EXPRESSION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_NUMERIC_EXPRESSION_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct NumericExpression
+ {
+ virtual void
+ flush () = 0;
+
+ virtual void
+ const_ (IdentifierPtr const&) = 0;
+
+ virtual void
+ integer_literal (IntegerLiteralPtr const&) = 0;
+
+ virtual void
+ pre (OperatorPtr const&) = 0;
+
+ virtual void
+ pos () = 0;
+
+ virtual void
+ neg () = 0;
+
+ virtual void
+ com () = 0;
+
+ virtual void
+ mul () = 0;
+
+ virtual void
+ div () = 0;
+
+ virtual void
+ rem () = 0;
+
+ virtual void
+ add () = 0;
+
+ virtual void
+ sub () = 0;
+
+ virtual void
+ rsh () = 0;
+
+ virtual void
+ lsh () = 0;
+
+ virtual void
+ and_ () = 0;
+
+ virtual void
+ xor_ () = 0;
+
+ virtual void
+ or_ () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_NUMERIC_EXPRESSION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.cpp
new file mode 100644
index 00000000000..b75d48400a4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.cpp
@@ -0,0 +1,29 @@
+// file : CCF/IDL2/SemanticAction/Operation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticAction/Operation.hpp"
+
+#include <ostream>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ }
+ }
+}
+
+namespace
+{
+ char* labels[] = {"in", "out", "inout"};
+}
+
+std::ostream&
+operator<< (std::ostream& o,
+ CCF::IDL2::SemanticAction::Operation::Direction::Value d)
+{
+ return o << labels[d];
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.hpp
new file mode 100644
index 00000000000..99131c60e15
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Operation.hpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticAction/Operation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_OPERATION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_OPERATION_HPP
+
+#include <iosfwd>
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Operation
+ {
+ virtual void
+ one_way () = 0;
+
+ virtual void
+ two_way () = 0;
+
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ struct Direction
+ {
+ enum Value
+ {
+ in = 0,
+ out,
+ inout
+ };
+ };
+
+ virtual void
+ parameter (Direction::Value direction,
+ IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id) = 0;
+
+ virtual void
+ raises (IdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+std::ostream&
+operator<< (std::ostream& o,
+ CCF::IDL2::SemanticAction::Operation::Direction::Value d);
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_OPERATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Struct.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Struct.hpp
new file mode 100644
index 00000000000..00581af6016
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Struct.hpp
@@ -0,0 +1,37 @@
+// file : CCF/IDL2/SemanticAction/Struct.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_STRUCT_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_STRUCT_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Struct : Scope
+ {
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_STRUCT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/TypeId.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/TypeId.hpp
new file mode 100644
index 00000000000..a716961bbf0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/TypeId.hpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL2/SemanticAction/TypeId.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_TYPE_ID_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_TYPE_ID_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct TypeId
+ {
+ virtual void
+ begin (IdentifierPtr const& name, StringLiteralPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+
+
+ struct TypePrefix
+ {
+ virtual void
+ begin (IdentifierPtr const& name, StringLiteralPtr const& prefix) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_TYPE_ID_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp
new file mode 100644
index 00000000000..8e76d3c3a7f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Typedef.hpp
@@ -0,0 +1,52 @@
+// file : CCF/IDL2/SemanticAction/Typedef.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Typedef
+ {
+ virtual void
+ pre (KeywordPtr const& id) = 0;
+
+ virtual void
+ begin (IdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_unbounded_seq (IdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_bounded_seq (IdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_bounded_string () = 0;
+
+ virtual void
+ begin_bounded_wstring () = 0;
+
+ virtual void
+ begin_array () = 0;
+
+ virtual void
+ bound () = 0;
+
+ virtual void
+ declarator (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_TYPEDEF_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Union.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Union.hpp
new file mode 100644
index 00000000000..dac2297294d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/Union.hpp
@@ -0,0 +1,49 @@
+// file : CCF/IDL2/SemanticAction/Union.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_UNION_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_UNION_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct Union : Scope
+ {
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ //@@ Scope declares these functions. Why do I need to
+ // repeat it here?
+ //
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ member_type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ member_name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_UNION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueType.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueType.hpp
new file mode 100644
index 00000000000..9d990567778
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueType.hpp
@@ -0,0 +1,49 @@
+// file : CCF/IDL2/SemanticAction/ValueType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct ValueType : Scope
+ {
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_concrete_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_concrete_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ inherits (IdentifierPtr const& id) = 0;
+
+ virtual void
+ supports (IdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp
new file mode 100644
index 00000000000..4d47407f360
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp
@@ -0,0 +1,32 @@
+// file : CCF/IDL2/SemanticAction/ValueTypeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_FACTORY_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_FACTORY_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct ValueTypeFactory
+ {
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ parameter (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name) = 0;
+
+ virtual void
+ raises (IdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp
new file mode 100644
index 00000000000..9eec25ef934
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp
@@ -0,0 +1,37 @@
+// file : CCF/IDL2/SemanticAction/ValueTypeMember.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_ACTION_VALUE_TYPE_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticAction
+ {
+ struct ValueTypeMember
+ {
+ virtual void
+ begin_private () = 0;
+
+ virtual void
+ begin_public () = 0;
+
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_ACTION_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph.hpp
new file mode 100644
index 00000000000..224b0abb7df
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph.hpp
@@ -0,0 +1,32 @@
+// file : CCF/IDL2/SemanticGraph.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Array.hpp"
+#include "CCF/IDL2/SemanticGraph/Attribute.hpp"
+#include "CCF/IDL2/SemanticGraph/Enum.hpp"
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL2/SemanticGraph/Literals.hpp"
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+#include "CCF/IDL2/SemanticGraph/Name.hpp"
+#include "CCF/IDL2/SemanticGraph/Native.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+#include "CCF/IDL2/SemanticGraph/Sequence.hpp"
+#include "CCF/IDL2/SemanticGraph/String.hpp"
+#include "CCF/IDL2/SemanticGraph/Struct.hpp"
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+#include "CCF/IDL2/SemanticGraph/TypeId.hpp"
+#include "CCF/IDL2/SemanticGraph/Union.hpp"
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+#include "CCF/IDL2/SemanticGraph/ValueTypeMember.hpp"
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.cpp
new file mode 100644
index 00000000000..3847a6b1ae3
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.cpp
@@ -0,0 +1,37 @@
+// file : CCF/IDL2/SemanticGraph/Array.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Array.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Array
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ array_init_ ()
+ {
+ TypeInfo ti (typeid (Array));
+ ti.add_base (
+ Access::PUBLIC, true, Specialization::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo array_ (array_init_ ());
+ }
+
+ TypeInfo const& Array::
+ static_type_info () { return array_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.hpp
new file mode 100644
index 00000000000..baf2e5afe70
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Array.hpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticGraph/Array.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_ARRAY_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_ARRAY_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Array : public virtual Specialization
+ {
+ public:
+ Type&
+ type () const
+ {
+ return
+ dynamic_cast<ArgumentsWithType&> (**arguments_begin ()).type ();
+ }
+
+ // You will have to iterate through Arguments edges starting
+ // from begin + 1 to get to the list of bounds. I suggest that
+ // you use traversal instead.
+ //
+
+ virtual bool
+ complete () const
+ {
+ // Is this the right semantic for arrays?
+ //
+ return type ().complete ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Array (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_ARRAY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.cpp
new file mode 100644
index 00000000000..2b2a99b09fb
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.cpp
@@ -0,0 +1,145 @@
+// file : CCF/IDL2/SemanticGraph/Attribute.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Attribute.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Attribute
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ attribute_init_ ()
+ {
+ TypeInfo ti (typeid (Attribute));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo attribute_ (attribute_init_ ());
+ }
+
+ TypeInfo const& Attribute::
+ static_type_info () { return attribute_; }
+
+ Attribute::
+ ~Attribute ()
+ {
+ }
+
+
+ // GetRaises
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ get_raises_init_ ()
+ {
+ TypeInfo ti (typeid (GetRaises));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo get_raises_ (get_raises_init_ ());
+ }
+
+ TypeInfo const& GetRaises::
+ static_type_info () { return get_raises_; }
+
+
+ // ReadAttribute
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ read_attribute_init_ ()
+ {
+ TypeInfo ti (typeid (ReadAttribute));
+ ti.add_base (Access::PUBLIC, true, Attribute::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo read_attribute_ (read_attribute_init_ ());
+ }
+
+ TypeInfo const& ReadAttribute::
+ static_type_info () { return read_attribute_; }
+
+
+ // SetRaises
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ set_raises_init_ ()
+ {
+ TypeInfo ti (typeid (SetRaises));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo set_raises_ (set_raises_init_ ());
+ }
+
+ TypeInfo const& SetRaises::
+ static_type_info () { return set_raises_; }
+
+
+ // WriteAttribute
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ write_attribute_init_ ()
+ {
+ TypeInfo ti (typeid (WriteAttribute));
+ ti.add_base (Access::PUBLIC, true, Attribute::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo write_attribute_ (write_attribute_init_ ());
+ }
+
+ TypeInfo const& WriteAttribute::
+ static_type_info () { return write_attribute_; }
+
+
+ // ReadWriteAttribute
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ read_write_attribute_init_ ()
+ {
+ TypeInfo ti (typeid (ReadWriteAttribute));
+ ti.add_base (
+ Access::PUBLIC, true, ReadAttribute::static_type_info ());
+ ti.add_base (
+ Access::PUBLIC, true, WriteAttribute::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo read_write_attribute_ (read_write_attribute_init_ ());
+ }
+
+ TypeInfo const& ReadWriteAttribute::
+ static_type_info () { return read_write_attribute_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.hpp
new file mode 100644
index 00000000000..c5f041f5c3d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Attribute.hpp
@@ -0,0 +1,264 @@
+// file : CCF/IDL2/SemanticGraph/Attribute.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_ATTRIBUTE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_ATTRIBUTE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Attribute : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Attribute () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Attribute () = 0;
+ };
+
+
+ //
+ //
+ //
+ class ReadAttribute;
+
+ //
+ //
+ //
+ class GetRaises : public virtual Edge
+ {
+ public:
+ ReadAttribute&
+ attribute () const
+ {
+ return *attribute_;
+ }
+
+ Exception&
+ exception () const
+ {
+ return *exception_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ GetRaises ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (ReadAttribute& a)
+ {
+ attribute_ = &a;
+ }
+
+ void
+ set_right_node (Exception& n)
+ {
+ exception_ = &n;
+ }
+
+ private:
+ ReadAttribute* attribute_;
+ Exception* exception_;
+ };
+
+
+ //
+ //
+ //
+ class ReadAttribute : public virtual Attribute
+ {
+ typedef
+ std::vector<GetRaises*>
+ GetRaises_;
+
+ public:
+ typedef
+ GetRaises_::const_iterator
+ GetRaisesIterator;
+
+ GetRaisesIterator
+ get_raises_begin () const
+ {
+ return get_raises_.begin ();
+ }
+
+ GetRaisesIterator
+ get_raises_end () const
+ {
+ return get_raises_.end ();
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ReadAttribute (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (GetRaises& e)
+ {
+ get_raises_.push_back (&e);
+ }
+
+ private:
+ GetRaises_ get_raises_;
+ };
+
+
+ //
+ //
+ //
+ class WriteAttribute;
+
+ //
+ //
+ //
+ class SetRaises : public virtual Edge
+ {
+ public:
+ WriteAttribute&
+ attribute () const
+ {
+ return *attribute_;
+ }
+
+ Exception&
+ exception () const
+ {
+ return *exception_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ SetRaises ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (WriteAttribute& a)
+ {
+ attribute_ = &a;
+ }
+
+ void
+ set_right_node (Exception& n)
+ {
+ exception_ = &n;
+ }
+
+ private:
+ WriteAttribute* attribute_;
+ Exception* exception_;
+ };
+
+
+ class WriteAttribute : public virtual Attribute
+ {
+ typedef
+ std::vector<SetRaises*>
+ SetRaises_;
+
+ public:
+ typedef
+ SetRaises_::const_iterator
+ SetRaisesIterator;
+
+ SetRaisesIterator
+ set_raises_begin () const
+ {
+ return set_raises_.begin ();
+ }
+
+ SetRaisesIterator
+ set_raises_end () const
+ {
+ return set_raises_.end ();
+ }
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ WriteAttribute (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (SetRaises& e)
+ {
+ set_raises_.push_back (&e);
+ }
+
+ private:
+ SetRaises_ set_raises_;
+ };
+
+
+ //
+ //
+ //
+ class ReadWriteAttribute : public virtual ReadAttribute,
+ public virtual WriteAttribute
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ReadWriteAttribute (Path const& path, unsigned long line)
+ : Node (path, line),
+ ReadAttribute (path, line),
+ WriteAttribute (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_ATTRIBUTE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.cpp
new file mode 100644
index 00000000000..824c7634404
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.cpp
@@ -0,0 +1,656 @@
+// file : CCF/IDL2/SemanticGraph/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+#include <ostream>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Edge
+ //
+ //
+ Edge::
+ ~Edge ()
+ {
+ }
+
+ Edge::
+ Edge ()
+ {
+ type_info (static_type_info ());
+ }
+
+ namespace
+ {
+ TypeInfo
+ edge_init_ ()
+ {
+ TypeInfo ti (typeid (Edge));
+ // I don't really need this information
+ // ti.add_base (Access::PUBLIC, true, Object::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo edge_ (edge_init_ ());
+ }
+
+ TypeInfo const& Edge::
+ static_type_info () { return edge_; }
+
+
+ // Node
+ //
+ //
+ Node::
+ ~Node ()
+ {
+ }
+
+ Node::
+ Node (Path const& file, unsigned long line)
+ : file_ (file), line_ (line)
+ {
+ type_info (static_type_info ());
+ }
+
+ Node::
+ Node ()
+ {
+ abort (); // This ctor should never be called.
+ }
+
+ namespace
+ {
+ TypeInfo
+ node_init_ ()
+ {
+ TypeInfo ti (typeid (Node));
+ // I don't really need this information
+ // ti.add_base (Access::PUBLIC, true, Object::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo node_ (node_init_ ());
+ }
+
+ TypeInfo const& Node::
+ static_type_info () { return node_; }
+
+
+ // Names
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ names_init_ ()
+ {
+ TypeInfo ti (typeid (Names));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo names_ (names_init_ ());
+ }
+
+ TypeInfo const& Names::
+ static_type_info () { return names_; }
+
+
+ // Defines
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ defines_init_ ()
+ {
+ TypeInfo ti (typeid (Defines));
+ ti.add_base (
+ Access::PUBLIC, true, Names::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo defines_ (defines_init_ ());
+ }
+
+ TypeInfo const& Defines::
+ static_type_info () { return defines_; }
+
+
+ // Mentions
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ mentions_init_ ()
+ {
+ TypeInfo ti (typeid (Mentions));
+ ti.add_base (Access::PUBLIC, true, Names::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo mentions_ (mentions_init_ ());
+ }
+
+ TypeInfo const& Mentions::
+ static_type_info () { return mentions_; }
+
+
+ // Aliases
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ aliases_init_ ()
+ {
+ TypeInfo ti (typeid (Aliases));
+ ti.add_base (
+ Access::PUBLIC, true, Names::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo aliases_ (aliases_init_ ());
+ }
+
+ TypeInfo const& Aliases::
+ static_type_info () { return aliases_; }
+
+
+ // Nameable
+ //
+ //
+
+ Nameable::
+ ~Nameable ()
+ {
+ }
+
+ SimpleName Nameable::
+ name () const
+ {
+ // The first entry should either be Mentions or Defines
+ // and it is the 'primary' name of the nameable entity.
+ //
+ return named_[0]->name ();
+ }
+
+ ScopedName Nameable::
+ scoped_name () const
+ {
+ // In general, scope that named us is named, in turn,
+ // by somebody else.
+ //
+ return ScopedName (named_[0]->scope ().scoped_name (), name ());
+ }
+
+ namespace
+ {
+ TypeInfo
+ nameable_init_ ()
+ {
+ TypeInfo ti (typeid (Nameable));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo nameable_ (nameable_init_ ());
+ }
+
+ TypeInfo const& Nameable::
+ static_type_info () { return nameable_; }
+
+
+ // Extends
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ extends_init_ ()
+ {
+ TypeInfo ti (typeid (Extends));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo extends_ (extends_init_ ());
+ }
+
+ TypeInfo const& Extends::
+ static_type_info () { return extends_; }
+
+
+ // Scope
+ //
+ //
+ Scope::
+ ~Scope ()
+ {
+ }
+
+ Nameables Scope::
+ lookup (Name const& name) const
+ {
+ Nameables r;
+ lookup (name, r);
+ return r;
+ }
+
+ void Scope::
+ lookup (Name const& name, Nameables& result) const
+ {
+ SimpleName first (*name.begin ());
+
+ NamesIteratorPair pair (find (first));
+
+ if (pair.first != pair.second) // Found something.
+ {
+ if (name.simple ()) // last name
+ {
+ for (NamesIterator n (pair.first); n != pair.second; ++n)
+ {
+ result.insert (&((**n).named ()));
+ }
+ }
+ else
+ {
+ Name rest (name.begin () + 1, name.end ());
+
+ for (NamesIterator n (pair.first); n != pair.second; ++n)
+ {
+ Nameable& node ((**n).named ());
+ if (Scope* s = dynamic_cast<Scope*> (&node))
+ {
+ s->lookup (rest, result);
+ }
+ }
+ }
+ }
+ else // Try scopes that we are an extension of.
+ {
+ for (ExtendsIterator i (extends_begin ()), e (extends_end ());
+ i != e; ++i)
+ {
+ (**i).extendee ().lookup (name, result);
+ }
+ }
+ }
+
+ void Scope::
+ add_edge_left (Names& e)
+ {
+ names_.push_back (&e);
+ names_map_[e.name ()].push_back (&e);
+ }
+
+ namespace
+ {
+ TypeInfo
+ scope_init_ ()
+ {
+ TypeInfo ti (typeid (Scope));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo scope_ (scope_init_ ());
+ }
+
+ TypeInfo const& Scope::
+ static_type_info () { return scope_; }
+
+
+ // Type
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ type_init_ ()
+ {
+ TypeInfo ti (typeid (Type));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo type_ (type_init_ ());
+ }
+
+ TypeInfo const& Type::
+ static_type_info () { return type_; }
+
+ Type::
+ ~Type ()
+ {
+ }
+
+ // Instance
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ instance_init_ ()
+ {
+ TypeInfo ti (typeid (Instance));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo instance_ (instance_init_ ());
+ }
+
+ TypeInfo const& Instance::
+ static_type_info () { return instance_; }
+
+ Instance::
+ ~Instance ()
+ {
+ }
+
+ // Belongs
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ belongs_init_ ()
+ {
+ TypeInfo ti (typeid (Belongs));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo belongs_ (belongs_init_ ());
+ }
+
+ TypeInfo const& Belongs::
+ static_type_info () { return belongs_; }
+
+
+ // Specialization
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ specialization_init_ ()
+ {
+ TypeInfo ti (typeid (Specialization));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo specialization_ (
+ specialization_init_ ());
+ }
+
+ TypeInfo const& Specialization::
+ static_type_info () { return specialization_; }
+
+ void Specialization::
+ add_edge_right (ArgumentsWithType& e)
+ {
+ arguments_.push_back (&e);
+ }
+
+ void Specialization::
+ add_edge_right (ArgumentsWithValue& e)
+ {
+ arguments_.push_back (&e);
+ }
+
+ Specialization::
+ ~Specialization ()
+ {
+ }
+
+
+ // Arguments
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ arguments_init_ ()
+ {
+ TypeInfo ti (typeid (Arguments));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo arguments_ (arguments_init_ ());
+ }
+
+ TypeInfo const& Arguments::
+ static_type_info () { return arguments_; }
+
+
+ // ArgumentsWithType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ arguments_with_type_init_ ()
+ {
+ TypeInfo ti (typeid (ArgumentsWithType));
+ ti.add_base (Access::PUBLIC, true, Arguments::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo arguments_with_type_ (arguments_with_type_init_ ());
+ }
+
+ TypeInfo const& ArgumentsWithType::
+ static_type_info () { return arguments_with_type_; }
+
+
+ // ArgumentsWithValue
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ arguments_with_value_init_ ()
+ {
+ TypeInfo ti (typeid (ArgumentsWithValue));
+ ti.add_base (Access::PUBLIC, true, Arguments::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo arguments_with_value_ (arguments_with_value_init_ ());
+ }
+
+ TypeInfo const& ArgumentsWithValue::
+ static_type_info () { return arguments_with_value_; }
+
+ Expression& ArgumentsWithValue::
+ value () const
+ {
+ return dynamic_cast<Expression&> (argument ());
+ }
+
+ void ArgumentsWithValue::
+ set_left_node (Expression& n)
+ {
+ Arguments::set_left_node (n);
+ }
+
+ // IsA
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ is_a_init_ ()
+ {
+ TypeInfo ti (typeid (IsA));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo is_a_ (is_a_init_ ());
+ }
+
+ TypeInfo const& IsA::
+ static_type_info () { return is_a_; }
+
+
+ // Inherits
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ inherits_init_ ()
+ {
+ TypeInfo ti (typeid (Inherits));
+ ti.add_base (Access::PUBLIC, true, IsA::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo inherits_ (inherits_init_ ());
+ }
+
+ TypeInfo const& Inherits::
+ static_type_info () { return inherits_; }
+
+
+ // Initializes
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ initializes_init_ ()
+ {
+ TypeInfo ti (typeid (Initializes));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo initializes_ (initializes_init_ ());
+ }
+
+ TypeInfo const& Initializes::
+ static_type_info () { return initializes_; }
+
+
+ // Expression
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ expression_init_ ()
+ {
+ TypeInfo ti (typeid (Expression));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo expression_ (expression_init_ ());
+ }
+
+ TypeInfo const& Expression::
+ static_type_info () { return expression_; }
+
+ Expression::
+ ~Expression ()
+ {
+ }
+
+
+ // Const
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ const_init_ ()
+ {
+ TypeInfo ti (typeid (Const));
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Expression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo const_ (const_init_ ());
+ }
+
+ TypeInfo const& Const::
+ static_type_info () { return const_; }
+
+ Const::
+ ~Const ()
+ {
+ }
+
+ // Contains
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ contains_init_ ()
+ {
+ TypeInfo ti (typeid (Contains));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo contains_ (contains_init_ ());
+ }
+
+ TypeInfo const& Contains::
+ static_type_info () { return contains_; }
+
+
+ // Container
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ container_init_ ()
+ {
+ TypeInfo ti (typeid (Container));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo container_ (container_init_ ());
+ }
+
+ TypeInfo const& Container::
+ static_type_info () { return container_; }
+
+ Container::
+ ~Container ()
+ {
+ }
+ }
+ }
+}
+
+//
+//
+std::ostream&
+operator<< (std::ostream& os, CCF::IDL2::SemanticGraph::Path const& path)
+{
+ return os << path.native_file_string ();
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.hpp
new file mode 100644
index 00000000000..1f0c850f25e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.hpp
@@ -0,0 +1,1078 @@
+// file : CCF/IDL2/SemanticGraph/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_ELEMENTS_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_ELEMENTS_HPP
+
+#include <set>
+#include <vector>
+#include <iosfwd>
+
+#include "Graph.hpp"
+
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Introspection.hpp"
+#include "CCF/CompilerElements/Context.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Name.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ typedef fs::path Path;
+
+ //
+ //
+ //
+
+ class Node;
+ class Edge;
+
+
+ // Node & Edge
+ //
+ //
+ class Edge : public virtual Introspection::Object
+ {
+ public:
+ CompilerElements::Context const&
+ context () const
+ {
+ return context_;
+ }
+
+ CompilerElements::Context&
+ context ()
+ {
+ return context_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ virtual
+ ~Edge ();
+
+ Edge ();
+
+ private:
+ CompilerElements::Context context_;
+ };
+
+ inline bool
+ operator== (Edge const& x, Edge const& y)
+ {
+ return &x == &y;
+ }
+
+ class Node : public virtual Introspection::Object
+ {
+ public:
+ CompilerElements::Context const&
+ context () const
+ {
+ return context_;
+ }
+
+ CompilerElements::Context&
+ context ()
+ {
+ return context_;
+ }
+
+ public:
+ Path const&
+ file () const
+ {
+ return file_;
+ }
+
+ unsigned long
+ line () const
+ {
+ return line_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ virtual
+ ~Node () = 0;
+
+ Node (Path const& path, unsigned long line);
+
+ Node (); // For virtual inheritance only.
+
+ // This is a bunch of experimantal sink functions that allow
+ // extensions in the form of one-way edges (see Executor stuff
+ // in CIDL for example).
+ //
+ void
+ add_edge_left (Edge&)
+ {
+ }
+
+ void
+ add_edge_right (Edge&)
+ {
+ }
+
+ private:
+ Path file_;
+ unsigned long line_;
+ CompilerElements::Context context_;
+ };
+
+ inline bool
+ operator== (Node const& x, Node const& y)
+ {
+ return &x == &y;
+ }
+
+
+ //
+ //
+ //
+ class Scope;
+ class Nameable;
+
+ class Names : public virtual Edge
+ {
+ public:
+ SimpleName
+ name () const
+ {
+ return name_;
+ }
+
+ Scope&
+ scope () const
+ {
+ return *scope_;
+ }
+
+ Nameable&
+ named () const
+ {
+ return *named_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Names (SimpleName const& name)
+ : name_ (name)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Scope& n)
+ {
+ scope_ = &n;
+ }
+
+ void
+ set_right_node (Nameable& n)
+ {
+ named_ = &n;
+ }
+
+ private:
+ Scope* scope_;
+ Nameable* named_;
+ SimpleName name_;
+ };
+
+ class Defines : public virtual Names
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Defines (SimpleName const& name)
+ : Names (name)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class Mentions : public virtual Names
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Mentions (SimpleName const& name)
+ : Names (name)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class Aliases : public virtual Names
+ {
+ public:
+ SimpleName
+ synonym () const
+ {
+ return name ();
+ }
+
+ /*
+
+ Let me know if you need this function.
+
+ ScopedName
+ eponym () const
+ {
+ }
+ */
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Aliases (SimpleName const& synonym)
+ : Names (synonym)
+
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class Nameable : public virtual Node
+ {
+ typedef
+ std::vector<Names*>
+ Named_;
+
+ public:
+ virtual SimpleName
+ name () const;
+
+ virtual ScopedName
+ scoped_name () const;
+
+ bool
+ defined () const
+ {
+ return defined_;
+ }
+
+ typedef
+ Named_::const_iterator
+ NamedIterator;
+
+ NamedIterator
+ named_begin () const
+ {
+ return named_.begin ();
+ }
+
+ NamedIterator
+ named_end () const
+ {
+ return named_.end ();
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Nameable () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Nameable () = 0;
+
+ void
+ add_edge_right (Defines& e)
+ {
+ defined_ = true;
+ named_.push_back (&e);
+ }
+
+ void
+ add_edge_right (Names& e)
+ {
+ named_.push_back (&e);
+ }
+
+ private:
+ Named_ named_;
+ bool defined_;
+ };
+
+ typedef
+ std::set<Nameable*>
+ Nameables;
+
+ class Scope;
+
+ class Extends : public virtual Edge
+ {
+ public:
+ Scope& extender () const
+ {
+ return *extender_;
+ }
+
+ Scope& extendee () const
+ {
+ return *extendee_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Extends ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Scope& s)
+ {
+ extender_ = &s;
+ }
+
+ void
+ set_right_node (Scope& s)
+ {
+ extendee_ = &s;
+ }
+
+ private:
+ Scope* extender_;
+ Scope* extendee_;
+ };
+
+ class Scope : public virtual Nameable
+ {
+ private:
+ typedef
+ std::vector<Extends*>
+ Extends_;
+
+ typedef
+ std::vector<Names*>
+ Names_;
+
+ typedef
+ std::map<SimpleName, Names_>
+ NamesMap_;
+
+ public:
+ //
+ //
+ typedef
+ Extends_::const_iterator
+ ExtendsIterator;
+
+ ExtendsIterator
+ extends_begin () const
+ {
+ return extends_.begin ();
+ }
+
+ ExtendsIterator
+ extends_end () const
+ {
+ return extends_.end ();
+ }
+
+
+ //
+ //
+ typedef
+ Names_::const_iterator
+ NamesIterator;
+
+ typedef
+ std::pair <NamesIterator, NamesIterator>
+ NamesIteratorPair;
+
+ NamesIterator
+ names_begin () const
+ {
+ return names_.begin ();
+ }
+
+ NamesIterator
+ names_end () const
+ {
+ return names_.end ();
+ }
+
+ NamesIteratorPair
+ find (SimpleName const& name) const
+ {
+ NamesMap_::const_iterator i (names_map_.find (name));
+ if (i == names_map_.end ())
+ {
+ return NamesIteratorPair (names_.end (), names_.end ());
+ }
+ else
+ {
+ return NamesIteratorPair (i->second.begin (), i->second.end ());
+ }
+ }
+
+ Nameables
+ lookup (Name const& name) const;
+
+ void
+ lookup (Name const& name, Nameables& result) const;
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Scope () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Scope () = 0;
+
+ void
+ add_edge_left (Names& e);
+
+ void
+ add_edge_left (Extends& e)
+ {
+ extends_.push_back (&e);
+ }
+
+ void
+ add_edge_right (Extends&)
+ {
+ }
+
+ using Nameable::add_edge_right;
+
+ private:
+ Extends_ extends_;
+
+ Names_ names_;
+ NamesMap_ names_map_;
+ };
+
+
+
+ //
+ //
+ //
+ class Belongs;
+ class ArgumentsWithType;
+
+ //@@ I can make an alias Classifies for Belongs?
+ //
+
+ class Type : public virtual Nameable
+ {
+ public:
+ virtual bool
+ complete () const = 0;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Type () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Type () = 0;
+
+ using Nameable::add_edge_right;
+
+ void
+ add_edge_right (Belongs& e)
+ {
+ slassifies_.push_back (&e);
+ }
+
+ void
+ add_edge_left (ArgumentsWithType&)
+ {
+ }
+
+ using Node::add_edge_right;
+ using Node::add_edge_left;
+
+ private:
+ typedef
+ std::vector<Belongs*>
+ Classifies_;
+
+ Classifies_ slassifies_;
+ };
+
+
+ class Instance : public virtual Node
+ {
+ public:
+ Belongs&
+ belongs () const
+ {
+ return *belongs_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Instance () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Instance () = 0;
+
+ void
+ add_edge_left (Belongs& e)
+ {
+ belongs_ = &e;
+ }
+
+ private:
+ Belongs* belongs_;
+ };
+
+
+ class Belongs : public virtual Edge
+ {
+ public:
+ Instance&
+ instance () const
+ {
+ return *instance_;
+ }
+
+ Type&
+ type () const
+ {
+ return *type_;
+ }
+
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Belongs ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Instance& n)
+ {
+ instance_ = &n;
+ }
+
+ void
+ set_right_node (Type& n)
+ {
+ type_ = &n;
+ }
+
+ private:
+ Instance* instance_;
+ Type* type_;
+ };
+
+
+ //
+ //
+ class Arguments;
+ class ArgumentsWithType;
+ class ArgumentsWithValue;
+
+ class Specialization: public virtual Type
+ {
+ typedef
+ std::vector<Arguments*>
+ Arguments_;
+
+ public:
+ typedef
+ Arguments_::const_iterator
+ ArgumentsIterator;
+
+ ArgumentsIterator
+ arguments_begin () const
+ {
+ return arguments_.begin ();
+ }
+
+ ArgumentsIterator
+ arguments_end () const
+ {
+ return arguments_.end ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Specialization () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Specialization () = 0;
+
+ void
+ add_edge_right (ArgumentsWithType& e);
+
+ void
+ add_edge_right (ArgumentsWithValue& e);
+
+ private:
+ Arguments_ arguments_;
+ };
+
+
+ class Arguments: public virtual Edge
+ {
+ public:
+ Specialization&
+ specialization () const
+ {
+ return *specialization_;
+ }
+
+ Node&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Arguments ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Node& n)
+ {
+ argument_ = &n;
+ }
+
+ void
+ set_right_node (Specialization& n)
+ {
+ specialization_ = &n;
+ }
+
+ private:
+ Specialization* specialization_;
+ Node* argument_;
+ };
+
+ class ArgumentsWithType: public virtual Arguments
+ {
+ public:
+ Type&
+ type () const
+ {
+ return dynamic_cast<Type&> (argument ());
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ArgumentsWithType ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Type& n)
+ {
+ Arguments::set_left_node (n);
+ }
+ };
+
+ class Expression;
+
+ class ArgumentsWithValue: public virtual Arguments
+ {
+ public:
+ Expression&
+ value () const;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ArgumentsWithValue ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Expression& n);
+ };
+
+ //
+ //
+ //
+ class IsA : public virtual Edge
+ {
+ public:
+ virtual Type&
+ subject () const
+ {
+ return *subject_;
+ }
+
+ virtual Type&
+ object () const
+ {
+ return *object_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IsA ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Type& n)
+ {
+ subject_ = &n;
+ }
+
+ void
+ set_right_node (Type& n)
+ {
+ object_ = &n;
+ }
+
+ private:
+ Type* subject_;
+ Type* object_;
+ };
+
+
+ //
+ //
+ //
+ class Inherits : public virtual IsA
+ {
+ public:
+ virtual Type&
+ inheritor () const
+ {
+ return subject ();
+ }
+
+ virtual Type&
+ inheritee () const
+ {
+ return object ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Inherits ()
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+
+ class Expression;
+ class Const;
+
+ class Initializes: public virtual Edge
+ {
+ public:
+ Expression&
+ expression () const
+ {
+ return *expression_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Initializes ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Expression& e)
+ {
+ expression_ = &e;
+ }
+
+ void
+ set_right_node (Const&)
+ {
+ }
+
+ private:
+ Expression* expression_;
+ };
+
+
+ class Expression: public virtual Node
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Expression () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Expression () = 0;
+
+ void
+ add_edge_left (Initializes&)
+ {
+ }
+
+ void
+ add_edge_left (ArgumentsWithValue&)
+ {
+ }
+ };
+
+
+ class Const: public virtual Instance,
+ public virtual Nameable,
+ public virtual Expression
+ {
+ public:
+ Initializes&
+ initialized () const
+ {
+ return *initialized_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Const () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Const () = 0;
+
+ using Instance::add_edge_left;
+ using Expression::add_edge_left;
+
+ void
+ add_edge_right (Initializes& i)
+ {
+ initialized_ = &i;
+ }
+
+ using Nameable::add_edge_right;
+
+ private:
+ Initializes* initialized_;
+ };
+
+
+ //
+ //
+ //
+
+ class Container;
+
+ class Contains : public virtual Edge
+ {
+ public:
+ Node&
+ element () const
+ {
+ return *element_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Contains ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Container& n)
+ {
+ container_ = &n;
+ }
+
+ void
+ set_right_node (Node& n)
+ {
+ element_ = &n;
+ }
+
+ private:
+ Container* container_;
+ Node* element_;
+ };
+
+
+ class Container : public virtual Node
+ {
+ typedef
+ std::vector<Contains*>
+ Contains_;
+
+ public:
+ typedef
+ Contains_::const_iterator
+ ContainsIterator;
+
+ ContainsIterator
+ contains_begin () const
+ {
+ return contains_.begin ();
+ }
+
+ ContainsIterator
+ contains_end () const
+ {
+ return contains_.end ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Container () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Container () = 0;
+
+ void
+ add_edge_left (Contains& e)
+ {
+ contains_.push_back (&e);
+ }
+
+ private:
+ Contains_ contains_;
+ };
+ }
+ }
+}
+
+// ADL won't find it because Path is a typedef. Note that this
+// function prints in native format.
+//
+std::ostream&
+operator<< (std::ostream& os, CCF::IDL2::SemanticGraph::Path const& path);
+
+#include "CCF/IDL2/SemanticGraph/Elements.tpp"
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.tpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.tpp
new file mode 100644
index 00000000000..a3a1615fe85
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Elements.tpp
@@ -0,0 +1,14 @@
+// file : CCF/IDL2/SemanticGraph/Elements.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ }
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.cpp
new file mode 100644
index 00000000000..e5de88c449e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.cpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticGraph/Enum.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Enum.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Enum
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ enum_init_ ()
+ {
+ TypeInfo ti (typeid (Enum));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo enum_ (enum_init_ ());
+ }
+
+ TypeInfo const& Enum::
+ static_type_info () { return enum_; }
+
+
+ // Enumerator
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ enumerator_init_ ()
+ {
+ TypeInfo ti (typeid (Enumerator));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo enumerator_ (enumerator_init_ ());
+ }
+
+ TypeInfo const& Enumerator::
+ static_type_info () { return enumerator_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.hpp
new file mode 100644
index 00000000000..9179b471791
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Enum.hpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticGraph/Enum.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_ENUM_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_ENUM_HPP
+
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Enum : public virtual Type
+ {
+ public:
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Enum (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class Enumerator : public virtual Nameable, public virtual IntConst
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Enumerator (Path const& path, unsigned long line)
+ : Node (path, line), IntConst (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_ENUM_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.cpp
new file mode 100644
index 00000000000..9ed3a7e494b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.cpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/SemanticGraph/Exception.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ exception_init_ ()
+ {
+ TypeInfo ti (typeid (Exception));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo exception_ (exception_init_ ());
+ }
+
+ TypeInfo const& Exception::
+ static_type_info () { return exception_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.hpp
new file mode 100644
index 00000000000..712cdf1ca8a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Exception.hpp
@@ -0,0 +1,51 @@
+// file : CCF/IDL2/SemanticGraph/Exception.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_EXCEPTION_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_EXCEPTION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Raises;
+
+ class Exception : public virtual Type, public virtual Scope
+ {
+ public:
+ virtual bool
+ complete () const
+ {
+ return defined ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Exception (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+
+ void
+ add_edge_right (Raises&)
+ {
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_EXCEPTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp
new file mode 100644
index 00000000000..789accfe3b9
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp
@@ -0,0 +1,443 @@
+// file : CCF/IDL2/SemanticGraph/Fundamental.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Note, that this file is automatically generated!
+//
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // FundamentalType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ fundamental_type_init_ ()
+ {
+ TypeInfo ti (typeid (FundamentalType));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo fundamental_type_ (fundamental_type_init_ ());
+ }
+
+ TypeInfo const& FundamentalType::
+ static_type_info () { return fundamental_type_; }
+
+ FundamentalType::
+ ~FundamentalType ()
+ {
+ }
+
+
+ // Object
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ object_init_ ()
+ {
+ TypeInfo ti (typeid (Object));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo object_ (object_init_ ());
+ }
+
+ TypeInfo const& Object::
+ static_type_info () { return object_; }
+
+
+ // ValueBase
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_base_init_ ()
+ {
+ TypeInfo ti (typeid (ValueBase));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo value_base_ (value_base_init_ ());
+ }
+
+ TypeInfo const& ValueBase::
+ static_type_info () { return value_base_; }
+
+
+ // Any
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ any_init_ ()
+ {
+ TypeInfo ti (typeid (Any));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo any_ (any_init_ ());
+ }
+
+ TypeInfo const& Any::
+ static_type_info () { return any_; }
+
+
+ // Boolean
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ boolean_init_ ()
+ {
+ TypeInfo ti (typeid (Boolean));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo boolean_ (boolean_init_ ());
+ }
+
+ TypeInfo const& Boolean::
+ static_type_info () { return boolean_; }
+
+
+ // Char
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ char_init_ ()
+ {
+ TypeInfo ti (typeid (Char));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo char_ (char_init_ ());
+ }
+
+ TypeInfo const& Char::
+ static_type_info () { return char_; }
+
+
+ // Double
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ double_init_ ()
+ {
+ TypeInfo ti (typeid (Double));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo double_ (double_init_ ());
+ }
+
+ TypeInfo const& Double::
+ static_type_info () { return double_; }
+
+
+ // Float
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ float_init_ ()
+ {
+ TypeInfo ti (typeid (Float));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo float_ (float_init_ ());
+ }
+
+ TypeInfo const& Float::
+ static_type_info () { return float_; }
+
+
+ // Long
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ long_init_ ()
+ {
+ TypeInfo ti (typeid (Long));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo long_ (long_init_ ());
+ }
+
+ TypeInfo const& Long::
+ static_type_info () { return long_; }
+
+
+ // LongDouble
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ long_double_init_ ()
+ {
+ TypeInfo ti (typeid (LongDouble));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo long_double_ (long_double_init_ ());
+ }
+
+ TypeInfo const& LongDouble::
+ static_type_info () { return long_double_; }
+
+
+ // LongLong
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ long_long_init_ ()
+ {
+ TypeInfo ti (typeid (LongLong));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo long_long_ (long_long_init_ ());
+ }
+
+ TypeInfo const& LongLong::
+ static_type_info () { return long_long_; }
+
+
+ // Octet
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ octet_init_ ()
+ {
+ TypeInfo ti (typeid (Octet));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo octet_ (octet_init_ ());
+ }
+
+ TypeInfo const& Octet::
+ static_type_info () { return octet_; }
+
+
+ // Short
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ short_init_ ()
+ {
+ TypeInfo ti (typeid (Short));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo short_ (short_init_ ());
+ }
+
+ TypeInfo const& Short::
+ static_type_info () { return short_; }
+
+
+ // String
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ string_init_ ()
+ {
+ TypeInfo ti (typeid (String));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo string_ (string_init_ ());
+ }
+
+ TypeInfo const& String::
+ static_type_info () { return string_; }
+
+
+ // UnsignedLong
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ unsigned_long_init_ ()
+ {
+ TypeInfo ti (typeid (UnsignedLong));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo unsigned_long_ (unsigned_long_init_ ());
+ }
+
+ TypeInfo const& UnsignedLong::
+ static_type_info () { return unsigned_long_; }
+
+
+ // UnsignedLongLong
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ unsigned_long_long_init_ ()
+ {
+ TypeInfo ti (typeid (UnsignedLongLong));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo unsigned_long_long_ (unsigned_long_long_init_ ());
+ }
+
+ TypeInfo const& UnsignedLongLong::
+ static_type_info () { return unsigned_long_long_; }
+
+
+ // UnsignedShort
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ unsigned_short_init_ ()
+ {
+ TypeInfo ti (typeid (UnsignedShort));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo unsigned_short_ (unsigned_short_init_ ());
+ }
+
+ TypeInfo const& UnsignedShort::
+ static_type_info () { return unsigned_short_; }
+
+
+ // Void
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ void_init_ ()
+ {
+ TypeInfo ti (typeid (Void));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo void_ (void_init_ ());
+ }
+
+ TypeInfo const& Void::
+ static_type_info () { return void_; }
+
+
+ // Wchar
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ wchar_init_ ()
+ {
+ TypeInfo ti (typeid (Wchar));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo wchar_ (wchar_init_ ());
+ }
+
+ TypeInfo const& Wchar::
+ static_type_info () { return wchar_; }
+
+
+ // Wstring
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ wstring_init_ ()
+ {
+ TypeInfo ti (typeid (Wstring));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo wstring_ (wstring_init_ ());
+ }
+
+ TypeInfo const& Wstring::
+ static_type_info () { return wstring_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4 b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4
new file mode 100644
index 00000000000..da1d8eca574
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4
@@ -0,0 +1,103 @@
+divert(-1)
+
+# file : CCF/IDL2/SemanticGraph/Fundamental.cpp.m4
+# author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+# cvs-id : $Id$
+
+include(`Fundamental.m4')
+
+define(`fundamental_type',
+ `fundamental_type_impl(`make_class_name(`$1')', `make_var_name(`$1')')')
+
+
+define(`fundamental_type_impl', `
+
+ // $1
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ $2_init_ ()
+ {
+ TypeInfo ti (typeid ($1));
+ ti.add_base (
+ Access::PUBLIC, true, FundamentalType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo $2_ ($2_init_ ());
+ }
+
+ TypeInfo const& $1::
+ static_type_info () { return $2_; }')
+
+divert(0)dnl
+dnl
+dnl
+dnl
+// file : CCF/IDL2/SemanticGraph/Fundamental.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Note, that this file is automatically generated!
+//
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // FundamentalType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ fundamental_type_init_ ()
+ {
+ TypeInfo ti (typeid (FundamentalType));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo fundamental_type_ (fundamental_type_init_ ());
+ }
+
+ TypeInfo const& FundamentalType::
+ static_type_info () { return fundamental_type_; }
+
+ FundamentalType::
+ ~FundamentalType ()
+ {
+ }
+dnl
+fundamental_type(`object')
+fundamental_type(`value base')
+fundamental_type(`any')
+fundamental_type(`boolean')
+fundamental_type(`char')
+fundamental_type(`double')
+fundamental_type(`float')
+fundamental_type(`long')
+fundamental_type(`long double')
+fundamental_type(`long long')
+fundamental_type(`octet')
+fundamental_type(`short')
+fundamental_type(`string')
+fundamental_type(`unsigned long')
+fundamental_type(`unsigned long long')
+fundamental_type(`unsigned short')
+fundamental_type(`void')
+fundamental_type(`wchar')
+fundamental_type(`wstring')
+dnl
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp
new file mode 100644
index 00000000000..a756acc352e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp
@@ -0,0 +1,427 @@
+// file : CCF/IDL2/SemanticGraph/Fundamental.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Note, that this file is automatically generated!
+//
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ // @@ Object & ValueBase should be of interface & valuetype types?
+ //
+ //
+ class FundamentalType : public virtual Type
+ {
+ public:
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ FundamentalType () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~FundamentalType () = 0;
+ };
+
+
+ //
+ //
+ //
+ class Object : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Object (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class ValueBase : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueBase (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Any : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Any (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Boolean : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Boolean (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Char : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Char (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Double : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Double (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Float : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Float (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Long : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Long (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class LongDouble : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ LongDouble (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class LongLong : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ LongLong (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Octet : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Octet (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Short : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Short (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class String : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ String (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class UnsignedLong : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnsignedLong (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class UnsignedLongLong : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnsignedLongLong (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class UnsignedShort : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnsignedShort (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Void : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Void (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Wchar : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Wchar (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Wstring : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Wstring (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4 b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4
new file mode 100644
index 00000000000..864dcd76435
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4
@@ -0,0 +1,102 @@
+divert(-1)
+
+# file : CCF/IDL2/SemanticGraph/Fundamental.hpp.m4
+# author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+# cvs-id : $Id$
+
+include(`Fundamental.m4')
+
+define(`fundamental_type', `fundamental_type_impl(`make_class_name(`$1')', `$1')')
+
+define(`fundamental_type_impl', `
+
+ //
+ //
+ //
+ class $1 : public virtual FundamentalType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ $1 (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };')
+divert(0)dnl
+dnl
+dnl
+dnl
+// file : CCF/IDL2/SemanticGraph/Fundamental.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Note, that this file is automatically generated!
+//
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ // @@ Object & ValueBase should be of interface & valuetype types?
+ //
+ //
+ class FundamentalType : public virtual Type
+ {
+ public:
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ FundamentalType () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~FundamentalType () = 0;
+ };
+dnl
+fundamental_type(`Object')
+fundamental_type(`ValueBase')
+fundamental_type(`any')
+fundamental_type(`boolean')
+fundamental_type(`char')
+fundamental_type(`double')
+fundamental_type(`float')
+fundamental_type(`long')
+fundamental_type(`long double')
+fundamental_type(`long long')
+fundamental_type(`octet')
+fundamental_type(`short')
+fundamental_type(`string')
+fundamental_type(`unsigned long')
+fundamental_type(`unsigned long long')
+fundamental_type(`unsigned short')
+fundamental_type(`void')
+fundamental_type(`wchar')
+fundamental_type(`wstring')
+dnl
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_FUNDAMENTAL_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.m4 b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.m4
new file mode 100644
index 00000000000..5aaab71bd76
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Fundamental.m4
@@ -0,0 +1,17 @@
+# file : CCF/IDL2/SemanticGraph/Fundamental.m4
+# author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+# cvs-id : $Id$
+
+define(`upcase', `translit(`$*', `a-z', `A-Z')')
+
+
+define(`capitalize_word',
+ `regexp(`$1', `^\(.\)\(.*\)', `upcase(`\1')`\2'')')
+
+
+define(`capitalize',
+ `patsubst(`$1', `\w+', `capitalize_word(`\&')')')
+
+define(`make_class_name', `patsubst(capitalize(`$1'), ` ')')
+
+define(`make_var_name', `patsubst(`$1', ` ', `_')')
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.hpp
new file mode 100644
index 00000000000..f71140569de
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.hpp
@@ -0,0 +1,91 @@
+// file : CCF/IDL2/SemanticGraph/Graph.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef ELEMENT_GRAPH_HPP
+#define ELEMENT_GRAPH_HPP
+
+#include <map>
+#include <set>
+#include <vector>
+#include <string>
+#include <memory>
+
+#include <iostream>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ template <typename N, typename E>
+ class Graph
+ {
+ public:
+ ~Graph ();
+
+ public:
+ template <typename T>
+ T&
+ new_node ();
+
+ template <typename T, typename A0>
+ T&
+ new_node (A0 const& a0);
+
+ template <typename T, typename A0, typename A1>
+ T&
+ new_node (A0 const& a0, A1 const& a1);
+
+ template <typename T, typename A0, typename A1, typename A2>
+ T&
+ new_node (A0 const& a0, A1 const& a1, A2 const& a2);
+
+ template <typename T,
+ typename A0,
+ typename A1,
+ typename A2,
+ typename A3>
+ T&
+ new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3);
+
+ void
+ delete_node (N const& n);
+
+ public:
+ template <typename T, typename X, typename Y>
+ T&
+ new_edge (X& left, Y& right);
+
+ template <typename T, typename X, typename Y,
+ typename A0>
+ T&
+ new_edge (X& left, Y& right, A0 const& a0);
+
+ template <typename T, typename X, typename Y,
+ typename A0,
+ typename A1>
+ T&
+ new_edge (X& left, Y& right, A0 const& a0, A1 const& a1);
+
+ void
+ delete_edge (E const& e);
+
+ protected:
+ typedef N* NodePtr;
+ typedef E* EdgePtr;
+
+ typedef std::set<NodePtr> Nodes_;
+ typedef std::set<EdgePtr> Edges_;
+
+ Nodes_ nodes_;
+ Edges_ edges_;
+ };
+ }
+ }
+}
+
+#include "Graph.tpp"
+
+#endif // ELEMENT_GRAPH_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.tpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.tpp
new file mode 100644
index 00000000000..37a952a3f34
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Graph.tpp
@@ -0,0 +1,188 @@
+// file : CCF/IDL2/SemanticGraph/Graph.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ // Graph
+ //
+ //
+
+
+ template <typename N, typename E>
+ template <typename T>
+ T& Graph<N, E>::
+ new_node ()
+ {
+ T* n (new T); //@@ auto
+ nodes_.insert (n);
+ return *n;
+ }
+
+
+ template <typename N, typename E>
+ template <typename T, typename A0>
+ T& Graph<N, E>::
+ new_node (A0 const& a0)
+ {
+ T* n (new T (a0)); //@@ auto
+ nodes_.insert (n);
+ return *n;
+ }
+
+
+ template <typename N, typename E>
+ template <typename T, typename A0, typename A1>
+ T& Graph<N, E>::
+ new_node (A0 const& a0, A1 const& a1)
+ {
+ T* n (new T (a0, a1)); //@@ auto
+ nodes_.insert (n);
+ return *n;
+ }
+
+ template <typename N, typename E>
+ template <typename T, typename A0, typename A1, typename A2>
+ T& Graph<N, E>::
+ new_node (A0 const& a0, A1 const& a1, A2 const& a2)
+ {
+ T* n (new T (a0, a1, a2)); //@@ auto
+ nodes_.insert (n);
+ return *n;
+ }
+
+ template <typename N, typename E>
+ template <typename T,
+ typename A0,
+ typename A1,
+ typename A2,
+ typename A3>
+ T& Graph<N, E>::
+ new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3)
+ {
+ T* n (new T (a0, a1, a2, a3)); //@@ auto
+ nodes_.insert (n);
+ return *n;
+ }
+
+
+ template <typename N, typename E>
+ void Graph<N, E>::
+ delete_node (N const& nr)
+ {
+ N* n (&nr);
+
+ for (E* e (n->remove_edge_ ()); e != 0; e = n->remove_edge_ ())
+ {
+ // One endpoint of the edge has removed this edge from
+ // its edge set. Now handle the other endpoint.
+ //
+ if (e->left_ () == n) e->right_ ()->remove_edge_ (e);
+ else e->left_ ()->remove_edge_ (e);
+
+ // Delete the edge.
+ //
+ edges_.erase (e);
+
+ delete e; //@@ auto
+ }
+
+ nodes_.erase (n);
+
+ delete n; //@@ auto
+ }
+
+
+ template <typename N, typename E>
+ template <typename T, typename X, typename Y>
+ T& Graph<N, E>::
+ new_edge (X& left, Y& right)
+ {
+ T* e (new T); //@@ auto
+
+ e->set_left_node (left);
+ e->set_right_node (right);
+
+ left.add_edge_left (*e);
+ right.add_edge_right (*e);
+
+ edges_.insert (e);
+
+ return *e;
+ }
+
+ template <typename N, typename E>
+ template <typename T, typename X, typename Y,
+ typename A0>
+ T& Graph<N, E>::
+ new_edge (X& left, Y& right, A0 const& a0)
+ {
+ T* e (new T (a0)); //@@ auto
+
+ e->set_left_node (left);
+ e->set_right_node (right);
+
+ left.add_edge_left (*e);
+ right.add_edge_right (*e);
+
+ edges_.insert (e);
+
+ return *e;
+ }
+
+ template <typename N, typename E>
+ template <typename T, typename X, typename Y,
+ typename A0,
+ typename A1>
+ T& Graph<N, E>::
+ new_edge (X& left, Y& right, A0 const& a0, A1 const& a1)
+ {
+ T* e (new T (a0, a1)); //@@ auto
+
+ e->set_left_node (left);
+ e->set_right_node (right);
+
+ left.add_edge_left (*e);
+ right.add_edge_right (*e);
+
+ edges_.insert (e);
+
+ return *e;
+ }
+
+ template <typename N, typename E>
+ void Graph<N, E>::
+ delete_edge (E const& er)
+ {
+ E* e (&er);
+
+ e->left_ ()->remove_edge_ (e);
+ e->right_ ()->remove_edge_ (e);
+
+ edges_.erase (e);
+
+ delete e; //@@ auto
+ }
+
+
+ template <typename N, typename E>
+ Graph<N, E>::
+ ~Graph ()
+ {
+ //@@ auto
+
+ for (typename Edges_::iterator i (edges_.begin ()), end (edges_.end ());
+ i != end;
+ ++i) delete *i;
+
+ for (typename Nodes_::iterator i (nodes_.begin ()), end (nodes_.end ());
+ i != end;
+ ++i) delete *i;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp
new file mode 100644
index 00000000000..a6633df762b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp
@@ -0,0 +1,486 @@
+// file : CCF/IDL2/SemanticGraph/IntExpression.cpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // IntExpression
+ //
+ namespace
+ {
+ TypeInfo
+ int_expression_init_ ()
+ {
+ TypeInfo ti (typeid (IntExpression));
+ ti.add_base (Access::PUBLIC, true, Expression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_expression_ (int_expression_init_ ());
+ }
+
+ TypeInfo const& IntExpression::
+ static_type_info () { return int_expression_; }
+
+ IntExpression::
+ ~IntExpression ()
+ {
+ }
+
+ // IntLiteral
+ //
+ namespace
+ {
+ TypeInfo
+ int_literal_init_ ()
+ {
+ TypeInfo ti (typeid (IntLiteral));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_literal_ (int_literal_init_ ());
+ }
+
+ TypeInfo const& IntLiteral::
+ static_type_info () { return int_literal_; }
+
+
+ // IntConst
+ //
+ namespace
+ {
+ TypeInfo
+ int_const_init_ ()
+ {
+ TypeInfo ti (typeid (IntConst));
+ ti.add_base (Access::PUBLIC, true, Const::static_type_info ());
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_const_ (int_const_init_ ());
+ }
+
+ TypeInfo const& IntConst::
+ static_type_info () { return int_const_; }
+
+
+ // NEG
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_negates_init_ ()
+ {
+ TypeInfo ti (typeid (IntNegates));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_negates_ (int_negates_init_ ());
+ }
+
+ TypeInfo const& IntNegates::
+ static_type_info () { return int_negates_; }
+
+ namespace
+ {
+ TypeInfo
+ int_neg_init_ ()
+ {
+ TypeInfo ti (typeid (IntNeg));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_neg_ (int_neg_init_ ());
+ }
+
+ TypeInfo const& IntNeg::
+ static_type_info () { return int_neg_; }
+
+
+ // COM
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_complements_init_ ()
+ {
+ TypeInfo ti (typeid (IntComplements));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_complements_ (int_complements_init_ ());
+ }
+
+ TypeInfo const& IntComplements::
+ static_type_info () { return int_complements_; }
+
+ namespace
+ {
+ TypeInfo
+ int_com_init_ ()
+ {
+ TypeInfo ti (typeid (IntCom));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_com_ (int_com_init_ ());
+ }
+
+ TypeInfo const& IntCom::
+ static_type_info () { return int_com_; }
+
+
+ // MUL
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_multiplies_init_ ()
+ {
+ TypeInfo ti (typeid (IntMultiplies));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_multiplies_ (int_multiplies_init_ ());
+ }
+
+ TypeInfo const& IntMultiplies::
+ static_type_info () { return int_multiplies_; }
+
+ namespace
+ {
+ TypeInfo
+ int_mul_init_ ()
+ {
+ TypeInfo ti (typeid (IntMul));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_mul_ (int_mul_init_ ());
+ }
+
+ TypeInfo const& IntMul::
+ static_type_info () { return int_mul_; }
+
+
+ // DIV
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_divides_init_ ()
+ {
+ TypeInfo ti (typeid (IntDivides));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_divides_ (int_divides_init_ ());
+ }
+
+ TypeInfo const& IntDivides::
+ static_type_info () { return int_divides_; }
+
+ namespace
+ {
+ TypeInfo
+ int_div_init_ ()
+ {
+ TypeInfo ti (typeid (IntDiv));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_div_ (int_div_init_ ());
+ }
+
+ TypeInfo const& IntDiv::
+ static_type_info () { return int_div_; }
+
+ namespace
+ {
+ TypeInfo
+ int_rem_init_ ()
+ {
+ TypeInfo ti (typeid (IntRem));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_rem_ (int_rem_init_ ());
+ }
+
+ TypeInfo const& IntRem::
+ static_type_info () { return int_rem_; }
+
+
+ // ADD
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_adds_init_ ()
+ {
+ TypeInfo ti (typeid (IntAdds));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_adds_ (int_adds_init_ ());
+ }
+
+ TypeInfo const& IntAdds::
+ static_type_info () { return int_adds_; }
+
+ namespace
+ {
+ TypeInfo
+ int_add_init_ ()
+ {
+ TypeInfo ti (typeid (IntAdd));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_add_ (int_add_init_ ());
+ }
+
+ TypeInfo const& IntAdd::
+ static_type_info () { return int_add_; }
+
+
+ // SUB
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_subtracts_init_ ()
+ {
+ TypeInfo ti (typeid (IntSubtracts));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_subtracts_ (int_subtracts_init_ ());
+ }
+
+ TypeInfo const& IntSubtracts::
+ static_type_info () { return int_subtracts_; }
+
+ namespace
+ {
+ TypeInfo
+ int_sub_init_ ()
+ {
+ TypeInfo ti (typeid (IntSub));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_sub_ (int_sub_init_ ());
+ }
+
+ TypeInfo const& IntSub::
+ static_type_info () { return int_sub_; }
+
+
+ // RSH & LSH
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_shifts_init_ ()
+ {
+ TypeInfo ti (typeid (IntShifts));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_shifts_ (int_shifts_init_ ());
+ }
+
+ TypeInfo const& IntShifts::
+ static_type_info () { return int_shifts_; }
+
+ namespace
+ {
+ TypeInfo
+ int_rsh_init_ ()
+ {
+ TypeInfo ti (typeid (IntRsh));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_rsh_ (int_rsh_init_ ());
+ }
+
+ TypeInfo const& IntRsh::
+ static_type_info () { return int_rsh_; }
+
+ namespace
+ {
+ TypeInfo
+ int_lsh_init_ ()
+ {
+ TypeInfo ti (typeid (IntLsh));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_lsh_ (int_lsh_init_ ());
+ }
+
+ TypeInfo const& IntLsh::
+ static_type_info () { return int_lsh_; }
+
+
+ // AND
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_conjuncts_init_ ()
+ {
+ TypeInfo ti (typeid (IntConjuncts));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_conjuncts_ (int_conjuncts_init_ ());
+ }
+
+ TypeInfo const& IntConjuncts::
+ static_type_info () { return int_conjuncts_; }
+
+ namespace
+ {
+ TypeInfo
+ int_and_init_ ()
+ {
+ TypeInfo ti (typeid (IntAnd));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_and_ (int_and_init_ ());
+ }
+
+ TypeInfo const& IntAnd::
+ static_type_info () { return int_and_; }
+
+
+ // XOR
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_exclusively_disjuncts_init_ ()
+ {
+ TypeInfo ti (typeid (IntExclusivelyDisjuncts));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_exclusively_disjuncts_ (
+ int_exclusively_disjuncts_init_ ());
+ }
+
+ TypeInfo const& IntExclusivelyDisjuncts::
+ static_type_info () { return int_exclusively_disjuncts_; }
+
+ namespace
+ {
+ TypeInfo
+ int_xor_init_ ()
+ {
+ TypeInfo ti (typeid (IntXor));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_xor_ (int_xor_init_ ());
+ }
+
+ TypeInfo const& IntXor::
+ static_type_info () { return int_xor_; }
+
+
+ // OR
+ //
+
+ namespace
+ {
+ TypeInfo
+ int_inclusively_disjuncts_init_ ()
+ {
+ TypeInfo ti (typeid (IntInclusivelyDisjuncts));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_inclusively_disjuncts_ (
+ int_inclusively_disjuncts_init_ ());
+ }
+
+ TypeInfo const& IntInclusivelyDisjuncts::
+ static_type_info () { return int_inclusively_disjuncts_; }
+
+ namespace
+ {
+ TypeInfo
+ int_or_init_ ()
+ {
+ TypeInfo ti (typeid (IntOr));
+ ti.add_base (
+ Access::PUBLIC, true, IntExpression::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo int_or_ (int_or_init_ ());
+ }
+
+ TypeInfo const& IntOr::
+ static_type_info () { return int_or_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp
new file mode 100644
index 00000000000..263563e9bb6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp
@@ -0,0 +1,1013 @@
+// file : CCF/IDL2/SemanticGraph/IntExpression.hpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_INT_EXPRESSION_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_INT_EXPRESSION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ class IntExpression: public virtual Expression
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntExpression () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~IntExpression () = 0;
+ };
+
+
+ //
+ //
+ class IntLiteral: public virtual IntExpression
+ {
+ public:
+ unsigned long long
+ value () const
+ {
+ return value_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntLiteral (Path const& path,
+ unsigned long line,
+ unsigned long long value)
+ : Node (path, line), value_ (value)
+ {
+ type_info (static_type_info ());
+ }
+
+ private:
+ unsigned long long value_;
+ };
+
+
+ //
+ //
+ class IntConst: public virtual Const,
+ public virtual IntExpression
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntConst (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ // NEG
+ //
+
+ class IntNeg;
+
+ class IntNegates: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntNegates ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntNeg&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntNeg: public virtual IntExpression
+ {
+ public:
+ IntNegates&
+ negates () const
+ {
+ return *negates_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntNeg (Path const& path, unsigned long line)
+ : Node (path, line), negates_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntNegates& n)
+ {
+ negates_ = &n;
+ }
+
+ private:
+ IntNegates* negates_;
+ };
+
+
+ // COM
+ //
+
+ class IntCom;
+
+ class IntComplements: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntComplements ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntCom&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntCom: public virtual IntExpression
+ {
+ public:
+ IntComplements&
+ complements () const
+ {
+ return *complements_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntCom (Path const& path, unsigned long line)
+ : Node (path, line), complements_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntComplements& n)
+ {
+ complements_ = &n;
+ }
+
+ private:
+ IntComplements* complements_;
+ };
+
+
+ // MUL
+ //
+
+ class IntMul;
+
+ class IntMultiplies: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntMultiplies ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntMul&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntMul: public virtual IntExpression
+ {
+ public:
+ IntMultiplies&
+ first_factor () const
+ {
+ return *first_factor_;
+ }
+
+ IntMultiplies&
+ second_factor () const
+ {
+ return *second_factor_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntMul (Path const& path, unsigned long line)
+ : Node (path, line),
+ first_factor_ (0),
+ second_factor_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntMultiplies& d)
+ {
+ if (first_factor_ == 0)
+ first_factor_ = &d;
+ else
+ second_factor_ = &d;
+ }
+
+ private:
+ IntMultiplies* first_factor_;
+ IntMultiplies* second_factor_;
+ };
+
+
+ // DIV & REM
+ //
+
+ class IntDiv;
+ class IntRem;
+
+ class IntDivides: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntDivides ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntDiv&)
+ {
+ }
+
+ void
+ set_left_node (IntRem&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntDiv: public virtual IntExpression
+ {
+ public:
+ IntDivides&
+ divident () const
+ {
+ return *divident_;
+ }
+
+ IntDivides&
+ divisor () const
+ {
+ return *divisor_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntDiv (Path const& path, unsigned long line)
+ : Node (path, line),
+ divident_ (0),
+ divisor_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntDivides& d)
+ {
+ if (divident_ == 0)
+ divident_ = &d;
+ else
+ divisor_ = &d;
+ }
+
+ private:
+ IntDivides* divident_;
+ IntDivides* divisor_;
+ };
+
+ class IntRem: public virtual IntExpression
+ {
+ public:
+ IntDivides&
+ divident () const
+ {
+ return *divident_;
+ }
+
+ IntDivides&
+ divisor () const
+ {
+ return *divisor_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntRem (Path const& path, unsigned long line)
+ : Node (path, line),
+ divident_ (0),
+ divisor_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntDivides& d)
+ {
+ if (divident_ == 0)
+ divident_ = &d;
+ else
+ divisor_ = &d;
+ }
+
+ private:
+ IntDivides* divident_;
+ IntDivides* divisor_;
+ };
+
+
+ // ADD
+ //
+
+ class IntAdd;
+
+ class IntAdds: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntAdds ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntAdd&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntAdd: public virtual IntExpression
+ {
+ public:
+ IntAdds&
+ first_item () const
+ {
+ return *first_item_;
+ }
+
+ IntAdds&
+ second_item () const
+ {
+ return *second_item_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntAdd (Path const& path, unsigned long line)
+ : Node (path, line),
+ first_item_ (0),
+ second_item_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntAdds& d)
+ {
+ if (first_item_ == 0)
+ first_item_ = &d;
+ else
+ second_item_ = &d;
+ }
+
+ private:
+ IntAdds* first_item_;
+ IntAdds* second_item_;
+ };
+
+
+ // SUB
+ //
+
+ class IntSub;
+
+ class IntSubtracts: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntSubtracts ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntSub&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntSub: public virtual IntExpression
+ {
+ public:
+ IntSubtracts&
+ minuend () const
+ {
+ return *minuend_;
+ }
+
+ IntSubtracts&
+ subtrahend () const
+ {
+ return *subtrahend_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntSub (Path const& path, unsigned long line)
+ : Node (path, line),
+ minuend_ (0),
+ subtrahend_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntSubtracts& d)
+ {
+ if (minuend_ == 0)
+ minuend_ = &d;
+ else
+ subtrahend_ = &d;
+ }
+
+ private:
+ IntSubtracts* minuend_;
+ IntSubtracts* subtrahend_;
+ };
+
+
+ // RSH & LSH
+ //
+
+ class IntRsh;
+ class IntLsh;
+
+ class IntShifts: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntShifts ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntRsh&)
+ {
+ }
+
+ void
+ set_left_node (IntLsh&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntRsh: public virtual IntExpression
+ {
+ public:
+ IntShifts&
+ pattern () const
+ {
+ return *pattern_;
+ }
+
+ IntShifts&
+ factor () const
+ {
+ return *factor_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntRsh (Path const& path, unsigned long line)
+ : Node (path, line),
+ pattern_ (0),
+ factor_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntShifts& d)
+ {
+ if (pattern_ == 0)
+ pattern_ = &d;
+ else
+ factor_ = &d;
+ }
+
+ private:
+ IntShifts* pattern_;
+ IntShifts* factor_;
+ };
+
+ class IntLsh: public virtual IntExpression
+ {
+ public:
+ IntShifts&
+ pattern () const
+ {
+ return *pattern_;
+ }
+
+ IntShifts&
+ factor () const
+ {
+ return *factor_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntLsh (Path const& path, unsigned long line)
+ : Node (path, line),
+ pattern_ (0),
+ factor_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntShifts& d)
+ {
+ if (pattern_ == 0)
+ pattern_ = &d;
+ else
+ factor_ = &d;
+ }
+
+ private:
+ IntShifts* pattern_;
+ IntShifts* factor_;
+ };
+
+
+ // AND
+ //
+
+ class IntAnd;
+
+ class IntConjuncts: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntConjuncts ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntAnd&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntAnd: public virtual IntExpression
+ {
+ public:
+ IntConjuncts&
+ first_pattern () const
+ {
+ return *first_pattern_;
+ }
+
+ IntConjuncts&
+ second_pattern () const
+ {
+ return *second_pattern_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntAnd (Path const& path, unsigned long line)
+ : Node (path, line),
+ first_pattern_ (0),
+ second_pattern_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntConjuncts& d)
+ {
+ if (first_pattern_ == 0)
+ first_pattern_ = &d;
+ else
+ second_pattern_ = &d;
+ }
+
+ private:
+ IntConjuncts* first_pattern_;
+ IntConjuncts* second_pattern_;
+ };
+
+
+ // XOR
+ //
+
+ class IntXor;
+
+ class IntExclusivelyDisjuncts: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntExclusivelyDisjuncts ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntXor&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntXor: public virtual IntExpression
+ {
+ public:
+ IntExclusivelyDisjuncts&
+ first_pattern () const
+ {
+ return *first_pattern_;
+ }
+
+ IntExclusivelyDisjuncts&
+ second_pattern () const
+ {
+ return *second_pattern_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntXor (Path const& path, unsigned long line)
+ : Node (path, line),
+ first_pattern_ (0),
+ second_pattern_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntExclusivelyDisjuncts& d)
+ {
+ if (first_pattern_ == 0)
+ first_pattern_ = &d;
+ else
+ second_pattern_ = &d;
+ }
+
+ private:
+ IntExclusivelyDisjuncts* first_pattern_;
+ IntExclusivelyDisjuncts* second_pattern_;
+ };
+
+
+ // OR
+ //
+
+ class IntOr;
+
+ class IntInclusivelyDisjuncts: public virtual Edge
+ {
+ public:
+ IntExpression&
+ argument () const
+ {
+ return *argument_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntInclusivelyDisjuncts ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (IntOr&)
+ {
+ }
+
+ void
+ set_right_node (IntExpression& e)
+ {
+ argument_ = &e;
+ }
+
+ private:
+ IntExpression* argument_;
+ };
+
+
+ class IntOr: public virtual IntExpression
+ {
+ public:
+ IntInclusivelyDisjuncts&
+ first_pattern () const
+ {
+ return *first_pattern_;
+ }
+
+ IntInclusivelyDisjuncts&
+ second_pattern () const
+ {
+ return *second_pattern_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ IntOr (Path const& path, unsigned long line)
+ : Node (path, line),
+ first_pattern_ (0),
+ second_pattern_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_left (IntInclusivelyDisjuncts& d)
+ {
+ if (first_pattern_ == 0)
+ first_pattern_ = &d;
+ else
+ second_pattern_ = &d;
+ }
+
+ private:
+ IntInclusivelyDisjuncts* first_pattern_;
+ IntInclusivelyDisjuncts* second_pattern_;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_INT_EXPRESSION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.cpp
new file mode 100644
index 00000000000..4083549f3e2
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.cpp
@@ -0,0 +1,122 @@
+// file : CCF/IDL2/SemanticGraph/Interface.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+
+ // Interface
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ interface_init_ ()
+ {
+ TypeInfo ti (typeid (Interface));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo interface_ (interface_init_ ());
+ }
+
+ TypeInfo const& Interface::
+ static_type_info () { return interface_; }
+
+ Interface::
+ ~Interface ()
+ {
+ }
+
+ // Supports
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ supports_init_ ()
+ {
+ TypeInfo ti (typeid (Supports));
+ ti.add_base (Access::PUBLIC, true, IsA::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo supports_ (supports_init_ ());
+ }
+
+ TypeInfo const& Supports::
+ static_type_info () { return supports_; }
+
+
+ // AbstractInterface
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ abstract_interface_init_ ()
+ {
+ TypeInfo ti (typeid (AbstractInterface));
+ ti.add_base (Access::PUBLIC, true, Interface::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo abstract_interface_ (abstract_interface_init_ ());
+ }
+
+ TypeInfo const& AbstractInterface::
+ static_type_info () { return abstract_interface_; }
+
+
+ // LocalInterface
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ local_interface_init_ ()
+ {
+ TypeInfo ti (typeid (LocalInterface));
+ ti.add_base (Access::PUBLIC, true, Interface::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo local_interface_ (local_interface_init_ ());
+ }
+
+ TypeInfo const& LocalInterface::
+ static_type_info () { return local_interface_; }
+
+
+ // UnconstrainedInterface
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ unconstrained_interface_init_ ()
+ {
+ TypeInfo ti (typeid (UnconstrainedInterface));
+ ti.add_base (Access::PUBLIC, true, Interface::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo unconstrained_interface_ (unconstrained_interface_init_ ());
+ }
+
+ TypeInfo const& UnconstrainedInterface::
+ static_type_info () { return unconstrained_interface_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.hpp
new file mode 100644
index 00000000000..1335b69a6cb
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Interface.hpp
@@ -0,0 +1,181 @@
+// file : CCF/IDL2/SemanticGraph/Interface.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_INTERFACE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_INTERFACE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Interface : public virtual Type, public virtual Scope
+ {
+ typedef
+ std::vector <Inherits*>
+ Inherits_;
+
+ public:
+ typedef
+ Inherits_::const_iterator
+ InheritsIterator;
+
+ InheritsIterator
+ inherits_begin () const
+ {
+ return inherits_.begin ();
+ }
+
+ InheritsIterator
+ inherits_end () const
+ {
+ return inherits_.end ();
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Interface () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Interface () = 0;
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+
+ void
+ add_edge_left (Inherits& e)
+ {
+ inherits_.push_back (&e);
+ }
+
+ void
+ add_edge_right (Inherits&)
+ {
+ }
+
+ private:
+ Inherits_ inherits_;
+ };
+
+
+ //
+ //
+ //
+ class Supports : public virtual IsA
+ {
+ public:
+ virtual Type&
+ supporter () const
+ {
+ return subject ();
+ }
+
+ virtual Type&
+ supportee () const
+ {
+ return object ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Supports ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_right_node (Interface& n)
+ {
+ IsA::set_right_node (n);
+ }
+ };
+
+
+ //
+ //
+ //
+ class AbstractInterface : public virtual Interface
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ AbstractInterface (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class LocalInterface : public virtual Interface
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ LocalInterface (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class UnconstrainedInterface : public virtual Interface
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnconstrainedInterface (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_INTERFACE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.cpp
new file mode 100644
index 00000000000..86c64116b23
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.cpp
@@ -0,0 +1,24 @@
+// file : CCF/IDL2/SemanticGraph/Literals.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Literals.hpp"
+
+#include <ostream>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ }
+ }
+}
+
+std::ostream&
+operator<< (std::ostream& o,
+ CCF::IDL2::SemanticGraph::StringLiteral const& lit)
+{
+ return o << '\"' << lit.literal () << '\"';
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.hpp
new file mode 100644
index 00000000000..b2a350027db
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Literals.hpp
@@ -0,0 +1,56 @@
+// file : CCF/IDL2/SemanticGraph/Literals.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_LITERALS_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_LITERALS_HPP
+
+#include <string>
+#include <iosfwd>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class StringLiteral
+ {
+ public:
+ StringLiteral (std::string const& literal)
+ : literal_ (literal)
+ {
+ }
+
+ std::string
+ literal () const
+ {
+ return literal_;
+ }
+
+ private:
+ std::string literal_;
+ };
+
+ inline bool
+ operator== (StringLiteral const& a, StringLiteral const& b)
+ {
+ return a.literal () == b.literal ();
+ }
+
+ inline bool
+ operator!= (StringLiteral const& a, StringLiteral const& b)
+ {
+ return a.literal () != b.literal ();
+ }
+ }
+ }
+}
+
+std::ostream&
+operator<< (std::ostream&, CCF::IDL2::SemanticGraph::StringLiteral const&);
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_LITERALS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.cpp
new file mode 100644
index 00000000000..597be660772
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.cpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/SemanticGraph/Member.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ member_init_ ()
+ {
+ TypeInfo ti (typeid (Member));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo member_ (member_init_ ());
+ }
+
+ TypeInfo const& Member::
+ static_type_info () { return member_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.hpp
new file mode 100644
index 00000000000..d37f5a5dd74
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Member.hpp
@@ -0,0 +1,35 @@
+// file : CCF/IDL2/SemanticGraph/Member.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Member : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Member (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.cpp
new file mode 100644
index 00000000000..9e7aeb542e4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.cpp
@@ -0,0 +1,33 @@
+// file : CCF/IDL2/SemanticGraph/Module.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ module_init_ ()
+ {
+ TypeInfo ti (typeid (Module));
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo module_ (module_init_ ());
+ }
+
+ TypeInfo const& Module::
+ static_type_info () { return module_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.hpp
new file mode 100644
index 00000000000..8807f2b55bc
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Module.hpp
@@ -0,0 +1,35 @@
+// file : CCF/IDL2/SemanticGraph/Module.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_MODULE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_MODULE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Module : public virtual Scope
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Module (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_MODULE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.cpp
new file mode 100644
index 00000000000..374446661df
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.cpp
@@ -0,0 +1,253 @@
+// file : CCF/IDL2/SemanticGraph/Name.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Name.hpp"
+
+#include <ostream>
+
+/*
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+*/
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+
+ // SimpleName
+ //
+ //
+
+ SimpleName::
+ SimpleName (char const* name) throw (InvalidName)
+ : escaped_ (name[0] == '_'),
+ name_ (escaped_ ? name + 1 : name)
+ {
+ if (name_.find (':') != std::string::npos)
+ throw InvalidName ();
+ }
+
+ SimpleName::
+ SimpleName (std::string const& name) throw (InvalidName)
+ : escaped_ (name[0] == '_'),
+ name_ (name, escaped_ ? 1 : 0)
+ {
+ if (name_.find (':') != std::string::npos)
+ throw InvalidName ();
+ }
+
+ SimpleName
+ operator+ (SimpleName const& name, std::string const& str)
+ {
+ return SimpleName (name.str () + str);
+ }
+
+ SimpleName
+ operator+ (std::string const& str, SimpleName const& name)
+ {
+ return SimpleName (str + name.str ());
+ }
+
+ // Name
+ //
+ //
+ Name::
+ Name (SimpleName const& name)
+ : name_cache_ (name.unescaped_str ())
+ {
+ name_.push_back (name);
+ }
+
+ Name::
+ Name (char const* name) throw (InvalidName)
+ {
+ init (name);
+ }
+
+ Name::
+ Name (std::string const& name) throw (InvalidName)
+ {
+ init (name);
+ }
+
+ void Name::
+ init (std::string const& name) throw (InvalidName)
+ {
+ // cerr << "parsing name \'" << name_cache_ << "\' {"<< endl;
+
+ for (std::string::size_type pos (0), next (name.find ("::", pos));;
+ next = name.find ("::", pos))
+ {
+ std::string simple_name (
+ name,
+ pos,
+ next == std::string::npos ? next : next - pos);
+
+ // cerr << "\t\'" << simple_name << '\'' << endl;
+
+ if (simple_name.empty () && !name_.empty ())
+ {
+ // Empty name (file-scope) is only valid when
+ // it is first.
+ //
+ throw InvalidName ();
+ }
+
+ name_.push_back (SimpleName (simple_name));
+ name_cache_ += (pos != 0 ? "::" : "") +
+ name_.back ().unescaped_str ();
+
+ if (next == std::string::npos)
+ break;
+
+ pos = next + 2;
+ }
+
+ // cerr << "parsing name }" << name_cache_ << endl;
+
+ if (name_.empty ())
+ throw InvalidName ();
+ }
+
+
+ Name::
+ Name (Iterator begin, Iterator end) throw (InvalidName)
+ {
+ for (Iterator i (begin); i != end; ++i)
+ {
+ name_cache_ += (i != begin ? "::" : "") + i->unescaped_str ();
+ name_.push_back (*i);
+ }
+
+ if (name_.empty ())
+ throw InvalidName ();
+ }
+
+ bool Name::
+ scoped () const
+ {
+ return name_[0] == SimpleName ("");
+ }
+
+ bool Name::
+ simple () const
+ {
+ return name_.size () == 1;
+ }
+
+ // ScopedName
+ //
+ //
+
+ ScopedName::
+ ScopedName (char const* name) throw (InvalidName)
+ : Name (name)
+ {
+ if (!scoped ()) throw InvalidName ();
+ }
+
+ ScopedName::
+ ScopedName (std::string const& name) throw (InvalidName)
+ : Name (name)
+ {
+ if (!scoped ()) throw InvalidName ();
+ }
+
+ ScopedName::
+ ScopedName (Iterator begin, Iterator end) throw (InvalidName)
+ : Name (begin, end)
+ {
+ if (!scoped ()) throw InvalidName ();
+ }
+
+ ScopedName::
+ ScopedName (Name const& name) throw (InvalidName)
+ : Name (name)
+ {
+ if (!scoped ()) throw InvalidName ();
+ }
+
+ ScopedName::
+ ScopedName (ScopedName const& scope, Name const& name)
+ throw (InvalidName)
+ : Name (scope.str () + "::" + name.str ())
+ {
+ if (!scoped ()) throw InvalidName ();
+ }
+
+ SimpleName ScopedName::
+ simple_name () const
+ {
+ return *(end () - 1);
+ }
+
+ ScopedName ScopedName::
+ scope_name () const throw (FileScope)
+ {
+ Iterator end (this->end () - 1);
+
+ if (begin () == end) throw FileScope ();
+
+ return ScopedName (begin (), end);
+ }
+
+
+ // NamePrinter
+ //
+ int const name_printer_index = std::ios_base::xalloc ();
+
+ NamePrinter::~NamePrinter ()
+ {
+ }
+
+ void NamePrinter::
+ print (std::ostream& os, Name const& n)
+ {
+ for (Name::Iterator b (n.begin ()), i (b); i != n.end (); ++i)
+ {
+ if (i != b)
+ os << "::";
+
+ print (os, *i);
+ }
+ }
+ }
+ }
+}
+
+std::ostream&
+operator << (std::ostream& o,
+ CCF::IDL2::SemanticGraph::SimpleName const& name)
+{
+ using namespace CCF::IDL2::SemanticGraph;
+
+ if (void* tmp = o.pword (name_printer_index))
+ {
+ NamePrinter* p (reinterpret_cast<NamePrinter*> (tmp));
+ p->print (o, name);
+ return o;
+ }
+ else
+ return o << name.str ();
+}
+
+std::ostream&
+operator << (std::ostream& o, CCF::IDL2::SemanticGraph::Name const& name)
+{
+ using namespace CCF::IDL2::SemanticGraph;
+
+ if (void* tmp = o.pword (name_printer_index))
+ {
+ NamePrinter* p (reinterpret_cast<NamePrinter*> (tmp));
+ p->print (o, name);
+ return o;
+ }
+ else
+ return o << name.str ();
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.hpp
new file mode 100644
index 00000000000..50dd752aa6a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Name.hpp
@@ -0,0 +1,239 @@
+// file : CCF/IDL2/SemanticGraph/Name.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_NAME_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_NAME_HPP
+
+#include <vector>
+#include <string>
+#include <iosfwd>
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //@@ better names for names: maybe SimpleName, ScopedName, FullName?
+ //
+ //
+
+ class InvalidName {};
+
+ class SimpleName
+ {
+ public:
+ SimpleName (char const* name) throw (InvalidName);
+ SimpleName (std::string const& name) throw (InvalidName);
+
+ public:
+ // Comparisons are escape-insensitive.
+ //
+ bool
+ operator< (SimpleName const& other) const
+ {
+ return name_ < other.name_;
+ }
+
+ bool
+ operator== (SimpleName const& other) const
+ {
+ return name_ == other.name_;
+ }
+
+ bool
+ operator!= (SimpleName const& other) const
+ {
+ return name_ != other.name_;
+ }
+
+ public:
+ bool
+ escaped () const
+ {
+ return escaped_;
+ }
+
+ std::string
+ str () const
+ {
+ return (escaped_ ? "_" : "") + name_;
+ }
+
+ std::string
+ unescaped_str () const
+ {
+ return name_;
+ }
+
+ private:
+ bool escaped_;
+ std::string name_;
+ };
+
+ // The following operators preserve escaping.
+ //
+ SimpleName
+ operator+ (SimpleName const& name, std::string const& str);
+
+ SimpleName
+ operator+ (std::string const& str, SimpleName const& name);
+
+
+ //
+ //
+ //
+ class Name
+ {
+ typedef
+ std::vector<SimpleName>
+ Name_;
+
+ public:
+ Name (SimpleName const& name);
+
+ Name (char const* name) throw (InvalidName);
+ Name (std::string const& name) throw (InvalidName);
+
+ typedef
+ Name_::const_iterator
+ Iterator;
+
+ Name (Iterator begin, Iterator end) throw (InvalidName);
+
+ public:
+ // Comparisons are escape-insensitive.
+ //
+ bool
+ operator< (Name const& other) const
+ {
+ return name_cache_ < other.name_cache_;
+ }
+
+ bool
+ operator== (Name const& other) const
+ {
+ return name_cache_ == other.name_cache_;
+ }
+
+ bool
+ operator!= (Name const& other) const
+ {
+ return name_cache_ != other.name_cache_;
+ }
+
+ public:
+ Iterator
+ begin () const
+ {
+ return name_.begin ();
+ }
+
+ Iterator
+ end () const
+ {
+ return name_.end ();
+ }
+
+ public:
+ bool
+ scoped () const;
+
+ bool
+ simple () const;
+
+ public:
+ std::string
+ str () const
+ {
+ std::string r;
+
+ for (Iterator b (begin ()), i (b), e (end ()); i != e; ++i)
+ r += (i != b ? "::" : "") + i->str ();
+
+ return r;
+ }
+
+ std::string
+ unescaped_str () const
+ {
+ return name_cache_;
+ }
+
+ private:
+ void
+ init (std::string const& name) throw (InvalidName);
+
+ private:
+ Name_ name_;
+ std::string name_cache_; // Unescaped name cache.
+ };
+
+ // Should always start with "::". Can be just "::" which
+ // means it's a file-scope.
+ //
+ //
+ class ScopedName : public Name
+ {
+ public:
+ ScopedName (char const* name) throw (InvalidName);
+
+ ScopedName (std::string const& name) throw (InvalidName);
+
+ ScopedName (Iterator begin, Iterator end) throw (InvalidName);
+
+ explicit
+ ScopedName (Name const& name) throw (InvalidName);
+
+ ScopedName (ScopedName const& scope, Name const& name)
+ throw (InvalidName);
+
+ public:
+ SimpleName
+ simple_name () const;
+
+ class FileScope {};
+
+ ScopedName
+ scope_name () const throw (FileScope);
+ };
+
+
+ // Name printer index for the stream's pword.
+ //
+ extern int const name_printer_index;
+
+ //
+ //
+ struct NamePrinter
+ {
+ virtual ~NamePrinter ();
+
+ virtual void
+ print (std::ostream&, SimpleName const&) = 0;
+
+ // The default implementation prints individul simple names
+ // using the print function above seperated by '::'.
+ //
+ virtual void
+ print (std::ostream&, Name const&);
+
+ };
+ }
+ }
+}
+
+// Uses the name printer (see above) If it is installed, otherwise
+// prints in the escaped form.
+//
+std::ostream&
+operator << (std::ostream&, CCF::IDL2::SemanticGraph::SimpleName const&);
+
+// Uses the name printer (see above) If it is installed, otherwise
+// prints in the escaped form.
+//
+std::ostream&
+operator << (std::ostream& o, CCF::IDL2::SemanticGraph::Name const& name);
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_NAME_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.cpp
new file mode 100644
index 00000000000..b2c29fe2881
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.cpp
@@ -0,0 +1,33 @@
+// file : CCF/IDL2/SemanticGraph/Native.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Native.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ native_init_ ()
+ {
+ TypeInfo ti (typeid (Native));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo native_ (native_init_ ());
+ }
+
+ TypeInfo const& Native::
+ static_type_info () { return native_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.hpp
new file mode 100644
index 00000000000..89c7b3f6a0e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Native.hpp
@@ -0,0 +1,41 @@
+// file : CCF/IDL2/SemanticGraph/Native.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_NATIVE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_NATIVE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Native : public virtual Type
+ {
+ public:
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Native (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_NATIVE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.cpp
new file mode 100644
index 00000000000..690f6d8173d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.cpp
@@ -0,0 +1,228 @@
+// file : CCF/IDL2/SemanticGraph/Operation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Receives
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ receives_init_ ()
+ {
+ TypeInfo ti (typeid (Receives));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo receives_ (receives_init_ ());
+ }
+
+ TypeInfo const& Receives::
+ static_type_info () { return receives_; }
+
+
+ // Returns
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ returns_init_ ()
+ {
+ TypeInfo ti (typeid (Returns));
+ ti.add_base (Access::PUBLIC, true, Belongs::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo returns_ (returns_init_ ());
+ }
+
+ TypeInfo const& Returns::
+ static_type_info () { return returns_; }
+
+
+ // Raises
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ raises_init_ ()
+ {
+ TypeInfo ti (typeid (Raises));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo raises_ (raises_init_ ());
+ }
+
+ TypeInfo const& Raises::
+ static_type_info () { return raises_; }
+
+
+
+ // Parameter
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ parameter_init_ ()
+ {
+ TypeInfo ti (typeid (Parameter));
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo parameter_ (parameter_init_ ());
+ }
+
+ TypeInfo const& Parameter::
+ static_type_info () { return parameter_; }
+
+ Parameter::
+ ~Parameter ()
+ {
+ }
+
+
+ // InParameter
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ in_parameter_init_ ()
+ {
+ TypeInfo ti (typeid (InParameter));
+ ti.add_base (Access::PUBLIC, true, Parameter::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo in_parameter_ (in_parameter_init_ ());
+ }
+
+ TypeInfo const& InParameter::
+ static_type_info () { return in_parameter_; }
+
+
+ // OutParameter
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ out_parameter_init_ ()
+ {
+ TypeInfo ti (typeid (OutParameter));
+ ti.add_base (Access::PUBLIC, true, Parameter::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo out_parameter_ (out_parameter_init_ ());
+ }
+
+ TypeInfo const& OutParameter::
+ static_type_info () { return out_parameter_; }
+
+
+ // InOutParameter
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ in_out_parameter_init_ ()
+ {
+ TypeInfo ti (typeid (InOutParameter));
+ ti.add_base (Access::PUBLIC, true, Parameter::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo in_out_parameter_ (in_out_parameter_init_ ());
+ }
+
+ TypeInfo const& InOutParameter::
+ static_type_info () { return in_out_parameter_; }
+
+
+ // Operation
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ operation_init_ ()
+ {
+ TypeInfo ti (typeid (Operation));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo operation_ (operation_init_ ());
+ }
+
+ TypeInfo const& Operation::
+ static_type_info () { return operation_; }
+
+ Operation::
+ ~Operation ()
+ {
+ }
+
+
+ // OneWayOperation
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ one_way_operation_init_ ()
+ {
+ TypeInfo ti (typeid (OneWayOperation));
+ ti.add_base (Access::PUBLIC, true, Operation::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo one_way_operation_ (one_way_operation_init_ ());
+ }
+
+ TypeInfo const& OneWayOperation::
+ static_type_info () { return one_way_operation_; }
+
+
+ // TwoWayOperation
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ two_way_operation_init_ ()
+ {
+ TypeInfo ti (typeid (TwoWayOperation));
+ ti.add_base (Access::PUBLIC, true, Operation::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo two_way_operation_ (two_way_operation_init_ ());
+ }
+
+ TypeInfo const& TwoWayOperation::
+ static_type_info () { return two_way_operation_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.hpp
new file mode 100644
index 00000000000..2f0a5d1686a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Operation.hpp
@@ -0,0 +1,359 @@
+// file : CCF/IDL2/SemanticGraph/Operation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_OPERATION_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_OPERATION_HPP
+
+#include <string>
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Operation;
+ class Parameter;
+
+ // Operation receives parameter
+ //
+ //
+ class Receives : public virtual Edge
+ {
+ public:
+ Operation&
+ operation () const
+ {
+ return *operation_;
+ }
+
+ Parameter&
+ parameter () const
+ {
+ return *parameter_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Receives ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Operation& n)
+ {
+ operation_ = &n;
+ }
+
+ void
+ set_right_node (Parameter& n)
+ {
+ parameter_ = &n;
+ }
+
+ private:
+ Operation* operation_;
+ Parameter* parameter_;
+ };
+
+
+ // Operation returns
+ //
+ //
+ class Returns : public virtual Belongs
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Returns ()
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ // Raises
+ //
+ //
+ class Raises : public virtual Edge
+ {
+ public:
+ Operation&
+ operation () const
+ {
+ return *operation_;
+ }
+
+ Exception&
+ exception () const
+ {
+ return *exception_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Raises ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Operation& n)
+ {
+ operation_ = &n;
+ }
+
+ void
+ set_right_node (Exception& n)
+ {
+ exception_ = &n;
+ }
+
+ private:
+ Operation* operation_;
+ Exception* exception_;
+ };
+
+
+ //
+ //
+ //
+ class Parameter : public virtual Instance
+ {
+ public:
+ std::string
+ name () const
+ {
+ return name_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Parameter (std::string const& name) // For virtual inheritance only.
+ : name_ (name)
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Parameter () = 0;
+
+ void
+ add_edge_right (Receives&)
+ {
+ }
+
+ private:
+ std::string name_;
+ };
+
+
+ class InParameter : public virtual Parameter
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ InParameter (Path const& path,
+ unsigned long line,
+ std::string const& name)
+ : Node (path, line), Parameter (name)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class OutParameter : public virtual Parameter
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ OutParameter (Path const& path,
+ unsigned long line,
+ std::string const& name)
+ : Node (path, line), Parameter (name)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class InOutParameter : public virtual Parameter
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ InOutParameter (Path const& path,
+ unsigned long line,
+ std::string const& name)
+ : Node (path, line), Parameter (name)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Operation : public virtual Nameable, public virtual Instance
+ {
+ typedef
+ std::vector<Receives*>
+ Receives_;
+
+ typedef
+ std::vector<Raises*>
+ Raises_;
+
+ public:
+ typedef
+ Receives_::const_iterator
+ ReceivesIterator;
+
+ ReceivesIterator
+ receives_begin () const
+ {
+ return receives_.begin ();
+ }
+
+ ReceivesIterator
+ receives_end () const
+ {
+ return receives_.end ();
+ }
+
+ typedef
+ Raises_::const_iterator
+ RaisesIterator;
+
+ RaisesIterator
+ raises_begin () const
+ {
+ return raises_.begin ();
+ }
+
+ RaisesIterator
+ raises_end () const
+ {
+ return raises_.end ();
+ }
+
+ Returns&
+ returns () const
+ {
+ return dynamic_cast<Returns&> (belongs ());
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Operation () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Operation () = 0;
+
+
+ void
+ add_edge_left (Receives& e)
+ {
+ receives_.push_back (&e);
+ }
+
+ void
+ add_edge_left (Raises& e)
+ {
+ raises_.push_back (&e);
+ }
+
+ void
+ add_edge_left (Returns& e)
+ {
+ Instance::add_edge_left (e);
+ }
+
+ private:
+ Receives_ receives_;
+ Raises_ raises_;
+ };
+
+
+ //
+ //
+ //
+ class OneWayOperation : public virtual Operation
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ OneWayOperation (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class TwoWayOperation : public virtual Operation
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ TwoWayOperation (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_OPERATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.cpp
new file mode 100644
index 00000000000..5c95be2c67c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.cpp
@@ -0,0 +1,82 @@
+// file : CCF/IDL2/SemanticGraph/Sequence.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Sequence.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Sequence
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ sequence_init_ ()
+ {
+ TypeInfo ti (typeid (Sequence));
+ ti.add_base (
+ Access::PUBLIC, true, Specialization::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo sequence_ (sequence_init_ ());
+ }
+
+ TypeInfo const& Sequence::
+ static_type_info () { return sequence_; }
+
+ Sequence::
+ ~Sequence ()
+ {
+ }
+
+
+ // UnboundedSequence
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ unbounded_sequence_init_ ()
+ {
+ TypeInfo ti (typeid (UnboundedSequence));
+ ti.add_base (Access::PUBLIC, true, Sequence::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo unbounded_sequence_ (unbounded_sequence_init_ ());
+ }
+
+ TypeInfo const& UnboundedSequence::
+ static_type_info () { return unbounded_sequence_; }
+
+
+ // BoundedSequence
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ bounded_sequence_init_ ()
+ {
+ TypeInfo ti (typeid (BoundedSequence));
+ ti.add_base (Access::PUBLIC, true, Sequence::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo bounded_sequence_ (bounded_sequence_init_ ());
+ }
+
+ TypeInfo const& BoundedSequence::
+ static_type_info () { return bounded_sequence_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.hpp
new file mode 100644
index 00000000000..333b55fed2a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Sequence.hpp
@@ -0,0 +1,106 @@
+// file : CCF/IDL2/SemanticGraph/Sequence.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_SEQUENCE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_SEQUENCE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Sequence : public virtual Specialization
+ {
+ public:
+ Type&
+ type () const
+ {
+ return
+ dynamic_cast<ArgumentsWithType&> (**arguments_begin ()).type ();
+ }
+
+ virtual bool
+ complete () const
+ {
+ return type ().complete ();
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Sequence () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Sequence () = 0;
+ };
+
+
+ //
+ //
+ //
+ class UnboundedSequence : public virtual Sequence
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnboundedSequence (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class BoundedSequence : public virtual Sequence
+ {
+ public:
+ IntExpression&
+ bound () const
+ {
+ ArgumentsIterator i (arguments_begin ());
+
+ ++i; // Bound is always second to the type.
+
+ return
+ dynamic_cast<IntExpression&> (
+ dynamic_cast<ArgumentsWithValue&> (**i).value ());
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ BoundedSequence (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_SEQUENCE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.cpp
new file mode 100644
index 00000000000..578c87361d4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.cpp
@@ -0,0 +1,58 @@
+// file : CCF/IDL2/SemanticGraph/String.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/String.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // BoundedString
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ bounded_string_init_ ()
+ {
+ TypeInfo ti (typeid (BoundedString));
+ ti.add_base (
+ Access::PUBLIC, true, Specialization::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo bounded_string_ (bounded_string_init_ ());
+ }
+
+ TypeInfo const& BoundedString::
+ static_type_info () { return bounded_string_; }
+
+
+ // BoundedWideString
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ bounded_wide_string_init_ ()
+ {
+ TypeInfo ti (typeid (BoundedWideString));
+ ti.add_base (
+ Access::PUBLIC, true, Specialization::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo bounded_wide_string_ (bounded_wide_string_init_ ());
+ }
+
+ TypeInfo const& BoundedWideString::
+ static_type_info () { return bounded_wide_string_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.hpp
new file mode 100644
index 00000000000..484a8a778ec
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/String.hpp
@@ -0,0 +1,87 @@
+// file : CCF/IDL2/SemanticGraph/String.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_STRING_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_STRING_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ class BoundedString : public virtual Specialization
+ {
+ public:
+ IntExpression&
+ bound () const
+ {
+ return
+ dynamic_cast<IntExpression&> (
+ dynamic_cast<ArgumentsWithValue&> (
+ **arguments_begin ()).value ());
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ BoundedString (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ class BoundedWideString : public virtual Specialization
+ {
+ public:
+ IntExpression&
+ bound () const
+ {
+ return
+ dynamic_cast<IntExpression&> (
+ dynamic_cast<ArgumentsWithValue&> (
+ **arguments_begin ()).value ());
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ BoundedWideString (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_STRING_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.cpp
new file mode 100644
index 00000000000..46fd9b9ef3a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.cpp
@@ -0,0 +1,67 @@
+// file : CCF/IDL2/SemanticGraph/Struct.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Struct.hpp"
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ struct_init_ ()
+ {
+ TypeInfo ti (typeid (Struct));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo struct_ (struct_init_ ());
+ }
+
+ TypeInfo const& Struct::
+ static_type_info () { return struct_; }
+
+ bool Struct::
+ complete () const
+ {
+ if (defined ())
+ {
+ CompilerElements::Context& ctx (
+ const_cast<CompilerElements::Context&> (context ()));
+
+ if (ctx.count ("struct-complete-test"))
+ return true;
+
+ ctx.set ("struct-complete-test", true);
+ bool c (true);
+
+ for (Scope::NamesIterator i (names_begin ());
+ c && i != names_end ();
+ ++i)
+ {
+ Member const& m (dynamic_cast<Member&> ((*i)->named ()));
+ Type const& t (m.belongs ().type ());
+
+ if (!t.complete ())
+ c = false;
+ }
+
+ ctx.remove ("struct-complete-test");
+ return c;
+ }
+
+ return false;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.hpp
new file mode 100644
index 00000000000..5e186bfd0ff
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Struct.hpp
@@ -0,0 +1,41 @@
+// file : CCF/IDL2/SemanticGraph/Struct.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_STRUCT_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_STRUCT_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Struct : public virtual Type, public virtual Scope
+ {
+ public:
+ virtual bool
+ complete () const;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Struct (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_STRUCT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.cpp
new file mode 100644
index 00000000000..b925da62259
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.cpp
@@ -0,0 +1,255 @@
+// file : CCF/IDL2/SemanticGraph/Translation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // ContainsPrincipal
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ contains_principal_init_ ()
+ {
+ TypeInfo ti (typeid (ContainsPrincipal));
+ ti.add_base (Access::PUBLIC, true, Contains::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo contains_principal_ (contains_principal_init_ ());
+ }
+
+ TypeInfo const& ContainsPrincipal::
+ static_type_info () { return contains_principal_; }
+
+
+ // ContainsImplied
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ contains_implied_init_ ()
+ {
+ TypeInfo ti (typeid (ContainsImplied));
+ ti.add_base (Access::PUBLIC, true, Contains::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo contains_implied_ (contains_implied_init_ ());
+ }
+
+ TypeInfo const& ContainsImplied::
+ static_type_info () { return contains_implied_; }
+
+
+ // ContainsRoot
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ contains_root_init_ ()
+ {
+ TypeInfo ti (typeid (ContainsRoot));
+ ti.add_base (Access::PUBLIC, true, Contains::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo contains_root_ (contains_root_init_ ());
+ }
+
+ TypeInfo const& ContainsRoot::
+ static_type_info () { return contains_root_; }
+
+
+ // Includes
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ includes_init_ ()
+ {
+ TypeInfo ti (typeid (Includes));
+ ti.add_base (Access::PUBLIC, true, Contains::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo includes_ (includes_init_ ());
+ }
+
+ TypeInfo const& Includes::
+ static_type_info () { return includes_; }
+
+
+ // QuoteIncludes
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ quote_includes_init_ ()
+ {
+ TypeInfo ti (typeid (QuoteIncludes));
+ ti.add_base (Access::PUBLIC, true, Includes::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo quote_includes_ (quote_includes_init_ ());
+ }
+
+ TypeInfo const& QuoteIncludes::
+ static_type_info () { return quote_includes_; }
+
+
+
+ // BracketIncludes
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ bracket_includes_init_ ()
+ {
+ TypeInfo ti (typeid (BracketIncludes));
+ ti.add_base (Access::PUBLIC, true, Includes::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo bracket_includes_ (bracket_includes_init_ ());
+ }
+
+ TypeInfo const& BracketIncludes::
+ static_type_info () { return bracket_includes_; }
+
+
+ // Root
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ root_init_ ()
+ {
+ TypeInfo ti (typeid (Root));
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo root_ (root_init_ ());
+ }
+
+ TypeInfo const& Root::
+ static_type_info () { return root_; }
+
+
+ // TranslationRegion
+ //
+ //
+
+ Nameables TranslationRegion::
+ lookup (ScopedName const& name) const
+ {
+ Nameables r;
+ lookup (name, r);
+ return r;
+ }
+
+ void TranslationRegion::
+ lookup (ScopedName const& name, Nameables& result) const
+ {
+ bool root (name.simple ());
+
+ Name rest (name.begin () + (root ? 0 : 1), name.end ());
+
+ for (ContainsIterator i (contains_begin ()), end (contains_end ());
+ i != end; ++i)
+ {
+ Node& node ((**i).element ());
+
+ if (Root* r = dynamic_cast<Root*> (&node))
+ {
+ if (root)
+ {
+ result.insert (r);
+ }
+ else
+ {
+ r->lookup (rest, result);
+ }
+ }
+ else
+ {
+ dynamic_cast<TranslationRegion&> (node).lookup (name, result);
+ }
+ }
+ }
+
+
+ namespace
+ {
+ TypeInfo
+ translation_region_init_ ()
+ {
+ TypeInfo ti (typeid (TranslationRegion));
+ ti.add_base (Access::PUBLIC, true, Container::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo translation_region_ (translation_region_init_ ());
+ }
+
+ TypeInfo const& TranslationRegion::
+ static_type_info () { return translation_region_; }
+
+
+ // TranslationUnit
+ //
+ //
+
+ Nameables TranslationUnit::
+ lookup (ScopedName const& name) const
+ {
+ Nameables r;
+
+ for (ContainsIterator i (contains_begin ()), end (contains_end ());
+ i != end; ++i)
+ {
+ TranslationRegion& tr (
+ dynamic_cast<TranslationRegion&>((**i).element ()));
+
+ tr.lookup (name, r);
+ }
+
+ return r;
+ }
+
+ namespace
+ {
+ TypeInfo
+ translation_unit_init_ ()
+ {
+ TypeInfo ti (typeid (TranslationUnit));
+ ti.add_base (Access::PUBLIC, true, Container::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo translation_unit_ (translation_unit_init_ ());
+ }
+
+ TypeInfo const& TranslationUnit::
+ static_type_info () { return translation_unit_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.hpp
new file mode 100644
index 00000000000..42df2ed2c13
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.hpp
@@ -0,0 +1,287 @@
+// file : CCF/IDL2/SemanticGraph/Translation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_TRANSLATION_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_TRANSLATION_HPP
+
+#include <vector>
+#include <string>
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Root;
+ class TranslationRegion;
+ class TranslationUnit;
+
+
+ //
+ //
+ //
+ class ContainsPrincipal : public virtual Contains
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ContainsPrincipal ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (TranslationUnit& n);
+
+ void
+ set_right_node (TranslationRegion& n);
+ };
+
+
+ //
+ //
+ //
+ class ContainsImplied : public virtual Contains
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ContainsImplied (std::string const& name = "")
+ : name_ (name)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (TranslationUnit& n);
+
+ void
+ set_right_node (TranslationRegion& n);
+
+ private:
+ std::string name_;
+ };
+
+
+ //
+ //
+ //
+ class ContainsRoot : public virtual Contains
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ContainsRoot ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (TranslationRegion& n);
+
+ void
+ set_right_node (Root& n);
+ };
+
+ //
+ //
+ //
+ class Includes : public virtual Contains
+ {
+ public:
+ Path
+ file () const
+ {
+ return file_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Includes (Path const& file)
+ : file_ (file)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (TranslationRegion& n);
+
+ void
+ set_right_node (TranslationRegion& n);
+
+ private:
+ Path file_;
+ };
+
+
+ //
+ //
+ //
+ class QuoteIncludes : public virtual Includes
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ QuoteIncludes (Path const& file)
+ : Includes (file)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class BracketIncludes : public virtual Includes
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ BracketIncludes (Path const& file)
+ : Includes (file)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Root : public virtual Scope
+ {
+ public:
+ virtual SimpleName
+ name () const
+ {
+ return SimpleName ("");
+ }
+
+ virtual ScopedName
+ scoped_name () const
+ {
+ return ScopedName ("");
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Root (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_right (Contains&)
+ {
+ // TranslationRegion contains Root
+ }
+ };
+
+
+ //
+ //
+ //
+ class TranslationRegion : public virtual Container
+ {
+ public:
+ Nameables
+ lookup (ScopedName const& name) const;
+
+ void
+ lookup (ScopedName const& name, Nameables& result) const;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ TranslationRegion (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ add_edge_right (Contains&)
+ {
+ }
+ };
+
+
+ class TranslationUnit : public virtual Container,
+ public Graph<Node, Edge>
+ {
+ public:
+ TranslationUnit (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ Nameables
+ lookup (ScopedName const& name) const;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ void
+ add_edge_left (ContainsPrincipal& e)
+ {
+ Container::add_edge_left (e);
+ }
+
+ void
+ add_edge_left (ContainsImplied& e)
+ {
+ Container::add_edge_left (e);
+ }
+
+ private:
+ TranslationUnit (TranslationUnit const&);
+ void operator= (TranslationUnit const&);
+ };
+ }
+ }
+}
+
+#include "CCF/IDL2/SemanticGraph/Translation.ipp"
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_TRANSLATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.ipp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.ipp
new file mode 100644
index 00000000000..8168cd87762
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Translation.ipp
@@ -0,0 +1,73 @@
+// file : CCF/IDL2/SemanticGraph/Translation.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ // ContainsPrincipal
+ //
+ //
+ inline void ContainsPrincipal::
+ set_left_node (TranslationUnit& n)
+ {
+ Contains::set_left_node (n);
+ }
+
+ inline void ContainsPrincipal::
+ set_right_node (TranslationRegion& n)
+ {
+ Contains::set_right_node (n);
+ }
+
+ // ContainsImplied
+ //
+ //
+ inline void ContainsImplied::
+ set_left_node (TranslationUnit& n)
+ {
+ Contains::set_left_node (n);
+ }
+
+ inline void ContainsImplied::
+ set_right_node (TranslationRegion& n)
+ {
+ Contains::set_right_node (n);
+ }
+
+ // ContainsRoot
+ //
+ //
+ inline void ContainsRoot::
+ set_left_node (TranslationRegion& n)
+ {
+ Contains::set_left_node (n);
+ }
+
+ inline void ContainsRoot::
+ set_right_node (Root& n)
+ {
+ Contains::set_right_node (n);
+ }
+
+
+ // Includes
+ //
+ //
+ inline void Includes::
+ set_left_node (TranslationRegion& n)
+ {
+ Contains::set_left_node (n);
+ }
+
+ inline void Includes::
+ set_right_node (TranslationRegion& n)
+ {
+ Contains::set_right_node (n);
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.cpp
new file mode 100644
index 00000000000..7f7a1f69479
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.cpp
@@ -0,0 +1,56 @@
+// file : CCF/IDL2/SemanticGraph/TypeId.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/TypeId.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // TypeId
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ type_id_init_ ()
+ {
+ TypeInfo ti (typeid (TypeId));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo type_id_ (type_id_init_ ());
+ }
+
+ TypeInfo const& TypeId::
+ static_type_info () { return type_id_; }
+
+
+ // TypePrefix
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ type_prefix_init_ ()
+ {
+ TypeInfo ti (typeid (TypePrefix));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo type_prefix_ (type_prefix_init_ ());
+ }
+
+ TypeInfo const& TypePrefix::
+ static_type_info () { return type_prefix_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.hpp
new file mode 100644
index 00000000000..accb6f83226
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/TypeId.hpp
@@ -0,0 +1,104 @@
+// file : CCF/IDL2/SemanticGraph/TypeId.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_TYPE_ID_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_TYPE_ID_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Literals.hpp"
+
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class TypeId : public virtual Nameable
+ {
+ public:
+ //@@ declaration is a bad name.
+ //
+ ScopedName
+ declaration () const
+ {
+ return name_;
+ }
+
+ StringLiteral
+ id () const
+ {
+ return id_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ TypeId (Path const& path,
+ unsigned long line,
+ ScopedName const& name,
+ StringLiteral const& id)
+ : Node (path, line),
+ name_ (name),
+ id_ (id)
+ {
+ type_info (static_type_info ());
+ }
+
+ private:
+ ScopedName name_;
+ StringLiteral id_;
+ };
+
+
+ //
+ //
+ //
+ class TypePrefix : public virtual Nameable
+ {
+ public:
+ ScopedName
+ declaration () const
+ {
+ return name_;
+ }
+
+ StringLiteral
+ prefix () const
+ {
+ return prefix_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ TypePrefix (Path const& path,
+ unsigned long line,
+ ScopedName const& name,
+ StringLiteral const& prefix)
+ : Node (path, line),
+ name_ (name),
+ prefix_ (prefix)
+ {
+ type_info (static_type_info ());
+ }
+
+ private:
+ ScopedName name_;
+ StringLiteral prefix_;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_TYPE_ID_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.cpp
new file mode 100644
index 00000000000..4fccb9a0ebc
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.cpp
@@ -0,0 +1,177 @@
+// file : CCF/IDL2/SemanticGraph/Union.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/Union.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+
+ // Selects
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ selects_init_ ()
+ {
+ TypeInfo ti (typeid (Selects));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo selects_ (selects_init_ ());
+ }
+
+ TypeInfo const& Selects::
+ static_type_info () { return selects_; }
+
+
+ // UnionMember
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ union_member_init_ ()
+ {
+ TypeInfo ti (typeid (UnionMember));
+ ti.add_base (Access::PUBLIC, true, Member::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo union_member_ (union_member_init_ ());
+ }
+
+ TypeInfo const& UnionMember::
+ static_type_info () { return union_member_; }
+
+
+ // Selector
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ selector_init_ ()
+ {
+ TypeInfo ti (typeid (Selector));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo selector_ (selector_init_ ());
+ }
+
+ TypeInfo const& Selector::
+ static_type_info () { return selector_; }
+
+ Selector::
+ ~Selector ()
+ {
+ }
+
+ // DefaultSelector
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ default_selector_init_ ()
+ {
+ TypeInfo ti (typeid (DefaultSelector));
+ ti.add_base (Access::PUBLIC, true, Selector::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo default_selector_ (default_selector_init_ ());
+ }
+
+ TypeInfo const& DefaultSelector::
+ static_type_info () { return default_selector_; }
+
+
+ // ValueSelector
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_selector_init_ ()
+ {
+ TypeInfo ti (typeid (ValueSelector));
+ ti.add_base (Access::PUBLIC, true, Selector::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo value_selector_ (value_selector_init_ ());
+ }
+
+ TypeInfo const& ValueSelector::
+ static_type_info () { return value_selector_; }
+
+ // Union
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ union_init_ ()
+ {
+ TypeInfo ti (typeid (Union));
+
+ ti.add_base (
+ Access::PUBLIC, true, Specialization::static_type_info ());
+
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo union_ (union_init_ ());
+ }
+
+ TypeInfo const& Union::
+ static_type_info () { return union_; }
+
+ bool Union::
+ complete () const
+ {
+ if (defined ())
+ {
+ CompilerElements::Context& ctx (
+ const_cast<CompilerElements::Context&> (context ()));
+
+ if (ctx.count ("union-complete-test"))
+ return true;
+
+ ctx.set ("union-complete-test", true);
+ bool c (true);
+
+ for (Scope::NamesIterator i (names_begin ());
+ c && i != names_end ();
+ ++i)
+ {
+ Member const& m (dynamic_cast<Member&> ((*i)->named ()));
+ Type const& t (m.belongs ().type ());
+
+ if (!t.complete ())
+ c = false;
+ }
+
+ ctx.remove ("union-complete-test");
+ return c;
+ }
+
+ return false;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.hpp
new file mode 100644
index 00000000000..2512358db03
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/Union.hpp
@@ -0,0 +1,158 @@
+// file : CCF/IDL2/SemanticGraph/Union.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_UNION_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_UNION_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ class Selector;
+ class UnionMember;
+
+ class Selects : public virtual Edge
+ {
+ public:
+ Selector&
+ selector () const
+ {
+ return *selector_;
+ }
+
+ UnionMember&
+ member () const
+ {
+ return *member_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Selects ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Selector& n)
+ {
+ selector_ = &n;
+ }
+
+ void
+ set_right_node (UnionMember& n)
+ {
+ member_ = &n;
+ }
+
+ private:
+ Selector* selector_;
+ UnionMember* member_;
+ };
+
+ class UnionMember : public virtual Member
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ UnionMember (Path const& path, unsigned long line)
+ : Node (path, line), Member (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class Selector : public virtual Node
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Selector () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~Selector () = 0;
+ };
+
+ class DefaultSelector : public virtual Selector
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ DefaultSelector (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class ValueSelector : public virtual Selector,
+ public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueSelector (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ class Union : public virtual Specialization,
+ public virtual Scope
+ {
+ public:
+ virtual bool
+ complete () const;
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Union (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Specialization::add_edge_left;
+ using Specialization::add_edge_right;
+ using Scope::add_edge_left;
+ using Scope::add_edge_right;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_UNION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.cpp
new file mode 100644
index 00000000000..1d151613dcc
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.cpp
@@ -0,0 +1,102 @@
+// file : CCF/IDL2/SemanticGraph/ValueType.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // ValueType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_type_init_ ()
+ {
+ TypeInfo ti (typeid (ValueType));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo value_type_ (value_type_init_ ());
+ }
+
+ TypeInfo const& ValueType::
+ static_type_info () { return value_type_; }
+
+ ValueType::
+ ~ValueType ()
+ {
+ }
+
+ // AbstractValueType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ abstract_value_type_init_ ()
+ {
+ TypeInfo ti (typeid (AbstractValueType));
+ ti.add_base (Access::PUBLIC, true, ValueType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo abstract_value_type_ (abstract_value_type_init_ ());
+ }
+
+ TypeInfo const& AbstractValueType::
+ static_type_info () { return abstract_value_type_; }
+
+
+ // ConcreteValueType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ concrete_value_type_init_ ()
+ {
+ TypeInfo ti (typeid (ConcreteValueType));
+ ti.add_base (Access::PUBLIC, true, ValueType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo concrete_value_type_ (concrete_value_type_init_ ());
+ }
+
+ TypeInfo const& ConcreteValueType::
+ static_type_info () { return concrete_value_type_; }
+
+
+ // ValueTypeFactory
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_type_factory_init_ ()
+ {
+ TypeInfo ti (typeid (ValueTypeFactory));
+ ti.add_base (
+ Access::PUBLIC, true, TwoWayOperation::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo value_type_factory_ (value_type_factory_init_ ());
+ }
+
+ TypeInfo const& ValueTypeFactory::
+ static_type_info () { return value_type_factory_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.hpp
new file mode 100644
index 00000000000..f918ee17dc6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueType.hpp
@@ -0,0 +1,174 @@
+// file : CCF/IDL2/SemanticGraph/ValueType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+#include "CCF/IDL2/SemanticGraph/Interface.hpp" // Supports
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class ValueType : public virtual Type,
+ public virtual Scope
+ {
+ typedef
+ std::vector <Inherits*>
+ Inherits_;
+
+ typedef
+ std::vector <Supports*>
+ Supports_;
+
+ public:
+ typedef
+ Inherits_::const_iterator
+ InheritsIterator;
+
+ InheritsIterator
+ inherits_begin () const
+ {
+ return inherits_.begin ();
+ }
+
+ InheritsIterator
+ inherits_end () const
+ {
+ return inherits_.end ();
+ }
+
+ typedef
+ Supports_::const_iterator
+ SupportsIterator;
+
+ SupportsIterator
+ supports_begin () const
+ {
+ return supports_.begin ();
+ }
+
+ SupportsIterator
+ supports_end () const
+ {
+ return supports_.end ();
+ }
+
+ public:
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueType () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~ValueType () = 0;
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+
+ void
+ add_edge_left (Inherits& e)
+ {
+ inherits_.push_back (&e);
+ }
+
+ void
+ add_edge_right (Inherits&)
+ {
+ }
+
+ void
+ add_edge_left (Supports& e)
+ {
+ supports_.push_back (&e);
+ }
+
+ private:
+ Inherits_ inherits_;
+ Supports_ supports_;
+ };
+
+
+ //
+ //
+ //
+ class AbstractValueType : public virtual ValueType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ AbstractValueType (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class ConcreteValueType : public virtual ValueType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ConcreteValueType (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class ValueTypeFactory : public virtual TwoWayOperation
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueTypeFactory (Path const& path, unsigned long line)
+ : Node (path, line), TwoWayOperation (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp
new file mode 100644
index 00000000000..0afeabd5fd0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp
@@ -0,0 +1,90 @@
+// file : CCF/IDL2/SemanticGraph/ValueTypeMember.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/SemanticGraph/ValueTypeMember.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+
+ // ValueTypeMember
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_type_member_init_ ()
+ {
+ TypeInfo ti (typeid (ValueTypeMember));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo
+ value_type_member_ (value_type_member_init_ ());
+ }
+
+ TypeInfo const& ValueTypeMember::
+ static_type_info () { return value_type_member_; }
+
+ ValueTypeMember::
+ ~ValueTypeMember ()
+ {
+ }
+
+
+ // ValueTypePrivateMember
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_type_private_member_init_ ()
+ {
+ TypeInfo ti (typeid (ValueTypePrivateMember));
+ ti.add_base (Access::PUBLIC,
+ true,
+ ValueTypeMember::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo
+ value_type_private_member_ (value_type_private_member_init_ ());
+ }
+
+ TypeInfo const& ValueTypePrivateMember::
+ static_type_info () { return value_type_private_member_; }
+
+
+ // ValueTypePublicMember
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ value_type_public_member_init_ ()
+ {
+ TypeInfo ti (typeid (ValueTypePublicMember));
+ ti.add_base (Access::PUBLIC,
+ true,
+ ValueTypeMember::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo
+ value_type_public_member_ (value_type_public_member_init_ ());
+ }
+
+ TypeInfo const& ValueTypePublicMember::
+ static_type_info () { return value_type_public_member_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp
new file mode 100644
index 00000000000..47649de0c6a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp
@@ -0,0 +1,107 @@
+// file : CCF/IDL2/SemanticGraph/ValueTypeMember.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_MEMBER_HPP
+#define CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_MEMBER_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace SemanticGraph
+ {
+
+ //
+ //
+ //
+ class ValueTypeMember : public virtual Nameable,
+ public virtual Instance
+ {
+ public:
+ struct Access
+ {
+ enum Value
+ {
+ public_,
+ private_
+ };
+ };
+
+ virtual Access::Value
+ access () const = 0;
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ ValueTypeMember () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~ValueTypeMember () = 0;
+ };
+
+
+ //
+ //
+ //
+ class ValueTypePrivateMember : public virtual ValueTypeMember
+ {
+ public:
+ virtual Access::Value
+ access () const
+ {
+ return Access::private_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueTypePrivateMember (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class ValueTypePublicMember : public virtual ValueTypeMember
+ {
+ public:
+ virtual Access::Value
+ access () const
+ {
+ return Access::public_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ValueTypePublicMember (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_SEMANTIC_GRAPH_VALUE_TYPE_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Token.cpp b/modules/CIAO/CCF/CCF/IDL2/Token.cpp
new file mode 100644
index 00000000000..a251329a2d8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Token.cpp
@@ -0,0 +1,13 @@
+// file : CCF/IDL2/Token.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/Token.hpp b/modules/CIAO/CCF/CCF/IDL2/Token.hpp
new file mode 100644
index 00000000000..078a987e4e4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Token.hpp
@@ -0,0 +1,348 @@
+// file : CCF/IDL2/Token.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TOKEN_HPP
+#define CCF_IDL2_TOKEN_HPP
+
+#include <vector>
+#include <string>
+#include <ostream>
+
+#include "CCF/CompilerElements/ReferenceCounting.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ //
+ //
+ //
+ class Token : public ReferenceCounting::DefaultImpl <>
+ {
+ protected:
+ Token (std::string lexeme, unsigned long line)
+ : lexeme_ (lexeme),
+ line_ (line)
+ {
+ }
+
+ public:
+ virtual
+ ~Token () throw () {}
+
+ virtual void
+ print (std::ostream& o)
+ {
+ o << lexeme ();
+ }
+
+ public:
+ std::string
+ lexeme () const
+ {
+ return lexeme_;
+ }
+
+ unsigned long
+ line () const
+ {
+ return line_;
+ }
+
+ private:
+ std::string lexeme_;
+ unsigned long line_;
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Token>
+ TokenPtr;
+
+ typedef
+ std::vector<TokenPtr>
+ TokenList;
+
+ //
+ //
+ //
+ class EndOfStream : public Token
+ {
+ public:
+ EndOfStream (unsigned long line)
+ : Token ("<end-of-stream>", line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<EndOfStream>
+ EndOfStreamPtr;
+
+ //
+ //
+ //
+ class Keyword : public Token
+ {
+ public:
+ Keyword (std::string lexeme, unsigned long line)
+ : Token (lexeme, line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Keyword>
+ KeywordPtr;
+
+ //
+ //
+ //
+ class Punctuation : public Token
+ {
+ public:
+ Punctuation (std::string lexeme, unsigned long line)
+ : Token (lexeme, line)
+ {
+ }
+
+ virtual
+ ~Punctuation () throw () {}
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Punctuation>
+ PunctuationPtr;
+
+
+ //
+ //
+ //
+ class Operator : public Token
+ {
+ public:
+ Operator (std::string lexeme, unsigned long line)
+ : Token (lexeme, line)
+ {
+ }
+
+ virtual
+ ~Operator () throw () {}
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Operator>
+ OperatorPtr;
+
+
+ //
+ //
+ //
+ class Identifier : public Token
+ {
+ public:
+ Identifier (std::string lexeme, unsigned long line)
+ : Token (lexeme, line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Identifier>
+ IdentifierPtr;
+
+
+ //
+ //
+ //
+ class SimpleIdentifier : public Identifier
+ {
+ public:
+ SimpleIdentifier (std::string lexeme, unsigned long line)
+ : Identifier (lexeme, line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<SimpleIdentifier>
+ SimpleIdentifierPtr;
+
+
+ //
+ //
+ //
+ class ScopedIdentifier : public Identifier
+ {
+ public:
+ ScopedIdentifier (std::string lexeme, unsigned long line)
+ : Identifier (lexeme, line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<ScopedIdentifier>
+ ScopedIdentifierPtr;
+
+
+ //
+ //
+ //
+ class Literal : public Token
+ {
+ public:
+ Literal (std::string lexeme, unsigned long line)
+ : Token (lexeme, line)
+ {
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<Literal>
+ LiteralPtr;
+
+
+ //
+ //
+ //
+ class BooleanLiteral : public Literal
+ {
+ public:
+ BooleanLiteral (std::string lexeme, unsigned long line)
+ : Literal (lexeme, line)
+ {
+ }
+
+ bool
+ value () const
+ {
+ return lexeme () == "TRUE";
+ }
+
+ virtual void
+ print (std::ostream& o)
+ {
+ o << lexeme ();
+ }
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<BooleanLiteral>
+ BooleanLiteralPtr;
+
+
+ //
+ //
+ //
+ class CharacterLiteral : public Literal
+ {
+ public:
+ CharacterLiteral (char c, std::string lexeme, unsigned long line)
+ : Literal (lexeme, line), c_ (c)
+ {
+ }
+
+ char
+ value () const
+ {
+ return c_;
+ }
+
+ virtual void
+ print (std::ostream& o)
+ {
+ //@@ todo
+ o << lexeme ();
+ }
+
+ private:
+ char c_;
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<CharacterLiteral>
+ CharacterLiteralPtr;
+
+
+ //
+ //
+ //
+ class IntegerLiteral : public Literal
+ {
+ public:
+ IntegerLiteral (unsigned long long value,
+ std::string lexeme,
+ unsigned long line)
+ : Literal (lexeme, line), value_ (value)
+ {
+ }
+
+ unsigned long long
+ value () const
+ {
+ return value_;
+ }
+
+ virtual void
+ print (std::ostream& o)
+ {
+ o << lexeme ();
+ }
+
+ private:
+ unsigned long long value_;
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<IntegerLiteral>
+ IntegerLiteralPtr;
+
+
+ //
+ //
+ //
+ class StringLiteral : public Literal
+ {
+ public:
+ virtual
+ ~StringLiteral () throw () {}
+
+ StringLiteral (std::string const& value,
+ std::string const& lexeme,
+ unsigned long line)
+ : Literal (lexeme, line), value_ (value)
+ {
+ }
+
+ std::string
+ value () const
+ {
+ return value_;
+ }
+
+ virtual void
+ print (std::ostream& o)
+ {
+ //@@ todo
+ o << lexeme ();
+ }
+
+ private:
+ std::string value_;
+ };
+
+ typedef
+ ReferenceCounting::StrictPtr<StringLiteral>
+ StringLiteralPtr;
+ }
+}
+
+inline std::ostream&
+operator<< (std::ostream& o, CCF::IDL2::TokenPtr const& t)
+{
+ if (t != 0) t->print (o);
+ return o;
+}
+
+#endif // CCF_IDL2_TOKEN_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal.hpp
new file mode 100644
index 00000000000..2c56e2b3f2b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL2/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_HPP
+#define CCF_IDL2_TRAVERSAL_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/Traversal/Array.hpp"
+#include "CCF/IDL2/Traversal/Attribute.hpp"
+#include "CCF/IDL2/Traversal/Enum.hpp"
+#include "CCF/IDL2/Traversal/Exception.hpp"
+#include "CCF/IDL2/Traversal/Fundamental.hpp"
+#include "CCF/IDL2/Traversal/IntExpression.hpp"
+#include "CCF/IDL2/Traversal/Interface.hpp"
+#include "CCF/IDL2/Traversal/Member.hpp"
+#include "CCF/IDL2/Traversal/Module.hpp"
+#include "CCF/IDL2/Traversal/Native.hpp"
+#include "CCF/IDL2/Traversal/Operation.hpp"
+#include "CCF/IDL2/Traversal/Struct.hpp"
+#include "CCF/IDL2/Traversal/Sequence.hpp"
+#include "CCF/IDL2/Traversal/String.hpp"
+#include "CCF/IDL2/Traversal/Struct.hpp"
+#include "CCF/IDL2/Traversal/Translation.hpp"
+#include "CCF/IDL2/Traversal/TypeId.hpp"
+#include "CCF/IDL2/Traversal/Union.hpp"
+#include "CCF/IDL2/Traversal/ValueType.hpp"
+#include "CCF/IDL2/Traversal/ValueTypeMember.hpp"
+
+#endif // CCF_IDL2_TRAVERSAL_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.cpp
new file mode 100644
index 00000000000..e142383535f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.cpp
@@ -0,0 +1,78 @@
+// file : CCF/IDL2/Traversal/Array.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Array.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ void Array::
+ traverse (Type& a)
+ {
+ pre (a);
+ arguments_with_type (a);
+ arguments_with_value (a);
+ name (a);
+ post (a);
+ }
+
+ void Array::
+ pre (Type&)
+ {
+ }
+
+ void Array::
+ arguments_with_type (Type& a, EdgeDispatcherBase& d)
+ {
+ d.traverse (**a.arguments_begin ());
+ }
+
+ void Array::
+ arguments_with_type (Type& a)
+ {
+ arguments_with_type (a, edge_traverser ());
+ }
+
+ void Array::
+ arguments_with_value (Type& a, EdgeDispatcherBase& d)
+ {
+ Type::ArgumentsIterator
+ b (a.arguments_begin ()), e (a.arguments_end ());
+
+ ++b; // Bounds start afterthe type.
+
+ iterate_and_traverse (b,
+ e,
+ d,
+ *this,
+ &Array::comma,
+ a);
+ }
+
+ void Array::
+ arguments_with_value (Type& a)
+ {
+ arguments_with_value (a, edge_traverser ());
+ }
+
+ void Array::
+ comma (Type&)
+ {
+ }
+
+ void Array::
+ name (Type&)
+ {
+ }
+
+ void Array::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.hpp
new file mode 100644
index 00000000000..fb608c6df9a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Array.hpp
@@ -0,0 +1,51 @@
+// file : CCF/IDL2/Traversal/Array.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_ARRAY_HPP
+#define CCF_IDL2_TRAVERSAL_ARRAY_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Array.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Array : Node<SemanticGraph::Array>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ arguments_with_type (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_type (Type&);
+
+ virtual void
+ arguments_with_value (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_value (Type&);
+
+ virtual void
+ comma (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_ARRAY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.cpp
new file mode 100644
index 00000000000..42ff8bd21bf
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.cpp
@@ -0,0 +1,280 @@
+// file : CCF/IDL2/Traversal/Attribute.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Attribute.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // Attribute
+ //
+ //
+ void Attribute::
+ traverse (Type& a)
+ {
+ pre (a);
+ belongs (a);
+ name (a);
+ post (a);
+ }
+
+ void Attribute::
+ pre (Type&)
+ {
+ }
+
+ void Attribute::
+ belongs (Type& a, EdgeDispatcherBase& d)
+ {
+ d.traverse (a.belongs ());
+ }
+
+ void Attribute::
+ belongs (Type& a)
+ {
+ belongs (a, edge_traverser ());
+ }
+
+ void Attribute::
+ name (Type&)
+ {
+ }
+
+ void Attribute::
+ post (Type&)
+ {
+ }
+
+ // ReadAttribute
+ //
+ //
+ void ReadAttribute::
+ traverse (Type& a)
+ {
+ pre (a);
+ belongs (a);
+ name (a);
+ get_raises (a);
+ post (a);
+ }
+
+ void ReadAttribute::
+ pre (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ belongs (Type& a, EdgeDispatcherBase& d)
+ {
+ d.traverse (a.belongs ());
+ }
+
+ void ReadAttribute::
+ belongs (Type& a)
+ {
+ belongs (a, edge_traverser ());
+ }
+
+ void ReadAttribute::
+ name (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ get_raises (Type& a, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (a.get_raises_begin (), a.get_raises_end (), d);
+ }
+
+ void ReadAttribute::
+ get_raises (Type& a)
+ {
+ Type::GetRaisesIterator
+ b (a.get_raises_begin ()),
+ e (a.get_raises_end ());
+
+ if (b != e)
+ {
+ get_raises_pre (a);
+ iterate_and_traverse (b,
+ e,
+ edge_traverser (),
+ *this,
+ &ReadAttribute::comma,
+ a);
+ get_raises_post (a);
+ }
+ else
+ {
+ get_raises_none (a);
+ }
+ }
+
+ void ReadAttribute::
+ get_raises_pre (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ get_raises_post (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ get_raises_none (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ post (Type&)
+ {
+ }
+
+ void ReadAttribute::
+ comma (Type&)
+ {
+ }
+
+
+ // ReadWriteAttribute
+ //
+ //
+ void ReadWriteAttribute::
+ traverse (Type& a)
+ {
+ pre (a);
+ belongs (a);
+ name (a);
+ get_raises (a);
+ set_raises (a);
+ post (a);
+ }
+
+ void ReadWriteAttribute::
+ pre (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ belongs (Type& a, EdgeDispatcherBase& d)
+ {
+ d.traverse (a.belongs ());
+ }
+
+ void ReadWriteAttribute::
+ belongs (Type& a)
+ {
+ belongs (a, edge_traverser ());
+ }
+
+ void ReadWriteAttribute::
+ name (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ get_raises (Type& a, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (a.get_raises_begin (), a.get_raises_end (), d);
+ }
+
+ void ReadWriteAttribute::
+ get_raises (Type& a)
+ {
+ Type::GetRaisesIterator
+ b (a.get_raises_begin ()),
+ e (a.get_raises_end ());
+
+ if (b != e)
+ {
+ get_raises_pre (a);
+ iterate_and_traverse (b,
+ e,
+ edge_traverser (),
+ *this,
+ &ReadWriteAttribute::comma,
+ a);
+ get_raises_post (a);
+ }
+ else
+ {
+ get_raises_none (a);
+ }
+ }
+
+ void ReadWriteAttribute::
+ get_raises_pre (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ get_raises_post (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ get_raises_none (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ set_raises (Type& a, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (a.set_raises_begin (), a.set_raises_end (), d);
+ }
+
+ void ReadWriteAttribute::
+ set_raises (Type& a)
+ {
+ Type::SetRaisesIterator
+ b (a.set_raises_begin ()),
+ e (a.set_raises_end ());
+
+ if (b != e)
+ {
+ set_raises_pre (a);
+ iterate_and_traverse (b,
+ e,
+ edge_traverser (),
+ *this,
+ &ReadWriteAttribute::comma,
+ a);
+ set_raises_post (a);
+ }
+ else
+ {
+ set_raises_none (a);
+ }
+ }
+
+ void ReadWriteAttribute::
+ set_raises_pre (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ set_raises_post (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ set_raises_none (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ post (Type&)
+ {
+ }
+
+ void ReadWriteAttribute::
+ comma (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.hpp
new file mode 100644
index 00000000000..522671b6609
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Attribute.hpp
@@ -0,0 +1,170 @@
+// file : CCF/IDL2/Traversal/Attribute.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_ATTRIBUTE_HPP
+#define CCF_IDL2_TRAVERSAL_ATTRIBUTE_HPP
+
+#include "CCF/IDL2/SemanticGraph/Attribute.hpp"
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ struct GetRaises : Edge<SemanticGraph::GetRaises>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.exception ());
+ }
+ };
+
+
+ //
+ //
+ //
+ struct SetRaises : Edge<SemanticGraph::SetRaises>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.exception ());
+ }
+ };
+
+
+ //
+ //
+ //
+ struct Attribute : Node<SemanticGraph::Attribute>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ belongs (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+ //
+ //
+ //
+ struct ReadAttribute : Node<SemanticGraph::ReadAttribute>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ belongs (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ get_raises (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ get_raises (Type&);
+
+ virtual void
+ get_raises_pre (Type&);
+
+ virtual void
+ get_raises_post (Type&);
+
+ virtual void
+ get_raises_none (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+
+
+ //
+ //
+ //
+ struct ReadWriteAttribute : Node<SemanticGraph::ReadWriteAttribute>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ belongs (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ get_raises (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ get_raises (Type&);
+
+ virtual void
+ get_raises_pre (Type&);
+
+ virtual void
+ get_raises_post (Type&);
+
+ virtual void
+ get_raises_none (Type&);
+
+ virtual void
+ set_raises (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ set_raises (Type&);
+
+ virtual void
+ set_raises_pre (Type&);
+
+ virtual void
+ set_raises_post (Type&);
+
+ virtual void
+ set_raises_none (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_ATTRIBUTE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp
new file mode 100644
index 00000000000..c7a24089a42
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.cpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL2/Traversal/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp
new file mode 100644
index 00000000000..03793aafeef
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.hpp
@@ -0,0 +1,471 @@
+// file : CCF/IDL2/Traversal/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_ELEMENTS_HPP
+#define CCF_IDL2_TRAVERSAL_ELEMENTS_HPP
+
+#include <map>
+#include <set>
+
+#include "CCF/CompilerElements/Introspection.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+/*
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+*/
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ template<typename T>
+ class Traverser
+ {
+ protected:
+ virtual
+ ~Traverser ();
+
+ virtual void
+ trampoline (T& n) = 0;
+
+ template <typename>
+ friend class Dispatcher;
+ };
+
+
+ //
+ //
+ //
+ template <typename T>
+ class Dispatcher
+ {
+ public:
+ virtual
+ ~Dispatcher ();
+
+ virtual void
+ traverse (T& n);
+
+ void
+ map (Introspection::TypeId id, Traverser<T>& t)
+ {
+ Traversers& traversers (traversal_map_[id]);
+ traversers.push_back (&t);
+ }
+
+ public:
+ typedef
+ std::vector<Traverser<T>*>
+ Traversers;
+
+ typedef
+ std::map<Introspection::TypeId, Traversers>
+ TraversalMap;
+
+ typedef
+ typename TraversalMap::const_iterator
+ Iterator;
+
+ Iterator
+ begin () const
+ {
+ return traversal_map_.begin ();
+ }
+
+ Iterator
+ end () const
+ {
+ return traversal_map_.end ();
+ }
+
+ private:
+ struct TypeInfoComparator
+ {
+ bool
+ operator () (Introspection::TypeInfo const& x,
+ Introspection::TypeInfo const& y) const
+ {
+ return x.type_id () < y.type_id ();
+ }
+ };
+
+ typedef
+ std::map<Introspection::TypeInfo, unsigned long, TypeInfoComparator>
+ LevelMap;
+
+ typedef
+ std::set<Introspection::TypeInfo, TypeInfoComparator>
+ TypeInfoSet;
+
+ static unsigned long
+ compute_levels (Introspection::TypeInfo const& ti,
+ unsigned long cur,
+ LevelMap& map);
+
+ static void
+ flatten_tree (Introspection::TypeInfo const& ti, TypeInfoSet& set);
+
+ private:
+ TraversalMap traversal_map_;
+ };
+
+
+ //
+ //
+ //
+ typedef
+ Dispatcher<SemanticGraph::Node>
+ NodeDispatcherBase;
+
+ typedef
+ Dispatcher<SemanticGraph::Edge>
+ EdgeDispatcherBase;
+
+
+ //
+ //
+ //
+ class NodeDispatcher : public virtual NodeDispatcherBase
+ {
+ public:
+ void
+ edge_traverser (EdgeDispatcherBase& d)
+ {
+ //@@ this should be done in Dispatcher in merge() function?
+ //
+ for (EdgeDispatcherBase::Iterator i (d.begin ()), end (d.end ());
+ i != end; ++i)
+ {
+ for (EdgeDispatcherBase::Traversers::const_iterator
+ t (i->second.begin ()), end (i->second.end ());
+ t != end; ++t)
+ {
+ dispatcher_.map (i->first, **t);
+ }
+ }
+ }
+
+ protected:
+ template <typename I>
+ void
+ iterate_and_traverse (I begin, I end, EdgeDispatcherBase& d)
+ {
+ for (; begin != end; ++begin)
+ {
+ d.traverse (**begin);
+ }
+ }
+
+ template <typename I, typename X, typename A>
+ void
+ iterate_and_traverse (I begin,
+ I end,
+ EdgeDispatcherBase& d,
+ X& x,
+ void (X::*f)(A&),
+ A& a)
+ {
+ for (I i (begin); i != end;)
+ {
+ d.traverse (**i);
+
+ if (++i != end) (x.*f) (a);
+ }
+ }
+
+ EdgeDispatcherBase&
+ edge_traverser ()
+ {
+ return dispatcher_;
+ }
+
+ protected:
+ EdgeDispatcherBase dispatcher_;
+ };
+
+
+ class EdgeDispatcher : public virtual EdgeDispatcherBase
+ {
+ public:
+ //@@ this should be done in Dispatcher in merge() function?
+ //
+ void
+ node_traverser (NodeDispatcherBase& d)
+ {
+ for (NodeDispatcherBase::Iterator i (d.begin ()), end (d.end ());
+ i != end; ++i)
+ {
+ for (NodeDispatcherBase::Traversers::const_iterator
+ t (i->second.begin ()), end (i->second.end ());
+ t != end; ++t)
+ {
+ dispatcher_.map (i->first, **t);
+ }
+ }
+ }
+
+ protected:
+ NodeDispatcherBase&
+ node_traverser ()
+ {
+ return dispatcher_;
+ }
+
+ protected:
+ NodeDispatcherBase dispatcher_;
+ };
+
+
+ //
+ //
+ //
+ template <typename T>
+ struct Node : Traverser<SemanticGraph::Node>, virtual NodeDispatcher
+ {
+ typedef
+ T
+ Type;
+
+ Node ()
+ {
+ map (typeid (Type), *this);
+ }
+
+ virtual void
+ trampoline (SemanticGraph::Node& n)
+ {
+ //cerr << "trampoline for " << &n << " to type "
+ // << typeid (Type).name () << endl;
+
+ traverse (dynamic_cast<Type&> (n));
+ }
+
+ virtual void
+ traverse (Type&) = 0;
+ };
+
+
+ template <typename T>
+ struct Edge : Traverser <SemanticGraph::Edge>, virtual EdgeDispatcher
+ {
+ typedef
+ T
+ Type;
+
+ Edge ()
+ {
+ map (typeid (Type), *this);
+ }
+
+ virtual void
+ trampoline (SemanticGraph::Edge& e)
+ {
+ traverse (dynamic_cast<Type&> (e));
+ }
+
+
+ virtual void
+ traverse (Type& e) = 0;
+ };
+
+ // Edges
+ //
+ //
+ struct Names : Edge<SemanticGraph::Names>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.named ());
+ }
+ };
+
+
+ struct Defines : Edge<SemanticGraph::Defines>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.named ());
+ }
+ };
+
+
+ struct Mentions : Edge<SemanticGraph::Mentions>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.named ());
+ }
+ };
+
+
+
+ struct Aliases : Edge<SemanticGraph::Aliases>
+ {
+ virtual void
+ traverse (Type& a)
+ {
+ pre (a);
+ type (a);
+ name (a);
+ post (a);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ type (Type& e)
+ {
+ node_traverser ().traverse (e.named ());
+ }
+
+ virtual void
+ name (Type&)
+ {
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ struct Belongs : Edge<SemanticGraph::Belongs>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.type ());
+ }
+ };
+
+
+ struct Arguments : Edge<SemanticGraph::Arguments>
+ {
+ virtual void
+ traverse (Type& a)
+ {
+ node_traverser ().traverse (a.argument ());
+ }
+ };
+
+ struct ArgumentsWithType : Edge<SemanticGraph::ArgumentsWithType>
+ {
+ virtual void
+ traverse (Type& a)
+ {
+ node_traverser ().traverse (a.type ());
+ }
+ };
+
+ struct ArgumentsWithValue : Edge<SemanticGraph::ArgumentsWithValue>
+ {
+ virtual void
+ traverse (Type& a)
+ {
+ node_traverser ().traverse (a.value ());
+ }
+ };
+
+ struct Inherits : Edge<SemanticGraph::Inherits>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.inheritee ());
+ }
+ };
+
+
+ struct Contains : Edge<SemanticGraph::Contains>
+ {
+ };
+
+
+ // Nodes
+ //
+ //
+ struct Nameable : Node<SemanticGraph::Nameable>
+ {
+ };
+
+
+ template <typename T>
+ struct ScopeTemplate : Node<T>
+ {
+ public:
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T& s)
+ {
+ names (s);
+ }
+
+ virtual void
+ names (T& s)
+ {
+ names_pre (s);
+ names (s, this->edge_traverser ());
+ names_post (s);
+ }
+
+ virtual void
+ names (T& s, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (s.names_begin (), s.names_end (), d);
+ }
+
+ virtual void
+ names_pre (T&)
+ {
+ }
+
+ virtual void
+ names_post (T&)
+ {
+ }
+ };
+
+
+ //
+ //
+ //
+ typedef
+ ScopeTemplate<SemanticGraph::Scope>
+ Scope;
+
+
+ //
+ //
+ //
+ struct Type : Node<SemanticGraph::Type>
+ {
+ virtual void
+ traverse (SemanticGraph::Type&) = 0;
+ };
+ }
+ }
+}
+
+#include "CCF/IDL2/Traversal/Elements.tpp"
+
+#endif // CCF_IDL2_TRAVERSAL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.tpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.tpp
new file mode 100644
index 00000000000..60cace27f69
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Elements.tpp
@@ -0,0 +1,128 @@
+// file : CCF/IDL2/Traversal/Elements.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // Traverser
+ //
+ //
+
+ template<typename T>
+ Traverser<T>::
+ ~Traverser ()
+ {
+ }
+
+ // Dispatcher
+ //
+ //
+
+ template <typename T>
+ Dispatcher<T>::
+ ~Dispatcher ()
+ {
+ }
+
+ template <typename T>
+ void Dispatcher<T>::
+ traverse (T& n)
+ {
+ LevelMap levels;
+
+ unsigned long max = compute_levels (n.type_info (), 0, levels);
+
+
+ //cerr << "starting dispatch process for "
+ // << n.type_info ().type_id () << " with "
+ // << max << " levels" << endl;
+
+ for (unsigned long l = 0; l < max + 1; ++l)
+ {
+ TypeInfoSet dispatched;
+
+ for (typename LevelMap::const_iterator
+ i (levels.begin ()), e (levels.end ());
+ i != e; ++i)
+ {
+ if (i->second == l)
+ {
+ typename TraversalMap::const_iterator v (
+ traversal_map_.find (i->first.type_id ()));
+
+ if (v != traversal_map_.end ())
+ {
+ //cerr << "dispatching traversers for "
+ // << n.type_info ().type_id () << " as "
+ // << i->first.type_id () << endl;
+
+ Traversers const& traversers (v->second);
+ for (typename Traversers::const_iterator
+ ti (traversers.begin ()), te (traversers.end ());
+ ti != te; ++ti)
+ {
+ (*ti)->trampoline (n);
+ }
+
+ flatten_tree (i->first, dispatched);
+ }
+ }
+ }
+
+ // Remove traversed types from level map.
+ //
+ for (typename TypeInfoSet::const_iterator i = dispatched.begin ();
+ i != dispatched.end ();
+ ++i)
+ {
+ levels.erase (*i);
+ }
+ }
+ }
+
+ template <typename T>
+ unsigned long Dispatcher<T>::
+ compute_levels (Introspection::TypeInfo const& ti,
+ unsigned long cur,
+ LevelMap& map)
+ {
+ unsigned long ret = cur;
+
+ if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur;
+
+ for (Introspection::TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ unsigned long t = compute_levels (i->type_info (), cur + 1, map);
+ if (t > ret) ret = t;
+ }
+
+ return ret;
+ }
+
+ template <typename T>
+ void Dispatcher<T>::
+ flatten_tree (Introspection::TypeInfo const& ti, TypeInfoSet& set)
+ {
+ set.insert (ti);
+
+ for (Introspection::TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ flatten_tree (i->type_info (), set);
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.cpp
new file mode 100644
index 00000000000..35df538f85b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.cpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL2/Traversal/Enum.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Enum.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.hpp
new file mode 100644
index 00000000000..d789f30b1b0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Enum.hpp
@@ -0,0 +1,30 @@
+// file : CCF/IDL2/Traversal/Enum.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_ENUM_HPP
+#define CCF_IDL2_TRAVERSAL_ENUM_HPP
+
+#include "CCF/IDL2/SemanticGraph/Enum.hpp"
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // Minimal support for now. Talk to me if you need more.
+ //
+ struct Enum : Node<SemanticGraph::Enum>
+ {
+ };
+
+ struct Enumerator : Node<SemanticGraph::Enumerator>
+ {
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_ENUM_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.cpp
new file mode 100644
index 00000000000..21e41784c71
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.cpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL2/Traversal/Exception.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Exception.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ void Exception::
+ traverse (Type& s)
+ {
+ pre (s);
+ name (s);
+ names (s);
+ post (s);
+ }
+
+ void Exception::
+ pre (Type&)
+ {
+ }
+
+ void Exception::
+ name (Type&)
+ {
+ }
+
+ void Exception::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.hpp
new file mode 100644
index 00000000000..23eda73f1a7
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Exception.hpp
@@ -0,0 +1,36 @@
+// file : CCF/IDL2/Traversal/Exception.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_EXCEPTION_HPP
+#define CCF_IDL2_TRAVERSAL_EXCEPTION_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Exception.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Exception : ScopeTemplate<SemanticGraph::Exception>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_EXCEPTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.cpp
new file mode 100644
index 00000000000..4dd6760cebe
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.cpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL2/Traversal/Fundamental.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Fundamental.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.hpp
new file mode 100644
index 00000000000..c4e10d18057
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Fundamental.hpp
@@ -0,0 +1,101 @@
+// file : CCF/IDL2/Traversal/Fundamental.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_FUNDAMENTAL_HPP
+#define CCF_IDL2_TRAVERSAL_FUNDAMENTAL_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Fundamental.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ typedef
+ Node<SemanticGraph::FundamentalType>
+ FundamentalType;
+
+ typedef
+ Node<SemanticGraph::Object>
+ Object;
+
+ typedef
+ Node<SemanticGraph::ValueBase>
+ ValueBase;
+
+ typedef
+ Node<SemanticGraph::Any>
+ Any;
+
+ typedef
+ Node<SemanticGraph::Boolean>
+ Boolean;
+
+ typedef
+ Node<SemanticGraph::Char>
+ Char;
+
+ typedef
+ Node<SemanticGraph::Double>
+ Double;
+
+ typedef
+ Node<SemanticGraph::Float>
+ Float;
+
+ typedef
+ Node<SemanticGraph::Long>
+ Long;
+
+ typedef
+ Node<SemanticGraph::LongDouble>
+ LongDouble;
+
+ typedef
+ Node<SemanticGraph::LongLong>
+ LongLong;
+
+ typedef
+ Node<SemanticGraph::Octet>
+ Octet;
+
+ typedef
+ Node<SemanticGraph::Short>
+ Short;
+
+ typedef
+ Node<SemanticGraph::String>
+ String;
+
+ typedef
+ Node<SemanticGraph::UnsignedLong>
+ UnsignedLong;
+
+ typedef
+ Node<SemanticGraph::UnsignedLongLong>
+ UnsignedLongLong;
+
+ typedef
+ Node<SemanticGraph::UnsignedShort>
+ UnsignedShort;
+
+ typedef
+ Node<SemanticGraph::Void>
+ Void;
+
+ typedef
+ Node<SemanticGraph::Wchar>
+ Wchar;
+
+ typedef
+ Node<SemanticGraph::Wstring>
+ Wstring;
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_FUNDAMENTAL_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/IntExpression.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/IntExpression.hpp
new file mode 100644
index 00000000000..8e111874251
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/IntExpression.hpp
@@ -0,0 +1,757 @@
+// file : CCF/IDL2/Traversal/IntExpression.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_INT_EXPRESSION_HPP
+#define CCF_IDL2_TRAVERSAL_INT_EXPRESSION_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/IntExpression.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ //
+ //
+ typedef
+ Node<SemanticGraph::IntExpression>
+ IntExpression;
+
+ //
+ //
+ typedef
+ Node<SemanticGraph::IntLiteral>
+ IntLiteral;
+
+ //
+ //
+ typedef
+ Node<SemanticGraph::IntConst>
+ IntConst;
+
+
+ // NEG
+ //
+
+ struct IntNegates: Edge<SemanticGraph::IntNegates>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntNeg: Node<SemanticGraph::IntNeg>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ negates (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ negates (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.negates ());
+ }
+
+ virtual void
+ negates (Type& n)
+ {
+ negates (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // COM
+ //
+
+ struct IntComplements: Edge<SemanticGraph::IntComplements>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntCom: Node<SemanticGraph::IntCom>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ complements (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ complements (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.complements ());
+ }
+
+ virtual void
+ complements (Type& n)
+ {
+ complements (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // MUL
+ //
+
+ struct IntMultiplies: Edge<SemanticGraph::IntMultiplies>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntMul: Node<SemanticGraph::IntMul>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ multiplies_first_factor (n);
+ sign (n);
+ multiplies_second_factor (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ multiplies_first_factor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.first_factor ());
+ }
+
+ virtual void
+ multiplies_first_factor (Type& n)
+ {
+ multiplies_first_factor (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ multiplies_second_factor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. second_factor ());
+ }
+
+ virtual void
+ multiplies_second_factor (Type& n)
+ {
+ multiplies_second_factor (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // DIV & REM
+ //
+
+ struct IntDivides: Edge<SemanticGraph::IntDivides>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntDiv: Node<SemanticGraph::IntDiv>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ divides_divident (n);
+ sign (n);
+ divides_divisor (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ divides_divident (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.divident ());
+ }
+
+ virtual void
+ divides_divident (Type& n)
+ {
+ divides_divident (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ divides_divisor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. divisor ());
+ }
+
+ virtual void
+ divides_divisor (Type& n)
+ {
+ divides_divisor (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+ struct IntRem: Node<SemanticGraph::IntRem>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ divides_divident (n);
+ sign (n);
+ divides_divisor (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ divides_divident (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.divident ());
+ }
+
+ virtual void
+ divides_divident (Type& n)
+ {
+ divides_divident (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ divides_divisor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. divisor ());
+ }
+
+ virtual void
+ divides_divisor (Type& n)
+ {
+ divides_divisor (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // ADD
+ //
+
+ struct IntAdds: Edge<SemanticGraph::IntAdds>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntAdd: Node<SemanticGraph::IntAdd>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ adds_first_item (n);
+ sign (n);
+ adds_second_item (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ adds_first_item (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.first_item ());
+ }
+
+ virtual void
+ adds_first_item (Type& n)
+ {
+ adds_first_item (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ adds_second_item (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. second_item ());
+ }
+
+ virtual void
+ adds_second_item (Type& n)
+ {
+ adds_second_item (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // SUB
+ //
+
+ struct IntSubtracts: Edge<SemanticGraph::IntSubtracts>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntSub: Node<SemanticGraph::IntSub>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ subtracts_minuend (n);
+ sign (n);
+ subtracts_subtrahend (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ subtracts_minuend (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.minuend ());
+ }
+
+ virtual void
+ subtracts_minuend (Type& n)
+ {
+ subtracts_minuend (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ subtracts_subtrahend (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. subtrahend ());
+ }
+
+ virtual void
+ subtracts_subtrahend (Type& n)
+ {
+ subtracts_subtrahend (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // RSH & LSH
+ //
+
+ struct IntShifts: Edge<SemanticGraph::IntShifts>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntRsh: Node<SemanticGraph::IntRsh>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ shifts_pattern (n);
+ sign (n);
+ shifts_factor (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ shifts_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.pattern ());
+ }
+
+ virtual void
+ shifts_pattern (Type& n)
+ {
+ shifts_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ shifts_factor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. factor ());
+ }
+
+ virtual void
+ shifts_factor (Type& n)
+ {
+ shifts_factor (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+ struct IntLsh: Node<SemanticGraph::IntLsh>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ shifts_pattern (n);
+ sign (n);
+ shifts_factor (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ shifts_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.pattern ());
+ }
+
+ virtual void
+ shifts_pattern (Type& n)
+ {
+ shifts_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ shifts_factor (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. factor ());
+ }
+
+ virtual void
+ shifts_factor (Type& n)
+ {
+ shifts_factor (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // AND
+ //
+
+ struct IntConjuncts: Edge<SemanticGraph::IntConjuncts>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntAnd: Node<SemanticGraph::IntAnd>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ conjuncts_first_pattern (n);
+ sign (n);
+ conjuncts_second_pattern (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ conjuncts_first_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.first_pattern ());
+ }
+
+ virtual void
+ conjuncts_first_pattern (Type& n)
+ {
+ conjuncts_first_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ conjuncts_second_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. second_pattern ());
+ }
+
+ virtual void
+ conjuncts_second_pattern (Type& n)
+ {
+ conjuncts_second_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // Xor
+ //
+
+ struct IntExclusivelyDisjuncts:
+ Edge<SemanticGraph::IntExclusivelyDisjuncts>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntXor: Node<SemanticGraph::IntXor>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ exclusively_disjuncts_first_pattern (n);
+ sign (n);
+ exclusively_disjuncts_second_pattern (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ exclusively_disjuncts_first_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.first_pattern ());
+ }
+
+ virtual void
+ exclusively_disjuncts_first_pattern (Type& n)
+ {
+ exclusively_disjuncts_first_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ exclusively_disjuncts_second_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. second_pattern ());
+ }
+
+ virtual void
+ exclusively_disjuncts_second_pattern (Type& n)
+ {
+ exclusively_disjuncts_second_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+
+ // Or
+ //
+
+ struct IntInclusivelyDisjuncts:
+ Edge<SemanticGraph::IntInclusivelyDisjuncts>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.argument ());
+ }
+ };
+
+ struct IntOr: Node<SemanticGraph::IntOr>
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ pre (n);
+ inclusively_disjuncts_first_pattern (n);
+ sign (n);
+ inclusively_disjuncts_second_pattern (n);
+ post (n);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ inclusively_disjuncts_first_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n.first_pattern ());
+ }
+
+ virtual void
+ inclusively_disjuncts_first_pattern (Type& n)
+ {
+ inclusively_disjuncts_first_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ sign (Type&)
+ {
+ }
+
+ virtual void
+ inclusively_disjuncts_second_pattern (Type& n, EdgeDispatcherBase& d)
+ {
+ d.traverse (n. second_pattern ());
+ }
+
+ virtual void
+ inclusively_disjuncts_second_pattern (Type& n)
+ {
+ inclusively_disjuncts_second_pattern (n, edge_traverser ());
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_INT_EXPRESSION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.cpp
new file mode 100644
index 00000000000..fb6cbf9686c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.cpp
@@ -0,0 +1,15 @@
+// file : CCF/IDL2/Traversal/Interface.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Interface.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp
new file mode 100644
index 00000000000..b0c05f36b80
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.hpp
@@ -0,0 +1,89 @@
+// file : CCF/IDL2/Traversal/Interface.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_INTERFACE_HPP
+#define CCF_IDL2_TRAVERSAL_INTERFACE_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Supports : Edge<SemanticGraph::Supports>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.supportee ());
+ }
+ };
+
+
+ template <typename T>
+ struct InterfaceTemplate : ScopeTemplate<T>
+ {
+ /* GCC#13590/DR#39
+ using ScopeTemplate<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ inherits (T&, EdgeDispatcherBase& d);
+
+ virtual void
+ inherits (T&);
+
+ virtual void
+ inherits_pre (T&);
+
+ virtual void
+ inherits_post (T&);
+
+ virtual void
+ inherits_none (T&);
+
+ virtual void
+ post (T&);
+
+ virtual void
+ comma (T&);
+ };
+
+
+ typedef
+ InterfaceTemplate<SemanticGraph::Interface>
+ Interface;
+
+
+ typedef
+ InterfaceTemplate<SemanticGraph::AbstractInterface>
+ AbstractInterface;
+
+ typedef
+ InterfaceTemplate<SemanticGraph::LocalInterface>
+ LocalInterface;
+
+ typedef
+ InterfaceTemplate<SemanticGraph::UnconstrainedInterface>
+ UnconstrainedInterface;
+ }
+ }
+}
+
+#include "CCF/IDL2/Traversal/Interface.tpp"
+
+#endif // CCF_IDL2_TRAVERSAL_INTERFACE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.tpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.tpp
new file mode 100644
index 00000000000..23d2bfd922d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Interface.tpp
@@ -0,0 +1,99 @@
+// file : CCF/IDL2/Traversal/Interface.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ void InterfaceTemplate<T>::
+ traverse (T& i)
+ {
+ pre (i);
+ name (i);
+ inherits (i);
+ names (i);
+ post (i);
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ inherits (T& i, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (i.inherits_begin (),
+ i.inherits_end (),
+ d);
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ inherits (T& i)
+ {
+ typename T::InheritsIterator
+ b (i.inherits_begin ()), e (i.inherits_end ());
+
+ if (b != e)
+ {
+ inherits_pre (i);
+ iterate_and_traverse (b,
+ e,
+ this->edge_traverser (),
+ *this,
+ &InterfaceTemplate::comma,
+ i);
+ inherits_post (i);
+ }
+ else
+ {
+ inherits_none (i);
+ }
+
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ inherits_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ inherits_post (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ inherits_none (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ post (T&)
+ {
+ }
+
+ template <typename T>
+ void InterfaceTemplate<T>::
+ comma (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.cpp
new file mode 100644
index 00000000000..01299a0b00c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.cpp
@@ -0,0 +1,50 @@
+// file : CCF/IDL2/Traversal/Member.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Member.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ void Member::
+ traverse (Type& m)
+ {
+ pre (m);
+ belongs (m);
+ name (m);
+ post (m);
+ }
+
+ void Member::
+ pre (Type&)
+ {
+ }
+
+ void Member::
+ belongs (Type& m, EdgeDispatcherBase& d)
+ {
+ d.traverse (m.belongs ());
+ }
+
+ void Member::
+ belongs (Type& m)
+ {
+ belongs (m, edge_traverser ());
+ }
+
+ void Member::
+ name (Type&)
+ {
+ }
+
+ void Member::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.hpp
new file mode 100644
index 00000000000..a0f05e6f33f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Member.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL2/Traversal/Member.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_MEMBER_HPP
+#define CCF_IDL2_TRAVERSAL_MEMBER_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Member.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Member : Node<SemanticGraph::Member>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ belongs (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.cpp
new file mode 100644
index 00000000000..62f5d70aa9c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.cpp
@@ -0,0 +1,15 @@
+// file : CCF/IDL2/Traversal/Module.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Module.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp
new file mode 100644
index 00000000000..994c40dd590
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Module.hpp
@@ -0,0 +1,48 @@
+// file : CCF/IDL2/Traversal/Module.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_MODULE_HPP
+#define CCF_IDL2_TRAVERSAL_MODULE_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Module.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Module : ScopeTemplate<SemanticGraph::Module>
+ {
+ virtual void
+ traverse (Type& m)
+ {
+ pre (m);
+ name (m);
+ names (m);
+ post (m);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ }
+
+ virtual void
+ name (Type&)
+ {
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_MODULE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.cpp
new file mode 100644
index 00000000000..59a99bec8ad
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.cpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL2/Traversal/Native.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Native.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.hpp
new file mode 100644
index 00000000000..ad70473c234
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Native.hpp
@@ -0,0 +1,24 @@
+// file : CCF/IDL2/Traversal/Native.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_NATIVE_HPP
+#define CCF_IDL2_TRAVERSAL_NATIVE_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Native.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ typedef
+ Node<SemanticGraph::Native>
+ Native;
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_NATIVE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.cpp
new file mode 100644
index 00000000000..2fca9de465b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.cpp
@@ -0,0 +1,15 @@
+// file : CCF/IDL2/Traversal/Operation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Operation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp
new file mode 100644
index 00000000000..04a426301f0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.hpp
@@ -0,0 +1,178 @@
+// file : CCF/IDL2/Traversal/Operation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_OPERATION_HPP
+#define CCF_IDL2_TRAVERSAL_OPERATION_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ struct Receives : Edge<SemanticGraph::Receives>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.parameter ());
+ }
+ };
+
+
+ //
+ //
+ //
+ struct Returns : Edge<SemanticGraph::Returns>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.type ());
+ }
+ };
+
+ //
+ //
+ //
+ struct Raises : Edge<SemanticGraph::Raises>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.exception ());
+ }
+ };
+
+ //
+ //
+ //
+ template<typename T>
+ struct ParameterTemplate : Node<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ belongs (T&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ post (T&);
+ };
+
+ typedef
+ ParameterTemplate<SemanticGraph::Parameter>
+ Parameter;
+
+ typedef
+ ParameterTemplate<SemanticGraph::InParameter>
+ InParameter;
+
+ typedef
+ ParameterTemplate<SemanticGraph::InOutParameter>
+ InOutParameter;
+
+ typedef
+ ParameterTemplate<SemanticGraph::OutParameter>
+ OutParameter;
+
+ //
+ //
+ //
+ template <typename T>
+ struct OperationTemplate : Node<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ returns (T&, EdgeDispatcherBase&);
+
+ virtual void
+ returns (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ receives (T&, EdgeDispatcherBase&);
+
+ virtual void
+ receives (T&);
+
+ virtual void
+ receives_pre (T&);
+
+ virtual void
+ receives_post (T&);
+
+ virtual void
+ receives_none (T&);
+
+ virtual void
+ raises (T&, EdgeDispatcherBase&);
+
+ virtual void
+ raises (T&);
+
+ virtual void
+ raises_pre (T&);
+
+ virtual void
+ raises_post (T&);
+
+ virtual void
+ raises_none (T&);
+
+ virtual void
+ post (T&);
+
+ virtual void
+ comma (T&);
+ };
+
+ typedef
+ OperationTemplate<SemanticGraph::Operation>
+ Operation;
+
+ typedef
+ OperationTemplate<SemanticGraph::OneWayOperation>
+ OneWayOperation;
+
+ typedef
+ OperationTemplate<SemanticGraph::TwoWayOperation>
+ TwoWayOperation;
+ }
+ }
+}
+
+#include "CCF/IDL2/Traversal/Operation.tpp"
+
+#endif // CCF_IDL2_TRAVERSAL_OPERATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.tpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.tpp
new file mode 100644
index 00000000000..bcb3760ec3b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Operation.tpp
@@ -0,0 +1,201 @@
+// file : CCF/IDL2/Traversal/Operation.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // ParameterTemplate
+ //
+ //
+ template<typename T>
+ void ParameterTemplate<T>::
+ traverse (T& p)
+ {
+ pre (p);
+ belongs (p);
+ name (p);
+ post (p);
+ }
+
+ template<typename T>
+ void ParameterTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template<typename T>
+ void ParameterTemplate<T>::
+ belongs (T& p, EdgeDispatcherBase& d)
+ {
+ d.traverse (p.belongs ());
+ }
+
+ template<typename T>
+ void ParameterTemplate<T>::
+ belongs (T& p)
+ {
+ belongs (p, this->edge_traverser ());
+ }
+
+ template<typename T>
+ void ParameterTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template<typename T>
+ void ParameterTemplate<T>::
+ post (T&)
+ {
+ }
+
+
+ // OperationTemplate
+ //
+ //
+ template<typename T>
+ void OperationTemplate<T>::
+ traverse (T& o)
+ {
+ pre (o);
+ returns (o);
+ name (o);
+ receives (o);
+ raises (o);
+ post (o);
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ returns (T& o, EdgeDispatcherBase& d)
+ {
+ d.traverse (o.returns ());
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ returns (T& o)
+ {
+ returns (o, this->edge_traverser ());
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ receives (T& o, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (o.receives_begin (), o.receives_end (), d);
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ receives (T& o)
+ {
+ typename T::ReceivesIterator
+ b (o.receives_begin ()), e (o.receives_end ());
+
+ if (b != e)
+ {
+ receives_pre (o);
+ iterate_and_traverse (
+ b, e, this->edge_traverser (), *this, &OperationTemplate<T>::comma, o);
+ receives_post (o);
+ }
+ else
+ {
+ receives_none (o);
+ }
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ receives_pre (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ receives_post (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ receives_none (T&)
+ {
+ }
+
+
+ template<typename T>
+ void OperationTemplate<T>::
+ raises (T& o, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (o.raises_begin (), o.raises_end (), d);
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ raises (T& o)
+ {
+ typename T::RaisesIterator b (o.raises_begin ()), e (o.raises_end ());
+
+ if (b != e)
+ {
+ raises_pre (o);
+ iterate_and_traverse (
+ b, e, this->edge_traverser (), *this, &OperationTemplate<T>::comma, o);
+ raises_post (o);
+ }
+ else
+ {
+ raises_none (o);
+ }
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ raises_pre (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ raises_post (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ raises_none (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ post (T&)
+ {
+ }
+
+ template<typename T>
+ void OperationTemplate<T>::
+ comma (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.cpp
new file mode 100644
index 00000000000..c781cdcfb97
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.cpp
@@ -0,0 +1,111 @@
+// file : CCF/IDL2/Traversal/Sequence.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Sequence.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+
+ // UnboundedSequence
+ //
+
+ void UnboundedSequence::
+ traverse (Type& us)
+ {
+ pre (us);
+ arguments_with_type (us);
+ name (us);
+ post (us);
+ }
+
+ void UnboundedSequence::
+ pre (Type&)
+ {
+ }
+
+ void UnboundedSequence::
+ arguments_with_type (Type& us, EdgeDispatcherBase& d)
+ {
+ d.traverse (**us.arguments_begin ());
+ }
+
+ void UnboundedSequence::
+ arguments_with_type (Type& us)
+ {
+ arguments_with_type (us, edge_traverser ());
+ }
+
+ void UnboundedSequence::
+ name (Type&)
+ {
+ }
+
+ void UnboundedSequence::
+ post (Type&)
+ {
+ }
+
+
+ // BoundedSequence
+ //
+
+ void BoundedSequence::
+ traverse (Type& bs)
+ {
+ pre (bs);
+ arguments_with_type (bs);
+ arguments_with_value (bs);
+ name (bs);
+ post (bs);
+ }
+
+ void BoundedSequence::
+ pre (Type&)
+ {
+ }
+
+ void BoundedSequence::
+ arguments_with_type (Type& bs, EdgeDispatcherBase& d)
+ {
+ d.traverse (**bs.arguments_begin ());
+ }
+
+ void BoundedSequence::
+ arguments_with_type (Type& bs)
+ {
+ arguments_with_type (bs, edge_traverser ());
+ }
+
+ void BoundedSequence::
+ arguments_with_value (Type& bs, EdgeDispatcherBase& d)
+ {
+ Type::ArgumentsIterator i (bs.arguments_begin ());
+
+ ++i; // Bound is always second to the type.
+
+ d.traverse (**i);
+ }
+
+ void BoundedSequence::
+ arguments_with_value (Type& bs)
+ {
+ arguments_with_value (bs, edge_traverser ());
+ }
+
+ void BoundedSequence::
+ name (Type&)
+ {
+ }
+
+ void BoundedSequence::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.hpp
new file mode 100644
index 00000000000..8011ff85c38
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Sequence.hpp
@@ -0,0 +1,69 @@
+// file : CCF/IDL2/Traversal/Sequence.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_SEQUENCE_HPP
+#define CCF_IDL2_TRAVERSAL_SEQUENCE_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Sequence.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct UnboundedSequence : Node<SemanticGraph::UnboundedSequence>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ arguments_with_type (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_type (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+ struct BoundedSequence : Node<SemanticGraph::BoundedSequence>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ arguments_with_type (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_type (Type&);
+
+ virtual void
+ arguments_with_value (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_value (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_SEQUENCE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/String.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/String.cpp
new file mode 100644
index 00000000000..0d1e23883ed
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/String.cpp
@@ -0,0 +1,93 @@
+// file : CCF/IDL2/Traversal/String.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/String.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // BoundedString
+ //
+
+ void BoundedString::
+ traverse (Type& s)
+ {
+ pre (s);
+ arguments_with_value (s);
+ name (s);
+ post (s);
+ }
+
+ void BoundedString::
+ pre (Type&)
+ {
+ }
+
+ void BoundedString::
+ arguments_with_value (Type& s, EdgeDispatcherBase& d)
+ {
+ d.traverse (**s.arguments_begin ());
+ }
+
+ void BoundedString::
+ arguments_with_value (Type& s)
+ {
+ arguments_with_value (s, edge_traverser ());
+ }
+
+ void BoundedString::
+ name (Type&)
+ {
+ }
+
+ void BoundedString::
+ post (Type&)
+ {
+ }
+
+
+ // BoundedWideString
+ //
+
+ void BoundedWideString::
+ traverse (Type& s)
+ {
+ pre (s);
+ arguments_with_value (s);
+ name (s);
+ post (s);
+ }
+
+ void BoundedWideString::
+ pre (Type&)
+ {
+ }
+
+ void BoundedWideString::
+ arguments_with_value (Type& s, EdgeDispatcherBase& d)
+ {
+ d.traverse (**s.arguments_begin ());
+ }
+
+ void BoundedWideString::
+ arguments_with_value (Type& s)
+ {
+ arguments_with_value (s, edge_traverser ());
+ }
+
+ void BoundedWideString::
+ name (Type&)
+ {
+ }
+
+ void BoundedWideString::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/String.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/String.hpp
new file mode 100644
index 00000000000..7fca6eb7972
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/String.hpp
@@ -0,0 +1,64 @@
+// file : CCF/IDL2/Traversal/String.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_STRING_HPP
+#define CCF_IDL2_TRAVERSAL_STRING_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/String.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct BoundedString : Node<SemanticGraph::BoundedString>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ arguments_with_value (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_value (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+
+ struct BoundedWideString : Node<SemanticGraph::BoundedWideString>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ arguments_with_value (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ arguments_with_value (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_STRING_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.cpp
new file mode 100644
index 00000000000..c9e4a23ee0d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.cpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL2/Traversal/Struct.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Struct.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ void Struct::
+ traverse (Type& s)
+ {
+ pre (s);
+ name (s);
+ names (s);
+ post (s);
+ }
+
+ void Struct::
+ pre (Type&)
+ {
+ }
+
+ void Struct::
+ name (Type&)
+ {
+ }
+
+ void Struct::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.hpp
new file mode 100644
index 00000000000..0ab61f8ef85
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Struct.hpp
@@ -0,0 +1,35 @@
+// file : CCF/IDL2/Traversal/Struct.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_STRUCT_HPP
+#define CCF_IDL2_TRAVERSAL_STRUCT_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Struct.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ struct Struct : ScopeTemplate<SemanticGraph::Struct>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_STRUCT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.cpp
new file mode 100644
index 00000000000..e3fcd58e272
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.cpp
@@ -0,0 +1,37 @@
+// file : CCF/IDL2/Traversal/Translation.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Translation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // TranslationRegion
+ //
+ //
+ void TranslationRegion::
+ traverse (SemanticGraph::TranslationRegion& r)
+ {
+ iterate_and_traverse (r.contains_begin (),
+ r.contains_end (),
+ edge_traverser ());
+ }
+
+
+ // TranslationUnit
+ //
+ //
+ void TranslationUnit::
+ traverse (SemanticGraph::TranslationUnit& u)
+ {
+ iterate_and_traverse (u.contains_begin (),
+ u.contains_end (),
+ edge_traverser ());
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp
new file mode 100644
index 00000000000..7fc3f58c5d4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Translation.hpp
@@ -0,0 +1,107 @@
+// file : CCF/IDL2/Traversal/Translation.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_TRANSLATION_HPP
+#define CCF_IDL2_TRAVERSAL_TRANSLATION_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // Some edges.
+ //
+ //
+ struct ContainsPrincipal : Edge<SemanticGraph::ContainsPrincipal>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+ struct ContainsImplied : Edge<SemanticGraph::ContainsImplied>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+ struct ContainsRoot : Edge<SemanticGraph::ContainsRoot>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+ struct Includes : Edge<SemanticGraph::Includes>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+ struct QuoteIncludes : Edge<SemanticGraph::QuoteIncludes>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+ struct BracketIncludes : Edge<SemanticGraph::BracketIncludes>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.element ());
+ }
+ };
+
+
+ //
+ //
+ //
+ typedef
+ ScopeTemplate <SemanticGraph::Root>
+ Root;
+
+
+ //
+ //
+ //
+ struct TranslationRegion : Node<SemanticGraph::TranslationRegion>
+ {
+ virtual void
+ traverse (SemanticGraph::TranslationRegion&);
+ };
+
+
+ //
+ //
+ //
+ struct TranslationUnit : Node<SemanticGraph::TranslationUnit>
+ {
+ virtual void
+ traverse (SemanticGraph::TranslationUnit&);
+ };
+
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_TRANSLATION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.cpp
new file mode 100644
index 00000000000..1e42505b5d7
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.cpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL2/Traversal/TypeId.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/TypeId.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp
new file mode 100644
index 00000000000..eb917dd69cb
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/TypeId.hpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL2/Traversal/TypeId.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_TYPE_ID_HPP
+#define CCF_IDL2_TRAVERSAL_TYPE_ID_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/TypeId.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // Typeid and typeprefix are two idiotic constructs of IDL.
+ // They normally should not result in any directly generated
+ // code so only minimal (and most generic) support is provided.
+ //
+
+ struct TypeId : Node<SemanticGraph::TypeId>
+ {
+ };
+
+ struct TypePrefix : Node<SemanticGraph::TypePrefix>
+ {
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_TYPE_ID_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.cpp
new file mode 100644
index 00000000000..b14f518983e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.cpp
@@ -0,0 +1,81 @@
+// file : CCF/IDL2/Traversal/Union.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/Union.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ // UnionMember
+ //
+ //
+ void UnionMember::
+ traverse (Type& m)
+ {
+ pre (m);
+ belongs (m);
+ name (m);
+ post (m);
+ }
+
+ void UnionMember::
+ pre (Type&)
+ {
+ }
+
+ void UnionMember::
+ belongs (Type& m, EdgeDispatcherBase& d)
+ {
+ d.traverse (m.belongs ());
+ }
+
+ void UnionMember::
+ belongs (Type& m)
+ {
+ belongs (m, edge_traverser ());
+ }
+
+ void UnionMember::
+ name (Type&)
+ {
+ }
+
+ void UnionMember::
+ post (Type&)
+ {
+ }
+
+
+ // Union
+ //
+ //
+ void Union::
+ traverse (Type& s)
+ {
+ pre (s);
+ name (s);
+ names (s);
+ post (s);
+ }
+
+ void Union::
+ pre (Type&)
+ {
+ }
+
+ void Union::
+ name (Type&)
+ {
+ }
+
+ void Union::
+ post (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.hpp
new file mode 100644
index 00000000000..2bcad1eb4ea
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/Union.hpp
@@ -0,0 +1,63 @@
+// file : CCF/IDL2/Traversal/Union.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_UNION_HPP
+#define CCF_IDL2_TRAVERSAL_UNION_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+#include "CCF/IDL2/SemanticGraph/Union.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ struct UnionMember : Node<SemanticGraph::UnionMember>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ belongs (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+
+
+ //
+ //
+ //
+ struct Union : ScopeTemplate<SemanticGraph::Union>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ post (Type&);
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL2_TRAVERSAL_UNION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.cpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.cpp
new file mode 100644
index 00000000000..63dce1325df
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.cpp
@@ -0,0 +1,15 @@
+// file : CCF/IDL2/Traversal/ValueType.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL2/Traversal/ValueType.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.hpp
new file mode 100644
index 00000000000..a99ee48e814
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.hpp
@@ -0,0 +1,89 @@
+// file : CCF/IDL2/Traversal/ValueType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_VALUE_TYPE_HPP
+#define CCF_IDL2_TRAVERSAL_VALUE_TYPE_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+#include "CCF/IDL2/Traversal/Operation.hpp"
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ struct ValueTypeTemplate : ScopeTemplate<T>
+ {
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ inherits (T&, EdgeDispatcherBase& d);
+
+ virtual void
+ inherits (T&);
+
+ virtual void
+ inherits_pre (T&);
+
+ virtual void
+ inherits_post (T&);
+
+ virtual void
+ inherits_none (T&);
+
+ virtual void
+ supports (T&, EdgeDispatcherBase& d);
+
+ virtual void
+ supports (T&);
+
+ virtual void
+ supports_pre (T&);
+
+ virtual void
+ supports_post (T&);
+
+ virtual void
+ supports_none (T&);
+
+ virtual void
+ post (T&);
+
+ virtual void
+ comma (T&);
+ };
+
+
+ typedef
+ ValueTypeTemplate<SemanticGraph::ValueType>
+ ValueType;
+
+ typedef
+ ValueTypeTemplate<SemanticGraph::AbstractValueType>
+ AbstractValueType;
+
+ typedef
+ ValueTypeTemplate<SemanticGraph::ConcreteValueType>
+ ConcreteValueType;
+
+ typedef
+ OperationTemplate<SemanticGraph::ValueTypeFactory>
+ ValueTypeFactory;
+ }
+ }
+}
+
+#include "CCF/IDL2/Traversal/ValueType.tpp"
+
+#endif // CCF_IDL2_TRAVERSAL_VALUE_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.tpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.tpp
new file mode 100644
index 00000000000..e5582c4c61b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueType.tpp
@@ -0,0 +1,150 @@
+// file : CCF/IDL2/Traversal/ValueType.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ traverse (T& v)
+ {
+ pre (v);
+ name (v);
+ inherits (v);
+ supports (v);
+ names (v);
+ post (v);
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ inherits (T& v, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (v.inherits_begin (),
+ v.inherits_end (),
+ d);
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ inherits (T& v)
+ {
+ typename T::InheritsIterator
+ b (v.inherits_begin ()), e (v.inherits_end ());
+
+ if (b != e)
+ {
+ inherits_pre (v);
+ iterate_and_traverse (b,
+ e,
+ this->edge_traverser (),
+ *this,
+ &ValueTypeTemplate::comma,
+ v);
+ inherits_post (v);
+ }
+ else
+ {
+ inherits_none (v);
+ }
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ inherits_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ inherits_post (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ inherits_none (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ supports (T& v, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (v.supports_begin (),
+ v.supports_end (),
+ d);
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ supports (T& v)
+ {
+ typename T::SupportsIterator
+ b (v.supports_begin ()), e (v.supports_end ());
+
+ if (b != e)
+ {
+ supports_pre (v);
+ iterate_and_traverse (b,
+ e,
+ this->edge_traverser (),
+ *this,
+ &ValueTypeTemplate::comma,
+ v);
+ supports_post (v);
+ }
+ else
+ {
+ supports_none (v);
+ }
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ supports_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ supports_post (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ supports_none (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ post (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeTemplate<T>::
+ comma (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp
new file mode 100644
index 00000000000..f579f7d765d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp
@@ -0,0 +1,59 @@
+// file : CCF/IDL2/Traversal/ValueTypeMember.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL2_TRAVERSAL_VALUE_TYPE_MEMBER_HPP
+#define CCF_IDL2_TRAVERSAL_VALUE_TYPE_MEMBER_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+#include "CCF/IDL2/SemanticGraph/ValueTypeMember.hpp"
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ struct ValueTypeMemberTemplate : Node<T>
+ {
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ belongs (T&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ post (T&);
+
+ using Node<T>::edge_traverser;
+ };
+
+ typedef
+ ValueTypeMemberTemplate<SemanticGraph::ValueTypeMember>
+ ValueTypeMember;
+
+ typedef
+ ValueTypeMemberTemplate<SemanticGraph::ValueTypePrivateMember>
+ ValueTypePrivateMember;
+
+ typedef
+ ValueTypeMemberTemplate<SemanticGraph::ValueTypePublicMember>
+ ValueTypePublicMember;
+ }
+ }
+}
+
+#include "CCF/IDL2/Traversal/ValueTypeMember.tpp"
+
+#endif // CCF_IDL2_TRAVERSAL_VALUE_TYPE_MEMBER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp
new file mode 100644
index 00000000000..9629a9e056b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp
@@ -0,0 +1,54 @@
+// file : CCF/IDL2/Traversal/ValueTypeMember.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL2
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ traverse (T& m)
+ {
+ pre (m);
+ belongs (m);
+ name (m);
+ post (m);
+ }
+
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ belongs (T& m, EdgeDispatcherBase& d)
+ {
+ d.traverse (m.belongs ());
+ }
+
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ belongs (T& m)
+ {
+ belongs (m, edge_traverser ());
+ }
+
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void ValueTypeMemberTemplate<T>::
+ post (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/IDL3.mpc b/modules/CIAO/CCF/CCF/IDL3/IDL3.mpc
new file mode 100644
index 00000000000..593cc40c098
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/IDL3.mpc
@@ -0,0 +1,15 @@
+//$Id$
+
+project(IDL3): cidlc {
+ sharedname =
+ staticname = IDL3
+ libout = ..
+
+ Source_Files {
+ .
+ ./SemanticGraph
+ ./Traversal
+ ./SemanticAction/Impl
+
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.cpp b/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.cpp
new file mode 100644
index 00000000000..efabb4cf3c1
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.cpp
@@ -0,0 +1,30 @@
+// file : CCF/IDL3/LexicalAnalyzer.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/LexicalAnalyzer.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ LexicalAnalyzer::
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is)
+ : IDL2::LexicalAnalyzer (is)
+ {
+ // Keywords (alphabetic order).
+
+ keyword_table_.insert ("component");
+ keyword_table_.insert ("consumes" );
+ keyword_table_.insert ("emits" );
+ keyword_table_.insert ("eventtype");
+ keyword_table_.insert ("home" );
+ keyword_table_.insert ("finder" );
+ keyword_table_.insert ("manages" );
+ keyword_table_.insert ("multiple" );
+ keyword_table_.insert ("provides" );
+ keyword_table_.insert ("publishes");
+ keyword_table_.insert ("uses" );
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.hpp b/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.hpp
new file mode 100644
index 00000000000..d0b581cee05
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/LexicalAnalyzer.hpp
@@ -0,0 +1,22 @@
+// file : CCF/IDL3/LexicalAnalyzer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_LEXICAL_ANALYZER_HPP
+#define CCF_IDL3_LEXICAL_ANALYZER_HPP
+
+#include "CCF/IDL2/LexicalAnalyzer.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ class LexicalAnalyzer : public virtual IDL2::LexicalAnalyzer
+ {
+ public:
+ LexicalAnalyzer (CompilerElements::TokenStream<Char>& is);
+ };
+ }
+}
+
+#endif // CCF_IDL3_LEXICAL_ANALYZER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Parser.cpp b/modules/CIAO/CCF/CCF/IDL3/Parser.cpp
new file mode 100644
index 00000000000..acb791f92c4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Parser.cpp
@@ -0,0 +1,1154 @@
+// file : CCF/IDL3/Parser.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/Parser.hpp"
+
+//
+// Note: DO NOT run emacs indenter (or any other indentation tool) over
+// this file because it will most likely break BNF indentation.
+//
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ using IDL2::Parsing::DiagnosticType;
+ using IDL2::Parsing::RecoveryMethod;
+
+ Parser::
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f)
+ : IDL2::Parser (context, dout, l, f),
+
+ COMPONENT ("component"),
+ CONSUMES ("consumes" ),
+ EMITS ("emits" ),
+ EVENTTYPE ("eventtype"),
+ HOME ("home" ),
+ FINDER ("finder" ),
+ MANAGES ("manages" ),
+ MULTIPLE ("multiple" ),
+ PROVIDES ("provides" ),
+ PUBLISHES ("publishes"),
+ USES ("uses" ),
+
+
+ // Component
+ //
+ act_component_begin_def (
+ f.component (), &SemanticAction::Component::begin_def),
+
+ act_component_begin_fwd (
+ f.component (), &SemanticAction::Component::begin_fwd),
+
+ act_component_inherits (
+ f.component (), &SemanticAction::Component::inherits),
+
+ act_component_supports (
+ f.component (), &SemanticAction::Component::supports),
+
+ act_component_open_scope (
+ f.component (), &SemanticAction::Scope::open_scope),
+
+ act_component_close_scope (
+ f.component (), &SemanticAction::Scope::close_scope),
+
+ act_component_end (
+ f.component (), &SemanticAction::Component::end),
+
+
+ // Provides
+ //
+ act_provides_type (f.provides (), &SemanticAction::Provides::type),
+ act_provides_name (f.provides (), &SemanticAction::Provides::name),
+
+
+ // Uses
+ //
+ act_uses_multiple (f.uses (), &SemanticAction::Uses::multiple),
+ act_uses_type (f.uses (), &SemanticAction::Uses::type),
+ act_uses_name (f.uses (), &SemanticAction::Uses::name),
+
+
+ // Publishes
+ //
+ act_publishes_type (
+ f.publishes (), &SemanticAction::Publishes::type),
+
+ act_publishes_name (
+ f.publishes (), &SemanticAction::Publishes::name),
+
+
+ // Emits
+ //
+ act_emits_type (f.emits (), &SemanticAction::Emits::type),
+ act_emits_name (f.emits (), &SemanticAction::Emits::name),
+
+
+ // Consumes
+ //
+ act_consumes_type (f.consumes (), &SemanticAction::Consumes::type),
+ act_consumes_name (f.consumes (), &SemanticAction::Consumes::name),
+
+
+ // EventType
+ //
+ act_event_type_begin_abstract_def (
+ f.event_type (), &SemanticAction::EventType::begin_abstract_def),
+
+ act_event_type_begin_abstract_fwd (
+ f.event_type (), &SemanticAction::EventType::begin_abstract_fwd),
+
+ act_event_type_begin_concrete_def (
+ f.event_type (), &SemanticAction::EventType::begin_concrete_def),
+
+ act_event_type_begin_concrete_fwd (
+ f.event_type (), &SemanticAction::EventType::begin_concrete_fwd),
+
+ act_event_type_inherits (
+ f.event_type (), &SemanticAction::EventType::inherits),
+
+ act_event_type_supports (
+ f.event_type (), &SemanticAction::EventType::supports),
+
+ act_event_type_open_scope (
+ f.event_type (), &SemanticAction::Scope::open_scope),
+
+ act_event_type_close_scope (
+ f.event_type (), &SemanticAction::Scope::close_scope),
+
+ act_event_type_end (
+ f.event_type (), &SemanticAction::EventType::end),
+
+ // EventTypeFactory
+ //
+ act_event_type_factory_name (
+ f.event_type_factory (), &SemanticAction::EventTypeFactory::name),
+
+ act_event_type_factory_parameter (
+ f.event_type_factory (), &SemanticAction::EventTypeFactory::parameter),
+
+ act_event_type_factory_raises (
+ f.event_type_factory (), &SemanticAction::EventTypeFactory::raises),
+
+
+ // Home
+ //
+ act_home_begin (
+ f.home (), &SemanticAction::Home::begin),
+
+ act_home_inherits (
+ f.home (), &SemanticAction::Home::inherits),
+
+ act_home_supports (
+ f.home (), &SemanticAction::Home::supports),
+
+ act_home_manages (
+ f.home (), &SemanticAction::Home::manages),
+
+ act_home_open_scope (
+ f.home (), &SemanticAction::Scope::open_scope),
+
+ act_home_close_scope (
+ f.home (), &SemanticAction::Scope::close_scope),
+
+ act_home_end (
+ f.home (), &SemanticAction::Home::end),
+
+
+ // HomeFactory
+ //
+ act_home_factory_name (
+ f.home_factory (), &SemanticAction::HomeFactory::name),
+
+ act_home_factory_parameter (
+ f.home_factory (), &SemanticAction::HomeFactory::parameter),
+
+ act_home_factory_raises (
+ f.home_factory (), &SemanticAction::HomeFactory::raises),
+
+
+ // HomeFinder
+ //
+ act_home_finder_name (
+ f.home_finder (), &SemanticAction::HomeFinder::name),
+
+ act_home_finder_parameter (
+ f.home_finder (), &SemanticAction::HomeFinder::parameter),
+
+ act_home_finder_raises (
+ f.home_finder (), &SemanticAction::HomeFinder::raises)
+
+ {
+ IDL2::Parser::extension =
+ component_decl
+ | concrete_event_type_decl
+ | home_decl
+ | extension
+ ;
+
+ IDL2::Parser::abstract_type_decl =
+ ABSTRACT
+ >> guard
+ (
+ assertion ("interface, valuetype or eventtype declaration expected")
+ (
+ (INTERFACE >> abstract_interface_decl)
+ |
+ (VALUETYPE >> abstract_value_type_decl)
+ |
+ (EVENTTYPE >> abstract_event_type_decl)
+ )
+ )[error_handler]
+ ;
+
+ // component
+ //
+ //
+
+ component_decl =
+ COMPONENT
+ >> guard
+ (
+ assertion ("component declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_component_begin_fwd][act_component_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_component_begin_def]
+
+ >> hood
+ (
+ component_inheritance_spec
+ >> !(SUPPORTS >> component_support_spec)
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_component_open_scope]
+ )
+ >> hood (component_body)
+ [
+ handler (f.component (),
+ &SemanticAction::Component::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.component (),
+ &SemanticAction::Component::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_component_close_scope]
+ )
+ )
+ [
+ handler (f.component (),
+ &SemanticAction::Component::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.component (),
+ &SemanticAction::Component::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_component_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> SUPPORTS
+ )[act_component_begin_def]
+
+ >> hood
+ (
+ component_support_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_component_open_scope]
+ )
+ >> hood (component_body)
+ [
+ handler (f.component (),
+ &SemanticAction::Component::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.component (),
+ &SemanticAction::Component::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_component_close_scope]
+ )
+ )
+ [
+ handler (f.component (),
+ &SemanticAction::Component::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.component (),
+ &SemanticAction::Component::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_component_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_component_begin_def][act_component_open_scope]
+
+ >> hood
+ (
+ hood (component_body)
+ [
+ handler (f.component (),
+ &SemanticAction::Component::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.component (),
+ &SemanticAction::Component::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_component_close_scope]
+ )
+ )
+ [
+ handler (f.component (),
+ &SemanticAction::Component::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.component (),
+ &SemanticAction::Component::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_component_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ component_inheritance_spec =
+ guard
+ (
+ assertion ("base component name expected")
+ (
+ identifier[act_component_inherits]
+ )
+ )[error_handler]
+ ;
+
+ component_support_spec =
+ guard
+ (
+ assertion ("supported interface name expected")
+ (
+ identifier[act_component_supports]
+ )
+ >> *(
+ COMMA
+ >> assertion ("supported interface name expected")
+ (
+ identifier[act_component_supports]
+ )
+ )
+ )[error_handler]
+ ;
+
+ component_body =
+ *( provides_decl
+ | uses_decl
+ | emits_decl
+ | publishes_decl
+ | consumes_decl
+ | attribute_decl
+ )
+ ;
+
+ // ports
+ //
+ //
+ provides_decl =
+ PROVIDES
+ >> guard
+ (
+ assertion ("interface name expected")
+ (
+ identifier[act_provides_type]
+ )
+ >> assertion ("provides name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_provides_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ uses_decl =
+ USES
+ >> guard
+ (
+ !(MULTIPLE[act_uses_multiple])
+ >> assertion ("interface name expected")
+ (
+ identifier[act_uses_type]
+ )
+ >> assertion ("uses name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_uses_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ emits_decl =
+ EMITS
+ >> guard
+ (
+ assertion ("eventtype name expected")
+ (
+ identifier[act_emits_type]
+ )
+ >> assertion ("emits name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_emits_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ publishes_decl =
+ PUBLISHES
+ >> guard
+ (
+ assertion ("eventtype name expected")
+ (
+ identifier[act_publishes_type]
+ )
+ >> assertion ("publishes name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_publishes_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ consumes_decl =
+ CONSUMES
+ >> guard
+ (
+ assertion ("eventtype name expected")
+ (
+ identifier[act_consumes_type]
+ )
+ >> assertion ("consumes name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier[act_consumes_name]
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+
+ // eventtype
+ //
+ //
+ abstract_event_type_decl =
+ guard
+ (
+ assertion ("abstract eventtype declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_event_type_begin_abstract_fwd][act_event_type_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_event_type_begin_abstract_def]
+
+ >> hood
+ (
+ event_type_inheritance_spec
+ >> !(SUPPORTS >> event_type_supports_spec)
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_event_type_open_scope]
+ )
+ >> hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> SUPPORTS
+ )[act_event_type_begin_abstract_def]
+
+ >> hood
+ (
+ event_type_supports_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_event_type_open_scope]
+ )
+ >> hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_event_type_begin_abstract_def][act_event_type_open_scope]
+
+ >> hood
+ (
+ hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+
+ concrete_event_type_decl =
+ EVENTTYPE
+ >> guard
+ (
+ assertion ("eventtype declaration expected",
+ DiagnosticType::BEFORE)
+ (
+ (
+ simple_identifier
+ >> SEMI
+ )[act_event_type_begin_concrete_fwd][act_event_type_end]
+ |
+ (
+ (
+ simple_identifier
+ >> COLON
+ )[act_event_type_begin_concrete_def]
+
+ >> hood
+ (
+ event_type_inheritance_spec
+ >> !(SUPPORTS >> event_type_supports_spec)
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_event_type_open_scope]
+ )
+ >> hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> SUPPORTS
+ )[act_event_type_begin_concrete_def]
+
+ >> hood
+ (
+ event_type_supports_spec
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_event_type_open_scope]
+ )
+ >> hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ |
+ (
+ (
+ simple_identifier
+ >> LCBRACE
+ )[act_event_type_begin_concrete_def][act_event_type_open_scope]
+
+ >> hood
+ (
+ hood (event_type_body)
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.event_type (),
+ &SemanticAction::EventType::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_event_type_close_scope]
+ )
+ )
+ [
+ handler (f.event_type (),
+ &SemanticAction::EventType::end)
+ ]
+
+ >> assertion ("';' expected",
+ f.event_type (),
+ &SemanticAction::EventType::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_event_type_end]
+ )
+ )
+ )
+ )[error_handler]
+ ;
+
+ event_type_inheritance_spec =
+ guard
+ (
+ assertion ("base eventtype name expected")
+ (
+ identifier[act_event_type_inherits]
+ )
+ >> *(
+ COMMA
+ >> assertion ("base eventtype name expected")
+ (
+ identifier[act_event_type_inherits]
+ )
+ )
+ )[error_handler]
+ ;
+
+ event_type_supports_spec =
+ guard
+ (
+ assertion ("supported interface name expected")
+ (
+ identifier[act_event_type_supports]
+ )
+ >> *(
+ COMMA
+ >> assertion ("supported interface name expected")
+ (
+ identifier[act_event_type_supports]
+ )
+ )
+ )[error_handler]
+ ;
+
+ event_type_body =
+ *(
+ const_decl
+ | type_decl
+ | type_id_decl
+ | type_prefix_decl
+
+ | attribute_decl
+ | operation_decl
+ | value_type_member_decl
+ | event_type_factory_decl
+ )
+ ;
+
+
+ // eventtype factory
+ //
+ //
+ event_type_factory_decl =
+ FACTORY
+ >> guard
+ (
+ assertion ("factory name expected")
+ (
+ simple_identifier[act_event_type_factory_name]
+ )
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> event_type_factory_parameter_list
+ >> assertion ("parameter declaration or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> !(
+ RAISES
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> event_type_factory_raises_list
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ event_type_factory_parameter_list =
+ *(
+ event_type_factory_parameter
+ >> *(COMMA >> event_type_factory_parameter)
+ )
+ ;
+
+ event_type_factory_parameter =
+ IN
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("parameter name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_event_type_factory_parameter]
+ )[error_handler]
+ ;
+
+ event_type_factory_raises_list =
+ guard
+ (
+ assertion ("exception name expected")
+ (
+ identifier[act_event_type_factory_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_event_type_factory_raises]
+ )
+ )
+ )[error_handler]
+ ;
+
+ //
+ // home
+ //
+ home_decl =
+ HOME
+ >> guard
+ (
+ assertion ("home name expected")
+ (
+ simple_identifier[act_home_begin]
+ )
+ >> hood
+ (
+ !(COLON >> home_inheritance_spec)
+ >> !(SUPPORTS >> home_support_spec)
+ >> assertion ("'manages' expected",
+ DiagnosticType::BEFORE)
+ (
+ MANAGES
+ )
+ >> assertion ("executor name expected")
+ (
+ identifier[act_home_manages]
+ )
+ >> assertion ("'{' expected")
+ (
+ LCBRACE[act_home_open_scope]
+ )
+ >> hood (home_body)
+ [
+ handler (f.home (),
+ &SemanticAction::Home::close_scope)
+ ]
+ >> assertion ("'}' expected",
+ f.home (),
+ &SemanticAction::Home::close_scope,
+ DiagnosticType::BEFORE)
+ (
+ RCBRACE[act_home_close_scope]
+ )
+ )
+ [
+ handler (f.home (),
+ &SemanticAction::Home::end)
+ ]
+ >> assertion ("';' expected",
+ f.home (),
+ &SemanticAction::Home::end,
+ RecoveryMethod::NONE)
+ (
+ SEMI[act_home_end]
+ )
+ )[error_handler]
+ ;
+
+ home_inheritance_spec =
+ guard
+ (
+ assertion ("base home name expected")
+ (
+ identifier[act_home_inherits]
+ )
+ )[error_handler]
+ ;
+
+ home_support_spec =
+ guard
+ (
+ assertion ("supported interface name expected")
+ (
+ identifier[act_home_supports]
+ )
+ >> *(
+ COMMA
+ >> assertion ("supported interface name expected")
+ (
+ identifier[act_home_supports]
+ )
+ )
+ )[error_handler]
+ ;
+
+ home_body =
+ *(
+ const_decl
+ | type_decl
+ | type_id_decl
+ | type_prefix_decl
+
+ | attribute_decl
+ | operation_decl
+ | home_factory_decl
+ | home_finder_decl
+ )
+ ;
+
+ // home factory
+ //
+ //
+ home_factory_decl =
+ FACTORY
+ >> guard
+ (
+ assertion ("factory name expected")
+ (
+ simple_identifier[act_home_factory_name]
+ )
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> home_factory_parameter_list
+ >> assertion ("parameter declaration or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> !(
+ RAISES
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> home_factory_raises_list
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ home_factory_parameter_list =
+ *(
+ home_factory_parameter
+ >> *(COMMA >> home_factory_parameter)
+ )
+ ;
+
+ home_factory_parameter =
+ IN
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("parameter name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_home_factory_parameter]
+ )[error_handler]
+ ;
+
+ home_factory_raises_list =
+ guard
+ (
+ assertion ("exception name expected")
+ (
+ identifier[act_home_factory_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_home_factory_raises]
+ )
+ )
+ )[error_handler]
+ ;
+
+
+ // home finder
+ //
+ //
+ home_finder_decl =
+ FINDER
+ >> guard
+ (
+ assertion ("finder name expected")
+ (
+ simple_identifier[act_home_finder_name]
+ )
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> home_finder_parameter_list
+ >> assertion ("parameter declaration or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ >> !(
+ RAISES
+ >> assertion ("'(' expected")
+ (
+ LPAREN
+ )
+ >> home_finder_raises_list
+ >> assertion ("',' or ')' expected",
+ DiagnosticType::BEFORE)
+ (
+ RPAREN
+ )
+ )
+ >> assertion ("';' expected",
+ RecoveryMethod::NONE)
+ (
+ SEMI
+ )
+ )[error_handler]
+ ;
+
+ home_finder_parameter_list =
+ *(
+ home_finder_parameter
+ >> *(COMMA >> home_finder_parameter)
+ )
+ ;
+
+ home_finder_parameter =
+ IN
+ >> guard
+ (
+ (
+ assertion ("type name expected")
+ (
+ identifier
+ )
+ >> assertion ("parameter name expected",
+ DiagnosticType::BEFORE)
+ (
+ simple_identifier
+ )
+ )[act_home_finder_parameter]
+ )[error_handler]
+ ;
+
+ home_finder_raises_list =
+ guard
+ (
+ assertion ("exception name expected")
+ (
+ identifier[act_home_finder_raises]
+ )
+ >> *(
+ COMMA
+ >> assertion ("exception name expected")
+ (
+ identifier[act_home_finder_raises]
+ )
+ )
+ )[error_handler]
+ ;
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/Parser.hpp b/modules/CIAO/CCF/CCF/IDL3/Parser.hpp
new file mode 100644
index 00000000000..715045f2466
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Parser.hpp
@@ -0,0 +1,256 @@
+// file : CCF/IDL3/Parser.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_PARSER_HPP
+#define CCF_IDL3_PARSER_HPP
+
+#include "CCF/IDL2/Parser.hpp"
+
+#include "CCF/IDL3/LexicalAnalyzer.hpp"
+#include "CCF/IDL3/SemanticAction.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ using IDL2::ActionExecutor;
+ using IDL2::NoArgAction;
+ using IDL2::OneArgAction;
+ using IDL2::TwoArgAction;
+
+ class Parser : public virtual IDL2::Parser
+ {
+ protected:
+ //
+ // Primitives (alphabetic order).
+ //
+
+ KeywordParser COMPONENT;
+ KeywordParser CONSUMES;
+ KeywordParser EMITS;
+ KeywordParser EVENTTYPE;
+ KeywordParser HOME;
+ KeywordParser FINDER;
+ KeywordParser MANAGES;
+ KeywordParser MULTIPLE;
+ KeywordParser PROVIDES;
+ KeywordParser PUBLISHES;
+ KeywordParser USES;
+
+
+ //
+ // Language
+ //
+
+ Rule extension;
+
+ // component
+ //
+ Rule component_decl;
+ Rule component_inheritance_spec;
+ Rule component_support_spec;
+ Rule component_body;
+
+ Rule provides_decl;
+ Rule uses_decl;
+ Rule emits_decl;
+ Rule publishes_decl;
+ Rule consumes_decl;
+
+ // eventtype
+ //
+ Rule abstract_event_type_decl;
+ Rule concrete_event_type_decl;
+ Rule event_type_inheritance_spec;
+ Rule event_type_supports_spec;
+ Rule event_type_body;
+
+ Rule event_type_factory_decl;
+ Rule event_type_factory_parameter_list;
+ Rule event_type_factory_parameter;
+ Rule event_type_factory_raises_list;
+
+ // home
+ //
+ Rule home_decl;
+ Rule home_inheritance_spec;
+ Rule home_support_spec;
+ Rule home_body;
+
+ Rule home_factory_decl;
+ Rule home_factory_parameter_list;
+ Rule home_factory_parameter;
+ Rule home_factory_raises_list;
+
+ Rule home_finder_decl;
+ Rule home_finder_parameter_list;
+ Rule home_finder_parameter;
+ Rule home_finder_raises_list;
+
+ public:
+ Parser (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ LexicalAnalyzer const& l,
+ SemanticAction::Factory& f);
+
+ protected:
+ // Component
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Component>
+ act_component_begin_def, act_component_begin_fwd;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Component>
+ act_component_inherits;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Component>
+ act_component_supports;
+
+ ScopeAction
+ act_component_open_scope;
+
+ ScopeAction
+ act_component_close_scope;
+
+ NoArgAction<SemanticAction::Component>
+ act_component_end;
+
+
+ // Provides
+ //
+ OneArgAction<IdentifierPtr, SemanticAction::Provides>
+ act_provides_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Provides>
+ act_provides_name;
+
+
+ // Uses
+ //
+ NoArgAction<SemanticAction::Uses>
+ act_uses_multiple;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Uses>
+ act_uses_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Uses>
+ act_uses_name;
+
+
+ // Publishes
+ //
+ OneArgAction<IdentifierPtr, SemanticAction::Publishes>
+ act_publishes_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Publishes>
+ act_publishes_name;
+
+
+ // Emits
+ //
+ OneArgAction<IdentifierPtr, SemanticAction::Emits>
+ act_emits_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Emits>
+ act_emits_name;
+
+
+ // Consumes
+ //
+ OneArgAction<IdentifierPtr, SemanticAction::Consumes>
+ act_consumes_type;
+
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Consumes>
+ act_consumes_name;
+
+
+ // EventType
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::EventType>
+ act_event_type_begin_abstract_def,
+ act_event_type_begin_abstract_fwd,
+ act_event_type_begin_concrete_def,
+ act_event_type_begin_concrete_fwd;
+
+ OneArgAction<IdentifierPtr, SemanticAction::EventType>
+ act_event_type_inherits, act_event_type_supports;
+
+ ScopeAction
+ act_event_type_open_scope;
+
+ ScopeAction
+ act_event_type_close_scope;
+
+ NoArgAction<SemanticAction::EventType>
+ act_event_type_end;
+
+ // EventTypeFactory
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::EventTypeFactory>
+ act_event_type_factory_name;
+
+ TwoArgAction<IdentifierPtr,
+ SimpleIdentifierPtr,
+ SemanticAction::EventTypeFactory>
+ act_event_type_factory_parameter;
+
+ OneArgAction<IdentifierPtr, SemanticAction::EventTypeFactory>
+ act_event_type_factory_raises;
+
+
+ // Home
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::Home>
+ act_home_begin;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Home>
+ act_home_inherits;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Home>
+ act_home_supports;
+
+ OneArgAction<IdentifierPtr, SemanticAction::Home>
+ act_home_manages;
+
+ ScopeAction
+ act_home_open_scope;
+
+ ScopeAction
+ act_home_close_scope;
+
+ NoArgAction<SemanticAction::Home>
+ act_home_end;
+
+
+ // HomeFactory
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::HomeFactory>
+ act_home_factory_name;
+
+ TwoArgAction<IdentifierPtr,
+ SimpleIdentifierPtr,
+ SemanticAction::HomeFactory>
+ act_home_factory_parameter;
+
+ OneArgAction<IdentifierPtr, SemanticAction::HomeFactory>
+ act_home_factory_raises;
+
+
+ // HomeFinder
+ //
+ OneArgAction<SimpleIdentifierPtr, SemanticAction::HomeFinder>
+ act_home_finder_name;
+
+ TwoArgAction<IdentifierPtr,
+ SimpleIdentifierPtr,
+ SemanticAction::HomeFinder>
+ act_home_finder_parameter;
+
+ OneArgAction<IdentifierPtr, SemanticAction::HomeFinder>
+ act_home_finder_raises;
+
+ };
+ }
+}
+
+#endif // CCF_IDL3_PARSER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction.hpp
new file mode 100644
index 00000000000..ae0f9d21b2e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction.hpp
@@ -0,0 +1,26 @@
+// file : CCF/IDL3/SemanticAction.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_HPP
+
+#include "CCF/IDL2/SemanticAction.hpp"
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+#include "CCF/IDL3/SemanticAction/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Consumes.hpp"
+#include "CCF/IDL3/SemanticAction/Emits.hpp"
+#include "CCF/IDL3/SemanticAction/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/EventTypeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/Home.hpp"
+#include "CCF/IDL3/SemanticAction/HomeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/HomeFinder.hpp"
+#include "CCF/IDL3/SemanticAction/Provides.hpp"
+#include "CCF/IDL3/SemanticAction/Publishes.hpp"
+#include "CCF/IDL3/SemanticAction/Uses.hpp"
+
+#include "CCF/IDL3/SemanticAction/Factory.hpp"
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Component.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Component.hpp
new file mode 100644
index 00000000000..9a8eeb645c8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Component.hpp
@@ -0,0 +1,43 @@
+// file : CCF/IDL3/SemanticAction/Component.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_COMPONENT_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_COMPONENT_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Component : Scope
+ {
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ inherits (IdentifierPtr const& id) = 0;
+
+ virtual void
+ supports (IdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_COMPONENT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Consumes.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Consumes.hpp
new file mode 100644
index 00000000000..36d64ce5797
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Consumes.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL3/SemanticAction/Consumes.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_CONSUMES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_CONSUMES_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Consumes
+ {
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_CONSUMES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Elements.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Elements.hpp
new file mode 100644
index 00000000000..7637a0c473c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Elements.hpp
@@ -0,0 +1,23 @@
+// file : CCF/IDL3/SemanticAction/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_ELEMENTS_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_ELEMENTS_HPP
+
+#include "CCF/IDL2/SemanticAction/Elements.hpp"
+
+#include "CCF/IDL3/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ using IDL2::SemanticAction::Scope;
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Emits.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Emits.hpp
new file mode 100644
index 00000000000..819383a2df4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Emits.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL3/SemanticAction/Emits.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_EMITS_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_EMITS_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Emits
+ {
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_EMITS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventType.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventType.hpp
new file mode 100644
index 00000000000..f6891d6ee24
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventType.hpp
@@ -0,0 +1,49 @@
+// file : CCF/IDL3/SemanticAction/EventType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct EventType : Scope
+ {
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_concrete_def (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ begin_concrete_fwd (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ inherits (IdentifierPtr const& id) = 0;
+
+ virtual void
+ supports (IdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp
new file mode 100644
index 00000000000..12514bb773e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp
@@ -0,0 +1,32 @@
+// file : CCF/IDL3/SemanticAction/EventTypeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct EventTypeFactory
+ {
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ parameter (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name) = 0;
+
+ virtual void
+ raises (IdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_EVENT_TYPE_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Factory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Factory.hpp
new file mode 100644
index 00000000000..8dd3ae3d25f
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Factory.hpp
@@ -0,0 +1,68 @@
+// file : CCF/IDL3/SemanticAction/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_FACTORY_HPP
+
+#include "CCF/IDL2/SemanticAction/Factory.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Component;
+ struct Provides;
+ struct Uses;
+ struct Publishes;
+ struct Emits;
+ struct Consumes;
+ struct EventType;
+ struct EventTypeFactory;
+ struct Home;
+ struct HomeFactory;
+ struct HomeFinder;
+
+
+ struct Factory : virtual IDL2::SemanticAction::Factory
+ {
+ virtual Component&
+ component () = 0;
+
+ virtual Provides&
+ provides () = 0;
+
+ virtual Uses&
+ uses () = 0;
+
+ virtual Publishes&
+ publishes () = 0;
+
+ virtual Emits&
+ emits () = 0;
+
+ virtual Consumes&
+ consumes () = 0;
+
+ virtual EventType&
+ event_type () = 0;
+
+ virtual EventTypeFactory&
+ event_type_factory () = 0;
+
+ virtual Home&
+ home () = 0;
+
+ virtual HomeFactory&
+ home_factory () = 0;
+
+ virtual HomeFinder&
+ home_finder () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Home.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Home.hpp
new file mode 100644
index 00000000000..9dac172d39e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Home.hpp
@@ -0,0 +1,43 @@
+// file : CCF/IDL3/SemanticAction/Home.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_HOME_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_HOME_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Home : Scope
+ {
+ virtual void
+ begin (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ inherits (IdentifierPtr const& id) = 0;
+
+ virtual void
+ supports (IdentifierPtr const& id) = 0;
+
+ virtual void
+ manages (IdentifierPtr const& id) = 0;
+
+ virtual void
+ open_scope () = 0;
+
+ virtual void
+ close_scope () = 0;
+
+ virtual void
+ end () = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_HOME_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp
new file mode 100644
index 00000000000..405370f3f64
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp
@@ -0,0 +1,32 @@
+// file : CCF/IDL3/SemanticAction/HomeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_HOME_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_HOME_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct HomeFactory
+ {
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ parameter (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name) = 0;
+
+ virtual void
+ raises (IdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_HOME_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp
new file mode 100644
index 00000000000..e24cf65065b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp
@@ -0,0 +1,32 @@
+// file : CCF/IDL3/SemanticAction/HomeFinder.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_HOME_FINDER_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_HOME_FINDER_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct HomeFinder
+ {
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+
+ virtual void
+ parameter (IdentifierPtr const& type,
+ SimpleIdentifierPtr const& name) = 0;
+
+ virtual void
+ raises (IdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_HOME_FINDER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp
new file mode 100644
index 00000000000..68cec9313ae
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp
@@ -0,0 +1,202 @@
+// file : CCF/IDL3/SemanticAction/Impl/Component.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/Component.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Component::
+ Component (Context& c)
+ : ScopeBase<SemanticGraph::Component> (c)
+ {
+ }
+
+ void Component::
+ begin_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "component def " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Component&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Component> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void Component::
+ begin_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "component fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Component&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Component> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void Component::
+ inherits (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " inherits " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Component& c (
+ resolve<SemanticGraph::Component> (from, name, Flags::defined));
+
+ ctx.tu ().new_edge<Inherits> (now (), c);
+ ctx.tu ().new_edge<Extends> (now (), c);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no component with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in inheritance specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to inherit from forward-declared component "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "inheritance from forward-declared component is illegal"
+ << endl;
+ }
+ }
+
+ void Component::
+ supports (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " supports " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Interface& i (
+ resolve<SemanticGraph::Interface> (from, name, Flags::defined));
+
+ check_support (now ().supports_begin (),
+ now ().supports_end (),
+ i);
+
+ ctx.tu ().new_edge<Supports> (now (), i);
+ ctx.tu ().new_edge<Extends> (now (), i);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid supports specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in supports specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to support forward-declared interface "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "support of forward-declared interface is illegal"
+ << endl;
+ }
+ catch (AlreadySupported const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly supporting interface \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ //@@ Implementation of *_scope is the same for all cases.
+ //
+ void Component::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Component::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Component::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp
new file mode 100644
index 00000000000..768799784e8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp
@@ -0,0 +1,51 @@
+// file : CCF/IDL3/SemanticAction/Impl/Component.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_COMPONENT_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_COMPONENT_HPP
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Component : SemanticAction::Component,
+ ScopeBase<SemanticGraph::Component>
+ {
+ Component (Context& c);
+
+ virtual void
+ begin_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ inherits (IdentifierPtr const& id);
+
+ virtual void
+ supports (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_COMPONENT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp
new file mode 100644
index 00000000000..56dd0ef3b0a
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp
@@ -0,0 +1,88 @@
+// file : CCF/IDL3/SemanticAction/Impl/Consumes.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Consumes.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Consumes::
+ Consumes (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Consumes::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "consumes " << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<EventType> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid consumes declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no eventtype with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an eventtype declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-eventtype in consumes declaration is illegal"
+ << endl;
+ }
+ }
+
+ void Consumes::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ Consumer& c (ctx.tu ().new_node<Consumer> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (c, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), c, id->lexeme ());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp
new file mode 100644
index 00000000000..65214fb90eb
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL3/SemanticAction/Impl/Consumes.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_CONSUMES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_CONSUMES_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/Consumes.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Consumes : SemanticAction::Consumes, Base
+ {
+ Consumes (Context& c);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ private:
+ SemanticGraph::EventType* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_CONSUMES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp
new file mode 100644
index 00000000000..c52ff827fa5
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp
@@ -0,0 +1,30 @@
+// file : CCF/IDL3/SemanticAction/Impl/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using IDL2::SemanticAction::Impl::Context;
+ using IDL2::SemanticAction::Impl::Base;
+ using IDL2::SemanticAction::Impl::ScopeBase;
+
+ using IDL2::SemanticAction::Impl::lookup;
+
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp
new file mode 100644
index 00000000000..6f49a05016c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp
@@ -0,0 +1,88 @@
+// file : CCF/IDL3/SemanticAction/Impl/Emits.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Emits.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Emits::
+ Emits (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Emits::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "emits " << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<EventType> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid emits declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no eventtype with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an eventtype declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-eventtype in emits declaration is illegal"
+ << endl;
+ }
+ }
+
+ void Emits::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ Emitter& e (ctx.tu ().new_node<Emitter> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (e, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), e, id->lexeme ());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp
new file mode 100644
index 00000000000..30c0f254756
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL3/SemanticAction/Impl/Emits.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_EMITS_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_EMITS_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/Emits.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Emits : SemanticAction::Emits, Base
+ {
+ Emits (Context& c);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ private:
+ SemanticGraph::EventType* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_EMITS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp
new file mode 100644
index 00000000000..f68eda81cae
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp
@@ -0,0 +1,293 @@
+// file : CCF/IDL3/SemanticAction/Impl/EventType.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/EventType.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ EventType::
+ EventType (Context& c)
+ : ScopeBase<SemanticGraph::EventType> (c)
+ {
+ }
+
+ void EventType::
+ begin_abstract_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "abstract eventtype def " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractEventType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractEventType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void EventType::
+ begin_abstract_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "abstract eventtype fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<AbstractEventType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<AbstractEventType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void EventType::
+ begin_concrete_def (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "concrete eventtype def " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<ConcreteEventType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<ConcreteEventType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+ void EventType::
+ begin_concrete_fwd (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "concrete eventtype fwd " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<ConcreteEventType&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<ConcreteEventType> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Mentions> (ctx.scope (), now (), name);
+ }
+
+ void EventType::
+ inherits (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "inherits " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::ValueType& v (
+ resolve<SemanticGraph::ValueType> (from, name, Flags::defined));
+
+ check_inheritance (now ().inherits_begin (),
+ now ().inherits_end (),
+ v);
+
+
+ bool abstract (dynamic_cast<AbstractValueType*> (&v) != 0);
+
+ if (dynamic_cast<AbstractValueType*> (&now ()) != 0)
+ {
+ // Abstract eventtype may only inherit from abstract ones.
+ //
+ if (!abstract)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "abstract eventtype `" << now ().name ()
+ << "\' may not inherit from concrete valuetype `"
+ << v.scoped_name () << "\'" << endl;
+ return;
+ }
+ }
+ else
+ {
+ // Concrete eventtype may inherit from single concrete
+ // valutype in which case it should be the first in the
+ // inheritance list.
+ //
+ if (now ().inherits_begin () != now ().inherits_end () &&
+ !abstract)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "concrete valuetype `" << v.scoped_name ()
+ << "\' is not the first in the inheritance list of "
+ << "eventtype `" << now ().name () << "\'" << endl;
+ return;
+ }
+ }
+
+ ctx.tu ().new_edge<Inherits> (now (), v);
+ ctx.tu ().new_edge<Extends> (now (), v);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no valuetype with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in inheritance specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to inherit from the forward-declared valuetype "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "inheritance from a forward-declared valuetype is illegal"
+ << endl;
+ }
+ catch (AlreadyInherited const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly inheriting from valuetype \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ void EventType::
+ supports (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "supports " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Interface& i (
+ resolve<SemanticGraph::Interface> (from, name, Flags::defined));
+
+ check_support (now ().supports_begin (),
+ now ().supports_end (),
+ i);
+
+ ctx.tu ().new_edge<Supports> (now (), i);
+ ctx.tu ().new_edge<Extends> (now (), i);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid supports specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in supports specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to support forward-declared interface "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "support of forward-declared interface is illegal"
+ << endl;
+ }
+ catch (AlreadySupported const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly supporting interface \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+ void EventType::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void EventType::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void EventType::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp
new file mode 100644
index 00000000000..f82502be83c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp
@@ -0,0 +1,57 @@
+// file : CCF/IDL3/SemanticAction/Impl/EventType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct EventType : SemanticAction::EventType,
+ ScopeBase<SemanticGraph::EventType>
+ {
+ EventType (Context& c);
+
+ virtual void
+ begin_abstract_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_abstract_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_concrete_def (SimpleIdentifierPtr const& id);
+
+ virtual void
+ begin_concrete_fwd (SimpleIdentifierPtr const& id);
+
+ virtual void
+ inherits (IdentifierPtr const& id);
+
+ virtual void
+ supports (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp
new file mode 100644
index 00000000000..8e8544815c0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp
@@ -0,0 +1,152 @@
+// file : CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ EventTypeFactory::
+ EventTypeFactory (Context& c)
+ : Base (c)
+ {
+ }
+
+ void EventTypeFactory::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ f_ = 0;
+
+ SemanticGraph::EventType& h (
+ dynamic_cast<SemanticGraph::EventType&>(ctx.scope ()));
+
+ SimpleName name (id->lexeme ());
+
+ f_ = &ctx.tu ().new_node<SemanticGraph::EventTypeFactory> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Returns> (*f_, h);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *f_, name);
+ }
+
+
+ void EventTypeFactory::
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ()) cerr << "parameter in " << " "
+ << type_id << " " << name_id << endl;
+
+ if (f_ == 0) return;
+
+ Name name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name, Flags::complete));
+
+ Parameter& p (
+ ctx.tu ().new_node<InParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ()));
+
+ ctx.tu ().new_edge<Belongs> (p, t);
+ ctx.tu ().new_edge<Receives> (*f_, p);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid parameter declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as an factory parameter type is "
+ << "illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void EventTypeFactory::
+ raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "raises " << id << endl;
+
+ if (f_ == 0) return;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<Raises> (*f_, e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp
new file mode 100644
index 00000000000..1489651b7c8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/EventTypeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct EventTypeFactory : SemanticAction::EventTypeFactory, Base
+ {
+ EventTypeFactory (Context& c);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id);
+
+ virtual void
+ raises (IdentifierPtr const& id);
+
+ private:
+ SemanticGraph::EventTypeFactory* f_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_EVENT_TYPE_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp
new file mode 100644
index 00000000000..233d931b97e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL3/SemanticAction/Impl/Factory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/Factory.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ Factory::
+ Factory (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ SemanticGraph::TranslationUnit& tu)
+ : IDL2::SemanticAction::Impl::Factory (context, dout, tu),
+
+ component_ (ctx_),
+ consumes_ (ctx_),
+ emits_ (ctx_),
+ event_type_ (ctx_),
+ event_type_factory_ (ctx_),
+ home_ (ctx_),
+ home_factory_ (ctx_),
+ home_finder_ (ctx_),
+ include_ (ctx_, dout, *this),
+ provides_ (ctx_),
+ publishes_ (ctx_),
+ uses_ (ctx_)
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp
new file mode 100644
index 00000000000..fc6b80a9a6b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp
@@ -0,0 +1,134 @@
+// file : CCF/IDL3/SemanticAction/Impl/Factory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticAction/Factory.hpp"
+
+#include "CCF/IDL2/SemanticAction/Impl/Factory.hpp"
+
+#include "CCF/IDL3/SemanticAction/Impl/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Provides.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Uses.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Publishes.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Emits.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Consumes.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Home.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Include.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Factory : virtual IDL3::SemanticAction::Factory,
+ virtual IDL2::SemanticAction::Impl::Factory
+ {
+ Factory (CompilerElements::Context& context,
+ Diagnostic::Stream& dout,
+ SemanticGraph::TranslationUnit& tu);
+
+ virtual SemanticAction::Consumes&
+ consumes ()
+ {
+ return consumes_;
+ }
+
+ virtual SemanticAction::Component&
+ component ()
+ {
+ return component_;
+ }
+
+ virtual SemanticAction::Emits&
+ emits ()
+ {
+ return emits_;
+ }
+
+
+ virtual SemanticAction::EventType&
+ event_type ()
+ {
+ return event_type_;
+ }
+
+ virtual EventTypeFactory&
+ event_type_factory ()
+ {
+ return event_type_factory_;
+ }
+
+
+ virtual SemanticAction::Home&
+ home ()
+ {
+ return home_;
+ }
+
+ virtual SemanticAction::HomeFactory&
+ home_factory ()
+ {
+ return home_factory_;
+ }
+
+ virtual SemanticAction::HomeFinder&
+ home_finder ()
+ {
+ return home_finder_;
+ }
+
+ virtual IDL2::SemanticAction::Include&
+ include ()
+ {
+ return include_;
+ }
+
+ virtual SemanticAction::Provides&
+ provides ()
+ {
+ return provides_;
+ }
+
+ virtual SemanticAction::Publishes&
+ publishes ()
+ {
+ return publishes_;
+ }
+
+ virtual SemanticAction::Uses&
+ uses ()
+ {
+ return uses_;
+ }
+
+ private:
+
+ Component component_;
+ Consumes consumes_;
+ Emits emits_;
+ EventType event_type_;
+ EventTypeFactory event_type_factory_;
+ Home home_;
+ HomeFactory home_factory_;
+ HomeFinder home_finder_;
+ Include include_;
+ Provides provides_;
+ Publishes publishes_;
+ Uses uses_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp
new file mode 100644
index 00000000000..d6be4cf9c72
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp
@@ -0,0 +1,230 @@
+// file : CCF/IDL3/SemanticAction/Impl/Home.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Home.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Home::
+ Home (Context& c)
+ : ScopeBase<SemanticGraph::Home> (c)
+ {
+ }
+
+ void Home::
+ begin (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "home " << id << endl;
+
+ SimpleName name (id->lexeme ());
+
+ if (Nameable* s = lookup (ctx.tu (), ctx.scope (), name))
+ {
+ now (dynamic_cast<SemanticGraph::Home&>(*s));
+ }
+ else
+ {
+ now (ctx.tu ().new_node<SemanticGraph::Home> (
+ ctx.file (), id->line ()));
+ }
+
+ ctx.tu ().new_edge<Defines> (ctx.scope (), now (), name);
+ }
+
+
+ void Home::
+ inherits (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "inherits " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Home& h (
+ resolve<SemanticGraph::Home> (from, name, Flags::defined));
+
+ ctx.tu ().new_edge<Inherits> (now (), h);
+ ctx.tu ().new_edge<Extends> (now (), h);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid inheritance specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no home with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in inheritance specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to inherit from forward-declared home "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "inheritance from forward-declared home is illegal"
+ << endl;
+ }
+ }
+
+
+ void Home::
+ supports (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "supports " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Interface& i (
+ resolve<SemanticGraph::Interface> (from, name, Flags::defined));
+
+ check_support (now ().supports_begin (),
+ now ().supports_end (),
+ i);
+
+ ctx.tu ().new_edge<Supports> (now (), i);
+ ctx.tu ().new_edge<Extends> (now (), i);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid supports specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in supports specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to support from forward-declared component "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "support of forward-declared interface is illegal"
+ << endl;
+ }
+ catch (AlreadySupported const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "directly supporting interface \'" << e.name ()
+ << "\' more than once is illegal" << endl;
+ }
+ }
+
+
+ void Home::
+ manages (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "manages " << id << endl;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ ctx.tu ().new_edge<Manages> (
+ now (),
+ resolve<SemanticGraph::Component> (from, name, Flags::defined));
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid manages specification" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no component with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "incompatible type in manages specification" << endl;
+ }
+ catch (NotDefined const& e)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "attempt to manage forward-declared component "
+ << e.name () << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "management of forward-declared component is illegal"
+ << endl;
+ }
+ }
+
+ void Home::
+ open_scope ()
+ {
+ if (ctx.trace ()) cerr << "scope open" << endl;
+
+ push (ctx.scope ());
+ ctx.scope (now ());
+ }
+
+ void Home::
+ close_scope ()
+ {
+ ctx.scope (top ());
+ pop ();
+
+ if (ctx.trace ()) cerr << "scope close" << endl;
+ }
+
+ void Home::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp
new file mode 100644
index 00000000000..459f78c89db
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp
@@ -0,0 +1,50 @@
+// file : CCF/IDL3/SemanticAction/Impl/Home.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_HPP
+
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+#include "CCF/IDL3/SemanticAction/Home.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Home : SemanticAction::Home, ScopeBase<SemanticGraph::Home>
+ {
+ Home (Context& c);
+
+ virtual void
+ begin (SimpleIdentifierPtr const& id);
+
+ virtual void
+ inherits (IdentifierPtr const& id);
+
+ virtual void
+ supports (IdentifierPtr const& id);
+
+ virtual void
+ manages (IdentifierPtr const& id);
+
+ virtual void
+ open_scope ();
+
+ virtual void
+ close_scope ();
+
+ virtual void
+ end ();
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp
new file mode 100644
index 00000000000..b47e0b13410
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp
@@ -0,0 +1,155 @@
+// file : CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ HomeFactory::
+ HomeFactory (Context& c)
+ : Base (c)
+ {
+ }
+
+ void HomeFactory::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ hf_ = 0;
+
+ SemanticGraph::Home& h (
+ dynamic_cast<SemanticGraph::Home&>(ctx.scope ()));
+
+ SemanticGraph::Component& c (
+ dynamic_cast<SemanticGraph::Component&>(h.manages ().managee ()));
+
+ SimpleName name (id->lexeme ());
+
+ hf_ = &ctx.tu ().new_node<SemanticGraph::HomeFactory> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Returns> (*hf_, c);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *hf_, name);
+ }
+
+
+ void HomeFactory::
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ()) cerr << "parameter in " << " "
+ << type_id << " " << name_id << endl;
+
+ if (hf_ == 0) return;
+
+ Name name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name, Flags::complete));
+
+ Parameter& p (
+ ctx.tu ().new_node<InParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ()));
+
+ ctx.tu ().new_edge<Belongs> (p, t);
+ ctx.tu ().new_edge<Receives> (*hf_, p);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid parameter declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as an factory parameter type is "
+ << "illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void HomeFactory::
+ raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "raises " << id << endl;
+
+ if (hf_ == 0) return;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<Raises> (*hf_, e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp
new file mode 100644
index 00000000000..1e6eccfb443
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FACTORY_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FACTORY_HPP
+
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+#include "CCF/IDL3/SemanticAction/HomeFactory.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct HomeFactory : SemanticAction::HomeFactory, Base
+ {
+ HomeFactory (Context& c);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id);
+
+ virtual void
+ raises (IdentifierPtr const& id);
+
+ private:
+ SemanticGraph::HomeFactory* hf_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FACTORY_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp
new file mode 100644
index 00000000000..89fe20f36f4
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp
@@ -0,0 +1,155 @@
+// file : CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ HomeFinder::
+ HomeFinder (Context& c)
+ : Base (c)
+ {
+ }
+
+ void HomeFinder::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ hf_ = 0;
+
+ SemanticGraph::Home& h (
+ dynamic_cast<SemanticGraph::Home&>(ctx.scope ()));
+
+ SemanticGraph::Component& c (
+ dynamic_cast<SemanticGraph::Component&>(h.manages ().managee ()));
+
+ SimpleName name (id->lexeme ());
+
+ hf_ = &ctx.tu ().new_node<SemanticGraph::HomeFinder> (
+ ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Returns> (*hf_, c);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *hf_, name);
+ }
+
+
+ void HomeFinder::
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id)
+ {
+ if (ctx.trace ()) cerr << "parameter in " << " "
+ << type_id << " " << name_id << endl;
+
+ if (hf_ == 0) return;
+
+ Name name (type_id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ Type& t (resolve<Type> (from, name, Flags::complete));
+
+ Parameter& p (
+ ctx.tu ().new_node<InParameter> (
+ ctx.file (), name_id->line (), name_id->lexeme ()));
+
+ ctx.tu ().new_edge<Belongs> (p, t);
+ ctx.tu ().new_edge<Receives> (*hf_, p);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "invalid parameter declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "no type with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not a type declaration" << endl;
+
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "using non-type as a finder parameter type is "
+ << "illegal" << endl;
+ }
+ catch (NotComplete const& e)
+ {
+ cerr << ctx.file () << ":" << type_id->line () << ": error: "
+ << "type \'" << e.name () << "\' is not complete" << endl;
+ }
+ }
+
+ void HomeFinder::
+ raises (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "raises " << id << endl;
+
+ if (hf_ == 0) return;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ SemanticGraph::Exception& e (
+ resolve<SemanticGraph::Exception> (from, name));
+
+ ctx.tu ().new_edge<Raises> (*hf_, e);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid raises declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no exception with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an exception declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-exception type in raises declaration is "
+ << "illegal" << endl;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp
new file mode 100644
index 00000000000..0467eeda3ec
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp
@@ -0,0 +1,43 @@
+// file : CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FINDER_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FINDER_HPP
+
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+#include "CCF/IDL3/SemanticAction/HomeFinder.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+
+ struct HomeFinder : SemanticAction::HomeFinder, Base
+ {
+ HomeFinder (Context& c);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ virtual void
+ parameter (IdentifierPtr const& type_id,
+ SimpleIdentifierPtr const& name_id);
+
+ virtual void
+ raises (IdentifierPtr const& id);
+
+ private:
+ SemanticGraph::HomeFinder* hf_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_HOME_FINDER_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp
new file mode 100644
index 00000000000..3e4b42a5267
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp
@@ -0,0 +1,284 @@
+// file : CCF/IDL3/SemanticAction/Impl/Include.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticAction/Impl/Include.hpp"
+
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/IDL3/LexicalAnalyzer.hpp"
+#include "CCF/IDL3/Parser.hpp"
+
+#include <vector>
+#include <string>
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Include::
+ Include (Context& c,
+ Diagnostic::Stream& dout,
+ SemanticAction::Factory& action_factory)
+ : Base (c),
+ dout_ (dout),
+ action_factory_ (action_factory)
+ {
+ abs_path_stack_.push (
+ fs::normalize (
+ fs::complete (
+ ctx.parsing_context ().get<fs::path> ("file-path"))));
+ }
+
+ void Include::
+ quote (StringLiteralPtr const& sl)
+ {
+ impl (sl, quote_);
+ }
+
+ void Include::
+ bracket (StringLiteralPtr const& sl)
+ {
+ impl (sl, bracket_);
+ }
+
+
+ void Include::
+ end ()
+ {
+ if (ctx.trace ()) cerr << "end" << endl;
+ }
+
+ void Include::
+ impl (StringLiteralPtr const& sl, Type_ type)
+ {
+ CompilerElements::Context& pctx (ctx.parsing_context ());
+
+ std::string prefix;
+
+ if (type == quote_)
+ {
+ prefix = std::string ("include") + " \"" + sl->value () + "\"";
+ }
+ else
+ {
+ prefix = std::string ("include") + " <" + sl->value () + ">";
+ }
+
+ if (ctx.trace ()) cerr << prefix << endl;
+
+ try
+ {
+ fs::ifstream ifs;
+ ifs.exceptions (std::ios_base::badbit | std::ios_base::failbit);
+
+ fs::path include_path (sl->value ());
+ fs::path complete_path (include_path);
+
+ if (ctx.trace ()) cerr << prefix << ": staring resolution."
+ << endl;
+
+ if (complete_path.is_complete ())
+ {
+ complete_path = fs::normalize (complete_path);
+
+ if (handle_already_included (complete_path, sl)) return;
+
+ ifs.open (complete_path, std::ios_base::in);
+ }
+ else
+ {
+ bool found (false);
+
+ if (type == quote_)
+ {
+ fs::path rel_path (abs_path_stack_.top ().branch_path ());
+
+ complete_path = fs::normalize (rel_path / include_path);
+
+ if (ctx.trace ()) cerr << prefix << ": considering "
+ << complete_path.string () << endl;
+
+ if (fs::exists (complete_path))
+ {
+ if (handle_already_included (complete_path, sl)) return;
+
+ ifs.open (complete_path, std::ios_base::in);
+ found = true;
+ }
+ }
+
+ if (!found)
+ {
+ typedef std::vector<fs::path> SearchPaths;
+
+ SearchPaths const& search_paths (
+ pctx.get<SearchPaths> ("include-search-paths"));
+
+ for (SearchPaths::const_iterator
+ i (search_paths.begin ()),
+ e (search_paths.end ()); i != e && !found; ++i)
+ {
+ complete_path = *i / include_path;
+
+ if (!complete_path.is_complete ())
+ {
+ complete_path = complete (complete_path);
+ }
+
+ complete_path = fs::normalize (complete_path);
+
+ if (ctx.trace ()) cerr << prefix << ": considering "
+ << complete_path.string () << endl;
+
+ if (fs::exists (complete_path))
+ {
+ if (handle_already_included (complete_path, sl)) return;
+ ifs.open (complete_path, std::ios_base::in);
+ found = true;
+ }
+ }
+
+ if (!found)
+ {
+ cerr << ctx.file () << ":" << sl->line () << ": error: "
+ << "'" << sl << "': file not found" << endl;
+ return;
+ }
+ }
+ }
+
+ if (ctx.trace ()) cerr << prefix << ": resolved to "
+ << complete_path.string () << endl;
+
+ //@@ for some reason ifs throws exception if I don't reset it
+ // to original state. It probably has something to do with
+ // call to get after eof.
+ //
+ ifs.exceptions (std::ios_base::iostate (0));
+
+ TranslationRegion& r (
+ ctx.tu ().new_node<TranslationRegion> (include_path, 0));
+
+ if (type == quote_)
+ {
+ ctx.tu ().new_edge<QuoteIncludes> (
+ ctx.region (), r, include_path);
+ }
+ else
+ {
+ ctx.tu ().new_edge<BracketIncludes> (
+ ctx.region (), r, include_path);
+ }
+
+ // Set new current region.
+ //
+ stack_.push (&ctx.region ());
+ ctx.region (r);
+
+ // Create Root scope for new region.
+ //
+ Root& root (ctx.tu ().new_node<Root> (include_path, 0));
+ ctx.tu ().new_edge<ContainsRoot> (r, root);
+ ctx.scope (root);
+
+ // Store previous relative path and current absolute.
+ //
+ rel_path_stack_.push (pctx.get<fs::path> ("file-path"));
+ pctx.set("file-path", include_path);
+
+ abs_path_stack_.push (complete_path);
+
+
+ // Parse the file.
+ //
+ //
+
+ //@@ this code is highly experimental
+ CompilerElements::InputStreamAdapter isa (ifs);
+
+ CompilerElements::CPP::Symbols const& symbols (
+ pctx.get<CompilerElements::CPP::Symbols> ("cpp-symbols"));
+ CompilerElements::CPP::Preprocessor pp (isa, symbols);
+
+ IDL3::LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0)
+ break;
+ }
+
+ if (token_stream.size () > 1)
+ {
+ IDL3::Parser parser (pctx, dout_, lexer, action_factory_);
+
+ IDL2::Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+ }
+
+ // Restore paths
+ //
+ abs_path_stack_.pop ();
+
+ pctx.set("file-path", rel_path_stack_.top ());
+ rel_path_stack_.pop ();
+
+
+ // Restore region.
+ //
+ ctx.region (*stack_.top ());
+ stack_.pop ();
+
+ // Create new Root scope.
+ //
+ {
+ Root& root (ctx.tu ().new_node<Root> (ctx.file (), 0));
+ ctx.tu ().new_edge<ContainsRoot> (ctx.region (), root);
+ ctx.scope (root);
+ }
+ }
+ catch (fs::filesystem_error const&)
+ {
+ cerr << ctx.file () << ":" << sl->line () << ": error: "
+ << "'" << sl << "': unable to open in read mode" << endl;
+ }
+ catch (std::ios_base::failure const&)
+ {
+ cerr << ctx.file () << ":" << sl->line () << ": error: "
+ << "'" << sl << "': unable to open in read mode" << endl;
+ }
+ }
+
+ bool Include::
+ handle_already_included (fs::path const& path,
+ StringLiteralPtr const&)
+ {
+ if(!include_file_set_.insert (path).second)
+ {
+ // cerr << "warning: skipping already included file " << sl
+ // << endl;
+ return true;
+ }
+ return false;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp
new file mode 100644
index 00000000000..9c699fe20ba
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp
@@ -0,0 +1,84 @@
+// file : CCF/IDL3/SemanticAction/Impl/Include.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
+
+#include <set>
+#include <stack>
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+
+#include "CCF/IDL2/SemanticGraph/Translation.hpp"
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+#include "CCF/IDL2/SemanticAction/Include.hpp"
+#include "CCF/IDL3/SemanticAction/Factory.hpp"
+
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ // Note: overriding IDL2 include to allow inclusion of IDL3 files.
+ //
+ //
+ struct Include : IDL2::SemanticAction::Include, Base
+ {
+ public:
+ Include (Context& c,
+ Diagnostic::Stream& dout,
+ SemanticAction::Factory& action_factory);
+
+ virtual void
+ quote (StringLiteralPtr const& sl);
+
+ virtual void
+ bracket (StringLiteralPtr const& sl);
+
+ virtual void
+ end ();
+
+ private:
+ enum Type_
+ {
+ quote_,
+ bracket_
+ };
+
+ virtual void
+ impl (StringLiteralPtr const& sl, Type_ type);
+
+ bool
+ handle_already_included (fs::path const& path,
+ StringLiteralPtr const& sl);
+ private:
+ Diagnostic::Stream& dout_;
+ SemanticAction::Factory& action_factory_;
+
+ std::stack<SemanticGraph::TranslationRegion*> stack_;
+ std::stack<fs::path> abs_path_stack_, rel_path_stack_;
+
+ struct FilePathComparator
+ {
+ bool operator () (fs::path const& x, fs::path const& y) const
+ {
+ return x.string () < y.string ();
+ }
+ };
+
+ std::set<fs::path, FilePathComparator> include_file_set_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_INCLUDE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp
new file mode 100644
index 00000000000..4bfc9818c65
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp
@@ -0,0 +1,89 @@
+// file : CCF/IDL3/SemanticAction/Impl/Provides.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Provides.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Provides::
+ Provides (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Provides::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "provides " << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<SemanticGraph::Interface> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid provides declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an interface declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-interface type in provides declaration is "
+ << "illegal" << endl;
+ }
+ }
+
+ void Provides::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ Provider& p (
+ ctx.tu ().new_node<Provider> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (p, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), p, id->lexeme ());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp
new file mode 100644
index 00000000000..14dff782045
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL3/SemanticAction/Impl/Provides.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_PROVIDES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_PROVIDES_HPP
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL3/SemanticAction/Provides.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Provides : SemanticAction::Provides, Base
+ {
+ Provides (Context& c);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ private:
+ SemanticGraph::Interface* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_PROVIDES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp
new file mode 100644
index 00000000000..01ccd4a2347
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp
@@ -0,0 +1,89 @@
+// file : CCF/IDL3/SemanticAction/Impl/Publishes.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Publishes.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Publishes::
+ Publishes (Context& c)
+ : Base (c)
+ {
+ }
+
+ void Publishes::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << "publishes " << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<EventType> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid publishes declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no eventtype with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an eventtype declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-eventtype in publishes declaration is illegal"
+ << endl;
+ }
+ }
+
+ void Publishes::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ Publisher& p (
+ ctx.tu ().new_node<Publisher> (
+ ctx.file (), id->line ()));
+
+ ctx.tu ().new_edge<Belongs> (p, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), p, id->lexeme ());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp
new file mode 100644
index 00000000000..584704acd66
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp
@@ -0,0 +1,38 @@
+// file : CCF/IDL3/SemanticAction/Impl/Publishes.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_PUBLISHES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_PUBLISHES_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticAction/Publishes.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Publishes : SemanticAction::Publishes, Base
+ {
+ Publishes (Context& c);
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ private:
+ SemanticGraph::EventType* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_PUBLISHES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp
new file mode 100644
index 00000000000..ce32f39dea0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp
@@ -0,0 +1,101 @@
+// file : CCF/IDL3/SemanticAction/Impl/Uses.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Uses.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ using namespace SemanticGraph;
+
+ Uses::
+ Uses (Context& c)
+ : Base (c), multiple_ (false)
+ {
+ }
+
+ void Uses::
+ multiple ()
+ {
+ multiple_ = true;
+ }
+
+ void Uses::
+ type (IdentifierPtr const& id)
+ {
+ if (ctx.trace ())
+ cerr << "uses " << (multiple_ ? "multiple ": "") << id;
+
+ type_ = 0;
+
+ Name name (id->lexeme ());
+ ScopedName from (ctx.scope ().scoped_name ());
+
+ try
+ {
+ try
+ {
+ type_ = &resolve<SemanticGraph::Interface> (from, name);
+ }
+ catch (Resolve const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "invalid uses declaration" << endl;
+ throw;
+ }
+ }
+ catch (NotFound const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "no interface with name \'" << name
+ << "\' visible from scope \'" << from << "\'" << endl;
+ }
+ catch (WrongType const&)
+ {
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "declaration with name \'" << name
+ << "\' visible from scope \'" << from
+ << "\' is not an interface declaration" << endl;
+
+ cerr << ctx.file () << ":" << id->line () << ": error: "
+ << "using non-interface type in uses declaration is "
+ << "illegal" << endl;
+ }
+ }
+
+ void Uses::
+ name (SimpleIdentifierPtr const& id)
+ {
+ if (ctx.trace ()) cerr << " " << id << endl;
+
+ if (type_)
+ {
+ User* u;
+
+ if (multiple_)
+ u = &ctx.tu ().new_node<MultiUser> (ctx.file (), id->line ());
+ else
+ u = &ctx.tu ().new_node<SingleUser> (ctx.file (), id->line ());
+
+ ctx.tu ().new_edge<Belongs> (*u, *type_);
+ ctx.tu ().new_edge<Defines> (ctx.scope (), *u, id->lexeme ());
+ }
+
+ multiple_ = false;
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp
new file mode 100644
index 00000000000..bf7331ad172
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp
@@ -0,0 +1,42 @@
+// file : CCF/IDL3/SemanticAction/Impl/Uses.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_IMPL_USES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_IMPL_USES_HPP
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL3/SemanticAction/Uses.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ namespace Impl
+ {
+ struct Uses : SemanticAction::Uses, Base
+ {
+ Uses (Context& c);
+
+ virtual void
+ multiple ();
+
+ virtual void
+ type (IdentifierPtr const& id);
+
+ virtual void
+ name (SimpleIdentifierPtr const& id);
+
+ private:
+ bool multiple_;
+ SemanticGraph::Interface* type_;
+ };
+ }
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_IMPL_USES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Provides.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Provides.hpp
new file mode 100644
index 00000000000..3b54f53b050
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Provides.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL3/SemanticAction/Provides.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_PROVIDES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_PROVIDES_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Provides
+ {
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_PROVIDES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Publishes.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Publishes.hpp
new file mode 100644
index 00000000000..46fa0a65892
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Publishes.hpp
@@ -0,0 +1,28 @@
+// file : CCF/IDL3/SemanticAction/Publishes.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_PUBLISHES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_PUBLISHES_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Publishes
+ {
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_PUBLISHES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Uses.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Uses.hpp
new file mode 100644
index 00000000000..dcd571bf5fa
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticAction/Uses.hpp
@@ -0,0 +1,31 @@
+// file : CCF/IDL3/SemanticAction/Uses.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_ACTION_USES_HPP
+#define CCF_IDL3_SEMANTIC_ACTION_USES_HPP
+
+#include "CCF/IDL3/SemanticAction/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticAction
+ {
+ struct Uses
+ {
+ virtual void
+ multiple () = 0;
+
+ virtual void
+ type (IdentifierPtr const& id) = 0;
+
+ virtual void
+ name (SimpleIdentifierPtr const& id) = 0;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_ACTION_USES_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph.hpp
new file mode 100644
index 00000000000..9192ca3b04c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph.hpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL3/SemanticGraph.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_GRAPH_HPP
+#define CCF_IDL3_SEMANTIC_GRAPH_HPP
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+
+#endif // CCF_IDL3_SEMANTIC_GRAPH_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp
new file mode 100644
index 00000000000..da8d0dde24b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.cpp
@@ -0,0 +1,187 @@
+// file : CCF/IDL3/SemanticGraph/Component.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Provider
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ provider_init_ ()
+ {
+ TypeInfo ti (typeid (Provider));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo provider_ (provider_init_ ());
+ }
+
+ TypeInfo const& Provider::
+ static_type_info () { return provider_; }
+
+
+ // User
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ user_init_ ()
+ {
+ TypeInfo ti (typeid (User));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo user_ (user_init_ ());
+ }
+
+ TypeInfo const& User::
+ static_type_info () { return user_; }
+
+ User::
+ ~User ()
+ {
+ }
+
+
+ // MultiUser
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ multi_user_init_ ()
+ {
+ TypeInfo ti (typeid (MultiUser));
+ ti.add_base (Access::PUBLIC, true, User::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo multi_user_ (multi_user_init_ ());
+ }
+
+ TypeInfo const& MultiUser::
+ static_type_info () { return multi_user_; }
+
+
+ // SingleUser
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ single_user_init_ ()
+ {
+ TypeInfo ti (typeid (SingleUser));
+ ti.add_base (Access::PUBLIC, true, User::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo single_user_ (single_user_init_ ());
+ }
+
+ TypeInfo const& SingleUser::
+ static_type_info () { return single_user_; }
+
+ // Publisher
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ publisher_init_ ()
+ {
+ TypeInfo ti (typeid (Publisher));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo publisher_ (publisher_init_ ());
+ }
+
+ TypeInfo const& Publisher::
+ static_type_info () { return publisher_; }
+
+
+ // Emitter
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ emitter_init_ ()
+ {
+ TypeInfo ti (typeid (Emitter));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo emitter_ (emitter_init_ ());
+ }
+
+ TypeInfo const& Emitter::
+ static_type_info () { return emitter_; }
+
+
+ // Consumer
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ consumer_init_ ()
+ {
+ TypeInfo ti (typeid (Consumer));
+ ti.add_base (Access::PUBLIC, true, Nameable::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Instance::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo consumer_ (consumer_init_ ());
+ }
+
+ TypeInfo const& Consumer::
+ static_type_info () { return consumer_; }
+
+
+ // Component
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ component_init_ ()
+ {
+ TypeInfo ti (typeid (Component));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo component_ (component_init_ ());
+ }
+
+ TypeInfo const& Component::
+ static_type_info () { return component_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp
new file mode 100644
index 00000000000..f3d7b7784e8
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Component.hpp
@@ -0,0 +1,234 @@
+// file : CCF/IDL3/SemanticGraph/Component.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP
+#define CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP
+
+#include "CCF/IDL2/SemanticGraph/Interface.hpp"
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Provider : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Provider (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class User : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ User () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~User () = 0;
+ };
+
+
+ class MultiUser : public virtual User
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ MultiUser (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ class SingleUser : public virtual User
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ SingleUser (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Publisher : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Publisher (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Emitter : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Emitter (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Consumer : public virtual Nameable, public virtual Instance
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Consumer (Path const& path, unsigned long line)
+ : Node (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class Component : public virtual Type, public virtual Scope
+ {
+ typedef
+ std::vector <Supports*>
+ Supports_;
+
+ public:
+ Inherits*
+ inherits () const
+ {
+ return inherits_;
+ }
+
+ typedef
+ Supports_::const_iterator
+ SupportsIterator;
+
+ SupportsIterator
+ supports_begin () const
+ {
+ return supports_.begin ();
+ }
+
+ SupportsIterator
+ supports_end () const
+ {
+ return supports_.end ();
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Component (Path const& path, unsigned long line)
+ : Node (path, line), inherits_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+
+ void
+ add_edge_left (Inherits& e)
+ {
+ inherits_ = &e;
+ }
+
+ void
+ add_edge_right (Inherits&)
+ {
+ }
+
+ void
+ add_edge_left (Supports& e)
+ {
+ supports_.push_back (&e);
+ }
+
+ void
+ add_edge_right (Manages&)
+ {
+ }
+
+ private:
+ Inherits* inherits_;
+ Supports_ supports_;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_GRAPH_COMPONENT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp
new file mode 100644
index 00000000000..ab49a698842
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.cpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL3/SemanticGraph/Elements.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ namespace
+ {
+ TypeInfo
+ manages_init_ ()
+ {
+ TypeInfo ti (typeid (Manages));
+ ti.add_base (Access::PUBLIC, true, Edge::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo manages_ (manages_init_ ());
+ }
+
+ TypeInfo const& Manages::
+ static_type_info () { return manages_; }
+
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp
new file mode 100644
index 00000000000..b6577b6ff2e
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Elements.hpp
@@ -0,0 +1,67 @@
+// file : CCF/IDL3/SemanticGraph/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP
+#define CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP
+
+#include "CCF/IDL2/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ using namespace CCF::IDL2::SemanticGraph;
+
+ //
+ //
+ //
+ class Manages : public virtual Edge
+ {
+ public:
+ Node&
+ manager () const
+ {
+ return *manager_;
+ }
+
+ Node&
+ managee () const
+ {
+ return *managee_;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Manages ()
+ {
+ type_info (static_type_info ());
+ }
+
+ void
+ set_left_node (Node& n)
+ {
+ manager_ = &n;
+ }
+
+ void
+ set_right_node (Node& n)
+ {
+ managee_ = &n;
+ }
+
+ private:
+ Node* manager_;
+ Node* managee_;
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_GRAPH_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp
new file mode 100644
index 00000000000..9fde39c008d
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.cpp
@@ -0,0 +1,106 @@
+// file : CCF/IDL3/SemanticGraph/EventType.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // EventType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ event_type_init_ ()
+ {
+ TypeInfo ti (typeid (EventType));
+ ti.add_base (Access::PUBLIC, true, ValueType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo event_type_ (event_type_init_ ());
+ }
+
+ TypeInfo const& EventType::
+ static_type_info () { return event_type_; }
+
+ EventType::
+ ~EventType ()
+ {
+ }
+
+
+ // AbstractEventType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ abstract_event_type_init_ ()
+ {
+ TypeInfo ti (typeid (AbstractEventType));
+ ti.add_base (Access::PUBLIC, true, EventType::static_type_info ());
+ ti.add_base (
+ Access::PUBLIC, true, AbstractValueType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo abstract_event_type_ (abstract_event_type_init_ ());
+ }
+
+ TypeInfo const& AbstractEventType::
+ static_type_info () { return abstract_event_type_; }
+
+
+ // ConcreteEventType
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ concrete_event_type_init_ ()
+ {
+ TypeInfo ti (typeid (ConcreteEventType));
+ ti.add_base (Access::PUBLIC, true, EventType::static_type_info ());
+ ti.add_base (
+ Access::PUBLIC, true, ConcreteValueType::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo concrete_event_type_ (concrete_event_type_init_ ());
+ }
+
+ TypeInfo const& ConcreteEventType::
+ static_type_info () { return concrete_event_type_; }
+
+
+ // EventTypeFactory
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ event_type_factory_init_ ()
+ {
+ TypeInfo ti (typeid (EventTypeFactory));
+ ti.add_base (
+ Access::PUBLIC, true, ValueTypeFactory::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo event_type_factory_ (event_type_factory_init_ ());
+ }
+
+ TypeInfo const& EventTypeFactory::
+ static_type_info () { return event_type_factory_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp
new file mode 100644
index 00000000000..203ee321f66
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/EventType.hpp
@@ -0,0 +1,104 @@
+// file : CCF/IDL3/SemanticGraph/EventType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP
+#define CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP
+
+#include "CCF/IDL2/SemanticGraph/ValueType.hpp"
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class EventType : public virtual ValueType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ EventType () // For virtual inheritance only.
+ {
+ type_info (static_type_info ());
+ }
+
+ virtual
+ ~EventType () = 0;
+ };
+
+
+ //
+ //
+ //
+ class AbstractEventType : public virtual EventType,
+ public virtual AbstractValueType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ AbstractEventType (Path const& path, unsigned long line)
+ : Node (path, line), AbstractValueType (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class ConcreteEventType : public virtual EventType,
+ public virtual ConcreteValueType
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ ConcreteEventType (Path const& path, unsigned long line)
+ : Node (path, line), ConcreteValueType (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+ //
+ //
+ //
+ class EventTypeFactory : public virtual ValueTypeFactory
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ EventTypeFactory (Path const& path, unsigned long line)
+ : Node (path, line),
+ TwoWayOperation (path, line),
+ ValueTypeFactory (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_GRAPH_EVENT_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp
new file mode 100644
index 00000000000..deb3dacffa0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.cpp
@@ -0,0 +1,79 @@
+// file : CCF/IDL3/SemanticGraph/Home.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ using Introspection::TypeInfo;
+ using Introspection::Access;
+
+ // Home
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ home_init_ ()
+ {
+ TypeInfo ti (typeid (Home));
+ ti.add_base (Access::PUBLIC, true, Type::static_type_info ());
+ ti.add_base (Access::PUBLIC, true, Scope::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo home_ (home_init_ ());
+ }
+
+ TypeInfo const& Home::
+ static_type_info () { return home_; }
+
+
+ // HomeFactory
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ home_factory_init_ ()
+ {
+ TypeInfo ti (typeid (HomeFactory));
+ ti.add_base (
+ Access::PUBLIC, true, TwoWayOperation::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo home_factory_ (home_factory_init_ ());
+ }
+
+ TypeInfo const& HomeFactory::
+ static_type_info () { return home_factory_; }
+
+
+ // HomeFinder
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ home_finder_init_ ()
+ {
+ TypeInfo ti (typeid (HomeFinder));
+ ti.add_base (
+ Access::PUBLIC, true, TwoWayOperation::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo home_finder_ (home_finder_init_ ());
+ }
+
+ TypeInfo const& HomeFinder::
+ static_type_info () { return home_finder_; }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp
new file mode 100644
index 00000000000..d243d468cbe
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/SemanticGraph/Home.hpp
@@ -0,0 +1,149 @@
+// file : CCF/IDL3/SemanticGraph/Home.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP
+#define CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP
+
+#include "CCF/IDL2/SemanticGraph/Operation.hpp"
+#include "CCF/IDL3/SemanticGraph/Elements.hpp"
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace SemanticGraph
+ {
+ //
+ //
+ //
+ class Home : public virtual Type, public virtual Scope
+ {
+ typedef
+ std::vector <Supports*>
+ Supports_;
+
+ public:
+ Manages&
+ manages () const
+ {
+ return *manages_;
+ }
+
+ Inherits*
+ inherits () const
+ {
+ return inherits_;
+ }
+
+ typedef
+ Supports_::const_iterator
+ SupportsIterator;
+
+ SupportsIterator
+ supports_begin () const
+ {
+ return supports_.begin ();
+ }
+
+ SupportsIterator
+ supports_end () const
+ {
+ return supports_.end ();
+ }
+
+ virtual bool
+ complete () const
+ {
+ return true;
+ }
+
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ Home (Path const& path, unsigned long line)
+ : Node (path, line), inherits_ (0)
+ {
+ type_info (static_type_info ());
+ }
+
+ using Type::add_edge_right;
+ using Scope::add_edge_left;
+
+ void
+ add_edge_left (Manages& e)
+ {
+ manages_ = &e;
+ }
+
+ void
+ add_edge_left (Inherits& e)
+ {
+ inherits_ = &e;
+ }
+
+ void
+ add_edge_right (Inherits&)
+ {
+ }
+
+ void
+ add_edge_left (Supports& e)
+ {
+ supports_.push_back (&e);
+ }
+
+ private:
+ Manages* manages_;
+ Inherits* inherits_;
+ Supports_ supports_;
+ };
+
+
+ //
+ //
+ //
+ class HomeFactory : public virtual TwoWayOperation
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ HomeFactory (Path const& path, unsigned long line)
+ : Node (path, line), TwoWayOperation (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+
+
+ //
+ //
+ //
+ class HomeFinder : public virtual TwoWayOperation
+ {
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ protected:
+ friend class Graph<Node, Edge>;
+
+ HomeFinder (Path const& path, unsigned long line)
+ : Node (path, line), TwoWayOperation (path, line)
+ {
+ type_info (static_type_info ());
+ }
+ };
+ }
+ }
+}
+
+#endif // CCF_IDL3_SEMANTIC_GRAPH_HOME_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Token.hpp b/modules/CIAO/CCF/CCF/IDL3/Token.hpp
new file mode 100644
index 00000000000..4a18aae6f13
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Token.hpp
@@ -0,0 +1,34 @@
+// file : CCF/IDL3/Token.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TOKEN_HPP
+#define CCF_IDL3_TOKEN_HPP
+
+#include "CCF/IDL2/Token.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ using IDL2::Token;
+ using IDL2::TokenPtr;
+ using IDL2::TokenList;
+ using IDL2::EndOfStream;
+ using IDL2::EndOfStreamPtr;
+ using IDL2::Keyword;
+ using IDL2::KeywordPtr;
+ using IDL2::Punctuation;
+ using IDL2::PunctuationPtr;
+ using IDL2::Identifier;
+ using IDL2::IdentifierPtr;
+ using IDL2::SimpleIdentifier;
+ using IDL2::SimpleIdentifierPtr;
+ using IDL2::ScopedIdentifier;
+ using IDL2::ScopedIdentifierPtr;
+ using IDL2::StringLiteral;
+ using IDL2::StringLiteralPtr;
+ }
+}
+
+#endif // CCF_IDL3_TOKEN_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal.hpp b/modules/CIAO/CCF/CCF/IDL3/Traversal.hpp
new file mode 100644
index 00000000000..aa83bd51156
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal.hpp
@@ -0,0 +1,16 @@
+// file : CCF/IDL3/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TRAVERSAL_HPP
+#define CCF_IDL3_TRAVERSAL_HPP
+
+#include "CCF/IDL2/Traversal.hpp"
+
+#include "CCF/IDL3/Traversal/Elements.hpp"
+
+#include "CCF/IDL3/Traversal/Component.hpp"
+#include "CCF/IDL3/Traversal/EventType.hpp"
+#include "CCF/IDL3/Traversal/Home.hpp"
+
+#endif // CCF_IDL3_TRAVERSAL_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.cpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.cpp
new file mode 100644
index 00000000000..1519650415c
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.cpp
@@ -0,0 +1,128 @@
+// file : CCF/IDL3/Traversal/Component.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+
+#include "CCF/IDL3/Traversal/Component.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ // Component
+ //
+ //
+ void Component::
+ traverse (Type& c)
+ {
+ pre (c);
+ name (c);
+ inherits (c);
+ supports (c);
+ names (c);
+ post (c);
+ }
+
+ void Component::
+ pre (Type&)
+ {
+ }
+
+ void Component::
+ name (Type&)
+ {
+ }
+
+ void Component::
+ inherits (Type& c, EdgeDispatcherBase& d)
+ {
+ if (SemanticGraph::Inherits* inh = c.inherits ())
+ {
+ d.traverse (*inh);
+ }
+ }
+
+ void Component::
+ inherits (Type& c)
+ {
+ if (SemanticGraph::Inherits* inh = c.inherits ())
+ {
+ inherits_pre (c);
+ edge_traverser ().traverse (*inh);
+ inherits_post (c);
+ }
+ else
+ {
+ inherits_none (c);
+ }
+ }
+
+ void Component::
+ inherits_pre (Type&)
+ {
+ }
+
+ void Component::
+ inherits_post (Type&)
+ {
+ }
+
+ void Component::
+ inherits_none (Type&)
+ {
+ }
+
+ void Component::
+ supports (Type& c, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (c.supports_begin (), c.supports_end (), d);
+ }
+
+ void Component::
+ supports (Type& c)
+ {
+ Type::SupportsIterator b (c.supports_begin ()), e (c.supports_end ());
+
+ if (b != e)
+ {
+ supports_pre (c);
+ iterate_and_traverse (
+ b, e, edge_traverser (), *this, &Component::comma, c);
+ supports_post (c);
+ }
+ else
+ {
+ supports_none (c);
+ }
+ }
+
+ void Component::
+ supports_pre (Type&)
+ {
+ }
+
+ void Component::
+ supports_post (Type&)
+ {
+ }
+
+ void Component::
+ supports_none (Type&)
+ {
+ }
+
+ void Component::
+ post (Type&)
+ {
+ }
+
+ void Component::
+ comma (Type&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp
new file mode 100644
index 00000000000..ebc0f79c704
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.hpp
@@ -0,0 +1,319 @@
+// file : CCF/IDL3/Traversal/Component.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TRAVERSAL_COMPONENT_HPP
+#define CCF_IDL3_TRAVERSAL_COMPONENT_HPP
+
+#include "CCF/IDL3/SemanticGraph/Component.hpp"
+#include "CCF/IDL3/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ struct PortTemplate : Node<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+ };
+
+ template <typename T>
+ struct PortAccessorTemplate : Node<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ returns (T&, EdgeDispatcherBase&);
+
+ virtual void
+ returns (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ receives (T&, EdgeDispatcherBase&);
+
+ virtual void
+ receives (T&);
+
+ virtual void
+ receives_pre (T&);
+
+ virtual void
+ receives_post (T&);
+
+ virtual void
+ raises (T&, EdgeDispatcherBase&);
+
+ virtual void
+ raises (T&);
+
+ virtual void
+ raises_pre (T&);
+
+ virtual void
+ raises_post (T&);
+
+ virtual void
+ post (T&);
+ };
+
+ template <typename T>
+ struct PortGetTemplate : PortAccessorTemplate<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ returns (T&);
+ };
+
+ template <typename T>
+ struct PortSetTemplate : PortAccessorTemplate<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ receives (T&);
+ };
+
+ template <typename T>
+ struct PortDataTemplate : Node<T>
+ {
+ /* GCC#13590/DR#39
+ using Node<T>::edge_traverser;
+ */
+
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ belongs (T&, EdgeDispatcherBase&);
+
+ virtual void
+ belongs (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ post (T&);
+ };
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::Provider>
+ Provider;
+
+ typedef
+ PortGetTemplate<SemanticGraph::Provider>
+ ProviderGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::Provider>
+ ProviderSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::Provider>
+ ProviderData;
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::User>
+ User;
+
+ typedef
+ PortGetTemplate<SemanticGraph::User>
+ UserGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::User>
+ UserSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::User>
+ UserData;
+
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::MultiUser>
+ MultiUser;
+
+ typedef
+ PortGetTemplate<SemanticGraph::MultiUser>
+ MultiUserGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::MultiUser>
+ MultiUserSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::MultiUser>
+ MultiUserData;
+
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::SingleUser>
+ SingleUser;
+
+ typedef
+ PortGetTemplate<SemanticGraph::SingleUser>
+ SingleUserGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::SingleUser>
+ SingleUserSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::SingleUser>
+ SingleUserData;
+
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::Publisher>
+ Publisher;
+
+ typedef
+ PortGetTemplate<SemanticGraph::Publisher>
+ PublisherGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::Publisher>
+ PublisherSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::Publisher>
+ PublisherData;
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::Emitter>
+ Emitter;
+
+ typedef
+ PortGetTemplate<SemanticGraph::Emitter>
+ EmitterGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::Emitter>
+ EmitterSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::Emitter>
+ EmitterData;
+
+
+ //
+ //
+ //
+ typedef
+ PortTemplate<SemanticGraph::Consumer>
+ Consumer;
+
+ typedef
+ PortGetTemplate<SemanticGraph::Consumer>
+ ConsumerGet;
+
+ typedef
+ PortSetTemplate<SemanticGraph::Consumer>
+ ConsumerSet;
+
+ typedef
+ PortDataTemplate<SemanticGraph::Consumer>
+ ConsumerData;
+
+ //
+ //
+ //
+ struct Component : ScopeTemplate<SemanticGraph::Component>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ inherits (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ inherits (Type&);
+
+ virtual void
+ inherits_pre (Type&);
+
+ virtual void
+ inherits_post (Type&);
+
+ virtual void
+ inherits_none (Type&);
+
+ virtual void
+ supports (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ supports (Type&);
+
+ virtual void
+ supports_pre (Type&);
+
+ virtual void
+ supports_post (Type&);
+
+ virtual void
+ supports_none (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+ }
+ }
+}
+
+#include "CCF/IDL3/Traversal/Component.tpp"
+
+#endif // CCF_IDL3_TRAVERSAL_COMPONENT_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.tpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.tpp
new file mode 100644
index 00000000000..fc74e4c717b
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Component.tpp
@@ -0,0 +1,195 @@
+// file : CCF/IDL3/Traversal/Component.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ //
+ //
+ //
+ template <typename T>
+ void PortTemplate<T>::
+ traverse (T& p)
+ {
+ this->edge_traverser ().traverse (p.belongs ());
+ }
+
+
+ // PortAccessorTemplate
+ //
+ //
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ traverse (T& p)
+ {
+ pre (p);
+ returns (p);
+ name (p);
+ receives (p);
+ raises (p);
+ post (p);
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ returns (T& p, EdgeDispatcherBase& d)
+ {
+ d.traverse (p.belongs ());
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ returns (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ receives (T& p, EdgeDispatcherBase& d)
+ {
+ // @@ Still thinking about the way of making
+ // fake parameter.
+ //
+ d.traverse (p.belongs ());
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ receives (T& p)
+ {
+ receives_pre (p);
+ receives_post (p);
+
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ receives_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ receives_post (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ raises (T&, EdgeDispatcherBase&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ raises (T& p)
+ {
+ raises_pre (p);
+ raises_post (p);
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ raises_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ raises_post (T&)
+ {
+ }
+
+ template <typename T>
+ void PortAccessorTemplate<T>::
+ post (T&)
+ {
+ }
+
+ // PortGetTemplate
+ //
+ //
+ template <typename T>
+ void PortGetTemplate<T>::
+ returns (T& p)
+ {
+ PortAccessorTemplate<T>::returns (p, this->edge_traverser ());
+ }
+
+
+ // PortSetTemplate
+ //
+ //
+ template <typename T>
+ void PortSetTemplate<T>::
+ receives (T& p)
+ {
+ receives_pre (p);
+ PortAccessorTemplate<T>::receives (p, this->edge_traverser ());
+ receives_post (p);
+ }
+
+
+ // PortDataTemplate
+ //
+ //
+ template <typename T>
+ void PortDataTemplate<T>::
+ traverse (T& p)
+ {
+ pre (p);
+ belongs (p);
+ name (p);
+ post (p);
+ }
+
+ template <typename T>
+ void PortDataTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void PortDataTemplate<T>::
+ belongs (T& p, EdgeDispatcherBase& d)
+ {
+ d.traverse (p.belongs ());
+ }
+
+ template <typename T>
+ void PortDataTemplate<T>::
+ belongs (T& p)
+ {
+ belongs (p, this->edge_traverser ());
+ }
+
+ template <typename T>
+ void PortDataTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void PortDataTemplate<T>::
+ post (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Elements.hpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Elements.hpp
new file mode 100644
index 00000000000..b92c5cf70fd
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Elements.hpp
@@ -0,0 +1,21 @@
+// file : CCF/IDL3/Traversal/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TRAVERSAL_ELEMENTS_HPP
+#define CCF_IDL3_TRAVERSAL_ELEMENTS_HPP
+
+#include "CCF/IDL2/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ using namespace IDL2::Traversal;
+ }
+ }
+}
+
+#endif // CCF_IDL3_TRAVERSAL_ELEMENTS_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp
new file mode 100644
index 00000000000..941dfad76e6
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.hpp
@@ -0,0 +1,90 @@
+// file : CCF/IDL3/Traversal/EventType.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TRAVERSAL_EVENT_TYPE_HPP
+#define CCF_IDL3_TRAVERSAL_EVENT_TYPE_HPP
+
+#include "CCF/IDL3/SemanticGraph/EventType.hpp"
+
+#include "CCF/IDL2/Traversal/Operation.hpp"
+#include "CCF/IDL3/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ struct EventTypeTemplate : ScopeTemplate<T>
+ {
+ virtual void
+ traverse (T&);
+
+ virtual void
+ pre (T&);
+
+ virtual void
+ name (T&);
+
+ virtual void
+ inherits (T&, EdgeDispatcherBase&);
+
+ virtual void
+ inherits (T&);
+
+ virtual void
+ inherits_pre (T&);
+
+ virtual void
+ inherits_post (T&);
+
+ virtual void
+ inherits_none (T&);
+
+ virtual void
+ supports (T&, EdgeDispatcherBase&);
+
+ virtual void
+ supports (T&);
+
+ virtual void
+ supports_pre (T&);
+
+ virtual void
+ supports_post (T&);
+
+ virtual void
+ supports_none (T&);
+
+ virtual void
+ post (T&);
+
+ virtual void
+ comma (T&);
+ };
+
+
+ typedef
+ EventTypeTemplate<SemanticGraph::EventType>
+ EventType;
+
+ typedef
+ EventTypeTemplate<SemanticGraph::AbstractEventType>
+ AbstractEventType;
+
+ typedef
+ EventTypeTemplate<SemanticGraph::ConcreteEventType>
+ ConcreteEventType;
+
+ typedef
+ OperationTemplate<SemanticGraph::EventTypeFactory>
+ EventTypeFactory;
+ }
+ }
+}
+
+#include "CCF/IDL3/Traversal/EventType.tpp"
+
+#endif // CCF_IDL3_TRAVERSAL_EVENT_TYPE_HPP
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.tpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.tpp
new file mode 100644
index 00000000000..92c985c6176
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/EventType.tpp
@@ -0,0 +1,151 @@
+// file : CCF/IDL3/Traversal/EventType.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ template <typename T>
+ void EventTypeTemplate<T>::
+ traverse (T& et)
+ {
+ pre (et);
+ name (et);
+ inherits (et);
+ supports (et);
+ names (et);
+ post (et);
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ pre (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ name (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ inherits (T& et, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (et.inherits_begin (),
+ et.inherits_end (),
+ d);
+
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ inherits (T& et)
+ {
+ typename T::InheritsIterator
+ b (et.inherits_begin ()), e (et.inherits_end ());
+
+ if (b != e)
+ {
+ inherits_pre (et);
+ iterate_and_traverse (b,
+ e,
+ this->edge_traverser (),
+ *this,
+ &EventTypeTemplate::comma,
+ et);
+ inherits_post (et);
+ }
+ else
+ {
+ inherits_none (et);
+ }
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ inherits_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ inherits_post (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ inherits_none (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ supports (T& et, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (et.supports_begin (),
+ et.supports_end (),
+ d);
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ supports (T& et)
+ {
+ typename T::SupportsIterator
+ b (et.supports_begin ()), e (et.supports_end ());
+
+ if (b != e)
+ {
+ supports_pre (et);
+ iterate_and_traverse (b,
+ e,
+ this->edge_traverser (),
+ *this,
+ &EventTypeTemplate::comma,
+ et);
+ supports_post (et);
+ }
+ else
+ {
+ supports_none (et);
+ }
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ supports_pre (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ supports_post (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ supports_none (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ post (T&)
+ {
+ }
+
+ template <typename T>
+ void EventTypeTemplate<T>::
+ comma (T&)
+ {
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.cpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.cpp
new file mode 100644
index 00000000000..a6132394dc0
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.cpp
@@ -0,0 +1,381 @@
+// file : CCF/IDL3/Traversal/Home.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/IDL3/Traversal/Home.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+ // Home
+ //
+ //
+ void Home::
+ traverse (Type& h)
+ {
+ pre (h);
+ name (h);
+ inherits (h);
+ supports (h);
+ manages (h);
+ names (h);
+ post (h);
+ }
+
+ void Home::
+ pre (Type&)
+ {
+ }
+
+ void Home::
+ name (Type&)
+ {
+ }
+
+ void Home::
+ inherits (Type& h, EdgeDispatcherBase& d)
+ {
+ if (SemanticGraph::Inherits* inh = h.inherits ())
+ {
+ d.traverse (*inh);
+ }
+ }
+
+ void Home::
+ inherits (Type& h)
+ {
+ if (SemanticGraph::Inherits* inh = h.inherits ())
+ {
+ inherits_pre (h);
+ edge_traverser ().traverse (*inh);
+ inherits_post (h);
+ }
+ else
+ {
+ inherits_none (h);
+ }
+ }
+
+ void Home::
+ inherits_pre (Type&)
+ {
+ }
+
+ void Home::
+ inherits_post (Type&)
+ {
+ }
+
+ void Home::
+ inherits_none (Type&)
+ {
+ }
+
+ void Home::
+ supports (Type& h, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (h.supports_begin (), h.supports_end (), d);
+ }
+
+ void Home::
+ supports (Type& h)
+ {
+ Type::SupportsIterator b (h.supports_begin ()), e (h.supports_end ());
+
+ if (b != e)
+ {
+ supports_pre (h);
+ iterate_and_traverse (
+ b, e, edge_traverser (), *this, &Home::comma, h);
+ supports_post (h);
+ }
+ else
+ {
+ supports_none (h);
+ }
+ }
+
+ void Home::
+ supports_pre (Type&)
+ {
+ }
+
+ void Home::
+ supports_post (Type&)
+ {
+ }
+
+ void Home::
+ supports_none (Type&)
+ {
+ }
+
+ void Home::
+ manages (Type& h, EdgeDispatcherBase& d)
+ {
+ d.traverse (h.manages ());
+ }
+
+ void Home::
+ manages (Type& h)
+ {
+ manages_pre (h);
+ manages (h, edge_traverser ());
+ manages_post (h);
+ }
+
+ void Home::
+ manages_pre (Type&)
+ {
+ }
+
+ void Home::
+ manages_post (Type&)
+ {
+ }
+
+ void Home::
+ post (Type&)
+ {
+ }
+
+ void Home::
+ comma (Type&)
+ {
+ }
+
+/*
+ // HomeFactory
+ //
+ //
+ void HomeFactory::
+ traverse (Type& hf)
+ {
+ pre (hf);
+ returns (hf);
+ name (hf);
+ receives (hf);
+ raises (hf);
+ post (hf);
+ }
+
+ void HomeFactory::
+ pre (Type&)
+ {
+ }
+
+ void HomeFactory::
+ returns (Type& hf, EdgeDispatcherBase& d)
+ {
+ d.traverse (hf.returns ());
+ }
+
+ void HomeFactory::
+ returns (Type& hf)
+ {
+ returns (hf, edge_traverser ());
+ }
+
+ void HomeFactory::
+ name (Type&)
+ {
+ }
+
+ void HomeFactory::
+ receives (Type& hf, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (hf.receives_begin (), hf.receives_end (), d);
+ }
+
+ void HomeFactory::
+ receives (Type& hf)
+ {
+ receives_pre (hf);
+ iterate_and_traverse (hf.receives_begin (),
+ hf.receives_end (),
+ edge_traverser (),
+ *this,
+ &HomeFactory::comma,
+ hf);
+ receives_post (hf);
+ }
+
+ void HomeFactory::
+ receives_pre (Type&)
+ {
+ }
+
+ void HomeFactory::
+ receives_post (Type&)
+ {
+ }
+
+ void HomeFactory::
+ raises (Type& hf, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (hf.raises_begin (), hf.raises_end (), d);
+ }
+
+ void HomeFactory::
+ raises (Type& hf)
+ {
+ Type::RaisesIterator b (hf.raises_begin ()), e (hf.raises_end ());
+
+ if (b != e)
+ {
+ raises_pre (hf);
+ iterate_and_traverse (
+ b, e, edge_traverser (), *this, &HomeFactory::comma, hf);
+ raises_post (hf);
+ }
+ else
+ {
+ raises_none (hf);
+ }
+ }
+
+ void HomeFactory::
+ raises_pre (Type&)
+ {
+ }
+
+ void HomeFactory::
+ raises_post (Type&)
+ {
+ }
+
+ void HomeFactory::
+ raises_none (Type&)
+ {
+ }
+
+ void HomeFactory::
+ post (Type&)
+ {
+ }
+
+ void HomeFactory::
+ comma (Type&)
+ {
+ }
+
+ // HomeFinder
+ //
+ //
+ void HomeFinder::
+ traverse (Type& hf)
+ {
+ pre (hf);
+ returns (hf);
+ name (hf);
+ receives (hf);
+ raises (hf);
+ post (hf);
+ }
+
+ void HomeFinder::
+ pre (Type&)
+ {
+ }
+
+ void HomeFinder::
+ returns (Type& hf, EdgeDispatcherBase& d)
+ {
+ d.traverse (hf.returns ());
+ }
+
+ void HomeFinder::
+ returns (Type& hf)
+ {
+ returns (hf, edge_traverser ());
+ }
+
+ void HomeFinder::
+ name (Type&)
+ {
+ }
+
+ void HomeFinder::
+ receives (Type& hf, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (hf.receives_begin (), hf.receives_end (), d);
+ }
+
+ void HomeFinder::
+ receives (Type& hf)
+ {
+ receives_pre (hf);
+ iterate_and_traverse (hf.receives_begin (),
+ hf.receives_end (),
+ edge_traverser (),
+ *this,
+ &HomeFinder::comma,
+ hf);
+ receives_post (hf);
+ }
+
+ void HomeFinder::
+ receives_pre (Type&)
+ {
+ }
+
+ void HomeFinder::
+ receives_post (Type&)
+ {
+ }
+
+ void HomeFinder::
+ raises (Type& hf, EdgeDispatcherBase& d)
+ {
+ iterate_and_traverse (hf.raises_begin (), hf.raises_end (), d);
+ }
+
+ void HomeFinder::
+ raises (Type& hf)
+ {
+ Type::RaisesIterator b (hf.raises_begin ()), e (hf.raises_end ());
+
+ if (b != e)
+ {
+ raises_pre (hf);
+ iterate_and_traverse (
+ b, e, edge_traverser (), *this, &HomeFinder::comma, hf);
+ raises_post (hf);
+ }
+ else
+ {
+ raises_none (hf);
+ }
+ }
+
+ void HomeFinder::
+ raises_pre (Type&)
+ {
+ }
+
+ void HomeFinder::
+ raises_post (Type&)
+ {
+ }
+
+ void HomeFinder::
+ raises_none (Type&)
+ {
+ }
+
+ void HomeFinder::
+ post (Type&)
+ {
+ }
+
+ void HomeFinder::
+ comma (Type&)
+ {
+ }
+*/
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp b/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp
new file mode 100644
index 00000000000..076bbab68c3
--- /dev/null
+++ b/modules/CIAO/CCF/CCF/IDL3/Traversal/Home.hpp
@@ -0,0 +1,219 @@
+// file : CCF/IDL3/Traversal/Home.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CCF_IDL3_TRAVERSAL_HOME_HPP
+#define CCF_IDL3_TRAVERSAL_HOME_HPP
+
+#include "CCF/IDL3/SemanticGraph/Home.hpp"
+
+#include "CCF/IDL2/Traversal/Operation.hpp"
+#include "CCF/IDL3/Traversal/Elements.hpp"
+
+namespace CCF
+{
+ namespace IDL3
+ {
+ namespace Traversal
+ {
+
+ //
+ //
+ //
+ struct Manages : Edge<SemanticGraph::Manages>
+ {
+ virtual void
+ traverse (Type& e)
+ {
+ node_traverser ().traverse (e.managee ());
+ }
+ };
+
+ //
+ //
+ //
+ struct Home : ScopeTemplate<SemanticGraph::Home>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ inherits (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ inherits (Type&);
+
+ virtual void
+ inherits_pre (Type&);
+
+ virtual void
+ inherits_post (Type&);
+
+ virtual void
+ inherits_none (Type&);
+
+ virtual void
+ supports (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ supports (Type&);
+
+ virtual void
+ supports_pre (Type&);
+
+ virtual void
+ supports_post (Type&);
+
+ virtual void
+ supports_none (Type&);
+
+ virtual void
+ manages (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ manages (Type&);
+
+ virtual void
+ manages_pre (Type&);
+
+ virtual void
+ manages_post (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+
+
+ //
+ //
+ //
+ /*
+ struct HomeFactory : Node<SemanticGraph::HomeFactory>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ returns (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ returns (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ receives (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ receives (Type&);
+
+ virtual void
+ receives_pre (Type&);
+
+ virtual void
+ receives_post (Type&);
+
+ virtual void
+ raises (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ raises (Type&);
+
+ virtual void
+ raises_pre (Type&);
+
+ virtual void
+ raises_post (Type&);
+
+ virtual void
+ raises_none (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+ */
+
+ typedef
+ OperationTemplate<SemanticGraph::HomeFactory>
+ HomeFactory;
+
+ //
+ //
+ //
+ /*
+ struct HomeFinder : Node<SemanticGraph::HomeFinder>
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ returns (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ returns (Type&);
+
+ virtual void
+ name (Type&);
+
+ virtual void
+ receives (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ receives (Type&);
+
+ virtual void
+ receives_pre (Type&);
+
+ virtual void
+ receives_post (Type&);
+
+ virtual void
+ raises (Type&, EdgeDispatcherBase&);
+
+ virtual void
+ raises (Type&);
+
+ virtual void
+ raises_pre (Type&);
+
+ virtual void
+ raises_post (Type&);
+
+ virtual void
+ raises_none (Type&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ comma (Type&);
+ };
+ */
+
+ typedef
+ OperationTemplate<SemanticGraph::HomeFinder>
+ HomeFinder;
+ }
+ }
+}
+
+#endif // CCF_IDL3_TRAVERSAL_HOME_HPP
diff --git a/modules/CIAO/CCF/Config.rules b/modules/CIAO/CCF/Config.rules
new file mode 100644
index 00000000000..5c17ea3bf9e
--- /dev/null
+++ b/modules/CIAO/CCF/Config.rules
@@ -0,0 +1,83 @@
+# file : Config.rules
+# author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+# cvs-id : $Id$
+
+# You may provide correct values for your configuration here.
+#
+
+# Set either BOOST_ROOT or BOOST_LIB & BOOST_INCLUDE. In case
+# only BOOST_ROOT is set then BOOST_LIB=$(BOOST_ROOT)/lib and
+# BOOST_INCLUDE=$(BOOST_ROOT)
+#
+
+BOOST_ROOT ?=
+BOOST_LIB ?=
+BOOST_INCLUDE ?=
+
+
+UTILITY_ROOT ?=
+UTILITY_INCLUDE ?=
+UTILITY_BUILD_RULES ?=
+
+
+# You normally would not want to edit anything below.
+#
+
+# Boost
+#
+ifneq ($(strip $(BOOST_ROOT)),)
+
+ ifeq ($(strip $(BOOST_LIB)),)
+ BOOST_LIB := $(BOOST_ROOT)/lib
+ endif
+
+ ifeq ($(strip $(BOOST_INCLUDE)),)
+ BOOST_INCLUDE := $(BOOST_ROOT)
+ endif
+
+endif
+
+#$(warning "boost lib : $(BOOST_LIB)")
+#$(warning "boost inc$ : $(BOOST_INCLUDE)")
+
+ifneq ($(strip $(BOOST_LIB)),)
+ BOOST_LD_FLAGS := -L$(BOOST_LIB)
+endif
+
+ifneq ($(strip $(BOOST_INCLUDE)),)
+ BOOST_CPP_FLAGS := -I$(BOOST_INCLUDE)
+endif
+
+
+# Utility
+#
+ifneq ($(strip $(UTILITY_ROOT)),)
+
+ ifeq ($(strip $(UTILITY_INCLUDE)),)
+
+ UTILITY_INCLUDE := $(UTILITY_ROOT)
+
+ endif
+
+ ifeq ($(strip $(UTILITY_BUILD_RULES)),)
+
+ UTILITY_BUILD_RULES := $(UTILITY_ROOT)/BuildRules
+
+ endif
+
+endif
+
+ifeq ($(strip $(UTILITY_BUILD_RULES)),)
+ UTILITY_BUILD_RULES :=/usr/share/libutility-dev/BuildRules
+endif
+
+
+# $(warning "utility inc : $(UTILITY_INCLUDE)")
+# $(warning "utility bld : $(UTILITY_BUILD_RULES)")
+
+ifneq ($(strip $(UTILITY_INCLUDE)),)
+ UTILITY_CPP_FLAGS := -I$(UTILITY_INCLUDE)
+endif
+
+CPPFLAGS += $(BOOST_CPP_FLAGS) $(UTILITY_CPP_FLAGS)
+LD_FLAGS += $(BOOST_LD_FLAGS)
diff --git a/modules/CIAO/CCF/Documentation/Build.html b/modules/CIAO/CCF/Documentation/Build.html
new file mode 100644
index 00000000000..94415303afe
--- /dev/null
+++ b/modules/CIAO/CCF/Documentation/Build.html
@@ -0,0 +1,402 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+file : Documentation/Build.html
+author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+cvs-id : $Id$
+-->
+
+<html>
+
+<head>
+
+ <title>Building CORBA Compiler Framework (CCF) Libraries</title>
+
+ <meta name="author" content="Boris Kolpackov"/>
+ <meta name="keywords" content="build,compile,make,CCF,CORBA,compiler,framework,library"/>
+ <meta name="description" content="Building CCF Libraries"/>
+ <meta http-equiv="Content-Language" content="en"/>
+
+ <style type="text/css">
+ body {
+ font-family : sans-serif;
+ color : black;
+ background : white;
+
+ max-width : 40em;
+ padding : 2em 2em 2em 3em;
+ margin : 0 0 0 0;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ font-family : sans-serif;
+ font-weight : 500;
+ }
+
+ h1 { font-size : 170%; }
+ h2 { font-size : 125%;
+ text-decoration : underline
+ }
+ ul.toc li {
+ padding : .4em 0em 0em 0em;
+ }
+
+ ol.multiline li {
+ padding-top : 0.6em;
+ padding-bottom : 0.6em;
+ }
+
+ </style>
+
+</head>
+
+<body>
+<h1>Building CORBA Compiler Framework (CCF) Libraries</h1>
+<h2>Table of Contents</h2>
+<ol>
+<li><a href="#prereqs">Prerequisite Libraries</a></li>
+<ul class="toc">
+<li><a href="#debian">Debian GNU/Linux [i386.deb]</a></li>
+
+<li><a href="#redhat">RedHat OS family [i386.rpm]</a></li>
+
+<li><a href="#other_platforms">Other GNU/Linux or UNIX Distributions &amp; Windows</a>
+<ul>
+<li><a href="#cxx">C++</a></li>
+<li><a href="#boost">Boost Libraries</a></li>
+<li><a href="#utility">Utility Library</a></li>
+</ul></li>
+
+<!--li><a href="#windows">Windows</a>
+<ul>
+<li><a href="#windows_cxx">C++</a></li>
+<li><a href="#windows_boost">Boost Libraries</a></li>
+<li><a href="#windows_utility">Utility Library</a></li>
+</ul></li -->
+</ul>
+
+<li><a href="#initial_setup">Configuring the Build Environment</a></li>
+<li><a href="#building_ccf">Building CORBA Compiler Framework (CCF)</a></li>
+</ol>
+
+<hr />
+<h1><a name="prereqs">Prerequisite Libraries</a></h1>
+
+<!-- Debian -->
+
+<h2><a name="debian">Debian GNU/Linux [i386.deb]</a></h2>
+
+<p>You will need to install the following packages from the Debian package repository:
+
+<ol>
+<li><code>libboost-dev-1.30.2-2</code> or better</li>
+<li><code>libboost-regex-dev-1.30.2-2</code> or better</li>
+</ol>
+
+<p>Additionally, you will need to download and and install
+
+<ol>
+<li><a href="ftp://kolpackov.net/pub/Utility/Utility-1.2/deb/libutility_1.2.2-1_i386.deb">
+<code>libutility_1.2.2-1_i386.deb</code></a></li>
+<li><a href="ftp://kolpackov.net/pub/Utility/Utility-1.2/deb/libutility-dev_1.2.2-1_i386.deb">
+<code>libutility-dev_1.2.2-1_i386.deb</code></a></li>
+</ol>
+
+For example, if you downloaded them into <code>/tmp</code> then to
+install you can issue these commands:</p>
+
+<pre>$ cd /tmp
+$ dpkg -i libutility*.deb
+</pre>
+</p>
+
+<!-- RedHat -->
+
+<h2><a name="redhat">RedHat OS family [i386.rpm]</a></h2>
+
+<p>You will need to install the following RedHat packages:</p>
+
+<ol>
+
+<li><a href="http://www.dre.vanderbilt.edu/cidlc/prerequisites/rpm/boost-devel-1.30.2-2.i386.rpm">
+<code>boost-devel-1.30.2-2.i386.rpm</code></a></li>
+
+<li><a href="ftp://kolpackov.net/pub/Utility/Utility-1.2/rpm/Utility-1.2.2-3.i386.rpm">
+<code>Utility-1.2.2-3.i386.rpm</code></a></li>
+</ol>
+
+<p>For example, if you downloaded them into <code>/usr/src/redhat/RPMS/i386
+</code> then to install you can issue these commands:</p>
+
+<pre>$ cd /usr/src/redhat/RPMS/i386
+$ rpm -Uhv boost-devel-1.30.2-2.i386.rpm
+$ rpm -Uhv Utility-1.2.2-3.i386.rpm
+</pre>
+</p>
+
+<!-- Linux -->
+
+<h2><a name="other_platforms">Other GNU/Linux or UNIX Distributions &amp; Windows</a></h2>
+
+<!--
+
+<h2><a name="linux_make">Make</a></h2>
+<p>Currently in order to build CCF Libraries you will need
+<a href="http://savannah.gnu.org/projects/make/">GNU make</a> 3.80 with the
+following bug fixes:
+
+<ol>
+<li>
+<a href="http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=1516">
+eval inside condition</a></li>
+
+<li>
+<a href="http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=1517">
+eval memory exhaustion</a></li>
+</ol>
+
+Your system distributor should have the recent version of make with those
+fixes applied.
+</p>
+
+<p>If you are unsure whether you have those bugfixes or not then you can
+just try building CCF and if you see some strange make-related errors then
+you will need to upgrade.</p>
+
+-->
+
+<h3><a name="cxx">C++</a></h3>
+<p>On the Lunix/UNIX platforms, you can use any standard-conformant C++ compiler.
+We recommend you use the lastest stable release of the <a href="http://gcc.gnu.org">GNU C++</a>
+
+compiler.</p>
+
+<p>On the Windows platform, VC++ 7.1 or better is required to build CCF. We do not
+support VC++ 6 or VC++ 7.0.</p>
+
+<h3><a name="boost">Boost Libraries</a></h3>
+<p>In order to build CCF you will need the following libraries from the
+<a href="http://www.boost.org">Boost distribution</a>:</p>
+
+<ol>
+<li>regex</li>
+<li>filesystem</li>
+<li>spirit parser framework</li>
+</ol>
+
+<p>There are two commonly used ways to obtain those libraries: you can get
+precompiled binaries from your system distributor or download source code and
+compile it yourself. The first approach is recommended where available
+and if you got precompiled binaries then you can skip the rest of this
+section.</p>
+
+</p>If you choose to compile Boost Libraries yourself please refer to the
+<a href="http://www.boost.org/more/getting_started.html">Boost Building
+Instructions</a>. Please remember the install locations of the boost libraries
+because they will be needed to properly configure your environment for building
+CCF.<p>
+
+<!--p>After you have successfully compiled necessary libraries in the boost
+distribution you need to do one more thing. Inside the boost distribution
+directory (e.g. <code>boost-1.30.2</code>) create a directory with the name
+<code>lib</code> and copy (or soft link) <code>libboost_filesystem.a</code>
+and <code>libboost_regex.a</code> into it.</p-->
+
+<h3><a name="utility">Utility Library</a></h3>
+
+<p>Another prerequisite for CCF is the Utility Library. You don't need
+to build anything in this library. The Utility library is available in
+the following two different forms for convinience:</p>
+
+<ol>
+<li>A <a href="http://www.dre.vanderbilt.edu/cidlc/prerequisites/Utility-1.2.2.tar.bz2">bz2 package</a> for unix based platforms including Unix.</li>
+<li>A <a href="http://www.dre.vanderbilt.edu/cidlc/prerequisites/Utility-1.2.2.tar.zip">zip package</a> for Win32 based platforms. </li>
+</ol>
+
+<p>Just unpack it to some convenient place and remember its location because it will be need
+to properly configure the build environment for CCF.</p>
+
+<!-- Windows -->
+
+<!--h2><a name="windows">Windows</a></h2>
+
+<h3><a name="windows_cxx">C++</a></h3>
+
+<h3><a name="windows_boost">Boost Libraries</a></h3>
+<p>In order to build CCF you will need the following libraries from
+the <a href="http://www.boost.org">Boost distribution</a>:
+
+<ol>
+<li>regex</li>
+<li>filesystem</li>
+<li>spirit parser framework</li>
+</ol>
+
+<p>Below is the list of step-by-step instructions for building boost. As
+an example, I assume that the installation directory is <code>D:\lib</code>.
+</p>
+
+<ol class="multiline">
+
+<li>Download boost source distribution version <code>1.30.2</code> (<code>boost-1.30.2.zip</code>)
+from the <a href="http://sourceforge.net/project/showfiles.php?group_id=7586">Boost web site</a>.
+After downloading unzip the file in <code>D:\lib</code> so that you get
+<code>D:\lib\boost-1.30.2</code>. Note that boost version <code>1.31.0</code>
+
+will not work.</li>
+
+<li>Download the latest pre-built
+<a href="http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941">
+<code>boost-jam</code></a>. At the time of writing, the latest version was
+<code>3.1.7</code> thus the file you download would be
+<code>bjam-3.1.7-ntx86.zip</code>. Unzip this file in <code>D:\lib</code> so
+that you get <code>D:\lib\bin.ntx86\bjam.exe</code>.</li>
+
+<li>Open a command prompt and <code>cd D:\lib\boost-1.30.2</code>. Then
+issue the following command.
+
+<pre>D:\lib\bin.ntx86\bjam.exe "-sTOOLS=vc7.1"
+</pre>
+</li>
+
+<li>Create a directory called <code>lib</code> in
+<code>D:\lib\boost-1.30.2</code>.</li>
+
+<li>Copy <code>D:\lib\boost-1.30.2\libs\filesystem\build\bin\libboost_filesystem.lib\vc7.1\debug\runtime-link-dynamic\libboost_filesystem.lib</code>
+to <code>D:\lib\boost-1.30.2\lib\libboost_filesystem_debug.lib</code>.<br>
+(Don't ask me who came up with this directory structure ;-)
+</li>
+
+<li>Copy <code>D:\lib\boost-1.30.2\libs\regex\build\bin\libboost_regex.lib\vc7.1\debug\runtime-link-dynamic\libboost_regex.lib</code>
+to <code>D:\lib\boost-1.30.2\lib\libboost_regex_debug.lib</code>.
+</li>
+
+<li>Add <code>D:\lib\boost-1.30.2</code> to your VC7.1 include directory
+search list (Go to Tools -> Options -> Projects -> VC++ Directories -> Include Files).
+Add <code>D:\lib\boost-1.30.2\lib</code> to your VC7.1 library directory
+search list.</li>
+
+</ol>
+
+<p>Please refer to the
+<a href="http://www.boost.org/more/getting_started.html">Boost Building
+Instructions</a> if you have any questions.<p>
+
+<h3><a name="windows_utility">Utility Library</a></h3>
+
+<p>Another prerequisite for CCF is
+<a href="http://www.dre.vanderbilt.edu/cidlc/prerequisites/Utility-1.2.2.tar.bz2">Utility
+Library</a>. You don't need to build anything in this library. Just unpack
+it to some convenient place and add it to your VC7.1 include directory search
+list. For example if you unpacked <code>Utility-1.2.2.tar.bz2</code> in
+<code>D:\lib</code> then add <code>D:\lib\Utility-1.2.2</code> to your
+search list.</p -->
+
+<hr />
+
+<!-- Configuring the Build Environment -->
+
+<h1><a name="initial_setup">Configuring the Build Environment</a></h1>
+
+<p>Before you can start building CCF you need to specify the location
+of Boost Libraries and Utility Library. There are two ways you can do
+this. The first way is to specify the environment variables
+
+<code>BOOST_ROOT, BOOST_INCLUDE, BOOST_LIB, BOOST_VERSION, BOOST_CFG</code>
+and <code>UTILITY_ROOT</code>.
+
+<p>To configure <code>BOOST_ROOT</code> and <code>UTILITY_ROOT</code>,
+
+set both enviroment variables to the root directory for the respective
+libraries as follows:</p>
+<ul>
+<li>On Linux/UNIX
+<pre>
+%> export BOOST_ROOT=&lt;path_to_boost&gt;
+%> export UTILITY_ROOT=&lt;path_to_utility&gt;
+</pre>
+</li>
+<li>On Windows
+<pre>
+%> set BOOST_ROOT=&lt;path_to_boost&gt;
+%> set UTILITY_ROOT=&lt;path_to_utility&gt;
+</pre>
+</li>
+</ul>
+
+<p>If <code>BOOST_INCLUDE</code> and <code>BOOST_LIB</code> are not initialized,
+
+then their values are derived from <code>BOOST_ROOT</code> as follows:<p>
+
+<pre>
+BOOST_LIB := $(BOOST_ROOT)/lib
+BOOST_INCLUDE := $(BOOST_ROOT)
+</pre>
+
+<p><code>BOOST_VERSION</code> and <code>BOOST_CFG</code> are two environment variables that
+depend on the version and configuration of Boost that you are using. <code>BOOST_VERSION</code>
+is initialized as follows:</p>
+<ol>
+<li>Look in <code>$BOOST_ROOT/include/boost</code> directory</li>
+<li>If there is another boost directory, e.g. <code>boost-1_32</code> for building boost-1.32, then this is your version
+ <ul>
+ <li>On Linux/UNIX:
+
+ <pre><code>%> export BOOST_VERSION=boost-1_32</code></pre></li>
+ <li>On Windows:
+
+ <pre><code>%> set BOOST_VERSION=boost-1_32</code></pre></li>
+ </ul>
+</li>
+</ol>
+<p>
+<code>BOOST_CFG</code> depends on which configuration of the boost libraries you want use for CCF. If
+you look in <code>$BOOST_ROOT/lib</code>, you will notice all the Boost libraries. Each library has
+the compiler and threading support, e.g. <code>-vc71-mt</code> for VC++ 7.1 and multi-threaded, as part
+
+of the filename. If this is not the case for your libraries, then you can
+
+<a href="#building_ccf">skip</a> this section and continue at
+
+<a href="#building_ccf">Building CORBA Compiler Framework (CCF)</a>. This part of
+
+the filename is known as the <code>BOOST_CFG</code> and needs to be specified. For example, if you are
+
+using VC++ 7.1 and want to use the multi-threaded version of the libraries for CCF, your would do the
+following:
+<blockquote><code>%> set BOOST_CFG=-vc71-mt</code></blockquote>
+This can be done similarly on the Linux/UNIX platforms depending on your compiler version and the
+
+Boost configuration you want to use.</p>
+
+<p>Alternatively, you can specify all values for <code>BOOST_*</code> and
+<code>UTILITY_*</code> in <code>$CIAO_ROOT/CCF/Config.rules</code></p>
+
+<!-- Building CORBA Compiler Framework (CCF) -->
+
+<hr />
+<h1><a name="building_ccf">Building CORBA Compiler Framework (CCF)</a></h1>
+
+Now that you have built and installed the required libraries, you are now ready
+to build the CCF libraries. If there are any makefiles or project solutions
+in the CCF directory we recommend that you disgard those and regenerate
+all the projects files using MPC. To build all project files and CCF, please use the
+following steps:
+<ol>
+<li><code>%> cd $CIAO_ROOT/CCF/CCF</code></li>
+<li><code>%> $ACE_ROOT/bin/mwc.pl -type &lt;project-type&gt; -static -features cidl=1, exceptions=1, boost=1</code></li>
+</ol>
+On Linux/UNIX, if you are building with a make utility, e.g., gmake, use the following command
+to build CCF:
+
+<pre>%> gmake cidl=1 exceptions=1 boost=1</pre>
+<p>If you are building on Windows, just open the generated solution file.</p>
+
+<p><b>Note:</b> If you are building CCF on a Windows platform, use <code>%ACE_ROOT%\bin\mwc.pl</code> instead
+
+<code>of $ACE_ROOT/bin/mwc.pl</code>. Also, for a list of project types and other command-line options
+supported by MPC, type <code>$ACE_ROOT/bin/mwc.pl --help</code>.</p>
+</body>
+</html>
diff --git a/modules/CIAO/CCF/Documentation/DesignNotes b/modules/CIAO/CCF/Documentation/DesignNotes
new file mode 100644
index 00000000000..1cf74e88400
--- /dev/null
+++ b/modules/CIAO/CCF/Documentation/DesignNotes
@@ -0,0 +1,459 @@
+
+Note: this file is somewhat outdated
+
+Intention of this file is to capture and document CIDL complier design
+ideas/decisions.
+
+Conceptual parts of CIDL compiler design
+----------------------------------------
+
+Option Parser Consists of option parser and option
+ database.
+
+C Preprocessor Interfacing Represents mechanism of preprocessing
+ cidl files.
+
+IDL Compiler Interfacing Represents mechanism of invoking IDL
+ compiler.
+
+Scanner Scanner for preprocessed cidl file.
+
+Parser CIDL grammar parser. Consists of grammar
+ and semantic rules.
+
+Syntax Tree Intermediate representation of cidl file.
+ Consists of syntax tree nodes itself and
+ perhaps symbol tables.
+
+Semantic Analyzer Traverses Syntax Tree and performs
+ semantic analysis as well as some
+ semantic expansions.
+
+
+Code Generation Stream Stream to output generated code to. Used
+ by concrete Code Generators
+
+Code Generators
+{
+
+ Executor Mapping Generator Generator for local executor mapping.
+
+ Executor Implementation Generator Generator for partial implementation
+ of local executor mapping.
+
+ Skeleton Thunk Generator Generator for skeleton thunks i.e.
+ code that implements skeleton and
+ thunks user-defined functions to
+ executor mapping.
+}
+
+Compiler driver Establishes order of execution of
+ different components as part of
+ compilation process.
+
+
+How everything works together
+-----------------------------
+
+(1) Compiler Driver executes Option Parser to populate Option Database
+
+(2) Compiler Driver executes C Preprocessor on a supplied cidl file
+
+(3) Compiler Driver executes Parser which uses Scanner to scan preprocessed
+ cidl file and generates Syntax Tree by means of semantic rules.
+
+(4) At this point we have Syntax Tree corresponding to the original cidl
+ file. Compiler Driver executes Executor Mapping Generator,
+ Executor Implementation Generator and Skeleton Thunk Generator on
+ Syntax Tree.
+
+
+
+General Design Ideas/Decision
+-------------
+
+[IDEA]: There is an effort to use autoconf/automake in ACE/TAO. Maybe it's
+ a good idea to start using it with CIDLC? There is one side advantage
+ of this approach: if we decide to embed GCC CPP then we will have to
+ use configure (or otherwise ACE-ify the code which doesn't sound like
+ a right solution).
+
+[IDEA]: CIDLC is a prototype for a new IDLC, PSDLC and IfR model. Here are
+ basic concepts:
+
+ - use common IDL grammar, semantic rules and syntax tree nodes
+ for IDLC, CIDLC, PSDLC and IfR. Possibly have several libraries
+ for example ast_idl-2.so, ast_idl-3.so, scaner_idl-2.so
+ scaner_idl-3.so, parser_idl-2.so, parser_idl-3.so. Dependency
+ graph would look like this:
+
+
+ ast_idl-2.so scanner_idl-2.so
+ | |
+ |---------------------------------|
+ | | |
+ | | |
+ | parser_idl-2.so |
+ | | |
+ ast_idl-3.so | scanner_idl-3.so
+ | | |
+ | | |
+ | | |
+ ---------parser_idl-3.so---------
+
+ Same idea applies for CIDL and PSDL.
+
+
+ - use the same internal representation (syntax tree) in all
+ compilers and IfR. This way at some stage if we will need
+ to make one of the compilers IfR-integrated (import keyword?)
+ then it will be a much easier task than it's now. This internal
+ representation may also be usable in typecodes
+
+ @@ boris: not clear to me.
+
+ @@ jeff: A typecode is like a piece of the Syntax Tree with these
+ exceptions -
+
+ (1) There is no typecode for an IDL module.
+
+ (2) Typecodes for interfaces and valuetypes lack some of the
+ information in the corresponding Syntax Tree nodes.
+
+ With these exceptions in mind, a typecode can be composed and
+ traversed in the same manner as a Syntax Tree, perhaps with
+ different classes than used to compose the ST itself.
+
+ @@ boris: Ok, let me see if I got it right. So when typecode
+ is kept in parsed state (as opposite to binary) (btw, when
+ does it happen?) it makes sense to apply the same techniques
+ (if in fact not the same ST nodes and traversal mechs) as
+ for XIDL compilation.
+
+[IDEA]: We should be consistent with the way external compilers that we call
+ report errors. For now those are CPP and IDLC.
+
+Option Parser
+-------------
+
+[IDEA]: Use Spirit parser framework to generate option parser.
+
+[IDEA]: Option Database is probably a singleton.
+
+ @@ jeff: This is a good idea, especially when passing some of the
+ options to a preprocessor or spawned IDL compier. But I think we
+ will still need 'state' classes for the front and back ends (to
+ hold values set by command line options and default values) so
+ we can keep them decoupled).
+
+
+ @@ boris: I understand what you mean. Though I think we will be
+ able to do with one 'runtime database'. Each 'compiler module'
+ will be able to populate its 'namespace' with (1) default
+ values, (2) with module-specific options and (3) arbitrary
+ runtime information. I will present prototopy design shortly.
+
+
+[IDEA]: It seems we will have to execute at least two external programs
+ as part of CIDLC execution: CPP and IDLC. Why wouldn't we follow
+ GCC specs model (gcc -dumpspecs). Here are candidates to be put into
+ specs:
+
+ - default CPP name and options
+ - default IDLC name and options
+ - default file extensions and formats for different mappings
+ - other ideas?
+
+[IDEA]: Provide short and long option names (e.g. -o and --output-dir)
+ for every option (maybe except -I, -D, etc).
+
+
+C Preprocessor Interfacing
+--------------------------
+
+[IDEA]: Embed/require GCC CPP
+
+[IDEA]: We need a new model of handling includes in CIDLC (as well as IDLC).
+ Right now I'm mentally testing a new model (thanks to Carlos for the
+ comments). Soon I will put the description here.
+
+[IDEA]: We cannot move cidl file being preprocessed to for example /tmp
+ as it's currently the case with IDLC.
+
+[IDEA]: Can we use pipes (ACE Pipes) portably to avoid temporary files?
+ (Kitty, you had some ideas about that?)
+
+
+
+IDL Compiler Interfacing
+------------------------
+
+[IDEA]: Same as for CPP: Can we use pipes?
+
+ @@ jeff: check with Nanbor on this. I think there may be CCM/CIAO
+ use cases where we need the intermediate IDL file.
+
+[IDEA]: Will need a mechanism to pass options to IDLC from CIDLC command
+ line (would be nice to have this ability for CPP as well).
+ Something like -x in xterm? Better ideas?
+
+
+
+Scanner
+------
+
+[IDEA]: Use Spirit framework to construct scanner. The resulting sequence
+ can be sequence of objects? BTW, Spirit parser expects a "forward
+ iterator"-based scanner. So this basically mean that we may have to
+ keep the whole sequence in memory. BTW, this is another good reason
+ to have scanner: if we manage to make scanner a predictable parser
+ (i.e. no backtracking) then we don't have to keep the whole
+ preprocessed cidl file in memory.
+
+
+
+Parser
+------
+
+[IDEA]: Use Spirit framework to construct parser.
+
+[IDEA]: Define IDL grammar as a number of grammar capsules. This way it's
+ much easier to reuse/inherit even dynamically. Need to elaborate
+ this idea.
+
+[IDEA]: Use functors as semantic actions. This way we can specify (via
+ functor's data member) on which Syntax Tree they are working.
+ Bad side: semantic rules are defined during grammar construction.
+ However we can use a modification of the factory method pattern.
+ Better ideas?
+
+ @@ jeff: I think ST node creation with a factory
+ is a good idea - another ST implementation could be plugged in,
+ as long as it uses a factory with the same method names.
+
+ @@ boris: Right. In fact it's our 'improved' way of handling 'BE'
+ usecases.
+
+
+
+Syntax Tree
+-----------
+
+[IDEA]: Use interface repository model as a base for Syntax Tree hierarchy.
+
+[IDEA]: Currently (in IDLC) symbol lookup is accomplished by AST navigation,
+ and is probably the biggest single bottleneck in performance. Perhaps
+ a separate symbol table would be preferable. Also, lookups could be
+ specialized, e.g., for declaration, for references, and perhaps a
+ third type for argument-related lookups.
+
+[NOTE]: If we are to implement symbol tables then we need to think how we
+ are going to inherit (extend) this tables.
+
+[NOTE]: Inheritance/supports graphs: these graphs need to be traversed at
+ several points in the back end. Currently they are rebuilt for each
+ use, using an n-squared algorithm. We could at least build them only
+ once for each interface/valuetype, perhaps even with a better
+ algorithm. It could be integrated into inheritance/supports error
+ checking at node creation time, which also be streamlined.
+
+ @@ boris: Well, I think we should design our Syntax Tree so that
+ every interface/valuetype has a list (flat?) of interfaces it
+ inherits from/supports.
+
+[IDEA]: We will probably want to use factories to instantiate Syntax Tree
+ Nodes (STN). This will allow a concrete code generators to alter (i.e.
+ inherit off and extend) vanilla STNs (i.e. alternative to BE nodes
+ in current IDLC design).
+
+
+Common Syntax Tree traversal Design Ideas/Decision
+--------------------------------------------------
+
+[IDEA] If we specify Syntax Tree traversal facility then we will be able
+ to specify (or even plug dynamically) Syntax Tree traversal agents
+ that may not only generate something but also annotate or modify
+ Syntax Tree. We are already using this technique for a number of
+ features (e.g. AMI, IDL3 extension, what else?) but all these agents
+ are hardwired inside TAO IDLC. If we have this facility then we will
+ be able to produce modular and highly extensible design. Notes:
+
+ - Some traversal agents can change Syntax Tree so that it will be
+ unusable by some later traversal agents. So maybe the more
+ generic approach would be to produce new Syntax Tree?
+
+ @@ jeff: Yes, say for example that we were using a common ST
+ representation for the IDL compiler and the IFR. We would not
+ want to send the extra AMI nodes to the IFR so in that case
+ simple modification of the ST might not be best.
+
+[IDEA] Need a generic name for "Syntax Tree Traversal Agents". What about
+ "Syntax Tree Traverser"?
+
+
+Code Generation Stream
+----------------------
+
+[IDEA] Use language indentation engines for code generation (like a c-mode
+ in emacs). The idea is that code like this
+
+ out << "long foo (long arg0, " << endl
+ << " long arg1) " << endl
+ << "{ " << endl
+ << " return arg0 + arg1; " << endl
+ << "} " << endl;
+
+ will result in a generated code like this:
+
+ namespace N
+ {
+ ...
+
+ long foo (long arg0,
+ long arg1)
+ {
+ return arg0 + arg1;
+ }
+
+ ...
+ }
+
+ Note that no special actions were taken to ensure proper indentation.
+ Instead the stream's indentation engine is responsible for that.
+ The same mech can be used for different languages (e.g. XML).
+
+
+Code Generators
+---------------
+
+[IDEA] It makes sense to establish a general concept of code generators.
+ "Executor Mapping Generator", "Executor Implementation Generator"
+ and "Skeleton Thunk Generator" would be a concrete code generators.
+
+[IDEA] Expression evaluation: currently the result (not the expression)
+ is generated, which may not always be necessary.
+
+ @@ boris: I would say may not always be correct
+
+
+ However, for purposes of type coercion and other checking (such as
+ for positive integer values in string, array and sequence bounds)
+ evaluation must be done internally.
+
+ @@ boris: note that evaluation is needed to only verify that things
+ are correct. You don't have to (shouldn't?) substitute original
+ (const) expression with what's been evaluated.
+
+
+ @@ jeff: it may be necessary in some cases to append 'f' or 'U' to
+ a generated number to avoid a C++ compiler warning.
+
+ @@ boris: shouldn't this 'f' and 'U' be in IDL as well?
+
+[IDEA] I wonder if it's a good idea to use a separate pass over syntax tree
+ for semantic checking (e.g. type coercion, positive values for
+ sequence bounds).
+
+ @@ jeff: This may hurt performance a little - more lookups - but it
+ will improve error reporting.
+
+ @@ boris: As we dicussed earlier this pass could be used to do
+ 'semantic expansions' (e.g. calculate a flat list of interface's
+ children, etc). Also I don't think we should worry about speed
+ very much here (of course I don't say we have to be stupid ;-)
+ In fact if we are trading better design vs faster compilation
+ at this stage we should always go for better design.
+
+
+Executor Mapping Generator
+--------------------------
+
+
+
+Executor Implementation Generator
+--------------------------------
+
+[IDEA]: Translate CIDL composition to C++ namespace.
+
+
+
+Skeleton Thunk Generator
+------------------------
+
+
+
+
+Compiler driver
+---------------
+
+
+
+Vault
+-----
+
+Some thoughts from Jeff that I are not directly related to CIDLC and are
+rather current IDLC design defects:
+
+* AMI/AMH implied IDL: more can be done in the BE preprocessing pass,
+ hopefully eliminating a big chunk of the huge volume of AMI/AMH visitor
+ code. The implied IDL generated for CCM types, for example, leaves almost
+ nothing extra for the visitors to do.
+
+* Fwd decl redefinition: forward declaration nodes all initially contain a
+ heap-allocated dummy full-definition member, later replaced by a copy
+ of the full definition. This needs to be streamlined.
+
+* Memory leaks: inconsistent copying/passing policies make it almost
+ impossible to eliminate the huge number of leaks. The front end will be
+ more and more reused, and it may be desirable to make it executable as a
+ function call, in which case it will important to eliminate the leaks.
+ Perhaps copying of AST nodes can be eliminated with reference counting or
+ just with careful management, similarly for string identifiers and literals.
+ Destroy() methods have been put in all the node classes, and are called
+ recursively from the AST root at destruction time, but they are far from
+ doing a complete job.
+
+* Visitor instantiation: the huge visitor factory has already been much
+ reduced, and the huge enum of context state values is being reduced.
+ However there will still be an abundance of switch statements at nearly
+ every instance of visitor creation at scope nesting. We could make better
+ use of polymorphism to get rid of them.
+
+* Node narrowing: instead of the impenetrable macros we use now, we
+ could either generate valuetype-like downcast methods for the (C)IDL
+ types, or we could just use dynamic_cast.
+
+* Error reporting: making error messages more informative, and error recovery
+ could both be a lot better, as they are in most other IDL compilers. If a
+ recursive descent parser is used (such as Spirit), there is a simple
+ generic algorithm for error recovery.
+
+
+* FE/BE node classes: if BE node classes are implemented at all, there should
+ be a complete separation of concerns - BE node classes should contain only
+ info related to code generation, and FE node classes should contain only
+ info related to the AST representation. As the front end becomes more
+ modular and reusable, this will become more and more necessary.
+
+ @@ boris: It doesn't seem we will need two separate and parallel hierarhies.
+
+* Undefined fwd decls: now that we have dropped support for platforms without
+ namespaces, the code generated for fwd declarations not defined in the same
+ translation unit can be much improved, most likely by the elimination of
+ generated flat-name global methods, and perhaps other improvements as well.
+
+* Strategized code generation: many places now have either lots of
+ duplication, or an explosion of branching in a single visitor. Adding code
+ generation for use cases incrementally may give us an opportunity to
+ refactor and strategize it better.
+
+* Node generator: this class does nothing more than call 'new' and pass
+ unchanged the arguments it gets to the appropriate constructor - it can be
+ eliminated.
+
+* Virtual methods: there are many member functions in the IDL compiler that
+ are needlessly virtual.
+
+* Misc. leveraging: redesign of mechanisms listed above can have an effect
+ on other mechanisms, such as the handling of pragma prefix, typeprefix, and
+ reopened modules.
diff --git a/modules/CIAO/CCF/Documentation/TODO b/modules/CIAO/CCF/Documentation/TODO
new file mode 100644
index 00000000000..879602513df
--- /dev/null
+++ b/modules/CIAO/CCF/Documentation/TODO
@@ -0,0 +1,98 @@
+Legend:
+
+@@ signifies a to-be-done item
+
+%% signifies a done item (should be cleaned-up periodically)
+
+@% signifies a partially-done item
+
+++ signifies difficulty of an item (the more pluses the more difficult)
+
+------------------------------------------------------------------------
+
+@@ In operation comma member function is used both for parameters and
+ exceptions. As a result one can get unexpected extra commas.
+
+@@ Make CCF buildable with MPC.
+
+@@ Write proper build instructions.
+
+@@ Can I use C++ templates instead of m4 in BuiltIn stuff?
+
+@@ Typedef.hpp TypeId.hpp: naming inconsistency.
+
+@@ Need ICE mechanism (search for abort ())
+
+@@ Need evolution of semantic action error handling/reporting.
+
+@@+ It's a good idea to include ostream instead of iostream where I only
+ use ostreams.
+
+@@+++ Currently character stream is scanned completely before parsing. The
+ better approach would be scanning on demand (1).
+
+@@+++ IDL2::Parsing::parse () should be eliminated (or terminated if you
+ like ;-). This item depends on (1).
+
+@@++ 'using namespace' cleanup.
+
+@@ Replace all i++ with ++i.
+
+@@ It seems that SyntaxTree::Node origin in terms of file:line should be
+ preserved for subsequent diagnostic implemented as separate paths
+ (see repository id generator for example).
+
+@@++++ Diagnostic evolution
+
+@%++ XML indentation buffer
+
+@@+++ Introduction (injection) of names into scope
+
+@@++++ C Preprocessor integration (wave)
+
+
+%% IDL feature: type id/prefix
+
+%% IDL feature: exception declaration
+
+%% IDL feature: built-in types
+
+%% IDL feature: struct
+
+%% IDL feature: enum
+
+%% IDL feature: factories/finders (completion) (left: finder)
+
+%% IDL feature: oprations (completion) (left: oneway)
+
+---
+
+@% IDL feature: literals and constant expression (3)
+
+@% IDL feature: constant declaration; depends on 3
+
+@% IDL feature: sequences; depends on 2,3 (left: bounded seq)
+
+@% IDL feature: attribute (completion) (left: exception spec)
+
+@% IDL feature: valuetype (4)
+
+@% IDL feature: event (completion); do after (4)
+
+@% IDL feature: literals (left FP, fixed)
+
+---
+
+%% Inherited name lookup
+
+%% Revisit LEM for interconnected rules.
+
+@@ Maybe do something with diagnostic
+
+---
+
+@@ IDL feature: array; depends on 2,3
+
+@@ IDL feature: union
+
+@@ IDL feature: fixed; depends on 2,3
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
new file mode 100644
index 00000000000..a933f2bd6bb
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
@@ -0,0 +1,1860 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ExecutorMappingGenerator.hpp"
+
+#include <set>
+#include <ostream>
+#include <fstream>
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+using std::string;
+using std::ostream;
+using std::endl;
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+namespace
+{
+ class Context
+ {
+ public:
+ Context (TranslationUnit& tu)
+ : tu_ (tu)
+ {
+ }
+
+ TranslationUnit&
+ tu () const
+ {
+ return tu_;
+ }
+
+ public:
+ bool
+ add (Home& h)
+ {
+ return homes_.insert (&h).second;
+ }
+
+ bool
+ add (Component& c)
+ {
+ return components_.insert (&c).second;
+ }
+
+ bool
+ add (UnconstrainedInterface& i)
+ {
+ return interfaces_.insert (&i).second;
+ }
+
+ bool
+ add (Composition& c)
+ {
+ return compositions_.insert (&c).second;
+ }
+
+ public:
+ bool
+ find (Home& h) const
+ {
+ return homes_.find (&h) != homes_.end ();
+ }
+
+ bool
+ find (Component& c) const
+ {
+ return components_.find (&c) != components_.end ();
+ }
+
+ bool
+ find (UnconstrainedInterface& i) const
+ {
+ return interfaces_.find (&i) != interfaces_.end ();
+ }
+
+ bool
+ find (Composition& c) const
+ {
+ return compositions_.find (&c) != compositions_.end ();
+ }
+
+ private:
+ typedef std::set<Home*> Homes;
+ typedef std::set<Component*> Components;
+ typedef std::set<UnconstrainedInterface*> Interfaces;
+ typedef std::set<Composition*> Compositions;
+
+ TranslationUnit& tu_;
+
+ Homes homes_;
+ Components components_;
+ Interfaces interfaces_;
+ Compositions compositions_;
+ };
+
+ class Traverser
+ {
+ protected:
+ Traverser (Context& c)
+ : ctx (c)
+ {
+ }
+
+ Context& ctx;
+ };
+
+ struct Collector : Traverser
+ {
+ protected:
+ Collector (Context& c)
+ : Traverser (c)
+ {
+ }
+
+ bool
+ exist (ScopedName const& name)
+ {
+ return !ctx.tu ().lookup (name).empty ();
+ }
+ };
+
+ //
+ //
+ //
+ struct ComponentCollector : Traversal::Component, Collector
+ {
+ ComponentCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SimpleName name (c.name ());
+ ScopedName scope (c.scoped_name ().scope_name ());
+
+ ScopedName monolith (scope, "CCM_" + name);
+ ScopedName context (scope, "CCM_" + name + "_Context");
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (context) || exist (monolith)) return;
+
+ if(ctx.add (c))
+ {
+ // Collect inherited components and provides interfaces.
+ //
+ Traversal::Component::traverse (c);
+ }
+ }
+ };
+
+
+ //
+ //
+ //
+ struct HomeCollector : Traversal::Home, Collector
+ {
+ HomeCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& h)
+ {
+ SimpleName name (h.name ());
+ ScopedName scope (h.scoped_name ().scope_name ());
+
+ ScopedName main (scope, "CCM_" + name);
+ ScopedName expl (scope, "CCM_" + name + "Explicit");
+ ScopedName impl (scope, "CCM_" + name + "Implicit");
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (main) || exist (expl) || exist (impl)) return;
+
+ if(ctx.add (h))
+ {
+ // Note that I don't go after components that inherited home manages
+ // because it will be handled by component inheritance tree.
+ //
+ Traversal::Home::traverse (h);
+ }
+ }
+ };
+
+
+ //
+ //
+ //
+ struct InterfaceCollector : Traversal::UnconstrainedInterface, Collector
+ {
+ InterfaceCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ SimpleName name (i.name ());
+ ScopedName scope (i.scoped_name ().scope_name ());
+
+ ScopedName mapping (scope, "CCM_" + name);
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (mapping)) return;
+
+ // Add to the list if it's not already there.
+ //
+ ctx.add (i);
+ }
+ };
+
+ struct CompositionCollector : Traversal::Composition, Collector
+ {
+ CompositionCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ // Add to the list if it's not already there.
+ //
+ if (ctx.add (c))
+ {
+ Traversal::Composition::traverse (c);
+ }
+ }
+ };
+
+ struct Emitter : Traverser
+ {
+ protected:
+ Emitter (Context& c, ostream& os_)
+ : Traverser (c), os (os_)
+ {
+ }
+
+ protected:
+ ostream& os;
+ };
+
+
+ //
+ //
+ //
+ struct TypeNameEmitter : Traversal::FundamentalType,
+ Traversal::Type,
+ Emitter
+ {
+ TypeNameEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::FundamentalType& t)
+ {
+ os << t.name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ os << t.scoped_name ();
+ }
+ };
+
+
+ struct NameMangler : Traversal::Nameable, Emitter
+ {
+ NameMangler (Context& c,
+ ostream& os,
+ string const& prefix,
+ string const& suffix = "")
+ : Emitter (c, os), prefix_ (prefix), suffix_ (suffix)
+ {
+ }
+
+ virtual void
+ traverse (Type& t)
+ {
+ ScopedName n (t.scoped_name ());
+ os << n.scope_name () << "::" << prefix_ << n.simple_name () << suffix_;
+ }
+
+ private:
+ string prefix_, suffix_;
+ };
+
+
+ //
+ //
+ //
+ struct ComponentEmitter : Traversal::Component, Emitter
+ {
+ protected:
+ ComponentEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (ctx.find (c))
+ {
+ Component::traverse (c);
+ }
+ }
+ };
+
+ struct AttributeEmitter : Traversal::ReadAttribute,
+ Traversal::ReadWriteAttribute,
+ Emitter
+ {
+ AttributeEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ // ReadAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadAttribute& )
+ {
+ os << "readonly attribute ";
+ }
+
+ virtual void
+ name (SemanticGraph::ReadAttribute& a)
+ {
+ os << " " << a.name ();
+ }
+
+ virtual void
+ post (SemanticGraph::ReadAttribute&)
+ {
+ os << ";";
+ }
+
+ // ReadWriteAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& )
+ {
+ os << "attribute ";
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << " " << a.name ();
+ }
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << ";";
+ }
+ };
+
+
+ // MonolithEmitter generates what spec calls 'Monolithic Component
+ // Executor'.
+ //
+ struct MonolithEmitter : ComponentEmitter
+ {
+ MonolithEmitter (Context& c, ostream& os)
+ : ComponentEmitter (c, os),
+ monolith_name_emitter (c, os, "CCM_"),
+ attribute (c, os),
+ consumer (c, os),
+ provider (c, os),
+ type_name_emitter (c, os)
+ {
+ edge_traverser (inherits);
+ edge_traverser (defines);
+
+ inherits.node_traverser (monolith_name_emitter);
+
+ defines.node_traverser (attribute);
+ defines.node_traverser (consumer);
+ defines.node_traverser (provider);
+
+ attribute.edge_traverser (belongs);
+ consumer.edge_traverser (belongs);
+ provider.edge_traverser (provider_belongs);
+
+ belongs.node_traverser (type_name_emitter);
+ provider_belongs.node_traverser (monolith_name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << "CCM_" << c.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ os << " : ::Components::EnterpriseComponent";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ os << ", ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << ", ";
+ }
+
+ private:
+ struct Consumer : Traversal::ConsumerSet, Emitter
+ {
+ Consumer (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ returns (Type&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << " push_" << c.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct Provider : Traversal::ProviderGet, Emitter
+ {
+ Provider (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << " get_" << c.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+ Traversal::Inherits inherits;
+ Traversal::Defines defines;
+
+ NameMangler monolith_name_emitter;
+
+ AttributeEmitter attribute;
+ Consumer consumer;
+ Provider provider;
+
+ Traversal::Belongs belongs;
+ Traversal::Belongs provider_belongs;
+
+ TypeNameEmitter type_name_emitter;
+ };
+
+
+ // ContextEmitter generates component context interface.
+ //
+ //
+ struct ContextPortEmitter : Traversal::UserGet,
+ Traversal::PublisherSet,
+ Traversal::EmitterSet,
+ Emitter
+ {
+ ContextPortEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+
+ // User.
+ //
+ virtual void
+ name (SemanticGraph::User& u)
+ {
+ os << " get_connection_" << u.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::User&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::User&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::User&)
+ {
+ os << ";";
+ }
+
+
+ // Publisher.
+ //
+ virtual void
+ returns (SemanticGraph::Publisher&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (SemanticGraph::Publisher& p)
+ {
+ os << " push_" << p.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Publisher&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Publisher&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (SemanticGraph::Publisher&)
+ {
+ os << ";";
+ }
+
+
+ // Emitter.
+ //
+ virtual void
+ returns (SemanticGraph::Emitter&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (SemanticGraph::Emitter& e)
+ {
+ os << " push_" << e.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Emitter&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Emitter&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (SemanticGraph::Emitter&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct ContextEmitter : ComponentEmitter
+ {
+ ContextEmitter (Context& c, ostream& os)
+ : ComponentEmitter (c, os), name_emitter (c, os, "CCM_", "_Context")
+ {
+ edge_traverser (inherits);
+ inherits.node_traverser (name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << "CCM_" << c.name () << "_Context";
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ os << " : ::Components::CCMContext";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ private:
+ Traversal::Inherits inherits;
+ NameMangler name_emitter;
+ };
+
+
+ //
+ //
+ //
+ struct HomeEmitter : Traversal::Home, Emitter
+ {
+ HomeEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& h)
+ {
+ if (ctx.find (h))
+ {
+ Home::traverse (h);
+ }
+ }
+ };
+
+
+ // HomeExplicitEmitter generates home explicit interface
+ //
+ //
+ struct ExplicitPortEmitter : AttributeEmitter,
+ Traversal::Operation,
+ Traversal::HomeFactory,
+ Traversal::HomeFinder
+ {
+ ExplicitPortEmitter (Context& c, ostream& os)
+ : AttributeEmitter (c, os)
+ {
+ }
+
+ // Operation.
+ //
+
+ virtual void
+ name (SemanticGraph::Operation& o)
+ {
+ os << " " << o.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Operation&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Operation&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::Operation&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::Operation&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::Operation&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::Operation&)
+ {
+ os << ", ";
+ }
+
+
+ // HomeFactory.
+ //
+
+ virtual void
+ returns (SemanticGraph::HomeFactory&)
+ {
+ os << "::Components::EnterpriseComponent ";
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFactory& hf)
+ {
+ os << " " << hf.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFactory&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFactory&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFactory&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFactory&)
+ {
+ os << ", ";
+ }
+
+ // HomeFinder.
+ //
+
+ virtual void
+ returns (SemanticGraph::HomeFinder&)
+ {
+ os << "::Components::EnterpriseComponent ";
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFinder& hf)
+ {
+ os << " " << hf.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFinder&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFinder&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFinder&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFinder&)
+ {
+ os << ", ";
+ }
+ };
+
+ struct ParameterEmitter : Traversal::InParameter,
+ Traversal::OutParameter,
+ Traversal::InOutParameter,
+ public Emitter
+ {
+ ParameterEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (InParameter& p)
+ {
+ os << "in ";
+ }
+
+ virtual void
+ pre (OutParameter& p)
+ {
+ os << "out ";
+ }
+
+ virtual void
+ pre (InOutParameter& p)
+ {
+ os << "inout ";
+ }
+
+ virtual void
+ name (InParameter& p)
+ {
+ os << " " << p.name ();
+ }
+
+ virtual void
+ name (OutParameter& p)
+ {
+ os << " " << p.name ();
+ }
+
+ virtual void
+ name (InOutParameter& p)
+ {
+ os << " " << p.name ();
+ }
+ };
+
+ struct HomeExplicitEmitter : HomeEmitter
+ {
+ HomeExplicitEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os), name_emitter (c, os, "CCM_", "Explicit")
+ {
+ edge_traverser (inherits);
+ inherits.node_traverser (name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name () << "Explicit";
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ os << " : ::Components::HomeExecutorBase";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ os << ", ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << ", ";
+ }
+
+ private:
+ Traversal::Inherits inherits;
+ NameMangler name_emitter;
+ };
+
+
+ // HomeImplicitEmitter generates home implicit interface
+ //
+ //
+ struct HomeImplicitEmitter : HomeEmitter
+ {
+ HomeImplicitEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name () << "Implicit";
+ }
+
+ virtual void
+ names (Type& h)
+ {
+ os<< "{"
+ << "::Components::EnterpriseComponent "
+ << "create () raises (::Components::CCMException);"
+ << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ // HomeMainEmitter generates home main interface
+ //
+ //
+ struct HomeMainEmitter : HomeEmitter
+ {
+ HomeMainEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name ();
+ }
+
+ virtual void
+ inherits (Type& h)
+ {
+ os << " : "
+ << "CCM_" << h.name () << "Explicit, "
+ << "CCM_" << h.name () << "Implicit";
+ }
+
+ virtual void
+ names (Type&)
+ {
+ os << "{}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+ //
+ //
+ //
+ struct ModuleEmitter : Traversal::Module, Emitter
+ {
+ ModuleEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (has_elements (m))
+ {
+ Traversal::Module::traverse (m);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "module ";
+ }
+
+ virtual void
+ name (Type& m)
+ {
+ os << m.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ private:
+
+ template <typename T>
+ struct Finder : T, Traverser
+ {
+ Finder (Context& c, bool& r)
+ : Traverser (c), r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (typename T::Type& t)
+ {
+ if (ctx.find (t)) r_ = true;
+ }
+
+ private:
+ bool& r_;
+ };
+
+ bool
+ has_elements (Type& m)
+ {
+ bool r (false);
+
+ Traversal::Module module;
+ Traversal::Defines defines;
+
+ module.edge_traverser (defines);
+
+ //@@ MSVC bug: interface is considered to be an alias for a struct.
+ //
+ Finder<Traversal::Composition> composition (ctx, r);
+ Finder<Traversal::UnconstrainedInterface> interface_ (ctx, r);
+ Finder<Traversal::Component> component (ctx, r);
+ Finder<Traversal::Home> home (ctx, r);
+
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+ defines.node_traverser (interface_);
+ defines.node_traverser (component);
+ defines.node_traverser (home);
+
+ module.traverse (m);
+
+ return r;
+ }
+ };
+
+ //
+ //
+ //
+ struct InterfaceEmitter : Traversal::UnconstrainedInterface, Emitter
+ {
+ InterfaceEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ if (ctx.find (i))
+ {
+ Traversal::UnconstrainedInterface::traverse (i);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << "CCM_" << i.name ();
+ }
+
+ virtual void
+ inherits (Type& i)
+ {
+ os << " : " << i.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ //
+ //
+ //
+ struct CompositionEmitter : Traversal::Composition, Emitter
+ {
+ CompositionEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (ctx.find (c))
+ {
+ Traversal::Composition::traverse (c);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "module ";
+ }
+
+ virtual void
+ name (Type& m)
+ {
+ os << m.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct ComponentContextEmitter : Traversal::ComponentExecutor, Emitter
+ {
+ ComponentContextEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_", "_Context")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ //@@ need to check if spec prescribes this name.
+ //
+ os << i.name () << "_Context";
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ os << " : ";
+
+ Traversal::ComponentExecutor::implements (i, implements_traverser_);
+
+ os << ", "
+ << "::Components::SessionContext";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+
+ struct ComponentExecutorEmitter : Traversal::ComponentExecutor, Emitter
+ {
+ ComponentExecutorEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << i.name ();
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ os << " : ";
+
+ Traversal::ComponentExecutor::implements (i, implements_traverser_);
+
+ os << ", "
+ << "::Components::SessionComponent";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+
+ struct HomeExecutorEmitter : Traversal::HomeExecutor, Emitter
+ {
+ HomeExecutorEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << i.name ();
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ os << " : ";
+
+ Traversal::HomeExecutor::implements (i, implements_traverser_);
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+ //
+ //
+ //
+ struct IncludesEmitter : Traversal::QuoteIncludes,
+ Traversal::BracketIncludes,
+ Emitter
+ {
+ IncludesEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::QuoteIncludes& qi)
+ {
+ os << "#include \"" << qi.file ().string () << "\"" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::BracketIncludes& bi)
+ {
+ os << "#include <" << bi.file ().string () << ">" << endl;
+ }
+ };
+}
+
+void ExecutorMappingGenerator::
+options (CL::Description& d)
+{
+ d.add_option (CL::OptionDescription (
+ "lem-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'E\' "
+ "when constructing name of local executor mapping file.",
+ true));
+
+ d.add_option (CL::OptionDescription (
+ "lem-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of local executor mapping file.",
+ true));
+
+ d.add_option (CL::OptionDescription (
+ "lem-force-all",
+ "Force generation of local executor mapping for all IDL "
+ "types including those not used (directly or inderectly) "
+ "by compositions. This option is useful for generating a "
+ "common portion of local executor mapping used by more "
+ "than one component or composition.",
+ true));
+}
+
+
+void ExecutorMappingGenerator::
+generate (CommandLine const& cl,
+ TranslationUnit& tu,
+ fs::path const& file_path)
+{
+ fs::ofstream ofs;
+
+ if (!file_path.empty ())
+ {
+ string file_name (file_path.leaf ());
+
+ string suffix (cl.get_value ("lem-file-suffix", "E.idl"));
+
+ string expr (cl.get_value (
+ "lem-file-regex", "/^(.+?)(\\.(idl|cidl))?$/$1" + suffix + "/"));
+
+ string lem_file_name (regex::perl_s (file_name, expr));
+
+ fs::path lem_file_path (lem_file_name);
+
+ ofs.open (lem_file_path, std::ios_base::out);
+
+ if (!ofs.is_open ())
+ {
+ cerr << lem_file_name << ": error: unable to open in write mode"
+ << endl;
+ return;
+ }
+ }
+
+ ostream& os = ofs.is_open ()
+ ? static_cast<ostream&> (ofs)
+ : static_cast<ostream&> (std::cout);
+
+ // Set auto-indentation for os.
+ //
+ Indentation::Implanter<Indentation::IDL> guard (os);
+
+ Context ctx (tu);
+
+ if (cl.get_value ("lem-force-all", false))
+ {
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+
+ contains_principal.node_traverser (region);
+
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ HomeCollector home (ctx);
+ ComponentCollector component (ctx);
+ InterfaceCollector interface_ (ctx);
+
+ defines.node_traverser (module);
+ defines.node_traverser (home);
+ defines.node_traverser (component);
+ defines.node_traverser (interface_);
+
+ // Layer 4
+ //
+ Traversal::Defines component_defines;
+ Traversal::Inherits component_inherits;
+ Traversal::Inherits home_inherits;
+
+ module.edge_traverser (defines);
+
+ home.edge_traverser (home_inherits);
+ component.edge_traverser (component_defines);
+ component.edge_traverser (component_inherits);
+
+ //--
+
+ Traversal::Provider provider;
+
+ component_defines.node_traverser (provider);
+ component_inherits.node_traverser (component);
+ home_inherits.node_traverser (home);
+
+
+ // Layer 5
+ //
+ Traversal::Belongs provider_belongs;
+ provider.edge_traverser (provider_belongs);
+
+ //
+ provider_belongs.node_traverser (interface_);
+
+ // end
+
+ unit.traverse (tu);
+ }
+ else
+ {
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+
+ contains_principal.node_traverser (region);
+
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (contains_root);
+ region.edge_traverser (includes);
+
+ //--
+ Traversal::Root root;
+
+ contains_root.node_traverser (root);
+ includes.node_traverser (region);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ CompositionCollector composition (ctx);
+
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+
+ module.edge_traverser (defines);
+ composition.edge_traverser (composition_defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements component_executor_implements;
+ Traversal::Implements home_executor_implements;
+
+ component_executor.edge_traverser (component_executor_implements);
+ home_executor.edge_traverser (home_executor_implements);
+
+ //--
+ ComponentCollector component (ctx);
+ HomeCollector home (ctx);
+
+ component_executor_implements.node_traverser (component);
+ home_executor_implements.node_traverser (home);
+
+
+ // Layer 6
+ //
+ Traversal::Defines component_defines;
+ Traversal::Inherits component_inherits;
+ Traversal::Inherits home_inherits;
+
+ component.edge_traverser (component_defines);
+ component.edge_traverser (component_inherits);
+ home.edge_traverser (home_inherits);
+
+ //--
+
+ Traversal::Provider provider;
+
+ component_defines.node_traverser (provider);
+ component_inherits.node_traverser (component);
+ home_inherits.node_traverser (home);
+
+
+ // Layer 7
+ //
+ Traversal::Belongs provider_belongs;
+ provider.edge_traverser (provider_belongs);
+
+ //
+ InterfaceCollector interface_ (ctx);
+
+ provider_belongs.node_traverser (interface_);
+
+
+ // end
+
+ unit.traverse (tu);
+ }
+
+ {
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion principal_region;
+
+ contains_principal.node_traverser (principal_region);
+
+
+ // Layer 2
+ //
+ Traversal::TranslationRegion included_region;
+
+ // Inclusion handling is somewhat tricky because we want
+ // to print only top-level #include's.
+ //
+
+ Traversal::ContainsRoot contains_root;
+ Traversal::QuoteIncludes quote_includes;
+ Traversal::BracketIncludes bracket_includes;
+ IncludesEmitter includes_emitter (ctx, os);
+
+
+ principal_region.edge_traverser (includes_emitter);
+ principal_region.edge_traverser (quote_includes);
+ principal_region.edge_traverser (bracket_includes);
+ principal_region.edge_traverser (contains_root);
+
+ included_region.edge_traverser (quote_includes);
+ included_region.edge_traverser (bracket_includes);
+ included_region.edge_traverser (contains_root);
+
+
+ //--
+ Traversal::Root root;
+
+ contains_root.node_traverser (root);
+ quote_includes.node_traverser (included_region);
+ bracket_includes.node_traverser (included_region);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ ModuleEmitter module (ctx, os);
+
+ CompositionEmitter composition (ctx, os);
+
+ InterfaceEmitter interface_ (ctx, os);
+
+ MonolithEmitter component_monolith (ctx, os);
+ ContextEmitter component_context (ctx, os);
+
+ HomeImplicitEmitter home_implicit (ctx, os);
+ HomeExplicitEmitter home_explicit (ctx, os);
+ HomeMainEmitter home_main (ctx, os);
+
+ defines.node_traverser (module);
+
+ defines.node_traverser (composition);
+
+ defines.node_traverser (interface_);
+
+ defines.node_traverser (component_monolith);
+ defines.node_traverser (component_context);
+
+ defines.node_traverser (home_implicit);
+ defines.node_traverser (home_explicit);
+ defines.node_traverser (home_main);
+
+ // Layer 4
+ //
+
+ Traversal::Supports supports;
+
+ Traversal::Defines composition_defines;
+
+ Traversal::Defines component_context_defines;
+
+ Traversal::Defines home_explicit_defines;
+
+ module.edge_traverser (defines);
+
+ composition.edge_traverser (composition_defines);
+
+ component_monolith.edge_traverser (supports);
+ component_context.edge_traverser (component_context_defines);
+
+ home_explicit.edge_traverser (supports);
+ home_explicit.edge_traverser (home_explicit_defines);
+
+ //--
+ TypeNameEmitter type (ctx, os);
+
+ ComponentContextEmitter session_component_context (ctx, os);
+ ComponentExecutorEmitter session_component_executor (ctx, os);
+ HomeExecutorEmitter session_home_executor (ctx, os);
+
+ ContextPortEmitter port_context (ctx, os);
+ ExplicitPortEmitter port_explicit (ctx, os);
+
+ supports.node_traverser (type);
+
+ composition_defines.node_traverser (session_component_context);
+ composition_defines.node_traverser (session_component_executor);
+ composition_defines.node_traverser (session_home_executor);
+
+ component_context_defines.node_traverser (port_context);
+
+ home_explicit_defines.node_traverser (port_explicit);
+
+
+ // Layer 5
+ //
+ Traversal::Belongs belongs;
+ Traversal::Receives receives;
+ Traversal::Raises raises;
+
+ port_context.edge_traverser (belongs);
+ port_explicit.edge_traverser (belongs);
+ port_explicit.edge_traverser (raises);
+
+ port_explicit.edge_traverser (receives);
+
+ //--
+ ParameterEmitter parameter (ctx, os);
+
+ belongs.node_traverser (type);
+ receives.node_traverser (parameter);
+ raises.node_traverser (type);
+
+ // Layer 6
+ //
+ parameter.edge_traverser (belongs);
+
+
+ // end
+
+ unit.traverse (tu);
+ }
+}
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp
new file mode 100644
index 00000000000..c76f56e84b9
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp
@@ -0,0 +1,34 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXECUTOR_MAPPING_GENERATOR_HPP
+#define EXECUTOR_MAPPING_GENERATOR_HPP
+
+#include "CCF/CompilerElements/FileSystem.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+//@@ SemanticGraphFwd could be useful here.
+//
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+class ExecutorMappingGenerator
+{
+public:
+
+ //@@ should be static?
+ void
+ options (CL::Description& d);
+
+ //@@ maybe I should introduce constant and non-constant
+ // traversal.
+ //
+ void
+ generate (CommandLine const& cl,
+ CCF::CIDL::SemanticGraph::TranslationUnit&,
+ fs::path const& file);
+};
+
+#endif // EXECUTOR_MAPPING_GENERATOR_HPP
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
new file mode 100644
index 00000000000..633697c0641
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
@@ -0,0 +1,228 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <vector>
+#include <iostream>
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineParser.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+#include "CCF/CIDL/LexicalAnalyzer.hpp"
+#include "CCF/CIDL/Parser.hpp"
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/Factory.hpp"
+
+#include "ExecutorMappingGenerator.hpp"
+
+using std::cerr;
+using std::endl;
+
+using namespace CCF::CompilerElements;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Parsing command line options and arguments
+ //
+ //
+ CommandLine cl;
+
+ if (!parse (argc, argv, cl))
+ {
+ cerr << "command line syntax error" << endl;
+ cerr << "try " << argv[0] << " --help for usage information" << endl;
+ return -1;
+ }
+
+ ExecutorMappingGenerator lem_gen;
+
+ if (cl.get_value ("help", false) || cl.get_value ("help-html", false))
+ {
+ CL::Description d (argv[0]);
+
+ lem_gen.options (d);
+
+ d.add_option (CL::OptionDescription (
+ "trace-semantic-actions",
+ "Turn on semnatic actions tracing facility.",
+ true));
+
+ d.add_option (CL::OptionDescription (
+ "preprocess-only",
+ "Run preprocessor only and output result to stdout.",
+ true));
+
+ d.add_option (CL::OptionDescription (
+ "help",
+ "Display usage information and exit.",
+ true));
+
+ d.add_option (CL::OptionDescription (
+ "help-html",
+ "Dump usage information in html format and exit.",
+ true));
+
+ d.add_argument ("cidl file");
+
+ if (cl.get_value ("help-html", false)) CL::print_html (cerr, d);
+ else CL::print_text (cerr, d);
+
+ return 0;
+ }
+
+ fs::ifstream ifs;
+ ifs.exceptions (ios_base::badbit | ios_base::failbit);
+
+ fs::path file_path;
+
+ CommandLine::ArgumentsIterator i = cl.arguments_begin ();
+
+ if (i != cl.arguments_end ())
+ {
+ try
+ {
+ file_path = fs::path (*i, fs::native);
+ ifs.open (file_path, std::ios_base::in);
+ }
+ catch (fs::filesystem_error const&)
+ {
+ cerr << *i << ": error: unable to open in read mode" << endl;
+ return -1;
+ }
+ catch (std::ios_base::failure const&)
+ {
+ cerr << *i << ": error: unable to open in read mode" << endl;
+ return -1;
+ }
+ }
+
+ //@@ for some reason ifs throws exception if I don't reset it to
+ // original state. It probably has something to do with call to
+ // get after eof.
+ ifs.exceptions (ios_base::iostate (0));
+
+ std::istream& is = ifs.is_open ()
+ ? static_cast<std::istream&> (ifs)
+ : static_cast<std::istream&> (std::cin);
+
+ InputStreamAdapter isa (is);
+ CPP::Preprocessor pp (isa);
+
+ if (cl.get_value ("preprocess-only", false))
+ {
+ while (true)
+ {
+ CPP::Token t (pp.next ());
+
+ if (t == CPP::Token::eos) break;
+
+ std::cout << t;
+ }
+ return 0;
+ }
+
+ //}
+
+ Diagnostic::Stream dout;
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ //cerr << token << endl;
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu;
+
+ // Initialize compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action",
+ cl.get_value ("trace-semantic-actions", false));
+
+
+ // Extract include search paths.
+ //
+
+ std::vector<fs::path> include_paths;
+
+ for (CommandLine::OptionsIterator
+ i (cl.options_begin ()), e (cl.options_end ()); i != e; ++i)
+ {
+ if (i->name () == "I")
+ {
+ include_paths.push_back (fs::path (i->value (), fs::native));
+ }
+ else if (i->name ()[0] == 'I')
+ {
+ std::string opt (i->name ());
+ std::string path (opt.begin () + 1, opt.end ());
+ include_paths.push_back (fs::path (path, fs::native));
+ }
+ }
+
+ context.set ("include-search-paths", include_paths);
+
+ // Instantiate semantic actions factory.
+ //
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ //@@ should be able to use CIDL here. Or better yet get rid of this
+ // function completely.
+ //
+ CCF::IDL2::Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return -1;
+
+
+ // Generate executor mapping.
+ //
+ lem_gen.generate (cl, tu, file_path);
+
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ catch (std::exception const& e)
+ {
+ cerr << "caught standard exception " << e.what () << endl;
+ }
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ return -1;
+ }
+}
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
new file mode 100644
index 00000000000..3c50f4acdd2
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
@@ -0,0 +1,21 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/test-0.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+module Empty
+{
+ interface I
+ {
+ };
+};
+
+module M
+{
+ interface I {};
+
+ typedef I Internal;
+
+ //local interface CCM_I : I {};
+};
+
+eventtype E {};
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig
new file mode 100644
index 00000000000..2fd8758f67e
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig
@@ -0,0 +1,6 @@
+module M
+{
+ local interface CCM_I : I
+ {
+ };
+};
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1.idl b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1.idl
new file mode 100644
index 00000000000..0a437cb0320
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1.idl
@@ -0,0 +1,23 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/test-1.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <Components.idl>
+#include "test-0.idl"
+
+module M1
+{
+ interface Blah;
+ interface Fool {};
+
+ component C1
+ {
+ provides M::I i;
+ readonly attribute long l;
+ };
+
+ home H1 manages C1
+ {
+ attribute M::I i;
+ };
+};
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig
new file mode 100644
index 00000000000..e0a244db6eb
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig
@@ -0,0 +1,33 @@
+#include <Components.idl>
+#include "test-0.idl"
+module M
+{
+ local interface CCM_I : I
+ {
+ };
+};
+module M1
+{
+ local interface CCM_Fool : Fool
+ {
+ };
+ local interface CCM_C1 : ::Components::EnterpriseComponent
+ {
+ ::M::CCM_I get_i ();
+ readonly attribute long l;
+ };
+ local interface CCM_C1_Context : ::Components::SessionContext
+ {
+ };
+ local interface CCM_H1Implicit
+ {
+ ::Components::EnterpriseComponent create () raises (::Components::CCMException);
+ };
+ local interface CCM_H1Explicit : ::Components::HomeExecutorBase
+ {
+ attribute ::M::I i;
+ };
+ local interface CCM_H1 : CCM_H1Explicit, CCM_H1Implicit
+ {
+ };
+};
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl
new file mode 100644
index 00000000000..34e635a9b43
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl
@@ -0,0 +1,18 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/test-2.cidl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "test-2.idl"
+
+module M3
+{
+ composition session Impl
+ {
+ home executor HImpl
+ {
+ implements M2::H2;
+ manages CImpl;
+ };
+ };
+};
+
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.idl b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.idl
new file mode 100644
index 00000000000..51bf3d88a4b
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2.idl
@@ -0,0 +1,74 @@
+// file : CCF/Example/CIDL/LocalExecutorMapping/test-2.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "test-1.idl"
+
+interface Goof {};
+
+module M2
+{
+
+ interface I {};
+ interface J {};
+
+ eventtype E supports I, J
+ {
+ factory new (in string name);
+ public string name;
+ };
+
+ valuetype V
+ {
+ public long l;
+ };
+
+ component C2 : M1::C1 supports I, J
+ {
+ provides Goof pg;
+ uses Goof ug;
+
+ publishes E pe;
+ emits E me;
+ consumes E ce;
+ };
+
+ typedef sequence<octet> OctetSeq;
+
+ struct S
+ {
+ long l;
+ OctetSeq octet_seq;
+ };
+
+ typedef sequence<S> S_Seq;
+
+ exception Ex1
+ {
+ string descr;
+ };
+
+ exception Ex2
+ {
+ };
+
+ home H2 : M1::H1 supports I, J manages C2
+ {
+ readonly attribute long rl;
+ readonly attribute M::I rai;
+ attribute OctetSeq seq;
+ attribute S_Seq a_s_seq;
+
+ void
+ foo (in long l,
+ inout boolean b,
+ out long ol,
+ in M::I i,
+ out unsigned long long ull,
+ inout S_Seq s_seq,
+ in V v) raises (Ex1, Ex2);
+
+ factory new (in long l, in OctetSeq s) raises (Ex2, Ex1);
+ finder find (in long l, in OctetSeq s) raises (Ex1, Ex2);
+ };
+};
diff --git a/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig
new file mode 100644
index 00000000000..3719ecd82d2
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig
@@ -0,0 +1,72 @@
+#include "test-2.idl"
+module M
+{
+ local interface CCM_I : I
+ {
+ };
+};
+module M1
+{
+ local interface CCM_C1 : ::Components::EnterpriseComponent
+ {
+ ::M::CCM_I get_i ();
+ readonly attribute long l;
+ };
+ local interface CCM_C1_Context : ::Components::SessionContext
+ {
+ };
+ local interface CCM_H1Implicit
+ {
+ ::Components::EnterpriseComponent create () raises (::Components::CCMException);
+ };
+ local interface CCM_H1Explicit : ::Components::HomeExecutorBase
+ {
+ attribute ::M::I i;
+ };
+ local interface CCM_H1 : CCM_H1Explicit, CCM_H1Implicit
+ {
+ };
+};
+local interface CCM_Goof : Goof
+{
+};
+module M2
+{
+ local interface CCM_C2 : ::M1::CCM_C1, ::M2::I, ::M2::J
+ {
+ ::CCM_Goof get_pg ();
+ void push_ce (in ::M2::E e);
+ };
+ local interface CCM_C2_Context : ::M1::CCM_C1_Context
+ {
+ ::Goof get_connection_ug ();
+ void push_pe (in ::M2::E e);
+ void push_me (in ::M2::E e);
+ };
+ local interface CCM_H2Implicit
+ {
+ ::Components::EnterpriseComponent create () raises (::Components::CCMException);
+ };
+ local interface CCM_H2Explicit : ::M1::CCM_H1Explicit, ::M2::I, ::M2::J
+ {
+ readonly attribute long rl;
+ readonly attribute ::M::I rai;
+ attribute ::M2::OctetSeq seq;
+ attribute ::M2::S_Seq a_s_seq;
+ void foo (in long l, inout boolean b, out long ol, in ::M::I i, out unsigned long long ull, inout ::M2::S_Seq s_seq, in ::M2::V v) raises (::M2::Ex1, ::M2::Ex2);
+ ::Components::EnterpriseComponent new (in long l, in ::M2::OctetSeq s) raises (::M2::Ex2, ::M2::Ex1);
+ ::Components::EnterpriseComponent find (in long l, in ::M2::OctetSeq s) raises (::M2::Ex1, ::M2::Ex2);
+ };
+ local interface CCM_H2 : CCM_H2Explicit, CCM_H2Implicit
+ {
+ };
+};
+module M3
+{
+ module Impl
+ {
+ local interface CImplContext
+ {
+ };
+ };
+};
diff --git a/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp b/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp
new file mode 100644
index 00000000000..ce0c5eb103c
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp
@@ -0,0 +1,25 @@
+// file : CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+int
+main ()
+{
+ Indentation::Implanter<Indentation::IDL> guard (cout);
+
+ cout << "const string s = \"Hello \\\"world;\";";
+ cout << "const char c1 = \'\\\'\';";
+ cout << "const char c2 = \';\';";
+
+ cout << "interface I {"
+ << "void foo ();"
+ << "};";
+}
diff --git a/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp b/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp
new file mode 100644
index 00000000000..f244249c69b
--- /dev/null
+++ b/modules/CIAO/CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp
@@ -0,0 +1,32 @@
+// file : CCF/Example/CodeGenerationKit/Indentation/IDL/indent_idl.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CodeGenerationKit/IndentationXML.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+int
+main ()
+{
+ Indentation::Implanter<Indentation::XML> guard (cout);
+
+ cout << "<?xml version=\"1.0\"?>" << endl;
+ cout << "<!DOCTYPE corbacomponent SYSYEM \"corbacomponent.dtd\">" << endl << endl;
+
+ cout << "<atag>whatever</atag>" << endl;
+
+ cout << "<open>" << endl;
+ cout << "<openother>" << endl;
+ cout << "<openother \nlabel=\"<<<<<<<<<>><>\">" << endl;
+ cout << "text" << endl;
+ cout << "<taginitself/>" << endl;
+ cout << "</openother>" << endl;
+ cout << "</openother>" << endl;
+ cout << "</open>" << endl;
+
+}
diff --git a/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp
new file mode 100644
index 00000000000..0a7a3ae6bf2
--- /dev/null
+++ b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp
@@ -0,0 +1,113 @@
+// file : CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "SyntaxTree.hpp"
+
+using namespace Introspection;
+
+namespace CDD
+{
+ namespace SyntaxTree
+ {
+ // Node
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ node_init_ ()
+ {
+ TypeInfo ti (typeid (Node));
+ // I don't really need this information
+ // ti.add_base (Access::PUBLIC, true, Object::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo node_ (node_init_ ());
+ }
+
+ TypeInfo const& Node::
+ static_type_info () { return node_; }
+
+
+ // PortInstance
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ port_instance_init_ ()
+ {
+ TypeInfo ti (typeid (PortInstance));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo port_instance_ (port_instance_init_ ());
+ }
+
+ TypeInfo const& PortInstance::
+ static_type_info () { return port_instance_; }
+
+
+ // ComponentInstance
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ component_instance_init_ ()
+ {
+ TypeInfo ti (typeid (ComponentInstance));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo component_instance_ (component_instance_init_ ());
+ }
+
+ TypeInfo const& ComponentInstance::
+ static_type_info () { return component_instance_; }
+
+
+ // Connection
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ connection_init_ ()
+ {
+ TypeInfo ti (typeid (Connection));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo connection_ (connection_init_ ());
+ }
+
+ TypeInfo const& Connection::
+ static_type_info () { return connection_; }
+
+
+ // Descriptor
+ //
+ //
+ namespace
+ {
+ TypeInfo
+ descriptor_init_ ()
+ {
+ TypeInfo ti (typeid (Descriptor));
+ ti.add_base (Access::PUBLIC, true, Node::static_type_info ());
+ return ti;
+ }
+
+ TypeInfo descriptor_ (descriptor_init_ ());
+ }
+
+ TypeInfo const& Descriptor::
+ static_type_info () { return descriptor_; }
+ }
+}
diff --git a/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp
new file mode 100644
index 00000000000..3739826b27d
--- /dev/null
+++ b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp
@@ -0,0 +1,286 @@
+// file : CCF/Example/ComponentDeploymentDescriptor/SyntaxTree.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CDD_SYNTAX_TREE_HPP
+#define CDD_SYNTAX_TREE_HPP
+
+#include <set>
+#include <vector>
+#include <string>
+
+
+#include "CCF/CompilerElements/ReferenceCounting.hpp"
+#include "CCF/CompilerElements/Introspection.hpp"
+
+namespace CDD
+{
+ namespace SyntaxTree
+ {
+ using ReferenceCounting::StrictPtr;
+
+ //
+ //
+ //
+ class Node;
+
+ typedef
+ StrictPtr<Node>
+ NodePtr;
+
+ class Node : public virtual Introspection::Object,
+ public virtual ReferenceCounting::DefaultImpl <>
+ {
+ protected:
+ virtual
+ ~Node () throw () {}
+
+ Node ()
+ {
+ type_info (static_type_info ());
+ }
+
+ public:
+ template <typename Type>
+ StrictPtr<Type>
+ dynamic_type ()
+ {
+ NodePtr self (ReferenceCounting::add_ref (this));
+ return ReferenceCounting::strict_cast<Type>(self);
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+ };
+
+ typedef
+ std::vector<NodePtr>
+ NodeList;
+
+
+ //
+ //
+ //
+ class PortInstance : public virtual Node
+ {
+ public:
+
+ virtual
+ ~PortInstance () throw () {}
+
+ PortInstance (std::string name)
+ : name_ (name)
+ {
+ type_info (static_type_info ());
+ }
+
+ public:
+ std::string
+ name () const
+ {
+ return name_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ private:
+ std::string name_;
+ };
+
+ typedef
+ StrictPtr<PortInstance>
+ PortInstancePtr;
+
+ template <typename T>
+ struct NameComparator
+ {
+ bool
+ operator () (T const& x, T const& y) const
+ {
+ return x->name () < y->name ();
+ }
+ };
+
+ typedef
+ std::set<PortInstancePtr, NameComparator<PortInstancePtr> >
+ PortInstanceSet;
+
+
+ //
+ //
+ //
+ class ComponentInstance : public virtual Node
+ {
+ public:
+ typedef
+ PortInstanceSet::const_iterator
+ Iterator;
+
+ public:
+
+ virtual
+ ~ComponentInstance () throw () {}
+
+ ComponentInstance (std::string name,
+ std::string type)
+ : name_ (name),
+ type_ (type)
+ {
+ type_info (static_type_info ());
+ }
+
+ public:
+
+ std::string
+ name () const
+ {
+ return name_;
+ }
+
+ std::string
+ type () const
+ {
+ return type_;
+ }
+
+ public:
+ class AlreadyExist {};
+
+ void
+ insert (PortInstancePtr const& d) throw (AlreadyExist)
+ {
+ if (!ports_.insert (d).second) throw AlreadyExist ();
+ }
+
+ Iterator
+ begin () const
+ {
+ return ports_.begin ();
+ }
+
+
+ Iterator
+ end () const
+ {
+ return ports_.end ();
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ private:
+ std::string name_;
+ std::string type_;
+
+ PortInstanceSet ports_;
+ };
+
+ typedef
+ StrictPtr<ComponentInstance>
+ ComponentInstancePtr;
+
+
+ //
+ //
+ //
+ class Connection : public virtual Node
+ {
+ public:
+ virtual
+ ~Connection () throw () {}
+
+ Connection (PortInstancePtr const& left,
+ PortInstancePtr const& right)
+ : left_ (left),
+ right_ (right)
+ {
+ type_info (static_type_info ());
+ }
+
+ public:
+
+ PortInstancePtr
+ left () const
+ {
+ return left_;
+ }
+
+ PortInstancePtr
+ right () const
+ {
+ return right_;
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ private:
+ PortInstancePtr left_;
+ PortInstancePtr right_;
+ };
+
+ typedef
+ StrictPtr<Connection>
+ ConnectionPtr;
+
+
+ //
+ //
+ //
+ class Descriptor : public virtual Node
+ {
+ public:
+ typedef
+ NodeList::const_iterator
+ Iterator;
+
+ public:
+ virtual
+ ~Descriptor () throw () {}
+
+ Descriptor ()
+ {
+ type_info (static_type_info ());
+ }
+
+ public:
+ void
+ insert (NodePtr const& n)
+ {
+ nodes_.push_back (n);
+ }
+
+ Iterator
+ begin () const
+ {
+ return nodes_.begin ();
+ }
+
+
+ Iterator
+ end () const
+ {
+ return nodes_.end ();
+ }
+
+ public:
+ static Introspection::TypeInfo const&
+ static_type_info ();
+
+ private:
+ NodeList nodes_;
+ };
+
+ typedef
+ StrictPtr<Descriptor>
+ DescriptorPtr;
+ }
+}
+
+
+#endif // CDD_SYNTAX_TREE_HPP
diff --git a/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp
new file mode 100644
index 00000000000..8f6a20649bc
--- /dev/null
+++ b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp
@@ -0,0 +1,112 @@
+// file : CCF/Example/ComponentDeploymentDescriptor/Traversal.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Traversal.hpp"
+
+using namespace Introspection;
+
+namespace CDD
+{
+ namespace Traversal
+ {
+
+ // Dispatcher
+ //
+ //
+
+ struct TypeInfoComparator
+ {
+ bool
+ operator () (TypeInfo const& x, TypeInfo const& y) const
+ {
+ return x.type_id () < y.type_id ();
+ }
+ };
+
+ typedef
+ std::map<TypeInfo, unsigned long, TypeInfoComparator>
+ LevelMap;
+
+ typedef
+ std::set<TypeInfo, TypeInfoComparator>
+ TypeInfoSet;
+
+ unsigned long
+ compute_levels (TypeInfo const& ti, unsigned long cur, LevelMap& map)
+ {
+ unsigned long ret = cur;
+
+ if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur;
+
+ for (TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ unsigned long t = compute_levels (i->type_info (), cur + 1, map);
+ if (t > ret) ret = t;
+ }
+
+ return ret;
+ }
+
+ void
+ flatten_tree (TypeInfo const& ti, TypeInfoSet& set)
+ {
+ set.insert (ti);
+
+ for (TypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ flatten_tree (i->type_info (), set);
+ }
+ }
+
+ void Dispatcher::
+ dispatch (SyntaxTree::NodePtr const& n)
+ {
+ LevelMap levels;
+
+ unsigned long max = compute_levels (n->type_info (), 0, levels);
+
+ //cerr << "starting dispatch process for "
+ // << n->type_info ().type_id () << " with "
+ // << max << " levels" << endl;
+
+ for (unsigned long l = 0; l < max + 1; l++)
+ {
+ TypeInfoSet dispatched;
+
+ for (LevelMap::const_iterator i = levels.begin ();
+ i != levels.end ();
+ i++)
+ {
+ if (i->second == l)
+ {
+ TraversalMap::const_iterator v =
+ traversal_map_.find (i->first.type_id ());
+
+ if (v != traversal_map_.end () && !(v->second.suppressed))
+ {
+ //cerr << "dispatching traverser for "
+ // << n->type_info ().type_id () << " as "
+ // << i->first.type_id () << endl;
+
+ v->second.traverser->traverse (n);
+ flatten_tree (i->first, dispatched);
+ }
+ }
+ }
+
+ // Remove traversed types from level map.
+ for (TypeInfoSet::const_iterator i = dispatched.begin ();
+ i != dispatched.end ();
+ i++)
+ {
+ levels.erase (*i);
+ }
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
new file mode 100644
index 00000000000..2b6697abae9
--- /dev/null
+++ b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
@@ -0,0 +1,386 @@
+// file : CCF/Example/ComponentDeploymentDescriptor/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CDD_TRAVERSAL_HPP
+#define CDD_TRAVERSAL_HPP
+
+#include <map>
+#include <vector>
+
+#include "CCF/CompilerElements/Introspection.hpp"
+
+#include "SyntaxTree.hpp"
+
+namespace CDD
+{
+ namespace Traversal
+ {
+ //
+ //
+ //
+ class TraverserInterface
+ {
+ protected:
+ virtual
+ ~TraverserInterface ()
+ {
+ }
+
+ virtual void
+ traverse (SyntaxTree::NodePtr const& n) = 0;
+
+ friend class Dispatcher;
+ };
+
+
+ //
+ //
+ //
+ class Dispatcher
+ {
+ public:
+ virtual
+ ~Dispatcher ()
+ {
+ }
+
+ virtual void
+ dispatch (SyntaxTree::NodePtr const& n);
+
+ protected:
+
+ class Ambiguous {};
+
+ void
+ map (Introspection::TypeId id,
+ TraverserInterface* t,
+ bool suppress_ambiguity = false)
+ throw (Ambiguous)
+ {
+ if (!traversal_map_.insert (std::make_pair (id, t)).second)
+ {
+ if (suppress_ambiguity)
+ {
+ traversal_map_[id].suppressed = true;
+ }
+ else
+ {
+ throw Ambiguous ();
+ }
+ }
+ }
+
+ private:
+
+ struct TraverserDescriptor
+ {
+ TraverserDescriptor (TraverserInterface* t = 0)
+ : traverser (t),
+ suppressed (false)
+ {
+ }
+
+ TraverserInterface* traverser;
+ bool suppressed;
+ };
+
+ typedef
+ std::map<Introspection::TypeId, TraverserDescriptor>
+ TraversalMap;
+
+ public:
+ typedef
+ TraversalMap::const_iterator
+ Iterator;
+
+ Iterator
+ begin () const
+ {
+ return traversal_map_.begin ();
+ }
+
+ Iterator
+ end () const
+ {
+ return traversal_map_.end ();
+ }
+
+ private:
+ TraversalMap traversal_map_;
+ };
+
+
+ //
+ //
+ //
+ class Discriminator : public virtual Dispatcher
+ {
+ public:
+ virtual void
+ add (Dispatcher* d) throw (Ambiguous)
+ {
+ for (Iterator i = d->begin (); i != d->end (); i++)
+ {
+ map (i->first, i->second.traverser, true);
+ }
+ }
+ };
+
+
+ //
+ //
+ //
+ class Traverser : public TraverserInterface,
+ public virtual Dispatcher
+ {
+ public:
+ virtual void
+ add_delegate (Dispatcher* d)
+ {
+ delegates_.push_back (d);
+ }
+
+ protected:
+ virtual bool
+ delegate (SyntaxTree::NodePtr const& n) const
+ {
+ if (delegates_.empty ()) return false;
+
+ for (DispatcherList::const_iterator i = delegates_.begin ();
+ i != delegates_.end ();
+ i++)
+ {
+ (*i)->dispatch (n);
+ }
+
+ return true;
+ }
+
+ protected:
+ typedef
+ std::vector<Dispatcher*>
+ DispatcherList;
+
+ DispatcherList delegates_;
+ };
+
+
+ //
+ //
+ //
+ struct PortInstance : Traverser
+ {
+ typedef
+ SyntaxTree::PortInstancePtr
+ NodePtr;
+
+ PortInstance ()
+ {
+ map (typeid (SyntaxTree::PortInstance), this);
+ }
+
+ virtual void
+ traverse (SyntaxTree::NodePtr const& n)
+ {
+ traverse (n->dynamic_type<SyntaxTree::PortInstance> ());
+ }
+
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ delegate (n);
+ }
+ };
+
+
+ //
+ //
+ //
+ struct ComponentInstance : Traverser
+ {
+ public:
+
+ virtual void
+ add_port_delegate (Dispatcher* d)
+ {
+ port_delegates_.push_back (d);
+ }
+
+ public:
+ typedef
+ SyntaxTree::ComponentInstancePtr
+ NodePtr;
+
+ ComponentInstance ()
+ {
+ map (typeid (SyntaxTree::ComponentInstance), this);
+ }
+
+ virtual void
+ traverse (SyntaxTree::NodePtr const& n)
+ {
+ traverse (n->dynamic_type<SyntaxTree::ComponentInstance> ());
+ }
+
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ if (!delegate (n))
+ {
+ pre (n);
+ ports (n);
+ post (n);
+ }
+ }
+
+ virtual void
+ pre (NodePtr const&)
+ {
+ }
+
+ virtual void
+ ports (NodePtr const& n)
+ {
+ delegate_port (n);
+ }
+
+ virtual void
+ post (NodePtr const&)
+ {
+ }
+
+ protected:
+ virtual void
+ delegate_port (NodePtr const& s)
+ {
+ for (SyntaxTree::ComponentInstance::Iterator n = s->begin ();
+ n != s->end ();
+ n++)
+ {
+ dispatch (*n);
+
+ for (DispatcherList::const_iterator i = port_delegates_.begin ();
+ i != port_delegates_.end ();
+ i++)
+ {
+ (*i)->dispatch (*n);
+ }
+ }
+ }
+
+ protected:
+ DispatcherList port_delegates_;
+ };
+
+
+ //
+ //
+ //
+ struct Connection : Traverser
+ {
+ typedef
+ SyntaxTree::ConnectionPtr
+ NodePtr;
+
+ Connection ()
+ {
+ map (typeid (SyntaxTree::Connection), this);
+ }
+
+ virtual void
+ traverse (SyntaxTree::NodePtr const& n)
+ {
+ traverse (n->dynamic_type<SyntaxTree::Connection> ());
+ }
+
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ delegate (n);
+ }
+ };
+
+
+ //
+ //
+ //
+ struct Descriptor : Traverser
+ {
+ public:
+
+ virtual void
+ add_node_delegate (Dispatcher* d)
+ {
+ node_delegates_.push_back (d);
+ }
+
+ public:
+ typedef
+ SyntaxTree::DescriptorPtr
+ NodePtr;
+
+ Descriptor ()
+ {
+ map (typeid (SyntaxTree::Descriptor), this);
+ }
+
+ virtual void
+ traverse (SyntaxTree::NodePtr const& n)
+ {
+ traverse (n->dynamic_type<SyntaxTree::Descriptor> ());
+ }
+
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ if (!delegate (n))
+ {
+ pre (n);
+ ports (n);
+ post (n);
+ }
+ }
+
+ virtual void
+ pre (NodePtr const&)
+ {
+ }
+
+ virtual void
+ ports (NodePtr const& n)
+ {
+ delegate_node (n);
+ }
+
+ virtual void
+ post (NodePtr const&)
+ {
+ }
+
+ protected:
+ virtual void
+ delegate_node (NodePtr const& s)
+ {
+ for (SyntaxTree::Descriptor::Iterator n = s->begin ();
+ n != s->end ();
+ n++)
+ {
+ dispatch (*n);
+
+ for (DispatcherList::const_iterator i = node_delegates_.begin ();
+ i != node_delegates_.end ();
+ i++)
+ {
+ (*i)->dispatch (*n);
+ }
+ }
+ }
+
+ protected:
+ DispatcherList node_delegates_;
+ };
+ }
+}
+
+#endif // CDD_TRAVERSAL_HPP
diff --git a/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/cdd.cpp b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/cdd.cpp
new file mode 100644
index 00000000000..737260014bc
--- /dev/null
+++ b/modules/CIAO/CCF/Example/ComponentDeploymentDescriptor/cdd.cpp
@@ -0,0 +1,144 @@
+// file : CCF/Example/ComponentDeploymentDescriptor/cdd.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+#include "CCF/CodeGenerationKit/IndentationXML.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include "SyntaxTree.hpp"
+#include "Traversal.hpp"
+
+using std::cout;
+using std::cerr;
+using std::endl;
+
+using namespace CDD;
+
+/*
+struct CI_Emitter : public virtual Traversal::ComponentInstance
+{
+ virtual void
+ pre (NodePtr const& n)
+ {
+ cout << "component instance " << n->name () << " of type "
+ << n->type () << endl << "{" << endl;
+
+ }
+
+ virtual void
+ post (NodePtr const& n)
+ {
+ cout << "}" << endl;
+ }
+
+};
+
+struct PI_Emitter : public virtual Traversal::PortInstance
+{
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ cout << " port " << n->name () << ";" << endl;
+ }
+};
+
+struct C_Emitter : public virtual Traversal::Connection
+{
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ cout << "connection " << n->left ()->name ()
+ << "<--->" << n->right ()->name () << ";" << endl;
+ }
+};
+
+*/
+
+
+struct CI_Emitter : public virtual Traversal::ComponentInstance
+{
+ virtual void
+ pre (NodePtr const& n)
+ {
+ cout << "<ComponentInstance name=\"" << n->name () << "\" type=\""
+ << n->type () << "\" >" << endl;
+
+ }
+
+ virtual void
+ post (NodePtr const& n)
+ {
+ cout << "</ComponentInstance>" << endl << endl;
+ }
+
+};
+
+struct PI_Emitter : public virtual Traversal::PortInstance
+{
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ cout << "<Port name=\"" << n->name () << "\" />" << endl;
+ }
+};
+
+struct C_Emitter : public virtual Traversal::Connection
+{
+ virtual void
+ traverse (NodePtr const& n)
+ {
+ cout << "<Connection left=\"" << n->left ()->name () << "\" "
+ << "right=\"" << n->right ()->name () << "\" />" << endl;
+ }
+};
+
+
+int
+main ()
+{
+ using namespace SyntaxTree;
+
+ try
+ {
+ // Construct tree
+
+ DescriptorPtr d (new Descriptor);
+
+ PortInstancePtr ap (new PortInstance ("ap"));
+ ComponentInstancePtr a (new ComponentInstance ("a", "A"));
+ a->insert (ap);
+ d->insert (a);
+
+ PortInstancePtr bp (new PortInstance ("bp"));
+ ComponentInstancePtr b (new ComponentInstance ("b", "B"));
+ b->insert (bp);
+ d->insert (b);
+
+ ConnectionPtr c (new Connection (ap, bp));
+ d->insert (c);
+
+ // Construct Traverser
+
+ Traversal::Descriptor dt;
+
+ CI_Emitter cie;
+ PI_Emitter pie;
+ cie.add_port_delegate (&pie);
+
+ C_Emitter ce;
+
+ dt.add_node_delegate (&cie);
+ dt.add_node_delegate (&ce);
+
+ // Set auto-indentation for cout
+ Indentation::Implanter<Indentation::XML> guard (cout);
+
+ dt.traverse (d);
+ }
+ catch (...)
+ {
+ cerr << "caught something" << endl;
+ }
+}
diff --git a/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.cpp b/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.cpp
new file mode 100644
index 00000000000..6645b7f0b67
--- /dev/null
+++ b/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.cpp
@@ -0,0 +1,32 @@
+// file : Example/IDL2/CxxMapping/Generator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Generator.hpp"
+#include "GeneratorImpl.hpp"
+
+namespace IDL2
+{
+ Generator::
+ ~Generator ()
+ {
+ }
+
+ Generator::
+ Generator ()
+ : pimpl_ (new GeneratorImpl), impl_ (*pimpl_)
+ {
+ }
+
+ Generator::
+ Generator (GeneratorImpl& gi)
+ : pimpl_ (), impl_ (gi)
+ {
+ }
+
+ void Generator::
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu)
+ {
+ impl_.generate (tu);
+ }
+}
diff --git a/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.hpp b/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.hpp
new file mode 100644
index 00000000000..4e231267dae
--- /dev/null
+++ b/modules/CIAO/CCF/Example/IDL2/CxxMapping/Generator.hpp
@@ -0,0 +1,34 @@
+// file : Example/IDL2/CxxMapping/Generator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_HPP
+#define EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_HPP
+
+#include <memory>
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+
+namespace IDL2
+{
+ class GeneratorImpl;
+
+ class Generator
+ {
+ public:
+ ~Generator ();
+ Generator ();
+
+ void
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu);
+
+ protected:
+ Generator (GeneratorImpl&);
+
+ protected:
+ std::auto_ptr<GeneratorImpl> pimpl_;
+ GeneratorImpl& impl_;
+ };
+}
+
+#endif // EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_HPP
diff --git a/modules/CIAO/CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp b/modules/CIAO/CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp
new file mode 100644
index 00000000000..f5e6edc3e77
--- /dev/null
+++ b/modules/CIAO/CCF/Example/IDL2/CxxMapping/GeneratorImpl.hpp
@@ -0,0 +1,533 @@
+// file : Example/IDL2/CxxMapping/GeneratorImpl.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_IMPL_HPP
+#define EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_IMPL_HPP
+
+#include <iostream>
+
+#include "CCF/CodeGenerationKit/IndentationCxx.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+#include "CCF/IDL2/Traversal.hpp"
+
+namespace IDL2
+{
+ using namespace CCF::IDL2;
+
+ using std::cout;
+ using std::endl;
+
+ struct Inhibitor
+ {
+ virtual void
+ operator() () const = 0;
+ };
+
+ template <typename O, typename S, typename T>
+ class InhibitorTemplate : public Inhibitor
+ {
+ public:
+ typedef void (O::*F) (S&, T&);
+
+ InhibitorTemplate (O& o, F f, S& s, T& t)
+ : o_ (o), f_ (f), s_ (s), t_ (t)
+ {
+ }
+
+ virtual void
+ operator() () const
+ {
+ (o_.*f_)(s_, t_);
+ }
+
+ private:
+ O& o_;
+ F f_;
+ S& s_;
+ T& t_;
+ };
+
+ template <typename O,
+ typename S,
+ typename T = Traversal::EdgeDispatcherBase>
+ class Factory
+ {
+ public:
+ typedef void (O::*F) (S&, T&);
+
+ Factory (O& o, F f, T& t)
+ : o_ (o), f_ (f), t_ (t)
+ {
+ }
+
+ InhibitorTemplate<O, S, T>
+ operator() (S& s) const
+ {
+ return InhibitorTemplate<O, S, T> (o_, f_, s, t_);
+ }
+
+ private:
+ O& o_;
+ F f_;
+ T& t_;
+ };
+
+ std::ostream&
+ operator<< (std::ostream& os, Inhibitor const& p)
+ {
+ p ();
+ return os;
+ }
+
+ class GeneratorImpl
+ {
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ //--
+
+ // Layer 3
+ //
+
+ //--
+
+ struct InterfaceHdr : Traversal::UnconstrainedInterface
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "class ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ cout << " : public virtual CORBA::Impl::Stub";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{"
+ << "public:" << endl;
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+
+ struct Module : Traversal::Module
+ {
+ virtual void
+ pre (Type& m)
+ {
+ cout << "namespace " << m.name ();
+ }
+
+ virtual void
+ names_pre (Type& m)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type& m)
+ {
+ cout << "}";
+ }
+ };
+
+ struct TypeName : Traversal::Nameable,
+ Traversal::FundamentalType
+ {
+ virtual void
+ traverse (SemanticGraph::Nameable& n)
+ {
+ cout << n.scoped_name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::FundamentalType& ft)
+ {
+ cout << ft.name ();
+ }
+ };
+
+ // Layer 4
+ //
+
+ //--
+
+
+ struct OperationHdr : Traversal::Operation
+ {
+ virtual void
+ name (Type& o)
+ {
+ cout << " " << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ cout << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ cout << " throw (";
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct OperationImpl : Traversal::Operation
+ {
+ OperationImpl ()
+ : marshal (*this, &OperationImpl::receives, marshal_),
+ unmarshal (*this, &OperationImpl::receives, unmarshal_),
+ ret_type (*this, &OperationImpl::returns, ret_type_),
+ cast_type (*this, &OperationImpl::returns, cast_type_)
+ {
+ }
+
+ virtual void
+ name (Type& o)
+ {
+ cout << " "
+ << o.scoped_name ().scope_name ().simple_name ()
+ << "::" << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ cout << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ cout << " throw (";
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ post (Type& o)
+ {
+ cout << "{"
+ << "OCDRStream os;"
+ << "static_cast<void> (os" << marshal (o) << ");"
+ << "ICDRStream is (Stub::make_call (\""
+ << o.name () << "\", os));"
+ << ret_type (o) << " _retval;"
+ << "is >> _retval" << unmarshal (o) << ";"
+ << "return " << "static_cast<" << cast_type (o) << "> (_retval);"
+ << "}";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+
+ struct MarshalParameter : Traversal::Receives,
+ Traversal::InParameter,
+ Traversal::InOutParameter
+ {
+ MarshalParameter ()
+ {
+ node_traverser (*this);
+ }
+
+ virtual void
+ traverse (SemanticGraph::InParameter& p)
+ {
+ cout << " << " << p.name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::InOutParameter& p)
+ {
+ cout << " << " << p.name ();
+ }
+ } marshal_;
+
+ Factory<OperationImpl, Type> marshal;
+
+ struct UnmarshalParameter : Traversal::Receives,
+ Traversal::InOutParameter,
+ Traversal::OutParameter
+ {
+ UnmarshalParameter ()
+ {
+ node_traverser (*this);
+ }
+
+ virtual void
+ traverse (SemanticGraph::InOutParameter& p)
+ {
+ cout << " >> " << p.name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::OutParameter& p)
+ {
+ cout << " >> " << p.name ();
+ }
+ } unmarshal_;
+
+ Factory<OperationImpl, Type> unmarshal;
+
+
+ struct ReturnType : Traversal::Belongs, Traversal::Void, TypeName
+ {
+ ReturnType ()
+ {
+ node_traverser (*this);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Void&)
+ {
+ // Void is a type for which do-nothing operator>> (ICDRStream&)
+ // is provided. Its main purpose is to make C++ type handling
+ // more regular and thus allow more streamlined code generation.
+ //
+ cout << "Void";
+ }
+ } ret_type_;
+
+ Factory<OperationImpl, Type> ret_type;
+
+ struct CastType : Traversal::Belongs, TypeName
+ {
+ CastType ()
+ {
+ node_traverser (*this);
+ }
+ } cast_type_;
+
+ Factory<OperationImpl, Type> cast_type;
+ };
+
+ // Layer 5
+ //
+
+ //--
+
+ struct Parameter : Traversal::Parameter
+ {
+ virtual void
+ name (Type& p)
+ {
+ cout << " " << p.name ();
+ }
+ };
+
+ public:
+
+ GeneratorImpl ()
+ {
+ // Layer 1
+ //
+ unit.edge_traverser (contains_principal);
+
+ //--
+
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ region.edge_traverser (contains_root);
+
+ //--
+
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ root.edge_traverser (defines);
+
+ //--
+ defines.node_traverser (interface_hdr);
+ defines.node_traverser (interface_impl);
+ defines.node_traverser (module);
+
+ // Layer 4
+ //
+ module.edge_traverser (defines);
+
+ interface_hdr.edge_traverser (inherits);
+ interface_hdr.edge_traverser (interface_hdr_defines);
+
+ interface_impl.edge_traverser (interface_impl_defines);
+
+ //--
+ inherits.node_traverser (type_name);
+
+ interface_hdr_defines.node_traverser (operation_hdr);
+ interface_impl_defines.node_traverser (operation_impl);
+
+ // Layer 5
+ //
+
+ operation_hdr.edge_traverser (receives);
+ operation_hdr.edge_traverser (returns);
+
+ operation_impl.edge_traverser (receives);
+ operation_impl.edge_traverser (returns);
+
+ //--
+
+ receives.node_traverser (parameter);
+ returns.node_traverser (type_name);
+
+ // Layer 6
+ //
+ parameter.edge_traverser (belongs);
+
+ //--
+
+ belongs.node_traverser (type_name);
+
+ }
+
+ protected:
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ //--
+
+ Traversal::TranslationRegion region;
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+
+ //--
+
+ Traversal::Root root;
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+
+ //--
+ InterfaceHdr interface_hdr;
+ Traversal::UnconstrainedInterface interface_impl;
+
+ Module module;
+
+ TypeName type_name;
+
+ // Layer 4
+ //
+ Traversal::Inherits inherits;
+ Traversal::Defines interface_hdr_defines;
+ Traversal::Defines interface_impl_defines;
+
+ //--
+ OperationHdr operation_hdr;
+ OperationImpl operation_impl;
+
+ // Layer 5
+ //
+ Traversal::Receives receives;
+ Traversal::Returns returns;
+
+ //--
+
+ Parameter parameter;
+
+ // Layer 6
+ //
+ Traversal::Belongs belongs;
+
+ public:
+ void
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu)
+ {
+ // Plug automatic IDL indenter.
+ //
+ Indentation::Implanter<Indentation::Cxx> guard (cout);
+
+ unit.traverse (tu);
+ }
+ };
+}
+
+#endif // EXAMPLE_IDL2_CXX_MAPPING_GENERATOR_IMPL_HPP
diff --git a/modules/CIAO/CCF/Example/IDL2/CxxMapping/driver.cpp b/modules/CIAO/CCF/Example/IDL2/CxxMapping/driver.cpp
new file mode 100644
index 00000000000..11c6e895611
--- /dev/null
+++ b/modules/CIAO/CCF/Example/IDL2/CxxMapping/driver.cpp
@@ -0,0 +1,96 @@
+// file : Example/IDL2/CxxMapping/driver.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/IDL2/LexicalAnalyzer.hpp"
+#include "CCF/IDL2/Parser.hpp"
+#include "CCF/IDL2/SemanticGraph.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Factory.hpp"
+
+#include "Generator.hpp"
+
+using std::cerr;
+using std::cout;
+using std::endl;
+
+using namespace CCF::CompilerElements;
+using namespace CCF::IDL2;
+using namespace CCF::IDL2::SemanticGraph;
+
+//@@ code repetition in driver.
+//
+
+int
+main ()
+{
+ try
+ {
+ Diagnostic::Stream dout;
+
+ fs::path file_path ("stdout");
+
+ InputStreamAdapter isa (std::cin);
+ CPP::Preprocessor pp (isa);
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu;
+
+ // Compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action", false);
+
+
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return -1;
+
+ IDL2::Generator g;
+
+ g.generate (tu);
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ return -1;
+ }
+}
diff --git a/modules/CIAO/CCF/Example/IDL2/CxxMapping/test.idl b/modules/CIAO/CCF/Example/IDL2/CxxMapping/test.idl
new file mode 100644
index 00000000000..82e44440c58
--- /dev/null
+++ b/modules/CIAO/CCF/Example/IDL2/CxxMapping/test.idl
@@ -0,0 +1,12 @@
+// file : Example/IDL2/CxxMapping/test.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+module M
+{
+ interface I
+ {
+ long foo (in string s, inout boolean b, out long l);
+ void bar ();
+ };
+};
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.cpp b/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.cpp
new file mode 100644
index 00000000000..278278b3360
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.cpp
@@ -0,0 +1,32 @@
+// file : Test/CIDL/Compiler/Generator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Generator.hpp"
+#include "GeneratorImpl.hpp"
+
+namespace CIDL
+{
+ Generator::
+ ~Generator ()
+ {
+ }
+
+ Generator::
+ Generator ()
+ : pimpl_ (new GeneratorImpl), impl_ (*pimpl_)
+ {
+ }
+
+ Generator::
+ Generator (GeneratorImpl& gi)
+ : pimpl_ (), impl_ (gi)
+ {
+ }
+
+ void Generator::
+ generate (CCF::IDL3::SemanticGraph::TranslationUnit& tu)
+ {
+ impl_.generate (tu);
+ }
+}
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.hpp b/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.hpp
new file mode 100644
index 00000000000..3876195469d
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/Generator.hpp
@@ -0,0 +1,34 @@
+// file : Test/CIDL/Compiler/Generator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_CIDL_COMPILER_GENERATOR_HPP
+#define TEST_CIDL_COMPILER_GENERATOR_HPP
+
+#include <memory>
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+namespace CIDL
+{
+ class GeneratorImpl;
+
+ class Generator
+ {
+ public:
+ ~Generator ();
+ Generator ();
+
+ void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& tu);
+
+ protected:
+ Generator (GeneratorImpl&);
+
+ protected:
+ std::auto_ptr<GeneratorImpl> pimpl_;
+ GeneratorImpl& impl_;
+ };
+}
+
+#endif // TEST_CIDL_COMPILER_GENERATOR_HPP
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/GeneratorImpl.hpp b/modules/CIAO/CCF/Test/CIDL/Compiler/GeneratorImpl.hpp
new file mode 100644
index 00000000000..169fb57ace3
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/GeneratorImpl.hpp
@@ -0,0 +1,228 @@
+// file : Test/CIDL/Compiler/GeneratorImpl.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_CIDL_COMPILER_GENERATOR_IMPL_HPP
+#define TEST_CIDL_COMPILER_GENERATOR_IMPL_HPP
+
+#include <iostream>
+
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "../../IDL3/Compiler/GeneratorImpl.hpp"
+
+namespace CIDL
+{
+ using namespace CCF::CIDL;
+
+ using std::cout;
+ using std::endl;
+
+ class GeneratorImpl : public IDL3::GeneratorImpl
+ {
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+
+ struct Composition : Traversal::Composition
+ {
+ virtual void
+ pre (Type& c)
+ {
+ //@@ TODO kind
+ cout << "composition " << "session" << " ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+ };
+
+
+ struct HomeExecutor : Traversal::HomeExecutor
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "home executor ";
+ }
+
+ virtual void
+ name (Type& he)
+ {
+ cout << he.name () << "{";
+ }
+
+ virtual void
+ implements_pre (Type&)
+ {
+ cout << "implements ";
+ }
+
+ virtual void
+ implements_post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ manages_pre (Type&)
+ {
+ cout << "manages ";
+ }
+
+ virtual void
+ manages_post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ post (Type& he)
+ {
+ cout << "};";
+ }
+ };
+
+
+ // Layer 4
+ //
+
+ //--
+
+ // Layer 5
+ //
+
+ //--
+
+ struct SimpleName : Traversal::Nameable
+ {
+ virtual void
+ traverse (Type& n)
+ {
+ cout << n.name ();
+ }
+ };
+
+ public:
+
+ GeneratorImpl ()
+ {
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+
+ composition.edge_traverser (composition_defines);
+
+ //--
+
+ composition_defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ home_executor.edge_traverser (home_executor_implements);
+ home_executor.edge_traverser (home_executor_manages);
+
+ //--
+
+ home_executor_implements.node_traverser (type_name);
+ home_executor_manages.node_traverser (simple_name);
+
+ // Layer 6
+ //
+
+ }
+
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+
+ Composition composition;
+
+ // Layer 4
+ //
+
+ Traversal::Defines composition_defines;
+
+ //--
+
+ HomeExecutor home_executor;
+
+ // Layer 5
+ //
+ Traversal::Implements home_executor_implements;
+ Traversal::Manages home_executor_manages;
+
+ //--
+
+ SimpleName simple_name;
+
+ // Layer 6
+ //
+
+ public:
+ void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& tu)
+ {
+ // Plug automatic IDL indenter.
+ //
+ Indentation::Implanter<Indentation::IDL> guard (cout);
+
+ unit.traverse (tu);
+ }
+ };
+}
+
+#endif // TEST_CIDL_COMPILER_GENERATOR_IMPL_HPP
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/driver.cpp b/modules/CIAO/CCF/Test/CIDL/Compiler/driver.cpp
new file mode 100644
index 00000000000..222dd8f851c
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/driver.cpp
@@ -0,0 +1,97 @@
+// file : Test/CIDL/Compiler/driver.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/CIDL/LexicalAnalyzer.hpp"
+#include "CCF/CIDL/Parser.hpp"
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/Factory.hpp"
+
+#include "Generator.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::cout;
+using std::endl;
+
+using namespace CCF::CompilerElements;
+using namespace CCF::CIDL;
+using namespace SemanticGraph;
+
+int
+main ()
+{
+ try
+ {
+ Diagnostic::Stream dout;
+
+ fs::path file_path ("stdout");
+
+ InputStreamAdapter isa (std::cin);
+ CPP::Preprocessor pp (isa);
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu;
+
+ // Compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action", false);
+
+
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ //@@ should be able to use IDL3 here. Or better yet get rid of this
+ // function completely.
+ //
+ CCF::IDL2::Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return -1;
+
+ CIDL::Generator g;
+
+ g.generate (tu);
+
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ return -1;
+ }
+}
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/result.cidl.orig b/modules/CIAO/CCF/Test/CIDL/Compiler/result.cidl.orig
new file mode 100644
index 00000000000..6ba766db738
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/result.cidl.orig
@@ -0,0 +1,14 @@
+component C
+{
+};
+home H manages ::C
+{
+};
+composition session SC
+{
+ home executor H_Exec
+ {
+ implements ::H;
+ manages C_Exec;
+ };
+};
diff --git a/modules/CIAO/CCF/Test/CIDL/Compiler/test.cidl b/modules/CIAO/CCF/Test/CIDL/Compiler/test.cidl
new file mode 100644
index 00000000000..349712a18df
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CIDL/Compiler/test.cidl
@@ -0,0 +1,21 @@
+// file : CCF/Test/CIDL/Compiler/test.cidl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+component C
+{
+};
+
+home H manages C
+{
+};
+
+composition session SC
+{
+ home executor H_Exec
+ {
+ implements H;
+ manages C_Exec;
+ };
+};
+
diff --git a/modules/CIAO/CCF/Test/CompilerElements/CPP/driver.cpp b/modules/CIAO/CCF/Test/CompilerElements/CPP/driver.cpp
new file mode 100644
index 00000000000..de3624d86a7
--- /dev/null
+++ b/modules/CIAO/CCF/Test/CompilerElements/CPP/driver.cpp
@@ -0,0 +1,40 @@
+// file : CCF/Test/CompilerElements/CPP/driver.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+using std::cout;
+using std::endl;
+
+using CCF::CompilerElements::InputStreamAdapter;
+
+using namespace CCF::CompilerElements::CPP;
+
+int
+main ()
+{
+ InputStreamAdapter isa (std::cin);
+ Preprocessor pp (isa);
+
+ try
+ {
+ for (;;)
+ {
+ Token t (pp.next ());
+
+ if (t == Token::eos) break;
+
+ std::cout << t;
+ }
+ }
+ catch (std::exception const& e)
+ {
+ cout << e.what () << endl;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/CCF/Test/IDL2/Compiler/driver.cpp b/modules/CIAO/CCF/Test/IDL2/Compiler/driver.cpp
new file mode 100644
index 00000000000..71d8dc9b971
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Compiler/driver.cpp
@@ -0,0 +1,94 @@
+// file : Test/IDL2/Compiler/driver.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/IDL2/LexicalAnalyzer.hpp"
+#include "CCF/IDL2/Parser.hpp"
+#include "CCF/IDL2/SemanticGraph.hpp"
+#include "CCF/IDL2/SemanticAction/Impl/Factory.hpp"
+
+#include "../Traversal/Recreate/Generator.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::cout;
+using std::endl;
+
+using namespace CCF::CompilerElements;
+using namespace CCF::IDL2;
+using namespace CCF::IDL2::SemanticGraph;
+
+int
+main ()
+{
+ try
+ {
+ Diagnostic::Stream dout;
+
+ fs::path file_path ("stdout");
+
+ InputStreamAdapter isa (std::cin);
+ CPP::Preprocessor pp (isa);
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu;
+
+ // Compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action", false);
+
+
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return -1;
+
+ IDL2::Generator g;
+
+ g.generate (tu);
+
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ return -1;
+ }
+}
diff --git a/modules/CIAO/CCF/Test/IDL2/Compiler/result.idl.orig b/modules/CIAO/CCF/Test/IDL2/Compiler/result.idl.orig
new file mode 100644
index 00000000000..a29258b9e6f
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Compiler/result.idl.orig
@@ -0,0 +1,88 @@
+module AttributeTest
+{
+ interface I
+ {
+ attribute long a;
+ attribute string foo;
+ };
+};
+module InterfaceTest
+{
+ abstract interface AI;
+ local interface LI;
+ interface I;
+ abstract interface AI
+ {
+ };
+ interface I : ::InterfaceTest::AI
+ {
+ };
+ local interface LI : ::InterfaceTest::I, ::InterfaceTest::AI
+ {
+ };
+};
+module MemberTest
+{
+ typedef long Id;
+ struct S
+ {
+ long id;
+ string foo;
+ string bar;
+ string baz;
+ };
+};
+module ModuleTest
+{
+ module M
+ {
+ module N
+ {
+ typedef long L;
+ };
+ };
+ module M
+ {
+ typedef long L;
+ };
+ module N
+ {
+ typedef long L;
+ };
+};
+module OperationTest
+{
+ interface I
+ {
+ long f (in string a, out long b, inout octet c);
+ };
+};
+module Sequence
+{
+ typedef sequence<octet> OctetSeq;
+ typedef sequence<octet> RawSeq;
+ typedef sequence<string> StringSeq;
+ typedef sequence<string> StrSeq;
+};
+module StructTest
+{
+ struct S;
+ struct S
+ {
+ long m;
+ };
+};
+module TypeidTest
+{
+ interface I;
+ typeid ::TypeidTest::I "Foo";
+ typeprefix ::TypeidTest "Bar";
+};
+module TypedefTest
+{
+ interface I;
+ typedef ::TypedefTest::I J;
+ interface I
+ {
+ };
+};
diff --git a/modules/CIAO/CCF/Test/IDL2/Compiler/test.idl b/modules/CIAO/CCF/Test/IDL2/Compiler/test.idl
new file mode 100644
index 00000000000..737a729524b
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Compiler/test.idl
@@ -0,0 +1,151 @@
+// file : CCF/Test/IDL2/Compiler/test.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Attribute
+//
+//
+module AttributeTest
+{
+ interface I
+ {
+ attribute long a;
+ attribute string foo;
+ };
+};
+
+// Interface
+//
+//
+module InterfaceTest
+{
+ abstract interface AI;
+ local interface LI;
+ interface I;
+
+ abstract interface AI
+ {
+ };
+
+ interface I : AI
+ {
+ };
+
+ local interface LI : I, AI
+ {
+ };
+};
+
+// Member
+//
+//
+module MemberTest
+{
+ typedef long Id;
+
+ struct S
+ {
+ Id id;
+ string foo, bar, baz;
+ };
+};
+
+// Module
+//
+//
+module ModuleTest
+{
+ module M
+ {
+ module N
+ {
+ typedef long L;
+ };
+ };
+
+ module M
+ {
+ typedef N::L L;
+ };
+
+ module N
+ {
+ typedef M::N::L L;
+ };
+};
+
+
+// Operation
+//
+//
+module OperationTest
+{
+ interface I
+ {
+ long f (in string a, out long b, inout octet c);
+ };
+};
+
+
+// Sequence
+//
+//
+module Sequence
+{
+ typedef sequence<octet> OctetSeq;
+
+ typedef OctetSeq RawSeq;
+
+ typedef sequence<string> StringSeq, StrSeq;
+};
+
+
+// Struct
+//
+//
+module StructTest
+{
+ struct S;
+
+ struct S
+ {
+ long m; // Struct cannot be empty.
+ };
+
+};
+
+// Typeid
+//
+//
+module TypeidTest
+{
+ interface I;
+
+ typeid I "Foo";
+ typeprefix TypeidTest "Bar";
+};
+
+
+// Typedef
+//
+//
+
+module TypedefTest
+{
+ interface I;
+
+ typedef I J;
+
+ interface I
+ {
+ /*
+ struct S
+ {
+ long l;
+ };
+
+ J::S op ();
+ */
+ };
+};
+
diff --git a/modules/CIAO/CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl b/modules/CIAO/CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl
new file mode 100644
index 00000000000..a29dde465d2
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl
@@ -0,0 +1,25 @@
+// file : CCF/Test/IDL2/LexicalAnalyzer/Coverage.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// This file is supposed to cover an IDL2 lexical structure and intended
+// for IDL2 lexer regression testing.
+//
+
+abstract interface FA;
+
+abstract interface A
+{
+ void foo (in long l, out boolean b, inout FA fa);
+};
+
+module M
+{
+ interface I
+ {
+ };
+};
+
+local interface L : ::A, M::I
+{
+};
diff --git a/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/interface.idl b/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/interface.idl
new file mode 100644
index 00000000000..22a99ffadf2
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/interface.idl
@@ -0,0 +1,41 @@
+// file : CCF/Test/IDL2/Parsing/Recovery/interface.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+interface Base {};
+
+
+// Interface declaration syntax errors
+//
+//
+
+local intrrface L;
+
+//
+
+abstract interrface A;
+
+//
+
+interface ;
+
+//
+
+interface I : {};
+
+//
+
+interface I : Base, {};
+
+//
+
+interface I };
+
+//
+
+interface I {;
+
+//
+
+interface I {}
+
diff --git a/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/module.idl b/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/module.idl
new file mode 100644
index 00000000000..edfd868809b
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Parser/Recovery/module.idl
@@ -0,0 +1,38 @@
+// file : CCF/Test/IDL2/Parsing/Recovery/module.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Module declaration syntax errors
+//
+//
+
+//
+
+module;
+
+//
+
+module M;
+
+//
+
+module M {;
+
+//
+
+module M {}
+
+
+//
+
+module M {
+ interface I;
+;
+
+//
+
+module N
+{
+ interface I;
+}
+
diff --git a/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp
new file mode 100644
index 00000000000..764ab3fbc6f
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp
@@ -0,0 +1,165 @@
+// file : Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+#include "Builder.hpp"
+
+using namespace CCF::IDL2::SemanticGraph;
+
+//@@ tmp
+using std::cerr;
+using std::endl;
+
+TranslationUnit* Builder::
+build ()
+{
+ /*
+ 0
+ 1 #include "../foo/quote.idl"
+ 2 #include <ui/bracket.idl>
+ 3
+ 4 module M
+ 5 {
+ 6
+ 7 interface I;
+ 8
+ 9 typedef I J;
+ 10
+ 11 interface I
+ 12 {
+ 13 void f (in long id, out string name);
+ 14
+ 15 attribute long a;
+ 16 };
+ 17
+ 18 interface Q : J {};
+ 19
+ 20 typeid I "Foo";
+ 21 typeprefix M "Bar";
+ 22
+ 23 struct S
+ 24 {
+ 25 long member;
+ 26 };
+ 27
+ 28 typedef sequence<long> LongSeq;
+ 29
+ 30 };
+ 31
+ 32
+ */
+
+ //@@ names can be spcified without explicit construction.
+ //
+
+ TranslationUnit& tu (*(new TranslationUnit));
+
+
+ // 0: Implied translation region with fundamental types.
+ //
+ //
+ TranslationRegion& fundamental (tu.new_node<TranslationRegion> ());
+ tu.new_edge<ContainsImplied> (tu, fundamental, ".fundamental");
+
+ Root& fundamental_root (tu.new_node<Root> ());
+ tu.new_edge<ContainsRoot> (fundamental, fundamental_root);
+
+ Void& void_ (tu.new_node<Void> ());
+ tu.new_edge<Defines> (fundamental_root, void_, SimpleName ("void"));
+
+ Long& long_ (tu.new_node<Long> ());
+ tu.new_edge<Defines> (fundamental_root, long_, SimpleName ("long"));
+
+ String& string_ (tu.new_node<String> ());
+ tu.new_edge<Defines> (fundamental_root, string_, SimpleName ("string"));
+
+ // Principal translation region.
+ //
+ TranslationRegion& principal (tu.new_node<TranslationRegion> ());
+ tu.new_edge<ContainsPrincipal> (tu, principal);
+
+ // 1: Quote included translation region.
+ //
+ TranslationRegion& quote_included (tu.new_node<TranslationRegion> ());
+ tu.new_edge<QuoteIncludes> (principal, quote_included, "../foo/quote.idl");
+
+ // 2: Bracket included translation region.
+ //
+ TranslationRegion& braket_included (tu.new_node<TranslationRegion> ());
+ tu.new_edge<BracketIncludes> (principal, braket_included, "ui/bracket.idl");
+
+ Root& root (tu.new_node<Root> ());
+ tu.new_edge<ContainsRoot> (principal, root);
+
+ // 4-5:
+ //
+ Module& m (tu.new_node<Module> ());
+ tu.new_edge<Defines> (root, m, SimpleName ("M"));
+
+ // 7-11:
+ //
+ UnconstrainedInterface& i (tu.new_node<UnconstrainedInterface> ());
+ tu.new_edge<Mentions> (m, i, SimpleName ("I"));
+ tu.new_edge<Aliases> (m, i, SimpleName ("J"));
+ tu.new_edge<Defines> (m, i, SimpleName ("I"));
+
+ // 13:
+ //
+ TwoWayOperation& f (tu.new_node<TwoWayOperation> ());
+ tu.new_edge<Returns> (f, void_);
+
+ Parameter& id (tu.new_node<InParameter> ("id"));
+ tu.new_edge<Belongs> (id, long_);
+ tu.new_edge<Receives> (f, id);
+
+ Parameter& name (tu.new_node<OutParameter> ("name"));
+ tu.new_edge<Belongs> (name, string_);
+ tu.new_edge<Receives> (f, name);
+
+ tu.new_edge<Defines> (i, f, SimpleName ("f"));
+
+ // 15:
+ //
+ Attribute& a (tu.new_node<Attribute> ());
+ tu.new_edge<Belongs> (a, long_);
+ tu.new_edge<Defines> (i, a, SimpleName ("a"));
+
+ // 18:
+ //
+ UnconstrainedInterface& q (tu.new_node<UnconstrainedInterface> ());
+ tu.new_edge<Inherits> (q, i);
+ tu.new_edge<Defines> (m, q, SimpleName ("Q"));
+
+ // 20:
+ //
+ TypeId& ti (tu.new_node<TypeId> (
+ ScopedName ("::M::I"), StringLiteral ("Foo")));
+ tu.new_edge<Defines> (m, ti, SimpleName ("typeid"));
+
+ // 21:
+ //
+ TypePrefix& tp (tu.new_node<TypePrefix> (
+ ScopedName ("::M"), StringLiteral ("Bar")));
+ tu.new_edge<Defines> (m, tp, SimpleName ("typeprefix"));
+
+ // 23-24:
+ //
+ Struct& s (tu.new_node<Struct> ());
+ tu.new_edge<Defines> (m, s, SimpleName ("S"));
+
+ // 25:
+ //
+ Member& member (tu.new_node<Member> ());
+ tu.new_edge<Belongs> (member, long_);
+ tu.new_edge<Defines> (s, member, SimpleName ("member"));
+
+ // 28:
+ //
+ UnboundedSequence& long_seq (tu.new_node<UnboundedSequence> ());
+ tu.new_edge<Specialized> (long_seq, long_);
+ tu.new_edge<Aliases> (m, long_seq, SimpleName ("LongSeq"));
+
+ return &tu;
+}
diff --git a/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp
new file mode 100644
index 00000000000..794c56547d2
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp
@@ -0,0 +1,17 @@
+// file : Test/IDL2/SemanticGraph/HandBuilt/Builder.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_IDL2_SEMANTIC_GRAPH_BUILDER_HPP
+#define TEST_IDL2_SEMANTIC_GRAPH_BUILDER_HPP
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+
+class Builder
+{
+public:
+ CCF::IDL2::SemanticGraph::TranslationUnit*
+ build ();
+};
+
+#endif // TEST_IDL2_SEMANTIC_GRAPH_BUILDER_HPP
diff --git a/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp
new file mode 100644
index 00000000000..3640282cfe3
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp
@@ -0,0 +1,16 @@
+// file : Test/IDL2/SemanticGraph/HandBuilt/hand_built.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Builder.hpp"
+
+using namespace CCF::IDL2;
+
+int
+main ()
+{
+ Builder b;
+ SemanticGraph::TranslationUnit& tu (*b.build ());
+
+ delete &tu;
+}
diff --git a/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.cpp b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.cpp
new file mode 100644
index 00000000000..8aa3e895b9d
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.cpp
@@ -0,0 +1,32 @@
+// file : Test/IDL2/Traversal/Recreate/Generator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Generator.hpp"
+#include "GeneratorImpl.hpp"
+
+namespace IDL2
+{
+ Generator::
+ ~Generator ()
+ {
+ }
+
+ Generator::
+ Generator ()
+ : pimpl_ (new GeneratorImpl), impl_ (*pimpl_)
+ {
+ }
+
+ Generator::
+ Generator (GeneratorImpl& gi)
+ : pimpl_ (), impl_ (gi)
+ {
+ }
+
+ void Generator::
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu)
+ {
+ impl_.generate (tu);
+ }
+}
diff --git a/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.hpp b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.hpp
new file mode 100644
index 00000000000..b0387317ad5
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/Generator.hpp
@@ -0,0 +1,34 @@
+// file : Test/IDL2/Traversal/Recreate/Generator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_HPP
+#define TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_HPP
+
+#include <memory>
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+
+namespace IDL2
+{
+ class GeneratorImpl;
+
+ class Generator
+ {
+ public:
+ ~Generator ();
+ Generator ();
+
+ void
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu);
+
+ protected:
+ Generator (GeneratorImpl&);
+
+ protected:
+ std::auto_ptr<GeneratorImpl> pimpl_;
+ GeneratorImpl& impl_;
+ };
+}
+
+#endif // TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_HPP
diff --git a/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp
new file mode 100644
index 00000000000..52b89e03e12
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp
@@ -0,0 +1,682 @@
+// file : Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_IMPL_HPP
+#define TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_IMPL_HPP
+
+#include <iostream>
+
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+#include "CCF/IDL2/Traversal.hpp"
+
+namespace IDL2
+{
+ using namespace CCF::IDL2;
+ using namespace CCF::IDL2::SemanticGraph;
+
+ using std::cout;
+ using std::endl;
+
+ class GeneratorImpl
+ {
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+ struct BracketIncludes : Traversal::BracketIncludes
+ {
+ virtual void
+ traverse (Type& qi)
+ {
+ cout << "include <" << qi.file ().string () << ">" << endl;
+ }
+ };
+
+ struct QuoteIncludes : Traversal::QuoteIncludes
+ {
+ virtual void
+ traverse (Type& qi)
+ {
+ cout << "include \"" << qi.file ().string () << "\"" << endl;
+ }
+ };
+
+ //--
+
+ // Layer 3
+ //
+
+ struct Aliases : Traversal::Aliases
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "typedef ";
+ }
+
+ virtual void
+ name (Type& a)
+ {
+ cout << " " << a.name ();
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+ };
+
+ //--
+
+ struct AbstractInterfaceFwd : Traversal::AbstractInterface
+ {
+ virtual void
+ traverse (Type& i)
+ {
+ cout << "abstract interface " << i.name () << ";";
+ }
+ };
+
+ struct LocalInterfaceFwd : Traversal::LocalInterface
+ {
+ virtual void
+ traverse (Type& i)
+ {
+ cout << "local interface " << i.name () << ";";
+ }
+ };
+
+ struct UnconstrainedInterfaceFwd : Traversal::UnconstrainedInterface
+ {
+ virtual void
+ traverse (Type& i)
+ {
+ cout << "interface " << i.name () << ";";
+ }
+ };
+
+ struct StructFwd : Traversal::Struct
+ {
+ virtual void
+ traverse (Type& i)
+ {
+ cout << "struct " << i.name () << ";";
+ }
+ };
+
+
+ struct AbstractInterface : Traversal::AbstractInterface
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "abstract interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct LocalInterface : Traversal::LocalInterface
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct UnconstrainedInterface : Traversal::UnconstrainedInterface
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+
+ struct Module : Traversal::Module
+ {
+ virtual void
+ pre (Type& m)
+ {
+ cout << "module " << m.name ();
+ }
+
+ virtual void
+ names_pre (Type& m)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type& m)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type& m)
+ {
+ cout << ";";
+ }
+ };
+
+ struct Struct : Traversal::Struct
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "struct ";
+ }
+
+ virtual void
+ name (Type& s)
+ {
+ cout << s.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+ };
+
+
+ struct TypeId : Traversal::TypeId
+ {
+ virtual void
+ traverse (Type& ti)
+ {
+ cout << "typeid " << ti.declaration () << " " << ti.id () << ";";
+ }
+ };
+
+
+ struct TypePrefix : Traversal::TypePrefix
+ {
+ virtual void
+ traverse (Type& ti)
+ {
+ cout << "typeprefix " << ti.declaration () << " "
+ << ti.prefix () << ";";
+ }
+ };
+
+ struct TypeName : Traversal::Nameable,
+ Traversal::FundamentalType
+ {
+ virtual void
+ traverse (SemanticGraph::Nameable& n)
+ {
+ cout << n.scoped_name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::FundamentalType& ft)
+ {
+ cout << ft.name ();
+ }
+ };
+
+ struct UnboundedSequence : Traversal::UnboundedSequence
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "sequence<";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ">";
+ }
+ };
+
+ // Layer 4
+ //
+
+ //--
+
+ struct Operation : Traversal::Operation
+ {
+ virtual void
+ name (Type& o)
+ {
+ cout << " " << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ cout << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ cout << " raises (";
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct Attribute : Traversal::Attribute
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "attribute ";
+ }
+
+ virtual void
+ name (Type& a)
+ {
+ cout << " " << a.name ();
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ };
+
+ struct Member : Traversal::Member
+ {
+ virtual void
+ name (Type& m)
+ {
+ cout << " " << m.name ();
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+ };
+
+ // Layer 5
+ //
+
+ //--
+
+ struct Parameter : Traversal::InParameter,
+ Traversal::OutParameter,
+ Traversal::InOutParameter
+ {
+ virtual void
+ pre (InParameter& p)
+ {
+ cout << " in ";
+ }
+
+ virtual void
+ pre (OutParameter& p)
+ {
+ cout << " out ";
+ }
+
+ virtual void
+ pre (InOutParameter& p)
+ {
+ cout << " inout ";
+ }
+
+ virtual void
+ name (InParameter& p)
+ {
+ cout << p.name ();
+ }
+
+ virtual void
+ name (OutParameter& p)
+ {
+ cout << p.name ();
+ }
+
+ virtual void
+ name (InOutParameter& p)
+ {
+ cout << p.name ();
+ }
+ };
+
+ public:
+
+ GeneratorImpl ()
+ {
+ // Layer 1
+ //
+ unit.edge_traverser (contains_principal);
+
+ //--
+
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ region.edge_traverser (quote_includes);
+ region.edge_traverser (bracket_includes);
+ region.edge_traverser (contains_root);
+
+ //--
+
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ root.edge_traverser (mentions);
+ root.edge_traverser (defines);
+ root.edge_traverser (aliases);
+
+ //--
+
+ mentions.node_traverser (abstract_interface_fwd);
+ mentions.node_traverser (local_interface_fwd);
+ mentions.node_traverser (unconstrained_interface_fwd);
+ mentions.node_traverser (struct_fwd);
+
+ defines.node_traverser (abstract_interface);
+ defines.node_traverser (local_interface);
+ defines.node_traverser (unconstrained_interface);
+ defines.node_traverser (module);
+ defines.node_traverser (struct_);
+ defines.node_traverser (type_id);
+ defines.node_traverser (type_prefix);
+
+ aliases.node_traverser (type_name);
+ aliases.node_traverser (unbounded_sequence);
+
+ // Layer 4
+ //
+ module.edge_traverser (mentions);
+ module.edge_traverser (defines);
+ module.edge_traverser (aliases);
+
+ abstract_interface.edge_traverser (inherits);
+ local_interface.edge_traverser (inherits);
+ unconstrained_interface.edge_traverser (inherits);
+
+ abstract_interface.edge_traverser (interface_defines);
+ local_interface.edge_traverser (interface_defines);
+ unconstrained_interface.edge_traverser (interface_defines);
+
+ struct_.edge_traverser (struct_defines);
+
+ unbounded_sequence.edge_traverser (specialized);
+
+ //--
+
+ inherits.node_traverser (type_name);
+
+ interface_defines.node_traverser (operation);
+ interface_defines.node_traverser (attribute);
+
+ struct_defines.node_traverser (member);
+
+ specialized.node_traverser (type_name);
+
+ // Layer 5
+ //
+
+ operation.edge_traverser (receives);
+ operation.edge_traverser (returns);
+
+ attribute.edge_traverser (belongs);
+
+ member.edge_traverser (belongs);
+
+ //--
+
+ receives.node_traverser (parameter);
+ returns.node_traverser (type_name);
+ belongs.node_traverser (type_name);
+
+ // Layer 6
+ //
+ parameter.edge_traverser (belongs);
+
+ }
+
+ protected:
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ //--
+
+ Traversal::TranslationRegion region;
+
+ // Layer 2
+ //
+ BracketIncludes bracket_includes;
+ QuoteIncludes quote_includes;
+ Traversal::ContainsRoot contains_root;
+
+ //--
+
+ Traversal::Root root;
+
+ // Layer 3
+ //
+ Traversal::Mentions mentions;
+ Traversal::Defines defines;
+ Aliases aliases;
+
+ //--
+
+ AbstractInterfaceFwd abstract_interface_fwd;
+ LocalInterfaceFwd local_interface_fwd;
+ UnconstrainedInterfaceFwd unconstrained_interface_fwd;
+
+ StructFwd struct_fwd;
+
+ AbstractInterface abstract_interface;
+ LocalInterface local_interface;
+ UnconstrainedInterface unconstrained_interface;
+
+ Module module;
+
+ Struct struct_;
+
+ TypeId type_id;
+ TypePrefix type_prefix;
+
+ TypeName type_name;
+
+ UnboundedSequence unbounded_sequence;
+
+ // Layer 4
+ //
+ Traversal::Inherits inherits;
+ Traversal::Defines interface_defines;
+ Traversal::Defines struct_defines;
+ Traversal::Specialized specialized;
+
+ //--
+
+ Operation operation;
+ Attribute attribute;
+ Member member;
+
+ // Layer 5
+ //
+ Traversal::Receives receives;
+ Traversal::Returns returns;
+ Traversal::Belongs belongs;
+
+ //--
+
+ Parameter parameter;
+
+ // Layer 6
+ //
+
+ public:
+ void
+ generate (CCF::IDL2::SemanticGraph::TranslationUnit& tu)
+ {
+ // Plug automatic IDL indenter.
+ //
+ Indentation::Implanter<Indentation::IDL> guard (cout);
+
+ unit.traverse (tu);
+ }
+ };
+}
+
+#endif // TEST_IDL2_TRAVERSAL_RECREATE_GENERATOR_IMPL_HPP
diff --git a/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/recreate.cpp b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/recreate.cpp
new file mode 100644
index 00000000000..560040bbcb0
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL2/Traversal/Recreate/recreate.cpp
@@ -0,0 +1,24 @@
+// file : Test/IDL2/Traversal/Recreate/recreate.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <iostream>
+
+#include "CCF/IDL2/SemanticGraph.hpp"
+
+#include "../../SemanticGraph/HandBuilt/Builder.hpp"
+
+#include "Generator.hpp"
+
+int
+main ()
+{
+ Builder b;
+ CCF::IDL2::SemanticGraph::TranslationUnit& tu (*b.build ());
+
+ IDL2::Generator g;
+
+ g.generate (tu);
+
+ delete &tu;
+}
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.cpp b/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.cpp
new file mode 100644
index 00000000000..06310ecd4b8
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.cpp
@@ -0,0 +1,32 @@
+// file : Test/IDL3/Compiler/Generator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Generator.hpp"
+#include "GeneratorImpl.hpp"
+
+namespace IDL3
+{
+ Generator::
+ ~Generator ()
+ {
+ }
+
+ Generator::
+ Generator ()
+ : pimpl_ (new GeneratorImpl), impl_ (*pimpl_)
+ {
+ }
+
+ Generator::
+ Generator (GeneratorImpl& gi)
+ : pimpl_ (), impl_ (gi)
+ {
+ }
+
+ void Generator::
+ generate (CCF::IDL3::SemanticGraph::TranslationUnit& tu)
+ {
+ impl_.generate (tu);
+ }
+}
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.hpp b/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.hpp
new file mode 100644
index 00000000000..667e1d3c69f
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/Generator.hpp
@@ -0,0 +1,34 @@
+// file : Test/IDL3/Compiler/Generator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_IDL3_COMPILER_GENERATOR_HPP
+#define TEST_IDL3_COMPILER_GENERATOR_HPP
+
+#include <memory>
+
+#include "CCF/IDL3/SemanticGraph.hpp"
+
+namespace IDL3
+{
+ class GeneratorImpl;
+
+ class Generator
+ {
+ public:
+ ~Generator ();
+ Generator ();
+
+ void
+ generate (CCF::IDL3::SemanticGraph::TranslationUnit& tu);
+
+ protected:
+ Generator (GeneratorImpl&);
+
+ protected:
+ std::auto_ptr<GeneratorImpl> pimpl_;
+ GeneratorImpl& impl_;
+ };
+}
+
+#endif // TEST_IDL3_COMPILER_GENERATOR_HPP
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/GeneratorImpl.hpp b/modules/CIAO/CCF/Test/IDL3/Compiler/GeneratorImpl.hpp
new file mode 100644
index 00000000000..91e3ab3cb49
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/GeneratorImpl.hpp
@@ -0,0 +1,616 @@
+// file : Test/IDL3/Compiler/GeneratorImpl.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TEST_IDL3_COMPILER_GENERATOR_IMPL_HPP
+#define TEST_IDL3_COMPILER_GENERATOR_IMPL_HPP
+
+#include <iostream>
+
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+#include "CCF/IDL3/SemanticGraph.hpp"
+#include "CCF/IDL3/Traversal.hpp"
+
+#include "../../IDL2/Traversal/Recreate/GeneratorImpl.hpp"
+
+namespace IDL3
+{
+ using namespace CCF::IDL3;
+
+ using std::cout;
+ using std::endl;
+
+ class GeneratorImpl : public IDL2::GeneratorImpl
+ {
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+ struct ComponentFwd : Traversal::Component
+ {
+ virtual void
+ traverse (Type& i)
+ {
+ cout << "component " << i.name () << ";";
+ }
+ };
+
+ struct Component : Traversal::Component
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "component ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ cout << " supports ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+
+ struct Home : Traversal::Home
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "home ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ cout << " supports ";
+ }
+
+ virtual void
+ manages_pre (Type&)
+ {
+ cout << " manages ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct AbstractEventType : Traversal::AbstractEventType
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "abstract eventtype ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ cout << " supports ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ struct ConcreteEventType : Traversal::ConcreteEventType
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "eventtype ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ cout << i.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ cout << " : ";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ cout << " supports ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ cout << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ cout << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ // Layer 4
+ //
+
+ struct Provider : Traversal::ProviderData
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "provides ";
+ }
+
+ virtual void
+ name (Type& e)
+ {
+ cout << " " << e.name ();
+ }
+
+ virtual void
+ post (Type& e)
+ {
+ cout << ";";
+ }
+ };
+
+ struct User : Traversal::UserData
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "uses ";
+ }
+
+ virtual void
+ name (Type& e)
+ {
+ cout << " " << e.name ();
+ }
+
+ virtual void
+ post (Type& e)
+ {
+ cout << ";";
+ }
+ };
+
+ struct Publisher : Traversal::PublisherData
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "publishes ";
+ }
+
+ virtual void
+ name (Type& e)
+ {
+ cout << " " << e.name ();
+ }
+
+ virtual void
+ post (Type& e)
+ {
+ cout << ";";
+ }
+ };
+
+ struct Emitter : Traversal::EmitterData
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "emits ";
+ }
+
+ virtual void
+ name (Type& e)
+ {
+ cout << " " << e.name ();
+ }
+
+ virtual void
+ post (Type& e)
+ {
+ cout << ";";
+ }
+ };
+
+ struct Consumer : Traversal::ConsumerData
+ {
+ virtual void
+ pre (Type&)
+ {
+ cout << "consumes ";
+ }
+
+ virtual void
+ name (Type& e)
+ {
+ cout << " " << e.name ();
+ }
+
+ virtual void
+ post (Type& e)
+ {
+ cout << ";";
+ }
+ };
+
+ //--
+
+ struct HomeFactory : Traversal::HomeFactory
+ {
+ virtual void
+ returns (Type&)
+ {
+ cout << "factory ";
+ }
+
+ virtual void
+ name (Type& hf)
+ {
+ cout << hf.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ cout << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ cout << " raises (";
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+
+ struct HomeFinder : Traversal::HomeFinder
+ {
+ virtual void
+ returns (Type&)
+ {
+ cout << "finder ";
+ }
+
+ virtual void
+ name (Type& hf)
+ {
+ cout << hf.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ cout << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ cout << " raises (";
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ cout << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ cout << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ cout << ", ";
+ }
+ };
+
+ // Layer 5
+ //
+
+ //--
+
+ public:
+
+ GeneratorImpl ()
+ {
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+
+ mentions.node_traverser (component_fwd);
+
+ defines.node_traverser (component);
+
+ defines.node_traverser (home);
+
+ defines.node_traverser (abstract_event_type);
+ defines.node_traverser (concrete_event_type);
+
+ // Layer 4
+ //
+
+ component.edge_traverser (inherits);
+ component.edge_traverser (supports);
+ component.edge_traverser (component_defines);
+
+ home.edge_traverser (inherits);
+ home.edge_traverser (supports);
+ home.edge_traverser (manages);
+ home.edge_traverser (home_defines);
+
+ //@@ eventtype can define the whole bunch of stuff
+ // just like valuetype.
+ //
+ abstract_event_type.edge_traverser (inherits);
+ concrete_event_type.edge_traverser (inherits);
+
+ //--
+
+ supports.node_traverser (type_name);
+
+ component_defines.node_traverser (attribute);
+ component_defines.node_traverser (provider);
+ component_defines.node_traverser (user);
+ component_defines.node_traverser (publisher);
+ component_defines.node_traverser (emitter);
+ component_defines.node_traverser (consumer);
+
+ manages.node_traverser (type_name);
+
+ //@@ home can define the whole bunch of stuff just like
+ // interface & valuetype.
+
+ home_defines.node_traverser (home_factory);
+ home_defines.node_traverser (home_finder);
+
+ // Layer 5
+ //
+
+ provider.edge_traverser (belongs);
+ user.edge_traverser (belongs);
+ publisher.edge_traverser (belongs);
+ emitter.edge_traverser (belongs);
+ consumer.edge_traverser (belongs);
+
+ home_factory.edge_traverser (receives);
+ home_finder.edge_traverser (receives);
+
+ //--
+
+ // Layer 6
+ //
+
+ }
+
+ protected:
+ // Layer 1
+ //
+
+ // Layer 2
+ //
+
+ // Layer 3
+ //
+
+ //--
+
+ ComponentFwd component_fwd;
+
+ Component component;
+
+ Home home;
+
+ AbstractEventType abstract_event_type;
+ ConcreteEventType concrete_event_type;
+
+
+ // Layer 4
+ //
+ Traversal::Supports supports;
+ Traversal::Defines component_defines;
+
+ Traversal::Manages manages;
+ Traversal::Defines home_defines;
+
+ //--
+
+ Provider provider;
+ User user;
+ Publisher publisher;
+ Emitter emitter;
+ Consumer consumer;
+
+ HomeFactory home_factory;
+ HomeFinder home_finder;
+
+ // Layer 5
+ //
+
+ // Layer 6
+ //
+
+ public:
+ void
+ generate (CCF::IDL3::SemanticGraph::TranslationUnit& tu)
+ {
+ // Plug automatic IDL indenter.
+ //
+ Indentation::Implanter<Indentation::IDL> guard (cout);
+
+ unit.traverse (tu);
+ }
+ };
+}
+
+#endif // TEST_IDL3_COMPILER_GENERATOR_IMPL_HPP
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/driver.cpp b/modules/CIAO/CCF/Test/IDL3/Compiler/driver.cpp
new file mode 100644
index 00000000000..d2f8ff91ba0
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/driver.cpp
@@ -0,0 +1,97 @@
+// file : Test/IDL3/Compiler/driver.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/IDL3/LexicalAnalyzer.hpp"
+#include "CCF/IDL3/Parser.hpp"
+#include "CCF/IDL3/SemanticGraph.hpp"
+#include "CCF/IDL3/SemanticAction/Impl/Factory.hpp"
+
+#include "Generator.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::cout;
+using std::endl;
+
+using namespace CCF::CompilerElements;
+using namespace CCF::IDL3;
+using namespace SemanticGraph;
+
+int
+main ()
+{
+ try
+ {
+ Diagnostic::Stream dout;
+
+ fs::path file_path ("stdout");
+
+ InputStreamAdapter isa (std::cin);
+ CPP::Preprocessor pp (isa);
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu;
+
+ // Compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action", false);
+
+
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ //@@ should be able to use IDL3 here. Or better yet get rid of this
+ // function completely.
+ //
+ CCF::IDL2::Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return -1;
+
+ IDL3::Generator g;
+
+ g.generate (tu);
+
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ return -1;
+ }
+}
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/result.idl.orig b/modules/CIAO/CCF/Test/IDL3/Compiler/result.idl.orig
new file mode 100644
index 00000000000..730e7c103cb
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/result.idl.orig
@@ -0,0 +1,103 @@
+module ComponentTest
+{
+ component A;
+ component B
+ {
+ };
+ interface I
+ {
+ };
+ interface J
+ {
+ };
+ component A : ::ComponentTest::B supports ::ComponentTest::I, ::ComponentTest::J
+ {
+ };
+};
+module ConsumesTest
+{
+ eventtype E
+ {
+ };
+ component C
+ {
+ consumes ::ConsumesTest::E e;
+ };
+};
+module EmitsTest
+{
+ eventtype E
+ {
+ };
+ component C
+ {
+ emits ::EmitsTest::E e;
+ };
+};
+module EventTypeTest
+{
+ eventtype E
+ {
+ };
+};
+module HomeTest
+{
+ interface I
+ {
+ };
+ interface J
+ {
+ };
+ component A
+ {
+ };
+ home AH manages ::HomeTest::A
+ {
+ };
+ component B
+ {
+ };
+ home BH : ::HomeTest::AH supports ::HomeTest::I, ::HomeTest::J manages ::HomeTest::B
+ {
+ };
+};
+module HomeFactoryTest
+{
+ component A
+ {
+ };
+ home AH manages ::HomeFactoryTest::A
+ {
+ factory new (in long size);
+ };
+};
+module ProvidesTest
+{
+ interface I
+ {
+ };
+ component C
+ {
+ provides ::ProvidesTest::I i;
+ };
+};
+module PublishesTest
+{
+ eventtype E
+ {
+ };
+ component C
+ {
+ publishes ::PublishesTest::E e;
+ };
+};
+module UsesTest
+{
+ interface I
+ {
+ };
+ component C
+ {
+ uses ::UsesTest::I i;
+ };
+};
diff --git a/modules/CIAO/CCF/Test/IDL3/Compiler/test.idl b/modules/CIAO/CCF/Test/IDL3/Compiler/test.idl
new file mode 100644
index 00000000000..a7e1cfb1d5a
--- /dev/null
+++ b/modules/CIAO/CCF/Test/IDL3/Compiler/test.idl
@@ -0,0 +1,166 @@
+// file : CCF/Test/IDL3/Compiler/test.idl
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+// Component
+//
+//
+
+module ComponentTest
+{
+ component A;
+
+ component B
+ {
+ };
+
+ interface I
+ {
+ };
+
+ interface J
+ {
+ };
+
+ component A : B supports I, J
+ {
+ };
+};
+
+
+// Consumes
+//
+//
+module ConsumesTest
+{
+ eventtype E
+ {
+ };
+
+ component C
+ {
+ consumes E e;
+ };
+};
+
+
+// Emits
+//
+//
+module EmitsTest
+{
+ eventtype E
+ {
+ };
+
+ component C
+ {
+ emits E e;
+ };
+};
+
+
+// EventType (incomplete)
+//
+//
+module EventTypeTest
+{
+ eventtype E
+ {
+ };
+};
+
+
+// Home
+//
+//
+module HomeTest
+{
+ interface I
+ {
+ };
+
+ interface J
+ {
+ };
+
+ component A
+ {
+ };
+
+ home AH manages A
+ {
+ };
+
+ component B
+ {
+ };
+
+ home BH : AH supports I, J manages B
+ {
+ };
+};
+
+
+// HomeFactory
+//
+//
+module HomeFactoryTest
+{
+ component A
+ {
+ };
+
+ home AH manages A
+ {
+ factory new (in long size);
+ };
+};
+
+
+// Provides
+//
+//
+module ProvidesTest
+{
+ interface I
+ {
+ };
+
+ component C
+ {
+ provides I i;
+ };
+};
+
+
+// Publishes
+//
+//
+module PublishesTest
+{
+ eventtype E
+ {
+ };
+
+ component C
+ {
+ publishes E e;
+ };
+};
+
+
+// Uses
+//
+//
+module UsesTest
+{
+ interface I
+ {
+ };
+
+ component C
+ {
+ uses I i;
+ };
+};
diff --git a/modules/CIAO/CCF/Version b/modules/CIAO/CCF/Version
new file mode 100644
index 00000000000..227cea21564
--- /dev/null
+++ b/modules/CIAO/CCF/Version
@@ -0,0 +1 @@
+2.0.0
diff --git a/modules/CIAO/CIAO-INSTALL.html b/modules/CIAO/CIAO-INSTALL.html
new file mode 100644
index 00000000000..680b36d0f9c
--- /dev/null
+++ b/modules/CIAO/CIAO-INSTALL.html
@@ -0,0 +1,267 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- $Id$ --><html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <title>Building and Installing CIAO </title>
+ <LINK rev="made" href="mailto:schmidt@cs.wustl.edu"></head>
+ <body text="#000000" vLink="#ff0f0f" link="#000fff" bgColor="#ffffff">
+ <hr>
+ <h3>Building and Installing CIAO
+ </h3>
+ <p>The first thing you should do to install CIAO is to set the environment
+ variable <code>CIAO_ROOT</code> to be <code>$TAO_ROOT/CIAO</code>. Please refer
+ to the <A href="../../ACE-INSTALL.html">ACE installation notes</A> and <A href="../TAO-INSTALL.html">
+ TAO installation notes</A> for instructions on setting <code>$ACE_ROOT</code>
+ and <code>$TAO_ROOT</code>, respectively. They are needed since CIAO sits on
+ top of ACE+TAO. Compiling ACE+TAO successfully is the <strong>first</strong> requirement
+ for compiling CIAO.
+ </p>
+ <p>CIAO is divided into several parts, so different installation/building rules
+ apply to different parts of CIAO.<br>
+ <br>
+ </p>
+ <ol>
+ <li>
+ CIAO core/examples: This part of CIAO include following directories: <code>$CIAO_ROOT/ciao</code>,
+ <code>$CIAO_ROOT/examples</code>.
+ <li>
+ CIDL Compiler: This part of CIAO include <code>$CIAO_ROOT/CCF</code> and <code>$CIAO_ROOT/CIDLC</code>.
+ <li>
+ CIAO Deployment and Configuration Framework: This part of CIAO includes all the
+ directories in <code>$CIAO_ROOT/DAnCE</code>. DAnCE is an implementation of the
+ new <a href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-02">Deployment and
+ Configuration</a> specification. We refer, henceforth, to all pieces as CIAO
+ in general. The above two pieces will be referred specifically by their names
+ as CIDLC and DAnCE though they are part of CIAO.
+ </li>
+ </ol>
+ <hr>
+ <h3>Supported Platforms for CIAO
+ </h3>
+ <p>CIAO should be usable on all platforms that TAO runs on. Please see <A href="../TAO-INSTALL.html">
+ TAO's installation</A> pages for details
+ </p>
+ <h3>Supported Platforms for CIDLC
+ </h3>
+ <p>CIDLC is supported only on a small subset of platforms. Please refer to <A href="CCF/Documentation/Build.html">
+ this</A> for details on how to build CIDLC.
+ </p>
+ <b>For Building CIAO CIDLC Compiler</b>
+ <table width="100%" border="1">
+ <tr>
+ <td><b>Fully supported, i.e., continually tested and used daily</b>
+ </td>
+ <td>Windows 2000/XP (VC 7.1), Linux(GCC 3.2 or higher)
+ </td>
+ </tr>
+ <tr>
+ <td><b>Binaries <a href="http://www.dre.vanderbilt.edu/cidlc/binary">available</a> intermittently,
+ no automatic builds or tests</b>
+ </td>
+ <td>MacOS, Solaris
+ </td>
+ </tr>
+ </table>
+ <p>If you have <A href="../../docs/ACE-porting.html">porting questions</A> or
+ have a problem compiling CIAO with TAO and ACE on the platforms shown above
+ please send email to either <A href="news:comp.soft-sys.ace">ACE Newsgroup</A> or
+ the <A href="mailto:ciao-users@cs.wustl.edu">CIAO mailing list</A> and we'll
+ try to help you fix the problems. You can also submit bug reports and
+ enhancement requests in our <A href="../../docs/usage-bugzilla.html">bug tracking
+ system</A>.
+ </p>
+ <p>CIAO can be obtained <a href="http://www.dre.vanderbilt.edu/Download.html">electronically</a>
+ via the WWW and ftp. <a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a> is
+ bundled with the ACE and TAO release. You'll always need the most recent
+ version of ACE and TAO because CIAO tracks changes to ACE and TAO very closely.
+ </p>
+ <hr>
+ <h3>Install CIDL Compiler
+ </h3>
+ <p>We suggest you download the prebuilt binary <code>cidlc(exe)</code> from <strong>
+ <a href="http://www.dre.vanderbilt.edu/cidlc/">here</a></strong> or, if you
+ are using Windows or Linux, you can build it by yourself.
+ </p>
+ <p><A href="../../MPC/README">MPC</A> is used to build the CIDL compiler on <strong>
+ Linux</strong>. The procedure is outlined below.
+ </p>
+ <ul>
+ <li>
+ Open up <code>$ACE_ROOT/bin/MakeProjectCreator/config/default.features</code>
+ and set <code>cidl=1</code> and <code>boost=1</code>, each on its own line.
+ <li>
+ Make sure you set cidl=1, boost=1, and exceptions=1 in <code>$ACE_ROOT/include/makeinclude/platfrom_macros.GNU</code>.
+ <li>
+ Install <code>boost_filesystem</code>, <code>boost_regex</code> and <code>Utility
+ Library</code>. For how to do that please see <A href="./CCF/Documentation/Build.html">
+ Build.html</A>.
+ <li>
+ In <code>$CIAO_ROOT/CIDLC</code> run <code>$ACE_ROOT/bin/mwc.pl CIDLC.mwc -type gnuace</code>
+ <li>
+ In <code>$CIAO_ROOT/CIDLC</code> run <code>make</code>.<br>
+ Note: The linking time is a bit long (more than 5 Minutes with an Intel XEON
+ 1.90GHZ CPU, please be patient).
+ </li>
+ </ul>
+ <p><A href="../../MPC/README">MPC</A> is used to build the CIDL compiler on <strong>
+ Windows</strong>. The procedure is outlined below.
+ </p>
+ <ul>
+ <li>
+ If you have not created it already, create the file <code>%ACE_ROOT%/bin/MakeProjectCreator/config/default.features</code>
+ and add <code>cidl=1</code> and <code>boost=1</code> to it, each on its own
+ line.
+ <li>
+ Install the <a href="http://www.boost.org">Boost</a>
+ libraries on your machine. For Windows, you can download either the
+ Windows-specific .exe file or the platform-independent .zip file. Use version
+ 1.32.0 or later. The accompanying documentation on how to build and install
+ Boost is pretty straightforward.
+ <li>
+ Set the following environment variables:
+ <ul>
+ <li>
+ <code>ACE_ROOT</code>
+ - [path&nbsp;ending with&nbsp;ACE_wrappers directory] (this should already be
+ set if you're using CIAO)
+ <li>
+ <code>BOOST_CFG</code> - <code>_vc7_mdsd</code>
+ <li>
+ <code>BOOST_ROOT</code>
+ - [path ending with Boost directory]
+ <li>
+ <code>BOOST_VERSION</code> - [name of the directory under <code>%BOOST_ROOT%\include</code>,
+ for ex. <code>boost-1_32</code>, for Boost version 1.32.0]
+ </ul>
+ <li>
+ In <code>%CIAO_ROOT%\CIDLC</code> run <code>%ACE_ROOT%\bin\mwc.pl -type vc71
+ CIDLC.mwc</code>
+ <li>
+ Open <code>CIDLC.sln</code> and build as usual. Within the solution, the CIDLC
+ project is the top-level one, which depends on all the other projects, and
+ produces <code>cidlc.exe</code> in <code>%CIAO_ROOT%\bin</code>.
+ </li>
+ </ul>
+ <hr>
+ <h3>Obtaining and Installing Xerces-C
+ </h3>
+ <p>The Xerces-C XML parsing library is a necessary component to build parts of
+ DAnCE that need to process XML based descriptor files, which include the <b>Plan
+ Launcher</b> and the <b>Repository Manager</b>. Currently, the only Xerces-C
+ version supported by the DOC group is version 2.6 or later.
+ Earlier versions of the Xerces-C library may work.
+ </p>
+ <h4>Building Xerces-C
+ </h4>
+ <p>You may check <a href="http://www.dre.vanderbilt.edu/~wotte/xerces/">here</a> to
+ see if there is a prebuilt binary available for your platform. Otherwise, you
+ will have to obtain the source from the <a href="http://xml.apache.org/xerces-c/download.cgi">
+ Xerces-C webpage</a> and build it. Building Xerces-C is fairly
+ straightfoward. Please see the documentation available <a href="http://xml.apache.org/xerces-c/build.html">
+ here</a> for instructions particular to your platform.
+ </p>
+ <ul>
+ <li>
+ <strong>NOTE</strong>: Some of the provided projects with Xerces-C attach
+ inconsistant library decorators onto the end of the Xerces-C libraries. The MPC
+ build tool will expect these libraries to be named xerces-c for non debug
+ versions, and xerces-cd for debug versions.
+ </ul>
+ <h4>Xerces-C Environment Settings
+ </h4>
+ <p>If the Xerces includes and libraries are in your system include and library
+ paths, respectively, then you need not set up any environment and may proceed
+ to the next step. If not, you will need to set an environment variable named
+ XERCESCROOT to a path such that $XERCESCROOT/include points to the includes and
+ $XERCESCROOT/lib points to the libraries. Also make sure that $XERCESCROOT/lib
+ is in the appropriate environment variable that your platform uses to search
+ for dynamically linked libraries.
+ </p>
+ <hr>
+ <h3>Install CIAO core/tools/examples
+ </h3>
+ <p>Most of the GNUmakefiles/project files/solution files required to build CIAO
+ are available in the release. If you don't like the configurations used, please
+ feel free to regenerate them using MPC. Please see <A href="../../MPC/README">this</A>
+ for more details.
+ </p>
+ <p>To build CIAO core/tools/examples:
+ </p>
+ <ol>
+ <li>
+ Make sure ACE and TAO are built.
+ <li>
+ Make sure you have the Xerces-C libraries installed/built
+ <li>
+ Make sure all ACE/TAO/etc. generated libs are in <code>$ACE_ROOT/lib</code>. To
+ build CIAO you will need:
+ <ul>
+ <li>
+ <code>ACE</code>
+ <li>
+ <code>TAO</code>
+ <li>
+ <code>TAO_IDL</code>
+ <li>
+ <code>IFR_Client</code>
+ <li>
+ <code>IORTable</code>
+ <li>
+ <code>Valuetype</code>
+ <li>
+ <code>Security</code>
+ <li>
+ <code>ACEXML</code>
+ </li>
+ </ul>
+ <li>
+ Make sure you have cidlc or cidlc.exe in <code>$CIAO_ROOT\bin</code>
+ with the right permission setting (executable).
+ <li>
+ Generate the Makefile/Solution/Project files and build
+ <p>For the supported build tools please see <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">
+ MPC manual</a>.
+ </p>
+ <p>You have to execute the MPC command in the following directories if you only
+ want to build the examples and have a peek at CIAO:
+ </p>
+ <ul>
+ <li>
+ <code>$CIAO_ROOT/DAnCE/</code>
+ </li>
+ </ul>
+ <p>On <strong>Linux</strong>: do <code>$ACE_ROOT/bin/mwc.pl -type gnuace</code> at the
+ locations specified above then <code>make</code>.
+ </p>
+ <p>On <strong>Windows/VC71</strong>: do <code>%ACE_ROOT%/bin/mwc.pl -type vc71</code>
+ at the locations specified above then Open the solution file and build.
+ </p>
+ <p><strong>Note:</strong> You can run <code>mwc.pl</code> at <code>$CIAO_ROOT</code>
+ as long as you don't intend to build CIDL compiler with MPC. If this is the
+ case(default), you can run the mwc.pl command with proper augment once then you
+ can do <code>make</code> at <code>$CIAO_ROOT</code> (Linux) or open the
+ workspace/solution file at <code>$CIAO_ROOT</code> (Windows) to build.
+ </p>
+ </li>
+ </ol>
+ <strong>Building CIAO quickly</strong> : You can build CIAO quickly by doing
+ the following:
+ <ul class="noindent">
+ <li>
+ Remove all the GNUmakefiles or project files that are shipped with the release.
+ <li>
+ Open up <code>$CIAO_ROOT/CIAO_TAO.mwc</code>
+ .
+ <li>
+ Run <code>$ACE_ROOT/bin/mwc.pl CIAO_TAO.mwc -type gnuace</code> from <code>$CIAO_ROOT</code>
+ .
+ <li>
+ Type 'make'
+ <li style="LIST-STYLE-TYPE: none">
+ This will build all the required ACE+TAO libraries including CIAO libraries and
+ tools.
+ </li>
+ </ul>
+ <hr>
+ <p>Back to the <a href="http://www.cs.wustl.edu/~schmidt/CIAO.html">CIAO</a> home
+ page. <!--#include virtual="/~schmidt/cgi-sig.html" --></p>
+ </body>
+</html>
diff --git a/modules/CIAO/CIAO.mwc b/modules/CIAO/CIAO.mwc
new file mode 100644
index 00000000000..dd297256b34
--- /dev/null
+++ b/modules/CIAO/CIAO.mwc
@@ -0,0 +1,5 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+}
diff --git a/modules/CIAO/CIAO_DAnCE.mwc b/modules/CIAO/CIAO_DAnCE.mwc
new file mode 100644
index 00000000000..97e79d5b9a2
--- /dev/null
+++ b/modules/CIAO/CIAO_DAnCE.mwc
@@ -0,0 +1,8 @@
+//$Id$
+
+workspace {
+ ciao
+ DAnCE
+ ciaosvcs
+ tools/Config_Handlers
+}
diff --git a/modules/CIAO/CIAO_TAO.mwc b/modules/CIAO/CIAO_TAO.mwc
new file mode 100644
index 00000000000..2a42a84b833
--- /dev/null
+++ b/modules/CIAO/CIAO_TAO.mwc
@@ -0,0 +1,28 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+ $(ACE_ROOT)/ace
+ $(ACE_ROOT)/apps/gperf/src
+ $(ACE_ROOT)/ACEXML
+ $(TAO_ROOT)/tao
+ $(TAO_ROOT)/TAO_IDL
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Serv.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Skel.mpc
+ $(TAO_ROOT)/orbsvcs/Naming_Service
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Svc_Utils.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Security.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/IFRService.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Serv.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Skel.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent.mpc
+ DAnCE
+ ciao
+ ciaosvcs
+ tools
+ tests
+ examples
+ RACE
+}
diff --git a/modules/CIAO/CIAO_TAO_DAnCE.mwc b/modules/CIAO/CIAO_TAO_DAnCE.mwc
new file mode 100644
index 00000000000..baef8d92409
--- /dev/null
+++ b/modules/CIAO/CIAO_TAO_DAnCE.mwc
@@ -0,0 +1,25 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+ $(ACE_ROOT)/ace
+ $(ACE_ROOT)/apps/gperf/src
+ $(ACE_ROOT)/contrib/minizip
+ $(ACE_ROOT)/ACEXML
+ $(TAO_ROOT)/tao
+ $(TAO_ROOT)/TAO_IDL
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Serv.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNaming_Skel.mpc
+ $(TAO_ROOT)/orbsvcs/Naming_Service
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Svc_Utils.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Security.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/IFRService.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Serv.mpc
+ $(TAO_ROOT)/orbsvcs/orbsvcs/RTEvent_Skel.mpc
+ ciao
+ DAnCE
+ ciaosvcs
+ tools/Config_Handlers
+}
diff --git a/modules/CIAO/CIDLC/AttributeHeaderEmitters.cpp b/modules/CIAO/CIDLC/AttributeHeaderEmitters.cpp
new file mode 100644
index 00000000000..d5794a889f5
--- /dev/null
+++ b/modules/CIAO/CIDLC/AttributeHeaderEmitters.cpp
@@ -0,0 +1,196 @@
+// file : CIDLC/AttributeHeaderEmitters.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "AttributeHeaderEmitters.hpp"
+#include "Literals.hpp"
+
+using namespace StringLiterals;
+
+WriteAttributeHeaderEmitter::WriteAttributeHeaderEmitter (Context& c)
+ : EmitterBase (c),
+ write_type_name_emitter_ (c),
+ type_name_emitter_ (c)
+{
+ write_belongs_.node_traverser (write_type_name_emitter_);
+
+ edge_traverser (set_raises_);
+ set_raises_.node_traverser (type_name_emitter_);
+}
+
+void
+WriteAttributeHeaderEmitter::pre (SemanticGraph::ReadWriteAttribute&)
+{
+ os << "void" << endl;
+}
+
+void
+WriteAttributeHeaderEmitter::name (SemanticGraph::ReadWriteAttribute& a)
+{
+ os << a.name () << " (" << endl;
+
+ Traversal::ReadWriteAttribute::belongs (a, write_belongs_);
+
+ os << " " << a.name () << ")" << endl;
+}
+
+void
+WriteAttributeHeaderEmitter::get_raises (SemanticGraph::ReadWriteAttribute&)
+{
+}
+
+void
+WriteAttributeHeaderEmitter::set_raises_none (SemanticGraph::ReadWriteAttribute&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+WriteAttributeHeaderEmitter::set_raises_pre (SemanticGraph::ReadWriteAttribute&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+WriteAttributeHeaderEmitter::set_raises_post (SemanticGraph::ReadWriteAttribute&)
+{
+ os << "))";
+}
+
+void
+WriteAttributeHeaderEmitter::post (SemanticGraph::ReadWriteAttribute&)
+{
+ os << ";" << endl;
+}
+
+void
+WriteAttributeHeaderEmitter::comma (SemanticGraph::ReadWriteAttribute&)
+{
+ os << "," << endl;
+}
+
+// ============================================================
+
+AttributeHeaderEmitter::AttributeHeaderEmitter (Context& c)
+ : EmitterBase (c),
+ read_type_name_emitter_ (c),
+ type_name_emitter_ (c)
+{
+ read_belongs_.node_traverser (read_type_name_emitter_);
+
+ edge_traverser (get_raises_);
+ get_raises_.node_traverser (type_name_emitter_);
+}
+
+// ReadWriteAttribute
+//
+void
+AttributeHeaderEmitter::pre (SemanticGraph::ReadWriteAttribute& a)
+{
+ os << "virtual ";
+
+ Traversal::ReadWriteAttribute::belongs (a, read_belongs_);
+
+ os << endl;
+}
+
+void
+AttributeHeaderEmitter::name (SemanticGraph::ReadWriteAttribute& a)
+{
+ os << a.name () << " ()" << endl;
+}
+
+void
+AttributeHeaderEmitter::get_raises_none (SemanticGraph::ReadWriteAttribute&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+AttributeHeaderEmitter::get_raises_pre (SemanticGraph::ReadWriteAttribute&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+AttributeHeaderEmitter::get_raises_post (SemanticGraph::ReadWriteAttribute&)
+{
+ os << "))";
+}
+
+void
+AttributeHeaderEmitter::set_raises (SemanticGraph::ReadWriteAttribute&)
+{
+}
+
+void
+AttributeHeaderEmitter::post (SemanticGraph::ReadWriteAttribute& a)
+{
+ os << ";" << endl;
+
+ WriteAttributeHeaderEmitter write_attribute_emitter (ctx);
+ write_attribute_emitter.traverse (a);
+}
+
+void
+AttributeHeaderEmitter::comma (SemanticGraph::ReadWriteAttribute&)
+{
+ os << "," << endl;
+}
+
+// ReadAttribute
+//
+void
+AttributeHeaderEmitter::pre (SemanticGraph::ReadAttribute& a)
+{
+ os << "virtual ";
+
+ Traversal::ReadAttribute::belongs (a, read_belongs_);
+
+ os << endl;
+}
+
+void
+AttributeHeaderEmitter::name (SemanticGraph::ReadAttribute& a)
+{
+ os << a.name () << " ()" << endl;
+}
+
+void
+AttributeHeaderEmitter::get_raises_none (SemanticGraph::ReadAttribute&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+AttributeHeaderEmitter::get_raises_pre (SemanticGraph::ReadAttribute&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+AttributeHeaderEmitter::get_raises_post (SemanticGraph::ReadAttribute&)
+{
+ os << "))";
+}
+
+void
+AttributeHeaderEmitter::set_raises (SemanticGraph::ReadAttribute&)
+{
+}
+
+void
+AttributeHeaderEmitter::post (SemanticGraph::ReadAttribute&)
+{
+ os << ";" << endl;
+}
+
+void
+AttributeHeaderEmitter::comma (SemanticGraph::ReadAttribute&)
+{
+ os << "," << endl;
+}
+
diff --git a/modules/CIAO/CIDLC/AttributeHeaderEmitters.hpp b/modules/CIAO/CIDLC/AttributeHeaderEmitters.hpp
new file mode 100644
index 00000000000..f4318ad0073
--- /dev/null
+++ b/modules/CIAO/CIDLC/AttributeHeaderEmitters.hpp
@@ -0,0 +1,119 @@
+// file : CIDLC/AttributeHeaderEmitters.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef ATTRIBUTEHEADEREMITTERS_HPP
+#define ATTRIBUTEHEADEREMITTERS_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+#include "EmitterBase.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+struct WriteAttributeHeaderEmitter : Traversal::ReadWriteAttribute,
+ EmitterBase
+{
+ WriteAttributeHeaderEmitter (Context& c);
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ get_raises (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ set_raises_none (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ set_raises_pre (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ set_raises_post (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ comma (SemanticGraph::ReadWriteAttribute&);
+
+ private:
+ INArgTypeNameEmitter write_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs write_belongs_;
+ Traversal::SetRaises set_raises_;
+};
+
+struct AttributeHeaderEmitter : Traversal::ReadAttribute,
+ Traversal::ReadWriteAttribute,
+ EmitterBase
+{
+ AttributeHeaderEmitter (Context&);
+
+ // ReadWriteAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ get_raises_none (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ set_raises (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute&);
+
+ virtual void
+ comma (SemanticGraph::ReadWriteAttribute&);
+
+ // ReadAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ name (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ get_raises_none (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ set_raises (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ post (SemanticGraph::ReadAttribute&);
+
+ virtual void
+ comma (SemanticGraph::ReadAttribute&);
+
+private:
+ ReturnTypeNameEmitter read_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs read_belongs_;
+ Traversal::GetRaises get_raises_;
+};
+
+#endif // ATTRIBUTEHEADEREMITTERS_HPP
diff --git a/modules/CIAO/CIDLC/AttributeSourceEmitters_T.hpp b/modules/CIAO/CIDLC/AttributeSourceEmitters_T.hpp
new file mode 100644
index 00000000000..9f601d27de7
--- /dev/null
+++ b/modules/CIAO/CIDLC/AttributeSourceEmitters_T.hpp
@@ -0,0 +1,360 @@
+// file : CIDLC/AttributeSourceEmitters_T.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef ATTRIBUTESOURCEEMITTERS_T_HPP
+#define ATTRIBUTESOURCEEMITTERS_T_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "Literals.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+using namespace StringLiterals;
+
+template <typename T>
+struct WriteAttributeSourceEmitter : Traversal::ReadWriteAttribute,
+ EmitterBase
+{
+ WriteAttributeSourceEmitter (Context& c,
+ T& scope,
+ bool swapping,
+ bool exec_src)
+ : EmitterBase (c),
+ scope_ (scope),
+ write_type_name_emitter_ (c),
+ type_name_emitter_ (c),
+ swapping_ (swapping),
+ exec_src_ (exec_src)
+ {
+ write_belongs_.node_traverser (write_type_name_emitter_);
+ edge_traverser (set_raises_);
+ set_raises_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ gen_swapping_set ()
+ {
+ os << "this->activate_component (" << ");"
+ << endl;
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << "void" << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << scope_.name ()
+ << (exec_src_ ? "_exec_i::" : "_Servant::")
+ << a.name () << " (" << endl;
+
+ Traversal::ReadWriteAttribute::belongs (a, write_belongs_);
+
+ os << (exec_src_ ? " /* " : " ")
+ << a.name ()
+ << (exec_src_ ? " */" : "") << endl
+ << ")" << endl;
+ }
+
+ virtual void
+ get_raises (SemanticGraph::ReadWriteAttribute&)
+ {
+ }
+
+ virtual void
+ set_raises_none (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ set_raises_pre (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ set_raises_post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << "))" << endl;
+ }
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << "{";
+
+ if (exec_src_)
+ {
+ os << STRS[YCH];
+ }
+ else
+ {
+ if (swapping_)
+ {
+ this->gen_swapping_set ();
+ }
+
+ os << "this->executor_->" << a.name () << " (" << endl
+ << a.name () << endl
+ << ");" << endl;
+ }
+
+ os << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << "," << endl;
+ }
+
+protected:
+ T& scope_;
+ Traversal::Belongs write_belongs_;
+
+private:
+ INArgTypeNameEmitter write_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::SetRaises set_raises_;
+ bool swapping_;
+ bool exec_src_;
+};
+
+template <typename T>
+struct AttributeSourceEmitter : Traversal::ReadAttribute,
+ Traversal::ReadWriteAttribute,
+ EmitterBase
+{
+ AttributeSourceEmitter (Context& c, T& scope, bool exec_src = false)
+ : EmitterBase (c),
+ scope_ (scope),
+ read_type_name_emitter_ (c),
+ type_name_emitter_ (c),
+ return_emitter_ (c),
+ exec_src_ (exec_src)
+ {
+ read_belongs_.node_traverser (read_type_name_emitter_);
+ return_belongs_.node_traverser (return_emitter_);
+ edge_traverser (get_raises_);
+ get_raises_.node_traverser (type_name_emitter_);
+ }
+
+ // ReadWriteAttribute
+ //
+
+ // Overridden by facet attribute emitter in servant source generator.
+ virtual void
+ gen_swapping_get (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << "this->activate_component ();";
+
+ Traversal::ReadWriteAttribute::belongs (a, ace_check_return_belongs_);
+
+ os << endl;
+ }
+
+ // Overridden by facet attribute emitter in servant source generator.
+ virtual void
+ gen_write_operation (SemanticGraph::ReadWriteAttribute& a,
+ bool swapping)
+ {
+ WriteAttributeSourceEmitter<T> write_attribute_emitter (ctx,
+ scope_,
+ swapping,
+ exec_src_);
+ write_attribute_emitter.traverse (a);
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& a)
+ {
+ Traversal::ReadWriteAttribute::belongs (a, read_belongs_);
+
+ os << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << scope_.name ()
+ << (exec_src_ ? "_exec_i::" : "_Servant::")
+ << a.name () << " (" << endl
+ << ")" << endl;
+ }
+
+ virtual void
+ get_raises_none (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << STRS[EXCP_SNGL] << endl;
+ }
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << "))" << endl;
+ }
+
+ virtual void
+ set_raises (SemanticGraph::ReadWriteAttribute&)
+ {
+ }
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute& a)
+ {
+ bool swapping = false;
+
+ os << "{";
+
+ if (exec_src_)
+ {
+ os << STRS[YCH] << endl;
+
+ Traversal::ReadWriteAttribute::belongs (a, return_belongs_);
+ }
+ else
+ {
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ this->gen_swapping_get (a);
+ }
+
+ os << "return this->executor_->" << a.name () << " ();";
+ }
+
+ os << "}";
+
+ this->gen_write_operation (a, swapping);
+ }
+
+ virtual void
+ comma (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << "," << endl;
+ }
+
+ // ReadAttribute
+ //
+
+ // Overridden by facet attribute emitter in servant source generator.
+ virtual void
+ gen_swapping_get (SemanticGraph::ReadAttribute& a)
+ {
+ os << "this->activate_component ();";
+
+ Traversal::ReadAttribute::belongs (a, ace_check_return_belongs_);
+
+ os << endl;
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadAttribute& a)
+ {
+ Traversal::ReadAttribute::belongs (a, read_belongs_);
+
+ os << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::ReadAttribute& a)
+ {
+ os << scope_.name ()
+ << (exec_src_ ? "_exec_i::" : "_Servant::")
+ << a.name () << " (" << endl
+ << ")" << endl;
+ }
+
+ virtual void
+ get_raises_none (SemanticGraph::ReadAttribute&)
+ {
+ os << STRS[EXCP_SNGL] << endl;
+ }
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadAttribute&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadAttribute&)
+ {
+ os << "))" << endl;
+ }
+
+ virtual void
+ set_raises (SemanticGraph::ReadAttribute&)
+ {
+ }
+
+ virtual void
+ post (SemanticGraph::ReadAttribute& a)
+ {
+ bool swapping = false;
+
+ os << "{";
+
+ if (exec_src_)
+ {
+ os << STRS[YCH] << endl;
+
+ Traversal::ReadAttribute::belongs (a, return_belongs_);
+ }
+ else
+ {
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ this->gen_swapping_get (a);
+ }
+
+ os << "return this->executor_->" << a.name () << " ();";
+ }
+
+ os << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::ReadAttribute&)
+ {
+ os << "," << endl;
+ }
+
+protected:
+ T& scope_;
+
+private:
+ ReturnTypeNameEmitter read_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ NullReturnEmitter return_emitter_;
+ Traversal::Belongs read_belongs_;
+ Traversal::Belongs return_belongs_;
+ Traversal::Belongs ace_check_return_belongs_;
+ Traversal::GetRaises get_raises_;
+ bool exec_src_;
+};
+
+#endif // ATTRIBUTESOURCEEMITTERS_T_HPP
diff --git a/modules/CIAO/CIDLC/CIDLC.mpc b/modules/CIAO/CIDLC/CIDLC.mpc
new file mode 100644
index 00000000000..034bf35a71b
--- /dev/null
+++ b/modules/CIAO/CIDLC/CIDLC.mpc
@@ -0,0 +1,16 @@
+//$Id$
+
+project(CIDLC): cidlc {
+ exename = cidlc
+ after += IDL2 IDL3 CIDL CodeGenerationKit CompilerElements
+ install = ../bin
+ libs += CIDL IDL3 IDL2 CodeGenerationKit CompilerElements
+
+ Source_Files {
+ *.cpp
+ }
+
+ Header_Files {
+ *.hpp
+ }
+}
diff --git a/modules/CIAO/CIDLC/CIDLC.mwc b/modules/CIAO/CIDLC/CIDLC.mwc
new file mode 100644
index 00000000000..7cddcf9a001
--- /dev/null
+++ b/modules/CIAO/CIDLC/CIDLC.mwc
@@ -0,0 +1,10 @@
+// $Id:
+workspace {
+ cmdline += -static
+ ../CCF/CCF/CIDL
+ ../CCF/CCF/IDL2
+ ../CCF/CCF/CodeGenerationKit
+ ../CCF/CCF/CompilerElements
+ ../CCF/CCF/IDL3
+ CIDLC.mpc
+}
diff --git a/modules/CIAO/CIDLC/Collectors.hpp b/modules/CIAO/CIDLC/Collectors.hpp
new file mode 100644
index 00000000000..e87667579b5
--- /dev/null
+++ b/modules/CIAO/CIDLC/Collectors.hpp
@@ -0,0 +1,280 @@
+// file : CIDLC/Collectors.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef COLLECTORS_HPP
+#define COLLECTORS_HPP
+
+#include <map>
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+class Declarations
+{
+public:
+ bool
+ add (CCF::IDL3::SyntaxTree::HomeDefPtr const& h)
+ {
+ return homes_.insert (h).second;
+ }
+
+ bool
+ add (CCF::IDL3::SyntaxTree::ComponentDefPtr const& c)
+ {
+ return components_.insert (c).second;
+ }
+
+ bool
+ add (CCF::CIDL::SyntaxTree::CompositionPtr const& cs,
+ CCF::IDL3::SyntaxTree::ComponentDefPtr const& cn)
+ {
+ return compositions_.insert (make_pair(cs, cn)).second;
+ }
+
+ bool
+ add (CCF::IDL3::SyntaxTree::UnconstrainedInterfaceDeclPtr const& i)
+ {
+ return interfaces_.insert (i).second
+ && interface_names_.insert (i->name ()).second;
+ }
+
+public:
+ bool
+ find (CCF::IDL3::SyntaxTree::HomeDefPtr const& h) const
+ {
+ return homes_.find (h) != homes_.end ();
+ }
+
+ bool
+ find (CCF::IDL3::SyntaxTree::ComponentDefPtr const& c) const
+ {
+ return components_.find (c) != components_.end ();
+ }
+
+ bool
+ find (CCF::CIDL::SyntaxTree::CompositionPtr const& c) const
+ {
+ return compositions_.find (c) != compositions_.end ();
+ }
+
+ bool
+ find (CCF::IDL2::SyntaxTree::UnconstrainedInterfaceDefPtr const& i) const
+ {
+ return interface_names_.find (i->name ()) != interface_names_.end ();
+ }
+
+public:
+ CCF::IDL3::SyntaxTree::ComponentDefPtr
+ resolve (CCF::CIDL::SyntaxTree::CompositionPtr const& c) const
+ {
+ CompositionMap::const_iterator i = compositions_.find (c);
+ if (i != compositions_.end ())
+ {
+ return i->second;
+ }
+ else
+ {
+ return CCF::IDL3::SyntaxTree::ComponentDefPtr (0);
+ }
+ }
+
+public:
+ bool
+ contains_suborder (CCF::CIDL::SyntaxTree::Order const& o) const
+ {
+ for (CCF::IDL2::SyntaxTree::UnconstrainedInterfaceDeclSet::const_iterator i =
+ interfaces_.begin ();
+ i != interfaces_.end ();
+ i++)
+ {
+ if (o.suborder ((*i)->order ())) return true;
+ }
+
+ for (CCF::IDL3::SyntaxTree::ComponentDefSet::const_iterator i = components_.begin ();
+ i != components_.end ();
+ i++)
+ {
+ if (o.suborder ((*i)->order ())) return true;
+ }
+
+ for (CCF::IDL3::SyntaxTree::HomeDefSet::const_iterator i = homes_.begin ();
+ i != homes_.end ();
+ i++)
+ {
+ if (o.suborder ((*i)->order ())) return true;
+ }
+
+ for (CompositionMap::const_iterator i = compositions_.begin ();
+ i != compositions_.end ();
+ i++)
+ {
+ if (o.suborder (i->first->order ())) return true;
+ }
+
+ return false;
+ }
+
+private:
+ typedef
+ std::map <CCF::CIDL::SyntaxTree::CompositionPtr,
+ CCF::IDL3::SyntaxTree::ComponentDefPtr,
+ CCF::CIDL::SyntaxTree::CompositionOrderComparator> CompositionMap;
+
+ CCF::IDL3::SyntaxTree::HomeDefSet homes_;
+ CCF::IDL3::SyntaxTree::ComponentDefSet components_;
+ CompositionMap compositions_;
+ CCF::IDL2::SyntaxTree::UnconstrainedInterfaceDeclSet interfaces_;
+ CCF::IDL2::SyntaxTree::ScopedNameSet interface_names_;
+};
+
+
+//
+//
+//
+class HomeCollector : public CCF::IDL3::Traversal::HomeDef
+{
+public:
+ HomeCollector (Declarations& declarations)
+ : declarations_ (declarations)
+ {
+ }
+
+ virtual void
+ traverse (CCF::CIDL::SyntaxTree::HomeDefPtr const& h)
+ {
+ CCF::CIDL::SyntaxTree::ScopedName n (h->name ());
+
+ CCF::CIDL::SyntaxTree::ScopedName main (n.scope (), "CCM_" + n.simple ());
+ CCF::CIDL::SyntaxTree::ScopedName expl (n.scope (), "CCM_" + n.simple () + "Explicit");
+ CCF::CIDL::SyntaxTree::ScopedName impl (n.scope (), "CCM_" + n.simple () + "Implicit");
+
+ // Check if mapping has already been provided.
+ if (h->table ().exist (main) ||
+ h->table ().exist (expl) ||
+ h->table ().exist (impl)) return;
+
+ if (declarations_.add (h))
+ {
+ // Note that I don't go after components that inherited home manages
+ // because it will be handled by component inheritance tree.
+ //
+ if (h->inherits ()) traverse (h->inherits ().resolve ());
+ }
+ }
+
+private:
+ Declarations& declarations_;
+};
+
+//
+//
+//
+class ComponentCollector : public CCF::IDL3::Traversal::ComponentDef
+{
+public:
+ ComponentCollector (Declarations& declarations)
+ : declarations_ (declarations)
+ {
+ }
+
+ virtual void
+ pre (CCF::IDL3::SyntaxTree::ComponentDefPtr const& c)
+ {
+ CCF::CIDL::SyntaxTree::ScopedName n (c->name ());
+
+ CCF::CIDL::SyntaxTree::ScopedName monolith (n.scope (), "CCM_" + n.simple ());
+ CCF::CIDL::SyntaxTree::ScopedName context (n.scope (), "CCM_" + n.simple () + "_Context");
+
+ // Check if mapping has already been provided.
+ if (c->table ().exist (context) ||
+ c->table ().exist (monolith)) return;
+
+ if(declarations_.add (c))
+ {
+ if (c->inherits ())
+ {
+ traverse (c->inherits ().resolve ());
+ }
+ }
+ }
+
+private:
+ Declarations& declarations_;
+};
+
+//
+//
+//
+class ProvidedInterfaceCollector : public CCF::IDL3::Traversal::ProvidesDecl
+{
+public:
+ ProvidedInterfaceCollector (Declarations& declarations)
+ : declarations_ (declarations)
+ {
+ }
+
+ virtual void
+ traverse (CCF::IDL3::SyntaxTree::ProvidesDeclPtr const& i)
+ {
+ //@@ CCM issue: interface should be defined at this point
+ CCF::IDL2::SyntaxTree::UnconstrainedInterfaceDeclPtr def
+ (i->type ()
+ ->dynamic_type<CCF::CIDL::SyntaxTree::UnconstrainedInterfaceDecl> ());
+
+ if (def != 0)
+ {
+ // Add to the list if it's not already there.
+ declarations_.add (def);
+ }
+ }
+
+private:
+ Declarations& declarations_;
+};
+
+
+//
+//
+//
+class HomeExecutorCollector : public CCF::CIDL::Traversal::HomeExecutor
+{
+public:
+ HomeExecutorCollector (Declarations& declarations,
+ CCF::CIDL::Traversal::Dispatcher* home_collector,
+ CCF::CIDL::Traversal::Dispatcher* component_collector)
+ : declarations_ (declarations),
+ home_collector_ (home_collector),
+ component_collector_ (component_collector)
+ {
+ }
+
+ virtual void
+ traverse (CCF::CIDL::SyntaxTree::HomeExecutorPtr const& he)
+ {
+ CCF::CIDL::SyntaxTree::HomeDefPtr home (he->implements ());
+ home_collector_->dispatch (home);
+
+ CCF::CIDL::SyntaxTree::ComponentDefPtr component (home->manages ());
+ component_collector_->dispatch (component);
+
+ CCF::CIDL::SyntaxTree::CompositionPtr
+ composition (he->scope ()->dynamic_type<CCF::CIDL::SyntaxTree::Composition> ());
+ declarations_.add (composition, component);
+ }
+
+private:
+ Declarations& declarations_;
+
+ CCF::CIDL::Traversal::Dispatcher* home_collector_;
+ CCF::CIDL::Traversal::Dispatcher* component_collector_;
+};
+
+#endif // COLLECTORS_HPP
+
+/*
+ * Local Variables:
+ * mode: C++
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/modules/CIAO/CIDLC/CompositionEmitter.cpp b/modules/CIAO/CIDLC/CompositionEmitter.cpp
new file mode 100644
index 00000000000..d477ae4a3b8
--- /dev/null
+++ b/modules/CIAO/CIDLC/CompositionEmitter.cpp
@@ -0,0 +1,27 @@
+// file : CIDLC/CompositionEmitter.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CompositionEmitter.hpp"
+#include "Literals.hpp"
+
+using namespace StringLiterals;
+
+CompositionEmitter::CompositionEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+CompositionEmitter::pre (Type& t)
+{
+ ctx.composition_name (t.name ().unescaped_str ());
+
+ os << STRS[CIDL_NS] << t.name () << "{";
+}
+
+void
+CompositionEmitter::post (Type&)
+{
+ os << "}";
+}
diff --git a/modules/CIAO/CIDLC/CompositionEmitter.hpp b/modules/CIAO/CIDLC/CompositionEmitter.hpp
new file mode 100644
index 00000000000..c6aeab17229
--- /dev/null
+++ b/modules/CIAO/CIDLC/CompositionEmitter.hpp
@@ -0,0 +1,26 @@
+// file : CIDLC/CompositionEmitter.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef COMPOSITIONEMITTER_HPP
+#define COMPOSITIONEMITTER_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "EmitterBase.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+struct CompositionEmitter : Traversal::Composition,
+ EmitterBase
+{
+ CompositionEmitter (Context& c);
+
+ virtual void pre (Type&);
+
+ virtual void post (Type&);
+};
+
+#endif // COMPOSITIONEMITTER_HPP
diff --git a/modules/CIAO/CIDLC/CorbaTypeNameEmitters.cpp b/modules/CIAO/CIDLC/CorbaTypeNameEmitters.cpp
new file mode 100644
index 00000000000..84507c151b6
--- /dev/null
+++ b/modules/CIAO/CIDLC/CorbaTypeNameEmitters.cpp
@@ -0,0 +1,2014 @@
+// file : CIDLC/CorbaTypeNameEmitter.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "CorbaTypeNameEmitters.hpp"
+#include "Literals.hpp"
+
+#include <ostream>
+
+using namespace std;
+using namespace StringLiterals;
+
+CorbaTypeNameEmitter::CorbaTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Void&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Boolean&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Octet&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Char&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Wchar&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Short&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (UnsignedShort&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Long&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (UnsignedLong&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (LongLong&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (UnsignedLongLong&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Float&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Double&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (String&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::BoundedString&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Wstring&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Object&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (ValueBase&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (Any&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Array&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Enum&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Struct&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Union&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::BoundedSequence&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::UnboundedSequence&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Interface&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::ValueType&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::EventType&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Component&)
+{
+}
+
+void
+CorbaTypeNameEmitter::traverse (SemanticGraph::Home&)
+{
+}
+
+// ====================================================================
+
+ReturnTypeNameEmitter::ReturnTypeNameEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+ReturnTypeNameEmitter::traverse (Void&)
+{
+ os << "void";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Boolean&)
+{
+ os << "::CORBA::Boolean";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Octet&)
+{
+ os << "::CORBA::Octet";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Char&)
+{
+ os << "::CORBA::Char";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Wchar&)
+{
+ os << "::CORBA::WChar";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Short&)
+{
+ os << "::CORBA::Short";
+}
+
+void
+ReturnTypeNameEmitter::traverse (UnsignedShort&)
+{
+ os << "::CORBA::UShort";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Long&)
+{
+ os << "::CORBA::Long";
+}
+
+void
+ReturnTypeNameEmitter::traverse (UnsignedLong&)
+{
+ os << "::CORBA::ULong";
+}
+
+void
+ReturnTypeNameEmitter::traverse (LongLong&)
+{
+ os << "::CORBA::LongLong";
+}
+
+void
+ReturnTypeNameEmitter::traverse (UnsignedLongLong&)
+{
+ os << "::CORBA::ULongLong";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Float&)
+{
+ os << "::CORBA::Float";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Double&)
+{
+ os << "::CORBA::Double";
+}
+
+void
+ReturnTypeNameEmitter::traverse (String&)
+{
+ os << "char *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "char *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Wstring&)
+{
+ os << "::CORBA::WChar *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "::CORBA::WChar *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Object&)
+{
+ os << "::CORBA::Object_ptr";
+}
+
+void
+ReturnTypeNameEmitter::traverse (ValueBase&)
+{
+ os << "::CORBA::ValueBase *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (Any&)
+{
+ os << "::CORBA::Any *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Array& a)
+{
+ os << a.scoped_name () << "_slice *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name ();
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Struct& s)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = s.context ().get<bool> (STRS[VAR_SIZE]);
+
+ os << s.scoped_name ();
+
+ if (var_size)
+ {
+ os << " *";
+ }
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Union& u)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = u.context ().get<bool> (STRS[VAR_SIZE]);
+
+ os << u.scoped_name ();
+
+ if (var_size)
+ {
+ os << " *";
+ }
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::BoundedSequence& s)
+{
+ os << s.scoped_name () << " *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::UnboundedSequence& s)
+{
+ os << s.scoped_name () << " *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << i.scoped_name () << "_ptr";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::ValueType& v)
+{
+ os << v.scoped_name () << " *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::EventType& e)
+{
+ os << e.scoped_name () << " *";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << c.scoped_name () << "_ptr";
+}
+
+void
+ReturnTypeNameEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << h.scoped_name () << "_ptr";
+}
+
+// ===============================================================
+
+INArgTypeNameEmitter::INArgTypeNameEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+INArgTypeNameEmitter::traverse (Boolean&)
+{
+ os << "::CORBA::Boolean";
+}
+
+void
+INArgTypeNameEmitter::traverse (Octet&)
+{
+ os << "::CORBA::Octet";
+}
+
+void
+INArgTypeNameEmitter::traverse (Char&)
+{
+ os << "::CORBA::Char";
+}
+
+void
+INArgTypeNameEmitter::traverse (Wchar&)
+{
+ os << "::CORBA::WChar";
+}
+
+void
+INArgTypeNameEmitter::traverse (Short&)
+{
+ os << "::CORBA::Short";
+}
+
+void
+INArgTypeNameEmitter::traverse (UnsignedShort&)
+{
+ os << "::CORBA::UShort";
+}
+
+void
+INArgTypeNameEmitter::traverse (Long&)
+{
+ os << "::CORBA::Long";
+}
+
+void
+INArgTypeNameEmitter::traverse (UnsignedLong&)
+{
+ os << "::CORBA::ULong";
+}
+
+void
+INArgTypeNameEmitter::traverse (LongLong&)
+{
+ os << "::CORBA::LongLong";
+}
+
+void
+INArgTypeNameEmitter::traverse (UnsignedLongLong&)
+{
+ os << "::CORBA::ULongLong";
+}
+
+void
+INArgTypeNameEmitter::traverse (Float&)
+{
+ os << "::CORBA::Float";
+}
+
+void
+INArgTypeNameEmitter::traverse (Double&)
+{
+ os << "::CORBA::Double";
+}
+
+void
+INArgTypeNameEmitter::traverse (String&)
+{
+ os << "const char *";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "const char *";
+}
+
+void
+INArgTypeNameEmitter::traverse (Wstring&)
+{
+ os << "const ::CORBA::WChar *";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "const ::CORBA::WChar *";
+}
+
+void
+INArgTypeNameEmitter::traverse (Object&)
+{
+ os << "::CORBA::Object_ptr";
+}
+
+void
+INArgTypeNameEmitter::traverse (ValueBase&)
+{
+ os << "::CORBA::ValueBase *";
+}
+
+void
+INArgTypeNameEmitter::traverse (Any&)
+{
+ os << "const ::CORBA::Any &";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Array& a)
+{
+ os << "const " << a.scoped_name ();
+}
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name ();
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Struct& s)
+{
+ os << "const " << s.scoped_name () << " &";;
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Union& u)
+{
+ os << "const " << u.scoped_name () << " &";;
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::BoundedSequence& s)
+{
+ os << "const " << s.scoped_name () << " &";;
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::UnboundedSequence& s)
+{
+ os << "const " << s.scoped_name () << " &";;
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << i.scoped_name () << "_ptr";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::ValueType& v)
+{
+ os << v.scoped_name () << " *";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::EventType& e)
+{
+ os << e.scoped_name () << " *";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << c.scoped_name () << "_ptr";
+}
+
+void
+INArgTypeNameEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << h.scoped_name () << "_ptr";
+}
+
+// ===============================================================
+
+INOUTArgTypeNameEmitter::INOUTArgTypeNameEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Boolean&)
+{
+ os << "::CORBA::Boolean &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Octet&)
+{
+ os << "::CORBA::Octet &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Char&)
+{
+ os << "::CORBA::Char &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Wchar&)
+{
+ os << "::CORBA::WChar &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Short&)
+{
+ os << "::CORBA::Short &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (UnsignedShort&)
+{
+ os << "::CORBA::UShort &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Long&)
+{
+ os << "::CORBA::Long &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (UnsignedLong&)
+{
+ os << "::CORBA::ULong &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (LongLong&)
+{
+ os << "::CORBA::LongLong &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (UnsignedLongLong&)
+{
+ os << "::CORBA::ULongLong &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Float&)
+{
+ os << "::CORBA::Float &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Double&)
+{
+ os << "::CORBA::Double &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (String&)
+{
+ os << "char *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "char *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Wstring&)
+{
+ os << "::CORBA::WChar *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "::CORBA::WChar *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Object&)
+{
+ os << "::CORBA::Object_ptr &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (ValueBase&)
+{
+ os << "::CORBA::ValueBase *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (Any&)
+{
+ os << "::CORBA::Any &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Array& a)
+{
+ os << a.scoped_name ();
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name () << " &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Struct& s)
+{
+ os << s.scoped_name () << " &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Union& u)
+{
+ os << u.scoped_name () << " &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedSequence& s)
+{
+ os << s.scoped_name () << " &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::UnboundedSequence& s)
+{
+ os << s.scoped_name () << " &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << i.scoped_name () << "_ptr &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::ValueType& v)
+{
+ os << v.scoped_name () << " *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::EventType& e)
+{
+ os << e.scoped_name () << " *&";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << c.scoped_name () << "_ptr &";
+}
+
+void
+INOUTArgTypeNameEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << h.scoped_name () << "_ptr";
+}
+
+// =================================================================
+
+OUTArgTypeNameEmitter::OUTArgTypeNameEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Boolean&)
+{
+ os << "::CORBA::Boolean_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Octet&)
+{
+ os << "::CORBA::Octet_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Char&)
+{
+ os << "::CORBA::Char_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Wchar&)
+{
+ os << "::CORBA::WChar_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Short&)
+{
+ os << "::CORBA::Short_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (UnsignedShort&)
+{
+ os << "::CORBA::UShort_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Long&)
+{
+ os << "::CORBA::Long_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (UnsignedLong&)
+{
+ os << "::CORBA::ULong_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (LongLong&)
+{
+ os << "::CORBA::LongLong_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (UnsignedLongLong&)
+{
+ os << "::CORBA::ULongLong_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Float&)
+{
+ os << "::CORBA::Float_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Double&)
+{
+ os << "::CORBA::Double_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (String&)
+{
+ os << "::CORBA::String_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedString& s)
+{
+ os << s.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Wstring&)
+{
+ os << "::CORBA::WString_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedWideString& s)
+{
+ os << s.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Object&)
+{
+ os << "::CORBA::Object_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (ValueBase&)
+{
+ os << "::CORBA::ValueBase_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (Any&)
+{
+ os << "::CORBA::Any_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Array& a)
+{
+ os << a.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Struct& s)
+{
+ os << s.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Union& u)
+{
+ os << u.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::BoundedSequence& s)
+{
+ os << s.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::UnboundedSequence& s)
+{
+ os << s.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << i.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::ValueType& v)
+{
+ os << v.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::EventType& e)
+{
+ os << e.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << c.scoped_name () << "_out";
+}
+
+void
+OUTArgTypeNameEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << h.scoped_name () << "_ptr";
+}
+
+// ====================================================================
+
+NullReturnEmitter::NullReturnEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+NullReturnEmitter::traverse (Boolean&)
+{
+ os << "return false;";
+}
+
+void
+NullReturnEmitter::traverse (Octet&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Char&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Wchar&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Short&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (UnsignedShort&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Long&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (UnsignedLong&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (LongLong&)
+{
+ os << "return ACE_CDR_LONGLONG_INITIALIZER;";
+}
+
+void
+NullReturnEmitter::traverse (UnsignedLongLong&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Float&)
+{
+ os << "return 0.0f;";
+}
+
+void
+NullReturnEmitter::traverse (Double&)
+{
+ os << "return 0.0;";
+}
+
+void
+NullReturnEmitter::traverse (String&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Wstring&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Object&)
+{
+ os << "return ::CORBA::Object::_nil ();";
+}
+
+void
+NullReturnEmitter::traverse (ValueBase&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (Any&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Array&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name () << " retval;" << endl
+ << "return retval;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Struct& s)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = s.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (var_size)
+ {
+ os << "return 0;";
+ }
+ else
+ {
+ os << s.scoped_name () << " retval;" << endl
+ << "return retval;";
+ }
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Union& u)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = u.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (var_size)
+ {
+ os << "return 0;";
+ }
+ else
+ {
+ os << u.scoped_name () << " retval;" << endl
+ << "return retval;";
+ }
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::BoundedSequence&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::UnboundedSequence&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << "return " << i.scoped_name () << "::_nil ();";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::ValueType&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::EventType&)
+{
+ os << "return 0;";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << "return " << c.scoped_name () << "::_nil ();";
+}
+
+void
+NullReturnEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << "return " << h.scoped_name () << "::_nil ();";
+}
+
+// ====================================================================
+/* Not currently used, but it was at one time and may be useful again.
+
+NullRHSEmitter::NullRHSEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+NullRHSEmitter::traverse (Boolean&)
+{
+ os << "= false;";
+}
+
+void
+NullRHSEmitter::traverse (Octet&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Char&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Wchar&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Short&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (UnsignedShort&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Long&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (UnsignedLong&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (LongLong&)
+{
+ os << "= ACE_CDR_LONGLONG_INITIALIZER;";
+}
+
+void
+NullRHSEmitter::traverse (UnsignedLongLong&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Float&)
+{
+ os << "= 0.0f;";
+}
+
+void
+NullRHSEmitter::traverse (Double&)
+{
+ os << "= 0.0;";
+}
+
+void
+NullRHSEmitter::traverse (String&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Wstring&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Object&)
+{
+ os << "= ::CORBA::Object::_nil ();";
+}
+
+void
+NullRHSEmitter::traverse (ValueBase&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (Any&)
+{
+ // This will hopefully work both if the lhs is a pointer (for example
+ // RetunrTypeNameEmitter) or not (for example INArgTypeNameEmitter).
+ os << ";";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Array&)
+{
+ // This will hopefully work both if the lhs is a slice pointer (for example
+ // RetunrTypeNameEmitter) or not (for example INArgTypeNameEmitter).
+ os << ";";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Enum&)
+{
+ os << ";";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Struct& s)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = s.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (var_size)
+ {
+ os << "= 0;";
+ }
+ else
+ {
+ os << ";";
+ }
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Union& u)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = u.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (var_size)
+ {
+ os << "= 0;";
+ }
+ else
+ {
+ os << ";";
+ }
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::BoundedSequence&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::UnboundedSequence&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << "= " << i.scoped_name () << "::_nil ();";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::ValueType&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::EventType&)
+{
+ os << "= 0;";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << "= " << c.scoped_name () << "::_nil ();";
+}
+
+void
+NullRHSEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << "= " << h.scoped_name () << "::_nil ();";
+}
+*/
+// ====================================================================
+
+ExtractedTypeDeclEmitter::ExtractedTypeDeclEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Boolean&)
+{
+ os << "::CORBA::Boolean " << STRS[EXTRACT_TMP] << " = false;"
+ << "::CORBA::Any::to_boolean " << STRS[EXTRACT]
+ << " (" << STRS[EXTRACT_TMP] << ");";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Octet&)
+{
+ os << "::CORBA::Octet " << STRS[EXTRACT_TMP] << " = 0;"
+ << "::CORBA::Any::to_octet " << STRS[EXTRACT]
+ << " (" << STRS[EXTRACT_TMP] << ");";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Char&)
+{
+ os << "::CORBA::Char " << STRS[EXTRACT_TMP] << " = 0;"
+ << "::CORBA::Any::to_char " << STRS[EXTRACT]
+ << " (" << STRS[EXTRACT_TMP] << ");";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Wchar&)
+{
+ os << "::CORBA::WChar " << STRS[EXTRACT_TMP] << " = 0;"
+ << "::CORBA::Any::to_wchar " << STRS[EXTRACT]
+ << " (" << STRS[EXTRACT_TMP] << ");";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Short&)
+{
+ os << "::CORBA::Short " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (UnsignedShort&)
+{
+ os << "::CORBA::UShort " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Long&)
+{
+ os << "::CORBA::Long " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (UnsignedLong&)
+{
+ os << "::CORBA::ULong " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (LongLong&)
+{
+ os << "::CORBA::LongLong " << STRS[EXTRACT]
+ << " = ACE_CDR_LONGLONG_INITIALIZER;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (UnsignedLongLong&)
+{
+ os << "::CORBA::ULongLong " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Float&)
+{
+ os << "::CORBA::Float " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Double&)
+{
+ os << "::CORBA::Double " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (String&)
+{
+ os << "const char * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << "const char * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Wstring&)
+{
+ os << "::CORBA::WChar * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << "::CORBA::WChar * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Object&)
+{
+ os << "::CORBA::Object_ptr " << STRS[EXTRACT]
+ << " = ::CORBA::Object::_nil ();";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (ValueBase&)
+{
+ os << "::CORBA::ValueBase * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (Any&)
+{
+ os << "::CORBA::Any * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Array& a)
+{
+ os << a.scoped_name () << "_forany & " << STRS[EXTRACT] << ";";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Enum& e)
+{
+ os << e.scoped_name () << " " << STRS[EXTRACT] << ";";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Struct& s)
+{
+ os << s.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Union& u)
+{
+ os << u.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::BoundedSequence& s)
+{
+ os << s.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::UnboundedSequence& s)
+{
+ os << s.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Interface& i)
+{
+ os << i.scoped_name () << "_ptr " << STRS[EXTRACT] << " = "
+ << i.scoped_name () << "::_nil ();";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::ValueType& v)
+{
+ os << v.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::EventType& e)
+{
+ os << e.scoped_name () << " * " << STRS[EXTRACT] << " = 0;";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Component& c)
+{
+ os << c.scoped_name () << "_ptr " << STRS[EXTRACT] << " = "
+ << c.scoped_name () << "::_nil ();";
+}
+
+void
+ExtractedTypeDeclEmitter::traverse (SemanticGraph::Home& h)
+{
+ os << h.scoped_name () << "_ptr " << STRS[EXTRACT] << " = "
+ << h.scoped_name () << "::_nil ();";
+}
+
+// ====================================================================
+
+AssignFromExtractedEmitter::AssignFromExtractedEmitter (Context& c)
+ : CorbaTypeNameEmitter (c)
+{
+}
+
+void
+AssignFromExtractedEmitter::traverse (Boolean&)
+{
+ os << STRS[EXTRACT] << ".ref_";
+}
+
+void
+AssignFromExtractedEmitter::traverse (Octet&)
+{
+ os << STRS[EXTRACT] << ".ref_";
+}
+
+void
+AssignFromExtractedEmitter::traverse (Char&)
+{
+ os << STRS[EXTRACT] << ".ref_";
+}
+
+void
+AssignFromExtractedEmitter::traverse (Wchar&)
+{
+ os << STRS[EXTRACT] << ".ref_";
+}
+
+void
+AssignFromExtractedEmitter::traverse (Short&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (UnsignedShort&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Long&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (UnsignedLong&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (LongLong&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (UnsignedLongLong&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Float&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Double&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (String&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Wstring&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Object&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (ValueBase&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (Any&)
+{
+ os << "*" << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Array&)
+{
+ os << STRS[EXTRACT] << ".in ()";
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Enum&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Struct& s)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = s.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (!var_size)
+ {
+ os << "*";
+ }
+
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Union& u)
+{
+ // This should always be in the context, since the SizeTypeCalculator
+ // is executed before the servant code generators.
+ bool var_size = u.context ().get<bool> (STRS[VAR_SIZE]);
+
+ if (!var_size)
+ {
+ os << "*";
+ }
+
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::BoundedSequence&)
+{
+ os << "*" << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::UnboundedSequence&)
+{
+ os << "*" << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Interface&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::ValueType&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::EventType&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Component&)
+{
+ os << STRS[EXTRACT];
+}
+
+void
+AssignFromExtractedEmitter::traverse (SemanticGraph::Home&)
+{
+ os << STRS[EXTRACT];
+}
+
+// ====================================================================
+
+SetAttributeDelegationEmitter::SetAttributeDelegationEmitter (
+ Context& c,
+ SemanticGraph::ReadWriteAttribute& a
+ )
+ : CorbaTypeNameEmitter (c),
+ attr_ (a)
+ , assign_emitter_ (c)
+ , extract_emitter_ (c)
+{
+ assign_belongs_.node_traverser (assign_emitter_);
+ extract_belongs_.node_traverser (extract_emitter_);
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Boolean&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Octet&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Char&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Wchar&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Short&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (UnsignedShort&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Long&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (UnsignedLong&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (LongLong&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (UnsignedLongLong&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Float&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Double&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (String&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::BoundedString&)
+{
+ emit_error ("bounded string");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Wstring&)
+{
+ emit_error ("wstring");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::BoundedWideString&)
+{
+ emit_error ("bounded wstring");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Object&)
+{
+ emit_error ("CORBA::Object");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (ValueBase&)
+{
+ emit_error ("CORBA::ValueBase");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (Any&)
+{
+ emit_error ("CORBA::Any");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Array&)
+{
+ emit_error ("array");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Enum&)
+{
+ emit_delegation ();
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Struct&)
+{
+ emit_error ("struct");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Union&)
+{
+ emit_error ("union");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::BoundedSequence&)
+{
+ emit_error ("bounded sequence");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::UnboundedSequence&)
+{
+ emit_error ("unbounded sequence");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Interface&)
+{
+ emit_error ("interface");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::ValueType&)
+{
+ emit_error ("valuetype");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::EventType&)
+{
+ emit_error ("eventtype");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Component&)
+{
+ emit_error ("component");
+}
+
+void
+SetAttributeDelegationEmitter::traverse (SemanticGraph::Home&)
+{
+ emit_error ("home");
+}
+
+void
+SetAttributeDelegationEmitter::emit_delegation (void)
+{
+ open_if_block ();
+
+ Traversal::ReadWriteAttribute::belongs (attr_, extract_belongs_);
+
+ os << "descr_value >>= " << STRS[EXTRACT] << ";"
+ << "this->" << attr_.name () << " (";
+
+ Traversal::ReadWriteAttribute::belongs (attr_, assign_belongs_);
+
+ os << ");";
+
+ close_if_block ();
+}
+
+void
+SetAttributeDelegationEmitter::emit_error (const char *corba_kind)
+{
+ open_if_block ();
+
+ os << "ACE_ERROR ((" << endl
+ << " LM_ERROR," << endl
+ << " \"Component attributes of " << corba_kind << "\"" << endl
+ << " \"IDL type are not yet supported by CIAO\\n\"" << endl
+ << " ));";
+
+ close_if_block ();
+}
+
+void
+SetAttributeDelegationEmitter::open_if_block (void)
+{
+ os << "if (ACE_OS::strcmp (descr_name, \""
+ << attr_.name ().unescaped_str () << "\") == 0)" << endl
+ << "{";
+}
+
+void
+SetAttributeDelegationEmitter::close_if_block (void)
+{
+ os << "continue;"
+ << "}";
+}
diff --git a/modules/CIAO/CIDLC/CorbaTypeNameEmitters.hpp b/modules/CIAO/CIDLC/CorbaTypeNameEmitters.hpp
new file mode 100644
index 00000000000..b0aa8ea7dd8
--- /dev/null
+++ b/modules/CIAO/CIDLC/CorbaTypeNameEmitters.hpp
@@ -0,0 +1,469 @@
+// file : CIDLC/FullTypeNameEmitter.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef TYPENAME_EMITTER_HPP
+#define TYPENAME_EMITTER_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "EmitterBase.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+// Base class that holds the ostream member
+// common to every other class in this file,
+// and collects the ancestors in one place.
+//
+// Derived classes encapsulate the CORBA rules for
+// the C++ mapping of different type kinds.
+class CorbaTypeNameEmitter : public EmitterBase,
+ public Traversal::Void,
+ public Traversal::Boolean,
+ public Traversal::Octet,
+ public Traversal::Char,
+ public Traversal::Wchar,
+ public Traversal::Short,
+ public Traversal::UnsignedShort,
+ public Traversal::Long,
+ public Traversal::UnsignedLong,
+ public Traversal::LongLong,
+ public Traversal::UnsignedLongLong,
+ public Traversal::Float,
+ public Traversal::Double,
+ public Traversal::String,
+ public Traversal::BoundedString,
+ public Traversal::Wstring,
+ public Traversal::BoundedWideString,
+ public Traversal::Object,
+ public Traversal::ValueBase,
+ public Traversal::Any,
+ public Traversal::Array,
+ public Traversal::Enum,
+ public Traversal::Struct,
+ public Traversal::Union,
+ public Traversal::BoundedSequence,
+ public Traversal::UnboundedSequence,
+ public Traversal::Interface,
+ public Traversal::ValueType,
+ public Traversal::EventType,
+ public Traversal::Component,
+ public Traversal::Home
+{
+public:
+ virtual void traverse (Void&);
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+
+protected:
+ CorbaTypeNameEmitter (Context&);
+};
+
+// Generates the name of an operation's return type.
+//
+//
+class ReturnTypeNameEmitter : public CorbaTypeNameEmitter
+{
+public:
+ ReturnTypeNameEmitter (Context&);
+
+ virtual void traverse (Void&);
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+// Generates the typename of an IN argument.
+//
+//
+class INArgTypeNameEmitter : public CorbaTypeNameEmitter
+{
+public:
+ INArgTypeNameEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+// Generates the typename of an INOUT argument.
+//
+//
+class INOUTArgTypeNameEmitter : public CorbaTypeNameEmitter
+{
+public:
+ INOUTArgTypeNameEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+// Generates the typename of an OUT argument.
+//
+//
+class OUTArgTypeNameEmitter : public CorbaTypeNameEmitter
+{
+public:
+ OUTArgTypeNameEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+// Generates 'return' plus the appropriate NULL return value,
+// including no output for Void.
+//
+//
+class NullReturnEmitter : public CorbaTypeNameEmitter
+{
+public:
+ NullReturnEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+/* Not currently used, but it was at one time and may be useful again.
+
+// Generates the appropriate NULL value, including the assignment operator,
+// if needed, for the rhs of an assignment statement.
+//
+//
+class NullRHSEmitter : public CorbaTypeNameEmitter
+{
+public:
+ NullRHSEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+*/
+// Declares and initializes a variable to use for any extraction.
+//
+//
+class ExtractedTypeDeclEmitter : public CorbaTypeNameEmitter
+{
+public:
+ ExtractedTypeDeclEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+// Declares and initializes a variable to use for any extraction.
+//
+//
+class AssignFromExtractedEmitter : public CorbaTypeNameEmitter
+{
+public:
+ AssignFromExtractedEmitter (Context&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+};
+
+class SetAttributeDelegationEmitter : public CorbaTypeNameEmitter,
+ public Traversal::ReadWriteAttribute
+{
+public:
+ SetAttributeDelegationEmitter (Context&,
+ SemanticGraph::ReadWriteAttribute&);
+
+ virtual void traverse (Boolean&);
+ virtual void traverse (Octet&);
+ virtual void traverse (Char&);
+ virtual void traverse (Wchar&);
+ virtual void traverse (Short&);
+ virtual void traverse (UnsignedShort&);
+ virtual void traverse (Long&);
+ virtual void traverse (UnsignedLong&);
+ virtual void traverse (LongLong&);
+ virtual void traverse (UnsignedLongLong&);
+ virtual void traverse (Float&);
+ virtual void traverse (Double&);
+ virtual void traverse (String&);
+ virtual void traverse (SemanticGraph::BoundedString&);
+ virtual void traverse (Wstring&);
+ virtual void traverse (SemanticGraph::BoundedWideString&);
+ virtual void traverse (Object&);
+ virtual void traverse (ValueBase&);
+ virtual void traverse (Any&);
+ virtual void traverse (SemanticGraph::Array&);
+ virtual void traverse (SemanticGraph::Enum&);
+ virtual void traverse (SemanticGraph::Struct&);
+ virtual void traverse (SemanticGraph::Union&);
+ virtual void traverse (SemanticGraph::BoundedSequence&);
+ virtual void traverse (SemanticGraph::UnboundedSequence&);
+ virtual void traverse (SemanticGraph::Interface&);
+ virtual void traverse (SemanticGraph::ValueType&);
+ virtual void traverse (SemanticGraph::EventType&);
+ virtual void traverse (SemanticGraph::Component&);
+ virtual void traverse (SemanticGraph::Home&);
+
+private:
+ void emit_delegation (void);
+ void emit_error (const char *);
+ void open_if_block (void);
+ void close_if_block (void);
+
+private:
+ SemanticGraph::ReadWriteAttribute& attr_;
+ AssignFromExtractedEmitter assign_emitter_;
+ ExtractedTypeDeclEmitter extract_emitter_;
+ Traversal::Belongs assign_belongs_;
+ Traversal::Belongs extract_belongs_;
+};
+
+#endif /* TYPENAME_EMITTER_HPP */
diff --git a/modules/CIAO/CIDLC/CxxNamePrinter.cpp b/modules/CIAO/CIDLC/CxxNamePrinter.cpp
new file mode 100644
index 00000000000..027889791ec
--- /dev/null
+++ b/modules/CIAO/CIDLC/CxxNamePrinter.cpp
@@ -0,0 +1,103 @@
+// file : CIDLC/CxxNamePrinter.cpp
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// cvs-id : $Id: Collectors.hpp 55138 2004-01-05 07:53:05Z parsons $
+
+#include "CIDLC/CxxNamePrinter.hpp"
+
+#include <ostream>
+#include <algorithm>
+
+namespace
+{
+ // Sorted C++ keywords.
+ //
+ char* keywords[] = {
+ "and",
+ "asm",
+ "auto",
+ "bitand",
+ "bitor",
+ "bool",
+ "break",
+ "case",
+ "catch",
+ "char",
+ "class",
+ "compl",
+ "const",
+ "const_cast",
+ "continue",
+ "default",
+ "delete",
+ "do",
+ "double",
+ "dynamic_cast",
+ "else",
+ "end_eq",
+ "enum",
+ "explicit",
+ "export",
+ "extern",
+ "false",
+ "float",
+ "for",
+ "friend",
+ "goto",
+ "if",
+ "inline",
+ "int",
+ "long",
+ "mutable",
+ "namespace",
+ "new",
+ "not",
+ "not_eq",
+ "operator",
+ "or",
+ "or_eq",
+ "private",
+ "protected",
+ "public",
+ "register",
+ "reinterpret_cast",
+ "return",
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "static_cast",
+ "struct",
+ "switch",
+ "template",
+ "this",
+ "throw",
+ "true",
+ "try",
+ "typedef",
+ "typeid",
+ "typename",
+ "union",
+ "unsigned",
+ "using",
+ "virtual",
+ "void",
+ "volatile",
+ "wchar_t",
+ "while",
+ "xor",
+ "xor_eq"
+ };
+}
+
+void CxxNamePrinter::
+print (std::ostream& os, CCF::IDL2::SemanticGraph::SimpleName const& n)
+{
+ std::size_t const size (sizeof (keywords) / sizeof (char*));
+ std::string const& str (n.unescaped_str ());
+
+ if (std::binary_search (keywords, keywords + size, str))
+ os << "_cxx_";
+
+ os << str;
+}
+
diff --git a/modules/CIAO/CIDLC/CxxNamePrinter.hpp b/modules/CIAO/CIDLC/CxxNamePrinter.hpp
new file mode 100644
index 00000000000..417dfa16a9f
--- /dev/null
+++ b/modules/CIAO/CIDLC/CxxNamePrinter.hpp
@@ -0,0 +1,18 @@
+// file : CIDLC/CxxNamePrinter.hpp
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// cvs-id : $Id: Collectors.hpp 55138 2004-01-05 07:53:05Z parsons $
+
+#ifndef CXX_NAME_PRINTER_HPP
+#define CXX_NAME_PRINTER_HPP
+
+#include "CCF/IDL2/SemanticGraph/Name.hpp"
+
+// Prints names while escaping C++ keywords with the _cxx_ prefix.
+//
+struct CxxNamePrinter: CCF::IDL2::SemanticGraph::NamePrinter
+{
+ virtual void
+ print (std::ostream&, CCF::IDL2::SemanticGraph::SimpleName const&);
+};
+
+#endif // CXX_NAME_PRINTER_HPP
diff --git a/modules/CIAO/CIDLC/DescriptorGenerator.cpp b/modules/CIAO/CIDLC/DescriptorGenerator.cpp
new file mode 100644
index 00000000000..76a5a810774
--- /dev/null
+++ b/modules/CIAO/CIDLC/DescriptorGenerator.cpp
@@ -0,0 +1,582 @@
+// $Id$
+
+#include "DescriptorGenerator.hpp"
+#include "UnescapedNamePrinter.hpp"
+#include "Literals.hpp"
+
+#include <ostream>
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+#include "CCF/CodeGenerationKit/IndentationXML.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+using std::cout;
+using std::endl;
+using std::string;
+
+using namespace StringLiterals;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+namespace
+{
+ class EmitterBase
+ {
+ public:
+ EmitterBase (fs::ofstream& ofs)
+ : os (ofs)
+ {}
+
+ protected:
+ fs::ofstream& os;
+ };
+
+ class CompositionEmitter : public EmitterBase,
+ public Traversal::Composition
+ {
+ // Nested classes for emitters created and dispatched inside
+ // ComponsitionEmitter::traverse().
+ private:
+ struct ComponentIdEmitter : Traversal::Component, EmitterBase
+ {
+ ComponentIdEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& c)
+ {
+ os << "<componentrepid repid=\""
+ << c.context ().get<string> (STRS[REPO_ID])
+ << "\"/>"
+ << endl;
+ }
+ };
+
+ struct HomeIdEmitter : Traversal::Home, EmitterBase
+ {
+ HomeIdEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& h)
+ {
+ os << "<homerepid repid=\""
+ << h.context ().get<string> (STRS[REPO_ID])
+ << "\"/>"
+ << endl;
+ }
+ };
+
+ struct HomeFeaturesEmitter : Traversal::Home, EmitterBase
+ {
+ HomeFeaturesEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& h)
+ {
+ os << "<homefeatures" << endl
+ << "name=\"" << h.name () << "\"" << endl
+ << "repid=\""
+ << h.context ().get<string> (STRS[REPO_ID])
+ << "\">" << endl;
+
+ Traversal::Inherits home_inherits;
+ HomeInheritanceEmitter emitter (os);
+ home_inherits.node_traverser (emitter);
+
+ inherits (h, home_inherits);
+
+ os << "</homefeatures>" << endl << endl;
+
+ // Go after inherited homes.
+ //
+ Traversal::Home::traverse (h);
+ }
+
+ struct HomeInheritanceEmitter : Traversal::Home, EmitterBase
+ {
+ HomeInheritanceEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& h)
+ {
+ os << "<inheritshome repid=\""
+ << h.context ().get<string> (STRS[REPO_ID])
+ << "\"/>"
+ << endl;
+ }
+ };
+ };
+
+ struct ComponentFeaturesEmitter : Traversal::Component, EmitterBase
+ {
+ ComponentFeaturesEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& c)
+ {
+ os << "<componentfeatures" << endl
+ << "name=\"" << c.name () << "\"" << endl
+ << "repid=\""
+ << c.context ().get<string> (STRS[REPO_ID])
+ << "\">" << endl;
+
+ Traversal::Inherits component_inherits;
+ Traversal::Supports component_supports;
+ ComponentInheritanceEmitter i_emitter (os);
+ ComponentSupportsEmitter s_emitter (os);
+ component_inherits.node_traverser (i_emitter);
+ component_supports.node_traverser (s_emitter);
+
+ inherits (c, component_inherits);
+ supports (c, component_supports);
+
+ os << "<ports>" << endl;
+
+ Traversal::Defines defines;
+ PortsEmitter ports_emitter (os);
+ defines.node_traverser (ports_emitter);
+
+ names (c, defines);
+
+ os << "</ports>" << endl;
+
+ os << "</componentfeatures>" << endl << endl;
+
+ // Go after inherited components.
+ //
+ Traversal::Component::traverse (c);
+ }
+
+ struct ComponentInheritanceEmitter : Traversal::Component, EmitterBase
+ {
+ ComponentInheritanceEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& c)
+ {
+ os << "<inheritscomponent repid=\""
+ << c.context ().get<string> (STRS[REPO_ID])
+ << "\"/>"
+ << endl;
+ }
+ };
+
+ struct ComponentSupportsEmitter : Traversal::Interface, EmitterBase
+ {
+ ComponentSupportsEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& i)
+ {
+ os << "<supportsinterface repid=\""
+ << i.context ().get<string> (STRS[REPO_ID])
+ << "\"/>"
+ << endl;
+ }
+ };
+
+ struct PortsEmitter : Traversal::EmitterData,
+ Traversal::UserData,
+ Traversal::ProviderData,
+ Traversal::ConsumerData,
+ Traversal::PublisherData,
+ EmitterBase
+ {
+ PortsEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs),
+ type_name_emitter_ (ofs),
+ facettag_ (1U)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "<emits" << endl
+ << "emitsname=\"" << e.name () << "\"" << endl
+ << "eventtype=";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << ">" << endl
+ << "<eventpolicy policy=\"normal\"/>" << endl
+ << "</emits>" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::User& u)
+ {
+ os << "<uses" << endl
+ << "usesname=\"" << u.name () << "\"" << endl
+ << "repid=";
+
+ Traversal::UserData::belongs (u, belongs_);
+
+ os << ">" << endl
+ << "</uses>" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ os << "<provides" << endl
+ << "providesname=\"" << p.name () << "\"" << endl
+ << "repid=";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << endl
+ << "facettag=\"" << facettag_ << "\">" << endl
+ << "</provides>" << endl;
+
+ ++facettag_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ os << "<consumes" << endl
+ << "consumesname=\"" << c.name () << "\"" << endl
+ << "eventtype=";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << ">" << endl
+ << "<eventpolicy policy=\"normal\"/>" << endl
+ << "</consumes>" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "<publishes" << endl
+ << "publishesname=\"" << p.name ()
+ << "\"" << endl
+ << "eventtype=";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << ">" << endl
+ << "<eventpolicy policy=\"normal\"/>" << endl
+ << "</publishes>" << endl;
+ }
+
+ struct FullTypeNameEmitter : Traversal::Type, EmitterBase
+ {
+ FullTypeNameEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ os << '\"'
+ << t.context ().get<string> (STRS[REPO_ID])
+ << '\"';
+ }
+ };
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ unsigned long facettag_;
+ Traversal::Belongs belongs_;
+ };
+ };
+
+ struct InterfaceEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ InterfaceEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ bool
+ add (UnconstrainedInterface& i)
+ {
+ return interfaces_.insert (&i).second;
+ }
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (add (i))
+ {
+ os << "<interface" << endl
+ << "name=\"" << i.name ()
+ << "\"" << endl
+ << "repid=\""
+ << i.context ().get<string> (STRS[REPO_ID])
+ << "\">" << endl;
+
+ Traversal::Inherits interface_inherits;
+ InterfaceInheritanceEmitter i_emitter (os);
+ interface_inherits.node_traverser (i_emitter);
+
+ inherits (i, interface_inherits);
+
+ os << "</interface>" << endl << endl;
+
+ // Go after inherited interfaces.
+ Traversal::UnconstrainedInterface::traverse (i);
+ }
+ }
+
+ struct InterfaceInheritanceEmitter : Traversal::Interface, EmitterBase
+ {
+ InterfaceInheritanceEmitter (fs::ofstream& ofs)
+ : EmitterBase (ofs)
+ {}
+
+ virtual void
+ traverse (Type& i)
+ {
+ os << "<inheritsinterface repid=\""
+ << i.context ().get<string> (STRS[REPO_ID])
+ << "\"/>" << endl;
+ }
+ };
+
+ private:
+ std::set<UnconstrainedInterface*> interfaces_;
+ };
+
+ public:
+ CompositionEmitter (fs::ofstream& ofs,
+ CommandLine const& cl)
+ : EmitterBase (ofs),
+ cl_ (cl)
+ {}
+
+ virtual void
+ traverse (Composition& c)
+ {
+ ScopedName scoped (c.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+ string name (stripped.unescaped_str ());
+ configure_stream (name);
+
+ os << "<?xml version=\"1.0\"?>" << endl
+ << "<!DOCTYPE corbacomponent SYSTEM \"corbacomponent.dtd\">"
+ << endl << endl;
+
+ os << "<corbacomponent>" << endl
+ << "<corbaversion>3.0</corbaversion>" << endl;
+
+ {
+ ComponentIdEmitter component_id_emitter (os);
+ HomeIdEmitter home_id_emitter (os);
+ Traversal::Defines defines;
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ defines.node_traverser (component_executor);
+ defines.node_traverser (home_executor);
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+ implements.node_traverser (component_id_emitter);
+ implements.node_traverser (home_id_emitter);
+
+ names (c, defines);
+ }
+
+ os << "<componentkind>" << endl
+ << "<session>" << endl
+ << "<servant lifetime=\"container\"/>" << endl
+ << "</session>" << endl
+ << "</componentkind>" << endl
+ << "<threading policy=\"multithread\"/>" << endl
+ << "<configurationcomplete set=\"true\"/>" << endl << endl;
+
+ {
+ HomeFeaturesEmitter home_features_emitter (os);
+ Traversal::Defines defines;
+ Traversal::HomeExecutor home_executor;
+ defines.node_traverser (home_executor);
+ Traversal::Implements implements;
+ home_executor.edge_traverser (implements);
+ implements.node_traverser (home_features_emitter);
+
+ Traversal::Inherits inherits;
+ home_features_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_features_emitter);
+
+ names (c, defines);
+ }
+
+ {
+ ComponentFeaturesEmitter component_features_emitter (os);
+ Traversal::Defines defines;
+ Traversal::ComponentExecutor component_executor;
+ defines.node_traverser (component_executor);
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ implements.node_traverser (component_features_emitter);
+
+ Traversal::Inherits inherits;
+ component_features_emitter.edge_traverser (inherits);
+ inherits.node_traverser (component_features_emitter);
+
+ names (c, defines);
+ }
+
+ {
+ Traversal::Component component;
+ Traversal::Home home;
+ Traversal::Defines defines;
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ defines.node_traverser (component_executor);
+ defines.node_traverser (home_executor);
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+ implements.node_traverser (component);
+ implements.node_traverser (home);
+
+ Traversal::Supports supports;
+ InterfaceEmitter interface_emitter (os);
+ supports.node_traverser (interface_emitter);
+ component.edge_traverser (supports);
+ home.edge_traverser (supports);
+
+ Traversal::Defines component_defines;
+ component.edge_traverser (component_defines);
+ Traversal::Provider provider;
+ Traversal::User user;
+ component_defines.node_traverser (provider);
+ component_defines.node_traverser (user);
+ Traversal::Belongs belongs;
+ belongs.node_traverser (interface_emitter);
+ provider.edge_traverser (belongs);
+ user.edge_traverser (belongs);
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (interface_emitter);
+ interface_emitter.edge_traverser (inherits);
+
+ names (c, defines);
+ }
+
+ os << "</corbacomponent>" << endl;
+ }
+
+ private:
+ void configure_stream (string const& scoped_name)
+ {
+ string file_suffix = cl_.get_value ("desc-file-suffix",
+ ".ccd");
+
+ string desc_file_name = regex::perl_s (scoped_name, "/::/_/");
+
+ desc_file_name += file_suffix;
+
+ fs::path desc_file_path (desc_file_name);
+
+ if (os.is_open ())
+ {
+ os.close ();
+ }
+
+ os.open (desc_file_path, std::ios_base::out);
+
+ if (!os.is_open ())
+ {
+ cerr << desc_file_name
+ << ": error: unable to open file in write mode"
+ << endl;
+ }
+ }
+
+ private:
+ CommandLine const& cl_;
+ };
+}
+
+// ==========================================================
+
+void
+DescriptorGenerator::options (CL::Description& d)
+{
+ d.add_option (CL::OptionDescription (
+ "desc-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'.ccd\' "
+ "when constructing name of descriptor file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "desc-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of descriptor file.",
+ CL::OptionType::value));
+}
+
+void
+DescriptorGenerator::generate (CommandLine const& cl,
+ TranslationUnit& u)
+{
+ // Set auto-indentation for os.
+ //
+ Indentation::Implanter<Indentation::XML> guard (ofs_);
+
+ // Set unescaped name printer for os.
+ //
+ UnescapedNamePrinter name_printer;
+ ofs_.pword (name_printer_index) = &name_printer;
+
+ //
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ includes.node_traverser (region);
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ CompositionEmitter composition (ofs_, cl);
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ unit.traverse (u);
+}
diff --git a/modules/CIAO/CIDLC/DescriptorGenerator.hpp b/modules/CIAO/CIDLC/DescriptorGenerator.hpp
new file mode 100644
index 00000000000..e481c38e7d9
--- /dev/null
+++ b/modules/CIAO/CIDLC/DescriptorGenerator.hpp
@@ -0,0 +1,35 @@
+// file : CIDLC/DescriptorGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef DESCRIPTOR_GENERATOR_HPP
+#define DESCRIPTOR_GENERATOR_HPP
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+class DescriptorGenerator
+{
+public:
+ static void
+ options (CL::Description& d);
+
+ void
+ generate (CommandLine const&,
+ CCF::CIDL::SemanticGraph::TranslationUnit&);
+
+private:
+ fs::ofstream ofs_;
+};
+
+
+#endif // DESCRIPTOR_GENERATOR_HPP
+
+/*
+ * Local Variables:
+ * mode: C++
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/modules/CIAO/CIDLC/EmitterBase.cpp b/modules/CIAO/CIDLC/EmitterBase.cpp
new file mode 100644
index 00000000000..418db97852a
--- /dev/null
+++ b/modules/CIAO/CIDLC/EmitterBase.cpp
@@ -0,0 +1,11 @@
+// file : CIDLC/EmitterBase.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "EmitterBase.hpp"
+
+EmitterBase::EmitterBase (Context& c)
+ : ctx (c),
+ os (ctx.os ())
+{
+}
diff --git a/modules/CIAO/CIDLC/EmitterBase.hpp b/modules/CIAO/CIDLC/EmitterBase.hpp
new file mode 100644
index 00000000000..407eee8d0e0
--- /dev/null
+++ b/modules/CIAO/CIDLC/EmitterBase.hpp
@@ -0,0 +1,20 @@
+// file : CIDLC/EmitterBase.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EMITTERBASE_HPP
+#define EMITTERBASE_HPP
+
+#include "EmitterContext.hpp"
+
+class EmitterBase
+{
+public:
+ EmitterBase (Context&);
+
+protected:
+ Context& ctx;
+ ostream& os;
+};
+
+#endif // EMITTERBASE_HPP
diff --git a/modules/CIAO/CIDLC/EmitterContext.cpp b/modules/CIAO/CIDLC/EmitterContext.cpp
new file mode 100644
index 00000000000..478ae5d0027
--- /dev/null
+++ b/modules/CIAO/CIDLC/EmitterContext.cpp
@@ -0,0 +1,45 @@
+// file : CIDLC/EmitterContext.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "EmitterContext.hpp"
+
+Context::Context (ostream& os,
+ string export_macro,
+ CommandLine const& cl)
+ : os_ (os),
+ export_macro_ (export_macro),
+ cl_ (cl)
+{
+}
+
+ostream&
+Context::os (void)
+{
+ return os_;
+}
+
+string
+Context::export_macro (void)
+{
+ return export_macro_;
+}
+
+CommandLine const&
+Context::cl (void)
+{
+ return cl_;
+}
+
+string
+Context::composition_name (void)
+{
+ return composition_name_;
+}
+
+void
+Context::composition_name (const string& name)
+{
+ composition_name_ = name;
+}
+
diff --git a/modules/CIAO/CIDLC/EmitterContext.hpp b/modules/CIAO/CIDLC/EmitterContext.hpp
new file mode 100644
index 00000000000..bec5e74f91d
--- /dev/null
+++ b/modules/CIAO/CIDLC/EmitterContext.hpp
@@ -0,0 +1,35 @@
+// file : CIDLC/EmitterContext.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EMITTERCONTEXT_HPP
+#define EMITTERCONTEXT_HPP
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+
+#include <ostream>
+#include <string>
+
+using namespace std;
+
+class Context
+{
+public:
+ Context (ostream& os,
+ string export_macro,
+ CommandLine const& cl);
+
+ ostream& os (void);
+ string export_macro (void);
+ CommandLine const& cl (void);
+ string composition_name (void);
+ void composition_name (const string& name);
+
+private:
+ ostream& os_;
+ string export_macro_;
+ CommandLine const& cl_;
+ string composition_name_;
+};
+
+#endif // EMITTERCONTEXT_HPP
diff --git a/modules/CIAO/CIDLC/ExecImplGenerator.cpp b/modules/CIAO/CIDLC/ExecImplGenerator.cpp
new file mode 100644
index 00000000000..26f0d1c8ede
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplGenerator.cpp
@@ -0,0 +1,201 @@
+// file : CIDLC/ExecImplGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ExecImplGenerator.hpp"
+#include "ExecImplHeaderGenerator.hpp"
+#include "ExecImplSourceGenerator.hpp"
+#include "CxxNamePrinter.hpp"
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+#include "CCF/CodeGenerationKit/IndentationCxx.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+using namespace CCF;
+using namespace CIDL;
+using namespace SemanticGraph;
+using namespace Traversal;
+
+using std::string;
+using std::ostream;
+
+namespace
+{
+ // On some platforms toupper can be something else than a
+ // function.
+ int
+ upcase (int c)
+ {
+ return toupper (c);
+ }
+}
+
+ExecImplGenerator::ExecImplGenerator (CommandLine const& cl)
+ : cl_ (cl),
+ file_name_ (""),
+ export_macro_ ("")
+{
+}
+
+void ExecImplGenerator::options (CL::Description& d)
+{
+ d.add_option (CL::OptionDescription (
+ "exec-hdr-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'_exec.h\' "
+ "when constructing name of executor implementation file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "exec-hdr-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of executor implementation file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "exec-src-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'_exec.cpp\' "
+ "when constructing name of executor implementation file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "exec-src-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of executor implementation file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "exec-export-macro",
+ "macro",
+ "Replace default executor DLL export macro "
+ "with provided macro.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "exec-export-include",
+ "file",
+ "Replace default executor export include file "
+ "with provided file.",
+ CL::OptionType::value));
+}
+
+
+void ExecImplGenerator::generate (SemanticGraph::TranslationUnit& u,
+ fs::path const& file)
+{
+ // Generate files
+ compute_export_macro (file);
+
+ {
+ fs::ofstream hdr_ofs;
+ ostream& hdr_os = configure_stream ("exec-hdr-file-suffix",
+ "_exec.h",
+ "exec-hdr-file-regex",
+ hdr_ofs);
+
+ Indentation::Implanter<Indentation::Cxx> header_guard (hdr_os);
+
+ // Set C++ name printer for os.
+ //
+ CxxNamePrinter name_printer;
+ hdr_os.pword (name_printer_index) = &name_printer;
+
+
+ ExecImplHeaderEmitter hdr_emitter (hdr_os,
+ cl_,
+ export_macro_,
+ file);
+ hdr_emitter.generate (u);
+ }
+
+ {
+ fs::ofstream src_ofs;
+ ostream& src_os = configure_stream ("exec-src-file-suffix",
+ "_exec.cpp",
+ "exec-src-file-regex",
+ src_ofs);
+
+ Indentation::Implanter<Indentation::Cxx> header_guard (src_os);
+
+ // Set C++ name printer for os.
+ //
+ CxxNamePrinter name_printer;
+ src_os.pword (name_printer_index) = &name_printer;
+
+ ExecImplSourceEmitter src_emitter (src_os,
+ cl_,
+ export_macro_,
+ file);
+ src_emitter.generate (u);
+ }
+}
+
+void
+ExecImplGenerator::compute_export_macro (const fs::path& file_path)
+{
+ if (!file_path.empty ())
+ {
+ file_name_ = file_path.leaf ();
+ }
+
+ export_macro_ = cl_.get_value ("exec-export-macro", "");
+
+ if (export_macro_.empty () && !file_name_.empty ())
+ {
+ // Modify a copy of the filename string.
+ export_macro_ = file_name_;
+
+
+ // Convert filename string to upper case.
+ transform (export_macro_.begin (),
+ export_macro_.end (),
+ export_macro_.begin (),
+ upcase);
+
+ // Replace the suffix.
+ export_macro_ =
+ regex::perl_s (export_macro_,
+ "/^(.+?)(\\.(IDL|CIDL|CDL))?$/$1_EXEC_Export/");
+
+ // Replace any remaining '.' in the string with '_'.
+ export_macro_ = regex::perl_s (export_macro_,
+ "/\\./_/");
+ }
+}
+
+ostream&
+ExecImplGenerator::configure_stream (string const& suffix_option,
+ string const& default_suffix,
+ string const& regex_option,
+ fs::ofstream& ofs)
+{
+ if (! file_name_.empty ())
+ {
+ string file_suffix = cl_.get_value (suffix_option,
+ default_suffix);
+ string file_expr =
+ cl_.get_value (regex_option,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1" + file_suffix + "/");
+
+ string file_name = regex::perl_s (file_name_, file_expr);
+
+ fs::path file_path (file_name);
+
+ ofs.open (file_path, std::ios_base::out);
+
+ if (!ofs.is_open ())
+ {
+ cerr << file_name
+ << ": error: unable to open file in write mode"
+ << endl;
+ }
+ }
+
+ return ofs.is_open ()
+ ? static_cast<ostream&> (ofs)
+ : static_cast<ostream&> (std::cout);
+}
+
diff --git a/modules/CIAO/CIDLC/ExecImplGenerator.hpp b/modules/CIAO/CIDLC/ExecImplGenerator.hpp
new file mode 100644
index 00000000000..51536b3aaa3
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplGenerator.hpp
@@ -0,0 +1,44 @@
+// file : CIDLC/ExecImplGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXEC_IMPL_GENERATOR_HPP
+#define EXEC_IMPL_GENERATOR_HPP
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+class ExecImplGenerator
+{
+public:
+ static void
+ options (CL::Description& d);
+
+ ExecImplGenerator (CommandLine const& cl);
+
+ void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit&,
+ fs::path const& file);
+
+private:
+ void
+ compute_export_macro (const fs::path& file_path);
+
+ std::ostream&
+ configure_stream (std::string const& suffix_option,
+ std::string const& default_suffix,
+ std::string const& regex_option,
+ fs::ofstream& ofs);
+
+private:
+ CommandLine const& cl_;
+ std::string file_name_;
+ std::string export_macro_;
+};
+
+
+#endif // EXEC_IMPL_GENERATOR_HPP
+
diff --git a/modules/CIAO/CIDLC/ExecImplHeaderGenerator.cpp b/modules/CIAO/CIDLC/ExecImplHeaderGenerator.cpp
new file mode 100644
index 00000000000..6ee4899a4df
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplHeaderGenerator.cpp
@@ -0,0 +1,819 @@
+// file : CIDLC/ExecImplHeaderGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ExecImplHeaderGenerator.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+#include "AttributeHeaderEmitters.hpp"
+#include "OperationHeaderEmitters.hpp"
+#include "ParameterEmitter_T.hpp"
+#include "CompositionEmitter.hpp"
+#include "ModuleEmitter.hpp"
+#include "InterfaceEmitter.hpp"
+#include "Literals.hpp"
+#include "Upcase.hpp"
+
+#include <ostream>
+#include <sstream>
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+using std::endl;
+
+using namespace StringLiterals;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+namespace
+{
+ struct FacetEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ FacetEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (i.context ().count ("facet_impl_hdr_gen")) return;
+
+ os << "class " << ctx.export_macro () << " "
+ << i.name () << "_exec_i" << endl
+ << " : public virtual " << i.scoped_name ().scope_name ()
+ << "::CCM_" << i.name () << "," << endl
+ << " public virtual TAO_Local_RefCounted_Object" << endl
+ << "{"
+ << "public:" << endl
+ << i.name () << "_exec_i (void);"
+ << "virtual ~" << i.name () << "_exec_i (void);" << endl
+ << "// Operations from " << i.scoped_name () << endl << endl;
+
+ {
+ InterfaceEmitter interface_emitter (ctx);
+
+ Traversal::Defines defines_;
+ Traversal::Inherits inherits_;
+ interface_emitter.edge_traverser (defines_);
+ interface_emitter.edge_traverser (inherits_);
+
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines_.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines_.node_traverser (operation_emitter);
+ inherits_.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ inherits (i, inherits_);
+ names (i, defines_);
+ }
+
+ os << "};";
+
+ i.context ().set ("facet_impl_hdr_gen", true);
+ }
+ };
+
+ struct ExecPortsEmitter : Traversal::ConsumerData,
+ Traversal::ProviderData,
+ EmitterBase
+ {
+ ExecPortsEmitter (Context& c)
+ : EmitterBase (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ type_name_emitter_ (c)
+ {
+ enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ os << "virtual ";
+
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
+
+ Traversal::ProviderData::belongs (p, simple_belongs_);
+
+ os << "_ptr" << endl
+ << "get_" << p.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ os << "virtual void" << endl
+ << "push_" << c.name () << " (" << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " *ev" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ private:
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs enclosing_belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct ComponentExecImplEmitter : Traversal::Component, EmitterBase
+ {
+ ComponentExecImplEmitter (Context& c, ComponentExecutor& exec)
+ : EmitterBase (c),
+ exec_ (exec)
+ {
+ }
+
+ virtual void
+ pre (Type& t)
+ {
+ // Generate the facet executor class(es) first.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Provider provider;
+ defines.node_traverser (provider);
+
+ Traversal::Belongs belongs;
+ provider.edge_traverser (belongs);
+
+ FacetEmitter facet_emitter (ctx);
+ belongs.node_traverser (facet_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "class " << ctx.export_macro () << " "
+ << t.name () << "_exec_i" << endl
+ << " : public virtual " << exec_.name () << "," << endl
+ << " public virtual TAO_Local_RefCounted_Object" << endl
+ << "{"
+ << "public:" << endl
+ << t.name () << "_exec_i (void);"
+ << "virtual ~" << t.name () << "_exec_i (void);" << endl;
+
+ os << "// Supported or inherited operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Supports supports_;
+ component_emitter.edge_traverser (component_inherits);
+ component_emitter.edge_traverser (supports_);
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Attribute operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Port operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ ExecPortsEmitter exec_ports_emitter (ctx);
+ defines.node_traverser (exec_ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Operations from Components::SessionComponent" << endl << endl;
+
+ os << "virtual void" << endl
+ << "set_session_context (" << endl
+ << STRS[COMP_SC] << "_ptr ctx" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "ciao_preactivate (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "ciao_postactivate (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "ccm_activate (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "ccm_passivate (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "ccm_remove (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+ }
+
+ virtual void
+ post (Type& t)
+ {
+ os << "protected:" << endl
+ << t.name () << "_Context *context_;" << endl
+ << "};";
+ }
+
+ private:
+ ComponentExecutor& exec_;
+ };
+
+ struct ComponentExecutorEmitter : Traversal::ComponentExecutor, EmitterBase
+ {
+ ComponentExecutorEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ Traversal::ComponentExecutor component_executor;
+
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+
+ ComponentExecImplEmitter component_exec_impl_emitter (ctx, i);
+ implements.node_traverser (component_exec_impl_emitter);
+
+ component_executor.traverse (i);
+ }
+ };
+
+ struct HomeExecImplEmitter : Traversal::Home, EmitterBase
+ {
+ HomeExecImplEmitter (Context& c, HomeExecutor& exec)
+ : EmitterBase (c),
+ exec_ (exec)
+ {
+ }
+
+ virtual void
+ pre (Type& t)
+ {
+ os << "class " << ctx.export_macro () << " "
+ << t.name () << "_exec_i" << endl
+ << " : public virtual " << exec_.name () << "," << endl
+ << " public virtual TAO_Local_RefCounted_Object" << endl
+ << "{"
+ << "public:" << endl
+ << t.name () << "_exec_i (void);"
+ << "virtual ~" << t.name () << "_exec_i (void);" << endl;
+
+ os << "// Supported or inherited operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Supports supports_;
+ home_emitter.edge_traverser (home_inherits);
+ home_emitter.edge_traverser (supports_);
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Home operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+ home_emitter.edge_traverser (home_inherits);
+
+ HomeOperationEmitter home_operation_emitter (ctx);
+ defines.node_traverser (home_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ home_operation_emitter.edge_traverser (receives);
+ home_operation_emitter.edge_traverser (returns);
+ home_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate home factory operations. This is a separate traversal
+ // stack because we want to generate the factory operations
+ // of ancestors with the return type of the base component.
+ os << "// Factory and finder operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ bool for_exec = true;
+ FactoryOperationEmitter factory_operation_emitter (ctx, for_exec);
+ FinderOperationEmitter finder_operation_emitter (ctx, for_exec);
+ defines.node_traverser (factory_operation_emitter);
+ defines.node_traverser (finder_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ factory_operation_emitter.edge_traverser (receives);
+ factory_operation_emitter.edge_traverser (returns);
+ factory_operation_emitter.edge_traverser (raises);
+ finder_operation_emitter.edge_traverser (receives);
+ finder_operation_emitter.edge_traverser (returns);
+ finder_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Attribute operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ home_emitter.edge_traverser (home_inherits);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Implicit operations." << endl << endl
+ << "virtual " << STRS[COMP_EC] << "_ptr" << endl
+ << "create (" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "));" << endl;
+ }
+
+ virtual void
+ post (Type& t)
+ {
+ os << "};";
+
+ string name;
+
+ // We need to escape C++ keywords before flattening the name.
+ //
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+ os << "extern \"C\" " << ctx.export_macro ()
+ << " ::Components::HomeExecutorBase_ptr" << endl
+ << "create" << name << "_Impl (void);" << endl;
+ }
+
+ private:
+ HomeExecutor& exec_;
+ };
+
+ struct HomeExecutorEmitter : Traversal::HomeExecutor, EmitterBase
+ {
+ HomeExecutorEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ Traversal::HomeExecutor home_executor;
+
+ Traversal::Implements implements;
+ home_executor.edge_traverser (implements);
+
+ HomeExecImplEmitter home_exec_impl_emitter (ctx, i);
+ implements.node_traverser (home_exec_impl_emitter);
+
+ home_executor.traverse (i);
+ }
+ };
+}
+
+ExecImplHeaderEmitter::ExecImplHeaderEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file)
+ : os (os_),
+ cl_ (cl),
+ export_macro_ (export_macro),
+ file_ (file)
+{}
+
+void
+ExecImplHeaderEmitter::pre (TranslationUnit&)
+{
+ os << COPYRIGHT;
+
+ string file_name ("");
+
+ if (!file_.empty ())
+ {
+ file_name = file_.leaf ();
+ }
+
+ string uc_file_name = file_name;
+
+ std::transform (uc_file_name.begin (),
+ uc_file_name.end (),
+ uc_file_name.begin (),
+ upcase);
+
+ string uc_file_suffix = cl_.get_value ("exec-hdr-file-suffix",
+ "_exec.h");
+
+ std::transform (uc_file_suffix.begin (),
+ uc_file_suffix.end (),
+ uc_file_suffix.begin (),
+ upcase);
+
+ string guard =
+ "CIAO_"
+ + regex::perl_s (uc_file_name,
+ "/^(.+?)(\\.(IDL|CIDL|CDL))?$/$1"
+ + uc_file_suffix
+ + "/");
+
+ // Replace any remaining '.' with '_'.
+ guard = regex::perl_s (guard, "/\\./_/");
+
+ os << "#ifndef " << guard << endl
+ << "#define " << guard << endl << endl
+ << "#include /**/ \"ace/pre.h\"" << endl << endl;
+
+ string file_suffix = cl_.get_value ("svnt-hdr-file-suffix",
+ "_svnt.h");
+
+ string svnt_file_name = regex::perl_s (file_name,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1"
+ + file_suffix
+ + "/");
+
+ os << "#include \"" << svnt_file_name << "\"" << endl << endl;
+
+ os << "#if !defined (ACE_LACKS_PRAGMA_ONCE)" << endl
+ << "# pragma once" << endl
+ << "#endif /* ACE_LACKS_PRAGMA_ONCE */" << endl << endl;
+
+ string default_export_include =
+ regex::perl_s (file_name,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1_exec_export.h/");
+
+ string export_include = cl_.get_value ("exec-export-include",
+ default_export_include);
+
+ if (!export_include.empty ())
+ {
+ os << "#include \"" << export_include << "\"" << endl;
+ }
+
+ os << "#include \"tao/LocalObject.h\"" << endl << endl;
+}
+
+void
+ExecImplHeaderEmitter::generate (TranslationUnit& u)
+{
+ pre (u);
+
+ Context c (os, export_macro_, cl_);
+
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion principal_region;
+ contains_principal.node_traverser (principal_region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ principal_region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ ModuleEmitter module (c);
+ CompositionEmitter composition (c);
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+ composition.edge_traverser (defines);
+ module.edge_traverser (defines);
+
+ //--
+ ComponentExecutorEmitter component_executor (c);
+ HomeExecutorEmitter home_executor (c);
+ defines.node_traverser (component_executor);
+ defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ unit.traverse (u);
+
+ post (u);
+}
+
+void
+ExecImplHeaderEmitter::post (TranslationUnit&)
+{
+ if (file_.empty ()) return;
+
+ string uc_file_name = file_.leaf ();
+
+ std::transform (uc_file_name.begin (),
+ uc_file_name.end (),
+ uc_file_name.begin (),
+ upcase);
+
+ string uc_file_suffix = cl_.get_value ("exec-hdr-file-suffix",
+ "_exec.h");
+
+ std::transform (uc_file_suffix.begin (),
+ uc_file_suffix.end (),
+ uc_file_suffix.begin (),
+ upcase);
+
+ string guard =
+ "CIAO_"
+ + regex::perl_s (uc_file_name,
+ "/^(.+?)(\\.(IDL|CIDL))?$/$1" + uc_file_suffix + "/");
+
+ guard = regex::perl_s (guard, "/\\./_/");
+
+ os << "#include /**/ \"ace/post.h\"" << endl << endl
+ << "#endif /* " << guard << " */"
+ << endl << endl;
+}
+
diff --git a/modules/CIAO/CIDLC/ExecImplHeaderGenerator.hpp b/modules/CIAO/CIDLC/ExecImplHeaderGenerator.hpp
new file mode 100644
index 00000000000..0cc8127cc76
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplHeaderGenerator.hpp
@@ -0,0 +1,43 @@
+// file : CIDLC/ServantHeaderGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXEC_IMPL_HEADER_GENERATOR_HPP
+#define EXEC_IMPL_HEADER_GENERATOR_HPP
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+using std::string;
+
+class ExecImplHeaderEmitter
+{
+public:
+ ExecImplHeaderEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file);
+
+ virtual ~ExecImplHeaderEmitter () {}
+
+ virtual void
+ pre (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ post (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+private:
+ std::ostream& os;
+ CommandLine const& cl_;
+ string export_macro_;
+ fs::path file_;
+};
+
+
+#endif // EXEC_IMPL_HEADER_GENERATOR_HPP
+
diff --git a/modules/CIAO/CIDLC/ExecImplSourceGenerator.cpp b/modules/CIAO/CIDLC/ExecImplSourceGenerator.cpp
new file mode 100644
index 00000000000..1f36dd99248
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplSourceGenerator.cpp
@@ -0,0 +1,1136 @@
+// file : CIDLC/ExecImplSourceGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ExecImplSourceGenerator.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+#include "ParameterEmitter_T.hpp"
+#include "AttributeSourceEmitters_T.hpp"
+#include "CompositionEmitter.hpp"
+#include "ModuleEmitter.hpp"
+#include "InterfaceEmitter.hpp"
+#include "Literals.hpp"
+
+#include <ostream>
+#include <sstream>
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+using namespace StringLiterals;
+
+namespace
+{
+ template <typename T>
+ struct OperationEmitter : Traversal::Operation, EmitterBase
+ {
+ OperationEmitter (Context& c, T& scope)
+ : EmitterBase (c),
+ scope_ (scope)
+ {}
+
+ virtual void
+ name (Type& o)
+ {
+ os << endl
+ << scope_.name () << "_exec_i::" << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_none (Type&)
+ {
+ os << " ()" << endl;
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_none (Type&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (Type& o)
+ {
+ os << "{"
+ << STRS[YCH] << endl;
+
+ Traversal::Operation operation_emitter;
+
+ Traversal::Belongs returns;
+ operation_emitter.edge_traverser (returns);
+
+ NullReturnEmitter return_emitter (ctx);
+ returns.node_traverser (return_emitter);
+
+ operation_emitter.traverse (o);
+
+ os << "}";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << "," << endl;
+ }
+
+ protected:
+ T& scope_;
+ };
+
+ struct FacetEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ FacetEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (i.context ().count ("facet_impl_src_gen")) return;
+
+ os << STRS[SEP] << endl
+ << "// Facet Executor Implementation Class: "
+ << i.name () << "_exec_i" << endl
+ << STRS[SEP] << endl << endl;
+
+ os << i.name () << "_exec_i::"
+ << i.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}"
+ << i.name () << "_exec_i::~"
+ << i.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}"
+ << "// Operations from " << i.scoped_name () << endl << endl;
+
+ {
+ InterfaceEmitter interface_emitter (ctx);
+
+ Traversal::Defines defines_;
+ Traversal::Inherits inherits_;
+ interface_emitter.edge_traverser (defines_);
+ interface_emitter.edge_traverser (inherits_);
+
+ bool exec_src = true;
+ AttributeSourceEmitter<UnconstrainedInterface> attribute_emitter (
+ ctx,
+ i,
+ exec_src
+ );
+ defines_.node_traverser (attribute_emitter);
+
+ OperationEmitter<UnconstrainedInterface> operation_emitter (ctx, i);
+ defines_.node_traverser (operation_emitter);
+ inherits_.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ bool for_exec_src = true;
+ ParameterEmitter<Traversal::InParameter> in_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::InOutParameter> inout_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::OutParameter> out_param (
+ ctx,
+ for_exec_src
+ );
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ inherits (i, inherits_);
+ names (i, defines_);
+ }
+
+ i.context ().set ("facet_impl_src_gen", true);
+ }
+ };
+
+ struct ExecPortsEmitter : Traversal::ConsumerData,
+ Traversal::ProviderData,
+ EmitterBase
+ {
+ ExecPortsEmitter (Context& c, SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
+
+ Traversal::ProviderData::belongs (p, simple_belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_exec_i::get_"
+ << p.name () << " ()" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[YCH] << endl
+ << "return ";
+
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
+
+ Traversal::ProviderData::belongs (p, simple_belongs_);
+
+ os << "::_nil ();" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ os << "void" << endl
+ << scope_.name () << "_exec_i::push_"
+ << c.name () << " (" << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " * /* ev */" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[YCH] << endl
+ << "}";
+ }
+
+ private:
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs enclosing_belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct ComponentExecImplEmitter : Traversal::Component, EmitterBase
+ {
+ ComponentExecImplEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ pre (Type& t)
+ {
+ // Generate the facet executor class(es) first.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Provider provider;
+ defines.node_traverser (provider);
+
+ Traversal::Belongs belongs;
+ provider.edge_traverser (belongs);
+
+ FacetEmitter facet_emitter (ctx);
+ belongs.node_traverser (facet_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[SEP] << endl
+ << "// Component Executor Implementation Class: "
+ << t.name () << "_exec_i" << endl
+ << STRS[SEP] << endl << endl;
+
+ os << t.name () << "_exec_i::"
+ << t.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}"
+ << t.name () << "_exec_i::~"
+ << t.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}";
+
+ os << "// Supported or inherited operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Supports supports_;
+ component_emitter.edge_traverser (component_inherits);
+ component_emitter.edge_traverser (supports_);
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ bool exec_src = true;
+ AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (
+ ctx,
+ t,
+ exec_src
+ );
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter<SemanticGraph::Component> operation_emitter (ctx, t);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ bool for_exec_src = true;
+ ParameterEmitter<Traversal::InParameter> in_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::InOutParameter> inout_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::OutParameter> out_param (
+ ctx,
+ for_exec_src
+ );
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Attribute operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ bool exec_src = true;
+ AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (
+ ctx,
+ t,
+ exec_src
+ );
+ defines.node_traverser (attribute_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Port operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ component_emitter.edge_traverser (component_inherits);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ ExecPortsEmitter exec_ports_emitter (ctx, t);
+ defines.node_traverser (exec_ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Operations from Components::SessionComponent" << endl << endl;
+
+ os << "void" << endl
+ << t.name () << "_exec_i::set_session_context (" << endl
+ << STRS[COMP_SC] << "_ptr ctx" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << "this->context_ =" << endl
+ << " " << t.name () << "_Context::_narrow (" << endl
+ << " ctx" << endl
+ << " " <<");"
+ << endl;
+
+ os << "if (this->context_ == 0)" << endl
+ << "{"
+ << "throw ::CORBA::INTERNAL ();"
+ << "}"
+ << "}";
+
+ os << "void" << endl
+ << t.name () << "_exec_i::ciao_preactivate ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[YCH]
+ << "}";
+
+ os << "void" << endl
+ << t.name () << "_exec_i::ciao_postactivate ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[YCH]
+ << "}";
+
+ os << "void" << endl
+ << t.name () << "_exec_i::ccm_activate ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[YCH]
+ << "}";
+
+ os << "void" << endl
+ << t.name () << "_exec_i::ccm_passivate ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[YCH]
+ << "}";
+
+ os << "void" << endl
+ << t.name () << "_exec_i::ccm_remove ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[YCH]
+ << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ }
+ };
+
+ // HomeFactory and HomeFinder are tied to Operation in
+ // the front end. Since we want to treat them differently
+ // than regular operations in a home (we want to generate
+ // base class factory operations returning the base component,
+ // for example), we use this class for regular home operations
+ // that overrides HomeFactory and HomeFinder traversals
+ // to do nothing.
+ struct HomeOperationEmitter : OperationEmitter<SemanticGraph::Home>,
+ Traversal::HomeFactory,
+ Traversal::HomeFinder
+ {
+ HomeOperationEmitter (Context& c, SemanticGraph::Home& scope)
+ : OperationEmitter<SemanticGraph::Home> (c, scope)
+ {}
+
+ virtual void
+ traverse (SemanticGraph::HomeFactory&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::HomeFinder&)
+ {
+ }
+ };
+
+ struct FactoryOperationEmitter : Traversal::HomeFactory,
+ EmitterBase
+ {
+ FactoryOperationEmitter (Context& c, SemanticGraph::Home& scope)
+ : EmitterBase (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ enclosing_returns_.node_traverser (enclosing_type_name_emitter_);
+ simple_returns_.node_traverser (simple_type_name_emitter_);
+ }
+
+ virtual void
+ returns (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[COMP_EC] << "_ptr" << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFactory& hf)
+ {
+ os << scope_.name () << "_exec_i::" << hf.name ();
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFactory&)
+ {
+ os << " ()" << endl;
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFactory&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_none (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFactory&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFactory& hf)
+ {
+ os << "{"
+ << STRS[YCH] << endl
+ << "return ";
+
+ Traversal::HomeFactory::returns (hf, enclosing_returns_);
+
+ os << "::CCM_";
+
+ Traversal::HomeFactory::returns (hf, simple_returns_);
+
+ os << "::_nil ();"
+ << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFactory&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ Traversal::Returns enclosing_returns_;
+ Traversal::Returns simple_returns_;
+ SemanticGraph::Home& scope_;
+ };
+
+ struct FinderOperationEmitter : Traversal::HomeFinder,
+ EmitterBase
+ {
+ FinderOperationEmitter (Context& c, SemanticGraph::Home& scope)
+ : EmitterBase (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ enclosing_returns_.node_traverser (enclosing_type_name_emitter_);
+ simple_returns_.node_traverser (simple_type_name_emitter_);
+ }
+
+ virtual void
+ returns (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[COMP_EC] << "_ptr" << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFinder& hf)
+ {
+ os << scope_.name () << "_exec_i::" << hf.name ();
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFinder&)
+ {
+ os << " ()" << endl;
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFinder&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_none (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFinder&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFinder& hf)
+ {
+ os << "{"
+ << STRS[YCH] << endl
+ << "return ";
+
+ Traversal::HomeFinder::returns (hf, enclosing_returns_);
+
+ os << "::CCM_";
+
+ Traversal::HomeFinder::returns (hf, simple_returns_);
+
+ os << "::_nil ();"
+ << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFinder&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ Traversal::Returns enclosing_returns_;
+ Traversal::Returns simple_returns_;
+ SemanticGraph::Home& scope_;
+ };
+
+ struct HomeExecImplEmitter : Traversal::Home, EmitterBase
+ {
+ HomeExecImplEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ pre (Type& t)
+ {
+ os << STRS[SEP] << endl
+ << "// Home Executor Implementation Class: "
+ << t.name () << "_exec_i" << endl
+ << STRS[SEP] << endl << endl;
+
+ os << t.name () << "_exec_i::"
+ << t.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}"
+ << t.name () << "_exec_i::~"
+ << t.name () << "_exec_i (void)" << endl
+ << "{"
+ << "}";
+
+ os << "// Supported or inherited operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Supports supports_;
+ home_emitter.edge_traverser (home_inherits);
+ home_emitter.edge_traverser (supports_);
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ bool exec_src = true;
+ AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (
+ ctx,
+ t,
+ exec_src
+ );
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter<SemanticGraph::Home> operation_emitter (ctx, t);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ bool for_exec_src = true;
+ ParameterEmitter<Traversal::InParameter> in_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::InOutParameter> inout_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::OutParameter> out_param (
+ ctx,
+ for_exec_src
+ );
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Home operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+ home_emitter.edge_traverser (home_inherits);
+
+ HomeOperationEmitter home_operation_emitter (ctx, t);
+ defines.node_traverser (home_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ home_operation_emitter.edge_traverser (receives);
+ home_operation_emitter.edge_traverser (returns);
+ home_operation_emitter.edge_traverser (raises);
+
+ bool for_exec_src = true;
+ ParameterEmitter<Traversal::InParameter> in_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::InOutParameter> inout_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::OutParameter> out_param (
+ ctx,
+ for_exec_src
+ );
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate home factory operations. This is a separate traversal
+ // stack because we want to generate the factory operations
+ // of ancestors with the return type of the base component.
+ os << "// Factory and finder operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ FactoryOperationEmitter factory_operation_emitter (ctx, t);
+ FinderOperationEmitter finder_operation_emitter (ctx, t);
+ defines.node_traverser (factory_operation_emitter);
+ defines.node_traverser (finder_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ factory_operation_emitter.edge_traverser (receives);
+ factory_operation_emitter.edge_traverser (returns);
+ factory_operation_emitter.edge_traverser (raises);
+ finder_operation_emitter.edge_traverser (receives);
+ finder_operation_emitter.edge_traverser (returns);
+ finder_operation_emitter.edge_traverser (raises);
+
+ bool for_exec_src = true;
+ ParameterEmitter<Traversal::InParameter> in_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::InOutParameter> inout_param (
+ ctx,
+ for_exec_src
+ );
+ ParameterEmitter<Traversal::OutParameter> out_param (
+ ctx,
+ for_exec_src
+ );
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Attribute operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ home_emitter.edge_traverser (home_inherits);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ bool exec_src = true;
+ AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (
+ ctx,
+ t,
+ exec_src
+ );
+ defines.node_traverser (attribute_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Implicit operations." << endl << endl
+ << STRS[COMP_EC] << "_ptr" << endl
+ << t.name () << "_exec_i::create ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_CE] << "))" << endl
+ << "{"
+ << STRS[COMP_EC] << "_ptr retval =" << endl
+ << " " << STRS[COMP_EC] << "::_nil ();" << endl
+ << "ACE_NEW_THROW_EX (" << endl
+ << "retval," << endl;
+
+ Traversal::Home home_emitter;
+
+ Traversal::Manages manages_;
+ home_emitter.edge_traverser (manages_);
+
+ SimpleTypeNameEmitter manages_emitter (ctx);
+ manages_.node_traverser (manages_emitter);
+
+ home_emitter.traverse (t);
+
+ os << "_exec_i," << endl
+ << "::CORBA::NO_MEMORY ());"
+ << endl
+ << "return retval;"
+ << "}";
+ }
+
+ virtual void
+ post (Type& t)
+ {
+ // We need to escape C++ keywords before flattening the name.
+ //
+ string name;
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+ os << "extern \"C\" " << ctx.export_macro ()
+ << " ::Components::HomeExecutorBase_ptr" << endl
+ << "create" << name << "_Impl (void)" << endl
+ << "{"
+ << "::Components::HomeExecutorBase_ptr retval =" << endl
+ << " ::Components::HomeExecutorBase::_nil ();" << endl
+ << "ACE_NEW_RETURN (" << endl
+ << "retval," << endl
+ << t.name () << "_exec_i," << endl
+ << "::Components::HomeExecutorBase::_nil ());" << endl
+ << "return retval;"
+ << "}";
+ }
+ };
+}
+
+ExecImplSourceEmitter::ExecImplSourceEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file)
+ : os (os_),
+ cl_ (cl),
+ export_macro_ (export_macro),
+ file_ (file)
+{}
+
+void
+ExecImplSourceEmitter::pre (TranslationUnit&)
+{
+ os << COPYRIGHT;
+
+ string file_name ("");
+
+ if (! file_.empty ())
+ {
+ file_name = file_.leaf ();
+ }
+
+ string file_suffix = cl_.get_value ("exec-hdr-file-suffix",
+ "_exec.h");
+
+ file_name = regex::perl_s (file_name,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1"
+ + file_suffix
+ + "/");
+
+ os << "#include \"" << file_name << "\"" << endl
+ << "#include \"ciao/CIAO_common.h\"" << endl << endl;
+}
+
+void
+ExecImplSourceEmitter::generate (TranslationUnit& u)
+{
+ pre (u);
+
+ Context c (os, export_macro_, cl_);
+
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion principal_region;
+ contains_principal.node_traverser (principal_region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ principal_region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ ModuleEmitter module (c);
+ CompositionEmitter composition (c);
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+ composition.edge_traverser (defines);
+ module.edge_traverser (defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ defines.node_traverser (component_executor);
+ defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ //--
+ ComponentExecImplEmitter component_exec_impl_emitter (c);
+ HomeExecImplEmitter home_exec_impl_emitter (c);
+ implements.node_traverser (component_exec_impl_emitter);
+ implements.node_traverser (home_exec_impl_emitter);
+
+ unit.traverse (u);
+
+ post (u);
+}
+
+void
+ExecImplSourceEmitter::post (TranslationUnit&)
+{
+}
+
diff --git a/modules/CIAO/CIDLC/ExecImplSourceGenerator.hpp b/modules/CIAO/CIDLC/ExecImplSourceGenerator.hpp
new file mode 100644
index 00000000000..bf70a53870a
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecImplSourceGenerator.hpp
@@ -0,0 +1,43 @@
+// file : CIDLC/ExecImplSourceGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXEC_IMPL_SOURCE_GENERATOR_HPP
+#define EXEC_IMPL_SOURCE_GENERATOR_HPP
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+using std::string;
+
+class ExecImplSourceEmitter
+{
+public:
+ ExecImplSourceEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file);
+
+ virtual ~ExecImplSourceEmitter () {}
+
+ virtual void
+ pre (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ post (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+private:
+ std::ostream& os;
+ CommandLine const& cl_;
+ string export_macro_;
+ fs::path file_;
+};
+
+
+#endif // EXEC_IMPL_SOURCE_GENERATOR_HPP
+
diff --git a/modules/CIAO/CIDLC/ExecutorMappingGenerator.cpp b/modules/CIAO/CIDLC/ExecutorMappingGenerator.cpp
new file mode 100644
index 00000000000..369fbbaac02
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecutorMappingGenerator.cpp
@@ -0,0 +1,2099 @@
+// file : CIDLC/ExecutorMappingGenerator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ExecutorMappingGenerator.hpp"
+#include "Literals.hpp"
+
+#include <set>
+#include <ostream>
+#include <fstream>
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+#include "CCF/CodeGenerationKit/IndentationIDL.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+using std::string;
+using std::ostream;
+using std::endl;
+
+using namespace StringLiterals;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+namespace
+{
+ class Context
+ {
+ public:
+ Context (TranslationUnit& tu)
+ : tu_ (tu)
+ {
+ }
+
+ TranslationUnit&
+ tu () const
+ {
+ return tu_;
+ }
+
+ public:
+ bool
+ add (Home& h)
+ {
+ return homes_.insert (&h).second;
+ }
+
+ bool
+ add (Component& c)
+ {
+ return components_.insert (&c).second;
+ }
+
+ bool
+ add (UnconstrainedInterface& i)
+ {
+ return interfaces_.insert (std::make_pair(&i, true)).second;
+ }
+
+ bool
+ add (Composition& c)
+ {
+ return compositions_.insert (&c).second;
+ }
+
+ public:
+ bool
+ find (Home& h) const
+ {
+ return homes_.find (&h) != homes_.end ();
+ }
+
+ bool
+ find (Component& c) const
+ {
+ return components_.find (&c) != components_.end ();
+ }
+
+ bool
+ find (UnconstrainedInterface& i) const
+ {
+ return interfaces_.find (&i) != interfaces_.end ();
+ }
+
+ // The next two functions help to keep track of forward
+ // declarations for LEM. The non-const version should be
+ // used in emitter (note that it changed the flag to false).
+ // The const version should be used in module re-opener.
+ //
+ bool
+ find_fwd (UnconstrainedInterface& i)
+ {
+ Interfaces::iterator it (interfaces_.find (&i));
+
+ if (it == interfaces_.end ()) return false;
+
+ if (it->second)
+ {
+ it->second = false;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool
+ find_fwd (UnconstrainedInterface& i) const
+ {
+ Interfaces::const_iterator it (interfaces_.find (&i));
+
+ return it != interfaces_.end () && it->second;
+ }
+
+ bool
+ find (Composition& c) const
+ {
+ return compositions_.find (&c) != compositions_.end ();
+ }
+
+ private:
+ typedef std::set<Home*> Homes;
+ typedef std::set<Component*> Components;
+ typedef std::map<UnconstrainedInterface*, bool> Interfaces;
+ typedef std::set<Composition*> Compositions;
+
+ TranslationUnit& tu_;
+
+ Homes homes_;
+ Components components_;
+ Interfaces interfaces_;
+ Compositions compositions_;
+ };
+
+ class Traverser
+ {
+ protected:
+ Traverser (Context& c)
+ : ctx (c)
+ {
+ }
+
+ Context& ctx;
+ };
+
+ struct Collector : Traverser
+ {
+ protected:
+ Collector (Context& c)
+ : Traverser (c)
+ {
+ }
+
+ bool
+ exist (ScopedName const& name)
+ {
+ return !ctx.tu ().lookup (name).empty ();
+ }
+ };
+
+ //
+ //
+ //
+ struct ComponentCollector : Traversal::Component, Collector
+ {
+ ComponentCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ SimpleName name (c.name ());
+ ScopedName scope (c.scoped_name ().scope_name ());
+
+ ScopedName monolith (scope, "CCM_" + name);
+ ScopedName context (scope, "CCM_" + name + "_Context");
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (context) || exist (monolith)) return;
+
+ if(ctx.add (c))
+ {
+ // Collect inherited components and provides interfaces.
+ //
+ Traversal::Component::traverse (c);
+ }
+ }
+ };
+
+
+ //
+ //
+ //
+ struct HomeCollector : Traversal::Home, Collector
+ {
+ HomeCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& h)
+ {
+ SimpleName name (h.name ());
+ ScopedName scope (h.scoped_name ().scope_name ());
+
+ ScopedName main (scope, "CCM_" + name);
+ ScopedName expl (scope, "CCM_" + name + "Explicit");
+ ScopedName impl (scope, "CCM_" + name + "Implicit");
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (main) || exist (expl) || exist (impl)) return;
+
+ if(ctx.add (h))
+ {
+ // Note that I don't go after components that inherited home manages
+ // because it will be handled by component inheritance tree.
+ //
+ Traversal::Home::traverse (h);
+ }
+ }
+ };
+
+
+ //
+ //
+ //
+ struct InterfaceCollector : Traversal::UnconstrainedInterface, Collector
+ {
+ InterfaceCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ SimpleName name (i.name ());
+ ScopedName scope (i.scoped_name ().scope_name ());
+
+ ScopedName mapping (scope, "CCM_" + name);
+
+ // Check if mapping has already been provided.
+ //
+ if (exist (mapping)) return;
+
+ // Add to the list if it's not already there.
+ //
+ ctx.add (i);
+ }
+ };
+
+ struct CompositionCollector : Traversal::Composition, Collector
+ {
+ CompositionCollector (Context& c)
+ : Collector (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ // Add to the list if it's not already there.
+ //
+ if (ctx.add (c))
+ {
+ Traversal::Composition::traverse (c);
+ }
+ }
+ };
+
+ struct Emitter : Traverser
+ {
+ protected:
+ Emitter (Context& c, ostream& os_)
+ : Traverser (c), os (os_)
+ {
+ }
+
+ protected:
+ ostream& os;
+ };
+
+
+ //
+ //
+ //
+ struct FullTypeNameEmitter : Traversal::FundamentalType,
+ Traversal::Type,
+ Emitter
+ {
+ FullTypeNameEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::FundamentalType& t)
+ {
+ os << t.name ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ os << t.scoped_name ();
+ }
+ };
+
+
+ struct NameMangler : Traversal::Nameable, Emitter
+ {
+ NameMangler (Context& c,
+ ostream& os,
+ string const& prefix,
+ string const& suffix = "")
+ : Emitter (c, os), prefix_ (prefix), suffix_ (suffix)
+ {
+ }
+
+ virtual void
+ traverse (Type& t)
+ {
+ ScopedName n (t.scoped_name ());
+ os << n.scope_name () << "::" << prefix_ << n.simple_name () << suffix_;
+ }
+
+ private:
+ string prefix_, suffix_;
+ };
+
+
+ //
+ //
+ //
+ struct ComponentEmitter : Traversal::Component, Emitter
+ {
+ protected:
+ ComponentEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (ctx.find (c))
+ {
+ Component::traverse (c);
+ }
+ }
+ };
+
+ struct AttributeEmitter : Traversal::ReadAttribute,
+ Traversal::ReadWriteAttribute,
+ Emitter
+ {
+ AttributeEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ type_name_ (c, os)
+ {
+ edge_traverser (get_raises_);
+ edge_traverser (set_raises_);
+
+ get_raises_.node_traverser (type_name_);
+ set_raises_.node_traverser (type_name_);
+ }
+
+ // ReadAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadAttribute& )
+ {
+ os << "readonly attribute ";
+ }
+
+ virtual void
+ name (SemanticGraph::ReadAttribute& a)
+ {
+ os << " " << a.name ();
+ }
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadAttribute&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadAttribute&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::ReadAttribute&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::ReadAttribute&)
+ {
+ os << ", ";
+ }
+
+ // ReadWriteAttribute
+ //
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& )
+ {
+ os << "attribute ";
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << " " << a.name ();
+ }
+
+ virtual void
+ get_raises_pre (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << " getraises (";
+ }
+
+ virtual void
+ get_raises_post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ set_raises_pre (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << " setraises (";
+ }
+
+ virtual void
+ set_raises_post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::ReadWriteAttribute&)
+ {
+ os << ", ";
+ }
+
+ private:
+ Traversal::GetRaises get_raises_;
+ Traversal::SetRaises set_raises_;
+ FullTypeNameEmitter type_name_;
+ };
+
+
+ // MonolithEmitter generates what spec calls 'Monolithic Component
+ // Executor'.
+ //
+ struct MonolithEmitter : ComponentEmitter
+ {
+ MonolithEmitter (Context& c, ostream& os)
+ : ComponentEmitter (c, os),
+ monolith_name_emitter (c, os, "CCM_"),
+ attribute (c, os),
+ consumer (c, os),
+ provider (c, os),
+ type_name_emitter (c, os)
+ {
+ edge_traverser (inherits);
+ edge_traverser (defines);
+
+ inherits.node_traverser (monolith_name_emitter);
+
+ defines.node_traverser (attribute);
+ defines.node_traverser (consumer);
+ defines.node_traverser (provider);
+
+ attribute.edge_traverser (belongs);
+ consumer.edge_traverser (belongs);
+ provider.edge_traverser (provider_belongs);
+
+ belongs.node_traverser (type_name_emitter);
+ provider_belongs.node_traverser (monolith_name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << "CCM_" << c.name ();
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ os << " : " << STRS[COMP_EC];
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ os << ", ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << ", ";
+ }
+
+ private:
+ struct Consumer : Traversal::ConsumerSet, Emitter
+ {
+ Consumer (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ returns (Type&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << " push_" << c.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct Provider : Traversal::ProviderGet, Emitter
+ {
+ Provider (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << " get_" << c.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+ Traversal::Inherits inherits;
+ Traversal::Defines defines;
+
+ NameMangler monolith_name_emitter;
+
+ AttributeEmitter attribute;
+ Consumer consumer;
+ Provider provider;
+
+ Traversal::Belongs belongs;
+ Traversal::Belongs provider_belongs;
+
+ FullTypeNameEmitter type_name_emitter;
+ };
+
+
+ // ContextEmitter generates component context interface.
+ //
+ //
+ struct ContextPortEmitter : Traversal::MultiUserGet,
+ Traversal::SingleUserGet,
+ Traversal::PublisherSet,
+ Traversal::EmitterSet,
+ Emitter
+ {
+ ContextPortEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+
+ // MultiUser.
+ //
+ virtual void
+ returns (SemanticGraph::MultiUser& u)
+ {
+ Component& c (dynamic_cast<Component&>((*u.named_begin ())->scope ()));
+ os << c.scoped_name () << "::" << u.name () << "Connections";
+ }
+
+ virtual void
+ name (SemanticGraph::MultiUser& u)
+ {
+ os << " get_connections_" << u.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::MultiUser&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::MultiUser&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::MultiUser&)
+ {
+ os << ";";
+ }
+
+
+ // SingleUser.
+ //
+ virtual void
+ name (SemanticGraph::SingleUser& u)
+ {
+ os << " get_connection_" << u.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::SingleUser&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::SingleUser&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::SingleUser&)
+ {
+ os << ";";
+ }
+
+ // Publisher.
+ //
+ virtual void
+ returns (SemanticGraph::Publisher&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (SemanticGraph::Publisher& p)
+ {
+ os << " push_" << p.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Publisher&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Publisher&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (SemanticGraph::Publisher&)
+ {
+ os << ";";
+ }
+
+
+ // Emitter.
+ //
+ virtual void
+ returns (SemanticGraph::Emitter&)
+ {
+ os << "void";
+ }
+
+ virtual void
+ name (SemanticGraph::Emitter& e)
+ {
+ os << " push_" << e.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Emitter&)
+ {
+ os << " (in ";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Emitter&)
+ {
+ os << " e)";
+ }
+
+ virtual void
+ post (SemanticGraph::Emitter&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct ContextEmitter : ComponentEmitter
+ {
+ ContextEmitter (Context& c, ostream& os, CommandLine const& cl)
+ : ComponentEmitter (c, os),
+ name_emitter (c, os, "CCM_", "_Context"),
+ cl_ (cl)
+ {
+ edge_traverser (inherits);
+ inherits.node_traverser (name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& c)
+ {
+ os << "CCM_" << c.name () << "_Context";
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << " : ::CIAO::UpgradeableContext";
+ }
+ else
+ {
+ //@@ should be os << " : ::Components::CCMContext";
+ os << " : " << STRS[COMP_SC];
+ }
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ private:
+ Traversal::Inherits inherits;
+ NameMangler name_emitter;
+ CommandLine const& cl_;
+ };
+
+
+ //
+ //
+ //
+ struct HomeEmitter : Traversal::Home, Emitter
+ {
+ HomeEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& h)
+ {
+ if (ctx.find (h))
+ {
+ Home::traverse (h);
+ }
+ }
+ };
+
+
+ // HomeExplicitEmitter generates home explicit interface
+ //
+ //
+ struct ExplicitPortEmitter : AttributeEmitter,
+ Traversal::Operation,
+ Traversal::HomeFactory,
+ Traversal::HomeFinder
+ {
+ ExplicitPortEmitter (Context& c, ostream& os)
+ : AttributeEmitter (c, os)
+ {
+ }
+
+ // Operation.
+ //
+
+ virtual void
+ name (SemanticGraph::Operation& o)
+ {
+ os << " " << o.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::Operation&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::Operation&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ receives_none (SemanticGraph::Operation&)
+ {
+ os << " ()";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::Operation&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::Operation&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::Operation&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::Operation&)
+ {
+ os << ", ";
+ }
+
+
+ // HomeFactory.
+ //
+
+ virtual void
+ returns (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[COMP_EC] << " ";
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFactory& hf)
+ {
+ os << " " << hf.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFactory&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFactory&)
+ {
+ os << " ()";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFactory&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFactory&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFactory&)
+ {
+ os << ", ";
+ }
+
+ // HomeFinder.
+ //
+
+ virtual void
+ returns (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[COMP_EC] << " ";
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFinder& hf)
+ {
+ os << " " << hf.name ();
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " (";
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFinder&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFinder&)
+ {
+ os << " ()";
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " raises (";
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFinder&)
+ {
+ os << ")";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFinder&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFinder&)
+ {
+ os << ", ";
+ }
+ };
+
+ struct ParameterEmitter : Traversal::InParameter,
+ Traversal::OutParameter,
+ Traversal::InOutParameter,
+ public Emitter
+ {
+ ParameterEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (InParameter&)
+ {
+ os << endl << "in ";
+ }
+
+ virtual void
+ pre (OutParameter&)
+ {
+ os << endl << "out ";
+ }
+
+ virtual void
+ pre (InOutParameter&)
+ {
+ os << endl << "inout ";
+ }
+
+ virtual void
+ name (InParameter& p)
+ {
+ os << " " << p.name ();
+ }
+
+ virtual void
+ name (OutParameter& p)
+ {
+ os << " " << p.name ();
+ }
+
+ virtual void
+ name (InOutParameter& p)
+ {
+ os << " " << p.name ();
+ }
+ };
+
+ struct HomeExplicitEmitter : HomeEmitter
+ {
+ HomeExplicitEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os), name_emitter (c, os, "CCM_", "Explicit")
+ {
+ edge_traverser (inherits);
+ inherits.node_traverser (name_emitter);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name () << "Explicit";
+ }
+
+ virtual void
+ inherits_pre (Type&)
+ {
+ os << " : ";
+ }
+
+ virtual void
+ inherits_none (Type&)
+ {
+ os << " : ::Components::HomeExecutorBase";
+ }
+
+ virtual void
+ supports_pre (Type&)
+ {
+ os << ", ";
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << ", ";
+ }
+
+ private:
+ Traversal::Inherits inherits;
+ NameMangler name_emitter;
+ };
+
+
+ // HomeImplicitEmitter generates home implicit interface
+ //
+ //
+ struct HomeImplicitEmitter : HomeEmitter
+ {
+ HomeImplicitEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name () << "Implicit";
+ }
+
+ virtual void
+ names (Type&)
+ {
+ os << "{"
+ << STRS[COMP_EC] << " "
+ << "create () raises (" << STRS[EXCP_CE] << ");"
+ << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ // HomeMainEmitter generates home main interface
+ //
+ //
+ struct HomeMainEmitter : HomeEmitter
+ {
+ HomeMainEmitter (Context& c, ostream& os)
+ : HomeEmitter (c, os)
+ {
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& h)
+ {
+ os << "CCM_" << h.name ();
+ }
+
+ virtual void
+ inherits (Type& h)
+ {
+ os << " : "
+ << "CCM_" << h.name () << "Explicit, "
+ << "CCM_" << h.name () << "Implicit";
+ }
+
+ virtual void
+ names (Type&)
+ {
+ os << "{}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+ //
+ //
+ //
+ struct ModuleEmitter : Traversal::Module, Emitter
+ {
+ ModuleEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& m)
+ {
+ if (has_elements (m))
+ {
+ Traversal::Module::traverse (m);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "module ";
+ }
+
+ virtual void
+ name (Type& m)
+ {
+ os << m.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+
+ private:
+
+ template <typename T>
+ struct Finder : T
+ {
+ Finder (Context& c, bool& r)
+ : ctx (c), r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (typename T::Type& t)
+ {
+ if (ctx.find (t)) r_ = true;
+ }
+
+ private:
+ Context& ctx;
+ bool& r_;
+ };
+
+
+ struct InterfaceFwdFinder : Traversal::UnconstrainedInterface
+ {
+ InterfaceFwdFinder (Context const& c, bool& r)
+ : ctx (c), r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ // Make sure we use const version of find_fwd.
+ //
+ if (ctx.find_fwd (i)) r_ = true;
+ }
+
+ private:
+ Context const& ctx;
+ bool& r_;
+ };
+
+ bool
+ has_elements (Type& m)
+ {
+ bool r (false);
+
+ Traversal::Module module;
+ Traversal::Defines defines;
+ Traversal::Mentions mentions;
+
+ module.edge_traverser (defines);
+ module.edge_traverser (mentions);
+
+ //@@ MSVC bug: interface is considered to be an alias for a struct.
+ //
+ Finder<Traversal::Composition> composition (ctx, r);
+ Finder<Traversal::UnconstrainedInterface> interface_ (ctx, r);
+ InterfaceFwdFinder interface_fwd (ctx, r);
+ Finder<Traversal::Component> component (ctx, r);
+ Finder<Traversal::Home> home (ctx, r);
+
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+ defines.node_traverser (interface_);
+ defines.node_traverser (component);
+ defines.node_traverser (home);
+
+ mentions.node_traverser (interface_fwd);
+
+ module.traverse (m);
+
+ return r;
+ }
+ };
+
+ //
+ //
+ //
+ struct InterfaceFwdEmitter : Traversal::UnconstrainedInterface, Emitter
+ {
+ InterfaceFwdEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ if (ctx.find_fwd (i))
+ {
+ os << "local interface CCM_" << i.name () << ";";
+ }
+ }
+ };
+
+ //
+ //
+ //
+ struct InterfaceEmitter : Traversal::UnconstrainedInterface, Emitter
+ {
+ InterfaceEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& i)
+ {
+ if (ctx.find (i))
+ {
+ // No need to emit forward declarations anymore.
+ //
+ ctx.find_fwd (i);
+
+ Traversal::UnconstrainedInterface::traverse (i);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << "CCM_" << i.name ();
+ }
+
+ virtual void
+ inherits (Type& i)
+ {
+ os << " : " << i.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ //
+ //
+ //
+ struct CompositionEmitter : Traversal::Composition, Emitter
+ {
+ CompositionEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ if (ctx.find (c))
+ {
+ Traversal::Composition::traverse (c);
+ }
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "module ";
+ }
+
+ virtual void
+ name (Type& m)
+ {
+ os << "CIDL_" << m.name ();
+ }
+
+ virtual void
+ names_pre (Type&)
+ {
+ os << "{";
+ }
+
+ virtual void
+ names_post (Type&)
+ {
+ os << "}";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << ";";
+ }
+ };
+
+
+ struct ComponentContextEmitter : Traversal::ComponentExecutor, Emitter
+ {
+ ComponentContextEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_", "_Context")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type& i)
+ {
+ //@@ This code temporarily generates typedef. Should be changed
+ // when we have proper C++ generated code.
+ //
+ // os << "local interface ";
+ os << "typedef ";
+ Traversal::ComponentExecutor::implements (i, implements_traverser_);
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ //@@ need to check if spec prescribes this name.
+ //
+ os << " " << i.name () << "_Context;";
+ }
+
+ virtual void
+ implements (Type&)
+ {
+ // os << " : ";
+
+ // Traversal::ComponentExecutor::implements (i, implements_traverser_);
+
+ // os << ", "
+ // << STRS[COMP_SC];
+ }
+
+ virtual void
+ post (Type&)
+ {
+ // os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+
+ struct ComponentExecutorEmitter : Traversal::ComponentExecutor, Emitter
+ {
+ ComponentExecutorEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << i.name ();
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ os << " : ";
+
+ Traversal::ComponentExecutor::implements (i, implements_traverser_);
+
+ os << ", "
+ << "::Components::SessionComponent";
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+
+ struct HomeExecutorEmitter : Traversal::HomeExecutor, Emitter
+ {
+ HomeExecutorEmitter (Context& c, ostream& os)
+ : Emitter (c, os),
+ name_emitter_ (c, os, "CCM_")
+ {
+ implements_traverser_.node_traverser (name_emitter_);
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "local interface ";
+ }
+
+ virtual void
+ name (Type& i)
+ {
+ os << i.name ();
+ }
+
+ virtual void
+ implements (Type& i)
+ {
+ os << " : ";
+
+ Traversal::HomeExecutor::implements (i, implements_traverser_);
+ }
+
+ virtual void
+ post (Type&)
+ {
+ os << "{};";
+ }
+
+ private:
+ NameMangler name_emitter_;
+ Traversal::Implements implements_traverser_;
+ };
+
+ //
+ //
+ //
+ struct IncludesEmitter : Traversal::QuoteIncludes,
+ Traversal::BracketIncludes,
+ Emitter
+ {
+ IncludesEmitter (Context& c, ostream& os)
+ : Emitter (c, os)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::QuoteIncludes& qi)
+ {
+ os << "#include \"" << qi.file ().string () << "\"" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::BracketIncludes& bi)
+ {
+ os << "#include <" << bi.file ().string () << ">" << endl;
+ }
+ };
+}
+
+void ExecutorMappingGenerator::
+options (CL::Description& d)
+{
+ d.add_option (CL::OptionDescription (
+ "lem-force-all",
+ "Force generation of local executor mapping for all IDL "
+ "types including those not used (directly or inderectly) "
+ "by compositions. This option is useful for generating a "
+ "common portion of local executor mapping used by more "
+ "than one component or composition.",
+ CL::OptionType::flag));
+
+ d.add_option (CL::OptionDescription (
+ "lem-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'E\' "
+ "when constructing name of local executor mapping file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "lem-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of local executor mapping file.",
+ CL::OptionType::value));
+}
+
+
+void ExecutorMappingGenerator::
+generate (CommandLine const& cl,
+ TranslationUnit& tu,
+ fs::path const& file_path)
+{
+ fs::ofstream ofs;
+
+ string file_name (file_path.empty () ? "" : file_path.leaf ());
+
+ if (!file_name.empty ())
+ {
+ string file_name (file_path.leaf ());
+
+ string suffix (cl.get_value ("lem-file-suffix", "E.idl"));
+
+ string expr (cl.get_value (
+ "lem-file-regex",
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1" + suffix + "/"));
+
+ string lem_file_name (regex::perl_s (file_name, expr));
+
+ fs::path lem_file_path (lem_file_name);
+
+ ofs.open (lem_file_path, std::ios_base::out);
+
+ if (!ofs.is_open ())
+ {
+ cerr << lem_file_name << ": error: unable to open in write mode"
+ << endl;
+ return;
+ }
+ }
+
+ ostream& os = ofs.is_open ()
+ ? static_cast<ostream&> (ofs)
+ : static_cast<ostream&> (std::cout);
+
+ // Dump file header.
+ //
+ os << COPYRIGHT;
+
+ // Set auto-indentation for os.
+ //
+ Indentation::Implanter<Indentation::IDL> guard (os);
+
+ Context ctx (tu);
+
+ if (cl.get_value ("lem-force-all", false))
+ {
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+
+ contains_principal.node_traverser (region);
+
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ HomeCollector home (ctx);
+ ComponentCollector component (ctx);
+ InterfaceCollector interface_ (ctx);
+
+ defines.node_traverser (module);
+ defines.node_traverser (home);
+ defines.node_traverser (component);
+ defines.node_traverser (interface_);
+
+ // Layer 4
+ //
+ Traversal::Defines component_defines;
+ Traversal::Inherits component_inherits;
+ Traversal::Inherits home_inherits;
+
+ module.edge_traverser (defines);
+
+ home.edge_traverser (home_inherits);
+ component.edge_traverser (component_defines);
+ component.edge_traverser (component_inherits);
+
+ //--
+
+ Traversal::Provider provider;
+
+ component_defines.node_traverser (provider);
+ component_inherits.node_traverser (component);
+ home_inherits.node_traverser (home);
+
+
+ // Layer 5
+ //
+ Traversal::Belongs provider_belongs;
+ provider.edge_traverser (provider_belongs);
+
+ //
+ provider_belongs.node_traverser (interface_);
+
+ // end
+
+ unit.traverse (tu);
+ }
+ else
+ {
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+
+ contains_principal.node_traverser (region);
+
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (contains_root);
+ region.edge_traverser (includes);
+
+ //--
+ Traversal::Root root;
+
+ contains_root.node_traverser (root);
+ includes.node_traverser (region);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ CompositionCollector composition (ctx);
+
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+
+ module.edge_traverser (defines);
+ composition.edge_traverser (composition_defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements component_executor_implements;
+ Traversal::Implements home_executor_implements;
+
+ component_executor.edge_traverser (component_executor_implements);
+ home_executor.edge_traverser (home_executor_implements);
+
+ //--
+ ComponentCollector component (ctx);
+ HomeCollector home (ctx);
+
+ component_executor_implements.node_traverser (component);
+ home_executor_implements.node_traverser (home);
+
+
+ // Layer 6
+ //
+ Traversal::Defines component_defines;
+ Traversal::Inherits component_inherits;
+ Traversal::Inherits home_inherits;
+
+ component.edge_traverser (component_defines);
+ component.edge_traverser (component_inherits);
+ home.edge_traverser (home_inherits);
+
+ //--
+
+ Traversal::Provider provider;
+
+ component_defines.node_traverser (provider);
+ component_inherits.node_traverser (component);
+ home_inherits.node_traverser (home);
+
+
+ // Layer 7
+ //
+ Traversal::Belongs provider_belongs;
+ provider.edge_traverser (provider_belongs);
+
+ //
+ InterfaceCollector interface_ (ctx);
+
+ provider_belongs.node_traverser (interface_);
+
+
+ // end
+
+ unit.traverse (tu);
+ }
+
+ {
+ os << "#include \"ciao/CCM_Container.idl\"" << endl;
+
+ if (cl.get_value ("lem-force-all", false) && !file_name.empty ())
+ {
+ os << "#include \"" << file_name << '\"' << endl;
+ }
+
+ string swap_option = cl.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << "#include <CIAO_UpgradeableContext.idl>" << endl;
+ }
+
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion principal_region;
+
+ contains_principal.node_traverser (principal_region);
+
+
+ // Layer 2
+ //
+ Traversal::TranslationRegion included_region;
+
+ // Inclusion handling is somewhat tricky because we want
+ // to print only top-level #include's.
+ //
+
+ Traversal::ContainsRoot contains_root;
+ Traversal::QuoteIncludes quote_includes;
+ Traversal::BracketIncludes bracket_includes;
+ IncludesEmitter includes_emitter (ctx, os);
+
+
+ principal_region.edge_traverser (includes_emitter);
+ principal_region.edge_traverser (quote_includes);
+ principal_region.edge_traverser (bracket_includes);
+ principal_region.edge_traverser (contains_root);
+
+ included_region.edge_traverser (quote_includes);
+ included_region.edge_traverser (bracket_includes);
+ included_region.edge_traverser (contains_root);
+
+
+ //--
+ Traversal::Root root;
+
+ contains_root.node_traverser (root);
+ quote_includes.node_traverser (included_region);
+ bracket_includes.node_traverser (included_region);
+
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ Traversal::Mentions mentions;
+ root.edge_traverser (defines);
+ root.edge_traverser (mentions);
+
+ //--
+ ModuleEmitter module (ctx, os);
+
+ CompositionEmitter composition (ctx, os);
+
+ InterfaceEmitter interface_ (ctx, os);
+ InterfaceFwdEmitter interface_fwd (ctx, os);
+
+ MonolithEmitter component_monolith (ctx, os);
+ ContextEmitter component_context (ctx, os, cl);
+
+ HomeImplicitEmitter home_implicit (ctx, os);
+ HomeExplicitEmitter home_explicit (ctx, os);
+ HomeMainEmitter home_main (ctx, os);
+
+ defines.node_traverser (module);
+
+ defines.node_traverser (composition);
+
+ defines.node_traverser (interface_);
+ mentions.node_traverser (interface_fwd);
+
+ defines.node_traverser (component_monolith);
+ defines.node_traverser (component_context);
+
+ defines.node_traverser (home_implicit);
+ defines.node_traverser (home_explicit);
+ defines.node_traverser (home_main);
+
+ // Layer 4
+ //
+
+ Traversal::Supports supports;
+
+ Traversal::Defines composition_defines;
+
+ Traversal::Defines component_context_defines;
+
+ Traversal::Defines home_explicit_defines;
+
+ module.edge_traverser (defines);
+ module.edge_traverser (mentions);
+
+ composition.edge_traverser (composition_defines);
+
+ component_monolith.edge_traverser (supports);
+ component_context.edge_traverser (component_context_defines);
+
+ home_explicit.edge_traverser (supports);
+ home_explicit.edge_traverser (home_explicit_defines);
+
+ //--
+ FullTypeNameEmitter type (ctx, os);
+
+ ComponentContextEmitter session_component_context (ctx, os);
+ ComponentExecutorEmitter session_component_executor (ctx, os);
+ HomeExecutorEmitter session_home_executor (ctx, os);
+
+ ContextPortEmitter port_context (ctx, os);
+ ExplicitPortEmitter port_explicit (ctx, os);
+
+ supports.node_traverser (type);
+
+ composition_defines.node_traverser (session_component_context);
+ composition_defines.node_traverser (session_component_executor);
+ composition_defines.node_traverser (session_home_executor);
+
+ component_context_defines.node_traverser (port_context);
+
+ home_explicit_defines.node_traverser (port_explicit);
+
+
+ // Layer 5
+ //
+ Traversal::Belongs belongs;
+ Traversal::Receives receives;
+ Traversal::Raises raises;
+
+ port_context.edge_traverser (belongs);
+ port_explicit.edge_traverser (belongs);
+ port_explicit.edge_traverser (raises);
+
+ port_explicit.edge_traverser (receives);
+
+ //--
+ ParameterEmitter parameter (ctx, os);
+
+ belongs.node_traverser (type);
+ receives.node_traverser (parameter);
+ raises.node_traverser (type);
+
+ // Layer 6
+ //
+ parameter.edge_traverser (belongs);
+
+
+ // end
+
+ unit.traverse (tu);
+ }
+}
diff --git a/modules/CIAO/CIDLC/ExecutorMappingGenerator.hpp b/modules/CIAO/CIDLC/ExecutorMappingGenerator.hpp
new file mode 100644
index 00000000000..b67892c0658
--- /dev/null
+++ b/modules/CIAO/CIDLC/ExecutorMappingGenerator.hpp
@@ -0,0 +1,32 @@
+// file : CIDLC/ExecutorMappingGenerator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef EXECUTOR_MAPPING_GENERATOR_HPP
+#define EXECUTOR_MAPPING_GENERATOR_HPP
+
+#include "CCF/CompilerElements/FileSystem.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+//@@ SemanticGraphFwd could be useful here.
+//
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+class ExecutorMappingGenerator
+{
+public:
+ static void
+ options (CL::Description& d);
+
+ //@@ maybe I should introduce constant and non-constant
+ // traversal.
+ //
+ void
+ generate (CommandLine const& cl,
+ CCF::CIDL::SemanticGraph::TranslationUnit&,
+ fs::path const& file);
+};
+
+#endif // EXECUTOR_MAPPING_GENERATOR_HPP
diff --git a/modules/CIAO/CIDLC/InterfaceEmitter.cpp b/modules/CIAO/CIDLC/InterfaceEmitter.cpp
new file mode 100644
index 00000000000..1ce524cdfab
--- /dev/null
+++ b/modules/CIAO/CIDLC/InterfaceEmitter.cpp
@@ -0,0 +1,26 @@
+// file : CIDLC/InterfaceEmitter.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "InterfaceEmitter.hpp"
+
+InterfaceEmitter::InterfaceEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+InterfaceEmitter::traverse (UnconstrainedInterface& i)
+{
+ if (add (i))
+ {
+ Traversal::UnconstrainedInterface::traverse (i);
+ }
+}
+
+bool
+InterfaceEmitter::add (UnconstrainedInterface& i)
+{
+ return interfaces_.insert (&i).second;
+}
+
diff --git a/modules/CIAO/CIDLC/InterfaceEmitter.hpp b/modules/CIAO/CIDLC/InterfaceEmitter.hpp
new file mode 100644
index 00000000000..fdd2411f912
--- /dev/null
+++ b/modules/CIAO/CIDLC/InterfaceEmitter.hpp
@@ -0,0 +1,30 @@
+// file : CIDLC/InterfaceEmitter.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef INTERFACEEMITTER_HPP
+#define INTERFACEEMITTER_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "EmitterBase.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+struct InterfaceEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+{
+ InterfaceEmitter (Context& c);
+
+ virtual void traverse (UnconstrainedInterface&);
+
+private:
+ bool add (UnconstrainedInterface&);
+
+private:
+ std::set<UnconstrainedInterface*> interfaces_;
+};
+
+#endif // INTERFACEEMITTER_HPP
diff --git a/modules/CIAO/CIDLC/Literals.cpp b/modules/CIAO/CIDLC/Literals.cpp
new file mode 100644
index 00000000000..0ed8f8e9699
--- /dev/null
+++ b/modules/CIAO/CIDLC/Literals.cpp
@@ -0,0 +1,81 @@
+// file : CIDLC/Literals.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "Literals.hpp"
+
+namespace StringLiterals
+{
+ char const* const COPYRIGHT =
+ "// $I" "d$\n"
+ "//\n"
+ "// **** Code generated by the ****\n"
+ "// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****\n"
+ "// CIAO has been developed by:\n"
+ "// Center for Distributed Object Computing\n"
+ "// Washington University\n"
+ "// St. Louis, MO\n"
+ "// USA\n"
+ "// http://www.cs.wustl.edu/~schmidt/doc-center.html\n"
+ "// CIDL Compiler has been developed by:\n"
+ "// Institute for Software Integrated Systems\n"
+ "// Vanderbilt University\n"
+ "// Nashville, TN\n"
+ "// USA\n"
+ "// http://www.isis.vanderbilt.edu/\n"
+ "//\n"
+ "// Information about CIAO is available at:\n"
+ "// http://www.dre.vanderbilt.edu/CIAO"
+ "\n\n";
+
+ char const* const STRS[LIT_SIZE] =
+ {
+ // Common CORBA and all Components exceptions.
+ "ACE_THROW_SPEC (( ::CORBA::SystemException))", // EXCP_SNGL
+ "ACE_THROW_SPEC ((", // EXCP_START
+ "::CORBA::SystemException", // EXCP_SYS
+ "::CORBA::BAD_PARAM ()", // EXCP_BP
+ "::Components::IllegalState", // EXCP_IS
+ "::Components::AlreadyConnected", // EXCP_AC
+ "::Components::InvalidConnection", // EXCP_IC
+ "::Components::NoConnection", // EXCP_NC
+ "::Components::ExceededConnectionLimit", // EXCP_ECL
+ "::Components::InvalidName", // EXCP_IN
+ "::Components::RemoveFailure", // EXCP_RF
+ "::Components::NoKeyAvailable", // EXCP_NKA
+ "::Components::InvalidConfiguration", // EXCP_ICF
+ "::Components::CookieRequired", // EXCP_CR
+ "::Components::BadEventType", // EXCP_BET
+ "::Components::CCMException", // EXCP_CE
+
+ // Commonly used Components module members.
+ "::Components::Cookie", // COMP_CK
+ "::Components::NameList & /* names */", // COMP_NAMES
+ "::Components::EventConsumerBase", // COMP_ECB
+ "::Components::EnterpriseComponent", // COMP_EC
+ "::Components::SessionContext", // COMP_SC
+ "::Components::ConsumerDescriptions", // COMP_CD
+ "::Components::ReceptacleDescriptions", // COMP_RD
+ "::Components::PublisherDescriptions", // COMP_PD
+ "::Components::EmitterDescriptions", // COMP_ED
+
+ // This could change - don't want it scattered all over.
+ "namespace CIDL_", // CIDL_NS
+ "CIAO_FACET", // FACET_PREFIX
+
+ // Labels for things stored in a SyntaxTree node's Context.
+ "CIDLC::RepositoryIdGenerator::TypeId", // TYPE_ID
+ "CIDLC::RepositoryIdGenerator::TypePrefix", // TYPE_PREFIX
+ "CIDLC::RepositoryIdGenerator::RepoId", // REPO_ID
+
+ "// Your code here.", // YCH
+ "//==================================================================", // SEP
+
+ "variable-size", // VAR_SIZE
+ "_ciao_extract_val", // EXTRACT
+ "_ciao_extract_tmp", // EXTRACT_TMP
+ "ACE_UNUSED_ARG", // ACE_UA
+ "ACE_THROW_RETURN" // ACE_TR
+ };
+}
+
diff --git a/modules/CIAO/CIDLC/Literals.hpp b/modules/CIAO/CIDLC/Literals.hpp
new file mode 100644
index 00000000000..09e2a8cb7c4
--- /dev/null
+++ b/modules/CIAO/CIDLC/Literals.hpp
@@ -0,0 +1,58 @@
+// file : CIDLC/Literals.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef LITERALS_HPP
+#define LITERALS_HPP
+
+namespace StringLiterals
+{
+ extern char const* const COPYRIGHT;
+
+ // Index into the string array in Literals.cpp.
+ enum
+ {
+ EXCP_SNGL,
+ EXCP_START,
+ EXCP_SYS,
+ EXCP_BP,
+ EXCP_IS,
+ EXCP_AC,
+ EXCP_IC,
+ EXCP_NC,
+ EXCP_ECL,
+ EXCP_IN,
+ EXCP_RF,
+ EXCP_NKA,
+ EXCP_ICF,
+ EXCP_CR,
+ EXCP_BET,
+ EXCP_CE,
+ COMP_CK,
+ COMP_NAMES,
+ COMP_ECB,
+ COMP_EC,
+ COMP_SC,
+ COMP_CD,
+ COMP_RD,
+ COMP_PD,
+ COMP_ED,
+ CIDL_NS,
+ FACET_PREFIX,
+ TYPE_ID,
+ TYPE_PREFIX,
+ REPO_ID,
+ YCH,
+ SEP,
+ VAR_SIZE,
+ EXTRACT,
+ EXTRACT_TMP,
+ ACE_UA,
+ ACE_TR,
+ LIT_SIZE
+ };
+
+ extern char const* const STRS[LIT_SIZE];
+}
+
+#endif // LITERALS_HPP
diff --git a/modules/CIAO/CIDLC/ModuleEmitter.cpp b/modules/CIAO/CIDLC/ModuleEmitter.cpp
new file mode 100644
index 00000000000..990d95ef4b8
--- /dev/null
+++ b/modules/CIAO/CIDLC/ModuleEmitter.cpp
@@ -0,0 +1,22 @@
+// file : CIDLC/ModuleEmitter.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ModuleEmitter.hpp"
+
+ModuleEmitter::ModuleEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+ModuleEmitter::pre (Type& t)
+{
+ os << "namespace " << t.name () << "{";
+}
+
+void
+ModuleEmitter::post (Type&)
+{
+ os << "}";
+}
diff --git a/modules/CIAO/CIDLC/ModuleEmitter.hpp b/modules/CIAO/CIDLC/ModuleEmitter.hpp
new file mode 100644
index 00000000000..9aa8de2f9ff
--- /dev/null
+++ b/modules/CIAO/CIDLC/ModuleEmitter.hpp
@@ -0,0 +1,24 @@
+// file : CIDLC/ModuleEmitter.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef MODULEEMITTER_HPP
+#define MODULEEMITTER_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "EmitterBase.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+struct ModuleEmitter : Traversal::Module, EmitterBase
+{
+ ModuleEmitter (Context& c);
+
+ virtual void pre (Type&);
+ virtual void post (Type&);
+};
+
+#endif // MODULEEMITTER_HPP
diff --git a/modules/CIAO/CIDLC/OperationHeaderEmitters.cpp b/modules/CIAO/CIDLC/OperationHeaderEmitters.cpp
new file mode 100644
index 00000000000..e41e3d6d023
--- /dev/null
+++ b/modules/CIAO/CIDLC/OperationHeaderEmitters.cpp
@@ -0,0 +1,264 @@
+// file : CIDLC/OperationHeaderEmitters.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "OperationHeaderEmitters.hpp"
+#include "Literals.hpp"
+
+using namespace StringLiterals;
+
+OperationEmitter::OperationEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+OperationEmitter::pre (Type&)
+{
+ os << "virtual ";
+}
+
+void
+OperationEmitter::name (Type& o)
+{
+ os << endl << o.name ();
+}
+
+void
+OperationEmitter::receives_pre (Type&)
+{
+ os << " (" << endl;
+}
+
+void
+OperationEmitter::receives_none (Type&)
+{
+ os << " ()" << endl;
+}
+
+void
+OperationEmitter::receives_post (Type&)
+{
+ os << endl << ")" << endl;
+}
+
+void
+OperationEmitter::raises_pre (Type&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+OperationEmitter::raises_none (Type&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+OperationEmitter::raises_post (Type&)
+{
+ os << "))";
+}
+
+void
+OperationEmitter::post (Type&)
+{
+ os << ";" << endl;
+}
+
+void
+OperationEmitter::comma (Type&)
+{
+ os << "," << endl;
+}
+
+// ==================================================
+
+HomeOperationEmitter::HomeOperationEmitter (Context& c)
+ : OperationEmitter (c)
+{
+}
+
+void
+HomeOperationEmitter::traverse (SemanticGraph::HomeFactory&)
+{
+}
+
+void
+HomeOperationEmitter::traverse (SemanticGraph::HomeFinder&)
+{
+}
+
+// ==================================================
+
+FactoryOperationEmitter::FactoryOperationEmitter (Context& c, bool for_exec)
+ : EmitterBase (c),
+ returns_emitter_ (c),
+ for_exec_ (for_exec)
+{
+ returns_.node_traverser (returns_emitter_);
+}
+
+void
+FactoryOperationEmitter::pre (SemanticGraph::HomeFactory&)
+{
+ os << "virtual ";
+}
+
+void
+FactoryOperationEmitter::returns (SemanticGraph::HomeFactory& t)
+{
+ if (for_exec_)
+ {
+ os << STRS[COMP_EC] << "_ptr";
+ }
+ else
+ {
+ Traversal::HomeFactory::returns (t, returns_);
+ }
+
+ os << endl;
+}
+
+void
+FactoryOperationEmitter::name (SemanticGraph::HomeFactory& t)
+{
+ os << t.name ();
+}
+
+void
+FactoryOperationEmitter::receives_none (SemanticGraph::HomeFactory&)
+{
+ os << " ()" << endl;
+}
+
+void
+FactoryOperationEmitter::receives_pre (SemanticGraph::HomeFactory&)
+{
+ os << " (" << endl;
+}
+
+void
+FactoryOperationEmitter::receives_post (SemanticGraph::HomeFactory&)
+{
+ os << endl << ")" << endl;
+}
+
+void
+FactoryOperationEmitter::raises_none (SemanticGraph::HomeFactory&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+FactoryOperationEmitter::raises_pre (SemanticGraph::HomeFactory&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+FactoryOperationEmitter::raises_post (SemanticGraph::HomeFactory&)
+{
+ os << "))";
+}
+
+void
+FactoryOperationEmitter::post (SemanticGraph::HomeFactory&)
+{
+ os << ";" << endl;
+}
+
+void
+FactoryOperationEmitter::comma (SemanticGraph::HomeFactory&)
+{
+ os << "," << endl;
+}
+
+// ==================================================
+
+FinderOperationEmitter::FinderOperationEmitter (Context& c, bool for_exec)
+ : EmitterBase (c),
+ returns_emitter_ (c),
+ for_exec_ (for_exec)
+{
+ returns_.node_traverser (returns_emitter_);
+}
+
+void
+FinderOperationEmitter::pre (SemanticGraph::HomeFinder&)
+{
+ os << "virtual ";
+}
+
+void
+FinderOperationEmitter::returns (SemanticGraph::HomeFinder& t)
+{
+ if (for_exec_)
+ {
+ os << STRS[COMP_EC] << "_ptr";
+ }
+ else
+ {
+ Traversal::HomeFinder::returns (t, returns_);
+ }
+
+ os << endl;
+}
+
+void
+FinderOperationEmitter::name (SemanticGraph::HomeFinder& t)
+{
+ os << t.name ();
+}
+
+void
+FinderOperationEmitter::receives_none (SemanticGraph::HomeFinder&)
+{
+ os << " ()" << endl;
+}
+
+void
+FinderOperationEmitter::receives_pre (SemanticGraph::HomeFinder&)
+{
+ os << " (" << endl;
+}
+
+void
+FinderOperationEmitter::receives_post (SemanticGraph::HomeFinder&)
+{
+ os << endl << ")" << endl;
+}
+
+void
+FinderOperationEmitter::raises_none (SemanticGraph::HomeFinder&)
+{
+ os << STRS[EXCP_SNGL];
+}
+
+void
+FinderOperationEmitter::raises_pre (SemanticGraph::HomeFinder&)
+{
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+}
+
+void
+FinderOperationEmitter::raises_post (SemanticGraph::HomeFinder&)
+{
+ os << "))";
+}
+
+void
+FinderOperationEmitter::post (SemanticGraph::HomeFinder&)
+{
+ os << ";" << endl;
+}
+
+void
+FinderOperationEmitter::comma (SemanticGraph::HomeFinder&)
+{
+ os << "," << endl;
+}
+
diff --git a/modules/CIAO/CIDLC/OperationHeaderEmitters.hpp b/modules/CIAO/CIDLC/OperationHeaderEmitters.hpp
new file mode 100644
index 00000000000..d1fc148e0c3
--- /dev/null
+++ b/modules/CIAO/CIDLC/OperationHeaderEmitters.hpp
@@ -0,0 +1,151 @@
+// file : CIDLC/OperationHeaderEmitters.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef OPERATIONHEADEREMITTERS_HPP
+#define OPERATIONHEADEREMITTERS_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include "EmitterBase.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+struct OperationEmitter : Traversal::Operation,
+ EmitterBase
+{
+ OperationEmitter (Context& c);
+
+ virtual void pre (Type&);
+
+ virtual void name (Type&);
+
+ virtual void receives_pre (Type&);
+
+ virtual void receives_none (Type&);
+
+ virtual void receives_post (Type&);
+
+ virtual void raises_pre (Type&);
+
+ virtual void raises_none (Type&);
+
+ virtual void raises_post (Type&);
+
+ virtual void post (Type&);
+
+ virtual void comma (Type&);
+};
+
+// HomeFactory and HomeFinder are tied to Operation in
+// the front end. Since we want to treat them differently
+// than regular operations in a home (we want to generate
+// base class factory operations returning the base component,
+// for example), we use this class for regular home operations
+// that overrides HomeFactory and HomeFinder traversals
+// to do nothing.
+struct HomeOperationEmitter : OperationEmitter,
+ Traversal::HomeFactory,
+ Traversal::HomeFinder
+{
+ HomeOperationEmitter (Context& c);
+
+ virtual void
+ traverse (SemanticGraph::HomeFactory&);
+
+ virtual void
+ traverse (SemanticGraph::HomeFinder&);
+};
+
+struct FactoryOperationEmitter : Traversal::HomeFactory,
+ EmitterBase
+{
+ FactoryOperationEmitter (Context& c, bool for_exec = false);
+
+ virtual void
+ pre (SemanticGraph::HomeFactory&);
+
+ virtual void
+ returns (SemanticGraph::HomeFactory&);
+
+ virtual void
+ name (SemanticGraph::HomeFactory&);
+
+ virtual void
+ receives_none (SemanticGraph::HomeFactory&);
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFactory&);
+
+ virtual void
+ receives_post (SemanticGraph::HomeFactory&);
+
+ virtual void
+ raises_none (SemanticGraph::HomeFactory&);
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFactory&);
+
+ virtual void
+ raises_post (SemanticGraph::HomeFactory&);
+
+ virtual void
+ post (SemanticGraph::HomeFactory&);
+
+ virtual void
+ comma (SemanticGraph::HomeFactory&);
+
+private:
+ ReturnTypeNameEmitter returns_emitter_;
+ Traversal::Returns returns_;
+ bool for_exec_;
+};
+
+struct FinderOperationEmitter : Traversal::HomeFinder,
+ EmitterBase
+{
+ FinderOperationEmitter (Context& c, bool for_exec = false);
+
+ virtual void
+ pre (SemanticGraph::HomeFinder&);
+
+ virtual void
+ returns (SemanticGraph::HomeFinder&);
+
+ virtual void
+ name (SemanticGraph::HomeFinder&);
+
+ virtual void
+ receives_none (SemanticGraph::HomeFinder&);
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFinder&);
+
+ virtual void
+ receives_post (SemanticGraph::HomeFinder&);
+
+ virtual void
+ raises_none (SemanticGraph::HomeFinder&);
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFinder&);
+
+ virtual void
+ raises_post (SemanticGraph::HomeFinder&);
+
+ virtual void
+ post (SemanticGraph::HomeFinder&);
+
+ virtual void
+ comma (SemanticGraph::HomeFinder&);
+
+private:
+ ReturnTypeNameEmitter returns_emitter_;
+ Traversal::Returns returns_;
+ bool for_exec_;
+};
+
+#endif // OPERATIONHEADEREMITTERS_HPP
diff --git a/modules/CIAO/CIDLC/ParameterEmitter_T.hpp b/modules/CIAO/CIDLC/ParameterEmitter_T.hpp
new file mode 100644
index 00000000000..4fe0d55867f
--- /dev/null
+++ b/modules/CIAO/CIDLC/ParameterEmitter_T.hpp
@@ -0,0 +1,33 @@
+// file : CIDLC/ParameterEmitter_T.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef PARAMETEREMITTER_T_HPP
+#define PARAMETEREMITTER_T_HPP
+
+#include "EmitterBase.hpp"
+
+// For generating parameter names.
+template <typename T>
+struct ParameterEmitter : T, EmitterBase
+{
+ ParameterEmitter (Context& c, bool for_exec_src = false)
+ : EmitterBase (c),
+ for_exec_src_ (for_exec_src)
+ {
+ }
+
+ virtual void
+ name (typename T::Type& p)
+ {
+ os << " "
+ << (for_exec_src_ ? "/* " : "")
+ << p.name ()
+ << (for_exec_src_ ? " */" : "");
+ }
+
+private:
+ bool for_exec_src_;
+};
+
+#endif // PARAMETEREMITTER_T_HPP
diff --git a/modules/CIAO/CIDLC/README.html b/modules/CIAO/CIDLC/README.html
new file mode 100644
index 00000000000..97388a54ce7
--- /dev/null
+++ b/modules/CIAO/CIDLC/README.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+file : CIDCL/readme.html
+author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+cvs-id : $Id$
+-->
+
+<html>
+
+<head>
+
+ <title>CIAO CIDL Compiler Synopsis</title>
+
+ <meta name="author" content="Boris Kolpackov"/>
+ <meta name="description" content="CIAO CIDL compiler README"/>
+ <meta http-equiv="Content-Language" content="en"/>
+
+ <style type="text/css">
+ body {
+ font-family : sans-serif;
+
+ color : black;
+ background : white;
+
+ max-width : 40em;
+ padding : 2em 2em 2em 3em;
+ margin : 0 0 0 0;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ font-family : sans-serif;
+ font-weight : 500;
+ }
+
+ h1 { font-size : 170%; }
+ h2 { font-size : 125%; }
+
+ ul.toc li {
+ padding : .4em 0em 0em 0em;
+ }
+
+ ol.multiline li {
+ padding-top : 0.6em;
+ padding-bottom : 0.6em;
+ }
+
+ </style>
+
+</head>
+
+<body>
+<h1>CIAO CIDL compiler README</h1>
+<p>Before continuing, please note that
+
+<a href="http://www.dre.vanderbilt.edu/cidlc/binary/">pre-built binary
+executables of CIDL compiler</a> are available for different platforms
+The CIDL compiler options are documented <A
+HREF="../docs/cidlc.html">here</A>. <P>
+
+<p>The C++ source files in this directory are compiled into the
+code generators and driver for the CIAO CIDL compiler. CORBA
+Compiler Framework (CCF) provides the front-end for the compiler.
+To build CIDL compiler you will need to compile CCF libraries
+first. Please refer to <a href="../CCF/Documentation/Build.html">
+instructions for building CCF libraries</a>.</p>
+
+<p>After you have compiled the CCF libraries, you are ready to build the
+CIDLC compiler. In order to build the compiler, you must generate the
+appropriate project files. If there are makefiles, or project solutions,
+already in the directory, please disgard them since because they can be
+out-of-date, or invalid. To regenerate all project files, type the following
+command:
+<pre>
+%> $ACE_ROOT/bin/mwc.pl -type &lt;project-type&gt; -static -features cidl=1,exceptions=1,boost=1 CIDLC.mwc
+</pre>
+
+Once MPC finishes generating the project files, you can now build CIDLC.
+
+<ul>
+<li>On Linux/UNIX:
+<p>If you are building with a make utility, e.g., gmake, use the following command to build CCF:
+
+<pre>%> gmake cidl=1 exceptions=1 boost=1</pre></p></li>
+<li>On Windows: <p>Just open the generated solution file.</p></li>
+</ul>
+<p><b>Note:</b> If you are building CCF on a Windows platform, use <code>%ACE_ROOT%\bin\mwc.pl</code> instead
+
+<code>of $ACE_ROOT/bin/mwc.pl</code>. Also, for a list of project types and other command-line options
+supported by MPC, type <code>$ACE_ROOT/bin/mwc.pl --help</code>.</p>
+
+</body>
+</html>
diff --git a/modules/CIAO/CIDLC/RepositoryIdGenerator.cpp b/modules/CIAO/CIDLC/RepositoryIdGenerator.cpp
new file mode 100644
index 00000000000..03a28ab8b7e
--- /dev/null
+++ b/modules/CIAO/CIDLC/RepositoryIdGenerator.cpp
@@ -0,0 +1,289 @@
+// file : CIDLC/RepositoryIdGenerator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "RepositoryIdGenerator.hpp"
+#include "Literals.hpp"
+
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+using namespace StringLiterals;
+using namespace std;
+
+namespace
+{
+ Nameable* defined_in (Nameable& n)
+ {
+ for (Nameable::NamedIterator i (n.named_begin ()), e (n.named_end ());
+ i != e;
+ ++i)
+ {
+ if (Defines* d = dynamic_cast<Defines*> (*i))
+ {
+ return &d->scope ();
+ }
+ }
+
+ return 0;
+ }
+
+ void
+ compute_new_repo_id (Nameable& d)
+ {
+ string prefix ("");
+ TypePrefix *tp = 0;
+
+ if (d.context ().count (STRS[TYPE_PREFIX]))
+ {
+ tp = d.context ().get<TypePrefix*> (STRS[TYPE_PREFIX]);
+ prefix = tp->prefix ().literal ();
+ }
+ else
+ {
+ Nameable* parent = defined_in (d);
+
+ while (parent != 0)
+ {
+ if (parent->context ().count (STRS[TYPE_PREFIX]))
+ {
+ tp =
+ parent->context ().get<TypePrefix*> (STRS[TYPE_PREFIX]);
+
+ prefix = tp->prefix ().literal ();
+ break;
+ }
+
+ parent = defined_in (*parent);
+ }
+ }
+
+ if (prefix != "") prefix += "/";
+
+ ScopedName scoped (d.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ string scope_name = regex::perl_s (stripped.unescaped_str (), "%::%/%");
+
+ string repo_id = "IDL:" + prefix + scope_name + ":1.0";
+
+ d.context ().set<string> (STRS[REPO_ID], repo_id);
+ }
+
+ void
+ compute_repo_id (Nameable& d)
+ {
+ if (d.context ().count (STRS[REPO_ID]))
+ {
+ return;
+ }
+ else
+ {
+ compute_new_repo_id (d);
+ }
+ }
+}
+
+namespace
+{
+ class TypeIdLabelGenerator : public Traversal::TypeId
+ {
+ public:
+ TypeIdLabelGenerator (Diagnostic::Stream& dout,
+ TranslationUnit& tu)
+ : dout_ (dout),
+ tu_ (tu)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::TypeId& ti)
+ {
+ ScopedName decl_name (ti.declaration ());
+ Nameables ref = tu_.lookup (decl_name);
+
+ for (Nameables::const_iterator iter (ref.begin ());
+ iter != ref.end ();
+ ++iter)
+ {
+ Nameable *decl = *iter;
+
+ if (decl->context ().count (STRS[TYPE_ID]))
+ {
+ //@@ Seems it should contain filename and line
+ // of its origin.
+ //
+ Diagnostic::Error err ("???", 0);
+
+ err << "repetition of typeid for " << decl_name
+ << " is illegal";
+
+ dout_ << err;
+
+ Diagnostic::Info inf ("???", 0);
+
+ err << "original typeid here";
+
+ dout_ << inf;
+ }
+ else
+ {
+ decl->context ().set (STRS[TYPE_ID], &ti);
+ decl->context ().set (STRS[REPO_ID], ti.id ().literal ());
+ }
+ }
+ }
+
+ private:
+ Diagnostic::Stream& dout_;
+ SemanticGraph::TranslationUnit& tu_;
+ };
+
+ class TypePrefixLabelGenerator : public Traversal::TypePrefix
+ {
+ public:
+ TypePrefixLabelGenerator (Diagnostic::Stream& dout,
+ TranslationUnit& tu)
+ : dout_ (dout),
+ tu_ (tu)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::TypePrefix& tp)
+ {
+ ScopedName decl_name (tp.declaration ());
+ Nameables ref = tu_.lookup (decl_name);
+
+ for (Nameables::const_iterator iter (ref.begin ());
+ iter != ref.end ();
+ ++iter)
+ {
+ Nameable *decl = *iter;
+ CCF::CompilerElements::Context& ctx = decl->context ();
+
+ if (ctx.count (STRS[TYPE_PREFIX]))
+ {
+ SemanticGraph::TypePrefix* prev =
+ ctx.get<SemanticGraph::TypePrefix*> (STRS[TYPE_PREFIX]);
+
+ if (prev->prefix () != tp.prefix ())
+ {
+ //@@ Seems tp should contain filename and line
+ // of it's origin.
+ //
+ Diagnostic::Error err ("???", 0);
+
+ err << "resetting type prefix for " << decl_name
+ << " is illegal";
+
+ dout_ << err;
+
+ Diagnostic::Info inf ("???", 0);
+
+ err << "original typeprefix here";
+
+ dout_ << inf;
+ }
+ }
+ else
+ {
+ decl->context ().set (STRS[TYPE_PREFIX], &tp);
+
+ // A typeprefix declaration could appear after the IDL
+ // type declaration, so we want to update the repo id
+ // every time.
+ compute_new_repo_id (*decl);
+ }
+ }
+ }
+
+ private:
+ Diagnostic::Stream& dout_;
+ SemanticGraph::TranslationUnit& tu_;
+ };
+
+ class RepoIdGenerator : public Traversal::Interface,
+ public Traversal::EventType,
+ public Traversal::Home,
+ public Traversal::Component
+ {
+ virtual void
+ traverse (SemanticGraph::Interface& i)
+ {
+ compute_repo_id (i);
+ }
+
+ virtual void
+ traverse (SemanticGraph::EventType& e)
+ {
+ compute_repo_id (e);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Home& h)
+ {
+ compute_repo_id (h);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Component& c)
+ {
+ compute_repo_id (c);
+ }
+ };
+}
+
+
+bool RepositoryIdGenerator::generate (TranslationUnit& u)
+{
+ Diagnostic::Stream dout;
+
+ TypeIdLabelGenerator type_id (dout, u);
+ TypePrefixLabelGenerator type_prefix (dout, u);
+ RepoIdGenerator repo_id;
+
+ Traversal::TranslationUnit unit;
+
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ Traversal::Root root;
+ includes.node_traverser (region);
+ contains_root.node_traverser (root);
+
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ Traversal::Module module;
+
+ defines.node_traverser (module);
+ defines.node_traverser (type_id);
+ defines.node_traverser (type_prefix);
+ defines.node_traverser (repo_id);
+
+ module.edge_traverser (defines);
+
+ Traversal::Interface iface;
+ defines.node_traverser (iface);
+
+ unit.traverse (u);
+
+ if (dout.error_count () != 0) return false;
+
+ //@@ check errors
+
+ return true;
+}
diff --git a/modules/CIAO/CIDLC/RepositoryIdGenerator.hpp b/modules/CIAO/CIDLC/RepositoryIdGenerator.hpp
new file mode 100644
index 00000000000..36dc13e064e
--- /dev/null
+++ b/modules/CIAO/CIDLC/RepositoryIdGenerator.hpp
@@ -0,0 +1,21 @@
+// file : CIDLC/RepositoryIdGenerator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CIDLC_REPOSITORY_ID_GENERATOR_HPP
+#define CIDLC_REPOSITORY_ID_GENERATOR_HPP
+
+
+//@@ Don't really need this. just forward declaration of
+// TranslationUnit would be enough.
+//
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+class RepositoryIdGenerator
+{
+public:
+ bool
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+};
+
+#endif // CIDLC_REPOSITORY_ID_GENERATOR_HPP
diff --git a/modules/CIAO/CIDLC/ServantGenerator.cpp b/modules/CIAO/CIDLC/ServantGenerator.cpp
new file mode 100644
index 00000000000..f817087b92d
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantGenerator.cpp
@@ -0,0 +1,220 @@
+// file : CIDLC/ServantGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ServantGenerator.hpp"
+#include "ServantHeaderGenerator.hpp"
+#include "ServantSourceGenerator.hpp"
+#include "CxxNamePrinter.hpp"
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+#include "CCF/CodeGenerationKit/IndentationCxx.hpp"
+#include "CCF/CodeGenerationKit/IndentationImplanter.hpp"
+
+using namespace CCF;
+using namespace CIDL;
+using namespace SemanticGraph;
+using namespace Traversal;
+
+using std::string;
+using std::ostream;
+
+namespace
+{
+ // On some platforms toupper can be something else than a
+ // function.
+ int
+ upcase (int c)
+ {
+ return toupper (c);
+ }
+}
+
+ServantGenerator::ServantGenerator (CommandLine const& cl)
+ : cl_ (cl),
+ file_name_ (""),
+ export_macro_ ("")
+{
+}
+
+void ServantGenerator::options (CL::Description& d)
+{
+ d.add_option (CL::OptionDescription (
+ "svnt-hdr-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'_svnt.h\' "
+ "when constructing name of servant file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "svnt-hdr-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of servant file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "svnt-src-file-suffix",
+ "suffix",
+ "Use provided suffix instead of default \'_svnt.cpp\' "
+ "when constructing name of servant file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "svnt-src-file-regex",
+ "regex",
+ "Use provided regular expression when constructing "
+ "name of servant file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "svnt-export-macro",
+ "macro",
+ "Replace default servant DLL export macro "
+ "with provided ,acro.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "svnt-export-include",
+ "file",
+ "Replace default servant export include file "
+ "with provided file.",
+ CL::OptionType::value));
+
+ d.add_option (CL::OptionDescription (
+ "suppress-register-factory",
+ "Suppress generation of code to register eventtype "
+ "factories for event sinks.",
+ CL::OptionType::flag));
+
+ d.add_option (CL::OptionDescription (
+ "custom-container",
+ "type",
+ "Generate code for custom container of the provided type.",
+ CL::OptionType::value));
+}
+
+
+void ServantGenerator::generate (SemanticGraph::TranslationUnit& u,
+ fs::path const& file)
+{
+ // Generate files
+ compute_export_macro (file);
+
+ {
+ fs::ofstream hdr_ofs;
+ ostream& hdr_os = configure_stream ("svnt-hdr-file-suffix",
+ "_svnt.h",
+ "svnt-hdr-file-regex",
+ hdr_ofs);
+
+ Indentation::Implanter<Indentation::Cxx> header_guard (hdr_os);
+
+ // Set C++ name printer for os.
+ //
+ CxxNamePrinter name_printer;
+ hdr_os.pword (name_printer_index) = &name_printer;
+
+ ServantHeaderEmitter hdr_emitter (hdr_os,
+ cl_,
+ export_macro_,
+ file);
+ hdr_emitter.generate (u);
+ }
+
+ {
+ fs::ofstream src_ofs;
+ ostream& src_os = configure_stream ("svnt-src-file-suffix",
+ "_svnt.cpp",
+ "svnt-src-file-regex",
+ src_ofs);
+
+ Indentation::Implanter<Indentation::Cxx> header_guard (src_os);
+
+ // Set C++ name printer for os.
+ //
+ CxxNamePrinter name_printer;
+ src_os.pword (name_printer_index) = &name_printer;
+
+ ServantSourceEmitter src_emitter (src_os,
+ cl_,
+ export_macro_,
+ file);
+ src_emitter.generate (u);
+ }
+}
+
+void
+ServantGenerator::compute_export_macro (const fs::path& file_path)
+{
+ if (!file_path.empty ())
+ {
+ file_name_ = file_path.leaf ();
+ }
+
+ export_macro_ = cl_.get_value ("svnt-export-macro", "");
+
+ if (export_macro_.empty () && !file_name_.empty ())
+ {
+ // Modify a copy of the filename string.
+ export_macro_ = file_name_;
+
+ // Convert filename string to upper case.
+ transform (export_macro_.begin (),
+ export_macro_.end (),
+ export_macro_.begin (),
+ upcase);
+
+ // Replace the suffix.
+ export_macro_ =
+ regex::perl_s (export_macro_,
+ "/^(.+?)(\\.(IDL|CIDL|CDL))?$/$1_SVNT_Export/");
+
+ // Replace any remaining '.' in the string with '_'.
+ export_macro_ = regex::perl_s (export_macro_,
+ "/\\./_/");
+ }
+}
+
+
+
+ostream&
+ServantGenerator::configure_stream (string const& suffix_option,
+ string const& default_suffix,
+ string const& regex_option,
+ fs::ofstream& ofs)
+{
+ if (! file_name_.empty ())
+ {
+ string file_suffix = cl_.get_value (suffix_option,
+ default_suffix);
+ string file_expr =
+ cl_.get_value (regex_option,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1" + file_suffix + "/");
+
+ string file_name = regex::perl_s (file_name_, file_expr);
+
+ fs::path file_path (file_name);
+
+ ofs.open (file_path, std::ios_base::out);
+
+ if (!ofs.is_open ())
+ {
+ cerr << file_name
+ << ": error: unable to open file in write mode"
+ << endl;
+ }
+ }
+
+ return ofs.is_open ()
+ ? static_cast<ostream&> (ofs)
+ : static_cast<ostream&> (std::cout);
+}
+
+
+/*
+ * Local Variables:
+ * mode: C++
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/modules/CIAO/CIDLC/ServantGenerator.hpp b/modules/CIAO/CIDLC/ServantGenerator.hpp
new file mode 100644
index 00000000000..ae6a4a90477
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantGenerator.hpp
@@ -0,0 +1,53 @@
+// file : CIDLC/ServantGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef SERVANT_GENERATOR_HPP
+#define SERVANT_GENERATOR_HPP
+
+#include <string>
+#include <iosfwd>
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+class ServantGenerator
+{
+public:
+ static void
+ options (CL::Description& d);
+
+ ServantGenerator (CommandLine const& cl);
+
+ void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit&,
+ fs::path const& file);
+
+private:
+ void
+ compute_export_macro (const fs::path& file_path);
+
+ std::ostream&
+ configure_stream (std::string const& suffix_option,
+ std::string const& default_suffix,
+ std::string const& regex_option,
+ fs::ofstream& ofs);
+
+private:
+ CommandLine const& cl_;
+ std::string file_name_;
+ std::string export_macro_;
+};
+
+
+#endif // SERVANT_GENERATOR_HPP
+
+/*
+ * Local Variables:
+ * mode: C++
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/modules/CIAO/CIDLC/ServantHeaderGenerator.cpp b/modules/CIAO/CIDLC/ServantHeaderGenerator.cpp
new file mode 100644
index 00000000000..6676db3e77d
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantHeaderGenerator.cpp
@@ -0,0 +1,1783 @@
+// file : CIDLC/ServantHeaderGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ServantHeaderGenerator.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+#include "AttributeHeaderEmitters.hpp"
+#include "OperationHeaderEmitters.hpp"
+#include "ParameterEmitter_T.hpp"
+#include "CompositionEmitter.hpp"
+#include "ModuleEmitter.hpp"
+#include "InterfaceEmitter.hpp"
+#include "Literals.hpp"
+#include "Upcase.hpp"
+
+#include <ostream>
+#include <sstream>
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+using std::endl;
+using std::string;
+
+using namespace StringLiterals;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+namespace
+{
+ struct FacetEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ FacetEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (i.context ().count ("facet_hdr_gen")) return;
+
+ ScopedName scoped (i.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ // We need to escape C++ keywords before flattening the name.
+ //
+ string name;
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << scoped.scope_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+ /// Open a namespace made from the interface scope's name.
+ os << "namespace " << STRS[FACET_PREFIX] << name
+ << "{";
+
+ os << "template <typename T>" << endl
+ << "class " << i.name () << "_Servant_T" << endl
+ << ": public virtual POA_" << stripped << endl
+ << "{"
+ << "public:" << endl
+ << i.name () << "_Servant_T (" << endl
+ << i.scoped_name ().scope_name () << "::CCM_" << i.name ()
+ << "_ptr executor," << endl
+ << "::Components::CCMContext_ptr ctx);" << endl
+ << "virtual ~" << i.name () << "_Servant_T (void);" << endl;
+
+ {
+ InterfaceEmitter interface_emitter (ctx);
+
+ Traversal::Defines defines_;
+ Traversal::Inherits inherits_;
+ interface_emitter.edge_traverser (defines_);
+ interface_emitter.edge_traverser (inherits_);
+
+ // Works for both read/write and readonly attributes.
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines_.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines_.node_traverser (operation_emitter);
+ inherits_.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ inherits (i, inherits_);
+ names (i, defines_);
+ }
+
+ os << "// Get component implementation." << endl
+ << "virtual CORBA::Object_ptr" << endl
+ << "_get_component ()" << endl
+ << STRS[EXCP_SNGL] << ";" << endl
+ << "protected:" << endl
+ << "// Facet executor." << endl
+ << i.scoped_name ().scope_name ()<< "::CCM_" << i.name ()
+ << "_var executor_;" << endl
+ << "// Context object." << endl
+ << "::Components::CCMContext_var ctx_;" << endl
+ << "};";
+
+ os << "typedef " << i.name () << "_Servant_T<int> "
+ << i.name () << "_Servant;";
+
+ // Close the facet servant's namespace.
+ os << "}";
+
+ i.context ().set ("facet_hdr_gen", true);
+ }
+ };
+
+ struct ContextEmitter : Traversal::Component, EmitterBase
+ {
+ ContextEmitter (Context& c, CommandLine const& cl)
+ : EmitterBase (c),
+ cl_ (cl)
+ {}
+
+ // Nested classes used by this emitter.
+ private:
+ struct PortsEmitterPublic : Traversal::EmitterData,
+ Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ EmitterBase
+ {
+ PortsEmitterPublic (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "virtual void" << endl
+ << "push_" << e.name ()
+ << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "ev)" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "virtual ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << endl
+ << "get_connection_" << u.name ()
+ << " ()" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "virtual " << u.scoped_name () << "Connections *" << endl
+ << "get_connections_" << u.name ()
+ << " ()" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "virtual void" << endl
+ << "push_" << p.name ()
+ << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "ev)" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ private:
+ INArgTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct PortsEmitterProtected : Traversal::EmitterData,
+ Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ EmitterBase
+ {
+ PortsEmitterProtected (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "virtual void" << endl
+ << "connect_" << e.name () << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << "disconnect_" << e.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "virtual void" << endl
+ << "connect_" << u.name () << " (" << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << "disconnect_" << u.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "virtual ::Components::Cookie *" << endl
+ << "connect_" << u.name () << " (" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << "disconnect_" << u.name () << " (" << endl
+ << "::Components::Cookie * ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "virtual " << STRS[COMP_CK] << " *" << endl
+ << "subscribe_" << p.name () << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "// CIAO-specific." << endl
+ << STRS[COMP_CK] << " *" << endl
+ << "subscribe_" << p.name () << "_generic (" << endl
+ << STRS[COMP_ECB] << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << "unsubscribe_" << p.name () << " (" << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct PortsEmitterMembers : Traversal::EmitterData,
+ Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ EmitterBase
+ {
+ PortsEmitterMembers (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_var" << endl
+ << "ciao_emits_" << e.name () << "_consumer_;"
+ << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "// Simplex " << u.name () << " connection." << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_var" << endl
+ << "ciao_uses_" << u.name () << "_;" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "// Multiplex " << u.name () << " connection." << endl
+ << "ACE_Active_Map_Manager<" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var>" << endl
+ << "ciao_uses_" << u.name () << "_;" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "ACE_Active_Map_Manager<" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var>" << endl
+ << "ciao_publishes_" << p.name () << "_map_;"
+ << endl;
+
+ os << "ACE_Active_Map_Manager<" << endl
+ << STRS[COMP_ECB] << "_var>" << endl
+ << "ciao_publishes_" << p.name () << "_generic_map_;"
+ << endl;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ public:
+ virtual void
+ pre (Type& t)
+ {
+ os << "class " << t.name () << "_Servant;" << endl;
+
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ os << "class " << ctx.export_macro () << " " << t.name ()
+ << "_Context" << endl
+ << " : public virtual CIAO::"
+ << (swapping ? "Upgradeable_" : "") << "Context_Impl<" << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context," << endl
+ << " " << t.name () << "_Servant," << endl
+ << " " << t.scoped_name () << "," << endl
+ << " " << t.scoped_name () << "_var" << endl
+ << " >" << endl
+ << "{"
+ << "public:" << endl;
+
+ os << "// We will allow the servant glue code we generate to "
+ << "access our state." << endl
+ << "friend class " << t.name () << "_Servant;" << endl;
+
+ os << t.name () << "_Context (" << endl
+ << "::Components::CCMHome_ptr h," << endl
+ << "::CIAO::Session_Container *c," << endl
+ << t.name () << "_Servant *sv);" << endl;
+
+ os << "virtual ~" << t.name () << "_Context (void);"
+ << endl;
+
+ os << "// Operations for " << t.name () << " receptacles"
+ << " and event sources," << endl
+ << "// defined in " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context."
+ << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ PortsEmitterPublic ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Extra *_Context methods for swapping container.
+ if (swapping)
+ {
+ os << "// Operations defined in " << t.scoped_name ().scope_name ()
+ << "::CCM_" << t.name () << "_Context" << endl
+ << "// that enable component swapping in the container"
+ << endl << endl;
+
+ os << "virtual " << STRS[COMP_CD] << " *" << endl
+ << "get_registered_consumers (" << endl
+ << "const char *publisher_name)" << endl
+ << STRS[EXCP_START] << endl
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+ }
+
+ os << "// CIAO-specific." << endl << endl;
+
+ os << "static " << t.name () << "_Context *" << endl
+ << "_narrow (" << endl
+ << STRS[COMP_SC] << "_ptr p);" << endl;
+
+ os << "protected:" << endl
+ << "// Methods that manage this component's connections"
+ << " and consumers." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ PortsEmitterProtected ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "protected:" << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ PortsEmitterMembers ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+ }
+
+ virtual void
+ post (Type&)
+ {
+ // Component context class closer.
+ os << "};";
+ }
+
+ private:
+ CommandLine const& cl_;
+ };
+
+ struct ServantEmitter : Traversal::Component, EmitterBase
+ {
+ ServantEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ // Nested classes used by this emitter.
+ private:
+ struct PortsEmitterPublic : Traversal::EmitterData,
+ Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ Traversal::ConsumerData,
+ Traversal::ProviderData,
+ EmitterBase
+ {
+ PortsEmitterPublic (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ stripped_type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ stripped_belongs_.node_traverser (stripped_type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ os << "virtual ";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "_ptr" << endl
+ << "provide_" << p.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "virtual void" << endl
+ << "connect_" << u.name () << " (" << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << "disconnect_" << u.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << "get_connection_" << u.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "virtual ::Components::Cookie *" << endl
+ << "connect_" << u.name () << " (" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << "disconnect_" << u.name () << " (" << endl
+ << "::Components::Cookie * ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual " << u.scoped_name () << "Connections *" << endl
+ << "get_connections_" << u.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ os << "// Servant class for the " << c.name ()
+ << " consumer." << endl
+ << "class " << ctx.export_macro () << " ";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_"
+ << c.name () << "_Servant" << endl
+ << ": public virtual POA_";
+
+ Traversal::ConsumerData::belongs (c, stripped_belongs_);
+
+ os << "Consumer" << endl
+ << "{"
+ << "public:" << endl;
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name () << "_Servant (" << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name () << "_ptr executor,"
+ << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context_ptr c);" << endl;
+
+ os << "virtual ~";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_"
+ << c.name () << "_Servant (void);" << endl;
+
+ os << "virtual void" << endl
+ << "push_";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << " (" << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " *evt" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "// Inherited from " << STRS[COMP_ECB] << "." << endl
+ << "virtual void" << endl
+ << "push_event ( ::Components::EventBase *ev)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_BET] << "));" << endl;
+
+ // @@ GD added below code.
+
+ os << "// CIAO-specific in " << STRS[COMP_ECB] << "." << endl
+ << "virtual void" << endl
+ << "ciao_push_event ( ::Components::EventBase *ev," << endl
+ << "const char * source_id," << endl
+ << "::CORBA::TypeCode_ptr tc)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_BET] << "));" << endl;
+
+ os << "// CIAO-specific in " << STRS[COMP_ECB] << "." << endl
+ << "virtual CORBA::Boolean" << endl
+ << "ciao_is_substitutable (" << endl
+ << "const char *event_repo_id" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "// Get component implementation." << endl
+ << "virtual CORBA::Object_ptr" << endl
+ << "_get_component (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "protected:" << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_var" << endl
+ << "executor_;" << endl;
+
+ os << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context_var" << endl
+ << "ctx_;" << endl;
+
+ os << "};";
+
+ os << "virtual ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << "get_consumer_" << c.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "virtual void" << endl
+ << "connect_" << e.name () << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << "disconnect_" << e.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "virtual " << STRS[COMP_CK] << " *" << endl
+ << "subscribe_" << p.name () << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "// CIAO-specific." << endl
+ << STRS[COMP_CK] << " *" << endl
+ << "subscribe_" << p.name () << "_generic (" << endl
+ << STRS[COMP_ECB] << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "virtual ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << "unsubscribe_" << p.name () << " (" << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ StrippedTypeNameEmitter stripped_type_name_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs stripped_belongs_;
+ };
+
+ struct PortsEmitterProtected : Traversal::ConsumerData,
+ Traversal::ProviderData,
+ EmitterBase
+ {
+ PortsEmitterProtected (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "_var" << endl
+ << "provide_" << p.name () << "_;" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer_var" << endl
+ << "consumes_" << c.name () << "_;" << endl;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct PortsEmitterPrivate : Traversal::EmitterData,
+ Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ Traversal::ConsumerData,
+ Traversal::ProviderData,
+ EmitterBase
+ {
+ PortsEmitterPrivate (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ stripped_type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ stripped_belongs_.node_traverser (stripped_type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ os << "::CORBA::Object_ptr" << endl
+ << "provide_" << p.name () << "_i (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ os << "::Components::EventConsumerBase_ptr" << endl
+ << "get_consumer_" << c.name () << "_i (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher&)
+ {
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ StrippedTypeNameEmitter stripped_type_name_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs stripped_belongs_;
+ };
+
+ public:
+ virtual void
+ pre (Type& t)
+ {
+ ScopedName scoped (t.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ os << "class " << ctx.export_macro () << " " << t.name ()
+ << "_Servant" << endl
+ << " : public virtual CIAO::Servant_Impl<" << endl
+ << " POA_" << stripped << "," << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "," << endl
+ << " " << t.name () << "_Context" << endl
+ << " >" << endl
+ << "{"
+ << "public:" << endl << endl;
+
+ os << "typedef " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << " _exec_type;" << endl;
+
+ os << t.name () << "_Servant (" << endl
+ << t.scoped_name ().scope_name () << "::CCM_" << t.name ()
+ << "_ptr executor," << endl
+ << "::Components::CCMHome_ptr h," << endl
+ << "const char *ins_name," << endl
+ << "::CIAO::Home_Servant_Impl_Base *hs," << endl
+ << "::CIAO::Session_Container *c);" << endl;
+
+ os << "virtual ~" << t.name () << "_Servant (void);" << endl;
+
+ os << "virtual void" << endl
+ << "set_attributes (" << endl
+ << "const ::Components::ConfigValues &descr" << endl
+ << ");" << endl;
+
+ os << "// Supported operations." << endl << endl;
+
+ // Generate operations for all supported interfaces.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Supports supports_;
+ component_emitter.edge_traverser (component_inherits);
+ component_emitter.edge_traverser (supports_);
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ // Works for both read/write and readonly attributes.
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Public port operations." << endl << endl;
+
+ // Generate public operations for ports, and nested classes for
+ // event consumers.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (component_inherits);
+ component_emitter.edge_traverser (defines);
+
+ PortsEmitterPublic ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Generate operations for component attributes.
+ os << "// Component attribute operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ // Works for both read/write and readonly attributes.
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Operations for Receptacles interface." << endl << endl;
+
+ os << "virtual " << STRS[COMP_CK] << " *" << endl
+ << "connect (" << endl
+ << "const char *name," << endl
+ << "CORBA::Object_ptr connection)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "virtual CORBA::Object_ptr" << endl
+ << "disconnect (" << endl
+ << "const char *name," << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_CR] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+
+ os << "virtual " << STRS[COMP_RD] << " *" << endl
+ << "get_all_receptacles (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "// Operations for Events interface." << endl << endl;
+
+ os << "virtual " << STRS[COMP_CK] << " *" << endl
+ << "subscribe (" << endl
+ << "const char *publisher_name," << endl
+ << STRS[COMP_ECB] << "_ptr subscriber)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_ECL] << "));" << endl;
+
+ os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl
+ << "unsubscribe (" << endl
+ << "const char *publisher_name," << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual void" << endl
+ << "connect_consumer (" << endl
+ << "const char *emitter_name," << endl
+ << STRS[COMP_ECB] << "_ptr consumer)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "));" << endl;
+
+ os << "virtual " << STRS[COMP_ECB] << "_ptr" << endl
+ << "disconnect_consumer (" << endl
+ << "const char *source_name)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_NC] << "));" << endl;
+
+ os << "virtual " << STRS[COMP_PD] << " *" << endl
+ << "get_all_publishers (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "virtual " << STRS[COMP_ED] << " *" << endl
+ << "get_all_emitters (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ os << "// CIAO specific operations on the servant. " << endl
+ << "CORBA::Object_ptr" << endl
+ << "get_facet_executor (" << endl
+ << "const char *name)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS]<< "));" << endl;
+
+ os << "private:" << endl << endl;
+
+ // Generate protected operations for facets and event sinks.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ PortsEmitterProtected ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "const char *ins_name_;" << endl;
+
+ os << "private:" << endl << endl
+ << "void" << endl
+ << "populate_port_tables (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << ";" << endl;
+
+ // Generate private operations for ports.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ PortsEmitterPrivate ports_emitter (ctx);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+ }
+
+ virtual void
+ post (Type&)
+ {
+ // Component servant class closer.
+ os << "};";
+ }
+ };
+
+ struct HomeEmitter : Traversal::Home, EmitterBase
+ {
+ HomeEmitter (Context& c, CommandLine const& cl)
+ : EmitterBase (c),
+ cl_ (cl),
+ type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ enclosing_type_name_emitter_ (c)
+ {
+ manages_.node_traverser (type_name_emitter_);
+ simple_manages_.node_traverser (simple_type_name_emitter_);
+ enclosing_manages_.node_traverser (enclosing_type_name_emitter_);
+ }
+
+ virtual void pre (Type& t)
+ {
+ os << "class " << ctx.export_macro () << " " << t.name ()
+ << "_Servant" << endl
+ << " : public virtual" << endl
+ << " ::CIAO::";
+
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ ScopedName scoped (t.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ os << (swapping ? "Swapping_" : "") << "Home_Servant_Impl<" << endl
+ << " ::POA_" << stripped << "," << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "," << endl
+ << " ";
+
+ Traversal::Home::manages (t, simple_manages_);
+
+ os << "_Servant" << endl
+ << " >" << endl
+ << "{"
+ << "public:" << endl << endl;
+ os << t.name () << "_Servant (" << endl
+ << t.scoped_name ().scope_name () << "::CCM_" << t.name ()
+ << "_ptr exe," << endl
+ << "const char *ins_name," << endl
+ << "::CIAO::Session_Container *c);" << endl;
+
+ os << "virtual ~" << t.name () << "_Servant (void);" << endl;
+
+ // Generate home operations.
+ os << "// Home operations." << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+ home_emitter.edge_traverser (home_inherits);
+
+ HomeOperationEmitter home_operation_emitter (ctx);
+ defines.node_traverser (home_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ home_operation_emitter.edge_traverser (receives);
+ home_operation_emitter.edge_traverser (returns);
+ home_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate home factory operations. This is a separate traversal
+ // stack because we want to generate the factory operations
+ // of ancestors with the return type of the base component.
+ os << "// Home factory and finder operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ FactoryOperationEmitter factory_operation_emitter (ctx);
+ FinderOperationEmitter finder_operation_emitter (ctx);
+ defines.node_traverser (factory_operation_emitter);
+ defines.node_traverser (finder_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ factory_operation_emitter.edge_traverser (receives);
+ factory_operation_emitter.edge_traverser (returns);
+ factory_operation_emitter.edge_traverser (raises);
+ finder_operation_emitter.edge_traverser (receives);
+ finder_operation_emitter.edge_traverser (returns);
+ finder_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate operations for home attributes.
+ os << "// Attribute operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+ home_emitter.edge_traverser (home_inherits);
+
+ // Works for both read/write and readonly attributes.
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate operations for all supported interfaces.
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+
+ Traversal::Supports supports_;
+ home_emitter.edge_traverser (supports_);
+ home_emitter.edge_traverser (home_inherits);
+
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (inherits);
+
+ // Works for both read/write and readonly attributes.
+ AttributeHeaderEmitter attribute_emitter (ctx);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter operation_emitter (ctx);
+ defines.node_traverser (operation_emitter);
+ inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Home servant class closer.
+ os << "};";
+
+ string name;
+
+ // We need to escape C++ keywords before flattening the name.
+ //
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+ os << "extern \"C\" " << ctx.export_macro ()
+ << " ::PortableServer::Servant" << endl
+ << "create" << name << "_Servant (" << endl
+ << "::Components::HomeExecutorBase_ptr p," << endl
+ << "CIAO::Session_Container *c," << endl
+ << "const char *ins_name" << endl
+ << ");" << endl;
+ }
+
+ private:
+ CommandLine const& cl_;
+ FullTypeNameEmitter type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ Traversal::Manages manages_;
+ Traversal::Manages simple_manages_;
+ Traversal::Manages enclosing_manages_;
+ };
+
+ struct IncludesEmitter : Traversal::QuoteIncludes,
+ Traversal::BracketIncludes,
+ EmitterBase
+ {
+ IncludesEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::QuoteIncludes& qi)
+ {
+ os << "#include \""
+ << regex::perl_s (qi.file ().string (),
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1S.h/")
+ << "\"" << endl << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::BracketIncludes& bi)
+ {
+ os << "#include \""
+ << regex::perl_s (bi.file ().string (),
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1S.h/")
+ << "\""
+ << endl;
+ }
+ };
+}
+
+ServantHeaderEmitter::ServantHeaderEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file)
+ : os (os_),
+ cl_ (cl),
+ export_macro_ (export_macro),
+ file_ (file)
+{}
+
+void
+ServantHeaderEmitter::generate (TranslationUnit& u)
+{
+ pre (u);
+
+ Context c (os, export_macro_, cl_);
+
+ /// CIAO has facet classes outside the context and servant classes.
+ /// We launch it here to generate the classes inside namespaces
+ /// constructed to be unique for each interface type used in a facet.
+ generate_facets (u, c);
+
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ ModuleEmitter module (c);
+ CompositionEmitter composition (c);
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+ composition.edge_traverser (composition_defines);
+
+ module.edge_traverser (defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ //--
+ ContextEmitter context_emitter (c, cl_);
+ ServantEmitter servant_emitter (c);
+ HomeEmitter home_emitter (c, cl_);
+ implements.node_traverser (context_emitter);
+ implements.node_traverser (servant_emitter);
+ implements.node_traverser (home_emitter);
+
+ unit.traverse (u);
+
+ post (u);
+}
+
+void
+ServantHeaderEmitter::pre (TranslationUnit&)
+{
+ os << COPYRIGHT;
+
+ string file_name ("");
+
+ if (!file_.empty ())
+ {
+ file_name = file_.leaf ();
+ }
+
+ string uc_file_name = file_name;
+
+ std::transform (uc_file_name.begin (),
+ uc_file_name.end (),
+ uc_file_name.begin (),
+ upcase);
+
+ string uc_file_suffix = cl_.get_value ("svnt-hdr-file-suffix",
+ "_svnt.h");
+
+ std::transform (uc_file_suffix.begin (),
+ uc_file_suffix.end (),
+ uc_file_suffix.begin (),
+ upcase);
+
+ string guard =
+ "CIAO_GLUE_SESSION_"
+ + regex::perl_s (uc_file_name,
+ "/^(.+?)(\\.(IDL|CIDL|CDL))?$/$1"
+ + uc_file_suffix
+ + "/");
+
+ // Replace any remaining '.' with '_'.
+ guard = regex::perl_s (guard, "/\\./_/");
+
+ os << "#ifndef " << guard << endl
+ << "#define " << guard << endl << endl
+ << "#include /**/ \"ace/pre.h\"" << endl << endl;
+
+ string export_include = cl_.get_value ("svnt-export-include", "");
+
+ if (!export_include.empty ())
+ {
+ os << "#include \"" << export_include << "\"" << endl << endl;
+ }
+
+ // Get the suffix for the executor IDL file and strip off the
+ // trailing .idl.
+ // @@@ (JP) I guess it's a safe assumption that the tail of the
+ // suffix will be .idl.
+ string suffix = cl_.get_value ("lem-file-suffix", "E.idl");
+ suffix = regex::perl_s (suffix, "/^(.+?)(\\.idl)?$/$1/");
+
+ // @@@ (JP) No way of knowing if the IDL compiler had command line
+ // option(s) to change C.h and/or S.h. We could add command line options
+ // to the CIDL compiler for them, but the user will have to make sure
+ // they are in synch with the IDL compiler's options.
+ os << "#include \""
+ << regex::perl_s (file_name,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1" + suffix + "C.h/")
+ << "\""
+ << endl << endl;
+
+ os << "#if !defined (ACE_LACKS_PRAGMA_ONCE)" << endl
+ << "# pragma once" << endl
+ << "#endif /* ACE_LACKS_PRAGMA_ONCE */" << endl << endl;
+
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ os << "#include \"ciao/"
+ << (swapping ? "Swapping_Container.h" : "Container_Base.h")
+ << "\"" << endl
+ << "#include \"ciao/"
+ << (swapping ? "Upgradeable_Context_Impl_T.h"
+ : "Context_Impl_T.h")
+ << "\"" << endl
+ << "#include \"ciao/Servant_Impl_T.h\"" << endl
+ << "#include \"ciao/"
+ << (swapping ? "Swapping_Servant_Home_Impl_T.h"
+ : "Home_Servant_Impl_T.h")
+ << "\"" << endl << endl;
+}
+
+void
+ServantHeaderEmitter::generate_facets (TranslationUnit& u, Context& c)
+{
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion principal_region;
+ contains_principal.node_traverser (principal_region);
+
+ // Layer 2
+ //
+
+ /// Includes are handled here so they will all be present
+ /// before the facet servants (if any) are generated.
+
+ Traversal::ContainsRoot contains_root;
+ IncludesEmitter includes_emitter (c);
+
+ principal_region.edge_traverser (includes_emitter);
+ principal_region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines root_defines;
+ root.edge_traverser (root_defines);
+
+ //--
+ Traversal::Module module;
+ Traversal::Composition composition;
+ root_defines.node_traverser (module);
+ root_defines.node_traverser (composition);
+
+ module.edge_traverser (root_defines);
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+ composition.edge_traverser (composition_defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ // Layer 6
+ //
+ Traversal::Component component_emitter;
+ implements.node_traverser (component_emitter);
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines component_defines;
+ component_emitter.edge_traverser (component_defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ // Layer 7
+ //
+ Traversal::Provider provider;
+ component_defines.node_traverser (provider);
+
+ Traversal::Belongs belongs;
+ provider.edge_traverser (belongs);
+
+ FacetEmitter facet_emitter (c);
+ belongs.node_traverser (facet_emitter);
+
+ unit.traverse (u);
+}
+
+void
+ServantHeaderEmitter::post (TranslationUnit&)
+{
+ if (file_.empty ()) return;
+
+ string uc_file_name = file_.leaf ();
+
+ std::transform (uc_file_name.begin (),
+ uc_file_name.end (),
+ uc_file_name.begin (),
+ upcase);
+
+ string uc_file_suffix = cl_.get_value ("svnt-hdr-file-suffix",
+ "_svnt.h");
+
+ std::transform (uc_file_suffix.begin (),
+ uc_file_suffix.end (),
+ uc_file_suffix.begin (),
+ upcase);
+
+ string guard =
+ "CIAO_GLUE_SESSION_"
+ + regex::perl_s (uc_file_name,
+ "/^(.+?)(\\.(IDL|CIDL|CDL))?$/$1"
+ + uc_file_suffix
+ + "/");
+
+ guard = regex::perl_s (guard, "/\\./_/");
+
+ os << "#include /**/ \"ace/post.h\"" << endl << endl
+ << "#endif /* " << guard << " */"
+ << endl << endl;
+}
diff --git a/modules/CIAO/CIDLC/ServantHeaderGenerator.hpp b/modules/CIAO/CIDLC/ServantHeaderGenerator.hpp
new file mode 100644
index 00000000000..91e881e1411
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantHeaderGenerator.hpp
@@ -0,0 +1,54 @@
+// file : CIDLC/ServantHeaderGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef SERVANT_HEADER_GENERATOR_HPP
+#define SERVANT_HEADER_GENERATOR_HPP
+
+#include <string>
+#include <iosfwd>
+
+#include "EmitterContext.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+class ServantHeaderEmitter
+{
+public:
+ ServantHeaderEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ std::string export_macro,
+ fs::path const& file);
+
+ virtual ~ServantHeaderEmitter () {}
+
+ /// Called by the backend driver.
+ virtual void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+private:
+ /// Called from generate().
+
+ virtual void
+ pre (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ generate_facets (CCF::CIDL::SemanticGraph::TranslationUnit& u,
+ Context& c);
+
+ virtual void
+ post (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+private:
+ std::ostream& os;
+ CommandLine const& cl_;
+ std::string export_macro_;
+ fs::path file_;
+};
+
+
+#endif // SERVANT_HEADER_GENERATOR_HPP
+
diff --git a/modules/CIAO/CIDLC/ServantSourceGenerator.cpp b/modules/CIAO/CIDLC/ServantSourceGenerator.cpp
new file mode 100644
index 00000000000..f4d715b523d
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantSourceGenerator.cpp
@@ -0,0 +1,4476 @@
+// file : CIDLC/ServantSourceGenerator.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "ServantSourceGenerator.hpp"
+#include "CorbaTypeNameEmitters.hpp"
+#include "UtilityTypeNameEmitters.hpp"
+#include "ParameterEmitter_T.hpp"
+#include "AttributeSourceEmitters_T.hpp"
+#include "CompositionEmitter.hpp"
+#include "ModuleEmitter.hpp"
+#include "InterfaceEmitter.hpp"
+#include "Literals.hpp"
+
+#include <ostream>
+#include <sstream>
+
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+using namespace StringLiterals;
+
+using std::string;
+
+namespace
+{
+ struct RepoIdEmitter : Traversal::Type,
+ EmitterBase
+ {
+ RepoIdEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ os << "\"" << t.context ().get<string> (STRS[REPO_ID]) << "\"";
+ }
+ };
+
+ struct ConsumerRepoIdEmitter : Traversal::Type,
+ EmitterBase
+ {
+ ConsumerRepoIdEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ string holder (t.context ().get<string> (STRS[REPO_ID]));
+ os << "\"" << holder.substr (0, holder.rfind (':'))
+ << "Consumer:1.0\"";
+ }
+ };
+
+ struct FlatNameEmitter : Traversal::Type,
+ EmitterBase
+ {
+ FlatNameEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ // We need to escape C++ keywords before flattening the name.
+ //
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ();
+ os << regex::perl_s (ostr.str (), "/::/_/");
+ }
+ };
+
+ struct OperationExecEmitter : Traversal::Operation,
+ EmitterBase
+ {
+ OperationExecEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ virtual void
+ name (Type& o)
+ {
+ os << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_none (Type&)
+ {
+ os << " ();";
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << endl << ");";
+ }
+
+ /// If we don't do this, the comma() method just below
+ /// gets used not only with the arguments, but also
+ /// in raises(). Even though we are not generating the
+ /// exception list here, the front end iterator still
+ /// executes, and picks up the overridden comma(). So
+ /// we override raises() itself to do nothing.
+ virtual void
+ raises (Type&)
+ {
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << "," << endl;
+ }
+ };
+
+ struct OpExecReturnEmitter : Traversal::Type,
+ Traversal::Void
+ {
+ OpExecReturnEmitter (std::ostream& os_)
+ : os (os_)
+ {}
+
+ virtual void
+ traverse (Void&)
+ {
+ os << "this->executor_->";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ os << "return this->executor_->";
+ }
+
+ private:
+ std::ostream& os;
+ };
+
+ // For generating parameter names in operation delegation.
+ template <typename T>
+ struct ParameterExecEmitter : T
+ {
+ ParameterExecEmitter (std::ostream& os_)
+ : os (os_)
+ {}
+
+ virtual void
+ name (typename T::Type& p)
+ {
+ os << p.name ();
+ }
+
+ private:
+ std::ostream& os;
+ };
+
+ template <typename T>
+ struct OperationEmitter : Traversal::Operation, EmitterBase
+ {
+ OperationEmitter (Context& c,
+ T& scope)
+ : EmitterBase (c),
+ scope_ (scope)
+ {
+ }
+
+ // Overridden by facet and home operation emitters to do nothing.
+ virtual void
+ gen_swap_related (Type& o)
+ {
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << "this->activate_component ();" << endl;
+ }
+ }
+
+ virtual void
+ name (Type& o)
+ {
+ os << endl
+ << scope_.name () << "_Servant::" << o.name ();
+ }
+
+ virtual void
+ receives_pre (Type&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_none (Type&)
+ {
+ os << " ()" << endl;
+ }
+
+ virtual void
+ receives_post (Type&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_pre (Type&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_none (Type&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_post (Type&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (Type& o)
+ {
+ os << "{";
+
+ this->gen_swap_related (o);
+
+ OperationExecEmitter operation_emitter (ctx);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+
+ ParameterExecEmitter<Traversal::Parameter> param (os);
+ receives.node_traverser (param);
+
+ OpExecReturnEmitter return_emitter (os);
+ returns.node_traverser (return_emitter);
+
+ operation_emitter.traverse (o);
+
+ os << "}";
+ }
+
+ virtual void
+ comma (Type&)
+ {
+ os << "," << endl;
+ }
+
+ protected:
+ T& scope_;
+ };
+
+ struct FacetEmitter : Traversal::UnconstrainedInterface,
+ EmitterBase
+ {
+ FacetEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ struct FacetOperationEmitter
+ : OperationEmitter<SemanticGraph::UnconstrainedInterface>
+ {
+ FacetOperationEmitter (Context& c,
+ SemanticGraph::UnconstrainedInterface& i)
+ : OperationEmitter<SemanticGraph::UnconstrainedInterface> (c, i)
+ {}
+
+ // Overriden to do nothing since we don't want to generate
+ // component swapping related code for facet operations.
+ virtual void
+ gen_swap_related (Type&)
+ {
+ }
+
+ virtual void
+ pre (Type&)
+ {
+ os << "template <typename T>" << endl;
+ }
+
+ virtual void
+ name (Type& o)
+ {
+ os << endl
+ << scope_.name () << "_Servant_T<T>::" << o.name ();
+ }
+ };
+
+ struct FacetWriteAttributeEmitter
+ : WriteAttributeSourceEmitter<SemanticGraph::Interface>
+ {
+ // Since swapping does not affect facets, we can just pass 'false'
+ // to the base class constructor, and not override gen_swapping_set().
+ FacetWriteAttributeEmitter (Context& c, SemanticGraph::Interface& i)
+ : WriteAttributeSourceEmitter<SemanticGraph::Interface> (c,
+ i,
+ false,
+ false)
+ {}
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << "template <typename T>" << endl;
+
+ WriteAttributeSourceEmitter<SemanticGraph::Interface>::pre (a);
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << scope_.name () << "_Servant_T<T>::"
+ << a.name () << " (" << endl;
+
+ Traversal::ReadWriteAttribute::belongs (a, write_belongs_);
+
+ os << " " << a.name () << endl
+ << ")" << endl;
+ }
+ };
+
+ struct FacetAttributeEmitter
+ : AttributeSourceEmitter<SemanticGraph::Interface>
+ {
+ FacetAttributeEmitter (Context& c,
+ SemanticGraph::Interface& i)
+ : AttributeSourceEmitter<SemanticGraph::Interface> (c, i)
+ {}
+
+ // ReadWriteAttribute
+ //
+
+ // No-op override because we don't want to generate any swapping
+ // code for facets.
+ virtual void gen_swapping_get (SemanticGraph::ReadWriteAttribute&)
+ {
+ }
+
+ virtual void
+ gen_write_operation (SemanticGraph::ReadWriteAttribute& a,
+ bool /* swapping */)
+ {
+ FacetWriteAttributeEmitter write_attribute_emitter (ctx, scope_);
+ write_attribute_emitter.traverse (a);
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << "template <typename T>" << endl;
+
+ AttributeSourceEmitter<SemanticGraph::Interface>::pre (a);
+ }
+
+ virtual void
+ name (SemanticGraph::ReadWriteAttribute& a)
+ {
+ os << scope_.name () << "_Servant_T<T>::"
+ << a.name () << " (" << endl
+ << ")" << endl;
+ }
+
+ // ReadAttribute
+ //
+
+ // No-op override because we don't want to generate any swapping
+ // code for facets.
+ virtual void gen_swapping_get (SemanticGraph::ReadAttribute&)
+ {
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadAttribute& a)
+ {
+ os << "template <typename T>" << endl;
+
+ AttributeSourceEmitter<SemanticGraph::Interface>::pre (a);
+ }
+
+ virtual void
+ name (SemanticGraph::ReadAttribute& a)
+ {
+ os << scope_.name () << "_Servant_T<T>::"
+ << a.name () << " (" << endl
+ << ")" << endl;
+ }
+ };
+
+ virtual void
+ traverse (UnconstrainedInterface& i)
+ {
+ if (i.context ().count ("facet_src_gen")) return;
+
+ // We need to escape C++ keywords before flattening the name.
+ //
+ string name;
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << i.scoped_name ().scope_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+
+ /// Open a namespace made from the interface scope's name.
+ os << "namespace " << STRS[FACET_PREFIX] << name
+ << "{";
+
+ os << "template <typename T>" << endl
+ << i.name () << "_Servant_T<T>::" << i.name ()
+ << "_Servant_T (" << endl
+ << i.scoped_name ().scope_name () << "::CCM_" << i.name ()
+ << "_ptr executor," << endl
+ << "::Components::CCMContext_ptr c)" << endl
+ << " : executor_ ( " << i.scoped_name ().scope_name () << "::CCM_"
+ << i.name () << "::_duplicate (executor))," << endl
+ << " ctx_ ( ::Components::CCMContext::_duplicate (c))" << endl
+ << "{"
+ << "}";
+
+ os << "template <typename T>" << endl
+ << i.name () << "_Servant_T<T>::~" << i.name ()
+ << "_Servant_T (void)" << endl
+ << "{"
+ << "}";
+
+ {
+ InterfaceEmitter interface_emitter (ctx);
+
+ Traversal::Defines defines_;
+ Traversal::Inherits inherits_;
+ interface_emitter.edge_traverser (defines_);
+ interface_emitter.edge_traverser (inherits_);
+
+ FacetAttributeEmitter attribute_emitter (ctx, i);
+ defines_.node_traverser (attribute_emitter);
+
+ FacetOperationEmitter operation_emitter (ctx, i);
+ defines_.node_traverser (operation_emitter);
+ inherits_.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ inherits (i, inherits_);
+ names (i, defines_);
+ }
+
+ os << "template <typename T>" << endl
+ << "::CORBA::Object_ptr" << endl
+ << i.name () << "_Servant_T<T>::_get_component (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[COMP_SC] << "_var sc =" << endl
+ << " " << STRS[COMP_SC] << "::_narrow (" << endl
+ << " this->ctx_.in ()" << endl
+ << " " << ");"
+ << endl
+ << "if (! ::CORBA::is_nil (sc.in ()))" << endl
+ << "{"
+ << "return sc->get_CCM_object (" << endl
+ << ");"
+ << "}"
+ << "::Components::EntityContext_var ec =" << endl
+ << "::Components::EntityContext::_narrow (" << endl
+ << "this->ctx_.in ()" << endl
+ << ");"
+ << endl
+ << "if (! ::CORBA::is_nil (ec.in ()))" << endl
+ << "{"
+ << "return ec->get_CCM_object (" << endl
+ << ");"
+ << "}"
+ << STRS[ACE_TR] << " ( ::CORBA::INTERNAL (), 0);" << endl
+ << "}" << endl;
+
+ // Close the facet servant's namespace.
+ os << "}";
+
+ i.context ().set ("facet_src_gen", true);
+ }
+ };
+
+ struct ContextEmitter : Traversal::Component, EmitterBase
+ {
+ ContextEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ // Nested classes used by ContextEmitter.
+ private:
+ struct ContextPortsEmitter : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ Traversal::PublisherData,
+ Traversal::EmitterData,
+ EmitterBase
+ {
+ ContextPortsEmitter (Context& c, SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_Context::get_connection_"
+ << u.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "return ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "::_duplicate (" << endl
+ << "this->ciao_uses_" << u.name ()
+ << "_.in ());" << endl
+ << "}";
+
+ os << "void" << endl
+ << scope_.name () << "_Context::connect_"
+ << u.name () << " (" << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "if (! ::CORBA::is_nil (this->ciao_uses_"
+ << u.name () << "_.in ()))" << endl
+ << "{"
+ << "throw " << STRS[EXCP_AC] << " ();"
+ << "}"
+ << "if ( ::CORBA::is_nil (c))" << endl
+ << "{"
+ << "throw " << STRS[EXCP_IC] << " ();"
+ << "}"
+ << "this->ciao_uses_" << u.name () << "_ =" << endl
+ << " ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "::_duplicate (c);" << endl
+ << "}";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_Context::disconnect_"
+ << u.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (this->ciao_uses_"
+ << u.name () << "_.in ()))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_NC] << " ()," << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "::_nil ());" << endl
+ << "}"
+ << "return this->ciao_uses_" << u.name ()
+ << "_._retn ();" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << u.scoped_name () << "Connections *" << endl
+ << scope_.name () << "_Context::get_connections_"
+ << u.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << u.scoped_name () << "Connections *tmp_retv = 0;"
+ << "ACE_NEW_THROW_EX ("
+ << "tmp_retv," << endl
+ << u.scoped_name () << "Connections (" << endl
+ << "this->ciao_uses_"
+ << u.name () << "_.current_size ())," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << u.scoped_name () << "Connections_var retv"
+ << " = tmp_retv;" << endl
+ << "retv->length (this->ciao_uses_" << u.name ()
+ << "_.current_size ());" << endl;
+
+ os << "::CORBA::ULong i = 0;" << endl;
+
+ os << "for (ACE_Active_Map_Manager< " << endl
+ << " ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var>::iterator iter =" << endl
+ << " this->ciao_uses_" << u.name () << "_.begin ();" << endl
+ << "iter != this->ciao_uses_" << u.name () << "_.end ();"
+ << endl
+ << "++iter)" << endl
+ << "{"
+ << "ACE_Active_Map_Manager< " << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var>::ENTRY & entry = *iter;" << endl
+ << "retv[i].objref = ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "::_narrow (" << endl
+ << "entry.int_id_.in ()" << endl
+ << ");"
+ << endl;
+
+ os << "ACE_NEW_THROW_EX ("
+ << "retv[i].ck.inout ()," << endl
+ << "::CIAO::Map_Key_Cookie (entry.ext_id_)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << "++i;" << endl
+ << "}";
+
+ os << "return retv._retn ();" << endl
+ << "}";
+
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name () << "_Context::connect_"
+ << u.name () << " (" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (c))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " (), 0);" << endl
+ << "}";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var conn = ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "::_duplicate (c);"
+ << "ACE_Active_Map_Manager_Key key;" << endl;
+
+ os << "if (this->ciao_uses_" << u.name ()
+ << "_.bind (conn.in (), key) == -1)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " (), 0);" << endl
+ << "}";
+
+ os << "conn._retn ();" << endl;
+
+ os << STRS[COMP_CK] << " * ck = 0;"
+ << "ACE_NEW_THROW_EX ("
+ << "ck," << endl
+ << "::CIAO::Map_Key_Cookie (key)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl;
+
+
+ os << "return ck;" << endl
+ << "}";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_Context::disconnect_"
+ << u.name () << " (" << endl
+ << STRS[COMP_CK] << " * ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var retv;"
+ << "ACE_Active_Map_Manager_Key key;" << endl;
+
+ os << "if (! CIAO::Map_Key_Cookie::extract (ck, key))"
+ << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " ()," << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "::_nil ());" << endl
+ << "}";
+
+ os << "if (this->ciao_uses_" << u.name ()
+ << "_.unbind (key, retv) != 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " ()," << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "::_nil ());" << endl
+ << "}";
+
+ os << "return retv._retn ();" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "void" << endl
+ << scope_.name () << "_Context::push_"
+ << p.name () << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << " *ev" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "for (ACE_Active_Map_Manager< " << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var>::iterator iter =" << endl
+ << " this->ciao_publishes_" << p.name ()
+ << "_map_.begin ();" << endl
+ << "iter != this->ciao_publishes_" << p.name ()
+ << "_map_.end ();" << endl
+ << "++iter)" << endl
+ << "{"
+ << "(*iter).int_id_->push_";
+
+ Traversal::PublisherData::belongs (p, simple_belongs_);
+
+ os << " (" << endl
+ << "ev" << endl
+ << ");" << endl
+ << "}";
+
+ // @@ GD Modified Code Below
+
+ os << endl;
+ os << "ACE_CString source_id = this->_ciao_instance_id ();";
+ os << "source_id += \"_\";" << endl;
+ os << "source_id += \"" << p.name () << "\";//port name" << endl << endl;
+
+ os << "for (ACE_Active_Map_Manager< " << endl
+ << " " << STRS[COMP_ECB] << "_var>::iterator giter =" << endl
+ << " this->ciao_publishes_" << p.name ()
+ << "_generic_map_.begin ();" << endl
+ << "giter != this->ciao_publishes_" << p.name ()
+ << "_generic_map_.end ();" << endl
+ << "++giter)" << endl
+ << "{"
+ << "(*giter).int_id_->ciao_push_event" << " (" << endl
+ << "ev," << endl
+ << "source_id.c_str ()," << endl;
+
+ Traversal::PublisherData::belongs (p, enclosing_belongs_);
+
+ os << "::_tc_";
+
+ Traversal::PublisherData::belongs (p, simple_belongs_);
+
+ os << endl
+ << ");" << endl
+ << "}"
+ << "}";
+
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name () << "_Context::subscribe_"
+ << p.name () << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (c))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), 0);" << endl
+ << "}";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var sub =" << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_duplicate (c);" << endl
+ << "ACE_Active_Map_Manager_Key key;"
+ << "this->ciao_publishes_" << p.name ()
+ << "_map_.bind (sub.in (), key);"
+ << "sub._retn ();" << endl
+ << STRS[COMP_CK] << " * retv = 0;"
+ << "ACE_NEW_THROW_EX ("
+ << "retv," << endl
+ << "::CIAO::Map_Key_Cookie (key)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << "return retv;" << endl
+ << "}";
+
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name () << "_Context::subscribe_"
+ << p.name () << "_generic (" << endl
+ << STRS[COMP_ECB] << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (c))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), 0);" << endl
+ << "}";
+
+ os << STRS[COMP_ECB] << "_var sub =" << endl
+ << " " << STRS[COMP_ECB] << "::_duplicate (c);" << endl
+ << "ACE_Active_Map_Manager_Key key;"
+ << "this->ciao_publishes_" << p.name ()
+ << "_generic_map_.bind (sub.in (), key);"
+ << "sub._retn ();" << endl
+ << STRS[COMP_CK] << " * retv = 0;"
+ << "ACE_NEW_THROW_EX ("
+ << "retv," << endl
+ << "::CIAO::Map_Key_Cookie (key)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << "return retv;" << endl
+ << "}";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << scope_.name () << "_Context::unsubscribe_"
+ << p.name () << " (" << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "ACE_Active_Map_Manager_Key key;" << endl
+ << "if (ck == 0 || ::CIAO::Map_Key_Cookie::extract (ck, key) == false)"
+ << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " ()," << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_nil ());" << endl
+ << "}";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var retv;"
+ << "if (this->ciao_publishes_" << p.name ()
+ << "_map_.unbind (key, retv) == 0)" << endl
+ << "{"
+ << "return retv._retn ();" << endl
+ << "}";
+
+ os << STRS[COMP_ECB] << "_var ecb;" << endl;
+
+ os << "if (this->ciao_publishes_" << p.name ()
+ << "_generic_map_.unbind (key, ecb) != 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IC] << " ()," << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_nil ());" << endl
+ << "}"
+ << "return ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_nil ();" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "void" << endl
+ << scope_.name () << "_Context::push_"
+ << e.name () << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << " *ev" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "this->ciao_emits_" << e.name ()
+ << "_consumer_->push_";
+
+ Traversal::EmitterData::belongs (e, simple_belongs_);
+
+ os << " (" << endl
+ << "ev" << endl
+ << ");" << endl
+ << "}";
+
+ os << "void" << endl
+ << scope_.name () << "_Context::connect_"
+ << e.name () << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (c))" << endl
+ << "{"
+ << "throw ::CORBA::BAD_PARAM ();" << endl
+ << "}"
+ << "if (! ::CORBA::is_nil (this->ciao_emits_" << e.name ()
+ << "_consumer_.in ()))" << endl
+ << "{"
+ << "throw " << STRS[EXCP_AC] << " ();" << endl
+ << "}"
+ << "this->ciao_emits_" << e.name ()
+ << "_consumer_ = " << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer::_duplicate (c);" << endl
+ << "}";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << scope_.name () << "_Context::disconnect_"
+ << e.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{"
+ << "if ( ::CORBA::is_nil (this->ciao_emits_" << e.name ()
+ << "_consumer_.in ()))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_NC] << " ()," << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer::_nil ());" << endl
+ << "}"
+ << "return this->ciao_emits_" << e.name ()
+ << "_consumer_._retn ();" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs enclosing_belongs_;
+ Traversal::Belongs simple_belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct SwappableGetConsumersEmitter : Traversal::PublisherData,
+ Traversal::EmitterData,
+ EmitterBase
+ {
+ SwappableGetConsumersEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "if (ACE_OS::strcmp (publisher_name, \""
+ << p.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "_ciao_size = this->ciao_publishes_" << p.name ()
+ << "_map_.current_size ();" << endl
+ << "ACE_NEW_THROW_EX ("
+ << "tmp," << endl
+ << STRS[COMP_CD] << " (_ciao_size)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << "retval = tmp;"
+ << "retval->length (_ciao_size);" << endl
+ << "ACE_Active_Map_Manager<" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var>::iterator end =" << endl
+ << " this->ciao_publishes_" << p.name ()
+ << "_map_.end ();" << endl
+ << "for (ACE_Active_Map_Manager<" << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var>::iterator iter =" << endl
+ << " this->ciao_publishes_" << p.name ()
+ << "_map_.begin ();"
+ << "iter != end;"
+ << "++iter)" << endl
+ << "{"
+ << "ACE_Active_Map_Manager<" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var>::entry &e = *iter;" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var c =" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_narrow (" << endl
+ << "e.int_id_.in ()" << endl
+ << ");"
+ << endl
+ << "if ( ::CORBA::is_nil (c.in ()))"
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);"
+ << "}"
+ << "::Components::ConsumerDescription *cd = 0;"
+ << "ACE_NEW_THROW_EX ("
+ << "cd," << endl
+ << "OBV_Components::ConsumerDescription ()," << endl
+ << "::CORBA::NO_MEMORY ());" << endl
+ << "::Components::ConsumerDescription_var safe = cd;"
+ << "safe->name (\"\");"
+ << "safe->type_id (\"\");"
+ << "safe->consumer (c.in ());" << endl
+ << "retval[_ciao_index++] = safe;"
+ << "}"
+ << "return retval._retn ();"
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter&)
+ {
+ // Don't know yet if swappable components need anything here.
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ public:
+ virtual void
+ pre (Type& t)
+ {
+ os << t.name () << "_Context::"
+ << t.name () << "_Context (" << endl
+ << "::Components::CCMHome_ptr h," << endl
+ << "::CIAO::Session_Container *c," << endl
+ << t.name () << "_Servant *sv)" << endl
+ << " : ::CIAO::Context_Impl_Base (h, c), " << endl
+ << " ::CIAO::Context_Impl<" << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context," << endl
+ << " " << t.name () << "_Servant," << endl
+ << " " << t.scoped_name () << "," << endl
+ << " " << t.scoped_name () << "_var" << endl
+ << " > (h, c, sv)";
+
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << "," << endl
+ << " ::CIAO::Upgradeable_Context_Impl<" << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context," << endl
+ << " " << t.name () << "_Servant," << endl
+ << " " << t.scoped_name () << "," << endl
+ << " " << t.scoped_name () << "_var" << endl
+ << " > (h, c, sv)" << endl;
+ }
+ else
+ {
+ os << endl;
+ }
+
+ os << "{"
+ << "}";
+
+ os << t.name () << "_Context::~"
+ << t.name () << "_Context (void)" << endl
+ << "{"
+ << "}";
+
+ os << "// Operations for " << t.name () << " receptacles"
+ << " and event sources," << endl
+ << "// defined in " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_Context."
+ << endl << endl;
+
+ // Generate Context class operations for receptacles and event sources.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ ContextPortsEmitter ports_emitter (ctx, t);
+ defines.node_traverser (ports_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Extra *_Context methods for swapping container.
+ if (swapping)
+ {
+ os << "// Operations defined in " << t.scoped_name ().scope_name ()
+ << "::CCM_" << t.name () << "_Context" << endl
+ << "// that enable component swapping in the container"
+ << endl << endl;
+
+ os << STRS[COMP_CD] << " *" << endl
+ << t.name () << "_Context::get_registered_consumers (" << endl
+ << "const char *publisher_name)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "if (publisher_name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);"
+ << "}"
+ << STRS[COMP_CD] << " *tmp = 0;"
+ << STRS[COMP_CD] << "_var retval;"
+ << "CORBA::ULong _ciao_index = 0;"
+ << "CORBA::ULong _ciao_size = 0;"
+ << STRS[ACE_UA] << " (tmp);"
+ << STRS[ACE_UA] << " (retval);"
+ << STRS[ACE_UA] << " (_ciao_index);"
+ << STRS[ACE_UA] << " (_ciao_size);" << endl;
+
+ // Generate IF block for each event sources.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ SwappableGetConsumersEmitter get_consumers_emitter (ctx);
+ defines.node_traverser (get_consumers_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);"
+ << "}";
+ }
+
+ os << "// CIAO-specific." << endl << endl;
+
+ os << t.name () << "_Context *" << endl
+ << t.name () << "_Context::_narrow (" << endl
+ << STRS[COMP_SC] << "_ptr p" << endl
+ << ")" << endl
+ << "{"
+ << "return dynamic_cast<" << t.name () << "_Context *> (p);"
+ << endl
+ << "}";
+ }
+ };
+
+ struct ServantEmitter : Traversal::Component, EmitterBase
+ {
+ ServantEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ // Nested classes used by ServantEmitter.
+ private:
+ struct EmitsConnectEmitter : Traversal::EmitterData,
+ EmitterBase
+
+ {
+ EmitsConnectEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (Type& t)
+ {
+ os << "if (ACE_OS::strcmp (emitter_name, \""
+ << t.name ().unescaped_str () << "\") == 0)" << endl
+ << "{";
+
+ Traversal::EmitterData::belongs (t, belongs_);
+
+ os << "Consumer_var _ciao_consumer =" << endl
+ << " ";
+
+ Traversal::EmitterData::belongs (t, belongs_);
+
+ os << "Consumer::_narrow (" << endl
+ << " consumer" << endl
+ << " " << ");" << endl
+ << "if ( ::CORBA::is_nil (_ciao_consumer.in ()))" << endl
+ << "{"
+ << "throw " << STRS[EXCP_IC] << " ();"
+ << endl
+ << "}"
+ << "this->connect_" << t.name ()
+ << " (" << endl
+ << "_ciao_consumer.in ()" << endl
+ << ");" << endl
+ << "return;"
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct EmitsDisconnectEmitter : Traversal::EmitterData,
+ EmitterBase
+ {
+ EmitsDisconnectEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (Type& t)
+ {
+ os << "if (ACE_OS::strcmp (source_name, \""
+ << t.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "return this->disconnect_" << t.name ()
+ << " ();" << endl
+ << "}";
+ }
+ };
+
+ struct NavigationGetFacetExecEmitter : Traversal::ProviderData,
+ EmitterBase
+ {
+ NavigationGetFacetExecEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ virtual void
+ traverse (Type& t)
+ {
+ os << "if (ACE_OS::strcmp (name, \""
+ << t.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "return this->executor_->get_" << t.name ()
+ << " ();" << endl
+ << "}";
+ }
+ };
+
+ struct PublishesEmitter : Traversal::PublisherData,
+ EmitterBase
+ {
+ PublishesEmitter (Context& c,
+ SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (Type& p)
+ {
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name ()
+ << "_Servant::subscribe_" << p.name () << " (" << endl;
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{";
+
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "return this->context_->subscribe_" << p.name ()
+ << " (" << endl
+ << "c" << endl
+ << ");" << endl
+ << "}";
+
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name ()
+ << "_Servant::subscribe_" << p.name () << "_generic (" << endl
+ << STRS[COMP_ECB] << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "return this->context_->subscribe_" << p.name ()
+ << "_generic (" << endl
+ << "c" << endl
+ << ");" << endl
+ << "}";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << scope_.name ()
+ << "_Servant::unsubscribe_" << p.name () << " (" << endl
+ << STRS[COMP_CK] << " *ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "return this->context_->unsubscribe_"
+ << p.name () << " (" << endl
+ << "ck" << endl
+ << ");" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct UsesConnectEmitter : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ EmitterBase
+ {
+ UsesConnectEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "if (ACE_OS::strcmp (name, \""
+ << u.name ().unescaped_str () << "\") == 0)" << endl
+ << "{";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_var _ciao_conn =" << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "::_narrow (" << endl
+ << "connection" << endl
+ << ");"
+ << endl
+ << "if ( ::CORBA::is_nil (_ciao_conn.in ()))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);"
+ << endl
+ << "}"
+ << "// Simplex connect." << endl
+ << "this->connect_" << u.name () << " (" << endl
+ << "_ciao_conn.in ()" << endl
+ << ");"
+ << endl
+ << "return 0;" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "if (ACE_OS::strcmp (name, \""
+ << u.name ().unescaped_str () << "\") == 0)" << endl
+ << "{";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var _ciao_conn =" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "::_narrow (" << endl
+ << "connection" << endl
+ << ");"
+ << endl
+ << "if ( ::CORBA::is_nil (_ciao_conn.in ()))" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);"
+ << endl
+ << "}"
+ << "// Multiplex connect." << endl
+ << "return this->connect_" << u.name () << " (" << endl
+ << "_ciao_conn.in ()" << endl
+ << ");"
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct UsesDisconnectEmitter : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ EmitterBase
+ {
+ UsesDisconnectEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "if (ACE_OS::strcmp (name, \""
+ << u.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "// Simplex disconnect." << endl
+ << "return this->disconnect_" << u.name ()
+ << " ();" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "if (ACE_OS::strcmp (name, \""
+ << u.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "// Multiplex disconnect." << endl
+ << "if (ck == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_CR] << " ()," << endl
+ << "::CORBA::Object::_nil ());" << endl
+ << "}"
+ << "return this->disconnect_" << u.name () << " (" << endl
+ << "ck" << endl
+ << ");" << endl
+ << "}";
+ }
+ };
+
+ struct UsesEmitter : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ EmitterBase
+ {
+ UsesEmitter (Context& c, SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "void" << endl
+ << scope_.name () << "_Servant::connect_"
+ << u.name () << " (" << endl;
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "this->context_->connect_" << u.name () << " ("
+ << endl
+ << "c" << endl
+ << ");" << endl
+ << "this->add_receptacle (\"" << u.name ().unescaped_str ()
+ << "\", c, 0);" << endl
+ << "}";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_Servant::disconnect_"
+ << u.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{"
+ << "return this->context_->disconnect_" << u.name ()
+ << " (" << endl
+ << ");" << endl
+ << "}";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name ()
+ << "_Servant::get_connection_" << u.name ()
+ << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "return this->context_->get_connection_"
+ << u.name () << " (" << endl
+ << ");" << endl
+ << "}";
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << STRS[COMP_CK] << " *" << endl
+ << scope_.name () << "_Servant::connect_"
+ << u.name () << " (" << endl;
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_ECL] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "::Components::Cookie * cookie = "
+ "this->context_->connect_" << u.name () << " ("
+ << endl
+ << "c" << endl
+ << ");" << endl
+ << "this->add_receptacle (\"" << u.name ().unescaped_str ()
+ << "\", c, cookie);" << endl
+ << "return cookie;" << endl
+ << "}";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name () << "_Servant::disconnect_"
+ << u.name () << " (" << endl
+ << STRS[COMP_CK] << " * ck)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{"
+ << "return this->context_->disconnect_" << u.name ()
+ << " (" << endl
+ << "ck" << endl
+ << ");" << endl
+ << "}";
+
+ os << u.scoped_name () << "Connections *" << endl
+ << scope_.name ()
+ << "_Servant::get_connections_" << u.name ()
+ << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "return this->context_->get_connections_"
+ << u.name () << " (" << endl
+ << ");" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct PublishesSubscribeEmitter : Traversal::PublisherData,
+ EmitterBase
+ {
+ PublishesSubscribeEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (Type& p)
+ {
+ os << "if (ACE_OS::strcmp (publisher_name, \""
+ << p.name ().unescaped_str () << "\") == 0)" << endl
+ << "{";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var sub =" << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer::_narrow (" << endl
+ << "subscribe" << endl
+ << ");"
+ << endl;
+
+ os << "if ( ::CORBA::is_nil (sub.in ()))" << endl
+ << "{"
+ << "::CORBA::Boolean substitutable =" << endl
+ << " subscribe->ciao_is_substitutable (" << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "::_tao_obv_static_repository_id ()" << endl
+ << " " << ");"
+ << endl;
+
+ os << "if (substitutable)" << endl
+ << "{"
+ << "return this->subscribe_" << p.name () << "_generic (" << endl
+ << "subscribe" << endl
+ << ");" << endl
+ << "}"
+ << "else" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IC] << " (), 0);" << endl
+ << "}"
+ << "}"
+ << "else" << endl
+ << "{"
+ << "return this->subscribe_" << p.name () << " (" << endl
+ << "sub.in ()" << endl
+ << ");" << endl
+ << "}"
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ };
+
+ struct PublishesUnsubscribeEmitter : Traversal::PublisherData,
+ EmitterBase
+ {
+ PublishesUnsubscribeEmitter (Context& c)
+ : EmitterBase (c)
+ {}
+
+ virtual void
+ traverse (Type& p)
+ {
+ os << "if (ACE_OS::strcmp (publisher_name, \""
+ << p.name ().unescaped_str () << "\") == 0)" << endl
+ << "{"
+ << "return this->unsubscribe_" << p.name ()
+ << " (" << endl
+ << "ck" << endl
+ << ");" << endl
+ << "}";
+ }
+ };
+
+ struct EmitsEmitter : Traversal::EmitterData,
+ EmitterBase
+ {
+ EmitsEmitter (Context& c, SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ traverse (Type& e)
+ {
+ os << "void" << endl
+ << scope_.name () << "_Servant::connect_"
+ << e.name () << " (" << endl;
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr c)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_AC] << "))" << endl
+ << "{"
+ << "this->context_->connect_" << e.name ()
+ << " (" << endl
+ << "c" << endl
+ << ");" << endl
+ << "}";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << scope_.name () << "_Servant::disconnect_"
+ << e.name () << " ()" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{"
+ << "return this->context_->disconnect_"
+ << e.name () << " (" << endl
+ << ");" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct ServantTypeNameEmitter : Traversal::Type,
+ EmitterBase
+ {
+ ServantTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Type& t)
+ {
+ os << t.name () << "_Servant";
+ }
+ };
+
+ struct FacetProvidesEmitter : Traversal::ProviderData,
+ EmitterBase
+ {
+ FacetProvidesEmitter (Context& c,
+ SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ servant_type_name_emitter_ (c),
+ enclosing_type_name_emitter_ (c),
+ facet_enclosing_type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ servant_belongs_.node_traverser (servant_type_name_emitter_);
+ enclosing_belongs_.node_traverser (enclosing_type_name_emitter_);
+ facet_enclosing_belongs_.node_traverser (
+ facet_enclosing_type_name_emitter_
+ );
+ repo_id_belongs_.node_traverser (repo_id_emitter_);
+ }
+
+ virtual void
+ traverse (Type& p)
+ {
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "_ptr" << endl
+ << scope_.name ()
+ << "_Servant::provide_" << p.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{";
+
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "if (! ::CORBA::is_nil (this->provide_"
+ << p.name () << "_.in ()))" << endl
+ << "{"
+ << "return ";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "::_duplicate (this->provide_" << p.name () << "_.in ());"
+ << "}";
+
+ os << "::CORBA::Object_var obj =" << endl
+ << " this->provide_" << p.name () << "_i ("
+ << ");"
+ << endl;
+
+ ScopedName scoped (scope_.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "_var fo =" << endl
+ << " ";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "::_narrow ("
+ << "obj.in ()" << endl
+ << ");"
+ << endl
+ << "this->provide_" << p.name () << "_ = fo;"
+ << "return ";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "::_duplicate (this->provide_"
+ << p.name () << "_.in ());" << endl
+ << "}";
+
+ // Corresponding private provide_*_i() method.
+
+ os << "::CORBA::Object_ptr" << endl
+ << scope_.name ()
+ << "_Servant::provide_" << p.name () << "_i (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "::CORBA::Object_ptr ret =" << endl
+ << " this->lookup_facet (\""
+ << p.name ().unescaped_str () << "\");" << endl;
+
+ os << "if (! ::CORBA::is_nil (ret))" << endl
+ << "{"
+ << "return ret;"
+ << "}";
+
+ os << "::CIAO::Port_Activator_T<" << endl
+ << " ::" << STRS[FACET_PREFIX];
+
+ Traversal::ProviderData::belongs (p, facet_enclosing_belongs_);
+
+ os << "::";
+
+ Traversal::ProviderData::belongs (p, servant_belongs_);
+
+ os << "," << endl
+ << " ";
+
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
+
+ Traversal::ProviderData::belongs (p, simple_belongs_);
+
+ os << "," << endl
+ << " ::Components::CCMContext," << endl
+ << " " << scope_.name () << "_Servant" << endl
+ << " > *tmp = 0;" << endl
+ << "typedef ::CIAO::Port_Activator_T<" << endl
+ << " ::" << STRS[FACET_PREFIX];
+
+ Traversal::ProviderData::belongs (p, facet_enclosing_belongs_);
+
+ os << "::";
+
+ Traversal::ProviderData::belongs (p, servant_belongs_);
+
+ os << "," << endl
+ << " ";
+
+ Traversal::ProviderData::belongs (p, enclosing_belongs_);
+
+ os << "::CCM_";
+
+ Traversal::ProviderData::belongs (p, simple_belongs_);
+
+ os << "," << endl
+ << " ::Components::CCMContext," << endl
+ << " " << scope_.name () << "_Servant" << endl
+ << " >" << endl
+ << "MACRO_MADNESS_TYPEDEF;" << endl;
+
+ os << "ACE_CString obj_id (this->ins_name_);"
+ << "obj_id += \"_" << p.name ().unescaped_str () << "\";" << endl;
+
+ os << "ACE_NEW_THROW_EX ("
+ << "tmp," << endl
+ << "MACRO_MADNESS_TYPEDEF (" << endl
+ << "obj_id.c_str ()," << endl
+ << "\"" << p.name ().unescaped_str () << "\"," << endl
+ << "::CIAO::Port_Activator::Facet," << endl
+ << "0," << endl
+ << "this->context_," << endl
+ << "this)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl;
+
+ os << "::CIAO::Servant_Activator *sa = " << endl
+ << "this->container_->ports_servant_activator ();" << endl
+ << "if (!sa->register_port_activator (tmp))" << endl
+ << "{"
+ << "return ";
+
+ Traversal::ProviderData::belongs (p, belongs_);
+
+ os << "::_nil ();"
+ << "}";
+
+ os << "::CORBA::Object_var obj =" << endl
+ << " this->container_->generate_reference (" << endl
+ << " obj_id.c_str ()," << endl
+ << " ";
+
+ Traversal::ProviderData::belongs (p, repo_id_belongs_);
+
+ os << "," << endl
+ << " ::CIAO::Container::Facet_Consumer" << endl
+ << " " << ");"
+ << endl
+ << "this->add_facet (\""
+ << p.name ().unescaped_str () << "\"," << endl
+ << "obj.in ()" << endl
+ << ");"
+ << endl;
+
+ os << "return obj._retn ();" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ ServantTypeNameEmitter servant_type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ FacetEnclosingTypeNameEmitter facet_enclosing_type_name_emitter_;
+ RepoIdEmitter repo_id_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs servant_belongs_;
+ Traversal::Belongs enclosing_belongs_;
+ Traversal::Belongs facet_enclosing_belongs_;
+ Traversal::Belongs repo_id_belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct ConsumesEmitter : Traversal::ConsumerData,
+ EmitterBase
+ {
+ ConsumesEmitter (Context& c, SemanticGraph::Component& scope)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ scope_ (scope)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ simple_belongs_.node_traverser (simple_type_name_emitter_);
+ repo_id_belongs_.node_traverser (repo_id_emitter_);
+ }
+
+ virtual void
+ traverse (Type& c)
+ {
+ os << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant (" << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_ptr executor,"
+ << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context_ptr c)" << endl
+ << " : executor_ ( " << c.scoped_name ().scope_name ().scope_name ()
+ << "::CCM_" << c.scoped_name ().scope_name ().simple_name ()
+ << "::_duplicate (executor))," << endl
+ << " ctx_ ( " << c.scoped_name ().scope_name ().scope_name ()
+ << "::CCM_" << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context::_duplicate (c))" << endl
+ << "{"
+ << "}";
+
+ os << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::~";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant (void)" << endl
+ << "{"
+ << "}";
+
+ os << "::CORBA::Object_ptr" << endl
+ << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::_get_component (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "return this->ctx_->get_CCM_object "
+ << "();" << endl
+ << "}";
+
+ os << "void" << endl
+ << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::push_";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << " (" << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " *evt" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "this->executor_->push_" << c.name ()
+ << " (" << endl
+ << "evt" << endl
+ << ");" << endl
+ << "}";
+
+ os << "// Inherited from " << STRS[COMP_ECB] << "." << endl
+ << "void" << endl
+ << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::push_event (" << endl
+ << "::Components::EventBase *ev)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_BET] << "))" << endl
+ << "{";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " *ev_type =" << endl
+ << " ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "::_downcast (ev);" << endl
+ << "if (ev_type != 0)" << endl
+ << "{"
+ << "this->push_";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << " (" << endl
+ << "ev_type" << endl
+ << ");" << endl
+ << "return;" << endl
+ << "}"
+ << "throw " << STRS[EXCP_BET] << " ();" << endl
+ << "}";
+
+ // GD Added below code
+ // Begin
+
+ os << "// Inherited from " << STRS[COMP_ECB] << "." << endl
+ << "void" << endl
+ << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::ciao_push_event (" << endl
+ << "::Components::EventBase *ev," << endl
+ << "const char * /* source_id */," << endl
+ << "::CORBA::TypeCode_ptr /* tc */)" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_BET] << "))" << endl
+ << "{"
+ << "this->push_event (ev);" << endl
+ << "}";
+
+ // End
+
+ os << "CORBA::Boolean" << endl
+ << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant::ciao_is_substitutable (" << endl
+ << "const char * event_repo_id" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "if (event_repo_id == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( ::CORBA::BAD_PARAM (), false);" << endl
+ << "}"
+ << scope_.name () << "_Context *ctx =" << endl
+ << " " << scope_.name () << "_Context::_narrow (" << endl
+ << " this->ctx_.in ()" << endl
+ << " " << ");"
+ << endl;
+
+ os << "CORBA::ORB_ptr orb = ctx->_ciao_the_Container ()->the_ORB ();"
+ << endl;
+
+ os << "CORBA::ValueFactory f =" << endl
+ << " orb->lookup_value_factory (" << endl
+ << " event_repo_id" << endl
+ << " " << ");"
+ << endl;
+
+ os << "if (f == 0)" << endl
+ << "{"
+ << "return false;" << endl
+ << "}"
+ << "CORBA::ValueBase_var v =" << endl
+ << " f->create_for_unmarshal ();"
+ << endl;
+
+ os << "f->_remove_ref ();" << endl;
+
+ os << "if (v.in () == 0)" << endl
+ << "{"
+ << "return false;" << endl
+ << "}";
+
+ os << "return dynamic_cast< ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << " *> (v.in ()) != 0;" << endl
+ << "}" << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer_ptr" << endl
+ << scope_.name () << "_Servant::"
+ << "get_consumer_" << c.name () << " (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "if (! ::CORBA::is_nil (this->consumes_" << c.name ()
+ << "_.in ()))" << endl
+ << "{"
+ << "return ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer::_duplicate (this->consumes_"
+ << c.name () << "_.in ());"
+ << "}";
+
+ os << "::Components::EventConsumerBase_var obj =" << endl
+ << " this->get_consumer_" << c.name () << "_i (" << endl
+ << " " << ");"
+ << endl;
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer_var eco =" << endl
+ << " ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer::_narrow (" << endl
+ << " obj.in ()" << endl
+ << " " << ");"
+ << endl
+ << "this->consumes_" << c.name () << "_ = eco;"
+ << "return ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer::_duplicate (this->consumes_" << c.name ()
+ << "_.in ());" << endl
+ << "}";
+
+ // Corresponding private get_consumer_*_i() method.
+
+ os << "::Components::EventConsumerBase_ptr" << endl
+ << scope_.name () << "_Servant::"
+ << "get_consumer_" << c.name () << "_i (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << "::Components::EventConsumerBase_ptr ret =" << endl
+ << " this->lookup_consumer (\""
+ << c.name ().unescaped_str () << "\");" << endl;
+
+ os << "if (! ::CORBA::is_nil (ret))" << endl
+ << "{"
+ << "return ret;"
+ << "}";
+
+ os << "::CIAO::Port_Activator_T<" << endl;
+
+ os << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant," << endl
+ << c.scoped_name ().scope_name ().scope_name ()
+ << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "," << endl
+ << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context," << endl
+ << scope_.name () << "_Servant"
+ << " > *tmp = 0;" << endl
+ << "typedef CIAO::Port_Activator_T<" << endl;
+
+ os << " " << scope_.name () << "_Servant::";
+
+ Traversal::ConsumerData::belongs (c, simple_belongs_);
+
+ os << "Consumer_" << c.name ()
+ << "_Servant," << endl
+ << " " << c.scoped_name ().scope_name ().scope_name ()
+ << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "," << endl
+ << " " << c.scoped_name ().scope_name ().scope_name () << "::CCM_"
+ << c.scoped_name ().scope_name ().simple_name ()
+ << "_Context, " << endl
+ << " " << scope_.name () << "_Servant" << endl
+ << " >" << endl
+ << "MACRO_MADNESS_TYPEDEF;" << endl;
+
+ os << "ACE_CString obj_id (this->ins_name_);"
+ << "obj_id += \"_" << c.name ().unescaped_str () << "\";" << endl;
+
+ os << "ACE_NEW_THROW_EX (" << endl
+ << "tmp," << endl
+ << "MACRO_MADNESS_TYPEDEF ("
+ << "obj_id.c_str ()," << endl
+ << "\"" << c.name ().unescaped_str () << "\"," << endl
+ << "::CIAO::Port_Activator::Sink," << endl
+ << "this->executor_.in ()," << endl
+ << "this->context_," << endl
+ << "this)," << endl
+ << "::CORBA::NO_MEMORY ());" << endl;
+
+ os << "::CIAO::Servant_Activator *sa =" << endl
+ << " this->container_->ports_servant_activator ();" << endl
+ << "if (!sa->register_port_activator (tmp))" << endl
+ << "{"
+ << "return ";
+
+ Traversal::ConsumerData::belongs (c, belongs_);
+
+ os << "Consumer::_nil ();"
+ << "}";
+
+ os << "::CORBA::Object_var obj =" << endl
+ << " this->container_->generate_reference (" << endl
+ << " obj_id.c_str ()," << endl
+ << " ";
+
+ Traversal::ConsumerData::belongs (c, repo_id_belongs_);
+
+ os << "," << endl
+ << " ::CIAO::Container::Facet_Consumer" << endl
+ << " " << ");"
+ << endl;
+
+ os << "::Components::EventConsumerBase_var ecb =" << endl
+ << " ::Components::EventConsumerBase::_narrow (" << endl
+ << " obj.in ()" << endl
+ << " " << ");"
+ << endl;
+
+ os << "this->add_consumer (\""
+ << c.name ().unescaped_str () << "\"," << endl
+ << "ecb.in ()" << endl
+ << ");"
+ << endl;
+
+ os << "return ecb._retn ();" << endl
+ << "}";
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ ConsumerRepoIdEmitter repo_id_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs simple_belongs_;
+ Traversal::Belongs repo_id_belongs_;
+ SemanticGraph::Component& scope_;
+ };
+
+ struct OperationExistsEmitter;
+
+ struct RegisterValueFactoryEmitter : Traversal::ConsumerData,
+ Traversal::PublisherData,
+ Traversal::EmitterData,
+ EmitterBase
+ {
+ RegisterValueFactoryEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ gen_factory_ (true)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ }
+
+ void factory_gen_off (void)
+ {
+ gen_factory_ = false;
+ }
+
+ bool gen_factory (void) const
+ {
+ return gen_factory_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ Traversal::PublisherData publisher;
+ RegisterValueFactoryEmitter::traverse_common<
+ SemanticGraph::Publisher,
+ Traversal::PublisherData> (p, publisher, this, os, belongs_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ Traversal::EmitterData emitter;
+ RegisterValueFactoryEmitter::traverse_common<
+ SemanticGraph::Emitter,
+ Traversal::EmitterData> (e, emitter, this, os, belongs_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& c)
+ {
+ Traversal::ConsumerData consumer;
+ RegisterValueFactoryEmitter::traverse_common<
+ SemanticGraph::Consumer,
+ Traversal::ConsumerData> (c, consumer, this, os, belongs_);
+ }
+
+ template<typename SemanticType, typename TraversalType>
+ static void
+ traverse_common (SemanticType& st,
+ TraversalType& tt,
+ RegisterValueFactoryEmitter* r,
+ ostream& os,
+ Traversal::Belongs& blongs)
+ {
+ {
+ Traversal::Belongs tt_belongs;
+ tt.edge_traverser (tt_belongs);
+
+ // Separate traversers because we want to catch inherited
+ // operations, but not base class factories or private
+ // members.
+ Traversal::ValueType event_type_operations;
+ Traversal::ValueType event_type_factories;
+ tt_belongs.node_traverser (event_type_operations);
+ tt_belongs.node_traverser (event_type_factories);
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (event_type_operations);
+ event_type_operations.edge_traverser (inherits);
+
+ Traversal::Defines include_inherit_defines;
+ event_type_operations.edge_traverser (include_inherit_defines);
+ OperationExistsEmitter op_emitter (r);
+ include_inherit_defines.node_traverser (op_emitter);
+
+ Traversal::Supports supports;
+ event_type_operations.edge_traverser (supports);
+ Traversal::Interface iface;
+ supports.node_traverser (iface);
+ inherits.node_traverser (iface);
+ iface.edge_traverser (inherits);
+ iface.edge_traverser (include_inherit_defines);
+
+ Traversal::Defines no_include_inherit_defines;
+ event_type_factories.edge_traverser (no_include_inherit_defines);
+ PrivateExistsEmitter priv_emitter (r);
+ FactoryExistsEmitter factory_emitter (r);
+ no_include_inherit_defines.node_traverser (priv_emitter);
+ no_include_inherit_defines.node_traverser (factory_emitter);
+
+ tt.traverse (st);
+ }
+
+ if (r->gen_factory ())
+ {
+ os << "CIAO_REGISTER_OBV_FACTORY (" << endl;
+
+ r->TraversalType::belongs (st, blongs);
+
+ os << "_init," << endl;
+
+ r->TraversalType::belongs (st, blongs);
+
+ os << ");" << endl;
+ }
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Belongs belongs_;
+ bool gen_factory_;
+ };
+
+ struct OperationExistsEmitter : Traversal::Operation,
+ Traversal::ValueTypeFactory
+ {
+ OperationExistsEmitter (RegisterValueFactoryEmitter* r)
+ : r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Operation&)
+ {
+ r_->factory_gen_off ();
+ }
+
+ virtual void
+ traverse (SemanticGraph::ValueTypeFactory&)
+ {
+ // This gets called for base eventtypes as well, so
+ // we don't want to catch this here, but there's no
+ // way to avoid it, so we make it a no-op. This
+ // catches both valuetype and eventtype factories.
+ }
+
+ private:
+ RegisterValueFactoryEmitter* r_;
+ };
+
+ // Since we're not interested in ancestors' factories, we can
+ // specialize all the way to EventTypeFactory.
+ struct FactoryExistsEmitter : Traversal::EventTypeFactory
+ {
+ FactoryExistsEmitter (RegisterValueFactoryEmitter* r)
+ : r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::EventTypeFactory&)
+ {
+ r_->factory_gen_off ();
+ }
+
+ private:
+ RegisterValueFactoryEmitter* r_;
+ };
+
+ struct PrivateExistsEmitter : Traversal::ValueTypePrivateMember
+ {
+ PrivateExistsEmitter (RegisterValueFactoryEmitter* r)
+ : r_ (r)
+ {
+ }
+
+ virtual void
+ traverse (Type&)
+ {
+ r_->factory_gen_off ();
+ }
+
+ private:
+ RegisterValueFactoryEmitter* r_;
+ };
+
+ struct PortTablePopulator : Traversal::ProviderData,
+ Traversal::UserData,
+ Traversal::PublisherData,
+ Traversal::EmitterData,
+ Traversal::ConsumerData,
+ EmitterBase
+ {
+ PortTablePopulator (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Provider& p)
+ {
+ os << "obj_var =" << endl
+ << " this->provide_" << p.name () << "_i (" << endl
+ << " " << ");" << endl;
+ }
+
+ virtual void
+ traverse (SemanticGraph::User&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Consumer& p)
+ {
+ os << "ecb_var =" << endl
+ << " this->get_consumer_" << p.name () << "_i (" << endl
+ << " " << ");" << endl;
+ }
+ };
+
+ struct SetAttributesEmitter : Traversal::ReadWriteAttribute,
+ EmitterBase
+ {
+ SetAttributesEmitter (Context& c)
+ : EmitterBase (c)
+ {
+ }
+
+ virtual void
+ pre (SemanticGraph::ReadWriteAttribute& a)
+ {
+ Traversal::Belongs delegate_belongs;
+
+ SetAttributeDelegationEmitter delegater (ctx, a);
+ delegate_belongs.node_traverser (delegater);
+
+ Traversal::ReadWriteAttribute::belongs (a, delegate_belongs);
+ }
+ };
+
+ struct UsesSizeCalculator : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ EmitterBase
+ {
+ UsesSizeCalculator (Context& c, unsigned long& size)
+ : EmitterBase (c),
+ size_ (size)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser&)
+ {
+ ++size_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser&)
+ {
+ ++size_;
+ }
+
+ private:
+ unsigned long& size_;
+ };
+
+ struct UsesGetAllEmitter : Traversal::SingleUserData,
+ Traversal::MultiUserData,
+ EmitterBase
+ {
+ UsesGetAllEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ slot_ (0UL)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ repo_id_belongs_.node_traverser (repo_id_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::SingleUser& u)
+ {
+ os << "::CIAO::Servant_Impl_Base::describe_simplex_receptacle<"
+ << endl
+ << " ";
+
+ Traversal::SingleUserData::belongs (u, belongs_);
+
+ os << "_var" << endl
+ << " > (\"" << u.name ().unescaped_str () << "\"," << endl;
+
+ Traversal::SingleUserData::belongs (u, repo_id_belongs_);
+
+ os << "," << endl
+ << "this->context_->ciao_uses_" << u.name () << "_," << endl
+ << "safe_retval," << endl
+ << slot_ << "UL);" << endl;
+
+ ++slot_;
+ }
+
+ virtual void
+ traverse (SemanticGraph::MultiUser& u)
+ {
+ os << "::CIAO::Servant_Impl_Base::describe_multiplex_receptacle<"
+ << endl
+ << " ";
+
+ Traversal::MultiUserData::belongs (u, belongs_);
+
+ os << "_var" << endl
+ << " > (\"" << u.name ().unescaped_str () << "\"," << endl;
+
+ Traversal::MultiUserData::belongs (u, repo_id_belongs_);
+
+ os << "," << endl
+ << "this->context_->ciao_uses_" << u.name () << "_," << endl
+ << "safe_retval," << endl
+ << slot_ << "UL);" << endl;
+
+ ++slot_;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ RepoIdEmitter repo_id_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs repo_id_belongs_;
+ unsigned long slot_;
+ };
+
+ struct PublishesSizeCalculator : Traversal::PublisherData,
+ EmitterBase
+ {
+ PublishesSizeCalculator (Context& c, unsigned long& size)
+ : EmitterBase (c),
+ size_ (size)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher&)
+ {
+ ++size_;
+ }
+
+ private:
+ unsigned long& size_;
+ };
+
+ struct PublishesGetAllEmitter : Traversal::PublisherData,
+ EmitterBase
+ {
+ PublishesGetAllEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ slot_ (0UL)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ repo_id_belongs_.node_traverser (repo_id_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Publisher& p)
+ {
+ os << "::CIAO::Servant_Impl_Base::describe_pub_event_source<"
+ << endl
+ << " ";
+
+ Traversal::PublisherData::belongs (p, belongs_);
+
+ os << "Consumer_var" << endl
+ << " > (\"" << p.name ().unescaped_str () << "\"," << endl;
+
+ Traversal::PublisherData::belongs (p, repo_id_belongs_);
+
+ os << "," << endl
+ << "this->context_->ciao_publishes_" << p.name ()
+ << "_map_," << endl
+ << "safe_retval," << endl
+ << slot_ << "UL);" << endl;
+
+ ++slot_;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ RepoIdEmitter repo_id_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs repo_id_belongs_;
+ unsigned long slot_;
+ };
+
+ struct EmitsSizeCalculator : Traversal::EmitterData,
+ EmitterBase
+ {
+ EmitsSizeCalculator (Context& c, unsigned long& size)
+ : EmitterBase (c),
+ size_ (size)
+
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter&)
+ {
+ ++size_;
+ }
+
+ private:
+ unsigned long& size_;
+ };
+
+ struct EmitsGetAllEmitter : Traversal::EmitterData,
+ EmitterBase
+ {
+ EmitsGetAllEmitter (Context& c)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ slot_ (0UL)
+ {
+ belongs_.node_traverser (type_name_emitter_);
+ repo_id_belongs_.node_traverser (repo_id_emitter_);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Emitter& e)
+ {
+ os << "::CIAO::Servant_Impl_Base::describe_emit_event_source<"
+ << endl
+ << " ";
+
+ Traversal::EmitterData::belongs (e, belongs_);
+
+ os << "Consumer_var" << endl
+ << " > (\"" << e.name ().unescaped_str () << "\"," << endl;
+
+ Traversal::EmitterData::belongs (e, repo_id_belongs_);
+
+ os << "," << endl
+ << "this->context_->ciao_emits_" << e.name ()
+ << "_consumer_," << endl
+ << "safe_retval," << endl
+ << slot_ << "UL);" << endl;
+
+ ++slot_;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ RepoIdEmitter repo_id_emitter_;
+ Traversal::Belongs belongs_;
+ Traversal::Belongs repo_id_belongs_;
+ unsigned long slot_;
+ };
+
+ public:
+ virtual void
+ pre (Type& t)
+ {
+ ScopedName scoped (t.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ // Servant Constructor
+ os << t.name () << "_Servant::"
+ << t.name () << "_Servant (" << endl
+ << t.scoped_name ().scope_name () << "::CCM_" << t.name ()
+ << "_ptr exe," << endl
+ << "::Components::CCMHome_ptr h," << endl
+ << "const char *ins_name," << endl
+ << "::CIAO::Home_Servant_Impl_Base *hs," << endl
+ << "::CIAO::Session_Container *c)" << endl
+ << " : ::CIAO::Servant_Impl_Base "
+ << "(h, hs, c)," << endl
+ << " ::CIAO::Servant_Impl<" << endl
+ << " ::POA_" << stripped << "," << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "," << endl
+ << " " << t.name () << "_Context" << endl
+ << " > (exe, h, hs, c)," << endl
+ << " ins_name_ (ins_name)" << endl
+ << "{"
+ << "ACE_NEW ("
+ << "this->context_," << endl
+ << t.name () << "_Context (h, c, this));" << endl;
+
+ os << "// Set the instance id of the component on the context" << endl
+ << endl
+ << "this->context_->_ciao_instance_id (this->ins_name_);" << endl;
+
+
+ // Generate the macro to register a value factory for each
+ // eventtype consumed.
+ if (!ctx.cl ().get_value ("suppress-register-factory", false))
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ RegisterValueFactoryEmitter factory_emitter (ctx);
+ defines.node_traverser (factory_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "try" << endl
+ << "{"
+ << "::Components::SessionComponent_var scom =" << endl
+ << " ::Components::SessionComponent::_narrow (" << endl
+ << " exe" << endl
+ << " " << ");" << endl
+ << "if (! ::CORBA::is_nil (scom.in ()))" << endl
+ << "{"
+ << "scom->set_session_context (" << endl
+ << "this->context_" << endl
+ << ");"
+ << "}"
+ << "this->populate_port_tables (" << endl
+ << ");"
+ << "}"
+ << "catch (const CORBA::Exception&)" << endl
+ << "{"
+ << "}"
+ << endl
+ << "}";
+
+ // Servant Destructor
+ os << t.name () << "_Servant::~"
+ << t.name () << "_Servant (void)" << endl
+ << "{"
+ << "}";
+
+ // Override pure virtual set_attributes() operation.
+ os << "void" << endl
+ << t.name () << "_Servant::set_attributes (" << endl
+ << "const ::Components::ConfigValues &descr" << endl
+ << ")" << endl
+ << "{" << endl;
+
+ string swap_option = ctx.cl ().get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "for ( ::CORBA::ULong i = 0; i < descr.length (); ++i)" << endl
+ << "{"
+ << "const char *descr_name = descr[i]->name ();"
+ << "::CORBA::Any &descr_value = descr[i]->value ();" << endl;
+
+ // Generate string compare and set for each attribute.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ SetAttributesEmitter set_attributes_emitter (ctx);
+ defines.node_traverser (set_attributes_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+
+ os << STRS[ACE_UA] << " (descr_name);"
+ << STRS[ACE_UA] << " (descr_value);" << endl;
+
+ os << "}"
+ << "}";
+
+ // Generate provides_<facet> operation.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ FacetProvidesEmitter provides_emitter (ctx, t);
+ defines.node_traverser (provides_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Generate subscribe_* and unsubscribe_* operations.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ PublishesEmitter publishes_emitter (ctx, t);
+ defines.node_traverser (publishes_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Generate operations for nested Consumer classes.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ ConsumesEmitter consumes_emitter (ctx, t);
+ defines.node_traverser (consumes_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[COMP_CK] << " *" << endl
+ << t.name () << "_Servant::connect (" << endl
+ << "const char *name," << endl
+ << "::CORBA::Object_ptr connection" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "// If the component has no receptacles, this will be unused."
+ << endl
+ << STRS[ACE_UA] << " (connection);" << endl
+ << "if (name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl
+ << "}";
+
+ // Generate IF block in connect operation for each receptacle.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ UsesConnectEmitter uses_emitter (ctx);
+ defines.node_traverser (uses_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl
+ << "}";
+
+ os << "::CORBA::Object_ptr" << endl
+ << t.name () << "_Servant::disconnect (" << endl
+ << "const char *name," << endl
+ << STRS[COMP_CK] << " * ck" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_CR] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{"
+ << STRS[ACE_UA] << " (ck);" << endl;
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "if (name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_BP] << "," << endl
+ << "::CORBA::Object::_nil ());" << endl
+ << "}";
+
+ // Generate IF block in disconnect operation for each receptacle.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ UsesDisconnectEmitter uses_emitter (ctx);
+ defines.node_traverser (uses_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IN] << " ()," << endl
+ << "::CORBA::Object::_nil ());"
+ << "}";
+
+ os << STRS[COMP_RD] << " *" << endl
+ << t.name () << "_Servant::get_all_receptacles (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[COMP_RD] << " *retval = 0;"
+ << "ACE_NEW_RETURN (retval," << endl
+ << STRS[COMP_RD] << "," << endl
+ << "0);"
+ << STRS[COMP_RD] << "_var safe_retval = retval;";
+
+ unsigned long size = 0;
+
+ // Calculate the number of uses ports.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ UsesSizeCalculator size_calculator (ctx, size);
+ defines.node_traverser (size_calculator);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "safe_retval->length (" << size << "UL);" << endl;
+
+ // Generate a sequence element assignment for each uses port.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ UsesGetAllEmitter get_all_emitter (ctx);
+ defines.node_traverser (get_all_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "return safe_retval._retn ();"
+ << "}";
+
+ // Generate generic operations for receptacles.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ UsesEmitter uses_emitter (ctx, t);
+ defines.node_traverser (uses_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "void" << endl
+ << t.name () << "_Servant::connect_consumer ("
+ << endl
+ << "const char * emitter_name," << endl
+ << STRS[COMP_ECB] << "_ptr consumer" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_AC] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "if (emitter_name == 0)" << endl
+ << "{"
+ << "throw " << STRS[EXCP_BP] << ";" << endl
+ << "}";
+
+ // Generate an IF block for each 'emits' declaration.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ EmitsConnectEmitter emits_connect_emitter (ctx);
+ defines.node_traverser (emits_connect_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_UA] << " (consumer);"
+ << "throw "
+ << STRS[EXCP_IN] << " ();" << endl
+ << "}";
+
+ os << STRS[COMP_ECB] << "_ptr" << endl
+ << t.name () << "_Servant::disconnect_consumer (" << endl
+ << "const char *source_name" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_NC] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "if (source_name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_BP] << "," << endl
+ << STRS[COMP_ECB] << "::_nil ());" << endl
+ << "}";
+
+ // Generate an IF block for each 'emits' declaration.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ EmitsDisconnectEmitter emits_disconnect_emitter (ctx);
+ defines.node_traverser (emits_disconnect_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IN] << " ()," << endl
+ << STRS[COMP_ECB] << "::_nil ());" << endl
+ << "}";
+
+ os << STRS[COMP_PD] << " *" << endl
+ << t.name () << "_Servant::get_all_publishers (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[COMP_PD] << " *retval = 0;"
+ << "ACE_NEW_RETURN (retval," << endl
+ << STRS[COMP_PD] << "," << endl
+ << "0);"
+ << STRS[COMP_PD] << "_var safe_retval = retval;";
+
+ size = 0UL;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ PublishesSizeCalculator publishes_size_calculator (ctx, size);
+ defines.node_traverser (publishes_size_calculator);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "safe_retval->length (" << size << "UL);" << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ PublishesGetAllEmitter publishes_get_all_emitter (ctx);
+ defines.node_traverser (publishes_get_all_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "return safe_retval._retn ();"
+ << "}";
+
+ os << STRS[COMP_ED] << " *" << endl
+ << t.name () << "_Servant::get_all_emitters (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << STRS[COMP_ED] << " *retval = 0;"
+ << "ACE_NEW_RETURN (retval," << endl
+ << STRS[COMP_ED] << "," << endl
+ << "0);"
+ << STRS[COMP_ED] << "_var safe_retval = retval;";
+
+ size = 0UL;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ EmitsSizeCalculator emits_size_calculator (ctx, size);
+ defines.node_traverser (emits_size_calculator);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "safe_retval->length (" << size << "UL);" << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ EmitsGetAllEmitter emits_get_all_emitter (ctx);
+ defines.node_traverser (emits_get_all_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "return safe_retval._retn ();"
+ << "}";
+
+ os << STRS[COMP_CK] << " *" << endl
+ << t.name () << "_Servant::subscribe (" << endl
+ << "const char *publisher_name," << endl
+ << STRS[COMP_ECB] << "_ptr subscribe" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "," << endl
+ << STRS[EXCP_ECL] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "// Just in case there are no if blocks" << endl
+ << STRS[ACE_UA] << " (subscribe);" << endl
+ << "if (publisher_name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);"
+ << endl
+ << "}";
+
+ // Generate an IF block in for each publisher in subscribe().
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ PublishesSubscribeEmitter publishes_emitter (ctx);
+ defines.node_traverser (publishes_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( " << STRS[EXCP_IN] << " (), 0);" << endl
+ << "}";
+
+ os << STRS[COMP_ECB] << "_ptr" << endl
+ << t.name () << "_Servant::unsubscribe ("
+ << endl
+ << "const char *publisher_name," << endl
+ << STRS[COMP_CK] << " *ck" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl
+ << STRS[EXCP_IN] << "," << endl
+ << STRS[EXCP_IC] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "// Just in case there are no if blocks" << endl
+ << STRS[ACE_UA] << " (ck);" << endl
+ << "if (publisher_name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IN] << " ()," << endl
+ << STRS[COMP_ECB] << "::_nil ());" << endl
+ << "}";
+
+ // Generate an IF block in for each publisher in unsubscribe().
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ PublishesUnsubscribeEmitter publishes_emitter (ctx);
+ defines.node_traverser (publishes_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << STRS[ACE_TR] << " ( "
+ << STRS[EXCP_IN] << " ()," << endl
+ << STRS[COMP_ECB] << "::_nil ());" << endl
+ << "}";
+
+ // Generate connect() and disconnect() for each emits declaration.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ EmitsEmitter emits_emitter (ctx, t);
+ defines.node_traverser (emits_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "::CORBA::Object_ptr" << endl
+ << t.name ()
+ << "_Servant::get_facet_executor (" << endl
+ << "const char *name" << endl
+ << ")" << endl
+ << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "))" << endl
+ << "{";
+
+ if (swapping)
+ {
+ os << "this->activate_component ();"
+ << endl;
+ }
+
+ os << "if (name == 0)" << endl
+ << "{"
+ << STRS[ACE_TR] << " ( " << STRS[EXCP_BP] << "," << endl
+ << "::CORBA::Object::_nil ());" << endl
+ << "}";
+
+
+ // Generate an IF block for each facet inside provide_facet().
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+ component_emitter.edge_traverser (inherits);
+
+ NavigationGetFacetExecEmitter navigation_facet_exec_emitter (ctx);
+ defines.node_traverser (navigation_facet_exec_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "return ::CORBA::Object::_nil ();"
+ << "}";
+
+ os << "// Supported operations." << endl << endl;
+
+ // Generate operations for all supported interfaces.
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Supports supports_;
+ component_emitter.edge_traverser (supports_);
+ component_emitter.edge_traverser (component_inherits);
+
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter<SemanticGraph::Component> operation_emitter (ctx, t);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ // Generate operations for component attributes.
+ os << "// Component attribute operations." << endl << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ component_emitter.edge_traverser (inherits);
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ AttributeSourceEmitter<SemanticGraph::Component> attribute_emitter (ctx, t);
+ defines.node_traverser (attribute_emitter);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "// Private method to populate the port tables."
+ << endl;
+
+ os << "void" << endl
+ << t.name () << "_Servant::populate_port_tables (" << endl
+ << ")" << endl
+ << STRS[EXCP_SNGL] << endl
+ << "{"
+ << ";"
+ << "::CORBA::Object_var obj_var;"
+ << "::Components::EventConsumerBase_var ecb_var;" << endl;
+
+ {
+ Traversal::Component component_emitter;
+
+ Traversal::Inherits inherits;
+ component_emitter.edge_traverser (inherits);
+ inherits.node_traverser (component_emitter);
+
+ Traversal::Defines defines;
+ component_emitter.edge_traverser (defines);
+
+ PortTablePopulator port_table_populator (ctx);
+ defines.node_traverser (port_table_populator);
+
+ component_emitter.traverse (t);
+ }
+
+ os << "}";
+ }
+ };
+
+ struct HomeEmitter : Traversal::Home, EmitterBase
+ {
+ HomeEmitter (Context& c, CommandLine const& cl)
+ : EmitterBase (c),
+ cl_ (cl),
+ simple_type_name_emitter_ (c),
+ repo_id_emitter_ (c),
+ flat_name_emitter_ (c)
+ {
+ simple_manages_.node_traverser (simple_type_name_emitter_);
+ repo_id_manages_.node_traverser (repo_id_emitter_);
+ flat_name_manages_.node_traverser (flat_name_emitter_);
+ }
+
+ // Nested classes used by this emitter.
+ private:
+ struct HomeOpExecReturnEmitter : Traversal::Type
+ {
+ HomeOpExecReturnEmitter (std::ostream& os_)
+ : os (os_)
+ {}
+
+ virtual void
+ traverse (SemanticGraph::Type&)
+ {
+ os << STRS[COMP_EC] << "_var _ciao_ec =" << endl
+ << "this->executor_->";
+ }
+
+ private:
+ std::ostream& os;
+ };
+
+ // HomeFactory and HomeFinder are tied to Operation in
+ // the front end. Since we want to treat them differently
+ // than regular operations in a home (we don't want to
+ // generate anything for base class factory operations,
+ // example), we use this class for regular home operations
+ // that overrides HomeFactory and HomeFinder traversals
+ // to do nothing.
+ struct HomeOperationEmitter : OperationEmitter<SemanticGraph::Home>,
+ Traversal::HomeFactory,
+ Traversal::HomeFinder
+ {
+ HomeOperationEmitter (Context& c, SemanticGraph::Home& home)
+ : OperationEmitter<SemanticGraph::Home> (c, home)
+ {}
+
+ // Overriden to do nothing since we don't want to generate
+ // component swapping related code for facet operations.
+ virtual void
+ gen_swap_related (SemanticGraph::Operation&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::HomeFactory&)
+ {
+ }
+
+ virtual void
+ traverse (SemanticGraph::HomeFinder&)
+ {
+ }
+ };
+
+ struct FactoryOperationEmitter : Traversal::HomeFactory,
+ Traversal::Home,
+ EmitterBase
+ {
+ FactoryOperationEmitter (Context& c, SemanticGraph::Home& home)
+ : EmitterBase (c),
+ return_type_name_emitter_ (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ type_name_emitter_ (c),
+ scope_ (home)
+ {
+ returns_.node_traverser (return_type_name_emitter_);
+ enclosing_manages_.node_traverser (enclosing_type_name_emitter_);
+ simple_manages_.node_traverser (simple_type_name_emitter_);
+ manages_.node_traverser (type_name_emitter_);
+ }
+
+ virtual void
+ returns (SemanticGraph::HomeFactory& hf)
+ {
+ Traversal::HomeFactory::returns (hf, returns_);
+
+ os << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFactory& hf)
+ {
+ os << scope_.name () << "_Servant::" << hf.name ();
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFactory&)
+ {
+ os << " (" << endl
+ << ")" << endl;
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFactory&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFactory&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_none (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFactory&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFactory&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFactory& hf)
+ {
+ os << "{";
+
+ {
+ OperationExecEmitter operation_emitter (ctx);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+
+ ParameterExecEmitter<Traversal::InParameter> in_param (os);
+ ParameterExecEmitter<Traversal::InOutParameter> inout_param (os);
+ ParameterExecEmitter<Traversal::OutParameter> out_param (os);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ HomeOpExecReturnEmitter return_emitter (os);
+ returns.node_traverser (return_emitter);
+
+ operation_emitter.traverse (hf);
+ }
+
+ Traversal::Home::manages (scope_, enclosing_manages_);
+
+ os << "::CCM_";
+
+ Traversal::Home::manages (scope_, simple_manages_);
+
+ os << "_var _ciao_comp =" << endl;
+
+ Traversal::Home::manages (scope_, enclosing_manages_);
+
+ os << "::CCM_";
+
+ Traversal::Home::manages (scope_, simple_manages_);
+
+ os << "::_narrow (" << endl
+ << "_ciao_ec.in ()" << endl
+ << ");" << endl;
+
+ os << "return this->_ciao_activate_component (" << endl
+ << "_ciao_comp.in ()" << endl
+ << ");" << endl;
+
+ os << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFactory&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ ReturnTypeNameEmitter return_type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ FullTypeNameEmitter type_name_emitter_;
+ Traversal::Returns returns_;
+ Traversal::Manages enclosing_manages_;
+ Traversal::Manages simple_manages_;
+ Traversal::Manages manages_;
+ SemanticGraph::Home& scope_;
+ };
+
+ struct FinderOperationEmitter : Traversal::HomeFinder,
+ Traversal::Home,
+ EmitterBase
+ {
+ FinderOperationEmitter (Context& c, SemanticGraph::Home& home)
+ : EmitterBase (c),
+ type_name_emitter_ (c),
+ return_type_name_emitter_ (c),
+ enclosing_type_name_emitter_ (c),
+ simple_type_name_emitter_ (c),
+ scope_ (home)
+ {
+ returns_.node_traverser (return_type_name_emitter_);
+ simple_returns_.node_traverser (type_name_emitter_);
+ enclosing_manages_.node_traverser (enclosing_type_name_emitter_);
+ simple_manages_.node_traverser (simple_type_name_emitter_);
+ }
+
+ virtual void
+ returns (SemanticGraph::HomeFinder& hf)
+ {
+ Traversal::HomeFinder::returns (hf, returns_);
+
+ os << endl;
+ }
+
+ virtual void
+ name (SemanticGraph::HomeFinder& hf)
+ {
+ os << scope_.name () << "_Servant::" << hf.name ();
+ }
+
+ virtual void
+ receives_none (SemanticGraph::HomeFinder&)
+ {
+ os << " (" << endl
+ << ")" << endl;
+ }
+
+ virtual void
+ receives_pre (SemanticGraph::HomeFinder&)
+ {
+ os << " (" << endl;
+ }
+
+ virtual void
+ receives_post (SemanticGraph::HomeFinder&)
+ {
+ os << endl << ")" << endl;
+ }
+
+ virtual void
+ raises_none (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[EXCP_SNGL];
+ }
+
+ virtual void
+ raises_pre (SemanticGraph::HomeFinder&)
+ {
+ os << STRS[EXCP_START] << " "
+ << STRS[EXCP_SYS] << "," << endl;
+ }
+
+ virtual void
+ raises_post (SemanticGraph::HomeFinder&)
+ {
+ os << "))";
+ }
+
+ virtual void
+ post (SemanticGraph::HomeFinder& hf)
+ {
+ os << "{"
+ << STRS[ACE_TR] << " ( ::CORBA::NO_IMPLEMENT ()," << endl;
+
+ Traversal::HomeFinder::returns (hf, simple_returns_);
+
+ os << "::_nil ());"
+ << "}";
+ }
+
+ virtual void
+ comma (SemanticGraph::HomeFinder&)
+ {
+ os << "," << endl;
+ }
+
+ private:
+ FullTypeNameEmitter type_name_emitter_;
+ ReturnTypeNameEmitter return_type_name_emitter_;
+ EnclosingTypeNameEmitter enclosing_type_name_emitter_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ Traversal::Returns returns_;
+ Traversal::Returns simple_returns_;
+ Traversal::Manages enclosing_manages_;
+ Traversal::Manages simple_manages_;
+ SemanticGraph::Home& scope_;
+ };
+
+ public:
+ virtual void
+ pre (Type& t)
+ {
+ os << t.name () << "_Servant::"
+ << t.name () << "_Servant (" << endl
+ << t.scoped_name ().scope_name () << "::CCM_" << t.name ()
+ << "_ptr exe," << endl
+ << "const char *ins_name," << endl
+ << "::CIAO::Session_Container *c)" << endl
+ << " : ::CIAO::Home_Servant_Impl_Base (c)," << endl
+ << " ::CIAO::";
+
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ ScopedName scoped (t.scoped_name ());
+ Name stripped (scoped.begin () + 1, scoped.end ());
+
+ os << (swapping ? "Swapping_" : "") << "Home_Servant_Impl<" << endl
+ << " ::POA_" << stripped << "," << endl
+ << " " << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "," << endl
+ << " ";
+
+ Traversal::Home::manages (t, simple_manages_);
+
+ os << "_Servant" << endl
+ << " > (exe, c, ins_name";
+
+ if (swapping)
+ {
+ os << ", \"" << ctx.composition_name ();
+
+ Traversal::Home::manages (t, flat_name_manages_);
+
+ os << "\", ";
+
+ Traversal::Home::manages (t, repo_id_manages_);
+ }
+
+ os << ")" << endl
+ << "{"
+ << "}";
+
+ os << t.name () << "_Servant::~"
+ << t.name () << "_Servant (void)" << endl
+ << "{"
+ << "}";
+
+ os << "// Home operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ HomeOperationEmitter home_operation_emitter (ctx, t);
+ defines.node_traverser (home_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ home_operation_emitter.edge_traverser (receives);
+ home_operation_emitter.edge_traverser (returns);
+ home_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Home supported interface operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits home_inherits;
+ home_inherits.node_traverser (home_emitter);
+ home_emitter.edge_traverser (home_inherits);
+
+ Traversal::Supports supports_;
+ home_emitter.edge_traverser (supports_);
+
+ InterfaceEmitter interface_emitter (ctx);
+ supports_.node_traverser (interface_emitter);
+
+ Traversal::Defines defines;
+ Traversal::Inherits interface_inherits;
+ interface_emitter.edge_traverser (defines);
+ interface_emitter.edge_traverser (interface_inherits);
+
+ AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t);
+ defines.node_traverser (attribute_emitter);
+
+ OperationEmitter<SemanticGraph::Home> operation_emitter (ctx, t);
+ defines.node_traverser (operation_emitter);
+ interface_inherits.node_traverser (interface_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ operation_emitter.edge_traverser (receives);
+ operation_emitter.edge_traverser (returns);
+ operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ os << "// Home factory and finder operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ FactoryOperationEmitter factory_operation_emitter (ctx, t);
+ FinderOperationEmitter finder_operation_emitter (ctx, t);
+ defines.node_traverser (factory_operation_emitter);
+ defines.node_traverser (finder_operation_emitter);
+
+ Traversal::Receives receives;
+ Traversal::Belongs returns;
+ Traversal::Raises raises;
+ factory_operation_emitter.edge_traverser (receives);
+ factory_operation_emitter.edge_traverser (returns);
+ factory_operation_emitter.edge_traverser (raises);
+ finder_operation_emitter.edge_traverser (receives);
+ finder_operation_emitter.edge_traverser (returns);
+ finder_operation_emitter.edge_traverser (raises);
+
+ ParameterEmitter<Traversal::InParameter> in_param (ctx);
+ ParameterEmitter<Traversal::InOutParameter> inout_param (ctx);
+ ParameterEmitter<Traversal::OutParameter> out_param (ctx);
+ receives.node_traverser (in_param);
+ receives.node_traverser (inout_param);
+ receives.node_traverser (out_param);
+
+ ReturnTypeNameEmitter return_type_emitter (ctx);
+ FullTypeNameEmitter type_name_emitter (ctx);
+ returns.node_traverser (return_type_emitter);
+ raises.node_traverser (type_name_emitter);
+
+ Traversal::Belongs in_belongs, inout_belongs, out_belongs;
+ in_param.edge_traverser (in_belongs);
+ inout_param.edge_traverser (inout_belongs);
+ out_param.edge_traverser (out_belongs);
+
+ INArgTypeNameEmitter in_arg_emitter (ctx);
+ INOUTArgTypeNameEmitter inout_arg_emitter (ctx);
+ OUTArgTypeNameEmitter out_arg_emitter (ctx);
+ in_belongs.node_traverser (in_arg_emitter);
+ inout_belongs.node_traverser (inout_arg_emitter);
+ out_belongs.node_traverser (out_arg_emitter);
+
+ home_emitter.traverse (t);
+ }
+
+ // Generate operations for component attributes.
+ os << "// Home attribute operations." << endl << endl;
+
+ {
+ Traversal::Home home_emitter;
+
+ Traversal::Inherits inherits;
+ home_emitter.edge_traverser (inherits);
+ inherits.node_traverser (home_emitter);
+
+ Traversal::Defines defines;
+ home_emitter.edge_traverser (defines);
+
+ AttributeSourceEmitter<SemanticGraph::Home> attribute_emitter (ctx, t);
+ defines.node_traverser (attribute_emitter);
+
+ home_emitter.traverse (t);
+ }
+ }
+
+ virtual void
+ post (Type& t)
+ {
+ // We need to escape C++ keywords before flattening the name.
+ //
+ string name;
+ {
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ();
+ name = regex::perl_s (ostr.str (), "/::/_/");
+ }
+
+ os << "extern \"C\" " << ctx.export_macro ()
+ << " ::PortableServer::Servant"
+ << endl
+ << "create" << name << "_Servant (" << endl
+ << "::Components::HomeExecutorBase_ptr p," << endl
+ << "::CIAO::Session_Container *c," << endl
+ << "const char *ins_name" << endl
+ << ")" << endl
+ << "{"
+ << "if (p == 0)" << endl
+ << "{"
+ << "return 0;" << endl
+ << "}"
+ << t.scoped_name ().scope_name () << "::CCM_"
+ << t.name () << "_var x =" << endl
+ << t.scoped_name ().scope_name () << "::CCM_" << t.name ()
+ << "::_narrow (" << endl
+ << "p" << endl
+ << ");"
+ << endl
+ << "if (::CORBA::is_nil (x.in ()))" << endl
+ << "{"
+ << "return 0;" << endl
+ << "}"
+ << "return new" << endl;
+
+ os << t.name () << "_Servant (" << endl
+ << "x.in ()," << endl
+ << "ins_name," << endl
+ << "c);" << endl
+ << "}";
+ }
+
+ private:
+ CommandLine const& cl_;
+ SimpleTypeNameEmitter simple_type_name_emitter_;
+ RepoIdEmitter repo_id_emitter_;
+ FlatNameEmitter flat_name_emitter_;
+ Traversal::Manages simple_manages_;
+ Traversal::Manages repo_id_manages_;
+ Traversal::Manages flat_name_manages_;
+ };
+}
+
+ServantSourceEmitter::ServantSourceEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ string export_macro,
+ fs::path const& file)
+ : os (os_),
+ cl_ (cl),
+ export_macro_ (export_macro),
+ file_ (file)
+{}
+
+void
+ServantSourceEmitter::generate (TranslationUnit& u)
+{
+ pre (u);
+
+ Context c (os, export_macro_, cl_);
+
+ /// CIAO has facet classes outside the context and servant classes.
+ /// We launch it here to generate the classes inside namespaces
+ /// constructed to be unique for each interface type used in a facet.
+ generate_facets (u, c);
+
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ ModuleEmitter module (c);
+ CompositionEmitter composition (c);
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+ composition.edge_traverser (composition_defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ module.edge_traverser (defines);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ //--
+ ContextEmitter context_emitter (c);
+ ServantEmitter servant_emitter (c);
+ HomeEmitter home_emitter (c, cl_);
+ implements.node_traverser (context_emitter);
+ implements.node_traverser (servant_emitter);
+ implements.node_traverser (home_emitter);
+
+ unit.traverse (u);
+}
+
+void
+ServantSourceEmitter::pre (TranslationUnit&)
+{
+ os << COPYRIGHT;
+
+ string file_name ("");
+
+ if (! file_.empty ())
+ {
+ file_name = file_.leaf ();
+ }
+
+ string file_suffix = cl_.get_value ("svnt-hdr-file-suffix",
+ "_svnt.h");
+
+ file_name = regex::perl_s (file_name,
+ "/^(.+?)(\\.(idl|cidl|cdl))?$/$1"
+ + file_suffix
+ + "/");
+
+ string swap_option = cl_.get_value ("custom-container", "");
+ bool swapping = (swap_option == "upgradeable");
+
+ os << "#include \"" << file_name << "\"" << endl
+ << "#include \"Cookies.h\"" << endl
+ << "#include \"ciao/Servant_Activator.h\"" << endl
+ << (swapping ? "#include \"ciao/Dynamic_Component_Activator.h\"\n" : "")
+ << "#include \"ciao/Port_Activator_T.h\"" << endl
+ << "#include \"ace/SString.h\"" << endl << endl;
+}
+
+void
+ServantSourceEmitter::generate_facets (TranslationUnit& u, Context& c)
+{
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ Traversal::Module module;
+ Traversal::Composition composition;
+ defines.node_traverser (module);
+ defines.node_traverser (composition);
+
+ // Layer 4
+ //
+ Traversal::Defines composition_defines;
+ composition.edge_traverser (composition_defines);
+
+ //--
+ Traversal::ComponentExecutor component_executor;
+ Traversal::HomeExecutor home_executor;
+ composition_defines.node_traverser (component_executor);
+ composition_defines.node_traverser (home_executor);
+
+ module.edge_traverser (defines);
+
+ // Layer 5
+ //
+ Traversal::Implements implements;
+ component_executor.edge_traverser (implements);
+ home_executor.edge_traverser (implements);
+
+ // Layer 6
+ //
+ Traversal::Component component_emitter;
+ implements.node_traverser (component_emitter);
+
+ Traversal::Inherits component_inherits;
+ component_inherits.node_traverser (component_emitter);
+
+ Traversal::Defines component_defines;
+ component_emitter.edge_traverser (component_defines);
+ component_emitter.edge_traverser (component_inherits);
+
+ // Layer 7
+ //
+ Traversal::Provider provider;
+ component_defines.node_traverser (provider);
+
+ Traversal::Belongs belongs;
+ provider.edge_traverser (belongs);
+
+ FacetEmitter facet_emitter (c);
+ belongs.node_traverser (facet_emitter);
+
+ unit.traverse (u);
+}
diff --git a/modules/CIAO/CIDLC/ServantSourceGenerator.hpp b/modules/CIAO/CIDLC/ServantSourceGenerator.hpp
new file mode 100644
index 00000000000..c5a15fd062c
--- /dev/null
+++ b/modules/CIAO/CIDLC/ServantSourceGenerator.hpp
@@ -0,0 +1,53 @@
+// file : CIDLC/ServantSourceGenerator.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef SERVANT_SOURCE_GENERATOR_HPP
+#define SERVANT_SOURCE_GENERATOR_HPP
+
+#include <string>
+#include <iosfwd>
+
+#include "EmitterContext.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+class ServantSourceEmitter
+{
+public:
+ ServantSourceEmitter (std::ostream& os_,
+ CommandLine const& cl,
+ std::string export_macro,
+ fs::path const& file);
+
+ virtual ~ServantSourceEmitter () {}
+
+ virtual void
+ generate (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+private:
+ virtual void
+ pre (CCF::CIDL::SemanticGraph::TranslationUnit& u);
+
+ virtual void
+ generate_facets (CCF::CIDL::SemanticGraph::TranslationUnit& u,
+ Context& c);
+
+private:
+ std::ostream& os;
+ CommandLine const& cl_;
+ std::string export_macro_;
+ fs::path file_;
+};
+
+#endif // SERVANT_SOURCE_GENERATOR_HPP
+
+/*
+ * Local Variables:
+ * mode: C++
+ * c-basic-offset: 2
+ * End:
+ */
diff --git a/modules/CIAO/CIDLC/SizeTypeCalculator.cpp b/modules/CIAO/CIDLC/SizeTypeCalculator.cpp
new file mode 100644
index 00000000000..b8f44e879ed
--- /dev/null
+++ b/modules/CIAO/CIDLC/SizeTypeCalculator.cpp
@@ -0,0 +1,217 @@
+// file : CIDLC/SizeTypeCalculator.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "SizeTypeCalculator.hpp"
+#include "Literals.hpp"
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+
+#include <stack>
+
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+using namespace StringLiterals;
+
+namespace
+{
+ class Calculator : public Traversal::String,
+ public Traversal::Struct,
+ public Traversal::Union,
+ public Traversal::Wstring,
+ public Traversal::UnboundedSequence,
+ public Traversal::Interface,
+ public Traversal::ValueType
+ {
+ public:
+ Calculator ()
+ {
+ push (false);
+ }
+
+ public:
+ virtual void
+ traverse (SemanticGraph::String&)
+ {
+ top () = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Wstring&)
+ {
+ top () = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::UnboundedSequence&)
+ {
+ top () = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::Interface&)
+ {
+ top () = true;
+ }
+
+ virtual void
+ traverse (SemanticGraph::ValueType&)
+ {
+ top () = true;
+ }
+
+ virtual void
+ pre (SemanticGraph::Struct&)
+ {
+ push (false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Struct& s)
+ {
+ std::string n (s.scoped_name ().str ());
+ if (s.context ().count (STRS[VAR_SIZE]))
+ {
+ // Never set 'top' to false (except in pre() above),
+ // so a 'true' value will propagate up the scopes.
+ bool r = s.context ().get<bool> (STRS[VAR_SIZE]);
+ if (r) top () = r;
+ }
+ else
+ {
+ Traversal::Struct::traverse (s);
+ }
+ }
+
+ virtual void
+ post (SemanticGraph::Struct& s)
+ {
+ // Set our context to the result of nested scope traversal.
+ s.context ().set (STRS[VAR_SIZE], top ());
+ }
+
+ virtual void
+ pre (SemanticGraph::Union&)
+ {
+ push (false);
+ }
+
+ virtual void
+ traverse (SemanticGraph::Union& u)
+ {
+ if (u.context ().count (STRS[VAR_SIZE]))
+ {
+ // Never set 'top' to false (except in pre() above),
+ // so a 'true' value will propagate up the scopes.
+ bool r = u.context ().get<bool> (STRS[VAR_SIZE]);
+ if (r) top () = r;
+ }
+ else
+ {
+ Traversal::Union::traverse (u);
+ }
+ }
+
+ virtual void
+ post (SemanticGraph::Union& u)
+ {
+ // Set our context to the result of nested scope traversal.
+ u.context ().set (STRS[VAR_SIZE], top ());
+ }
+
+ private:
+ void
+ push (bool v)
+ {
+ stack_.push (v);
+ }
+
+ bool&
+ top ()
+ {
+ return stack_.top ();
+ }
+
+ void
+ pop ()
+ {
+ stack_.pop ();
+ }
+
+ private:
+ std::stack<bool> stack_;
+ };
+}
+
+
+void SizeTypeCalculator::
+calculate (SemanticGraph::TranslationUnit& u)
+{
+ Traversal::TranslationUnit unit;
+
+ // Layer 1
+ //
+ Traversal::ContainsPrincipal contains_principal;
+ unit.edge_traverser (contains_principal);
+
+ //--
+ Traversal::TranslationRegion region;
+ contains_principal.node_traverser (region);
+
+ // Layer 2
+ //
+ Traversal::ContainsRoot contains_root;
+ Traversal::Includes includes;
+
+ region.edge_traverser (includes);
+ region.edge_traverser (contains_root);
+
+ //--
+ Traversal::Root root;
+ includes.node_traverser (region);
+ contains_root.node_traverser (root);
+
+ // Layer 3
+ //
+ Traversal::Defines defines;
+ root.edge_traverser (defines);
+
+ //--
+ // Everything that can contain a struct or union.
+ Traversal::Module module;
+ Traversal::UnconstrainedInterface uinterface;
+ Traversal::ValueType vtype;
+ Traversal::Home component_home;
+
+ Calculator calculator;
+
+ defines.node_traverser (module);
+ defines.node_traverser (uinterface);
+ defines.node_traverser (vtype);
+ defines.node_traverser (component_home);
+ defines.node_traverser (calculator);
+
+ // Layer 4
+ //
+ Traversal::Defines struct_defines;
+ module.edge_traverser (defines);
+ uinterface.edge_traverser (defines);
+ vtype.edge_traverser (defines);
+ component_home.edge_traverser (defines);
+ calculator.edge_traverser (struct_defines);
+
+ //--
+ Traversal::Member member;
+ struct_defines.node_traverser (member);
+
+ // Layer 5
+ //
+ Traversal::Belongs belongs;
+ member.edge_traverser (belongs);
+
+ //--
+ belongs.node_traverser (calculator);
+
+ unit.traverse (u);
+}
diff --git a/modules/CIAO/CIDLC/SizeTypeCalculator.hpp b/modules/CIAO/CIDLC/SizeTypeCalculator.hpp
new file mode 100644
index 00000000000..ea765e29cdc
--- /dev/null
+++ b/modules/CIAO/CIDLC/SizeTypeCalculator.hpp
@@ -0,0 +1,21 @@
+// file : CIDLC/SizeTypeCalculator.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef CIDLC_SIZE_TYPE_CALCULATOR_HPP
+#define CIDLC_SIZE_TYPE_CALCULATOR_HPP
+
+
+//@@ Don't really need this. just forward declaration of
+// TranslationUnit would be enough.
+//
+#include "CCF/CIDL/SemanticGraph.hpp"
+
+class SizeTypeCalculator
+{
+public:
+ void
+ calculate (CCF::CIDL::SemanticGraph::TranslationUnit&);
+};
+
+#endif // CIDLC_SIZE_TYPE_CALCULATOR_HPP
diff --git a/modules/CIAO/CIDLC/UnescapedNamePrinter.hpp b/modules/CIAO/CIDLC/UnescapedNamePrinter.hpp
new file mode 100644
index 00000000000..0b4d31628a4
--- /dev/null
+++ b/modules/CIAO/CIDLC/UnescapedNamePrinter.hpp
@@ -0,0 +1,23 @@
+// file : CIDLC/UnescapedNamePrinter.hpp
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// cvs-id : $Id: Collectors.hpp 55138 2004-01-05 07:53:05Z parsons $
+
+#ifndef UNESCAPED_NAME_PRINTER_HPP
+#define UNESCAPED_NAME_PRINTER_HPP
+
+#include "CCF/IDL2/SemanticGraph/Name.hpp"
+
+#include <ostream>
+
+// Prints names in the unescaped form.
+//
+struct UnescapedNamePrinter: CCF::IDL2::SemanticGraph::NamePrinter
+{
+ virtual void
+ print (std::ostream& os, CCF::IDL2::SemanticGraph::SimpleName const& n)
+ {
+ os << n.unescaped_str ();
+ }
+};
+
+#endif // UNESCAPED_NAME_PRINTER_HPP
diff --git a/modules/CIAO/CIDLC/Upcase.hpp b/modules/CIAO/CIDLC/Upcase.hpp
new file mode 100644
index 00000000000..cf114dd8392
--- /dev/null
+++ b/modules/CIAO/CIDLC/Upcase.hpp
@@ -0,0 +1,21 @@
+// file : CIDLC/Upcase.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef UPCASE_HPP
+#define UPCASE_HPP
+
+#include <cctype>
+
+namespace
+{
+ // On some platforms toupper can be something other than a
+ // function.
+ int
+ upcase (int c)
+ {
+ return std::toupper (c);
+ }
+}
+
+#endif // UPCASE_HPP
diff --git a/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp
new file mode 100644
index 00000000000..44864e4b05e
--- /dev/null
+++ b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.cpp
@@ -0,0 +1,78 @@
+// file : CIDLC/UtilityTypeNameEmitters.cpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#include "UtilityTypeNameEmitters.hpp"
+#include "CCF/CodeGenerationKit/Regex.hpp"
+
+#include <sstream>
+
+FullTypeNameEmitter::FullTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+FullTypeNameEmitter::traverse (SemanticGraph::Type& t)
+{
+ os << t.scoped_name ();
+}
+
+// ===================================================
+
+SimpleTypeNameEmitter::SimpleTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+SimpleTypeNameEmitter::traverse (SemanticGraph::Type& t)
+{
+ os << t.name ();
+}
+
+// ===================================================
+
+EnclosingTypeNameEmitter::EnclosingTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+EnclosingTypeNameEmitter::traverse (SemanticGraph::Type& t)
+{
+ os << t.scoped_name ().scope_name ();
+}
+
+// ===================================================
+
+StrippedTypeNameEmitter::StrippedTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+StrippedTypeNameEmitter::traverse (SemanticGraph::Type& t)
+{
+ ScopedName scoped (t.scoped_name ());
+ os << Name (scoped.begin () + 1, scoped.end ());
+}
+
+// ===================================================
+
+FacetEnclosingTypeNameEmitter::FacetEnclosingTypeNameEmitter (Context& c)
+ : EmitterBase (c)
+{
+}
+
+void
+FacetEnclosingTypeNameEmitter::traverse (SemanticGraph::Type& t)
+{
+ // We need to escape C++ keywords before flattening the name.
+ //
+ std::ostringstream ostr;
+ ostr.pword (name_printer_index) = os.pword (name_printer_index);
+ ostr << t.scoped_name ().scope_name ();
+ os << regex::perl_s (ostr.str (), "/::/_/");
+}
+
diff --git a/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp
new file mode 100644
index 00000000000..94c499e1a9d
--- /dev/null
+++ b/modules/CIAO/CIDLC/UtilityTypeNameEmitters.hpp
@@ -0,0 +1,66 @@
+// file : CIDLC/UtilityTypeNameEmitters.hpp
+// author : Jeff Parsons <j.parsons@vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef UTILITYTYPENAMEEMITTERS_HPP
+#define UTILITYTYPENAMEEMITTERS_HPP
+
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/Traversal.hpp"
+#include "EmitterBase.hpp"
+
+using namespace std;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+// Emits type's full scoped name.
+struct FullTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ FullTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits type's local name.
+struct SimpleTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ SimpleTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits name of type's enclosing scope.
+struct EnclosingTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ EnclosingTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits scoped name minus the leading double colon.
+struct StrippedTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ StrippedTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+// Emits scoped name in flat form for use with a prefix.
+struct FacetEnclosingTypeNameEmitter : Traversal::Type,
+ EmitterBase
+{
+ FacetEnclosingTypeNameEmitter (Context&);
+
+ virtual void
+ traverse (SemanticGraph::Type&);
+};
+
+#endif // UTILITYTYPENAMEEMITTERS_HPP
diff --git a/modules/CIAO/CIDLC/Version b/modules/CIAO/CIDLC/Version
new file mode 100644
index 00000000000..1750564f270
--- /dev/null
+++ b/modules/CIAO/CIDLC/Version
@@ -0,0 +1 @@
+0.0.6
diff --git a/modules/CIAO/CIDLC/cidlc.cpp b/modules/CIAO/CIDLC/cidlc.cpp
new file mode 100644
index 00000000000..b0ca7e2b178
--- /dev/null
+++ b/modules/CIAO/CIDLC/cidlc.cpp
@@ -0,0 +1,386 @@
+// file : CIDLC/cidlc.cpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#include <vector>
+#include <iostream>
+
+#include "CCF/CompilerElements/Context.hpp"
+#include "CCF/CompilerElements/FileSystem.hpp"
+#include "CCF/CompilerElements/Diagnostic.hpp"
+#include "CCF/CompilerElements/TokenStream.hpp"
+#include "CCF/CompilerElements/Preprocessor.hpp"
+
+#include "CCF/CodeGenerationKit/CommandLine.hpp"
+#include "CCF/CodeGenerationKit/CommandLineParser.hpp"
+#include "CCF/CodeGenerationKit/CommandLineDescriptor.hpp"
+
+#include "CCF/CIDL/LexicalAnalyzer.hpp"
+#include "CCF/CIDL/Parser.hpp"
+#include "CCF/CIDL/SemanticGraph.hpp"
+#include "CCF/CIDL/SemanticAction/Impl/Factory.hpp"
+
+#include "ExecutorMappingGenerator.hpp"
+#include "ServantGenerator.hpp"
+#include "ExecImplGenerator.hpp"
+#include "RepositoryIdGenerator.hpp"
+#include "DescriptorGenerator.hpp"
+#include "SizeTypeCalculator.hpp"
+
+#include "ciao/Version.h" // for --version
+
+using std::cerr;
+using std::endl;
+
+class ErrorDetector : public std::streambuf
+{
+public:
+ ErrorDetector (std::ostream& os)
+ : error_ (false),
+ os_ (os),
+ prev_ (*os_.rdbuf ())
+ {
+ os_.rdbuf (this);
+ }
+
+ ~ErrorDetector ()
+ {
+ os_.rdbuf (&prev_);
+ }
+
+ virtual int_type
+ overflow (int_type c)
+ {
+ error_ = true;
+ return prev_.sputc (c);
+ }
+
+ virtual int
+ sync ()
+ {
+ return prev_.pubsync ();
+ }
+
+ bool
+ error () const throw ()
+ {
+ return error_;
+ }
+
+private:
+ bool error_;
+ std::ostream& os_;
+ std::streambuf& prev_;
+};
+
+using namespace CCF::CompilerElements;
+using namespace CCF::CIDL;
+using namespace CCF::CIDL::SemanticGraph;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ // Parsing command line options and arguments.
+ //
+
+ CL::Description cld (argv[0]);
+
+ cld.add_option (CL::OptionDescription (
+ "version",
+ "Display version information and exit.",
+ CL::OptionType::flag));
+
+ cld.add_option (CL::OptionDescription (
+ "help",
+ "Display usage information and exit.",
+ CL::OptionType::flag));
+
+ cld.add_option (CL::OptionDescription (
+ "help-html",
+ "Dump usage information in html format and exit.",
+ CL::OptionType::flag));
+
+ cld.add_option (CL::OptionDescription (
+ "I",
+ "dir",
+ "Add the directory dir to the list of directories to "
+ "be searched for header files.",
+ CL::OptionType::value));
+
+ cld.add_option (CL::OptionDescription (
+ "D",
+ "name[=definition]",
+ "Predefine name as a macro with the value definition "
+ "if present, 1 otherwise.",
+ CL::OptionType::value));
+
+ cld.add_option (CL::OptionDescription (
+ "gen-exec-impl",
+ "Generate the executor implementation classes.",
+ CL::OptionType::flag));
+
+ ExecutorMappingGenerator::options (cld);
+ ServantGenerator::options (cld);
+ DescriptorGenerator::options (cld);
+ ExecImplGenerator::options (cld);
+
+ cld.add_option (CL::OptionDescription (
+ "trace-semantic-actions",
+ "Turn on semantic actions tracing facility.",
+ CL::OptionType::flag));
+
+ cld.add_option (CL::OptionDescription (
+ "preprocess-only",
+ "Run preprocessor only and output result to stdout.",
+ CL::OptionType::flag));
+
+ cld.add_argument ("cidl file");
+
+
+ CommandLine cl;
+
+ if (!parse (argc, argv, cld, cl))
+ {
+ cerr << "try " << argv[0] << " --help for usage information" << endl;
+ return -1;
+ }
+
+ if (cl.get_value ("version", false))
+ {
+ cerr << "CIAO CIDL Compiler " << CIAO_VERSION
+ << " (built on " << __DATE__ << " at " << __TIME__ << ")" << endl;
+ return 0;
+ }
+
+ if (cl.get_value ("help", false))
+ {
+ CL::print_text (cerr, cld);
+ return 0;
+ }
+
+ if (cl.get_value ("help-html", false))
+ {
+ CL::print_html (cerr, cld);
+ return 0;
+ }
+
+
+ fs::ifstream ifs;
+ ifs.exceptions (std::ios_base::badbit | std::ios_base::failbit);
+
+ fs::path file_path;
+
+ CommandLine::ArgumentsIterator i = cl.arguments_begin ();
+
+ if (i != cl.arguments_end ())
+ {
+ try
+ {
+ file_path = fs::path (*i, fs::native);
+ ifs.open (file_path, std::ios_base::in);
+ }
+ catch (fs::filesystem_error const&)
+ {
+ cerr << *i << ": error: unable to open in read mode" << endl;
+ return -1;
+ }
+ catch (std::ios_base::failure const&)
+ {
+ cerr << *i << ": error: unable to open in read mode" << endl;
+ return -1;
+ }
+ }
+
+ //@@ for some reason ifs throws exception if I don't reset it to
+ // original state. It probably has something to do with call to
+ // get after eof.
+ ifs.exceptions (std::ios_base::iostate (0));
+
+ std::istream& is = ifs.is_open ()
+ ? static_cast<std::istream&> (ifs)
+ : static_cast<std::istream&> (std::cin);
+
+ InputStreamAdapter isa (is);
+
+
+ // Extract preprocessor symbol definitions (-D). We are not
+ // interested in the values, just symbols.
+ //
+ CPP::Symbols symbols;
+
+ for (CommandLine::OptionsIterator
+ i (cl.options_begin ()), e (cl.options_end ()); i != e; ++i)
+ {
+ if (i->name () == "D")
+ {
+ std::string def (i->value ());
+
+ // Get rid of '=value' in 'symbol=value' definitions.
+ //
+ std::size_t p (def.find ('='));
+ if (p != std::string::npos)
+ symbols.insert (std::string (def, 0, p));
+ else
+ symbols.insert (def);
+ }
+ }
+
+ CPP::Preprocessor pp (isa, symbols);
+
+ if (cl.get_value ("preprocess-only", false))
+ {
+ while (true)
+ {
+ CPP::Token t (pp.next ());
+
+ if (t == CPP::Token::eos) break;
+
+ std::cout << t;
+ }
+
+ return 0;
+ }
+
+ Diagnostic::Stream dout;
+ ErrorDetector detector (cerr);
+
+ LexicalAnalyzer lexer (pp);
+
+ TokenList token_stream;
+
+ //@@ bad token comparison
+ for (TokenPtr token = lexer.next ();; token = lexer.next ())
+ {
+ // cerr << typeid(*(token.in ())).name () << " : " << token << endl;
+ token_stream.push_back (token);
+ if (ReferenceCounting::strict_cast<EndOfStream> (token) != 0) break;
+ }
+
+ if (token_stream.size () < 2)
+ {
+ cerr << "no tokens produced so nothing to parse" << endl;
+ return 0;
+ }
+
+ TranslationUnit tu (file_path, 0);
+
+ // Initialize compilation context.
+ //
+ CCF::CompilerElements::Context context;
+ context.set ("file-path", file_path);
+ context.set ("trace-semantic-action",
+ cl.get_value ("trace-semantic-actions", false));
+ context.set ("cpp-symbols", symbols);
+
+
+ // Extract include search paths.
+ //
+
+ std::vector<fs::path> include_paths;
+
+ for (CommandLine::OptionsIterator
+ i (cl.options_begin ()), e (cl.options_end ()); i != e; ++i)
+ {
+ std::string path;
+
+ if (i->name () == "I")
+ {
+ path = i->value ();
+
+ try
+ {
+ include_paths.push_back (fs::path (path, fs::native));
+ }
+ catch (fs::filesystem_error const&)
+ {
+ cerr << "error: invalid filesystem path '" << path << "' "
+ << "provided with the -I option" << endl;
+
+ return 1;
+ }
+ }
+ }
+
+ context.set ("include-search-paths", include_paths);
+
+ // Instantiate semantic actions factory.
+ //
+ SemanticAction::Impl::Factory actions (context, dout, tu);
+
+ Parser parser (context, dout, lexer, actions);
+
+ //@@ should be able to use CIDL here. Or better yet get rid of this
+ // function completely.
+ //
+ CCF::IDL2::Parsing::parse (token_stream.begin (),
+ token_stream.end (),
+ parser.start ());
+
+ if (dout.error_count () != 0) return 1;
+
+ // This is a little hack to make CIDL compiler signal
+ // error conditions by return value. Once I redesign
+ // diagnostic in CCF this should be removed.
+
+ if (detector.error ()) return 1;
+
+
+ // Generate executor mapping.
+ {
+ ExecutorMappingGenerator lem_gen;
+ lem_gen.generate (cl, tu, file_path);
+ }
+
+ // Calculate the size type of everything in the AST.
+ // This must be executed before the servant code generator.
+ {
+ SizeTypeCalculator sizetype_calc;
+ sizetype_calc.calculate (tu);
+ }
+
+ // Compute repository IDs in a separate pass.
+ {
+ RepositoryIdGenerator repid_gen;
+ if (!repid_gen.generate (tu)) return 1;
+ }
+
+ // Generate servant code.
+ {
+ ServantGenerator svnt_gen (cl);
+ svnt_gen.generate (tu, file_path);
+ }
+
+ // Generate executor implementation code.
+ if (cl.get_value ("gen-exec-impl", false))
+ {
+ ExecImplGenerator impl_gen (cl);
+ impl_gen.generate (tu, file_path);
+ }
+
+ // Generate descriptor code.
+ {
+ DescriptorGenerator desc_gen;
+ desc_gen.generate (cl, tu);
+ }
+
+ return 0;
+ }
+ catch (std::bad_cast const&)
+ {
+ cerr << "bad cast exception" << endl;
+ }
+ catch (InvalidName const&)
+ {
+ cerr << "invalid name exception" << endl;
+ }
+ /*
+ catch (...)
+ {
+ cerr << "caught unknown exception" << endl;
+ }
+ */
+
+ return 1;
+}
diff --git a/modules/CIAO/COPYING b/modules/CIAO/COPYING
new file mode 100644
index 00000000000..1645f46c517
--- /dev/null
+++ b/modules/CIAO/COPYING
@@ -0,0 +1,123 @@
+
+ _________________________________________________________________
+
+ Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), and
+ CoSMIC(TM)
+
+ [1]ACE(TM), [2]TAO(TM), [3]CIAO(TM), and [4]CoSMIC(TM) (henceforth
+ referred to as "DOC software") are copyrighted by [5]Douglas C.
+ Schmidt and his [6]research group at [7]Washington University,
+ [8]University of California, Irvine, and [9]Vanderbilt University,
+ Copyright (c) 1993-2006, all rights reserved. Since DOC software is
+ open-source, freely available software, you are free to use, modify,
+ copy, and distribute--perpetually and irrevocably--the DOC software
+ source code and object code produced from the source, as well as copy
+ and distribute modified versions of this software. You must, however,
+ include this copyright statement along with code built using DOC
+ software.
+
+ You can use DOC software in commercial and/or binary software releases
+ and are under no obligation to redistribute any of your source code
+ that is built using DOC software. Note, however, that you may not do
+ anything to the DOC software code, such as copyrighting it yourself or
+ claiming authorship of the DOC software code, that will prevent DOC
+ software from being distributed freely using an open-source
+ development model. You needn't inform anyone that you're using DOC
+ software in your software, though we encourage you to let [10]us know
+ so we can promote your project in the [11]DOC software success
+ stories.
+
+ The [12]ACE, [13]TAO, [14]CIAO, and [15]CoSMIC web sites are
+ maintained by the [16]DOC Group at the [17]Institute for Software
+ Integrated Systems (ISIS) and the [18]Center for Distributed Object
+ Computing of Washington University, St. Louis for the development of
+ open-source software as part of the open-source software community. By
+ submitting comments, suggestions, code, code snippets, techniques
+ (including that of usage) and algorithms (collectively
+ ``Submissions''), submitters acknowledge that they have the right to
+ do so, that any such Submissions are given freely and unreservedly,
+ and that they waive any claims to copyright or ownership. In addition,
+ submitters acknowledge that any such Submission might become part of
+ the copyright maintained on the overall body of code that comprises
+ the DOC software. By making a Submission, submitter agree to these
+ terms. Moreover, submitters acknowledge that the incorporation or
+ modification of such Submissions is entirely at the discretion of the
+ moderators of the open-source DOC software projects or their
+ designees.
+
+ Submissions are provided by the submitter ``as is'' with no warranties
+ whatsoever, including any warranty of merchantability, noninfringement
+ of third party intellectual property, or fitness for any particular
+ purpose. In no event shall the submitter be liable for any direct,
+ indirect, special, exemplary, punitive, or consequential damages,
+ including without limitation, lost profits, even if advised of the
+ possibility of such damages. Likewise, DOC software is provided as is
+ with no warranties of any kind, including the warranties of design,
+ merchantability, and fitness for a particular purpose,
+ noninfringement, or arising from a course of dealing, usage or trade
+ practice. Washington University, UC Irvine, Vanderbilt University,
+ their employees, and students shall have no liability with respect to
+ the infringement of copyrights, trade secrets or any patents by DOC
+ software or any part thereof. Moreover, in no event will Washington
+ University, UC Irvine, or Vanderbilt University, their employees, or
+ students be liable for any lost revenue or profits or other special,
+ indirect and consequential damages.
+
+ DOC software is provided with no support and without any obligation on
+ the part of Washington University, UC Irvine, Vanderbilt University,
+ their employees, or students to assist in its use, correction,
+ modification, or enhancement. A [19]number of companies around the
+ world provide commercial support for DOC software, however.
+
+ DOC software is Y2K-compliant, as long as the underlying OS platform
+ is Y2K-compliant. Likewise, DOC software is compliant with the new US
+ daylight savings rule passed by Congress as "The Energy Policy Act of
+ 2005," which established new daylight savings times (DST) rules for
+ the United States that expand DST as of March 2007. Since DOC software
+ obtains time/date and calendaring information from operating systems
+ users will not be affected by the new DST rules as long as they
+ upgrade their operating systems accordingly.
+
+ The names ACE(TM), TAO(TM), CIAO(TM), CoSMIC(TM), Washington
+ University, UC Irvine, and Vanderbilt University, may not be used to
+ endorse or promote products or services derived from this source
+ without express written permission from Washington University, UC
+ Irvine, or Vanderbilt University. Further, products or services
+ derived from this source may not be called ACE(TM), TAO(TM), CIAO(TM),
+ or CoSMIC(TM) nor may the name Washington University, UC Irvine, or
+ Vanderbilt University appear in their names, without express written
+ permission from Washington University, UC Irvine, and Vanderbilt
+ University.
+
+ If you have any suggestions, additions, comments, or questions, please
+ let [20]me know.
+
+ [21]Douglas C. Schmidt
+ _________________________________________________________________
+
+ Back to the [22]ACE home page.
+
+References
+
+ 1. http://www.cs.wustl.edu/~schmidt/ACE.html
+ 2. http://www.cs.wustl.edu/~schmidt/TAO.html
+ 3. http://www.dre.vanderbilt.edu/CIAO/
+ 4. http://www.dre.vanderbilt.edu/cosmic/
+ 5. http://www.dre.vanderbilt.edu/~schmidt/
+ 6. http://www.cs.wustl.edu/~schmidt/ACE-members.html
+ 7. http://www.wustl.edu/
+ 8. http://www.uci.edu/
+ 9. http://www.vanderbilt.edu/
+ 10. mailto:doc_group@cs.wustl.edu
+ 11. http://www.cs.wustl.edu/~schmidt/ACE-users.html
+ 12. http://www.cs.wustl.edu/~schmidt/ACE.html
+ 13. http://www.cs.wustl.edu/~schmidt/TAO.html
+ 14. http://www.dre.vanderbilt.edu/CIAO/
+ 15. http://www.dre.vanderbilt.edu/cosmic/
+ 16. http://www.dre.vanderbilt.edu/
+ 17. http://www.isis.vanderbilt.edu/
+ 18. http://www.cs.wustl.edu/~schmidt/doc-center.html
+ 19. http://www.cs.wustl.edu/~schmidt/commercial-support.html
+ 20. mailto:d.schmidt@vanderbilt.edu
+ 21. http://www.dre.vanderbilt.edu/~schmidt/
+ 22. http://www.cs.wustl.edu/~schmidt/ACE.html
diff --git a/modules/CIAO/ChangeLog b/modules/CIAO/ChangeLog
new file mode 100644
index 00000000000..bc8c6f18277
--- /dev/null
+++ b/modules/CIAO/ChangeLog
@@ -0,0 +1,42 @@
+Mon Jan 29 19:23:14 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Swapping_Servant_Home_Impl_Base.{h,cpp}:
+ * ciao/Upgradeable_Context_Impl_T.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ Layout changes
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ Fixed parsing of node manager file
+
+ * examples/BasicSP/descriptors/run_test.pl:
+ New script to run this example automatically
+
+ * exampls/BasicSP/README.html:
+ Fixed incorrect path and mpc generation command
+
+Sun Jan 28 19:59:14 2007 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO version 0.5.6 released.
+
+Thu Jan 25 18:18:58 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
+
+ * *.{h,cpp,inl}:
+
+ Removed the majority of the ACE exception macros. The
+ ACE_THROW_RETURN's were left in to avoid warnings from aCC.
+
+Wed Jan 24 13:00:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * *.{h,cpp,inl}:
+ Removed part of the environment macros
+
+Mon Jan 22 23:14:56 2007 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO version 0.5.5 released.
+
+
+Local Variables:
+mode: change-log
+add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time))
+indent-tabs-mode: nil
+End:
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-04a b/modules/CIAO/ChangeLogs/ChangeLog-04a
new file mode 100644
index 00000000000..e344fe85bee
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-04a
@@ -0,0 +1,5390 @@
+Fri Jul 30 18:29:54 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * ciao/Servant_Impl_T.cpp (get_all_facets, get_all_consumers):
+
+ Fixed another instance of incorrect emulated exception
+ parameters. The method definitions incorrectly used a default
+ valued parameters.
+
+ Fixed unused parameter warnings.
+
+Fri Jul 30 17:29:18 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * NEWS: Added CIAO 0.4.2 noteworthy items.
+
+Thu Jul 29 16:54:01 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_T.cpp (get_all_facets):
+ (get_all_consumers):
+
+ Fixed incorrect emulated exception parameters. The method
+ definitions incorrectly used a default valued parameters.
+
+ Fixed unused parameter warnings.
+
+Thu Jul 29 16:47:56 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl
+ (get_nodeapp_manager):
+
+ Removed emulated exception parameter. The corresponding method
+ declaration in the header doesn't have such a parameter. Fixes
+ a compile-time problem.
+
+Thu Jul 29 14:28:55 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ (createPackage, deletePackage, findPackageByName):
+
+ Fixed emulated exception macro usage. Addresses compile-time
+ problems in MSVC++ 6 builds.
+
+Tue Jul 27 14:48:10 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Removed the emulated exception parameter from the destructor
+ so the file will be compiled when the exception is turned off.
+
+Tue Jul 27 09:58:58 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ Rearranged the order of libraries to fix link errors in static
+ configurations.
+
+Mon Jul 26 11:08:14 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+ Added CIAO_DnC_Client to resolve link errors
+
+Mon Jul 26 11:06:38 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ Added ACE_INLINE for the get_nodeapp_ref method to resolve
+ linking errors in the builds with static configurations
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ changed changed nade_app_manager to node_app_manager!
+
+ * DAnCE/NodDaemon/NodeDaemon.mpc:
+ Resolved link errors
+
+Sun Jul 25 22:13:48 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Release:
+
+ Makefile with release information.
+
+Sun Jul 25 22:15:03 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ChangeLog:
+
+Sat Jul 24 20:57:03 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * docs/releasenotes/dance.html: Updated the release notes for
+ DAnCE.
+
+Fri Jul 23 23:43:01 2004 Nanbor Wang <nanbor@cse.wustl.edu>
+
+ I didn't get around to send the following to Venkita before he
+ left for vacation so I'm checking them in here.
+
+ * tests/RTCCM/Priority_Test/README:
+ * tests/RTCCM/Priority_Test/descriptors/README: Documentation for
+ running the simple Priority tests applications.
+
+Tue Jul 20 16:03:14 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * docs/releasenotes/dance.html: Updated the release notes for
+ DAnCE.
+
+Tue Jul 20 12:37:50 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * docs/releasenotes/dance.html
+
+ Added this file to describe what the current status is
+ about the DAnCE.
+
+Mon Jul 19 14:16:10 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * ciao/ServerActivator_Impl.cpp (init): Use the argument
+ spawn_delay to set the value of the delay in seconds that the
+ ServerActivator waits for the ComponentServer to come up. This
+ is needed when the ComponentServer is not able to come up before
+ the hardcoded value of 5 seconds passes by, which happens when
+ running the ComponentServer under Valgrind.
+
+Mon Jul 19 12:47:17 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Added ifr_client to Deployment_stub and Deployment_svnt. This
+ should fix VC6 build issues.
+
+Sun Jul 18 12:53:04 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp (main):
+
+ Fixed "better conversion sequence" warning by using component
+ reference ".in()" accessor.
+
+Thu Jul 15 21:52:12 2004 Johnnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ Fixed incorrect doxygen file tag
+
+Wed Jul 14 10:40:41 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ (init):
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp (preparePlan):
+
+ Fixed "control reaches end of non-void function" warning.
+
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp
+ (ExecutionManager_Impl):
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+
+ Corrected emulated exception macro usage.
+
+ Fixed "unused parameter" warning.
+
+Wed Jul 14 08:46:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+
+ Fixed the MPC files that were busted.
+
+Tue Jul 13 09:49:50 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/releasenotes/index.html: Updated release notes with
+ information on static configurator and Nanbor's examples for
+ composition of RT applications using real-time extensions in
+ CIAO.
+
+Tue Jul 13 04:27:19 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Controller/Controller.cpp:
+
+ Removed unused variable.
+
+Mon Jul 12 11:06:54 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html: Fixed a few URLs. Thanks to
+ Matthew Gillen <mgillen@bbn.com> for reporting this.
+
+Sun Jul 11 06:07:12 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/XML_Helpers/Assembly_Handlers.inl:
+ * tools/XML_Helpers/RTConfig_Handlers.inl:
+ * tools/XML_Helpers/Softpkg_Handlers.inl:
+ Fixed compile errors in Borland build, use full namespaces for the
+ baseclass
+
+Fri Jul 9 20:36:14 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+
+ Fixed a warning.
+
+Fri Jul 9 20:21:46 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Receiver/Receiver_svnt.h:
+ * performance-tests/Protocols/Receiver/Receiver_svnt.cpp:
+ * performance-tests/Protocols/Sender/Sender_svnt.h:
+ * performance-tests/Protocols/Sender/Sender_svnt.cpp:
+
+ Removed them from the repo.
+
+Thu Jul 8 17:16:34 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+
+ Made changes to not build these when exceptions=0
+
+Thu Jul 8 16:59:26 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+
+ Fix build errors.
+
+Thu Jul 8 16:53:06 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Moved the call to populate_port_tables() from the
+ component servant constructor to the end of
+ the ciao_postactivate() method in the component servant,
+ but it is commented out for now until related issues
+ in DaNCe are resolved.
+
+Thu Jul 8 16:46:55 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/ciao/NodeApp_CB_Impl.cpp:
+ * DAnCE/ciao/NodeApp_CB_Impl.h:
+
+ Fixing build errors.
+
+Thu Jul 8 16:30:48 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+
+ Made changes to fix emulated build errors.
+
+Wed Jul 7 21:52:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/releasenotes/index.html:
+
+ Revamped to provide a new look. Has updated information. The
+ notes are missing a link to dance.html which should have
+ information about DAnCE. Tao will take care of that.
+
+Wed Jul 7 15:04:37 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * examples/OEP/BasicSP/descriptors/test.rtd:
+ * examples/OEP/BasicSP/descriptors/svcmap.dat:
+ * examples/OEP/BasicSP/descriptors/RTsvc.conf:
+ * examples/OEP/BasicSP/descriptors/BasicSP-rt.cad:
+
+ Added these files to be used in RT version of BasicSP.
+
+ * examples/OEP/BasicSP/NOTE.txt:
+
+ Updated notes on how to run with RTComponentServer.
+
+Wed Jul 7 14:35:33 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_ciao_contents.html:
+ * docs/static_config_example.html:
+ * docs/static_config_rtexample.html:
+
+ Updated documentation for CIAO Static configurator.
+
+Wed Jul 7 12:22:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.cpp:
+ * DAnCE/RepositoryManager/Repository_Manager_conf.h:
+
+ Addressed Ossama Othman's code review comments.
+ Thanks Ossama.
+
+Wed Jul 7 11:42:15 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/TODO.html:
+ Some cosmetic changes.
+
+Wed Jul 7 10:42:19 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/releasenotes/switch.html:
+ * docs/releasenotes/index.html:
+
+ Updated the file to follow the directory change for DAnCE.
+ Updated the link to the TODO list.
+
+Wed Jul 7 09:53:56 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/TODO.html:
+
+ Overhauled the TODO completely keeping in mind the latest
+ thoughts and forces.
+
+ * docs/todo.html:
+
+ Removed this from th erepository.
+
+Tue Jul 6 18:05:35 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Did a massive update to this since it was woefully outdated.
+
+Tue Jul 6 14:34:16 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Comment out the "dump plan" debugging statement, coz the current
+ "DnC_dump" class is somewhat broken under VC71.
+
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+
+ Fixed warnings due to lacking including header files.
+
+ * DAnCE/ciao/CCM_Core.mpc
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+ * DAnCE/NodeApplication/NodeApplication.mpc
+
+ Fixed a bunch of linking errors under VC71.
+
+ Now everything build fine under Windows with VC71.
+
+Tue Jul 6 14:22:00 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+ * CIDLC/CIDLC.mpc:
+
+ All of them require exceptions to be available. Therefore added
+ requires += exceptions.
+
+ * CCF/CCF/CodeGenerationKit/IndentationXML.hpp:
+
+ Remove the comma at the end of the enum declaration.
+
+
+ All the above should fix compilation errors in Full_Reactors
+ builds.
+
+Tue Jul 6 10:17:06 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Removed unnecessary comments.
+
+Tue Jul 6 10:15:11 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp (CIAO):
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp (destroyManager):
+
+ Deleted some comments which has been addressed already.
+
+Mon Jul 5 08:39:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Segment_Timer/Segment_Timer.cpp:
+ * tools/static_configurator/Static_Assembly_Parser.cpp:
+
+ Fixed warnings that were caused from converting strings to
+ non-const char *.
+
+Mon Jul 5 08:36:07 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tests/temp/README:
+ * tests/temp/assembly/README:
+ * tests/temp/assembly/client.cpp:
+ * tests/temp/assembly/control.idl:
+ * tests/temp/assembly/control.mpc:
+ * tests/temp/assembly/run_test.pl:
+ * tests/temp/assembly/server.cpp:
+
+ Completely removed them. They were not supposed to be shipped or
+ built. We have better test programs for those features now.
+
+Mon Jul 5 08:27:39 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+
+ Added requires += qt
+
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc:
+ * examples/handcrafted/BasicSP_EC2/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc:
+
+ They should not be compiled inour daily builds at all. They are
+ not for that.
+
+ * tests/RTCCM/DiffServ/Controller/Controller.mpc:
+ * tests/RTCCM/DiffServ/Receiver/Receiver.mpc:
+ * tests/RTCCM/DiffServ/Sender/Sender.mpc:
+
+ Change the library names. Else they clash with other things in
+ the build system.
+
+Sun Jul 4 22:13:37 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h:
+
+ Added ciao_preactivate () and ciao_postactivate () methods.
+
+ * performance-tests/Protocols/Receiver/Receiver.mpc:
+ * performance-tests/Protocols/Sender/Sender.mpc:
+
+ Did the following
+
+ (1) Changed the name of the shared object to Protocol_*_stub and
+ Protocol_*_svnt. This was needed since there are other examples
+ that have named the libraries as Sender_stub and
+ Receiver_stub. Since all of these libraries are written to
+ $ACE_ROOT/lib, one library overwrites the other and all hell
+ breaks loose.
+
+ (2) The executor librares are not being compiled now. We have
+ used the requires += dummy to prevent them from compiling. The
+ executor code depends on a header file that hasn't been checked
+ in. I am informing the code author about this. Till the author
+ fixes the code, the executor code will not be compiled.
+
+ * performance-tests/Protocols/Controller/Controller.mpc:
+
+ They now link to Protocol_*_stubs.
+
+
+Sun Jul 4 19:05:35 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC2/EC/EC.mpc:
+
+ Do not compile these. They wouldn't compile at all. These are
+ useful examples that are needed for EC integration.
+
+Sun Jul 4 18:59:09 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+
+ No need to register value factories explicitly. They are now
+ generated in the servant code.
+
+Sun Jul 4 18:40:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Receiver/ReceiverImpl.ccd
+ * performance-tests/Protocols/Receiver/Receiver_svnt.h
+ * performance-tests/Protocols/Sender/SenderImpl.ccd
+ * performance-tests/Protocols/Sender/Sender_svnt.h:
+
+ Removed the generated code form the repository.
+
+Sun Jul 4 11:14:03 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Restructured things so that CIAO_DnC_Server doesn't need to be
+ linked with stub projects.
+
+ * DAnCE/ciao/Container_Base.h:
+
+ Added an include for the xport file.
+
+Sun Jul 4 10:17:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ The deployment_stub should depend on the CIAO_DnC_Server. This
+ would need some restructuring. I will do this shortly.
+
+Sun Jul 4 09:07:20 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAO.mwc:
+
+ Added DAnCE and removed DnC
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+
+ Fixed warnings in our daily builds.
+
+ * DAnCE/NodeManager/NodeDaemon.mpc:
+
+ Use CIAO_DnC_Server instead of CIAO_Server.
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Removed unneeded dependancies.
+
+Sat Jul 3 10:03:22 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Deployment_Base.idl:
+ * DAnCE/ciao/Deployment_Data.idl:
+ * DAnCE/ciao/Deployment.idl:
+ The original Deployment.idl is splited into the above 3 files to
+ get rid of the VC warning.
+
+ * DAnCE/ciao/Deployment_Ex.idl:
+ This file is removed due to the bad name.
+
+ * DAnCE/ciao/CCM_Core.idl:
+ The MPC file is changed to follow the above changes.
+
+Thu Jul 1 16:27:07 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * CIAOTAO.mwc:
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+
+ Updated mpc to build the new DAnCE directory.
+
+Thu Jul 1 16:19:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+ * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl:
+
+ Updated the files to include the right header files.
+
+Thu Jul 1 16:01:12 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DADAnCE/Deployment.xsd
+ * DAnCE/Deployment.mwc:
+ * DAnCE/Deployment.xsd.orig:
+ * DAnCE/XMI.xsd:
+ * DAnCE/XMI.xsd.orig:
+ * DAnCE/Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Config_Handlers/Any_Handler.h:
+ * DAnCE/Config_Handlers/Basic_Handler.cpp:
+ * DAnCE/Config_Handlers/Basic_Handler.h:
+ * DAnCE/Config_Handlers/CAD_Handler.cpp:
+ * DAnCE/Config_Handlers/CAD_Handler.h:
+ * DAnCE/Config_Handlers/CEPE_Handler.h
+ * DAnCE/Config_Handlers/CEPE_Handler.cpp:
+ * DAnCE/Config_Handlers/CPK_Handler.cpp:
+ * DAnCE/Config_Handlers/CPK_Handler.h:
+ * DAnCE/Config_Handlers/CPR_Handler.cpp:
+ * DAnCE/Config_Handlers/CPR_Handler.h:
+ * DAnCE/Config_Handlers/Cap_Handler.cpp:
+ * DAnCE/Config_Handlers/Cap_Handler.h:
+ * DAnCE/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DAnCE/Config_Handlers/CompImplDesc_Handler.h:
+ * DAnCE/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DAnCE/Config_Handlers/CompIntrDesc_Handler.h:
+ * DAnCE/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DAnCE/Config_Handlers/CompPkgDesc_Handler.h:
+ * DAnCE/Config_Handlers/Config_Error_Handler.cpp:
+ * DAnCE/Config_Handlers/Config_Error_Handler.h:
+ * DAnCE/Config_Handlers/Config_Handler_export.h:
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/Config_Handlers/DT_Handler.cpp:
+ * DAnCE/Config_Handlers/DT_Handler.h:
+ * DAnCE/Config_Handlers/Deployment.h:
+ * DAnCE/Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump.h:
+
+ Checked in all the XML handlers needed by DAnCE.
+
+Thu Jul 1 15:54:15 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Domain_Handler.cpp:
+ * DAnCE/Config_Handlers/Domain_Handler.h:
+ * DAnCE/Config_Handlers/ERE_Handler.cpp:
+ * DAnCE/Config_Handlers/ERE_Handler.h:
+ * DDAnCE/Config_Handlers/IAD_Handler.h
+ * DAnCE/Config_Handlers/IAD_Handler.cpp:
+ * DAnCE/Config_Handlers/ID_Handler.cpp:
+ * DAnCE/Config_Handlers/ID_Handler.h:
+ * DAnCE/Config_Handlers/IR_Handler.cpp:
+ * DAnCE/Config_Handlers/IR_Handler.h:
+ * DAnCE/Config_Handlers/MID_Handler.cpp:
+ * DAnCE/Config_Handlers/MID_Handler.h:
+ * DAnCE/Config_Handlers/NIA_Handler.cpp:
+ * DAnCE/Config_Handlers/NIA_Handler.h:
+ * DAnCE/Config_Handlers/PCI_Handler.cpp:
+ * DAnCE/Config_Handlers/PCI_Handler.h:
+ * DAnCE/Config_Handlers/PC_Handler.cpp:
+ * DAnCE/Config_Handlers/PC_Handler.h:
+ * DAnCE/Config_Handlers/Plan_Handler.cpp:
+ * DAnCE/Config_Handlers/Plan_Handler.h:
+ * DAnCE/Config_Handlers/Process_Element.cpp:
+ * DAnCE/Config_Handlers/Process_Element.h:
+ * DAnCE/Config_Handlers/Process_Element_T.cpp:
+ * DAnCE/Config_Handlers/Process_Element_T.h:
+ * DAnCE/Config_Handlers/Property_Handler.cpp:
+ * DAnCE/Config_Handlers/Property_Handler.h:
+ * DAnCE/Config_Handlers/RS_Handler.cpp:
+ * DAnCE/Config_Handlers/RS_Handler.h:
+ * DAnCE/Config_Handlers/RUK_Handler.cpp:
+ * DAnCE/Config_Handlers/RUK_Handler.h:
+ * DAnCE/Config_Handlers/Requirement_Handler.cpp:
+ * DAnCE/Config_Handlers/Requirement_Handler.h:
+ * DAnCE/Config_Handlers/SPK_Handler.cpp:
+ * DAnCE/Config_Handlers/SPK_Handler.h:
+ * DAnCE/Config_Handlers/SP_Handler.cpp:
+ * DAnCE/Config_Handlers/SP_Handler.h:
+ * DAnCE/Config_Handlers/TPD_Handler.cpp:
+ * DAnCE/Config_Handlers/TPD_Handler.h:
+ * DAnCE/Config_Handlers/Utils.cpp:
+ * DAnCE/Config_Handlers/Utils.h:
+ * DAnCE/Config_Handlers/XercesString.cpp:
+ * DAnCE/Config_Handlers/XercesString.h:
+
+ First cut check-in for XML handlers.
+
+
+
+Thu Jul 1 15:51:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.inl:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl:
+ * DAnCE/ExecutionManager/ExecutionManager.idl:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.inl:
+ * DAnCE/ExecutionManager/ExecutionManager_stub_export.h:
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+
+ Checking in the DomainApplicationManager and ExecutionManager
+ interfaces.
+
+Thu Jul 1 15:47:45 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.cpp:
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplicationManager/CIAO_NAM_Export.h:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ * DAnCE/NodeManager/NodeDaemon.idl:
+ * DAnCE/NodeManager/NodeDaemon.mpc:
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ * DAnCE/NodeManager/NodeDaemon_Impl.inl:
+ * DAnCE/NodeManager/NodeDaemon_stub_export.h:
+ * DAnCE/NodeManager/Node_Daemon.cpp:
+
+ Checked in the NodeApplication, NodeApplicationManager
+ and NodeManager code.
+
+Thu Jul 1 15:45:48 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.idl:
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.h:
+
+ Moved the RepositoryManager directory here.
+
+Thu Jul 1 15:40:06 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Base.idl:
+ * DAnCE/ciao/CCM_Component.idl:
+ * DAnCE/ciao/CCM_Container.idl:
+ * DAnCE/ciao/CCM_Container_Ex.idl:
+ * DAnCE/ciao/CCM_Core.mpc:
+ * DAnCE/ciao/CCM_Event.idl:
+ * DAnCE/ciao/CCM_Transaction.idl:
+ * DAnCE/ciao/CIAO_Client_Export.h:
+ * DAnCE/ciao/CIAO_Container_Export.h:
+ * DAnCE/ciao/CIAO_Server_Export.h:
+ * DAnCE/ciao/CIAO_Value.idl:
+ * DAnCE/ciao/CIAO_common.h:
+ * DAnCE/ciao/Client_init.cpp:
+ * DAnCE/ciao/Client_init.h:
+ * DAnCE/ciao/Components.idl:
+ * DAnCE/ciao/ComponentsC.h:
+ * DAnCE/ciao/ComponentsS.h:
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Container_Base.inl:
+ * DAnCE/ciao/Container_Base.pidl:
+ * DAnCE/ciao/Cookies.cpp:
+ * DAnCE/ciao/Cookies.h:
+ * DAnCE/ciao/Cookies.inl:
+ * DAnCE/ciao/CosPersistentState.idl:
+ * DAnCE/ciao/Deployment.idl:
+ * DAnCE/ciao/Deployment_Core.idl:
+ * DAnCE/ciao/Deployment_stub_export.h:
+ * DAnCE/ciao/Deployment_svnt_export.h:
+ * DAnCE/ciao/NodeApp_CB_Impl.cpp:
+ * DAnCE/ciao/NodeApp_CB_Impl.h:
+ * DAnCE/ciao/NodeApplication_CallBack.idl:
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ * DAnCE/ciao/NodeApplication_Impl.inl:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+ * DAnCE/ciao/Server_init.cpp:
+ * DAnCE/ciao/Server_init.h:
+ * DAnCE/ciao/Version.h:
+
+ Moving DnC/ciao over here.
+
+Thu Jul 1 15:37:33 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.h:
+ * DAnCE/tests/Config_Handlers/Handler_Test.i:
+ * DAnCE/tests/Config_Handlers/Handler_Tests.mpc:
+ * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+
+ Checking in the tests for the XML handlers.
+
+Thu Jul 1 15:29:57 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.ccd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.cid:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe.cpd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Deployment.xsd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Domain.cdd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS.ccd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS.cid:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS.cpd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Exec.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Stub.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cdp:
+ * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cid:
+ * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.cpd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/HUDisplay.pcd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Libraries.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.ccd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.cid:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay.cpd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer.ccd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer.cid:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer.cpd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Exec.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Stub.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/XMI.xsd:
+ * DAnCE/tests/Config_Handlers/HUDisplay/package.tpd:
+
+ Checking in the HUDisplay deployment descriptors.
+
+Thu Jul 1 15:26:54 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl:
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ * DAnCE/tests/NodeApplicationTest/README:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h:
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+ * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl:
+ * DAnCE/tests/scripts/BasicSP/basicsp.dat:
+
+ First cut checkins for new DAnCE directory.
+
+Thu Jul 1 14:46:24 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+
+ Removed includes to Process_Basic_Type.h.
+
+Thu Jul 1 13:20:08 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+
+ Removed includes to Process_Basic_Type.h
+
+Thu Jul 1 12:16:41 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/Execution_Manager.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+
+ Addressed comments left by Ossama after his code review.
+
+Thu Jul 1 12:02:05 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CPR_Handler.cpp:
+ * DnC/Config_Handlers/Cap_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/IR_Handler.cpp:
+ * DnC/Config_Handlers/NIA_Handler.cpp:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Process_Basic_Type.h:
+ * DnC/Config_Handlers/Process_Basic_Type.i:
+ * DnC/Config_Handlers/Process_Element_T.cpp:
+ * DnC/Config_Handlers/TPD_Handler.cpp:
+ * DnC/Config_Handlers/Utils.cpp:
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/Process_Basic_Type.h:
+ * DnC/Config_Handlers/Process_Basic_Type.i:
+
+ Moved the code in Process_Basic_Type.h and
+ Process_Basic_Type.i to Utils.h and Utils.cpp,
+ as all the utility functions are defined
+ in that file.
+
+Thu Jul 1 11:37:14 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/todo.html:
+ Added two bullets in the Todo list.
+
+Thu Jul 1 11:06:42 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element_T.cpp:
+ * DnC/Config_Handlers/Process_Element_T.h:
+
+ Added the files to follow ACE coding standards.
+
+ * DnC/Config_Handlers/Process_Element.tpp:
+ * DnC/Config_Handlers/Process_Element.i:
+
+ Removed these files, as they were not following the
+ ACE standards.
+
+ The code in the above files have been moved to
+ Process_Element_T.cpp and Process_Element_T.h.
+
+Thu Jul 1 10:56:28 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/releasenotes/index.html:
+ * docs/todo.html:
+
+ Updated the todo list.
+
+Wed Jun 30 22:29:51 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/releasenotes/switch.html:
+ * docs/releasenotes/index.html:
+ Updated the release note. I will work on the to-do list
+ as well.
+
+Wed Jun 30 18:01:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed another bug in the receptacle code generation. Thanks to
+ Gary Duzan for reporting the problem <gduzan at bbn dot com>.
+
+Wed Jun 30 17:16:53 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ Added code to catch DOM exceptions.
+
+Wed Jun 30 17:00:10 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Added code to catch parser exceptions for
+ incorrect URls
+
+Wed Jun 30 13:32:08 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Removed "after += CIAO_DnC_Container" from the stub project.
+
+Wed Jun 30 13:14:50 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/CCM_Core.mpc:
+
+ Added -St to Deployment_stub probject to reduce the size of
+ generated code.
+
+Wed Jun 30 10:59:55 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAO.mwc:
+ * CIAOTAO.mwc:
+
+ Added the new DnC directories.
+
+ * DnC/ciao/CCM_Core.mpc:
+
+ Changed the name of the libraries generated. We should not
+ overwrite the original ones.
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc:
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Use the new libraries.
+
+Wed Jun 30 09:26:42 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Sender/starter.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.h:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/BasicSP/EC/controller.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * examples/OEP/Display/RateGen/controller.cpp:
+
+ Changes to eliminate build warnings (mostly assignments of
+ const char* to char*) and cosmetic changes.
+
+Wed Jun 30 08:37:15 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+
+ In Receiver_exec_i::ccm_activate(), changed the construction of
+ the argv argument passed to ORB_init() to eliminate a const
+ char* to char* conversion warning.
+
+Tue Jun 29 15:34:00 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ We were not setting the sequence length when we were iterating
+ over the sequence of connections for a "uses multiple"
+ case. Thanks Ed Mulholland for reporting this.
+
+Tue Jun 29 01:40:25 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/NodeApplicationManager/ImplementationInfo.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/ciao/Container_Base.cpp:
+ * DnC/ciao/NodeApplication_Impl.cpp:
+ * DnC/ciao/NodeApplication_Impl.h:
+ * DnC/ciao/NodeApplication_Impl.inl:
+
+ Fixed some of Ossama's comments, added exception catching clauses
+ in NodeApplication.
+
+Tue Jun 29 06:18:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * performance-tests/Protocols/Controller/Controller.mpc:
+ Changed project name to avoid duplicate project names
+
+Mon Jun 28 11:58:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/RobotAssembly/RobotAssembly.mpc:
+ * DnC/tests/RobotAssembly/RobotAssembly.mwc:
+ * DnC/tests/RobotAssembly/RobotAssembly_stub_export.h:
+ * DnC/tests/RobotAssembly/RobotAssembly_svnt_export.h:
+ * DnC/tests/RobotAssembly/Robot_Base.idl:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.cidl:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.idl:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface.mpc:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec.cpp:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec.h:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_exec_export.h:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_stub_export.h:
+ *
+ DnC/tests/RobotAssembly/HumanMachineInterface/HumanMachineInterface_svnt_export.h:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.cidl:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.idl:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions.mpc:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec.cpp:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec.h:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_exec_export.h:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_stub_export.h:
+ *
+ DnC/tests/RobotAssembly/ManagementWorkInstructions/ManagementWorkInstructions_svnt_export.h:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.cidl:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.idl:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager.mpc:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec.cpp:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec.h:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_exec_export.h:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_stub_export.h:
+ *
+ DnC/tests/RobotAssembly/PalletConveyorManager/PalletConveyorManager_svnt_export.h:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager.cidl:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager.idl:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.cidl:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.idl:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager.mpc:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec.cpp:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec.h:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_exec_export.h:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_stub_export.h:
+ *
+ DnC/tests/RobotAssembly/WatchSettingManager/WatchSettingManager_svnt_export.h:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager_svnt_export.h:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager_stub_export.h:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec_export.h:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager.mpc:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec.cpp:
+ * DnC/tests/RobotAssembly/RobotManager/RobotManager_exec.h:
+
+ RobotAssembly example deployment scenario files.
+
+Mon Jun 28 11:33:00 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Deployment.mwc:
+
+ DnC tests projects reincluded to the compilation.
+
+ * DnC/tests/Config_Handlers/handler_test.mpb:
+
+ Added after statement to ensure Config_Handlers is compiled before
+ compiling handler_tests.
+
+Mon Jun 28 11:18:00 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/DnC_Dump.h:
+
+ Fixed the VC6 errors by excluding the DnC dump functionality on the
+ compilers ACE_HAS_BROKEN_NESTED_TEMPLATES.
+
+Mon Jun 28 10:44:00 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/Handler_Test.h:
+ * DnC/tests/Config_Handlers/IAD_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/PC_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/Plan_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/handler_test.mpb:
+
+ Fixed the VC6 errors by excluding the DnC tests on the
+ compilers ACE_HAS_BROKEN_NESTED_TEMPLATES.
+
+Mon Jun 28 10:40:00 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/RobotAssembly/README.html:
+
+ Deleted "file://" from -p & -d options of executor.
+
+Mon Jun 28 08:03:25 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed a bug with code generation for uses multiple. Thanks to Ed
+ Mulholland for reporting the problem.
+
+Mon Jun 28 00:18:04 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * CIAO/performance-tests/Protocols:
+
+ Added new test. Closely mirrors
+ $TAO_ROOT/performance-tests/Protocols but uses CCM components
+ rather that TAO applications.
+
+Sun Jun 27 12:59:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/scripts/BasicSP/basicNodeDaemon.pl:
+ * DnC/tests/scripts/BasicSP/basicsp.dat:
+ * DnC/tests/scripts/RobotAssembly/robotNodeDaemon.pl:
+ * DnC/tests/scripts/RobotAssembly/robotassembly.dat:
+
+ Added the scripts directory to help in the integrated
+ testing.
+
+Sun Jun 27 12:50:12 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/HUDisplay/Deployment.xsd:
+ * DnC/tests/Config_Handlers/HUDisplay/XMI.xsd:
+
+ Checked in the schema files into the repository to assist
+ unit and integration testing.
+
+Sun Jun 27 12:20:23 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/RobotAssembly/DeploymentPlan.cdp:
+
+ Updated the plan descriptor to use just two nodes rather
+ than five.
+
+Sun Jun 27 11:56:55 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Fixed compile errors in our daily builds.
+
+Fri Jun 25 23:59:00 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * Process_Element.cpp
+ * Process_Element.h
+ * Process_Element.i
+ * Process_Element.tpp
+
+ Re-organize the code to avoid sutble potential problems.
+ Bala made above changes on my machine.
+
+Fri Jun 25 17:35:00 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+
+ Fixed compilation problems with VC6. Varibles defined in for loop
+ remain persistant out of scope of the for loop.
+
+Fri Jun 25 10:51:26 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed compilation problems with VC6. To put it short VC6 just
+ cannot handle templates properly. Thanks to gan Deng for reporting
+ the problem.
+
+Thu Jun 24 17:25:36 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/ciao/NodeApplication_Impl.cpp:
+
+ Added ACE_TRY clock to the code.
+
+Thu Jun 24 17:13:20 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Reverted changes to
+
+ "Fri Jun 4 18:16:47 2004 Jeff Parsons
+ <j.parsons@vanderbilt.edu>" to get things going on VC6 builds.
+
+ Added changes to ensure that there is a gap between "<" brackets
+ for templates and the scoping operator "::" Thanks to Ed
+ Mulholland for reporting the problem.
+
+ * DnC/ciao/Servant_Impl_T.cpp:
+ * DnC/ciao/Servant_Impl_T.h:
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+
+ Do not use traits as template parameters. VC6 cannot just handle
+ all this. Thanks to Theckla Louchios <theckla.louchios@lmco.com>
+ for reporting the problem.
+
+Thu Jun 24 16:40:53 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ Some more changes for VC6.
+
+Thu Jun 24 15:34:53 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIAOTAO.mwc
+ Reversed the change to avoid trouble for people who don't use
+ the new DnC framework.
+
+Thu Jun 24 15:17:45 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Config_Handlers.mpc
+ * DnC/Config_Handlers/DnC_Dump.cpp
+ * DnC/Config_Handlers/DnC_Dump.h
+ * DnC/Config_Handlers/Process_Element.tpp
+ * DnC/Config_Handlers/Utils.cpp
+ * DnC/Config_Handlers/XercesString.cpp
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/ExecutionManager/ExecutionManager.mpc
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DnC/NodeManager/NodeDaemon.mpc
+
+ Checked in some changes to make DnC compile under VC6.
+
+Thu Jun 24 14:49:44 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Commented out the dump functions.
+
+Thu Jun 24 08:10:09 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Added requires += dnc to the projects.
+
+Wed Jun 23 16:52:50 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/RobotAssembly/README.html:
+
+ Fixed links.
+
+Wed Jun 23 16:19:25 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/RobotAssembly/README.html:
+
+ Committed the README file which desribes how to compile/run the
+ RobotAssembly example.
+
+Wed Jun 23 15:33:06 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.inl
+
+ Added "debug level" controlled debugging statements.
+ Addressed Ossama's comments. Thanks Ossama!
+
+Wed Jun 23 13:52:06 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/RobotAssembly/ACE.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/CIAO.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/DefaultConfiguration.pcd:
+ * DnC/tests/Config_Handlers/RobotAssembly/Deployment.xsd:
+ * DnC/tests/Config_Handlers/RobotAssembly/DeploymentPlan.cdp:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.ccd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.cid:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface.cpd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_exec.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_stub.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/HumanMachineInterface_svnt.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.ccd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.cid:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions.cpd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_exec.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_stub.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/ManagementWorkInstructions_svnt.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.ccd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.cid:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager.cpd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_exec.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_stub.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/PalletConveyorManager_svnt.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotAssembly.cid:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotAssembly.cpd:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.ccd:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.cid:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager.cpd:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_exec.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_stub.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/RobotManager_svnt.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/TAO.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.ccd:
+ * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.cid:
+ * DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager.cpd:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_exec.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_stub.iad:
+ *
+ DnC/tests/Config_Handlers/RobotAssembly/WatchSettingManager_svnt.iad:
+ * DnC/tests/Config_Handlers/RobotAssembly/XMI.xsd:
+ * DnC/tests/Config_Handlers/RobotAssembly/package.tpd:
+
+ Added the robot assembly example descriptors.
+
+Wed Jun 23 13:44:37 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/ExecutionManager/ExecutionManager_Impl.cpp:
+
+ Fixed a compilation error.
+
+Wed Jun 23 13:24:23 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Process_Element.h:
+
+ Added missing includes to fix compilation errors.
+
+Wed Jun 23 13:07:13 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to fix memory leaks.
+
+Wed Jun 23 13:05:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to fix some memory leaks.
+
+Wed Jun 23 12:31:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to allow "read local URL" work in
+ Windows machines as well.
+
+Wed Jun 23 11:48:10 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.h:
+ * DnC/Config_Handlers/Process_Element.i:
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ The functions and classes are placed in the deployment namespace.
+
+Wed Jun 23 03:14:16 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.inl:
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/NodeApplicationManager/ImplementationInfo.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ * DnC/RepositoryManager/Update_Plan.cpp:
+ * DnC/ciao/Container_Base.cpp:
+ * DnC/ciao/Container_Base.h:
+ * DnC/ciao/Cookies.cpp:
+ * DnC/ciao/Deployment_Core.idl:
+ * DnC/ciao/NodeApp_CB_Impl.cpp:
+ * DnC/ciao/NodeApp_CB_Impl.h:
+ * DnC/ciao/NodeApplication_Impl.cpp:
+ * DnC/ciao/NodeApplication_Impl.h:
+ * DnC/ciao/NodeApplication_Impl.inl:
+ * DnC/ciao/Servant_Impl_Base.cpp:
+ * DnC/ciao/Servant_Impl_T.cpp:
+
+ Performed a code review and left comments for DnC developers.
+
+Tue Jun 22 18:05:19 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Added comment about the requirement of boost 1.30.2 in order
+ to build CCF/CIDLC on Windows.
+ Thanks to Valery <acapstan@bigpond.net.au> for catching this.
+
+Tue Jun 22 10:38:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added a missing _duplicate () in the connect_emittype () calls.
+
+Mon Jun 21 17:46:32 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Update_Plan.cpp:
+
+ Made changes to fix a run-time error.
+
+Fri Jun 18 16:40:14 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/README.html:
+
+ ".exe" extensions are deleted, because they are not exist in
+ linux
+
+Fri Jun 18 16:18:42 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Update_Plan.cpp:
+
+ Added comments in the code to assist code review.
+
+Fri Jun 18 15:49:17 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Cleaned links up a bit.
+
+Fri Jun 18 14:39:39 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ CIAO_Container is added as an "after" dependency for the
+ NodeAppTest_RoundTrip_stub.
+
+Fri Jun 18 14:14:12 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/README.html:
+
+ Moved the file from Display directory to BasicSP directory.
+
+Fri Jun 18 14:05:27 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * examples/OEP/Display/README.html:
+
+ The file describing how to build and run the example according to
+ the new DnC spec is added.
+
+Fri Jun 18 13:34:16 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DomainApplicationManager/DomainApplicationManager.mpc
+ * ExecutionManager/ExecutionManager.mpc
+ * NodeManager/NodeDaemon.mpc
+ * RepositoryManager/Repository_Manager.cpp
+
+ Fixed linking problems in Windows. Added debug/test
+ capabilities by remotely shutdown ExecutionManager.
+
+Fri Jun 18 11:59:56 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/tutorial/Hello/hello_exec.cpp:
+ * docs/tutorial/Hello/hello_exec.h:
+ Updated these files to follow up the changes in CIDLC.
+
+Fri Jun 18 11:56:09 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Update_Plan.cpp:
+ * DnC/RepositoryManager/Update_Plan.h:
+
+ Helper files to update the deployment plan from the package
+ configuration IDL data structure.
+
+ Made changes to follow DOC group standard of never a function
+ more than a page.
+
+Fri Jun 18 09:36:13 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Updated the file with a link to Win32 zip files for the Utility
+ library.
+
+Thu Jun 17 16:59:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ * DnC/RepositoryManager/Update_Plan.cpp:
+ * DnC/RepositoryManager/Update_Plan.h:
+
+ Moved all the plan handler helper functions to a new
+ file Update_Plan.cpp.
+
+Thu Jun 17 16:02:16 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ Added one in. () to the debug call.
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/NodeApplicationManager/ImplementationInfo.cpp
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DnC/RepositoryManager/Repository_Manager.cpp
+ * DnC/ciao/Deployment_Core.idl
+ * DnC/ciao/NodeApplication_Impl.cpp
+ * DnC/ciao/NodeApplication_Impl.h
+ Added the support for ComponentIOR. Also adjusted the start
+ process which is essential to BasicSP.
+
+Thu Jun 17 16:00:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/Libraries.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad:
+
+ Updated the BasicSP scenario example descriptors.
+
+Thu Jun 17 13:24:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Added some comments onto the code.
+
+Wed Jun 16 17:12:21 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/ExecutionManager.mpc
+ * DnC/NodeManager/NodeDaemon.mpc
+ * DnC/RepositoryManager/RepositoryManager.mpc
+
+ Fixed export library problems in Windows. Added necessary build
+ dependency settings.
+
+Wed Jun 16 16:33:13 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Updated mpc file to link to the ExecutionManager and NodeDaemon
+ stubs as operations on these entities are used within the
+ executor.
+
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/NodeDaemon_stub_export.h:
+ * DnC/NodeManager/Node_Daemon.cpp:
+
+ Added stub macros to generate stub libraries
+
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+ * DnC/ExecutionManager/ExecutionManager_stub_export.h:
+
+ Stub exports for ExecutionManager.
+
+Wed Jun 16 15:18:21 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+
+ Fixed linking errors by adding NodeManager and ExecutionManager
+ stub code into the project settings.
+
+Wed Jun 16 12:48:11 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to use ACE_Hash_Map instead of std::map.
+
+Wed Jun 16 12:02:12 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made substantial changes to populate the DeploymentPlan
+ IDL data structure from the PackageConfiguration data
+ structure.
+
+ This change enables the DnC framework to have a much shorter
+ version of the DeploymentPlan XML descriptor, as we can get
+ the needed information from the PackageConfiguration IDL
+ data structure and not from the XML descriptors itself.
+
+Wed Jun 16 11:24:13 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+ * DnC/Config_Handlers/RUK_Handler.h:
+ * DnC/Config_Handlers/NIA_Handler.h:
+ * DnC/Config_Handlers/MID_Handler.h:
+ * DnC/Config_Handlers/IR_Handler.h:
+ * DnC/Config_Handlers/IAD_Handler.h:
+ * DnC/Config_Handlers/DnC_Dump.h:
+ * DnC/Config_Handlers/Basic_Handler.h:
+
+ Comments, etc.
+
+Tue Jun 15 20:53:28 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+
+ Added missing include file.
+
+ * tools/Segment_Timer/Segment_Timer.cpp:
+
+ Commented out debug statement since the division in it was
+ failing to compile on Windows.
+
+ * tools/RTComponentServer/RTServer_Impl.cpp (init):
+
+ Indent fixes.
+
+ * tests/RTCCM/DiffServ/descriptors/run_test.pl:
+
+ Remove assembly descriptor file also.
+
+Tue Jun 15 15:27:08 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * Dnc/NodeApplication/NodeApplication.cpp
+ * Dnc/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * Dnc/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * Dnc/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp
+ * Dnc/NodeManager/NodeDaemon_Impl.cpp
+ * Dnc/NodeManager/NodeDaemon_Impl.h
+ * Dnc/NodeManager/Node_Daemon.cpp
+ * DnC/ciao/NodeApp_CB_Impl.cpp
+ * DnC/ciao/NodeApp_CB_Impl.h
+
+ Fixed memory leak problems. Now "NodeDaemon" process and
+ "NodeApplication" process should have no memomry leak problem.
+ Further test will be based on deploying and tearing down a
+ deploymentplan many times and try to find memory leak.
+
+Tue Jun 15 10:48:08 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Let the object reference narrow down to ExecutionManager
+ instead of ExecutionManagerDameon.
+
+Mon Jun 14 15:01:08 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ * DnC/ExecutionManager/Execution_Manager.cpp
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/DomainApplicationManager/Deployment_Configuration.cpp
+
+ Fixed memory leak problems. Now ExecutionManager "process" should
+ have no memomry leak at all. Further test will be on "NodeDaemon"
+ process, which will detect memory management problem for NodeApplicationManager
+ as well.
+
+Mon Jun 14 14:24:08 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * examples/OEP/BasicSP/EC/client.cpp
+
+ Added missing header file "ace/OS_NS_unistd.h" which contains
+ hostname function.
+
+Sun Jun 13 16:13:08 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Some cosmetic changes.
+
+Sun Jun 13 17:55:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to check if we have a wrong URL to
+ start parsing the deployment plan.
+
+Sat Jun 12 23:17:08 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/ImplementationInfo.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/NodeManager/NodeDaemon_Impl.inl:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ * DnC/ciao/NodeApp_CB_Impl.cpp:
+ * DnC/ciao/NodeApp_CB_Impl.h:
+
+ Debugged on Windows with Visual Studio + Purify. Now
+ Every thing should be fine and people could start to
+ do their own code revision.
+
+ @@Note: If you want to make any change other than
+ syntactic Changes please be careful and make sure you
+ don't break anything.
+
+ Now I am moving to add support for Properties.
+ Things we need for the Demo.
+ 1. ComponentIOR registration.
+ 2. Component Attribute initialization.
+
+Sat Jun 12 16:51:11 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/TPD_Handler.cpp:
+
+ Made some coding standard changes.
+
+Fri Jun 11 20:34:12 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp
+ * DnC/ExecutionManager/ExecutionManager_Impl.h
+ * DnC/ExecutionManager/ExecutionManager_Impl.inl
+ * DnC/NodeApplication/NodeApplication.cpp
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl
+ * DnC/NodeManager/NodeDaemon_Impl.cpp
+ * DnC/NodeManager/NodeDaemon_Impl.h
+ * DnC/NodeManager/NodeDaemon_Impl.inl
+ * DnC/RepositoryManager/Repository_Manager.cpp
+ * DnC/ciao/Deployment_Core.idl
+ * DnC/ciao/NodeApplication_Impl.cpp
+ * DnC/ciao/NodeApplication_Impl.h
+
+ Many Changes of the files. Now on linux it runs up to 3 times
+ correctly and hangs on the fourth time. I am moving to windows
+ for this now. Don't commit any change till I send out
+ notification email, please!
+
+Fri Jun 11 18:58:04 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Last ChangeLog:
+
+ Fri Jun 11 17:31:04 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ Reverted the changes back to an earlier version since parse_href_tags
+ is used by other classes, and last change caused compilation error.
+
+Fri Jun 11 17:31:04 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Removed un-used methods create_document, parse_href_tags from
+ the Utils directory.
+
+Fri Jun 11 16:59:35 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp:
+
+ Deleted the extension name ".so" for all library artifacts, since
+ this stuff is not platform generic.
+
+Fri Jun 11 16:46:25 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Process_Basic_Type.i:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made some more coding standard changes.
+
+Fri Jun 11 16:12:54 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/CPR_Handler.cpp:
+ * DnC/Config_Handlers/DT_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/IR_Handler.cpp:
+ * DnC/Config_Handlers/MID_Handler.cpp:
+ * DnC/Config_Handlers/NIA_Handler.cpp:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+
+ Made some more coding standard compliance changes.
+
+Fri Jun 11 15:44:00 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CEPE_Handler.cpp:
+ * DnC/Config_Handlers/Cap_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/Config_Error_Handler.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/MID_Handler.h:
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ Made some more coding standards compliance changes.
+
+Fri Jun 11 14:50:42 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made some more coding standard changes.
+
+Fri Jun 11 14:15:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Made some cosmetic changes.
+
+Fri Jun 11 13:07:35 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Uncommented some code which was accidentally
+ commented in my previous commit.
+
+Fri Jun 11 12:55:49 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.tpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes to free up memory created by XMLString::
+ transcode operations.
+
+Fri Jun 11 12:07:27 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Process_Element.i:
+ * DnC/Config_Handlers/Process_Element.tpp:
+ * DnC/Config_Handlers/Utils.cpp:
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Deleted the duplicate definition of create_doc & create_doc is
+ replaced with create_parser.
+
+Fri Jun 11 00:10:42 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Utils.cpp:
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Fixed segmentation faults, traced during integration
+ teting.
+
+Thu Jun 10 18:38:46 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Any_Handler.cpp:
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/Utils.cpp:
+ * DnC/Config_Handlers/Handler_Test.i:
+
+ Fixed errors based on errors discovered using Purify
+
+Thu Jun 10 18:24:58 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ More memory leaks fixed.
+
+Thu Jun 10 18:12:44 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/RS_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.cpp:
+
+ Finally, Config_Handler directory compiles correctly
+
+Thu Jun 10 18:06:52 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Fixed compilation errors from improper use of XMLString::release.
+
+Thu Jun 10 18:05:09 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/RS_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.cpp:
+
+ More memory leaks fixed.
+
+2004-06-10 turkaye <turkaye@lambada.isis.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+
+ Memory leak problem with XMLString::transcode () is solved.
+
+Thu Jun 10 17:46:10 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.cpp:
+ * DnC/Config_Handlers/TPD_Handler.cpp:
+
+ Fixed memory leaks pertaining to ACE_TString making copies of
+ dynamically allocated memory. The memory supplied to ACE_TString
+ has to be deleted! Fixed memory for these.
+
+Thu Jun 10 17:44:57 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/RS_Handler.cpp:
+ * DnC/Config_Handlers/Requirement_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.cpp:
+
+ More memory leaks fixes.
+
+Thu Jun 10 17:27:35 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Fixed some memory leaks as well!!
+
+Thu Jun 10 17:26:25 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Process_Element.cpp:
+
+ Fixed memory leaks.
+
+Thu Jun 10 14:06:03 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_T.cpp:
+ * DnC/ciao/Servant_Impl_T.cpp:
+
+ Modified code that passed _var.out() to ACE_NEW_RETURN,
+ since sometimes on Windows platforms, for whatever
+ reason Var_Base::out() will be called after the
+ allocation, effectively cancelling it out. It is
+ alwas safe to declare a pointer, pass it to ACE_NEW_*
+ and then assign it to a _var, so that is what is
+ done now in get_all_facets() and get_all_consumers().
+
+Thu Jun 10 10:17:00 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/Container_Base.h:
+ Followed up a Jeff's Change in the old ciao.
+
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * DnC/ciao/NodeApplication_Impl.cpp:
+ * DnC/DomainApplicationMananger/NodeApplicationManager_Impl.cpp:
+
+ Many adjustments, bug fixing, added missing functionalities.
+ This is not a working version now.
+
+Wed Jun 9 11:17:31 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager_Impl.cpp
+
+ Fixed a bug which is caused by initialzing ulong sequence type.
+
+Tue Jun 8 20:53:12 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/ImplementationInfo.cpp:
+ * DnC/NodeApplicationManager/ImplementationInfo.h:
+ Added these files.
+
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ Changed MPC file reflect the changes.
+
+ Seems MPC doesn't support template very well for GCC. The
+ dependency is not set at all. I have no choice but to switch to
+ normal operator overlaoding.
+
+Tue Jun 8 19:54:03 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/CCM_Core.mpc:
+ * DnC/ciaoImplementation.h:
+ Removed this file also changed MPC file.
+
+Tue Jun 8 14:15:31 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager_Impl.cpp
+
+ Tested it and it could split plan well and also contact
+ NodeDaemon without problem.
+
+ Fixed a bug caused by not using a reference.
+
+Tue Jun 8 17:18:28 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/ciao/CCM_Core.mpc:
+ Fixed another set of linking problem about export macros.
+
+Tue Jun 8 14:15:31 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+
+ Added missing library CIAO_Server.
+
+Tue Jun 8 15:50:28 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Added duplicate for one return value.
+
+Tue Jun 8 15:00:30 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/TPD_Handler.h:
+ * DnC/Config_Handlers/TPD_Handler.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Added TopLevelDescription handler.
+
+Tue Jun 8 14:29:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Made changes to read the top level package URL
+ and create the PackageConfiguration IDL data structure.
+
+Tue Jun 8 14:15:31 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.h:
+
+ Fixed the Windows export library problem.
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Added "return" to those unimplemented functions to makde the
+ compiler happy.
+
+Tue Jun 8 14:10:08 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/CCM_Core.mpc:
+ Fixed source file placement.
+
+Tue Jun 8 10:35:32 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Added dump function to dump connections.
+
+Tue Jun 8 10:16:48 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Added diagnostic comments to aid in debugging during execution
+ of the Executor.
+
+Tue Jun 8 09:55:41 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Commented out certain un-necessary DEBUG statements.
+
+Tue Jun 8 02:53:32 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ Rewritten the connection part of the interface.
+ Enhanced the performace by avoiding excessive deep copy and
+ better condition branching. Also added exception mechanism in
+ the connction part.
+
+Mon Jun 7 21:22:03 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Finished this interface implementation.
+
+ * DnC/ciao/ImplementationInfo.h:
+ Added this file containing the templated helper operators.
+
+Mon Jun 7 15:44:51 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/Execution_Manager.cpp:
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+
+ First cut at writing the executor that is used to start
+ deployment process and terminate it. Changed the mpc file to
+ rename the generated executable to be named executor as
+ described in the specification.
+
+Mon Jun 7 14:23:38 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Fixed an error causing segmentation fault by changing
+ Dump_Obj::desc_map_ template argument from "const char*"
+ to "std::string".
+
+
+Mon Jun 7 12:10:31 2004 Gan Deng <gan.dengg@vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ The PortConnectionDescription structure a PortKind variable change the
+ code to make the connection decisions based on value of that variable.
+ Also change the connection fields values which will be passed to
+ finishLaunch() to make the NodeApplication work.
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Change the definition type of the <plan_> variable from const reference
+ to just regular object mapped from IDL struct type.
+
+Mon Jun 7 01:40:57 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Finished the creat_connctions method.
+ Partially finished the startLaunch method.
+
+ * DnC/ciao/NodeApplication_Impl.h:
+ * DnC/ciao/NodeApplication_Impl.cpp:
+ * DnC/ciao/NodeApplication_Impl.inl:
+ Finished implementing the NodeApplication interface.
+ Added the finish launch method.
+
+Sun Jun 6 21:13:27 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Removed generation of a template parameter to the Servant_Impl
+ base class that was removed from the CIAO_Server library in
+
+ Fri Jun 4 18:16:47 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Sat Jun 5 23:26:53 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Tweaked a bit of the code to make it compile.
+
+ Gan, Please look at my comments in the code.
+
+Sat Jun 5 17:24:21 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Change the order of member initialization in the constructors of
+ AttributeEmitter and ReadonlyAttributeEmitter to match a recent
+ change in the order of their class members.
+
+Sat Jun 5 16:45:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Updated repository manager to return the PackageConfiguration
+ element created while parsing the top level package
+ URL.
+
+Sat Jun 5 15:04:15 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Updated the repository manager to dump out the
+ top level package and the deployment plan.
+
+Sat Jun 5 14:59:47 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/README:
+ Added this readme file for user to understand the testing scenario.
+
+
+Sat Jun 5 14:46:12 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * ./DnC/ciao/Servant_Impl_Base.h:
+
+ Cosmetic changes.
+
+ * DnC/ciao/Servant_Impl_T.cpp:
+ * DnC/ciao/Servant_Impl_T.h:
+
+ Removed one of the template parameters and used instead
+ the typedefs generated by the IDL compiler for interfaces.
+
+ Followed Jeff Parson's Changes. Hopefully we can merge the two
+ ciao directories soon so I don't have to duplicate the commit
+ every time after Jeff makes changes.
+
+Fri Jun 4 18:16:47 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_Base.h:
+
+ Cosmetic changes.
+
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+
+ Removed one of the template parameters and used instead
+ the typedefs generated by the IDL compiler for interfaces.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Moved the call to populate_port_tables() from ciao_postactivate()
+ to the servant constructor.
+
+Fri Jun 4 17:19:44 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe.ccd:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe.cpd:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Domain.cdd:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS.ccd:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS.cpd:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cdp:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.cpd:
+ * DnC/tests/Config_Handlers/HUDisplay/HUDisplay.pcd:
+ * DnC/tests/Config_Handlers/HUDisplay/Libraries.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.ccd:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay.cpd:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer.ccd:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer.cid:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer.cpd:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Exec.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Stub.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad:
+ * DnC/tests/Config_Handlers/HUDisplay/package.tpd:
+
+ Moved the descriptor files needed to test BasicSP from my
+ homepage to the CVS repository. The Config_Handlers should be
+ able to build a tree starting from package.tpd. Not sure, if it
+ works that way now.
+
+Fri Jun 4 15:54:09 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Cosmetic and other minor changes to generated code.
+
+Fri Jun 4 15:38:18 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/ciao/Deployment_Core.idl
+
+ Change the "Connection" IDL type by replacing the "string name"
+ field with three more fields, i.e., "string instanceName",
+ "string portName" and "CCMComponentPortKind kind". We feel the
+ old one in DnC spec is not well defined and make the run-time
+ thing harder.
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Finished all the functionality to handle connections and all
+ other things required.
+
+Fri Jun 4 15:32:50 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/RoundTripEI.idl:
+ Removed this file.
+
+ * DnC/tests/NodeApplicationTest/RoundTrip_exec.h:
+ * DnC/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+ * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+ Changed these files to get the get_all_facets test working.
+ Note: I have changed the component implementation to the new
+ executor mapping that Boris proposed. It's not a must in this
+ example but we can use it later as a tutorial for our users.
+
+ * DnC/tests/NodeApplicationTest/run_test_ex.pl:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ Added these two files to test the get_all_facets function.
+
+Fri Jun 4 15:02:15 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc:
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made changes so that RepositoryManager can dump out the
+ PackageConfiguration elements.
+
+Fri Jun 4 11:42:18 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added functions to handle connections. Get rid of the <Connections>
+ field from the hash map table since they don't need to be maintained
+ any more.
+
+
+Fri Jun 4 11:37:51 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed a bug in code generation for the port table population
+ method check in with
+
+ Thu Jun 3 12:35:51 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ and changed code generation of facet servant classes to be
+ a template class with a dummy argument. Immediately below
+ the declaration, we generate a typedef to the actual
+ facet servant class name, using int as the template argument.
+ Because the facet servant class name is based only on the
+ underlying interface type, this change prevents link errors
+ when components in other translation units use the same
+ interface type for a facet, since the compiler will use
+ only one symbol for all the template instantiations, and
+ it is legal to typedef something more than once if it is
+ aliased to the same type. Finally, added checks to ensure
+ that the facet servant class is generated only once in
+ each translation unit, by allowing the underlying interface
+ AST node to be traversed by the facet class code emitter
+ only once.
+
+Fri Jun 4 11:40:18 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Clean-up of the unused, commented out code sections.
+
+Fri Jun 4 11:31:09 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Made changes to fix "Ref" variables.
+
+Fri Jun 4 11:22:46 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/Deployment_Core.idl:
+ * DnC/ciao/Deployment.idl:
+ Changed the connection struct definition to better suite our
+ needs.
+
+Fri Jun 4 11:19:45 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Fixed the dump function for Deployment::SubcomponentPortEndpoint.
+ Prints out the instanceRef.
+
+Fri Jun 4 10:46:42 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Made changes to fix dumping of some "Ref" variables.
+
+Fri Jun 4 09:53:14 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/tckind_names.h:
+ * DnC/Config_Handlers/tckind_names.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Deleted the files which initially written for dumping out the
+ ComponentPropertyDescription::type. It is handled as a big
+ switch section in DnC_Dump.cpp.
+
+Fri Jun 4 09:52:28 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Removed the check_plan_validity () method and added its
+ functionality in the get_plan_info () method. This eliminates
+ the need to have a separate loop to iterate over the list of
+ names to populate the NodeManager references, now this step is
+ done within a single loop.
+
+Thu Jun 3 17:28:49 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ Formatted the output a bit to make the message more reflective.
+
+ * DnC/ciao/CCM_Core.mpc:
+ Moved the callback implementation from deployment servant to
+ stub.
+
+Thu Jun 3 16:25:58 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Added the dump code for ComponentPropertyDescription::type (CORBA::TypeCode).
+
+Thu Jun 3 16:15:41 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/ciao/CCM_Core.mpc:
+
+ Some tweaks to the MPC files.
+
+Thu Jun 3 16:10:11 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Forgot to remove generated members of the servant class that
+ have been moved to the base classes.
+
+Thu Jun 3 16:07:35 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.h:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Added the methods required to dump referenced values
+ correctly. Dump functions are chaged accordingly.
+
+Thu Jun 3 14:19:31 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+ * DnC/ExecutionManager/Execution_Manager.cpp:
+
+ Removed CIAO::Server_init () method calls from the server, as
+ this server does not need capabilities for explicitly processing
+ valuetypes. These calls are already present in NodeApplication
+ entity.
+
+Thu Jun 3 12:35:51 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+
+ New files added to CIAO_Server. A template base class is now
+ inserted into the inheritance hierarchy between the skeleton
+ class of the component's equivalent interface and the
+ servant class generated by the CIDL compiler. This template
+ class also has a non-template base class to hold code that
+ is based neither on the template parameters or on the
+ inheritance chain. These two classes will hold code common
+ to all generated servant classes, templatized for the
+ skeleton class type, the executor type and the context type.
+ So far, only get_all_facets() and get_all_consumers() have
+ been factored out and implemented.
+
+ * ciao/CCM_Core.mpc:
+
+ Changes to reflect the items above. Also added -Sc to the
+ generated IDL compiler command line of each project to
+ suppress the generation of the TIE classes.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Change to reflect the items listed above, and also a new
+ method to populate tables in class Servant_Impl_Base that
+ store port descriptions. So far the event consumers and
+ the facets of the component are stored.
+
+Thu Jun 3 12:37:21 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/Node_Daemon.cpp:
+
+ Used OS_NS_stdio.h header file for fopen fclose methods defined
+ in ACE_OS namespace.
+
+Thu Jun 3 10:51:32 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.idl:
+
+ Changed #include "Deployment.idl" to "#include
+ ciao/Deployment.idl" to conform to the DnC include format.
+
+Wed Jun 2 23:26:41 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompImplDesc_Handler.h:
+ * DnC/Config_Handlers/DnC_Dump.h:
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+ * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ * DnC/tests/NodeApplicationTest/run_test_simple.pl:
+
+ Updated these files to make it work with the new directory
+ structure.
+
+ Now, Let me explain the issue.
+ When I started implement the new DnC spec I was forced to change
+ some of the CIAO core implementations. The one very important
+ CIAO session container implementation is changed but not
+ significantly. However because we use MPC templates extensively
+ in CIAO some of the legacy mpb files is causing some trouble. I
+ catched this mistake when I was actually using some of the newly
+ provided functionalities in the conatainer, the red light
+ showed itself as a run time relocation error.
+
+ Another driving force of these change is from CIDLC. Since in
+ the generated code ciao/*** is used as the include file name,
+ there is no way that I can make the new container implementation
+ link with the servant project of the component implementation.
+
+Wed Jun 2 23:21:37 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ciao/CCM_Base.idl:
+ * DnC/ciao/CCM_Component.idl:
+ * DnC/ciao/CCM_Container.idl:
+ * DnC/ciao/CCM_Container_Ex.idl:
+ * DnC/ciao/CCM_Core.mpc:
+ * DnC/ciao/CCM_Event.idl:
+ * DnC/ciao/CCM_Transaction.idl:
+ * DnC/ciao/CIAO_Client_Export.h:
+ * DnC/ciao/CIAO_Container_Export.h:
+ * DnC/ciao/CIAO_Server_Export.h:
+ * DnC/ciao/CIAO_Value.idl:
+ * DnC/ciao/CIAO_common.h:
+ * DnC/ciao/CVS:
+ * DnC/ciao/Client_init.cpp:
+ * DnC/ciao/Client_init.h:
+ * DnC/ciao/Components.idl:
+ * DnC/ciao/ComponentsC.h:
+ * DnC/ciao/ComponentsS.h:
+ * DnC/ciao/Container_Base.cpp:
+ * DnC/ciao/Container_Base.h:
+ * DnC/ciao/Container_Base.inl:
+ * DnC/ciao/Container_Base.pidl:
+ * DnC/ciao/Cookies.cpp:
+ * DnC/ciao/Cookies.h:
+ * DnC/ciao/Cookies.inl:
+ * DnC/ciao/CosPersistentState.idl:
+ * DnC/ciao/Deployment.idl:
+ * DnC/ciao/Deployment_Core.idl:
+ * DnC/ciao/Deployment_stub_export.h:
+ * DnC/ciao/Deployment_svnt_export.h:
+ * DnC/ciao/NodeApp_CB_Impl.cpp:
+ * DnC/ciao/NodeApp_CB_Impl.h:
+ * DnC/ciao/NodeApplication_CallBack.idl:
+ * DnC/ciao/NodeApplication_Impl.cpp:
+ * DnC/ciao/NodeApplication_Impl.h:
+ * DnC/ciao/NodeApplication_Impl.inl:
+ * DnC/ciao/Server_init.cpp:
+ * DnC/ciao/Server_init.h:
+ * DnC/ciao/Version.h:
+
+ Added these files to replace the files in the old DnC/Core directory.
+
+Wed Jun 2 22:55:57 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/CCM_Base.idl:
+ * DnC/Core/CCM_BaseS.cpp:
+ * DnC/Core/CCM_BaseS.h:
+ * DnC/Core/CCM_Component.idl:
+ * DnC/Core/CCM_ComponentS.cpp:
+ * DnC/Core/CCM_ComponentS.h:
+ * DnC/Core/CCM_Container.idl:
+ * DnC/Core/CCM_ContainerS.cpp:
+ * DnC/Core/CCM_Container_Ex.idl:
+ * DnC/Core/CCM_Container_ExS.cpp:
+ * DnC/Core/CCM_Core.mpc:
+ * DnC/Core/CCM_Event.idl:
+ * DnC/Core/CCM_EventS.cpp:
+ * DnC/Core/CCM_EventS.h:
+ * DnC/Core/CCM_Transaction.idl:
+ * DnC/Core/CCM_TransactionS.cpp:
+ * DnC/Core/CIAO_Client_Export.h:
+ * DnC/Core/CIAO_Container_Export.h:
+ * DnC/Core/CIAO_Server_Export.h:
+ * DnC/Core/CIAO_Value.idl:
+ * DnC/Core/CIAO_ValueS.cpp:
+ * DnC/Core/CIAO_ValueS.h:
+ * DnC/Core/CIAO_common.h:
+ * DnC/Core/Client_init.cpp:
+ * DnC/Core/Client_init.h:
+ * DnC/Core/Components.idl:
+ * DnC/Core/Container_Base.cpp:
+ * DnC/Core/Container_Base.h:
+ * DnC/Core/Container_Base.inl:
+ * DnC/Core/Container_Base.pidl:
+ * DnC/Core/Cookies.cpp:
+ * DnC/Core/Cookies.h:
+ * DnC/Core/Cookies.inl:
+ * DnC/Core/CosPersistentState.idl:
+ * DnC/Core/CosPersistentStateS.cpp:
+ * DnC/Core/Deployment.idl:
+ * DnC/Core/DeploymentS.cpp:
+ * DnC/Core/Deployment_Core.idl:
+ * DnC/Core/Deployment_stub_export.h:
+ * DnC/Core/Deployment_svnt_export.h:
+ * DnC/Core/GNUmakefile:
+ * DnC/Core/GNUmakefile.CIAO_Client:
+ * DnC/Core/GNUmakefile.CIAO_Container:
+ * DnC/Core/GNUmakefile.CIAO_Server:
+ * DnC/Core/GNUmakefile.Deployment_stub:
+ * DnC/Core/GNUmakefile.Deployment_svnt:
+ * DnC/Core/NodeApp_CB_Impl.cpp:
+ * DnC/Core/NodeApp_CB_Impl.h:
+ * DnC/Core/NodeApplication_CallBack.idl:
+ * DnC/Core/NodeApplication_Impl.cpp:
+ * DnC/Core/NodeApplication_Impl.h:
+ * DnC/Core/NodeApplication_Impl.inl:
+ * DnC/Core/Object_Set_T.cpp:
+ * DnC/Core/Object_Set_T.h:
+ * DnC/Core/Object_Set_T.inl:
+ * DnC/Core/Server_init.cpp:
+ * DnC/Core/Server_init.h:
+ * DnC/Core/Version.h:
+ * DnC/Core/:
+
+ Removed all these files to avoid the suite the change of the
+ directory. Note: now DnC/Core is replaced by DnC/ciao.
+
+Wed Jun 2 21:54:51 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Base.idl:
+
+ Fixed identifier of a member of PortDescription - changed
+ 'Name' to 'name', to conform to the CCM spec.
+
+Wed Jun 2 19:22:29 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * ChangeLog:
+
+ Forgot to add change description for the previous change.
+
+Wed Jun 2 19:07:01 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * ciao/CIAO_Client_Export.h:
+ * ciao/CIAO_Container_Export.h:
+ * ciao/CIAO_Export.h:
+ * ciao/CIAO_Server_Export.h:
+ * examples/OEP/BasicSP/BasicSP_stub_export.h:
+ * examples/OEP/BasicSP/BasicSP_svnt_export.h:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec_export.h:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub_export.h:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt_export.h:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec_export.h:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_stub_export.h:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_svnt_export.h:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec_export.h:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub_export.h:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt_export.h:
+ * examples/OEP/BasicSP/EC/EC_exec_export.h:
+ * examples/OEP/BasicSP/EC/EC_stub_export.h:
+ * examples/OEP/BasicSP/EC/EC_svnt_export.h:
+ * tools/Segment_Timer/Segment_Timer_Export.h:
+ * tools/Simple_Component_Server/Simple_Server_Stub_Export.h:
+ * tools/XML_Helpers/XML_Helpers_Export.h:
+
+ Regenerated these files with -s option to take care of static
+ builds on Windows.
+
+Wed Jun 2 18:57:29 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApplication_Impl.cpp:
+ Fixed a few bugs inside.
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest.mpc:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DnC/tests/NodeApplicationTest/run_test.pl:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+
+ Added a test to do a more complete test on NodeApplication.
+ Please note that there is a name change of files. The mpc file
+ explains very thing.
+
+ * DnC/Core/Client_init.cpp:
+ I made the default value for debug_level 1, later we should
+ reverse the change.
+
+Wed Jun 2 18:37:24 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/Node_Daemon.cpp:
+
+ Changes to ensure that the DomainApplicationManager is capable
+ of calling the NodeDaemon to spawn a NodeApplicationManager for
+ the corresponding application.
+
+Wed Jun 2 16:38:48 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/MID_Handler.cpp:
+ * DnC/Config_Handlers/NIA_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+
+ Made changes to fix testing errors.
+
+Wed Jun 2 15:50:12 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc
+
+ Added Config_Handlers library to fix linking probelm in Windows.
+
+ * DnC/ExecutionManager/ExecutionManager.mpc
+
+ Added ciao_deployment_stub and CIAO_Server libraries to fix
+ linking probelm in Windows.
+
+ * DnC/RepositoryManager/RepositoryManager.mpc
+
+ Added ciao_deployment_stub library to fix linking probelm in Windows.
+
+
+Wed Jun 2 15:07:56 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Fixed errors in split_plan() function to make it work.
+
+
+Wed Jun 2 12:30:56 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/MID_Handler.cpp:
+ * DnC/Config_Handlers/NIA_Handler.cpp:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+
+ Made changes to fix some more testing errors.
+
+Wed Jun 2 11:51:57 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/Execution_Manager.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+
+ Fixed hashtable used within the ExcutionManager to check for
+ duplicates in the right manner.
+
+Wed Jun 2 10:31:27 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/handler_test.mpb:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ Updated these two file to make it compile with working on the
+ system like Debian or RedHat which have the pre-build binary
+ installed instead of xerces source.
+
+Wed Jun 2 00:48:30 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/Process_Element.i:
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ Made changes to fix testing errors.
+
+Tue Jun 1 18:13:23 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApplication_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Updated these two files to fix the bug related to nil ();
+
+Tue Jun 1 18:09:19 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.mpc
+
+ Modify this to fix linking errors for missing library.
+
+Tue Jun 1 17:52:29 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc
+
+ Modify this to fix linking errors.
+
+
+Tue Jun 1 17:39:57 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompPortDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPortDesc_Handler.h:
+ * DnC/Config_Handlers/CompPropDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPropDesc_Handler.h:
+
+ Removed the above handlers as they are not used at all.
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ Updated the MPC file accordingly.
+
+Tue Jun 1 15:30:49 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Basic_Handler.h:
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/Cap_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPortDesc_Handler.cpp:
+ * DnC/Config_Handlers/Process_Element.i:
+ * DnC/Config_Handlers/Process_Element.tpp:
+
+ Made changes to fix some testing errors
+
+Tue Jun 1 15:08:23 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeManager/NodeApplicationManager_Impl.cpp:
+
+ Removed these files; New implementation present in
+ DnC/NodeApplicationManager directory
+
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon.mpc:
+
+ Changed the Node Manager to interact with the new
+ NodeApplication Manager implementation.
+
+Tue Jun 1 15:08:13 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest/run_test.pl:
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+
+ Added run_test.pl to run this test via scripts
+
+Tue Jun 1 14:48:01 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ Updated the class to cooperate with NodeManager.
+ There is some memory management and lifecycle of object issue
+ solved by this update. Basically speaking, since NodeManager is
+ a daemon (running forever if nothing went wrong) we have to make
+ sure that the NodeApplicationManager will be actually destroyed
+ when its not needed any more. This update enables us to do this
+ and prevented us from hacking the OMG IDL file.
+
+Tue Jun 1 12:36:10 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Basic_Handler.cpp:
+ * DnC/Config_Handlers/Basic_Handler.h:
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CAD_Handler.h:
+ * DnC/Config_Handlers/CPR_Handler.h:
+ * DnC/Config_Handlers/Cap_Handler.h:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.h:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.h:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.h:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/IAD_Handler.h:
+ * DnC/Config_Handlers/IR_Handler.h:
+ * DnC/Config_Handlers/MID_Handler.h:
+ * DnC/Config_Handlers/NIA_Handler.h:
+ * DnC/Config_Handlers/PCI_Handler.h:
+ * DnC/Config_Handlers/PC_Handler.h:
+ * DnC/Config_Handlers/Plan_Handler.h:
+ * DnC/Config_Handlers/Process_Element.i:
+
+ Made changes to fix testing errors.
+
+Tue Jun 1 12:09:18 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Changed the init method to return a objectRef of
+ the NodeApplicationManager to make NodeManager happy.
+
+Tue Jun 1 11:40:29 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Basic_Handler.h
+ * DnC/Config_Handlers/CompIntrDesc_Handler.h
+ * DnC/Config_Handlers/CompPkgDesc_Handler.h
+ * DnC/Config_Handlers/CompPortDesc_Handler.h
+ * DnC/Config_Handlers/CompPropDesc_Handler.h
+ * DnC/Config_Handlers/Config_Error_Handler.h
+ * DnC/Config_Handlers/DnC_Dump.h
+ * DnC/Config_Handlers/IAD_Handler.h
+ * DnC/Config_Handlers/IR_Handler.h
+ * DnC/Config_Handlers/MID_Handler.h
+ * DnC/Config_Handlers/NIA_Handler.h
+ * DnC/Config_Handlers/PCI_Handler.h
+ * DnC/Config_Handlers/PC_Handler.h
+ * DnC/Config_Handlers/RUK_Handler.h
+
+ Fixed the export libary problem for Windows.
+
+Tue Jun 1 10:49:49 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+
+ Made changes to fix testing errors.
+
+Tue Jun 1 10:41:49 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ Finished the NodeApplicationManager except the connection
+ part.
+
+Tue Jun 1 10:16:21 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Export.h
+
+ Added this file for Windows to export library.
+
+
+Tue Jun 1 10:12:46 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager.idl:
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/Repository_Manager.cpp:
+
+ Made a first-cut check-i for repository manager.
+
+Tue Jun 1 10:01:25 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * examples/OEP/BasicSP/BMDevice/BMDevice.cidl:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.cidl:
+
+ Included BasicSP.idl to fix problems during static linking.
+
+Tue Jun 1 00:42:56 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Process_Element.cpp:
+
+ Made changes to fix some testing errors.
+
+
+Tue Jun 1 00:32:22 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Process_Element.cpp:
+
+ Made changes to fix some testing errors.
+
+Mon May 31 18:50:28 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+
+ Made changes to fix some testing errors.
+
+Mon May 31 18:27:47 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+ * tools/Segment_Timer/Segment_Timer.h:
+ * tools/static_configurator/Static_Configurator.cpp:
+
+ Made some fixes related to DLL exports to get rid of
+ build errors on Windows.
+
+Mon May 31 18:25:30 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Any_Handler.cpp:
+ * DnC/Config_Handlers/CPK_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+
+ Made some changes to fix some testing errors.
+
+
+Mon May 31 17:18:55 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Any_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPropDesc_Handler.cpp:
+ * DnC/Config_Handlers/DT_Handler.cpp:
+ * DnC/Config_Handlers/DT_Handler.h:
+
+ Resolved Typecode and Any related errors relating to parsing the
+ Deployment plan.
+
+Mon May 31 16:33:16 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added support for the emits-related navigation method,
+ and automatic registration of value factories for
+ event consumers. Also fixed bug in code generation
+ for uses multiple.
+
+ * ciao/Container_Base.h:
+
+ Added CIAO_REGISTER_OBV_FACTORY macro, used by the
+ CIDL compiler when generating factory registration
+ calls for event consumers. There is also a version of
+ this macro called CIAO_REGISTER_VALUE_FACTORY in
+ CIAO_common.h. This version takes an extra argument
+ which is an ORB pointer. This macro was separately
+ added, planning for the day when we may want
+ components to run with a separate process and/or ORB
+ from their containers. These two versions will have
+ to be reconciled at some point.
+
+ * tools/Segment_Timer/Segment_Timer.mpc:
+
+ Added the export file to the project.
+
+ * tools/XML_Helpers/RTConfig_Handlers.cpp:
+
+ Added some static casts to eliminate warnings on
+ MSVC.
+
+Mon May 31 16:19:17 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ Updated this file.
+
+ * DnC/NodeApplicationManager/CIAO_NAM_Export.h:
+ Added this export file.
+
+ * DnC/NodeApplicationManager/NodeApplicationManager.cpp:
+ Removed this file since NodeApplicationManager will be
+ collocated with NodeManager.
+
+ * DnC/NodeApplicationManager/CIAO_NodeApplicationManager.idl:
+ Removed this file since I have moved this into deployment_svnt
+ project.
+
+ * DnC/Core/NodeApplication_Impl.cpp:
+ Changed from 0 to CORBA::Object::_nil () as return value.
+
+Mon May 31 15:18:25 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/test/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ * DnC/test/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DnC/test/NodeApplicationTest/RoundTripEI.idl:
+ * DnC/test/NodeApplicationTest/RoundTrip_exec.cpp:
+ * DnC/test/NodeApplicationTest/RoundTrip_exec.h:
+
+ Changed the idl interface to supports rather than provides as
+ this feature has not been implemented yet.
+
+Mon May 31 14:48:21 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Added export library thing for Windows.
+
+
+Mon May 31 13:35:15 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ Added the missing dependency library to the mpc file, which
+ is CIAO_Server library.
+
+Mon May 31 13:10:15 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc:
+
+ Added necessary dependency libraries to the mpc file, which
+ causes build probelm under Windows.
+
+ * DnC/DomainApplication/DomainApplication_Impl.h
+ * DnC/DomainApplication/DomainApplication_Impl.cpp
+
+ Removed these files since DomainApplication are now
+ combined with DomainApplicationManager.
+
+
+Mon May 31 11:00:50 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApplication_Impl.cpp:
+ Fixed one bug of the refence count of Component instance
+ objectRef.
+
+Mon May 31 00:40:25 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApplication_Impl.cpp:
+ * DnC/Core/NodeApplication_Impl.h:
+
+ Added component/home removal functionality.
+ Also added a install method which will be called by
+ NodeApplicationManager to install everything which belong
+ to the NodeApplication.
+
+Sun May 30 17:47:10 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/tests/NodeApplicationTest:
+
+ Directory for testing CIAO's NodeApplication entity
+
+ * DnC/tests/NodeApplicationTest/NodAppTest.mpc:
+ mpc file for this test case
+
+ * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl:
+ * DnC/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl:
+ * DnC/tests/NodeApplicationTest/RoundTripEI.idl:
+
+ A simple component as a test case that provides an interface
+ LatencyTest which has a single operation defined that cubes a
+ long
+
+ * DnC/tests/NodeApplicationTest/RoundTrip_stub_export.h:
+ * DnC/tests/NodeApplicationTest/RoundTrip_svnt_export.h:
+ * DnC/tests/NodeApplicationTest/RoundTrip_exec_export.h:
+
+ Export files to keep windows happy
+
+ * DnC/tests/NodeApplicationTest/RoundTrip_exec.h:
+ * DnC/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+
+ Component implementation definitions
+
+ * DnC/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+
+ Client program that tries to install the RoundTrip home with the
+ NodeApplication aka ComponentServer, create the Component,
+ i.e. RoundTrip, and invoke the cube long operation.
+
+ This test case exercises the call path for home installation,
+ component creation within the new DnC specification. This test
+ case should also have component removal operations, which will
+ be added as and when this is implemented in CIAO.
+
+Sun May 30 15:43:24 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/NodeApplication/NodeApplication.cpp:
+
+ Resolved compilation and link errors. Now the NodeApplication
+ can be started generating an ior! Next step will be to write a
+ test client to install homes and create components.
+
+Sun May 30 14:36:21 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/NodeApplication/NodeApplication.mpc:
+ * DnC/NodeApplication/NodeApplication.cpp:
+ * DnC/Core/Container_Base.h:
+ * DnC/Core/Container_Base.cpp:
+ * DnC/Core/Deployment_Core.idl:
+ * DnC/Core/NodeApplication_Impl.h:
+ * DnC/Core/NodeApplication_Impl.cpp:
+
+ Updateed those files to finish home creation part.
+
+Sat May 29 15:25:22 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/RepositoryManager/RepositoryManager_Impl.h:
+ * DnC/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DnC/RepositoryManager/RepositoryManager.mpc:
+
+ First cut implementation of Repository Manager.
+
+Fri May 28 23:17:44 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.idl:
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+
+ Fixed compilation and linking errors stemming from refactoring
+ DnC core to include the Deployment.idl files. Modified the
+ include paths as now these are autogenerated from the
+ ciao_deployment.mpb file
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Removed the getApplications () member function the the header
+ file. This is not present as a part of the interface. This
+ resolves link errors
+
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+
+ Removed the unnecessary ciao_server target from the mpc file as
+ this library is not needed
+
+Fri May 28 10:18:45 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Fixed warnings resulting from non usage of .in () while
+ assigning to a _ptr from a _var.
+
+ * DnC/DomaiinApplicationManager/DomainApplicationManager_Impl.inl:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Created file for storing inline functions
+
+Thu May 27 22:16:26 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedEDE.idl:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDeviceE.idl:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplayE.idl:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.h:
+ * examples/handcrafted/BasicSP_EC/EC/ECE.idl:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h:
+
+ Removed these files from the Repo. Please be careful when you
+ commit files and please double check EVEN you have done make
+ realclean!
+
+
+Thu May 27 22:14:18 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/static_configurator/Static_Configurator.mpc:
+ * tools/static_configurator/Static_Configurator.h:
+ * tools/static_configurator/Static_Configurator.cpp:
+ * tools/static_configurator/Static_Assembly_Visitors.cpp:
+ * tools/static_configurator/Static_Assembly_Parser.cpp:
+
+ Made changes related to performance measurement of static
+ configuration mechanisms.
+
+ * tools/Segment_Timer/Segment_Timer_Export.h:
+ * tools/Segment_Timer/Segment_Timer.{cpp,h,mpc}:
+ * tools/Segment_Timer/README:
+
+ Adding segment timer files. This class is used in the
+ performance measurements of static and dynamic configurations.
+
+ * tools/RTComponentServer/RTComponentServer.mpc:
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+
+ Made changes related to performance measurement of dynamic
+ configuration mechanisms.
+
+Thu May 27 18:39:10 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Redefine the Hash map to make all the artifacts (NodeManager,
+ NodeApplicationManager, NodeApplication, Connections) handy
+ to use. Changed all the member functions to reflect this
+ change.
+
+Thu May 27 17:45:26 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/handler_test.mpb:
+
+ Added reqires dnc to stop the noise on the scoreboard.
+
+Thu May 27 22:10:27 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+ * DnC/Core/Deployment.idl:
+
+ Added DeploymentPlan::UUID.
+
+Thu May 27 22:02:21 2004 Emre Turkay <turkaye@dre.vanderbilt.edu>
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+
+ Added handler for DeploymentPlan::UUID
+
+Thu May 27 16:42:26 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added a check to make sure that duplicate NodeManager names are
+ not added to the internal hashmap maintained in this
+ entity. This ensures that the length always corresponds to the
+ unique set of node names. Thanks to Gan Deng for pointing this
+ out.
+
+Thu May 27 16:38:19 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd: Added UUID element to deploymentPlan.
+
+
+Thu May 27 13:03:02 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added the get_plan_info () method, that parses the plan
+ according to the individual nodes on which the plan needs to be
+ deployed. Also changed internal tables to use ACE_Vector to
+ store plan related information.
+
+Thu May 27 11:02:47 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added two new operations get_uuid and set_uuid that will help
+ the ExecutionManager associating the DomainApplicationManager
+ with a concrete DeploymentPlan passed. These are defined on the
+ servant only.
+
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+
+ Implementation of Deployment::ExecutionManager interface. This
+ has now been integrated with the DomainApplicationManager.
+
+ * DnC/DomainApplicationManager/Deployment_Configuration.h:
+
+ Removed "#include Core/.." as now the include paths are
+ generated from the deployment_svnt.mpb
+
+ * DnC/ExecutionManager/Execution_Manager.cpp:
+ * DnC/ExecutionManager/ExectionManager.idl:
+
+ CIAO's implementation of ExecutionManager Daemon
+ interface. Added a shutdown () method for clean release of
+ resources associated with the Daemon
+
+ * DnC/ExecutionManager/ExecutionManager.mpc:
+
+ mpc file to generate Makefiles!
+
+Wed May 26 17:08:21 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Changed the member functions signature in accordance with the
+ modified DomainApplicationManager IDL interface.
+
+
+Wed May 26 16:24:54 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Core/Deployment.idl
+
+ Modified the IDL interface of the DomainApplicationManager,
+ which now integrates the functionality of both
+ DomainApplicationManager and DomainApplication in the original
+ DnC spec. The old DomainApplication interface is deleted.
+
+Wed May 26 11:33:11 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Core/CCM_Core.mpc
+
+ Added necessary library (TAO_Valuetype) to the Deployment_stub
+ project. Removed the unnecessary Deployment_CoreC.cpp file which
+ caused linking error.
+
+Wed May 26 11:15:23 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApplication_Impl.cpp
+
+ Fixed linking errors because the "start" method on the
+ NodeApplication used a wrong function signature.
+
+Wed May 26 11:06:23 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.mpc
+ * DnC/DomainApplicationManager/Deployment_Configuration.inl
+
+ Added these two files.
+
+Wed May 26 11:03:23 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Core/CCM_Core.mpc
+
+ Fixed typo in this mpc file.
+
+Wed May 26 10:14:23 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager_Impl.*
+
+ Fixed the compiling errors. More functinality will be
+ added soon.
+
+ * DnC/DomainApplicationManager/Deployment_Configuration.*
+
+ Added this helper class to deal with deployment topology
+ data file.
+
+
+Tue May 25 22:40:23 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/NodeApp_CB_Impl.cpp:
+ * DnC/Core/NodeApp_CB_Impl.h:
+ * DnC/Core/NodeApplication_CallBack.idl:
+ Added these files for NodeApplication callback interface.
+
+ * DnC/Core/CCM_Core.mpc:
+ Updated the file to reflect above changes.
+
+Tue May 25 13:05:35 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ * DnC/Property.idl:
+ * DnC/Deployment.mpc:
+ * DnC/Deployment_stub_export.h:
+ * DnC/Deployment_stub_export.h:
+ * DnC/Core/Container_Impl.h:
+ * DnC/Core/Container_Impl.inl:
+ * DnC/Core/Container_Impl.cpp:
+ * DnC/Core/CCM_Deplyment.idl:
+
+ Removed these files. Everything is moved into the DnC/Core
+ directory, also the Deployment.idl is splited into
+ Deployment.idl and Deployment_Core.idl. The first one contains
+ information needed for DnC runtime except NodeApplication.
+ The latter file combines the old Container with NodeApplication.
+
+ * DnC/Core/Deployment.idl:
+ * DnC/Core/Deployment_Core.mpc:
+ * DnC/Core/Deployment_stub_export.h:
+ * DnC/Core/Deployment_stub_export.h:
+ * DnC/Core/NodeApplication_Impl.h:
+ * DnC/Core/NodeApplication_Impl.inl:
+ * DnC/Core/NodeApplication_Impl.cpp:
+ Added these files.
+
+ * DnC/Core/CCM_Core.mpc:
+ This file updated to reflect the chages above.
+
+ The idea is to use the old container as the NodeApplication and
+ the ComponentServer. This implies that new process will be
+ spawned upon new NodeApplication is created.
+
+ In turn the NodeApplicationManager will be collocated with
+ NodeManager.
+
+ These changes give us advantages for implementing the spec in an
+ effecient way without inccuring much confilicts with the Spec.
+
+
+Tue May 25 12:06:37 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_exec.{cpp,h}:
+ * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.{cpp,h}:
+
+ Fixed compile errors regarding pure virtual functions not being
+ implemented. Added empty method definitions for ciao_preactivate
+ and ciao_postactivate.
+
+Tue May 25 12:08:48 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/Node_Daemon.cpp:
+
+ Removed repetitive registration with the IORTable
+
+Tue May 25 12:02:52 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd:
+
+ Initial set of "normalization" changes.
+
+
+ * DnC/Deployment.xsd.orig:
+ * DnC/XMI.xsd.orig:
+
+ Added backup copies.
+
+Mon May 24 14:13:51 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DnC/DomainApplicationManager/DomainApplicationManager.h:
+ * DnC/DomainApplicationManager/DomainApplicationManager.cpp:
+
+ * DnC/DomainApplication/DomainApplication.h:
+ * DnC/DomainApplication/DomainApplication.cpp:
+
+ Added these files.
+
+
+Mon May 24 21:18:07 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test_remote.pl:
+ * examples/Hello/descriptors/run_test_default.pl:
+
+ Updated the test script since Assembly_Deployer takes
+ two more command line options.
+
+Mon May 24 19:44:32 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/ADD_Handler.*:
+ * DnC/Config_Handlers/ACD_Handler.*:
+ * DnC/Config_Handlers/APM_Handler.*:
+ * DnC/Config_Handlers/CRDD_Handler.*:
+ * DnC/Config_Handlers/DP_Handler.*:
+ * DnC/Config_Handlers/IDD_Handler.*:
+ * DnC/Config_Handlers/IRDD_Handler.*:
+ * DnC/Config_Handlers/MDD_Handler.*:
+ * DnC/Config_Handlers/PCD_Handler.*:
+ * DnC/Config_Handlers/PPM_Handler.*:
+ * DnC/Config_Handlers/PSPE_Handler.*:
+ * DnC/Config_Handlers/PSPR_Handler.*:
+ * DnC/Config_Handlers/RDD_Handler.*:
+ * DnC/Config_Handlers/SID_Handler.*:
+ * DnC/Config_Handlers/SPE_Handler.*:
+ * DnC/Config_Handlers/SPR_Handler.*:
+
+ Removed the above mentioned handlers as they are
+ not used.
+
+Mon May 24 11:50:15 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+
+ Added changes to reflect the changes made in the IDL file.
+
+
+Sun May 23 14:31:51 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.mpc:
+
+ Added exename flag to set the right executable name to be generated
+
+Sun May 23 13:32:34 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeManager/NodeApplicationManger_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/Node_Daemon.cpp:
+
+ Got the call-chain working, wherein, a preparePlan call to the
+ Daemon creates a NodeApplication Manager and passes along the
+ plan as well. Next, now the Daemon, depending on the command
+ line argument passed can also register with the Naming Service
+ using the node-name as the context. This enables multiple
+ NodeManagers to be activated on different hosts. An simple IOR
+ based scheme will not work in this case.
+
+Fri May 21 20:12:43 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/NodeManager/NodeDaemon.idl:
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/Node_Daemon.cpp:
+ * DnC/NodeManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeManager/NodeApplicationManager_Impl.cpp:
+
+ Updated these files inline with the Specification i.e. removed
+ un-necessary methods along with making the
+ NodeApplicationManager a CORBA::Object rather than a CORBA
+ server. In this case, the NodeManager, i.e. the NodeDaemon, will
+ share the same ORB with the the Application Manager. Further,
+ the mpc file was updated to make things compile and link
+ properly.
+
+Thu May 20 23:29:54 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd:
+ Uploaded the new schema.
+
+Thu May 20 19:28:20 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/CCM_Core.mpc
+ * DnC/Core/CCM_Deployment.idl
+ * DnC/Core/ComponentServer_Impl.cpp
+ * DnC/Core/ComponentServer_Impl.h
+ * DnC/Core/ComponentServer_Impl.inl
+ * DnC/Core/Container_Impl.cpp
+ * DnC/Core/Container_Impl.h
+
+ Removed the ComponentInstallation interfaces.
+ Now the CORE of new CIAO should be fixed.
+
+Thu May 20 18:54:01 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Updated the IDL for Component Data Model changes.
+
+Thu May 20 14:44:48 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tests/RTCCM/DiffServ/Controller/Controller.cpp:
+
+ No RT-isms necessary anymore.
+
+Thu May 20 14:31:20 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tests/RTCCM/DiffServ/descriptors/rtsvc.conf:
+
+ This file is no longer needed.
+
+ * tests/RTCCM/DiffServ/descriptors/run_test.pl:
+
+ No need to specify rtsvc.conf file.
+
+ * tools/RTComponentServer/RTComponentServer.cpp (main):
+
+ No need to check that multiple priorities are supported. Some
+ servers can do with one priority.
+
+Thu May 20 13:40:25 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tests/RTCCM/DiffServ/Sender/Sender.mpc:
+ * tests/RTCCM/DiffServ/Sender/Custom_Network_Priority_Mapping.cpp:
+
+ Simply refer to the same files in TAO/tests/RTCORBA/Diffserv
+ instead of making a copy here.
+
+ * tests/RTCCM/DiffServ/Receiver/Receiver_exec.cpp:
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+ * tests/RTCCM/DiffServ/descriptors/run_test.pl:
+
+ Minor fixes.
+
+Thu May 20 11:34:33 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp:
+
+ Added missing include file.
+
+ * tests/RTCCM/DiffServ/descriptors/run_test.pl:
+
+ Added new assembly deployer option.
+
+ * tests/RTCCM/DiffServ/descriptors/rtsvc.conf:
+
+ Added FIFO scheduling option.
+
+ * tests/RTCCM/DiffServ/Controller/Controller.cpp (svc):
+
+ Minor fixes.
+
+Thu May 20 10:36:23 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Core/CCM_Base.idl
+ * DnC/Core/CCM_Component.idl
+ * DnC/Core/CCM_Container.idl
+ * DnC/Core/CCM_Container_Ex.idl
+ * DnC/Core/CCM_Core.mpc
+ * DnC/Core/CCM_Deployment.idl
+ * DnC/Core/CCM_Event.idl
+ * DnC/Core/CCM_Transaction.idl
+ * DnC/Core/CIAO_Client_Export.h
+ * DnC/Core/CIAO_Container_Export.h
+ * DnC/Core/CIAO_Server_Export.h
+ * DnC/Core/CIAO_Value.idl
+ * DnC/Core/CIAO_common.h
+ * DnC/Core/Client_init.cpp
+ * DnC/Core/Client_init.h
+ * DnC/Core/ComponentInstallation_Impl.cpp
+ * DnC/Core/ComponentInstallation_Impl.h
+ * DnC/Core/ComponentInstallation_Impl.inl
+ * DnC/Core/ComponentServer_Impl.cpp
+ * DnC/Core/ComponentServer_Impl.h
+ * DnC/Core/ComponentServer_Impl.inl
+ * DnC/Core/Component_Base.idl
+ * DnC/Core/Components.idl
+ * DnC/Core/Container_Base.cpp
+ * DnC/Core/Container_Base.h
+ * DnC/Core/Container_Base.inl
+ * DnC/Core/Container_Base.pidl
+ * DnC/Core/Container_Impl.cpp
+ * DnC/Core/Container_Impl.h
+ * DnC/Core/Container_Impl.inl
+ * DnC/Core/Cookies.cpp
+ * DnC/Core/Cookies.h
+ * DnC/Core/Cookies.inl
+ * DnC/Core/CosPersistentState.idl
+ * DnC/Core/Object_Set_T.cpp
+ * DnC/Core/Object_Set_T.h
+ * DnC/Core/Object_Set_T.inl
+ * DnC/Core/Server_init.cpp
+ * DnC/Core/Server_init.h
+ * DnC/Core/Version.h
+
+ Finished refactoring the Core part of CIAO.
+
+Wed May 19 15:15:21 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * tests/RTCCM/DiffServ:
+
+ Added a new DiffServ test. This test is similar to the
+ RTCORBA/DiffServ test but uses components instead of a client
+ and server.
+
+ Here are the new files:
+
+ - Controller/Controller.cpp
+ - Controller/Controller.mpc
+ - Receiver/Receiver.cidl
+ - Receiver/Receiver.idl
+ - Receiver/Receiver.mpc
+ - Receiver/Receiver_exec.cpp
+ - Receiver/Receiver_exec.h
+ - Receiver/Receiver_exec_export.h
+ - Receiver/Receiver_stub_export.h
+ - Receiver/Receiver_svnt_export.h
+ - Sender/Custom_Network_Priority_Mapping.cpp
+ - Sender/Custom_Network_Priority_Mapping.h
+ - Sender/Sender.cidl
+ - Sender/Sender.idl
+ - Sender/Sender.mpc
+ - Sender/Sender_exec.cpp
+ - Sender/Sender_exec.h
+ - Sender/Sender_exec_export.h
+ - Sender/Sender_stub_export.h
+ - Sender/Sender_svnt_export.h
+ - common/DiffServ.idl
+ - common/DiffServ.mpc
+ - common/DiffServ_stub_export.h
+ - common/DiffServ_svnt_export.h
+ - descriptors/CIAO_Installation_Data.ini
+ - descriptors/Receiver.csd
+ - descriptors/Receiver.ssd
+ - descriptors/Sender.csd
+ - descriptors/Sender.ssd
+ - descriptors/default.cad
+ - descriptors/remote.cad
+ - descriptors/rtsvc.conf
+ - descriptors/test.dat
+
+Tue May 18 23:20:10 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.h:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ Updated for handling HREF and IDREF tags.
+
+Tue May 18 14:43:51 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Property_Handler.h:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+
+ Revoked previous commit.
+
+Tue May 18 14:25:25 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Property_Handler.h:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+
+ Added a xercesc::DOMNode * as a formal argument. Though this
+ argument is unnecessary in the process_property () function,
+ this was necessary to have a common signature for all the
+ process_* functions, so that they could be templatized.
+
+Tue May 18 12:01:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CAD_Handler.h:
+
+ Updated to handle HREF and IDREF tags.
+
+Tue May 18 06:30:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ Fixed typos in this MPC file
+
+Tue May 18 00:54:00 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CAD_Handler.h:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Deployment.idl:
+
+ Made a change to the IDL for the ComponentDataModel
+ elements.
+
+ Updated the affected handlers.
+
+Mon May 17 22:15:11 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/index.html:
+ * docs/EnvVars.html:
+
+ Left over files from RTCIAO-tests branch merge. Thanks to
+ Nanbor for pointing this out.
+
+Mon May 17 21:07:25 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/static_configurator/Static_Assembly_Visitors.h:
+ * tools/static_configurator/Static_Configurator.cpp:
+ * tools/static_configurator/Static_Configurator.mpc:
+
+ Fixed some compile errors because of a typo.
+
+Mon May 17 19:29:43 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+ * tools/RTComponentServer/RTServer_Impl.h:
+ * tools/RTComponentServer/RTServer_Impl.inl: Added extra
+ parameters to RTContainer_Impl, RTSession_Container and
+ ComponentServer_Impl ctors for static configuration.
+
+ * tools/static_configurator/Static_Assembly.h:
+ * tools/static_configurator/Static_Assembly_Visitors.cpp:
+ * tools/static_configurator/Static_Assembly_Visitors.h:
+ * tools/static_configurator/Static_Configurator.cpp:
+ * tools/static_configurator/Static_Configurator.h:
+ * tools/static_configurator/Static_Configurator.mpc:
+
+ Changes to statically parse .rtcad files and generate main
+ driver for static RTCCM applications.
+
+Mon May 17 16:16:37 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ Merging RTCIAO-tests branch to the main trunk. This branch
+ contained the RTCCM tests from Nanbor (nanbor@txcorp.com).
+
+ * ciao/CIAO_common.h:
+ * ciao/Client_init.cpp: Minor modifications to CIAO core. Addition
+ of CIAO_debug_level.
+
+ * ciao/ComponentInstallation_Impl.cpp:
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/ServerActivator_Impl.h: Addition of extra command line
+ flags to be passed on to the component server during its spawning.
+
+ * tests/RTCCM/Priority_Test/descriptors/CB_Worker.csd:
+ * tests/RTCCM/Priority_Test/descriptors/IOB_Worker.csd:
+ * tests/RTCCM/Priority_Test/descriptors/Worker.ssd:
+ * tests/RTCCM/Priority_Test/descriptors/CIAO_Installation_Data.ini:
+ * tests/RTCCM/Priority_Test/descriptors/Controller.csd:
+ * tests/RTCCM/Priority_Test/descriptors/Controller.ssd:
+ * tests/RTCCM/Priority_Test/descriptors/RTsvc.conf:
+ * tests/RTCCM/Priority_Test/descriptors/svcmap.dat:
+ * tests/RTCCM/Priority_Test/descriptors/test.dat:
+ * tests/RTCCM/Priority_Test/descriptors/test.rtd:
+ * tests/RTCCM/Priority_Test/descriptors/basic-remote.cad:
+ * tests/RTCCM/Priority_Test/descriptors/basic_remote.pl:
+ * tests/RTCCM/Priority_Test/descriptors/basic_rt.rtd:
+ * tests/RTCCM/Priority_Test/descriptors/basic_test.pl:
+ * tests/RTCCM/Priority_Test/descriptors/bench.conf:
+ * tests/RTCCM/Priority_Test/descriptors/Controller25.csd:
+ * tests/RTCCM/Priority_Test/descriptors/Controller50.csd:
+ * tests/RTCCM/Priority_Test/descriptors/Controller75.csd:
+ * tests/RTCCM/Priority_Test/descriptors/demo-25.cad:
+ * tests/RTCCM/Priority_Test/descriptors/demo-50.cad:
+ * tests/RTCCM/Priority_Test/descriptors/demo.cad:
+ * tests/RTCCM/Priority_Test/descriptors/no-rt-3rates.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rate_test.pl:
+ * tests/RTCCM/Priority_Test/descriptors/remote.dat:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-high-dec.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-high-inc.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-low-dec.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-low-inc.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-mid-dec.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rate-rt-mid-inc.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rates-dec.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rates-inc.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rates-laned-dec.cad:
+ * tests/RTCCM/Priority_Test/descriptors/rt-3rates-laned-inc.cad:
+ * tests/RTCCM/Priority_Test/descriptors/shared_rt.rtd:
+
+ New files for running the test.
+
+ * tests/RTCCM/Priority_Test/Priority_Test.mpc:
+ * tests/RTCCM/Priority_Test/Workers/Worker.mpc:
+ * tests/RTCCM/Priority_Test/Controllers/Controller.mpc: Manually
+ changed the generated MPC files as the "depends" keyword is
+ depricated by "after" in MPC, and the dependencies is broken in
+ earlier changes in MPC generator scripts.
+
+ * tests/RTCCM/Priority_Test/Priority_Test.idl: Changed the use of
+ "unsigned long" type to "long". CIDL compiler doesn't seem to
+ support unsigned long yet.
+
+ * tests/RTCCM/Priority_Test/Workers/Worker.idl: Fixed a typo.
+
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.h:
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.h: Fixed a
+ couple of compilation errors and changed some operation
+ signatures to match the interface change in Priority_Test.idl.
+
+ * tests/RTCCM/Priority_Test/Priority_Test.idl:
+ * tests/RTCCM/Priority_Test/Controllers/Controller.cidl:
+ * tests/RTCCM/Priority_Test/Controllers/Controller.idl:
+ * tests/RTCCM/Priority_Test/Controllers/Controller.mpc:
+ * tests/RTCCM/Priority_Test/Controllers/ControllerEI.idl:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_exec.cpp:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_exec.h:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_exec_export.h:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_stub_export.h:
+ * tests/RTCCM/Priority_Test/Controllers/Controller_svnt_export.h:
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp:
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.h:
+ * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.h:
+ * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.cpp:
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.h:
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.h:
+ * tests/RTCCM/Priority_Test/Workers/README:
+ * tests/RTCCM/Priority_Test/Workers/Worker.cidl:
+ * tests/RTCCM/Priority_Test/Workers/Worker.idl:
+ * tests/RTCCM/Priority_Test/Workers/Worker.mpc:
+ * tests/RTCCM/Priority_Test/Workers/WorkerEI.idl:
+ * tests/RTCCM/Priority_Test/Workers/Worker_exec_export.h:
+ * tests/RTCCM/Priority_Test/Workers/Worker_stub_export.h:
+ * tests/RTCCM/Priority_Test/Workers/Worker_svnt_export.h:
+ * tests/RTCCM/Priority_Test/descriptors/CB_Worker.csd:
+ * tests/RTCCM/Priority_Test/descriptors/IOB_Worker.csd:
+ * tests/RTCCM/Priority_Test/descriptors/Worker.ssd:
+
+ New files for test Worker components.
+
+ * tests/RTCCM/Priority_Test/Priority_Test.idl:
+ * tests/RTCCM/Priority_Test/Priority_Test.mpc:
+ * tests/RTCCM/Priority_Test/Priority_Test_stub_export.h:
+ * tests/RTCCM/Priority_Test/Priority_Test_svnt_export.h:
+
+ Added files for RTCCM Priority_Test project.
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/BasicSP/EC/EC_exec.cpp:
+ * examples/OEP/BasicSP/EC/client.cpp:
+ * examples/OEP/BasicSP/EC/controller.cpp:
+ * examples/OEP/Display/GPS/GPS_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp:
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+
+ Added CIAO::debug_level to facilitate conditional printing of
+ debug messages.
+
+ * performance-tests/Benchmark/RoundTripClient/run_test.pl:
+ * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl:
+
+ Setting CIAO_ROOT if not already set.
+
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.h:
+ * tools/Assembly_Deployer/Assembly_Impl.inl:
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp:
+ * tools/RTComponentServer/ComponentServer_Task.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp:
+ * tools/XML_Helpers/Svcconf_Handler.cpp:
+
+ Minor changes including adding CIAO::debug_level.
+
+ * tools/ComponentServer/ComponentServer.cpp: Changes to run
+ component server in SCHED_FIFO class.
+
+ * tools/Daemon/CIAO_Daemon.cpp: Added command line processing for
+ extra command-line argument for component server process.
+
+ * tools/XML_Helpers/XMLHelpers.mpc: Added ciao_client to the base
+ project list so as to link in the CIAO::debug_level feature.
+
+Mon May 17 19:01:36 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/ExecutionManager/ExecutionManager_Impl.cpp:
+ * DnC/ExecutionManager/ExecutionManager_Impl.h:
+ * DnC/ExecutionManager/ExecutionManager_Impl.inl:
+ * DnC/NodeApplicationManager/CIAO_NodeApplicationManager.idl:
+ * DnC/NodeApplicationManager/NodeApplicationManager.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DnC/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ * DnC/NodeManager/NodeDaemon.idl:
+ * DnC/NodeManager/NodeDaemon.mpc:
+ * DnC/NodeManager/NodeDaemon_Impl.cpp:
+ * DnC/NodeManager/NodeDaemon_Impl.h:
+ * DnC/NodeManager/NodeDaemon_Impl.inl:
+ * DnC/NodeManager/Node_Daemon.cpp:
+ Added these files.
+
+ * DnC/Node/NodeApplicationManager_Impl.h
+ * DnC/Node/NodeApplication_Impl.h
+ Removed these files.
+
+Mon May 17 16:17:40 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.h:
+
+ Updated the handler to handle updated IDREFs.
+
+Mon May 17 10:11:46 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Plan_Handler.h:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Replaced the use of a Synch_Mutex with that of a Null_Mutex as
+ there will not be multiple threads parsing the handler.
+
+Mon May 17 11:24:11 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DnC/Config_Handlers/Plan_Handler.h:
+ Fixed fuzz error
+
+Sun May 16 12:39:40 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.h:
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Added dump functions to print out values encoded within a
+ CORBA::Any. Currently, this handles only basic types, support
+ for types encoded using CORBA::DnyAny needs to be incorporated.
+
+Sun May 16 01:17:44 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Changed the data structures needed by the Execution
+ data model, to conform to the model given in the
+ specification
+
+ * DnC/Config_Handlers/Plan_Handler.cpp:
+ * DnC/Config_Handlers/Plan_Handler.h:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+
+ Added a new top level handler for the DeploymentPlan.
+
+ Since the IDL changed, i had to change 11 other handlers
+ and included them within the top level handler.
+
+ Updated the .mpc file accordingly.
+
+Fri May 14 20:53:37 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Separated the data model definitions from the
+ management model definitions.
+
+Fri May 14 15:28:56 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp:
+
+ Updated Domain_Handler_Test.cpp to use the dump
+ functions within the DnC_Dump.cpp rather than the
+ functions from Domain_Handler.cpp.
+
+ Removed the unnecessary functions from the Domain_Handler.cpp.
+
+Fri May 14 15:13:17 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * DnC/Config_Handlers/DnC_Dump.h:
+
+ Added the dump functions for the Domain Handler.
+
+Fri May 14 12:17:55 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Requirement_Handler.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.cpp:
+ * DnC/Config_Handlers/RS_Handler.cpp:
+
+ Among, the common data type handlers, the aforementioned four
+ handlers need to handle elements that can be referenced via
+ <href> tags and <xmi:id> tags. In this commit, I have addressed
+ parsing <href> tags, next, more complicated step will be to
+ handle <xmi:id> tags.
+
+Thu May 13 22:56:22 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+
+ Filled in the dump_* functions that pertain to common
+ elements. Howerver, dumping data stored in a CORBA::Any would
+ not be possible unless we know what value is stored in the first
+ place! Hence, we may need to re think this approach for Anys.
+
+ * DnC/Requirement_Handler.cpp:
+
+ Updated the handler to process the <name> tag added to the
+ Deployment schema.
+
+Thu May 13 19:46:24 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * DnC/Deployment.xsd: Reverted an accidental check-in that
+ introduced a bogus schema.
+
+Thu May 13 17:50:16 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd:
+
+ Added the name attribute for the Deployment:Requirement complex
+ type defined in the schema. This was present in the model but
+ not in the schema and necessitated this addition.
+
+Thu May 13 15:13:50 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp:
+ * DnC/tests/Config_Handlers/Domain_Handler_Test.mpc:
+
+ Added the test to test the Domain Handler.
+
+Thu May 13 14:27:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompPortDesc_Handler.cpp:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ Changed the library name from Config_Handers
+ to Config_Handlers in the .mpc file.
+
+ Included scop resolution operators for all
+ class member function definitions in the .cpp file.
+
+Thu May 13 13:10:35 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Updated Domain_Handler to handle property and
+ satisfier property elements.
+
+Wed May 12 20:05:55 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/EC/client.cpp:
+
+ Corrected case of header file in #include directive.
+ "ace/Streams.h" -> "ace/streams.h". Blame it on MS Windows case
+ insenstivity. :-)
+
+Wed May 12 15:52:29 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Added two utility methods create_document () and parse_href_tag
+ () that will allow creation of an iterator pointing to top of
+ the document as specified in the <href = "..."> tag. Now all
+ handlers that need to handle <href> definitions can make use of
+ this utility.
+
+Wed May 12 15:08:14 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Hello_Base/Hello_Base.mpc:
+
+ Copied export macro settings from stub project to servant
+ project. The servant project had only one export macro
+ defined for both *C.h and *S.h files, and so was
+ clobbering the stub export macro already generated.
+
+Wed May 12 14:25:00 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Added some more general functions.
+
+Wed May 12 13:51:37 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Added some general functions which other handlers could
+ use.
+
+Wed May 12 12:59:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Added dump functions for the structures.
+
+Wed May 12 12:44:40 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Made changes to handle HREF tags within
+ another referenced document.
+
+Wed May 12 00:06:26 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Made changes to handle HREF tags.
+
+Tue May 11 22:58:35 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changes to support multiplex uses ports in components.
+ Thanks to Bala Natarajan <bala@dre.vanderbilt.edu> for
+ writing the hand-crafted version of the servant glue
+ code.
+
+Tue May 11 22:55:22 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BasicSP.mpc:
+
+ Fixed IDL compiler command line options so the stub and
+ skeleton export macros will get generated correctly regardless
+ of the order of execution of the stub and skeleton project
+ generation.
+
+Tue May 11 16:12:07 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DT_Handler.h:
+ * DnC/Config_Handlers/DT_Handler.cpp:
+
+ Added CORBA::TypeCode::duplicate for basic type codes as the
+ individual handlers and IDL structures will be releasing the
+ typecodes generated.
+
+ * DnC/Config_Handlers/Any_Handler.h:
+ * DnC/Config_Handlers/Any_Handlers.cpp:
+
+ Insted of requiring that each top level handler pass an ORB
+ reference to the Any handler, now the Any handler calls ORB init
+ There is not additional overhead other than the call as the same
+ ORB reference is returned each time from the ORB table
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ Added targets Any_Handler.cpp and DT_Handler.cpp
+
+Tue May 11 12:51:14 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+
+ Changed the interface of the functions process_domain_node
+ and process_domain_bridge.
+
+Tue May 11 12:25:39 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Fixed bug in home operation emitter.
+
+Tue May 11 11:17:25 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Any_Handler.h:
+ * DnC/Config_Handlers/Any_Handler.cpp:
+
+ Any handler that processes schema definitions of the type <any>
+ ... </any>. Currently, this handler supports only built-in
+ types. Issues pertaining to specifying properties in IDL (typed)
+ v/s specifying them in schema (dynamic) as an Any are being
+ examined
+
+Tue May 11 10:45:55 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL3/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/IDL3/Parser.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Uses.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/Component.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/Component.hpp:
+ * CCF/CCF/IDL3/Traversal/Component.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Support for uses multiple.
+
+Tue May 11 01:47:27 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * DnC/Config_Handlers/XercesString.cpp (Config_Handler): When
+ changing the function used to compare strings from
+ XMLString::equals() to XMLString::compareIString(), a check on
+ the return value equal to zero is needed to ensure similar
+ semantics.
+
+Tue May 11 00:18:58 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * DnC/Config_Handlers/XercesString.cpp (Config_Handler): Changed
+ the comparison function to use case-insensitive comparison, as
+ case doesn't make sense while comparing XML strings.
+
+Mon May 10 23:35:25 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/tests/Config_Handlers/Domain_Handler_Test.cpp:
+
+ Added a new test to test the Domain Handler, which
+ parses the D&C specification's DomainDescriptor.
+
+Mon May 10 22:40:37 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DnC_Dump.cpp:
+ * Dnc/Config_Handlers/DnC_Dump.h:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+
+ I moved DnC_Dump.{h,cpp} from DnC/ to
+ DnC/Config_Handlers
+
+Mon May 10 19:04:57 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DT_Handler.h:
+ * DnC/Config_Handlers/DT_Handlers.cpp:
+
+ Type code operations especially creation of dynamic typecodes
+ require operations defined in the ORB interface. Hence, instead
+ of calling ORB::init within this common handlers, changed the
+ interface of the process_DataType method to require a
+ CORBA::ORB_ptr. Also modularized the creation of typecodes into
+ process_basic_tc, process_enum_tc etc depending on the *type* of
+ typecode to be created
+
+ * DnC/Config_Handlers/Utils.h:
+ * DnC/Config_Handlers/Utils.cpp:
+
+ Added helper methods that allow coversion to CORBA::* types from
+ string values. These helper methods will be used by the Any
+ handler to insert the required values into a CORBA::Any object
+ dynamically.
+
+Mon May 10 18:56:11 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+
+ Made changes to handle the "Property" elements.
+
+Mon May 10 18:21:34 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/DT_Handler.h:
+ * DnC/Config_Handlers/DT_Handler.cpp:
+ Data_Type handler class that parses the <type> .. </type> tags
+ in the Deployment schema.
+
+Mon May 10 13:42:04 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ Removed the trailing #endif as the corresponding #ifndef was
+ removed earlier.
+
+Sun May 9 19:28:56 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Domain_Handler.cpp:
+
+ Made some changes to the dump function to print the
+ contents of the data structure.
+
+Sun May 9 17:32:11 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/ACD_Handler.cpp:
+ * DnC/Config_Handlers/ADD_Handler.cpp:
+ * DnC/Config_Handlers/APM_Handler.cpp:
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/Cap_Handler.cpp:
+ * DnC/Config_Handlers/CEPE_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDes_Handler.cpp:
+ * DnC/Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPortDesc_Handler.cpp:
+ * DnC/Config_Handlers/Config_Error_Handler.cpp:
+ * DnC/Config_Handlers/CPR_Handler.cpp:
+ * DnC/Config_Handlers/CRDD_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/DP_Handler.cpp:
+ * DnC/Config_Handlers/ERE_Handler.cpp:
+ * DnC/Config_Handlers/IAD_Handler.cpp:
+ * DnC/Config_Handlers/IDD_Handler.cpp:
+ * DnC/Config_Handlers/ID_Handler.cpp:
+ * DnC/Config_Handlers/IRDD_Handler.cpp:
+ * DnC/Config_Handlers/IR_Handler.cpp:
+ * DnC/Config_Handlers/MDD_Handler.cpp:
+ * DnC/Config_Handlers/MID_Handler.cpp:
+ * DnC/Config_Handlers/NIA_Handler.cpp:
+ * DnC/Config_Handlers/PCD_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+ * DnC/Config_Handlers/PPM_Handler.cpp:
+ * DnC/Config_Handlers/Property_Handler.cpp:
+ * DnC/Config_Handlers/PSPE_Handler.cpp:
+ * DnC/Config_Handlers/PSPR_Handler.cpp:
+ * DnC/Config_Handlers/RDD_Handler.cpp:
+ * DnC/Config_Handlers/Requirement_Handler.cpp:
+ * DnC/Config_Handlers/RS_Handler.cpp:
+ * DnC/Config_Handlers/SID_Handler.cpp:
+ * DnC/Config_Handlers/SPE_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.cpp:
+ * DnC/Config_Handlers/SPK_Handler.cpp:
+ * DnC/Config_Handlers/SPR_Handler.cpp:
+ Removed all #ifndef definitions that hide multiple includes from
+ the .cpp files. These implementations being non-templatized will
+ not be included in any header files. Hence the guard for
+ multiple inclusions should not be present in them similar to
+ other .cpp files in TAO.
+
+Sun May 9 14:07:10 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+
+ Made changes to the IDL and supported the same in my
+ XML handlers.
+
+Sun May 9 13:06:48 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Deployment.mpc:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ Added requries += dnc to avoid unintentional build of DnC
+ directory.
+
+Sun May 9 09:08:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.h:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.h:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.h:
+ * examples/OEP/BasicSP/EC/EC_exec.cpp:
+ * examples/OEP/BasicSP/EC/EC_exec.h:
+ * examples/OEP/Display/GPS/GPS_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_exec.h:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.h:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.h:
+
+ More fixes to the executors.
+
+Sun May 9 07:46:35 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/CCM_Component.idl:
+ * ciao/CCM_Container.idl:
+
+ Added CIAO specific operations ciao_practivate () and
+ ciao_postactivate () which would allow the deployment
+ infrastructure to invoke them before and after ccm_activate
+ (). There are more elegant methods to do this, but for want of
+ time we will just stick to this. We can revisit this later if
+ needed. There is a need for such things in some projects that we
+ are working on to initialize a few things upfront and tear them
+ later. The downside of this is that the executors need to
+ implement ciao_preactivate () and ciao_postactivate (). I think
+ there is a good idea to avoid that. We will visit that soon.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code generation for ciao_preactivate () and
+ ciao_postactivate ().
+
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+
+ Cosmetic fix.
+
+ * tools/Assembly_Deployer/Assembly_Visitors.h:
+
+ Added a typedef for the iterator in the CIAO::Assembly_Context
+ struct.
+
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp:
+
+ Iterate over the CCMObject references and call preactivate,
+ activate and postactivate on all of them one after another.
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/Receiver/Receiver_exec.h:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/Sender_exec.h:
+
+ Added the preactivate and postactivate calls.
+
+Sat May 8 15:19:18 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/ACD_Handler.cpp:
+ * DnC/Config_Handlers/ADD_Handler.cpp:
+ * DnC/Config_Handlers/APM_Handler.cpp:
+ * DnC/Config_Handlers/CAD_Handler.cpp:
+ * DnC/Config_Handlers/CPR_Handler.cpp:
+ * DnC/Config_Handlers/CRDD_Handler.cpp:
+ * DnC/Config_Handlers/CompImplDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DnC/Config_Handlers/CompPortDesc_Handler.cpp:
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ * DnC/Config_Handlers/DP_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/IDD_Handler.cpp:
+ * DnC/Config_Handlers/IRDD_Handler.cpp:
+ * DnC/Config_Handlers/MDD_Handler.cpp:
+ * DnC/Config_Handlers/MID_Handler.cpp:
+ * DnC/Config_Handlers/PCD_Handler.cpp:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/PPM_Handler.cpp:
+ * DnC/Config_Handlers/PSPE_Handler.cpp:
+ * DnC/Config_Handlers/PSPR_Handler.cpp:
+ * DnC/Config_Handlers/RDD_Handler.cpp:
+ * DnC/Config_Handlers/SID_Handler.cpp:
+ * DnC/Config_Handlers/SPE_Handler.cpp:
+ * DnC/Config_Handlers/SPR_Handler.cpp:
+
+ Removed unnecessary declaration of ACE_DECLARE_NEW_CORBA_ENV
+
+Sat May 8 14:53:33 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Domain.cpp:
+
+ Added a sample "main" program to test the Domain_Handler
+ wrriten to parse the DomainDescriptor.
+
+Sat May 8 14:50:26 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Added a missing structure member infoProperty
+ to the structure Domain.
+
+Fri May 7 20:38:15 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ A fix for generated code for inherited home factory operations.
+ It makes use of the fact that a derived home must manage a
+ component that is derived from the component its base home
+ manages. This means that the corresponding executor classes
+ have the same inheritance relationships. When a call is
+ made to a base home factory operation on a derived home,
+ the derived home's managed component will be returned as
+ a base component reference. Operations called on this
+ component will end up in the derived component executor
+ (the user must implement the inherited operations, although
+ the implementation may be different than that in the
+ base component executor).
+
+Fri May 7 17:19:02 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Filled in some missing items in generation of facet, component
+ and home servant classes, and of component context classes.
+ These missing items included some cases of code generation for
+ things inherited from the base home or the base component, such
+ as regular operations, attribute operations, port operations,
+ and home factory operations, as well as operations and attributes
+ of supported interfaces and their ancestors. Note that there
+ is still a problem with compiling home factory operations
+ inherited from a base home, but this problem will be fixed
+ with the upcoming refactoring of the CIAO-specific
+ _ciao_activate_component() and _ciao_passivate_component()
+ methods in the home servant class. This fix closes [BUGID:1800].
+
+Fri May 7 14:46:54 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * GNUmakefile:
+
+ Removed this GNUmakefile. It must now be generated by MPC.
+
+Fri May 7 13:17:10 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/ConFig_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/Resource_Handler.cpp:
+ * DnC/Config_Handlers/SR_Handler.cpp:
+
+ Updated the handlers to handler href, xmi:id cases.
+
+Fri May 7 12:53:34 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+ Fixed a bug for using MPC to build CCF.
+
+Fri May 7 12:44:42 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/RS_Handler.cpp:
+
+ Modified the handler to parse out of order schema
+ definitions. Now parsing is independent of the appearance of the
+ schema elements as it should be.
+
+Thu May 6 16:20:00 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/SP_Handler.cpp:
+
+ Added functionality to parse the schema definitions when the
+ individual elements appear in no specific order.
+
+Mon May 3 23:04:13 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Corrected typo.
+
+Mon May 3 23:17:31 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Changed the datatype from ULongSeq to StringSeq
+ in the following structures:
+
+ SharedResource, Node, Interconnect and Bridge.
+
+Mon May 3 22:44:09 2004 George Edwards <g.edwards@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Fixed ComponentPortDescription struct to comply with new spec.
+
+ * DnC/Deployment.mpc:
+
+ Added DnC_Dump.cpp to Deployment_stub project.
+
+ * DnC/DnC_Dump.h:
+ * DnC/DnC_Dump.cpp:
+
+ Added dump functions for PackageConfiguration,
+ ComponentPackageDescription, PackagedComponentImplementation,
+ ComponentPortDescription, and ComponentPropertyDescription.
+
+Mon May 3 00:00:00 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * Makefile*:
+
+ Removed all Makefiles. GNUmakefiles must now be generated by
+ MPC.
+
+Sat May 1 22:37:33 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * Makefile:
+ * GNUmakefile:
+
+ Renamed "Makefile" to "GNUmakefile" to make it obvious to
+ users that GNU Make is required to parse the file.
+
+Fri Apr 30 17:46:09 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Implemented supporting of forward declared interfaces.
+ Also some minor tweaking for Intel C++.
+
+Fri Apr 30 13:08:04 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DnC/DnC_Dump.h:
+ * DnC/DnC_Dump.cpp:
+
+ Added these two new files. These two files created a
+ DnC_Dump class which is used to print out the contents
+ of various IDL data structures.
+
+Thu Apr 29 22:56:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Rolled back some changes made on the TargetDataModel
+ structures.
+
+Thu Apr 29 22:34:41 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Changed all the structures in the TargetData Model
+ to match what is given in the spec.
+
+Thu Apr 29 22:26:05 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Made a change in the structure Domain
+ to add a new field info_property
+ which is of the type Properties.
+
+Thu Apr 29 18:46:51 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Config_Error_Handler.h:
+ * DnC/Config_Handlers/Config_Error_Handler.cpp:
+
+ Generic Error Handler class for the main functions
+ which we will be writing to dump out the IDL
+ data structures populated by the XML handlers.
+
+Thu Apr 29 18:09:41 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd:
+
+ Fixed a type "xsl" tp "xsd"
+
+Thu Apr 29 17:47:04 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Deployment.xsd:
+ * DnC/XMI.xsd:
+
+ Updated the schemaLocation attribute within the
+ Deployment.xsd schema and
+ added the appropriate XMI.xsd file.
+
+Thu Apr 29 06:13:23 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ struct ComponentImplementationDescription: Added new field called
+ infoProperty of type Properties (Issue 5967).
+
+ struct ImplementationRequirement: added a new struct (Issue 6392)
+
+ * Dnc/ConfigHandlers/CompImplDesc_Handler.cpp:
+ Fixed compilation errors due to incorrect naming usage of a typedef.
+
+Mon Apr 26 23:40:27 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Cookies.cpp:
+ * ciao/Cookies.h:
+ * ciao/Cookies.inl:
+
+ Subtle changes to improve interoperability.
+
+ Problem: We, for some unknown reason, created a proprietary
+ cookie called CIAO::Map_Key_Cookie (which inherited from an IDL
+ type CIAO::Cookie) and used that as a concrete implementation of
+ Components::Cookie.
+
+ Context: Though this would work, this breaks interoperability
+ when the Cookies are send on the wire. The remote target tries
+ to unmarshal the CIAO::Cookie valuetype as a Component::Cookie
+ which fails miserably.
+
+ Solution: Deprecate this proprietary IDL type CIAO::Cookie and
+ make Map_Key_Cookie inherit directly from Component::Cookie.
+
+ Made some changes to the interface to return a bool instead of
+ an int.
+
+ * ciao/CIAO_Value.idl:
+
+ Added note for deprecation.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ The call to Map_Key_Cookie::extract () should check for a false
+ instead of -1.
+
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+
+ The call to Map_Key_Cookie::extract () should check for a false
+ instead of -1.
+
+ Thanks to Ed Mulholland and Jacques Kerner for reporting the
+ problem.
+
+Mon Apr 26 17:35:29 2004 George Edwards <g.edwards@vanderbilt.edu>
+
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+
+ Made changes to fix compilation errors.
+
+Mon Apr 26 12:19:56 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/IC_Handler.cpp:
+
+ Made changes to fix some compiler issues.
+
+Mon Apr 26 12:13:36 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Bridge_Handler.h:
+ * DnC/Config_Handlers/Bridge_Handler.h:
+ * DnC/Config_Handlers/IC_Handler.cpp:
+ * DnC/Config_Handlers/IC_Handler.h:
+ * DnC/Config_Handlers/Node_Handler.h:
+ * DnC/Config_Handlers/Node_Handler.cpp:
+ * DnC/Config_Handlers/Resource_Handler.cpp:
+ * DnC/Config_Handlers/Resource_Handler.h:
+ * DnC/Config_Handlers/SR_Handler.h:
+ * DnC/Config_Handlers/SR_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+
+ Made changes to fix some compiler issues.
+
+Mon Apr 26 11:50:48 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Bridge_Handler.h:
+ * DnC/Config_Handlers/Bridge_Handler.cpp:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/IC_Handler.cpp:
+ * DnC/Config_Handlers/IC_Handler.h:
+ * DnC/Config_Handlers/Node_Handler.h:
+ * DnC/Config_Handlers/Resource_Handler.cpp:
+ * DnC/Config_Handlers/Resource_Handler.h:
+ * DnC/Config_Handlers/SR_Handler.h:
+
+ Made changes to fix some compiler issues.
+
+Mon Apr 26 08:57:37 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ Added Cap_Handler.cpp
+ Added CompIntrDesc_Handler.cpp
+ Added CompPortDesc_Handler.cpp
+ Added IAD_Handler.cpp
+ Added IR_Handler.cpp
+ Added NIA_Handler.cpp
+
+ * DnC/Config_handlers/SR_Handler.cpp:
+ Included SP_Handler.h
+ Fixed undefined variables and conversion from string to long
+
+ * DnC/Config_handlers/Node_Handler.cpp:
+ Fixed errors arising out of using same name for variables of
+ different types in the same scope (one defined in the parameter
+ and another as a loop variable).
+
+ Fixed errors in type coversion.
+
+ * DnC/Config_handlers/Resource_Handler.cpp:
+ Fixed errors in type coversion.
+
+ * DnC/Config_handlers/MID_Handler.cpp:
+ Fixed an error due to incorrect number of parameters
+
+ * DnC/Config_handlers/DP_Handler.cpp:
+ Fixed an error due to incorrect number of parameters and
+ incorrect file name inclusion.
+
+
+Mon Apr 26 14:04:32 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ CIAO_Server must link with CIAO_Container. Not doing so causes link
+ errors with Borland.
+
+Mon Apr 26 09:33:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ Removed not needed / after $(CIAO_ROOT)/DnC in includes. This gave
+ problems with Borland
+
+Sun Apr 25 07:42:06 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Config_Handlers/Config_Handlers.mpc:
+ Added Bridge_Handler.cpp
+ Added Domain_Handler.cpp
+ Added IC_Handler.cpp
+ Added Node_Handler.cpp
+ Added Resource_Handler.cpp
+ Added SR_Handler.cpp
+
+
+Sat Apr 24 23:43:13 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/Bridge_Handler.cpp:
+ * DnC/Config_Handlers/Bridge_Handler.h:
+ * DnC/Config_Handlers/Domain_Handler.h:
+ * DnC/Config_Handlers/Domain_Handler.cpp:
+ * DnC/Config_Handlers/IC_Handler.h:
+ * DnC/Config_Handlers/IC_Handler.cpp:
+ * DnC/Config_Handlers/Node_Handler.h:
+ * DnC/Config_Handlers/Node_Handler.cpp:
+ * DnC/Config_Handlers/Resource_Handler.h:
+ * DnC/Config_Handlers/Resource_Handler.cpp:
+ * DnC/Config_Handlers/SR_Handler.h:
+ * DnC/Config_Handlers/SR_Handler.cpp:
+
+ Added the following handlers belonging to the
+ Target Data Model.
+
+Sat Apr 24 23:13:56 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ struct ComponentPackageReference: Added two new fields called
+ requiredUUID and requiredName of type string (Issue 6047).
+
+ * DnC/Config_Handler/SPE_Handler.h:
+ * DnC/Config_Handler/SPE_Handler.cpp:
+ * DnC/Config_Handler/ACD_Handler.h:
+ * DnC/Config_Handler/ACD_Handler.cpp:
+ * DnC/Config_Handler/APM_Handler.h:
+ * DnC/Config_Handler/APM_Handler.cpp:
+ * DnC/Config_Handler/MID_Handler.h:
+ * DnC/Config_Handler/MID_Handler.cpp:
+ Enclosed these into the CIAO namespace
+
+ Removed needless copies by having the parent (caller) provide
+ the memory for the child (callee) to populate it.
+
+ Other cosmetic changes, fixing typos.
+
+ * DnC/Config_Handler/PC_Handler.cpp:
+ * DnC/Config_Handler/PCI_Handler.cpp:
+ Fixed undefined variables.
+
+ * DnC/Config_Handler/CAD_Handler.h:
+ * DnC/Config_Handler/CAD_Handler.cpp:
+ XML handlers for the ComponentAssemblyDescription artifact of
+ the Component Data Model.
+
+ * DnC/Config_Handler/SID_Handler.h:
+ * DnC/Config_Handler/SID_Handler.cpp:
+ XML handlers for the ComponentPackageReference artifact of
+ the Component Data Model.
+
+ * DnC/Config_Handler/CPR_Handler.h:
+ * DnC/Config_Handler/CPR_Handler.cpp:
+ XML handlers for the ComponentPackageReference artifact of
+ the Component Data Model.
+
+ * DnC/Config_Handler/SPR_Handler.h:
+ * DnC/Config_Handler/SPR_Handler.cpp:
+ XML handlers for the SubcomponentPropertyReference artifact of
+ the Component Data Model.
+
+ * DnC/Config_Handler/CompImplDesc_Handler.h:
+ * DnC/Config_Handler/CompImplDesc_Handler.cpp:
+ XML handlers for the ComponentImplementationDescription artifact of
+ the Component Data Model.
+
+ * DnC/Config_Handler/DP_Handler.cpp:
+ Renamed included file CID_Handler.h to CompIntfDesc_Handler.h
+ since there was a name clash.
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+ Fixed the CONFIG_HANDLER_BUILD_DLL typo
+ Added ACD_Handler.cpp
+ Added APM_Handler.cpp
+ Added CAD_Handler.cpp
+ Added MID_Handler.cpp
+ Added SPE_Handler.cpp
+ Added CompImplDesc_Handler.cpp
+ Added CompPkgDesc_Handler.cpp
+ Added PC_Handler.cpp
+ Added PCI_Handler.cpp
+ Added SID_Handler.cpp
+ Added CPR_Handler.cpp
+ Added SPR_Handler.cpp
+ Reincluded DP_Handler.cpp
+
+Sat Apr 24 22:25:55 2004 George Edwards <g.edwards@vanderbilt.edu>
+
+ Added files:
+ * DnC/Config_Handlers/PCI_Handler.h:
+ * DnC/Config_Handlers/PCI_Handler.cpp:
+
+ Added new handlers for PackagedComponentImplementation.
+
+Sat Apr 24 21:22:48 2004 George Edwards <g.edwards@vanderbilt.edu>
+
+ Added files:
+ * DnC/Config_Handlers/PC_Handler.h:
+ * DnC/Config_Handlers/PC_Handler.cpp:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.h:
+ * DnC/Config_Handlers/CompPkgDesc_Handler.cpp:
+
+ Added new handlers for PackageConfiguration and
+ ComponentPackageDescription.
+
+Sat Apr 24 16:02:03 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/Domain_Handler.h:
+
+ Added a header file for the new handler about to
+ be written.
+
+ This handler will parse the "Domain" type
+ defined in the Deployment.xsd schema of the
+ DnC specification.
+
+Sat Apr 24 10:46:14 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/PCD_Handler.cpp:
+ * DnC/Config_Handler/ERE_Handler.h:
+ * DnC/Config_Handler/ERE_Handler.cpp:
+
+ Missed out on these handlers in my earlier commit. Made the same
+ changes as listed earlier for these handlers as well
+
+Fri Apr 23 19:45:53 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/ADD_Handler.cpp:
+ * DnC/Config_Handler/DP_Handler.cpp:
+ * DnC/Config_Handler/CRDD_Handler.cpp:
+ * DnC/Config_Handler/IDD_Handler.cpp:
+ * DnC/Config_Handler/IRDD_Handler.cpp:
+ * DnC/Config_Handler/MDD_Handler.cpp:
+ * DnC/Config_Handler/RDD_Handler.cpp:
+ * DnC/Config_Handler/PCD_Handler.cpp:
+ * DnC/Config_Handler/DP_Handler.cpp:
+
+ Eliminated the additional copy incurred when sequences are
+ populated by de-referencing pointer to sequence return
+ type. This fixes Andy's comments in the files that unearthed
+ this problem. Please grep for Arvind: comments to see how the
+ problem has been fixed
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+
+ Commented out DP_Handler.cpp from the list of files to be
+ compiled as it requires CID.h file that is not yet written! This
+ ensures that the Handlers build.
+
+ * DnC/Config_Handler/Any_Handler.h:
+ * DnC/Config_Handler/CEPE_Handler.h:
+ * DnC/Config_Handler/ID_Handler.h:
+ * DnC/Config_Handler/Property_Handler.h:
+ * DnC/Config_Handler/RS_Handler.h:
+ * DnC/Config_Handler/SP_Handler.h:
+ * DnC/Config_Handler/SPK_Handler.h:
+ * DnC/Config_Handler/Requirement_Handler.h:
+
+ Changed the interfaces of each process_<handlerName> methods to
+ take a reference to the required return type rather than return
+ a pointer to the allocated return value. This change was
+ necessary to accommodate the use-cases defined in top level
+ handlers.
+
+ * DnC/Config_Handler/Any_Handler.cpp:
+ * DnC/Config_Handler/CEPE_Handler.cpp:
+ * DnC/Config_Handler/ID_Handler.cpp:
+ * DnC/Config_Handler/Property_Handler.cpp:
+ * DnC/Config_Handler/RS_Handler.cpp:
+ * DnC/Config_Handler/SP_Handler.cpp:
+ * DnC/Config_Handler/SPK_Handler.cpp:
+ * DnC/Config_Handler/Requirement_Handler.cpp:
+
+ Removed all memory allocation for the return types within the
+ Common element handler implementations. In the current use case,
+ all the return types are passed in as references. Therefore, it
+ is now the responsibility of the caller to allocate memory for
+ the corresponding data-types.
+
+Fri Apr 23 10:57:26 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ struct ConnectionResourceDeploymentDescription: Added a new struct
+ and corresponding unbounded sequence (Issue 6392).
+
+ struct PlanSubcomponentPropertyReference: Replaced instanceRef
+ field with a field called instance of type
+ InstanceDeploymentDescription.
+
+ struct PlanSubcomponentPortEndpoint: Replaced instanceRef and
+ kind fields with a field called instance of type
+ InstanceDeploymentDescription.
+
+ struct PlanConnectionDescription: Added a field called
+ deployedResource of type ConnectionResourceDeploymentDescriptions.
+
+ * DnC/Config_Handler/IRDD_Handler.h:
+ * DnC/Config_Handler/IRDD_Handler.cpp:
+ XML handlers for the InstanceResourceDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/IDD_Handler.h:
+ * DnC/Config_Handler/IDD_Handler.cpp:
+ XML handlers for the InstanceDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/IRDD_Handler.h:
+ * DnC/Config_Handler/IRDD_Handler.cpp:
+ XML handlers for the ConnectionResourceDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/PCD_Handler.h:
+ * DnC/Config_Handler/PCD_Handler.cpp:
+ XML handlers for the PlanConnectionDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/PSPE_Handler.h:
+ * DnC/Config_Handler/PSPE_Handler.cpp:
+ XML handlers for the PlanSubcomponentPortEndpoint artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/PPM_Handler.h:
+ * DnC/Config_Handler/PPM_Handler.cpp:
+ XML handlers for the PlanPropertyMapping artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/PSPR_Handler.h:
+ * DnC/Config_Handler/PSPR_Handler.cpp:
+ XML handlers for the PlanSubcomponentPropertyReference artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+ Added IDD_Handler.cpp
+ Added IRDD_Handler.cpp
+ Added CRDD_Handler.cpp
+ Added PCD_Handler.cpp
+ Added PSPE_Handler.cpp
+ Added PPM_Handler.cpp
+ Added PSPR_Handler.cpp
+
+Fri Apr 23 04:40:12 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ struct DeploymentPlan: Added a field called infoProperty of type
+ Properties (Issue 5967)
+
+ struct ArtifactDeploymentDescription: Added a field called
+ deployedResource of type ResourceDeploymentDescriptions
+ (Issue 6392)
+
+ struct ArtifactDeploymentDescription: Changed the field type for
+ location from string to CORBA::StringSeq (Issue 5957, 6053).
+
+ struct ArtifactDeploymentDescription: Moved it around to
+ overcome forward declarations.
+
+ struct MonolithicDeploymentDescription: Changed the field name
+ from artifactRef to artifact and changed its type from
+ CORBA::ULongSeq to ArtifactDeploymentDescriptions (Issue 5957)
+
+ struct ResourceDeploymentDescription: Added a new struct and
+ corresponding unbounded sequence (Issue 6392).
+
+ enum ResourceUsageKind: Added a new enum (Issue 6392).
+
+ struct InstanceResourceDeploymentDescription: Added a new struct
+ and corresponding unbounded sequence (Issue 6392).
+
+ * DnC/Config_Handler/DP_Handler.h:
+ * DnC/Config_Handler/DP_Handler.cpp:
+ Added handling of "infoProperty" (Issue 5967)
+ Other cosmetic changes, such as fixed usage of an undefined
+ variable
+
+ * DnC/Config_Handler/ADD_Handler.h:
+ * DnC/Config_Handler/ADD_Handler.cpp:
+ XML handlers for the ArtifactDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/MDD_Handler.h:
+ * DnC/Config_Handler/MDD_Handler.cpp:
+ XML handlers for the MonolithicDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/RDD_Handler.h:
+ * DnC/Config_Handler/RDD_Handler.cpp:
+ XML handlers for the ResourceDeploymentDescription artifact of
+ the Execution Model.
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+ Added ADD_Handler.cpp
+ Added MDD_Handler.cpp
+ Added RDD_Handler.cpp
+
+Thu Apr 22 22:18:04 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Component.idl:
+
+ Added 'typeprefix Components "omg.org";' inside the
+ Components module. All openings of an IDL module must
+ have the same prefix, and the openings of the Components
+ module in other IDL file have this prefix.
+
+Thu Apr 22 21:32:39 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ Added a "string UUID;" field (Issue 6047) to the DeploymentPlan
+ structure. The spec shows UUID as an attribute, which serves as
+ the unique identfier of a plan. However, the spec does not
+ include it in the IDL nor the schema. I decided to add it for now.
+
+ * DnC/Config_Handler/DP_Handler.h:
+ * DnC/Config_Handler/DP_Handler.cpp:
+ XML handlers for the DeploymentPlan artifact of the Execution Model.
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+ Added DP_Handler.cpp
+
+Thu Apr 22 15:36:14 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/Config_Handlers.mpc
+ * DnC/Config_Handler/Property_Handler.cpp:
+ * DnC/Config_Handler/Property_Handler.h:
+ * DnC/Config_Handler/Requirement_Handler.h:
+ * DnC/Config_Handler/Requirement_Handler.cpp:
+ * DnC/Config_Handler/SPK_Handler.h:
+ * DnC/Config_Handler/SPK_Handler.cpp:
+ XML handlers for common elements present in schema definitions.
+
+Thu Apr 22 11:35:42 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/CEPE_Handler.h:
+ * DnC/Config_Handler/CEPE_Handler.cpp:
+ * DnC/Config_Handler/ERE_Handler.h:
+ * DnC/Config_Handler/ERE_Handler.cpp:
+ * DnC/Config_Handler/ID_Handler.h:
+ * DnC/Config_Handler/ID_Handler.cpp:
+ * DnC/Config_Handler/RS_Handler.h:
+ * DnC/Config_Handler/RS_Handler.cpp:
+ * DnC/Config_Handlers/SP_Handler.h:
+ * DnC/Config_Handler/SP_Handler.cpp:
+ Correct ::Deployment namespace definitions to Deployment:: as it
+ need not always start from the root. Changed ACE_NEW_RETURN
+ macros to ACE_NEW_THROW_EX as exceptions are going to be used as
+ default meachnism to flag errors. Thanks to Kitty for pointing
+ these two changes.
+
+Wed Apr 21 22:35:07 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Config_Handler/Config_Handlers.mpc:
+ Modified the mpc file to include handlers that compile as a test
+ * DnC/Config_Handler/ID_Handler.h:
+ * DnC/Config_Handler/ID_Handler.cpp:
+ * DnC/Config_Handler/CEPE_Handler.h:
+ * DnC/Config_Handler/CEPE_Handler.cpp:
+ * DnC/Config_Handler/RS_Handler.h:
+ * DnC/Config_Handler/RS_Handler.cpp:
+ * DnC/Config_Handler/SP_Handler.h:
+ * DnC/Config_Handler/SP_Handler.cpp:
+ * DnC/Config_Handler/Utils.h:
+ * DnC/Config_Handler/Utils.cpp:
+ * DnC/Config_Handler/Any_Handler.h:
+ Handlers for common elements; each handler handles a separate
+ type
+ * DnC/Config_Handler/Config_Handler_export.h:
+ Export files for all the handlers
+
+Wed Apr 21 22:27:34 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Deployment.mpc:
+ Changed the export tags from all-caps to mixed mode
+ * DnC/Deployment_stub_export.h:
+ * DnC/Deployment_svnt_export.h:
+ Re-generated the export files accordingly
+
+Wed Apr 21 13:08:50 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Config_Handlers/APM_Handler.cpp
+ Fixed a typo.
+
+Wed Apr 21 12:33:11 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DnC/Deployment.mwc:
+ * DnC/Deployment.mpc:
+ Workspace and Project files for generating stubs and skeletons
+ for Deployment.idl file
+
+ * DnC/Deployment_stub_export.h:
+ * DnC/Deployment_svnt_export.h:
+ Export macros for Deployment stub and skeleton files
+
+Wed Apr 21 10:53:50 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Fixed the error in the "struct SubcomponentPortEndpoint"
+ definition in the IDL file.
+
+Wed Apr 21 10:33:50 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+ * DnC/DnC_*:
+
+ Switched back the the OMG IDL DnC file.
+
+Tue Apr 20 21:37:26 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * Dnc/Config_Handlers/Config_Handlers.mpc:
+ Changed the file to generate shared library rathern than an
+ executable.
+
+Tue Apr 20 20:29:37 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * Dnc/Config_Handlers/Config_Handers.mpc:
+
+ mpc file for the DnC configuration handlers
+
+Tue Apr 20 17:11:35 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * examples/Hello/Sender/Sender_exec.h (Sender_Impl):
+
+ The second constructor also needed the same fix.
+
+Tue Apr 20 15:50:07 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * examples/Hello/Sender/Sender_exec.h (Sender_Impl):
+
+ <message_> was getting initialized properly causing a crash
+ later in the execution.
+
+Mon Apr 19 18:04:11 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DnC/Config_Handlers/ACD_Handler.cpp
+ * DnC/Config_Handlers/ACD_Handler.h
+ * DnC/Config_Handlers/APM_Handler.cpp
+ * DnC/Config_Handlers/APM_Handler.h
+ * DnC/Config_Handlers/MID_Handler.cpp
+ * DnC/Config_Handlers/MID_Handler.h
+ * DnC/Config_Handlers/SPE_Handler.cpp
+ * DnC/Config_Handlers/SPE_Handler.h
+
+ XML handlers for below XML data types respectively:
+
+ "AssemblyConnectionDescription "
+ "AssemblyPropertyMapping"
+ "MonolithicImplementationDescription"
+ "SubcomponentPortEndpoint"
+
+ * DnC/Config_Handlers/XercesString.cpp
+ * DnC/Config_Handlers/XercesString.h
+
+ Helper class for using Xerces library to write XML handlers.
+
+Mon Apr 19 14:50:11 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * DnC/Config_Handlers: Created new directory for adding the
+ handlers for the Deployment & Configuration Specification.
+
+Thu Apr 15 18:13:29 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * CIAO-INSTALL.html (HREF):
+
+ Fixed link to binary files.
+
+Mon Apr 12 14:40:32 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/index.html:
+
+ fixed a broken link.
+
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-04b b/modules/CIAO/ChangeLogs/ChangeLog-04b
new file mode 100644
index 00000000000..233cfed69fc
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-04b
@@ -0,0 +1,2250 @@
+Tue Dec 28 19:50:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Release:
+
+ Updated the name of the target for generating the textual
+ version of CIAO-INSTALL.html file.
+
+Sat Dec 25 20:55:55 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Release:
+
+ Added INSTALL target which generates textual version of
+ CIAO-INSTAll.html for the release.
+
+Sat Dec 25 15:01:40 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ExecImplSourceGenerator.cpp:
+
+ Got rid of unused environment variable warnings in the generated
+ code.
+
+Wed Dec 22 06:53:30 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+
+ Make sure that CodeGen_stub gets built before CodeGen_exec.
+
+Tue Dec 21 11:29:03 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Segment_Timer/Segment_Timer.h
+
+ Increased the value of the macro MAX_READINGS, since the
+ current value is too small and caused core dump for even
+ 50 connections. Thanks Roland Schmmack <Roland.Schimmack@gmx.de>
+ for reporting this bug!
+
+Mon Dec 20 17:27:01 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc
+ * ciao/Deployment_Core.idl
+ * ciao/NodeApplication_Impl.cpp
+ * ciao/NodeApplication_Impl.h
+ * ciao/NodeApplication_Impl.inl
+
+ Reverted changes back because of the check-in mistake I just made.
+
+Mon Dec 20 16:32:54 2004 Nanbor Wang <nanbor@cse.wustl.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc: Added include path to
+ self for XSC_Config_Handlers project..
+
+Wed Dec 15 13:48:44 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Get rid of build warnings from gcc 3.3.
+
+Tue Nov 30 21:41:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ More use of ACE_NEW_THROW_EX instead of ACE_NEW_RETURN.
+
+Tue Nov 30 21:03:00 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ Another use of ACE_NEW_THROW_EX instead of ACE_NEW_RETURN.
+
+Tue Nov 30 20:39:26 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ Used ACE_NEW_THROW_EX instead of ACE_NEW_RETURN.
+
+Tue Nov 30 20:22:19 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ Fixes for VC6.
+
+Wed Nov 24 09:47:58 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp:
+
+ Added static_cast from double to int to avoid build warnings from
+ g++.
+
+Wed Nov 17 17:46:44 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver.idl:
+
+ Added 'uses multiple' receptacle to test code generation
+ and compilation.
+
+Sat Nov 13 18:04:36 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base.idl:
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc:
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base_stub_export.h:
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base_svnt_export.h:
+ * DAnCE/examples/Hello/Receiver/Receiver.cidl:
+ * DAnCE/examples/Hello/Receiver/Receiver.idl:
+ * DAnCE/examples/Hello/Receiver/Receiver.mpc:
+ * DAnCE/examples/Hello/Receiver/Receiver_exec.cpp:
+ * DAnCE/examples/Hello/Receiver/Receiver_exec.h:
+ * DAnCE/examples/Hello/Receiver/Receiver_exec_export.h:
+ * DAnCE/examples/Hello/Receiver/Receiver_stub_export.h:
+ * DAnCE/examples/Hello/Receiver/Receiver_svnt_export.h:
+ * DAnCE/examples/Hello/Sender/Sender.cidl:
+ * DAnCE/examples/Hello/Sender/Sender.idl:
+ * DAnCE/examples/Hello/Sender/Sender.mpc:
+ * DAnCE/examples/Hello/Sender/Sender_exec.cpp:
+ * DAnCE/examples/Hello/Sender/Sender_exec.h:
+ * DAnCE/examples/Hello/Sender/Sender_exec_export.h:
+ * DAnCE/examples/Hello/Sender/Sender_stub_export.h:
+ * DAnCE/examples/Hello/Sender/Sender_svnt_export.h:
+ * DAnCE/examples/Hello/Sender/starter.cpp:
+ * DAnCE/examples/Hello/descriptors/Deployment.xsd:
+ * DAnCE/examples/Hello/descriptors/Domain.cdd:
+ * DAnCE/examples/Hello/descriptors/Hello.cdp:
+ * DAnCE/examples/Hello/descriptors/Hello.cid:
+ * DAnCE/examples/Hello/descriptors/Hello.cpd:
+ * DAnCE/examples/Hello/descriptors/Hello.pcd:
+ * DAnCE/examples/Hello/descriptors/Libraries.iad:
+ * DAnCE/examples/Hello/descriptors/Receiver.ccd:
+ * DAnCE/examples/Hello/descriptors/Receiver.cid:
+ * DAnCE/examples/Hello/descriptors/Receiver.cpd:
+ * DAnCE/examples/Hello/descriptors/Receiver_Exec.iad:
+ * DAnCE/examples/Hello/descriptors/Receiver_Stub.iad
+ * DAnCE/examples/Hello/descriptors/Receiver_Svnt.iad:
+ * DAnCE/examples/Hello/descriptors/Sender.ccd:
+ * DAnCE/examples/Hello/descriptors/Sender.cid:
+ * DAnCE/examples/Hello/descriptors/Sender.cpd:
+ * DAnCE/examples/Hello/descriptors/Sender_Exec.iad:
+ * DAnCE/examples/Hello/descriptors/Sender_Stub.iad:
+ * DAnCE/examples/Hello/descriptors/Sender_Svnt.iad:
+ * DAnCE/examples/Hello/descriptors/XMI.xsd:
+ * DAnCE/examples/Hello/descriptors/hello.dat:
+ * DAnCE/examples/Hello/descriptors/package.tpd:
+
+ Added another version of the Hello example
+ in the DanCE/examples directory.
+
+ This example will use the DanCE framework for
+ deploying the components used in the example.
+
+Sat Nov 13 13:17:48 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Added the Real-time Event Channel integration plan into
+ the NEWS file.
+
+Fri Nov 12 06:21:03 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.h:
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp:
+
+ Changed the open and close method of the Pulser class to match
+ the signature of the ACE_Task_Base.
+
+Thu Nov 11 17:17:48 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * ciao/Servant_Activator.cpp:
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * docs/tutorial/Hello/hello_exec.cpp:
+ Fixed warnings in the scoreboard from RH8 NoInline build
+
+ Thu Nov 11 11:24:05 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ In the generated servant method populate_port_tables(),
+ added the line 'ACE_ENV_ARG_NOT_USED;' to avoid an
+ unused parameter warning if there happens to be no
+ populating to be done in this genrated method.
+
+Thu Nov 11 10:50:45 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplSourceGenerator.cpp:
+
+ Fixed incorrect generation of environment arg macro.
+ Thanks to Chad Elliott <elliott_c@ociweb.com> for
+ pointing out the mistake.
+
+Thu Nov 11 09:46:58 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * performance-tests/Protocols/Receiver/Receiver.mpc:
+ * performance-tests/Protocols/Sender/Sender.mpc:
+ * tests/RTCCM/DiffServ/Controller/Controller.mpc:
+
+ Added requires += exceptions for these projects.
+
+ * performance-tests/Protocols/Sender/Sender_exec.cpp:
+
+ Removed ACE_CHECK's which caused compilation errors when
+ exceptions=0 was set.
+
+Thu Nov 11 14:40:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * docs/tutorial/Hello/hello_exec.cpp:
+ Fixed unused parameter warnings in emulated exception build
+
+Tue Nov 9 14:20:31 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed incorrect code generation for home factory operations.
+ Thanks to Chad Elliott <elliott_c@ociweb.com> for pointing
+ out the mistake. This fixes [BUGID:1977].
+
+Mon Nov 8 12:58:24 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Fixed build ordering to match library requirements.
+
+ * ciao/StandardConfigurator_Impl.h:
+
+ Removed the StandardConfigurator_Impl:: prefix on the configure
+ method (gcc 3.4.1 did not like it).
+
+Fri Nov 5 09:55:28 2004 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/client.cpp:
+
+ The svc.conf file passed in to the client was not being passed
+ to the ORB as ACE::Get_Opt ate up the argument before being
+ passed to the client ORB. This fixes this error at the client
+ side temporarily by initializing the ORB before parsing the
+ arguments. Thanks to Abhi <abhi@qualcomm.com> for reporting
+ this.
+
+Thu Nov 4 09:31:29 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Update_Plan.cpp:
+
+ Made changes to fix some build warnings.
+ Thanks to Chad Elliot <elliott_c@ociweb.com> for reporting
+ this warning.
+
+Wed Nov 3 16:32:54 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Added generation of newline before each operation
+ parameter so each one will be on a separate line.
+ It was discovered that the VC 7.1 lexer truncates lines
+ longer than 1024 characters.
+
+Wed Nov 3 22:32:18 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ VC6 error fixes. Grr...!
+
+Wed Nov 3 12:38:21 2004 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Update_Plan.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.h:
+
+ Made changes to handle multiple component instances
+ deployment.
+
+Tue Nov 2 17:26:42 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed the emitters for supported operations to include
+ abstract interfaces in their traversals.
+
+Tue Nov 2 09:59:15 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Fixed some regular expressions, used to generate the servant
+ header file ifdef guard and export macros, to recognize the
+ file extension .cdl in addition to the existing patterns for
+ .cidl and .idl. These particular regular expressions were
+ overlooked in the checkin of
+
+ Thu Sep 30 11:03:20 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Tue Nov 2 04:45:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Addressing compile errors in Borland. Thanks to Johnny for the
+ suggestion.
+
+Mon Nov 1 15:09:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * VERSION:
+ Fixed description and mailing lists to use
+
+Fri Oct 29 17:18:51 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace):
+
+ Fixed some weird VC6 issues reported by Theckla
+ Louchios<theckla.louchiois@lmco.com>.
+
+Fri Oct 29 10:44:52 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp;
+
+ Cosmetic changes.
+
+Mon Oct 25 07:31:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+ * DAnCE/RepositoryManager/Repository_Manager_Impl.cpp:
+ Use ACE auto_ptr instead of std::auto_ptr to fix compile problems
+ with vc6.
+
+Fri Oct 22 11:49:25 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+
+ Reversed this change "Thu Oct 21 18:37:12 2004 Gan Deng
+ <dengg@dre.vanderbilt.edu>"
+
+Fri Oct 22 08:16:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/RTCCM/DiffServ/Controller/Controller.mpc:
+ Added DiffServ_Stub to the libs part, this should fix the link errors
+ in the CBX Static Release build
+
+Fri Oct 22 07:51:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h:
+ Used ACE_AS_STATIC_LIBS to check whether we need to build a DLL
+ or not, TAO_AS_STATIC_LIBS was used, but this project isn't
+ dependent on TAO, just on ACE
+
+Thu Oct 21 18:37:12 2004 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+
+ Put the xerces-c library into "lib +=" to avoid
+ linking to the wrong library.
+
+Wed Oct 13 06:37:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/RTCCM/Priority_Test/Workers/Worker.mpc
+ * tests/RTCCM/Priority_Test/Controllers/Controller.mpc:
+ Added Priority_Test_stub to the libs, this should fix the link errors
+ in the borland builds
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ Added CIDL_Basic_stub to the libs, this should fix the link errors
+ in the borland builds
+
+Tue Oct 12 09:07:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc:
+ Removed / at the end of the includes part, this should fix the
+ compile error in the Borland builds
+
+Mon Oct 11 23:41:16 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+
+ Fixed typos that broke the builds.
+
+Mon Oct 11 11:02:41 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CodeGenerationKit/IndentationIDL.hpp:
+
+ Put double new line after `}'.
+
+ * CIDLC/cidlc.cpp:
+
+ Print build date and time in --version.
+
+Mon Oct 11 10:08:48 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/Readme.html
+
+ Update the README file for running the example.
+
+Sun Oct 10 10:45:48 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc:
+
+ Fix for some typos which broke the daily builds.
+
+Sun Oct 10 02:47:21 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.h:
+ * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp:
+
+ Fix for MSVC6 build errors. They compile fine on MSVC6 now. I am
+ just hoping that this fix also addresses compile errors in
+ Borland. The Borland compilation errors are also similar to the
+ MSVC6 errors and hence the hope!
+
+Sun Oct 10 00:21:39 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc:
+
+ Fixed a typo.
+
+Sat Oct 9 23:43:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Plan_Handler.cpp:
+
+ Fixed a compilation error in Borland builds.
+
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc:
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc:
+ * DAnCE/examples/BasicSP/EC/EC.mpc:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc:
+
+ Added missing libraries. They have been wrong for a very long
+ time. Thanks to Borland builds for catching these. I am sure
+ there are a few more and I will allow one more build to catch
+ them.
+
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.h:
+
+ Fixed warnings due to hidden virtual functions.
+
+
+Sat Oct 9 14:29:41 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added a .in () to the _var variable used in push_event ().
+
+ * DAnCE/Config_Handlers/XercesString.cpp:
+ * DAnCE/Config_Handlers/XercesString.h:
+
+ Removed an unnecessary operator== which was confusing some
+ compilers.
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+
+ Changed the wrong exceptions that were being thrown.
+
+ * DAnCE/examples/BasicSP/EC/EC_exec.cpp:
+ * DAnCE/examples/BasicSP/EC/EC_exec.h:
+ * examples/OEP/BasicSP/EC/EC_exec.cpp:
+ * examples/OEP/BasicSP/EC/EC_exec.h:
+
+ The declaration of open () and close () was hiding the base
+ class methods. Changed the name of the functions.
+
+ The above changes should fix part of the errors from the Borland
+ builds.
+
+Thu Oct 7 03:17:54 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd:
+ * docs/schema/ccd.xsd:
+ * docs/schema/cdp.xsd:
+
+ Updated to be more compliant with the DnC spec.
+
+Wed Oct 6 16:10:27 2004 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/ciaopolicy.xsd:
+
+ Finished filling out the policy schema.
+
+Sun Oct 03 09:38:03 2004 Nanbor Wang <nanbor@cse.wustl.edu>
+
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp:
+ * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Parser.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Traversal.hpp:
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp:
+ * DAnCE/Config_Handlers/pcd.hpp:
+ * DAnCE/Config_Handlers/iad.hpp:
+ * DAnCE/Config_Handlers/cpd.hpp:
+ * DAnCE/Config_Handlers/cid.hpp:
+ * DAnCE/Config_Handlers/cdp.hpp:
+ * DAnCE/Config_Handlers/cdd.hpp:
+ * DAnCE/Config_Handlers/Deployment.hpp:
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp:
+ * DAnCE/Config_Handlers/ccd.hpp:
+ * DAnCE/Config_Handlers/toplevel.hpp: Change to include XSCRT
+ headers as "user libraries" instead of <system libraries>.
+
+Sun Oct 03 09:18:05 2004 Nanbor Wang <nanbor@cse.wustl.edu>
+
+ * DAnCE/tests/Config_Handlers/handler_test.mpb: Changed to use the
+ xerces base project that Johnny added. The base project
+ correctly uses lit_libs to include xerces.
+
+Thu Sep 30 14:49:23 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Removed identifiers of unused args.
+
+ * CIDLC/RepositoryIdGenerator.cpp:
+
+ Extended generator to compute repo ids for
+ homes and components.
+
+ * CIDLC/DescriptorGenerator.cpp:
+
+ Changed code to use the context value set by the expanded
+ repo id generator and removed code to compute repo id
+ in this generator.
+
+Thu Sep 30 11:03:20 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added handling of file extension .cdl, as found in
+ spec documents.
+
+Thu Sep 30 09:16:52 2004 Nanbor Wang <nanbor_a_txcorp_._com>
+
+ * CCF/Config.rules: Added new definitions to actually add the
+ boost and utility related directives into compiler/linker
+ flags.
+
+Thu Sep 30 09:55:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/DnC_Dump_T.h:
+ Fixed fuzz error
+
+Wed Sep 29 17:30:25 2004 Irfan Pyarali <irfan@oomworks.com>
+
+ * performance-tests/Protocols:
+
+ - Minor changes were made to the Sender to in lieu of some
+ interface changes.
+
+ - run_test.pl was changed so that a simple version of the test
+ can be executed.
+
+ * performance-tests/Protocols/Sender/Sender.mpc:
+ * performance-tests/Protocols/Receiver/Receiver.mpc:
+
+ Removed "dummy" label so that it is included in nightly builds.
+
+ * performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini:
+ * performance-tests/Protocols/Sender/Sender.mpc:
+ * performance-tests/Protocols/descriptors/Receiver.csd:
+ * performance-tests/Protocols/descriptors/Receiver.ssd:
+ * performance-tests/Protocols/descriptors/Sender.csd:
+ * performance-tests/Protocols/descriptors/Sender.ssd:
+
+ Sender_* was changed to Protocols_Sender_* and Receiver_* was
+ changed to Protocols_Receiver_*.
+
+ * performance-tests/Protocols/Sender/Sender_exec.cpp:
+ * performance-tests/Protocols/Sender/Sender.mpc:
+
+ Custom_Network_Priority_Mapping.cpp was included directly. If
+ listed as a source file that is not in the current directory,
+ mpc mucks the object file location.
+
+ * performance-tests/Protocols/descriptors/Receiver.csd:
+ * performance-tests/Protocols/descriptors/Receiver.ssd:
+ * performance-tests/Protocols/descriptors/Sender.csd:
+ * performance-tests/Protocols/descriptors/Sender.ssd:
+
+ Hello was changed to Protocols.
+
+ * tests/RTCCM/DiffServ/descriptors/CIAO_Installation_Data.ini:
+ * tests/RTCCM/DiffServ/Sender/Sender.mpc:
+ * tests/RTCCM/DiffServ/descriptors/Receiver.csd:
+ * tests/RTCCM/DiffServ/descriptors/Receiver.ssd:
+ * tests/RTCCM/DiffServ/descriptors/Sender.csd:
+ * tests/RTCCM/DiffServ/descriptors/Sender.ssd:
+
+ Sender_* was changed to DiffServ_Sender_* and Receiver_* was
+ changed to DiffServ_Receiver_*.
+
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+ * tests/RTCCM/DiffServ/Sender/Sender.mpc:
+
+ Custom_Network_Priority_Mapping.cpp was included directly. If
+ listed as a source file that is not in the current directory,
+ mpc mucks the object file location.
+
+ * tests/RTCCM/DiffServ/descriptors/Receiver.csd:
+ * tests/RTCCM/DiffServ/descriptors/Receiver.ssd:
+ * tests/RTCCM/DiffServ/descriptors/Sender.csd:
+ * tests/RTCCM/DiffServ/descriptors/Sender.ssd:
+
+ Hello was changed to DiffServ.
+
+ * tests/RTCCM/DiffServ/Controller/Controller.mpc:
+
+ "requires" directive was incorrect. Correct directive is
+ "after".
+
+Wed Sep 29 19:20:19 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_svnt.cpp:
+ * DAnCE/examples/BasicSP/EC/EC_svnt.cpp:
+ * DAnCE/examples/BasicSP/EC/EC_svnt.h:
+
+ Removed them from the main trunk.
+
+Wed Sep 29 14:39:29 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ The dump function was too complicated not compiling on many
+ platforms cleanly. This effort is to simplify the dump functions
+ so that we can compile on many platforms.
+
+ * DAnCE/Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump.h:
+
+ Moved template functions out of the class.
+
+ * DAnCE/Config_Handlers/DnC_Dump_T.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump_T.h:
+
+ New files for the template functions.
+
+ * DAnCE/Config_Handlers/Dump_Obj.cpp:
+ * DAnCE/Config_Handlers/Dump_Obj.h:
+
+ Utility functions have been moved here.
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ New files added to the build.
+
+Wed Sep 29 07:51:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Servant_Activator.h:
+ * DAnCE/ciao/Servant_Activator.h:
+ Added missing prama pop
+
+Wed Sep 29 07:09:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Utils.h:
+ Added missing include of ace/post.h
+
+Mon Sep 27 17:57:08 2004 Krishnakumar B <kitty@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BasicSP.mpc:
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc:
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc:
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc:
+ * DAnCE/examples/BasicSP/EC/EC.mpc:
+
+ Fixed the MPC files to refer to the version of DAnCE libraries
+ instead of the old CIAO libraries.
+
+Mon Sep 27 22:41:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Remove calling Home_Servant_impl_Base () directly.
+
+ * DAnCE/ciao/Home_Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_Base.h:
+ * ciao/Home_Servant_Impl_Base.cpp:
+ * ciao/Home_Servant_Impl_Base.h:
+
+ Provided a default constructor with explicit keyword. This
+ should help VC6 and Borland compilers to compile the generated
+ servants just fine.
+
+Mon Sep 27 19:45:04 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Remove calling Context_Impl_Base () and Servant_Impl_Base ()
+ directly.
+
+ * DAnCE/ciao/Context_Impl_Base.cpp:
+ * DAnCE/ciao/Context_Impl_Base.h:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * ciao/Context_Impl_Base.cpp:
+ * ciao/Context_Impl_Base.h:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+
+ Added a explicit default constructor so that they are not called
+ implicitly when derived classes are instantiated.
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+
+ Checking in the change mentioned before just now, since it
+ fell trhough the cracks.
+
+Mon Sep 27 15:41:20 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+
+ Export the class out for Win32 builds.
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+
+ Removed a strange character frm the mpc file.
+
+Mon Sep 27 15:26:46 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+
+ Added a new exception specification to correct an error in BCB6
+ builds.
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Deployment_stub should link with CIAO_DnC_Client.
+
+Mon Sep 27 12:56:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ Instead of adding all xerces stuff to the project itself, inherit
+ from the new xerces base project
+
+Mon Sep 27 12:02:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeDaemon.mpc:
+ Instead of adding ifr_client to libs, use the
+ corresponding base projects
+
+Mon Sep 27 11:54:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ Instead of adding the valuetype and ifr_client to libs, use the
+ corresponding base projects
+
+Mon Sep 27 08:54:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/examples/BasicSP/EC/EC_exec.cpp:
+ Added missing ACE_TRY_CHECK
+
+Mon Sep 27 08:03:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Context_Impl_Base.cpp:
+ Use false instead of FALSE.
+
+Wed Sep 22 17:46:14 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Removed unused parameter identifiers and fixed the order of some
+ class member initializations.
+
+Tue Sep 21 13:28:40 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/value_factory_registration.html:
+
+ New documentation file, describing the behavior of the CIDL
+ compiler with respect to automatic generation of code to
+ register valuetype factories for eventtypes referenced by
+ 'consumes' declarations in a component.
+
+Tue Sep 21 13:04:39 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code to check an eventtype used as an event consumer
+ in a component for the presence of an operation or
+ factory. If either is found, code generation for registering
+ the associated _init class with the container's ORB is skipped.
+ Also added command line option to toggle off generation of
+ the factory registration in all cases. Thanks to
+ Vasili Goutas <vasili@goutas.de> for the posting to the ciao-users
+ mailing list that prompted us to make the CIDL compiler
+ smarter and more friendly with regard to this feature.
+
+Tue Sep 21 13:00:33 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL3/IDL3.vcproj:
+
+ Added new files create by Boris for eventtype factory support.
+
+ * CCF/CCF/IDL3/SemanticGraph/EventType.cpp:
+
+ Fixed search-and-replace error in EventTypeFactory constructor
+ that had it inheriting from itself.
+
+Tue Sep 21 11:08:20 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.hpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/IDL3/Parser.hpp:
+ * CCF/CCF/IDL3/SemanticAction.hpp:
+ * CCF/CCF/IDL3/SemanticAction/EventTypeFactory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/EventType.hpp:
+ * CCF/CCF/IDL3/Traversal/EventType.hpp:
+
+ Added support for eventtype factories.
+
+Tue Sep 21 07:39:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Context_Impl_Base.cpp:
+ Use false instead of FALSE.
+
+Mon Sep 20 18:47:47 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+
+ Use lit_libs for xercesc as suggested by Chad Elliott.
+
+ * performance-tests/Protocols/Sender/Sender.idl:
+
+ Fixed the IDL to compile with the latest changes to IDL
+ compiler.
+
+Mon Sep 20 18:43:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+ Added strategies as base project
+
+Mon Sep 20 11:37:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/StandardConfigurator_Impl.h:
+ Removed not needed qualifier, and fixed incorrect Id tag
+
+Sun Sep 19 19:12:22 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Deployment.idl:
+
+ Fixed variable name that differ by case from the data type.
+
+Fri Sep 17 16:46:32 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/CIDLC.sln:
+
+ Added the 5 projects from CCF.sln so the CIDL compiler can be
+ built from scratch in a single MSVC 7.1 Solution.
+
+Fri Sep 17 08:27:57 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Context_Impl_Base.cpp:
+ * ciao/Context_Impl_Base.cpp:
+
+ Use false instead of FALSE. This should fix compile errors in
+ debian full reactor builds.
+
+Fri Sep 17 13:22:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+ Use ciao_server as base
+
+Thu Sep 16 10:15:04 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.h:
+
+ Added inheritance to Servant_Impl_Base of
+ POA_Components::CCMObject to bring it in sync with the
+ version in regular CIAO/ciao.
+
+ * DAnCE/ciao/Servant_Impl_T.h:
+
+ Made inheritance of Servant_Impl_Base virtual, to bring it
+ in sync with the version in regular CIAO/ciao.
+
+Thu Sep 16 08:44:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * CIAO/ciao/Servant_Activator.cpp:
+ Fixed compile errors in Borland build
+
+Tue Sep 14 20:43:31 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Context_Impl_Base.h:
+ * DAnCE/ciao/Context_Impl_Base.h:
+
+ Moved a sufficiently substantial included file above the
+ #pragma once directive, so that some compilers will not
+ complain that it's obsolete.
+
+Tue Sep 14 15:02:24 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Context_Impl_Base.cpp:
+ * DAnCE/ciao/Context_Impl_Base.h:
+ * DAnCE/ciao/Context_Impl_T.cpp:
+ * DAnCE/ciao/Context_Impl_T.h:
+ * DAnCE/ciao/Home_Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_Base.h:
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_T.h:
+ * ciao/Context_Impl_Base.cpp:
+ * ciao/Context_Impl_Base.h:
+ * ciao/Context_Impl_T.cpp:
+ * ciao/Context_Impl_T.h:
+ * ciao/Home_Servant_Impl_Base.cpp:
+ * ciao/Home_Servant_Impl_Base.h:
+ * ciao/Home_Servant_Impl_T.cpp:
+ * ciao/Home_Servant_Impl_T.h:
+
+ New files, duplicated in CIAO/ciao and
+ CIAO/DAnCE/ciao, containing base classes
+ for the CIDL-compiler-generated context
+ and home servant classes. A template class
+ sits in the hierarchy between the generated
+ class and its skeleton base class (in the
+ case of the home servant) or its executor
+ base (in the case of the context). The
+ template class also inherits from a
+ non-template class which is used to hold
+ members and operations not using any template
+ parameters.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * DAnCE/ciao/CCM_Core.mpc:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+ * ciao/CCM_Core.mpc:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+
+ Modified existing files to correspond with the
+ new files described above and:
+
+ - Added implementations for the component servant
+ operations provide_facet(), get_named_facets(),
+ get_consumer() and get_named_consumers().
+
+ - Added inheritance of CCMObject to the non-template
+ base class, to enable operations in the template
+ base class, which used no template parameters but
+ which were there only to be in the inheritance
+ hierarchy from skeleton to generated servant, to
+ be moved to the non-template base class, and
+ thus not be reinstantiated with every new type.
+
+ - Moved operations from generated code to one of
+ the two base classes.
+
+Mon Sep 13 13:18:33 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * RepositoryManager/Update_Plan.h
+
+ Fixed a waring in Windows build by changing "class" to "struct"
+ in forward declaration.
+
+ * examples/BasicSP/BasicSP.mpc
+ * examples/BasicSP/BMClosedED/BMClosedED.mpc
+ * examples/BasicSP/BMDevice/BMDevice.mpc
+ * examples/BasicSP/BMDisplay/BMDisplay.mpc
+ * examples/BasicSP/EC/EC.mpc
+
+ Changed the output stub, servant, and executor library names
+ for all the components in BasicSP example. The reason is
+ becasue all the DnC descriptors are tightly coupled with the
+ output library names. I might come back switch this change
+ back since this will conflict with the BasicSP example in
+ CIAO_ROOT/examples.
+
+Mon Sep 13 13:07:33 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Fixed a bug inside create_connections () method.
+
+Mon Sep 13 15:16:33 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+
+ Fixed the paths in the scripts.
+
+Mon Sep 13 07:11:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Port_Activator.h:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * ciao/Port_Activator.h:
+ * ciao/Servant_Activator.cpp:
+
+ Fixes for MSVC++ compilation errors. Inspite of being careful I
+ introduced a couple of VC++ anathemas.
+
+Mon Sep 13 06:16:31 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * ciao/Container_Base.cpp:
+
+ Fixed wrong ACE_CHECK usage. This should fix compilation errors
+ in Full_Reactors build.
+
+Mon Sep 13 04:20:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Removed iorinterceptor and objreftemplate from CIAO_DnC_Server
+ project. No reason to believe that they need thes. This should
+ hopefully remove the warnings in our daily builds.
+
+ * examples/Hello/Sender/Sender_exec.cpp:
+
+ Added a simple debug statement.
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+
+ Tried fixing the link errors on the scoreboard.
+
+Mon Sep 13 03:50:08 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Container_Base.inl:
+ * DAnCE/ciao/Port_Activator.cpp:
+ * DAnCE/ciao/Port_Activator.h:
+ * DAnCE/ciao/Port_Activator_T.cpp:
+ * DAnCE/ciao/Port_Activator_T.h:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * DAnCE/ciao/Servant_Activator.h:
+
+ Replicated changes to DAnCE. DAnCE testing hasn't been completed
+ yet.
+
+Sun Sep 12 22:10:38 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changes to the CIDL which uses the servant and port activators
+ checked in now.
+
+Mon Sep 13 03:00:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ To overcome the long standing problem in DAnCE, we are now making
+ the facet and consumer servants to be on demand activatable. This
+ would make sure that application level ports are not activated
+ until used. This should help address the problems between DAnCE
+ and existing way of doing things. These changes should be useful
+ even after old CIAO is removed since we want to give existing
+ component applications the same activation semantics with DAnCE.
+
+ This checkin addresses old CIAO. DAnCE and CIDLC changes will come
+ in soon.
+
+ * ciao/Servant_Activator.cpp:
+ * ciao/Servant_Activator.h:
+
+ New files for facet and consumer activations. We now have a
+ seperate servant activator for facet and consumer ports. The
+ servant activator acts like a factory activating the right port
+ activators which can create the right servant for every port.
+
+ * ciao/Port_Activator.cpp:
+ * ciao/Port_Activator.h:
+ * ciao/Port_Activator_T.cpp:
+ * ciao/Port_Activator_T.h:
+
+ Concrete port activators for every port.
+
+ * ciao/CCM_Core.mpc:
+
+ Added the new files for building.
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Container_Base.inl:
+
+ Changes to the Container to use the above servant activator. The
+ continer creates the servant activator and sets that in the POA
+ meant for facet and consumers.
+
+Fri Sep 10 23:08:15 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+
+ Reverted this change "Sat Sep 11 03:35:24 2004 Balachandran
+ Natarajan <bala@dre.vanderbilt.edu>"
+
+Fri Sep 10 22:53:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+ * ciao/CCM_Core.mpc:
+
+ Linked with TAO_Utils library
+
+Sat Sep 11 03:35:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+
+ Removed install_servant () since it is not used.
+
+Fri Sep 10 22:28:45 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changes to accomodate the accessor renaming.
+
+Sat Sep 11 03:22:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Container_Base.inl:
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Container_Base.inl:
+
+ Made a few changes. They are
+
+ . Added a second POA into the container. One of the POA's will
+ host the component and the other POA will host the facet and
+ consumer servants. Obviously the two POA's have different sets
+ of policies. The new POA is primarily targeted to activate
+ facet and consumer servants on demand.
+
+ . Renamed the accessor to the ORB and POA. Made them const
+ methods
+
+ . Improved documentation and a number of costeic changes.
+
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.cpp:
+ * DAnCE/RepositoryManager/Update_Plan.h:
+
+ BUnch of cosmetic changes to be conformant with ACE+TAI coding
+ guidelines.
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_T.cpp:
+
+ Fixed simple compilation errors and warnings.
+
+Thu Sep 9 17:07:59 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/IDL3/Events/Abstract/Abstract.idl:
+
+ Uncommented IDL testing multiple inheritance of eventtypes.
+
+Thu Sep 9 10:30:22 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * ciao/Container_Base.cpp:
+
+ Added generate_reference() method to DAnCE version of
+ Container_Base, and fixed ACE_CHECK macro mistake in
+ both versions.
+
+Wed Sep 8 11:52:45 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Updated files with changes made to the corresponding files
+ in regular CIAO/ciao.
+
+Tue Sep 7 22:14:43 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Fixed unused argument warnings.
+
+Tue Sep 7 15:48:19 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.cpp:
+
+ Cosmetic changes.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+
+ Moved several methods from the generated servant class to the
+ template Servant_Impl base class.
+
+Tue Sep 7 10:44:10 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/CIDLC.mpc:
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/RepositoryIdGenerator.cpp:
+ * CIDLC/RepositoryIdGenerator.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/cidlc.cpp:
+
+ - Updated the RepositoryIdGenerator and re-added the source
+ and header files to the build. This generator creates
+ repository ids for interfaces and eventtypes, and stores
+ them internally in a context variable for later access
+ in code generation. It also handles modifications to the
+ repository ids stemming from 'typeprefix' or 'typeid'
+ declarations.
+
+ - Added generation of 'provide_<facet name>_i' and
+ 'get_consumer_<event consumer name>_i' methods in the servant,
+ which create dummy object references and store them in the
+ appropriate port table in the servant base class.
+
+ - Re-implemented the generated 'provide_<facet name>' and
+ 'get_consumer_<event consumer name>' methods. They now
+ use the container's POA to activate the dummy objects
+ created by the corresponding _i methods described above.
+ The activation takes place upon the first outside access
+ of these objects. If an object has already been activated,
+ it will simply be found in its port table and returned.
+ Thanks to Bala for the prototype code for this feature.
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+
+ Added 'generate_reference' utility method called by the
+ '_i' methods described above.
+
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+
+ Added 'lookup_facet' and 'lookup_consumer' methods used in
+ generated servant code to determine if a desired object has
+ been activated already (and added to a port table) or not.
+
+Mon Aug 30 12:52:28 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+
+ Fixes for link errors in the daily builds
+
+Sun Aug 29 19:25:21 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/XMLHelpers.mpc:
+
+ Fix for link errors in Debian_Core builds.
+
+Sun Aug 29 19:02:42 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Added valuetype seperately to the Deployment_svnt project.
+
+Sun Aug 29 18:10:13 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_svnt.h:
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice_svnt.h:
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay_svnt.h:
+ * DAnCE/examples/BasicSP/EC/EC_svnt.h:
+
+ These files should not be in the repository.
+
+Sat Aug 28 18:44:00 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc:
+
+ Fixed a compile erros in the daily builds.
+
+Sat Aug 28 09:22:15 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BasicSP.mpc:
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc:
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc:
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc:
+ * DAnCE/examples/BasicSP/EC/EC.mpc:
+
+ Fixed the project names and shared librray names so that they
+ don't collide with the regual BasicSP test. Ideally there
+ shouldn't be any duplicate code. I waill talk to Gan about
+ this.
+
+Thu Aug 26 16:45:10 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/IDL3/Lookup/README:
+ * tests/IDL3/Lookup/lookup_test.idl:
+ * tests/IDL3/Lookup/lookup_test.mpc:
+
+ New files, a test for the IDL compiler lookup of declarations
+ in base interfaces, valuetypes, components, and homes, and
+ in supported interfaces, referenced by the local name in the
+ derived IDL type. Thanks to Boris Kolpackov
+ <boris@dre.vanderbilt.edu> for reporting the bug and for
+ providing an example IDL file that illustrates the various
+ cases.
+
+Thu Aug 26 13:24:40 2004 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/BaiscSP/*.*:
+
+ Created above directory and subdictories to add an example for
+ using DAnCE.
+
+Thu Aug 26 12:28:40 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Added missing files to project.
+
+Thu Aug 26 11:25:39 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+
+ Changed dependency from ciao_server to ciao_servant.
+
+Wed Aug 25 11:28:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/DnC_Dump.h:
+ Removed not needed qualifier
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ Removed not needed ; after namespace closure
+
+Wed Aug 25 11:24:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Config_Error_Handler.h:
+ Removed not needed ; after namespace closure
+
+Tue Aug 24 11:31:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Config.h:
+ Removed not needed ; after namespace closure
+
+Mon Aug 23 21:47:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Elements.ipp:
+ * DAnCE/Config_Handlers/XSCRT/Elements.tpp:
+ * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp:
+ * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp:
+ * DAnCE/Config_Handlers/XSCRT/Parser.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Parser.ipp:
+ * DAnCE/Config_Handlers/XSCRT/Parser.tpp:
+ * DAnCE/Config_Handlers/XSCRT/Traversal.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Traversal.ipp:
+ * DAnCE/Config_Handlers/XSCRT/Traversal.tpp:
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.hpp:
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.ipp:
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.tpp:
+
+ Added XSCRT 0.0.4 into the repository to compile the handlers.
+
+Mon Aug 23 21:32:50 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Fixed a compiler error in the daily builds showing up from a
+ non-const declaration of a char * for extraction into an Any.
+
+ * DAnCE/Config_Handlers/Config.h:
+
+ Deployment.h has been renamed to Config.h
+
+ * DAnCE/Config_Handlers/Process_Element.h:
+ * DAnCE/Config_Handlers/Basic_Handler.h:
+
+ Include Config.h
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp:
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp:
+ * DAnCE/Config_Handlers/Deployment.cpp:
+ * DAnCE/Config_Handlers/Deployment.hpp:
+ * DAnCE/Config_Handlers/ccd.cpp:
+ * DAnCE/Config_Handlers/ccd.hpp:
+ * DAnCE/Config_Handlers/cdd.cpp:
+ * DAnCE/Config_Handlers/cdd.hpp:
+ * DAnCE/Config_Handlers/cdp.cpp:
+ * DAnCE/Config_Handlers/cdp.hpp:
+ * DAnCE/Config_Handlers/cid.cpp:
+ * DAnCE/Config_Handlers/cid.hpp:
+ * DAnCE/Config_Handlers/cpd.cpp:
+ * DAnCE/Config_Handlers/cpd.hpp:
+ * DAnCE/Config_Handlers/iad.cpp:
+ * DAnCE/Config_Handlers/iad.hpp:
+ * DAnCE/Config_Handlers/pcd.cpp:
+ * DAnCE/Config_Handlers/pcd.hpp:
+ * DAnCE/Config_Handlers/toplevel.cpp:
+ * DAnCE/Config_Handlers/toplevel.hpp:
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+
+ Generated code from XSC which is going to be used for the next
+ generation handlers. They have been added in the MPC but guarded
+ with requires += dummy_label since they give lot of warnings.
+
+Mon Aug 23 08:02:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+ Fixed typo in vpath
+
+Sun Aug 22 22:23:12 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+
+ Fixed VC6 compilation errors.
+
+Mon Aug 23 01:07:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/StandardConfigurator_Impl.cpp:
+ * ciao/StandardConfigurator_Impl.cpp:
+
+ Fixed unused variable warnings.
+
+Sun Aug 22 21:28:34 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * DAnCE/ciao/StandardConfigurator_Impl.cpp:
+ * DAnCE/ciao/StandardConfigurator_Impl.h:
+ * DAnCE/ciao/CCM_Core.mpc:
+
+ Added these files to the DAnCE builds. These were from the
+ following change
+
+ Tue Aug 17 14:29:00 2004 Jules White <jules@dre.vanderbilt.edu>
+
+ * ciao/CCM_Core.mpc:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+ * ciao/StandardConfigurator_Impl.cpp:
+ * ciao/StandardConfigurator_Impl.h:
+
+ Fixed compilation errors in builds where exceptions have been
+ turned off.
+
+Sun Aug 22 22:11:49 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Fixed redeclaration error in VC6 builds.
+
+Sun Aug 22 20:08:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed unused variable warnings in the generated code.
+
+Sun Aug 22 17:06:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/be_global.cpp:
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Fixed unused variable warnings in our daily builds.
+
+Sun Aug 22 16:26:01 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Receiver/Receiver.mpc:
+
+ Fixed a compile error in our daily builds.
+
+Fri Aug 20 16:01:55 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+
+ Fixed typo in source file name.
+
+Fri Aug 20 10:39:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Container_Base.h:
+ Fixed compile errors
+
+Fri Aug 20 07:32:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Container_Base.h:
+ Fixed compile errors
+
+Thu Aug 19 17:13:22 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added code generation for the set_attributes() method called
+ on the servant by the deployer.
+
+Thu Aug 19 16:09:45 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.h:
+ * ciao/Container_Base.h:
+
+ Fixed a compilation error reported by Roland Schimmack <Roland
+ dot Schimmack at gmx dot de>
+
+Thu Aug 19 08:44:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * PROBLEM-REPORT-FORM:
+ Ask for the default.features file used by MPC.
+
+Wed Aug 18 14:21:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ Added missing pragma pop
+
+Tue Aug 17 14:29:00 2004 Jules White <jules@dre.vanderbilt.edu>
+
+ * CIAO/ciao/Servant_Impl_Base.h:
+ * CIAO/ciao/Servant_Impl_Base.cpp:
+ Added a method to create and return the StandardConfigurator for a component.
+ Overrided _default_POA so that it returns the POA of the servant's container.
+
+ * CIAO/ciao/StandardConfigurator_Impl.h:
+ * CIAO/ciao/StandardConfigurator_Impl.cpp:
+ Created an implementation of the StandardConfigurator interface.
+
+Mon Aug 16 22:15:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h:
+
+ Fixed compilation errors in builds where exceptions have been
+ turned off.
+
+Mon Aug 16 22:09:52 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Sender/Sender.mpc:
+
+ Fix for link errors on the scoreboard.
+
+Mon Aug 16 21:01:49 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+
+ Fix for link errors on the scoreboard.
+
+Mon Aug 16 16:44:13 2004 J.T. Conklin <jtc@acorntoolworks.com>
+
+ * CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp:
+ * CIAO/DAnCE/NodeManager/Node_Daemon.cpp:
+ * CIAO/DAnCE/ciao/CCM_Container.idl:
+ * CIAO/ciao/CCM_Container.idl:
+ Changed #include "orbsvcs/orbsvcs/..." to #include "orbsvcs/...".
+
+Mon Aug 16 16:36:49 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Changed conversion for eventtypes to generate, instead of the
+ original eventtype, a valuetype with Components::EventBase added
+ to its inheritance list. This is completely equivalent to the
+ original eventtype and has the advantage that it eliminates the
+ need to use the -Sm option (disabling CCM equivalent IDL
+ preprocessing) when running the IDL compiler on a converted
+ file. Thanks to Bala Natarajan <bala@dre.vanderbilt.edu> for
+ the suggestion.
+
+Mon Aug 16 14:14:15 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl:
+
+ Do not do the compile the implied data part of the IDL.
+
+Mon Aug 16 12:42:59 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/CAD_Handler.h:
+ * DAnCE/Config_Handlers/CEPE_Handler.h:
+ * DAnCE/Config_Handlers/CPK_Handler.h:
+ * DAnCE/Config_Handlers/CPR_Handler.h:
+ * DAnCE/Config_Handlers/Cap_Handler.h:
+ * DAnCE/Config_Handlers/CompIntrDesc_Handler.h:
+ * DAnCE/Config_Handlers/CompPkgDesc_Handler.h:
+ * DAnCE/Config_Handlers/DT_Handler.h:
+ * DAnCE/Config_Handlers/Domain_Handler.h:
+ * DAnCE/Config_Handlers/ERE_Handler.h:
+ * DAnCE/Config_Handlers/IAD_Handler.h:
+ * DAnCE/Config_Handlers/ID_Handler.h:
+ * DAnCE/Config_Handlers/IR_Handler.h:
+ * DAnCE/Config_Handlers/MID_Handler.h:
+ * DAnCE/Config_Handlers/NIA_Handler.h:
+ * DAnCE/Config_Handlers/PCI_Handler.h:
+ * DAnCE/Config_Handlers/PC_Handler.h:
+ * DAnCE/Config_Handlers/Plan_Handler.h:
+ * DAnCE/Config_Handlers/Process_Element.h:
+ * DAnCE/Config_Handlers/Property_Handler.h:
+ * DAnCE/Config_Handlers/RS_Handler.h:
+ * DAnCE/Config_Handlers/RUK_Handler.h:
+ * DAnCE/Config_Handlers/Requirement_Handler.h:
+ * DAnCE/Config_Handlers/SPK_Handler.h:
+ * DAnCE/Config_Handlers/SP_Handler.h:
+ * DAnCE/Config_Handlers/TPD_Handler.h:
+ * DAnCE/Config_Handlers/Utils.h:
+
+ Use ciao/ to include any header files from core ciao.
+
+ * DAnCE/ciao/CCM_Core.mpc:
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Use the right libraries for linking. This should probably
+ address some of the core build errors on the scoreboard.
+
+Sun Aug 15 18:32:49 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+ * tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h:
+ * tools/IDL3_to_IDL2/be_extern.h:
+ * tools/IDL3_to_IDL2/be_global.cpp:
+ * tools/IDL3_to_IDL2/be_global.h:
+ * tools/IDL3_to_IDL2/be_helper.cpp:
+ * tools/IDL3_to_IDL2/be_helper.h:
+ * tools/IDL3_to_IDL2/be_init.cpp:
+ * tools/IDL3_to_IDL2/be_produce.cpp:
+ * tools/IDL3_to_IDL2/be_sunsoft.cpp:
+ * tools/IDL3_to_IDL2/be_sunsoft.h:
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h:
+ * tools/IDL3_to_IDL2/README:
+
+ New files implementing a tool that inputs an IDL file with IDL3
+ constructs and generates another IDL file with the IDL3
+ constructs converted to the spec-defined IDL2 equivalents. Using
+ the generated file instead of the original one in applications
+ will allow the developer to reference the IDL2 equivalent types
+ in application IDL, rather than just in C++ code as before.
+ The generated IDL file has a '_IDL2' suffix added to the
+ original file name just before the '.idl' extension.
+
+Sun Aug 15 09:17:59 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+
+ Added missing libraries as reported by our daily builds.
+
+Sun Aug 15 09:12:36 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+
+ Fixed the handlers to link in CIAO_DnC_Container too.
+
+Sat Aug 14 14:44:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+
+ Do not include /usr/lib to be in libpaths. This is odd and
+ shouldn't be there at the application level. Applications should
+ only be bothered about using $XERCESCROOT and the like. If the
+ application doesn't specify the compiler, linker and the loader
+ knows where to pick things from.
+
+Sat Aug 14 14:07:53 2004 Aniruddha Gokhale <a.gokhale@vanderbilt.edu>
+
+ * DAnCE/NodeManager/Node_Daemon.cpp:
+
+ Included "ace/os_include/os_netdb.h since otherwise the
+ MAXHOSTNAMELEN constant was not found.
+
+Sat Aug 14 15:36:28 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ * DAnCE/NodeManager/Node_Daemon.cpp:
+
+ Cosmetic fixes for fuzz errors and other simple fixes for the
+ daily builds.
+
+ * DAnCE/NodeManager/README:
+
+ Added a README file in the directory.
+
+Sat Aug 14 04:20:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h:
+ * DAnCE/ciao/ComponentsC.h:
+ * ciao/ComponentsC.h:
+
+ Removed a trailing ; at the end of namespace closure. g++-3.4.1
+ starts getting seizures once it locates a trailing ;.
+
+Sat Aug 14 03:29:18 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+ * tools/XML_Helpers/XMLHelpers.mpc:
+
+ Tried fixing some warnings and errors in the builds. I am not
+ able to reproduce it and so I am taking a blind shot.
+
+Thu Aug 12 14:14:00 Jules White <jules@dre.vanderbilt.edu>
+
+ * docs/schema/cdp.xsd:
+ * docs/schema/Modified_Deployment.xsd:
+
+ Changed the schema so that it was more compliant with the spec.
+
+Thu Aug 12 15:25:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/NEWS:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+
+ Updates at this
+
+Thu Aug 12 11:35:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+
+ Propogating the changes from "Mon Aug 9 11:38:04 2004 Jeff
+ Parsons <j.parsons@vanderbilt.edu>" to DAnCE.
+
+ * DAnCE/tests/Config_Handlers/Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.h:
+
+ Cleaned up things so that it is more portable.
+
+ * DAnCE/tests/Config_Handlers/handler_test.mpb:
+
+ Put Handler_Test as a template file.
+
+Thu Aug 12 16:20:19 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.h:
+ * DAnCE/tests/Config_Handlers/Handler_Test.i:
+
+ Fixed fuzz errors.
+
+Wed Aug 11 22:37:31 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/Node_Daemon.cpp:
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+
+ Fixed fuzz errors.
+
+Wed Aug 11 22:15:26 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Fixed yet another problem with MPC file. Should by now compile
+ clean on the scoreboard. Let us see hwo it goes.
+
+Wed Aug 11 20:08:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mpc:
+
+ Fixed library paths. This seems to have been busted.
+
+Wed Aug 11 14:38:00 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+
+ Made certain parts exception safe and fixed fuzz errors.
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+
+ The MPC file was busted which lead to errors in the daily
+ builds.
+
+ * tests/RTCCM/DiffServ/Receiver/Receiver.mpc:
+
+ Fixed errors in he MPC file.
+
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+
+ Fixed fuzz errors.
+
+Wed Aug 11 12:45:09 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mpc:
+
+ Added new files startting with Exec* into the CIDLC project.
+
+ * CIAOTAO.mwc:
+
+ Added tests section to the above file.
+
+Wed Aug 11 15:08:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+
+ Fix for the compilation errors in the daily builds.
+
+Mon Aug 9 11:38:04 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Servant_Impl_T.h:
+
+ Moved the body of the destructor and the same_component()
+ method from the generated servant class to the base class.
+
+Sat Aug 7 17:55:59 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Prevented compilation errors if CIDL is not built.
+
+Sat Aug 7 16:43:45 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ * tests/IDL3/Homes/Basic/Basic.mpc:
+
+ Changed the name of the stub library and project names. There
+ was a clash in project and library names.
+
+Thu Aug 5 17:42:56 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/ExecImplGenerator.hpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.hpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.hpp:
+
+ New files, which generate empty executor implementation
+ classes (with spec-defined operations filled in and
+ IDL operations and attributes marked for the developer
+ to fill in). This generation is optional, triggered by
+ the CIDL compiler command line option --gen-exec-impl.
+ Two other options --exec-hdr-file-suffix and --exec-src-file-suffix,
+ can override the default generated file extensions of
+ _exec.h and _exec.cpp. Tao others, --exec-hdr-file-regex and
+ --exec-src-file-regex, allow replacement of default generated
+ filenames by pattern matching with regular expressions.
+ And finally, two more, --exec-export-include,
+ overrides the default generated export macro header file,
+ and --exec-export-macro, overrides the default generated
+ export macro for the executor implementation file.
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+ * CIDLC/cidlc.cpp:
+
+ - Added generation of (unimplemented) home finder
+ operations.
+
+ - Filled gaps and organized the command line options
+ for servant filename suffixes and regular expressions
+ to replace default generated filenames.
+
+ - Added a new type name emitter that generates the
+ appropriate NULL return value for any type.
+
+ * tests/CIDL/CodeGen/Basic.idl:
+ * tests/CIDL/CodeGen/Basic_stub_export.h:
+ * tests/CIDL/CodeGen/Basic_svnt_export.h:
+ * tests/CIDL/CodeGen/CodeGen.cidl:
+ * tests/CIDL/CodeGen/CodeGen.idl:
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ * tests/CIDL/CodeGen/CodeGen_exec_export.h:
+ * tests/CIDL/CodeGen/CodeGen_stub_export.h:
+ * tests/CIDL/CodeGen/CodeGen_svnt_export.h:
+ * tests/CIDL/CodeGen/README:
+
+ New test, for servant and executor implemtation code
+ generation of the CIDL compiler. This test target
+ correct code generation for many component-specific
+ features of IDL - catching operations and attributes
+ for supported interfaces, operations and attributes
+ for parents of supported interfaces, home operations
+ from base homes, inherited home factory and finder
+ operations, etc. The object of the test is to check
+ that the generated code builds and links successfully.
+
+Thu Aug 5 15:49:10 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h:
+
+ Made destructors in reference count enabled classes protected to
+ enforce proper memory management through the reference counting
+ mechansism (i.e. prevent directly calling operator delete() on
+ the reference counted object).
+
+ (cube_long):
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp (cube_long):
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h
+ (makeCall):
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp
+ (makeCall):
+
+ Added missing emulated exception parameter. Fixes compile-time
+ errors in emulated exception builds.
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
+ (ccm_activate):
+
+ Corrected emulated excepton parameter. Fixes a compile-time
+ error in emulated exception builds.
+
+ * performance-tests/Protocols/Controller/Controller.mpc:
+ * tests/RTCCM/DiffServ/Receiver/Receiver.mpc
+ (DiffServ_Receiver_exec):
+ * tests/RTCCM/DiffServ/Sender/Sender.mpc (DiffServ_Sender_exec):
+
+ Added missing "requires += exceptions". These tests will not
+ compile in emulated exception configurations.
+
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp
+ (get_latency):
+
+ Fixed unused parameter warning in emulated exception builds.
+
+Thu Aug 5 11:48:49 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Controller/Controller.mpc:
+
+ Corrected library link order. Addresses undefined reference
+ link-time errors in static builds.
+
+ * tools/XML_Helpers/XMLHelpers.mpc (Helper_Test):
+
+ Added missing TAO_IFR_Client library to "libs" variable.
+ Addresses undefined reference link-time errors in static
+ builds.
+
+Thu Aug 5 13:28:49 2004 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/ciaopolicy.xsd:
+
+ Schema describing ORB policy configurations.
+
+Thu Aug 5 11:56:03 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CodeGenerationKit/IndentationImplanter.hpp:
+
+ Changed template template parameter of class Implanter from
+ "Buffer" to "BufferType" because the former was causing a
+ problem with VC 7.1 clashing with a class Buffer in another
+ file.
+
+Thu Aug 5 08:48:50 2004 Krishnakumar B <kitty@nospam.invalid.domain>
+
+ * CIAO-INSTALL.html: Updated to reflect dependency on Xerces and
+ native exceptions.
+
+Wed Aug 4 22:50:17 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Sender.mpc (Hello_Starter):
+ * performance-tests/Protocols/Controller/Controller.mpc (perf):
+ * tools/XML_Helpers/XMLHelpers.mpc (Helper_Test):
+
+ Fixed static build link-time errors caused by not linking the
+ appropriate libraries.
+
+Wed Aug 4 22:31:24 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * docs/tutorial/Hello/client.cpp (main):
+
+ Fixed typo that caused a syntax error.
+
+Wed Aug 4 17:24:18 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp (create):
+ * performance-tests/Benchmark/LatencyTest.cpp (makeCall):
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp
+ (makeCall):
+ * tests/RTCCM/Priority_Test/Controllers/Rate_Controller.cpp
+ (create):
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp:
+ * tests/RTCCM/Priority_Test/Workers/IOB_Worker_exec.cpp:
+
+ Fixued unused parameter warnings.
+
+ * docs/tutorial/Hello/hello_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+
+ Fixed emulated exception usage.
+
+ Fixed unused argument warnings.
+
+ * docs/tutorial/Hello/client.cpp (main):
+ * docs/tutorial/Hello/simple_client.cpp (main):
+ * performance-tests/Benchmark/Multi_Threaded/client.cpp (main):
+ * performance-tests/Benchmark/RoundTrip/client.cpp (main):
+ * performance-tests/Benchmark/RoundTripClient/client.cpp (main):
+
+ Fixed CORBA::ORB_init() arguments in emulated exception case.
+
+ Added missing ACE_TRY_CHECK after CORBA::ORB_init() call.
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
+ (start):
+
+ Fixed emulated exception usage.
+
+ Added missing emulated exception parameter. Fixes a
+ compile-time error.
+
+ Fixed unused parameter warnings.
+
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+
+ Include "ace/OS_NS_unistd.h" to pull in ACE_OS::sleep()
+ declaration.
+
+ * tests/RTCCM/Priority_Test/Controllers/Controller_exec.cpp:
+
+ Include "ace/OS_NS_stdio.h" to pull in ACE_OS::snprintf()
+ declaration.
+
+ Fixed unused parameter warnings.
+
+Wed Aug 4 16:43:43 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
+ (push_Refresh):
+
+ Fixed emulated exception usage.
+
+ Fixed unused parameter warnings.
+
+ * examples/OEP/BasicSP/EC/EC_exec.cpp (pulse):
+
+ Added missing ACE_TRY_CHECK emulated exception macro. Fixes
+ warning about unused "ACE_TRY_LABEL" label.
+
+ * examples/OEP/Display/RateGen/client.cpp:
+
+ Include "ace/OS_NS_unistd.h" to pull in ACE_OS::sleep()
+ declaration.
+
+ * examples/Hello/Receiver/Receiver_exec.cpp (ccm_activate):
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp
+ (ccm_activate):
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp (ccm_activate):
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp
+ (ccm_activate):
+ * examples/OEP/Display/GPS/GPS_exec.cpp (get_MyLocation, posx):
+ (posy, create):
+ * examples/OEP/Display/GPS/GPS_tracing_exec.cpp (get_MyLocation):
+ (posx, posy, create):
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp
+ (ccm_activate):
+ * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp
+ (execute):
+ * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.cpp (moveBy):
+ * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.cpp (execute):
+
+ Fixed unused parameter warnings.
+
+Wed Aug 4 11:16:47 2004 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * Components/ComplexComponent/Attributes/Attributes.idl:
+ * Homes/Attributes/HomeAttributes.idl:
+ * ImpliedIDL/Components/Basic/ICBasic.idl:
+ * Homes/Finder/Finder.idl:
+ * ImpliedIDL/Components/EventSink/ICEventSink.idl:
+ * ImpliedIDL/Components/EventSource/ICEventSource.idl:
+ * ImpliedIDL/Components/Receptacles/ICReceptacles.idl:
+
+ Addressed some build errors on the Fuzz build.
+
+ * Components/ComplexComponent/Attributes/AttributesS.cpp:
+ * Components/ComplexComponent/EventSink/EventSinkS.cpp:
+ * Components/ComplexComponent/EventSource/EventSourceS.cpp:
+ * Components/ComplexComponent/Facets/FacetsS.cpp:
+ * Components/ComplexComponent/Receptacles/ReceptaclesS.cpp:
+ * Components/SimpleComponent/SimpleComponentS.cpp:
+ * Events/Abstract/AbstractS.cpp:
+ * Events/Regular/RegularS.cpp:
+ * Homes/Attributes/HomeAttributesS.cpp:
+ * Homes/Basic/BasicS.cpp:
+ * Homes/Factory/FactoryS.cpp:
+ * Homes/Finder/FinderS.cpp:
+ * Homes/Inheritance/InheritanceS.cpp:
+ * ImpliedIDL/Components/Basic/ICBasicS.cpp:
+ * ImpliedIDL/Components/EventSink/ICEventSinkS.cpp:
+ * ImpliedIDL/Components/EventSource/ICEventSourceS.cpp:
+ * ImpliedIDL/Components/Receptacles/ICReceptaclesS.cpp:
+ * ImpliedIDL/Events/EventsS.cpp:
+ * ImpliedIDL/Homes/HomesS.cpp:
+
+ Removed a bunch of generated code from the repository.
+
+Tue Aug 3 20:18:48 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/schema/cid.xsd:
+ * docs/schema/Deployment.xsd:
+
+ Added some tweaks.
+
+Tue Aug 3 14:25:44 2004 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * IDL3/Components/ComplexComponent/Attributes/Attributes.idl:
+ * IDL3/Components/ComplexComponent/Attributes/Attributes.mpc:
+ * IDL3/Components/ComplexComponent/Attributes/AttributesS.cpp:
+ * IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h:
+ * IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h:
+ * IDL3/Components/ComplexComponent/EventSink/EventSink.idl:
+ * IDL3/Components/ComplexComponent/EventSink/EventSink.mpc:
+ * IDL3/Components/ComplexComponent/EventSink/EventSinkS.cpp:
+ * IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h:
+ * IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h:
+ * IDL3/Components/ComplexComponent/EventSource/EventSource.idl:
+ * IDL3/Components/ComplexComponent/EventSource/EventSource.mpc:
+ * IDL3/Components/ComplexComponent/EventSource/EventSourceS.cpp:
+ * IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h:
+ * IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h:
+ * IDL3/Components/ComplexComponent/Facets/Facets.idl:
+ * IDL3/Components/ComplexComponent/Facets/Facets.mpc:
+ * IDL3/Components/ComplexComponent/Facets/FacetsS.cpp:
+ * IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h:
+ * IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h:
+ * IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl:
+ * IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc:
+ * IDL3/Components/ComplexComponent/Receptacles/ReceptaclesS.cpp:
+ * IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h:
+ * IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h:
+ * IDL3/Components/SimpleComponent/SimpleComponent.idl:
+ * IDL3/Components/SimpleComponent/SimpleComponent.mpc:
+ * IDL3/Components/SimpleComponent/SimpleComponentS.cpp:
+ * IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h:
+ * IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h:
+ * IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h:
+ * IDL3/Events/Abstract/Abstract.idl:
+ * IDL3/Events/Abstract/Abstract.mpc:
+ * IDL3/Events/Abstract/AbstractS.cpp:
+ * IDL3/Events/Abstract/Abstract_stub_export.h:
+ * IDL3/Events/Abstract/Abstract_svnt_export.h:
+ * IDL3/Events/Regular/Regular.idl:
+ * IDL3/Events/Regular/Regular.mpc:
+ * IDL3/Events/Regular/RegularS.cpp:
+ * IDL3/Events/Regular/Regular_stub_export.h:
+ * IDL3/Events/Regular/Regular_svnt_export.h:
+ * IDL3/Homes/Attributes/HomeAttributes.idl:
+ * IDL3/Homes/Attributes/HomeAttributes.mpc:
+ * IDL3/Homes/Attributes/HomeAttributesS.cpp:
+ * IDL3/Homes/Attributes/HomeAttributes_stub_export.h:
+ * IDL3/Homes/Attributes/HomeAttributes_svnt_export.h:
+ * IDL3/Homes/Basic/Basic.idl:
+ * IDL3/Homes/Basic/Basic.mpc:
+ * IDL3/Homes/Basic/BasicS.cpp:
+ * IDL3/Homes/Basic/Basic_stub_export.h:
+ * IDL3/Homes/Basic/Basic_svnt_export.h:
+ * IDL3/Homes/Factory/Factory.idl:
+ * IDL3/Homes/Factory/Factory.mpc:
+ * IDL3/Homes/Factory/FactoryS.cpp:
+ * IDL3/Homes/Factory/Factory_stub_export.h:
+ * IDL3/Homes/Factory/Factory_svnt_export.h:
+ * IDL3/Homes/Finder/Finder.idl:
+ * IDL3/Homes/Finder/Finder.mpc:
+ * IDL3/Homes/Finder/FinderS.cpp:
+ * IDL3/Homes/Finder/Finder_stub_export.h:
+ * IDL3/Homes/Finder/Finder_svnt_export.h:
+ * IDL3/Homes/Inheritance/Inheritance.idl:
+ * IDL3/Homes/Inheritance/Inheritance.mpc:
+ * IDL3/Homes/Inheritance/InheritanceS.cpp:
+ * IDL3/Homes/Inheritance/Inheritance_stub_export.h:
+ * IDL3/Homes/Inheritance/Inheritance_svnt_export.h:
+ * IDL3/ImpliedIDL/Components/Basic/ICBasic.idl:
+ * IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc:
+ * IDL3/ImpliedIDL/Components/Basic/ICBasicS.cpp:
+ * IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h:
+ * IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h:
+ * IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl:
+ * IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc:
+ * IDL3/ImpliedIDL/Components/EventSink/ICEventSinkS.cpp:
+ * IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h:
+ * IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h:
+ * IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl:
+ * IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc:
+ * IDL3/ImpliedIDL/Components/EventSource/ICEventSourceS.cpp:
+ * IDL3/ImpliedIDL/Components:
+
+ Various tests of compilation for IDL3 constructs.
+
+Tue Aug 3 18:36:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/schema/README.html:
+
+ File explaining what these new descriptors mean.
+
+ * docs/schema/Basic_Deployment_Data.xsd:
+ * docs/schema/Deployment.xsd:
+ * docs/schema/Modified_Deployment.xsd:
+ * docs/schema/Spec_Defined_Deployment.xsd:
+ * docs/schema/Spec_Defined_XMI.xsd:
+ * docs/schema/ccd.xsd:
+ * docs/schema/cdd.xsd:
+ * docs/schema/cdp.xsd:
+ * docs/schema/cid.xsd:
+ * docs/schema/cpd.xsd:
+ * docs/schema/iad.xsd:
+ * docs/schema/pcd.xsd:
+ * docs/schema/toplevel.xsd:
+ * docs/schema/unused_elements.xsd:
+
+ Sets of schemata that will be used in DAnCE. The meaning of
+ these different schemata have been documented in the
+ README.html.
+
+Sun Aug 1 09:30:37 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ChangeLogs:
+
+ Created a new directory and moved a bunch of ChangeLog entries
+ there.
+
+Sat Jul 31 11:15:15 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * CIAO version 0.4.2 released.
+
+Local Variables:
+add-log-time-format: current-time-string
+End:
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-06a b/modules/CIAO/ChangeLogs/ChangeLog-06a
new file mode 100644
index 00000000000..f2d22b3e963
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-06a
@@ -0,0 +1,8579 @@
+Tue Apr 18 00:14:56 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+
+ Reverted back the two files I accidentally checked in, which
+ should have gone into a branch. :(
+
+Mon Apr 17 18:04:56 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * M docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
+ * examples/BasicSP/BasicSP.mpc
+ * examples/BasicSP/BMClosedED/BMClosedED.mpc
+ * examples/BasicSP/BMDevice/BMDevice.mpc
+ * examples/BasicSP/BMDisplay/BMDisplay.mpc
+ * examples/BasicSP/EC/EC.mpc
+ * examples/Display/HUDisplay.mpc
+ * examples/Display/GPS/GPS.mpc
+ * examples/Display/NavDisplay/NavDisplay.mpc
+ * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
+ * examples/Display/RateGen/RateGen.mpc
+ * examples/Hello/Hello_Base/Hello_Base.mpc
+ * examples/Hello/Receiver/Receiver.mpc
+ * examples/Hello/Sender/Sender.mpc
+ * examples/Swapping/Hello_Base/Hello_Base.mpc
+ * examples/Swapping/Receiver/Receiver.mpc
+ * examples/Swapping/Sender/Sender.mpc
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Linking fixes for OS X.
+
+
+Mon Apr 17 02:33:44 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc:
+ * tools/Config_Handlers/Config_Handlers.mpc:
+
+ Avoids building with ace_for_tao.
+
+Fri Apr 14 14:50:47 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * examples/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/Display/GPS/GPS.mpc:
+ * examples/Display/RateGen/RateGen.mpc:
+ * examples/Hello/Sender/Sender.mpc:
+ * examples/Swapping/Sender/Sender.mpc:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc:
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ * tests/Minimum/Receiver/Receiver.mpc:
+
+ Avoids building with ace_for_tao.
+
+Thu Apr 13 19:18:22 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * docs/tutorials/Quoter/Simple/Broker/Broker.mpc:
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc:
+ * examples/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/BasicSP/EC/EC.mpc:
+ * examples/Display/NavDisplay/NavDisplay.mpc:
+ * examples/Hello/Receiver/Receiver.mpc:
+ * examples/Swapping/Receiver/Receiver.mpc:
+ * performance-tests/Benchmark/Benchmark.mpc:
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc:
+ * tests/Minimum/Sender/Sender.mpc:
+
+ Avoids building with ace_for_tao.
+
+Apr Thu 13 03:32:35 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Events.idl
+
+ Removed this file.
+
+ * ciaosvcs/Events/CIAO_Events.mpc
+
+ Modified to put an empty segment of IDL_Files.
+
+Wed Apr 12 17:51:03 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * NEWS
+
+ Updated the NEWS file.
+
+Wed Apr 12 14:47:14 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.mpc
+ * DAnCE/NodeManager/Monitor.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+ * ciaosvcs/Events/CIAO_Events.mpc
+
+ Fixes for linking errors/warnings on OS X builds.
+
+Tue Apr 11 12:39:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Utils/Utils.mpc:
+ Use exceptions as base project
+
+Tue Apr 11 12:43:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Container_Base.cpp:
+ Small simplification
+
+Tue Apr 11 12:22:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc:
+ * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc:
+ Updated base projects to get correct build order
+
+Tue Apr 11 08:43:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp:
+ Initialise pointers with 0
+
+Tue Apr 11 06:54:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Minimum/Minimum_Base/Minimum.mpc:
+ * tests/IDL3/Lookup/lookup_test.mpc:
+ * tests/IDL3/ImpliedIDL/Homes/Homes.mpc:
+ * tests/IDL3/ImpliedIDL/Events/Events.mpc:
+ * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc:
+ * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc:
+ * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc:
+ * tests/IDL3/Homes/Inheritance/Inheritance.mpc:
+ * tests/IDL3/Homes/Finder/Finder.mpc:
+ * tests/IDL3/Homes/Factory/Factory.mpc:
+ * tests/IDL3/Homes/Basic/Basic.mpc:
+ * tests/IDL3/Homes/Attributes/HomeAttributes.mpc:
+ * tests/IDL3/Events/Regular/Regular.mpc:
+ * tests/IDL3/Events/Abstract/Abstract.mpc:
+ * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc:
+ * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc:
+ * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc:
+ * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc:
+ * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc:
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ * tests/Bug_2130_Regression/interfaces/ENW.mpc:
+ * performance-tests/Protocols/common/Protocols.mpc:
+ * examples/Swapping/Hello_Base/Hello_Base.mpc:
+ * examples/Hello/Hello_Base/Hello_Base.mpc:
+ * examples/Display/HUDisplay.mpc:
+ * examples/BasicSP/BasicSP.mpc:
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc:
+ Updated base projects to get correct build order
+
+Tue Apr 11 06:35:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc:
+ Use base projects to set dependencies
+
+Mon Apr 10 18:48:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ Fixed base project
+
+Mon Apr 10 14:29:13 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * TAO/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp
+
+ Modified to make _narrow to be called at the first step
+ when connecting supplier and config. Also modified to
+ make debug statements debug_level controlled.
+
+Mon Apr 10 12:31:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ Removed commented out line
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/NodeManager/NodeManager.mpc:
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc:
+ Updated base projects
+
+Mon Apr 10 11:51:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc:
+ Readded ciao_container_dnc
+
+ * ciao/CCM_Core.mpc:
+ Use more base projects
+
+ * DAnCE/Interfaces/Interfaces.mpc:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ Use other base projects to get correct build order
+
+Mon Apr 10 10:00:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc:
+ Removed ciao_container_dnc
+
+Mon Apr 10 09:38:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_Events.mpc:
+ Use ciao_rtevent_dnc as base
+
+Mon Apr 10 09:18:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc:
+ * ciaosvcs/Events/CIAO_Events.mpc:
+ Use ciao_events_base_dnc as base project
+
+Mon Apr 10 09:15:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ For Deployment_Stub use ciao_events_base_dnc and ciao_client_dnc
+ as base projects
+
+Mon Apr 10 08:50:14 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_Events.mpc:
+ Removed ciao_events_dnc as base project, we are building
+ this lib right now
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc:
+ Use base projects instead of libs
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc:
+ Remvoed ciao_events_dnc
+
+Sat Apr 8 15:39:14 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc
+
+ Fixed a linking error in SuSE_CP_Static build.
+
+Fri Apr 7 04:09:33 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+
+ Fixed a bug in detecting External connection and Internal
+ connections. Earlier when an external component is detected,
+ not *all* connections associated with this components are
+ purged from the to-be-removed connections list. Added another
+ helper method <purge_connections> to accomplish this task.
+
+ Modified to enforce passivation occured on all components
+ before any connections are removed.
+
+Fri Apr 7 03:55:46 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Fixed a bug when redeploying components using the same set
+ of NodeManagers. Earlier when destroying applications or
+ components, internal components and external/shared components
+ are not all unbinded from the map, which causes duplicate
+ instance exception thrown.
+
+Thu Apr 6 16:01:30 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/TokenStream.hpp:
+
+ Added empty virtual destructor to template base class, to
+ eliminate bogus GCC warnings.
+
+Thu Apr 6 15:22:31 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Events.mpc
+
+ Fixed linking errors on WinXP_BCB6_Pro_Dynamic_Release build.
+
+ * examples/Hello/descriptors_shared_components/deploymentplan.cdp
+ * examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp
+
+ Modified to illustrate the shared components scenario.
+
+Thu Apr 6 14:54:59 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.h
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h
+
+ Some cosmestic changes.
+
+Thu Apr 6 08:20:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Component.idl:
+ Removed the forward declaration of IRObject and just include
+ ciao/CCM_Component.idl. The forward declaration is causing
+ problems with the versioned namespace support, will investigate
+ this later
+
+Wed Apr 5 20:57:32 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * TAO/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp
+
+ Make debug statement debug_level controlled.
+
+Wed Apr 5 18:49:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp:
+ Fixed compile errors
+
+Wed Apr 5 13:18:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h:
+ Fixed pragma once warning
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp:
+ Fixed conversion warning
+
+Wed Apr 5 12:24:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp:
+ Fixed compile errors
+
+Tue Apr 4 18:11:37 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.h
+
+ Fixed an warning in WinXP_BCB6_Pro_Dynamic_Debug build
+ by modifying the name of the original "init" method.
+
+Tue Apr 4 17:27:52 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAO_Events/test.cpp
+
+ Fixed an warning.
+
+Mon Apr 3 20:00:11 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/Literals.hpp:
+ * CIDLC/Literals.cpp:
+
+ Changed an enum value 'SIZE' to 'LIT_SIZE' to avoid an
+ apparent conflict with something in WinDef.h on
+ Windows.
+
+Thu Mar 30 18:28:32 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Deployment_Events.idl
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp
+
+ Fixed fuzz errors.
+
+Thu Mar 30 17:16:17 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Direct/*
+
+ Removed all files under this directory since they are
+ no longer used.
+
+Thu Mar 30 17:23:12 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Added link dependency to CIAO_Events_Handler project.
+
+Thu Mar 30 16:38:25 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * CIAO_DAnCE.mwc
+ * CIAO_TAO.mwc
+ * CIAO_TAO_DAnCE.mwc
+
+ Added "ciaosvcs" into the workspace.
+
+ * ciao/CCM_Core.mpc
+ * ciao/CCM_Event.idl
+ * ciao/Container_Base.cpp
+ * ciao/Container_Base.h
+ * ciao/Deployment_Core.idl
+ * ciao/Deployment_Data.idl
+ * ciao/Deployment_Events.idl
+
+ Added an "CIAO_DnC_Events" project. Enhanced Deployment_Core.idl
+ to support configuring and deploying pub/sub services.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeApplication/NodeApplication_Impl.inl
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Enhanced DAnCE to support pub/sub services integration.
+
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.h
+ * ciaosvcs/Events/CIAO_Events.idl
+ * ciaosvcs/Events/CIAO_Events.mpc
+ * ciaosvcs/Events/CIAO_Events_Export.h
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.cpp
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.idl
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Export.h
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc
+
+ Added CIAO_Event_Service support, which are some reusable
+ libraries and CORBA services that could be configured and
+ installed on demand through the DAnCE toolchain.
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/CIAOEvents.xsd
+ * docs/schema/cdp.xsd
+
+ Enhanced XML schema to capture metadata information for
+ configuring and deploying pub/sub services.
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/ESD_Handler.cpp
+ * tools/Config_Handlers/ESD_Handler.h
+ * tools/Config_Handlers/PSPE_Handler.cpp
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h
+ * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc
+ * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h
+ * tools/Config_Handlers/CIAO_Events/test.cpp
+
+ Added config handler support to accomodate the above changes.
+
+ * examples/Hello/descriptors_events/ciao-events-example-with-filters.ced
+ * examples/Hello/descriptors_events/ciao-events-example.ced
+ * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp
+ * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp
+
+ Added several examples to showcase the capability of CIAO
+ pub/sub services.
+
+Thu Mar 30 14:43:46 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/AttributeSourceEmitters_T.hpp:
+
+ Added 'using namespace StringLiterals;' to this file. Thanks
+ to Nanbor Wang <nanbor@txcorp.com> for pointing out that
+ this line is also necessary on some platforms, in addition
+ to the change of
+
+ Wed Mar 29 20:29:40 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Wed Mar 29 20:29:40 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/AttributeSourceEmitters_T.hpp:
+
+ Added #include of Literals.hpp. Some platforms are picking up
+ the declarations in this file without the explicit include,
+ others are not.
+
+Wed Mar 29 19:52:54 UTC 2006 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * examples/Hello/descriptors_RTCCM/rt-config-example.csr:
+ Updated <cmdline> and <svcconf> element with more realistic
+ values.
+
+Wed Mar 29 04:40:58 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Added the functionality to honor command line arguments
+ and service configuration file options defined through
+ RT-CCM descriptors.
+
+Mon Mar 27 19:56:51 UTC 2006 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/NodeApplication.cpp (main): Added code to
+ print out commandline options of the NodeApplicaion. The print
+ out is available for CIAO_DEBUG_LEVEL > 9.
+
+ * DAnCE/NodeApplication/Configuration_Factory.h:
+ * DAnCE/NodeApplication/Configuration_Factory.cpp: Changed
+ parse_args function to pass "argc" as reference to be consistent
+ with Arg_Shifter's signature.
+
+ Double-check the "-o" flag first with exact string comparison
+ before extracting the parameter to avoid mistaking any of the
+ "-ORBxxx" command line flags as the "-o" flag. Thanks to Sandro
+ Andrade <sandro @dcc.ufba.br> for reporting the bug.
+
+Mon Mar 20 22:35:47 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_Utils_T.cpp:
+
+ - Added 'typename' qualifier when declaring instances
+ of an iterator for a templatized hash map, since gcc
+ reminds us that leaving the compiler to implicitly
+ determine if the scoped name denotes a member or a
+ type is deprecated.
+
+ - Added an #include of Cookies.h, which is need by compilers
+ that don't require the template sourced to be included in
+ the header file.
+
+Sun Mar 19 20:37:47 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Removed these files, their former contents are now divided
+ between CorbaTypenameEmitters.{hpp,cpp} and
+ UtilityTypeNameEmitters.{hpp,cpp}.
+
+Fri Mar 17 14:23:53 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Core.mpc:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h
+
+ - Changed port table types from
+ ACE_Hash_Map_Manager_Ex<> to ACE_Array_Map<>,
+ which is more lightweight and makes no
+ allocations if no entries are added to
+ the table.
+
+ - Implemented spec-defined methods
+ get_all_receptacles(), get_all_publishers(),
+ and disconnect_consumer().
+
+ * ciao/Servant_Impl_Utils_T.cpp:
+
+ New file, containing implementations of new
+ static template methods added to class
+ Servant_Impl_Base, which are called in
+ generated code as part of the implementation
+ of the spec-defined methods mentioned above.
+
+ * CIDLC/AttributeHeaderEmitters.cpp:
+ * CIDLC/AttributeHeaderEmitters.hpp:
+ * CIDLC/AttributeSourceEmitters_T.hpp:
+ * CIDLC/CompositionEmitter.cpp:
+ * CIDLC/CompositionEmitter.hpp:
+ * CIDLC/CorbaTypeNameEmitters.cpp:
+ * CIDLC/CorbaTypeNameEmitters.hpp:
+ * CIDLC/EmitterBase.cpp:
+ * CIDLC/EmitterBase.hpp:
+ * CIDLC/EmitterContext.cpp:
+ * CIDLC/EmitterContext.hpp:
+ * CIDLC/InterfaceEmitter.cpp:
+ * CIDLC/InterfaceEmitter.hpp:
+ * CIDLC/ModuleEmitter.cpp:
+ * CIDLC/ModuleEmitter.hpp:
+ * CIDLC/OperationHeaderEmitters.cpp:
+ * CIDLC/OperationHeaderEmitters.hpp:
+ * CIDLC/ParameterEmitter_T.hpp:
+ * CIDLC/Upcase.hpp:
+ * CIDLC/UtilityTypeNameEmitters.cpp:
+ * CIDLC/UtilityTypeNameEmitters.hpp:
+
+ New files, containing common code factored
+ out of the C++ source files below.
+
+ * CIDLC/CIDLC.mpc:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ - Added new generated code as part of the
+ implementation of the spec-defined methods
+ mentioned above.
+
+ - Added support for attribute exceptions in
+ code optionally generated for the stencil
+ executor implementation classes.
+
+Thu Mar 16 16:31:51 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Component.idl:
+
+ Added "omg.org" prefix to the recently added opening of the
+ CORBA module in this file.
+
+Tue Mar 14 10:10:58 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.h:
+ Reverting back to previous version to avoid conflicts
+
+Tue Mar 14 09:46:25 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.cpp:
+ Reverting back to previous version. Mistakenly added conflicted version.
+
+Thu Mar 9 09:18:58 2006 Douglas C. Schmidt <schmidt@cse.wustl.edu>
+
+ * COPYING: Updated the date to include 2006.
+ Thanks to Alan Kierstead <ackierstead at fedex dot com> for
+ motivating the fix to this oversight.
+
+Thu Mar 09 08:55:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Interfaces/ExecutionManagerDaemon.idl:
+ * DAnCE/Interfaces/NodeManagerDaemon.idl:
+ New idl files, these are the same as there are now in the directory
+ but then just renamed to match the interfaces in these files and
+ then don't conflict with the ones I created in ciao.
+
+ * DAnCE/Interfaces/ExecutionManager.idl:
+ * DAnCE/Interfaces/NodeManager.idl:
+ Removed, file names where not correct and now conflict with files in
+ the ciao directory
+
+ * DAnCE/Interfaces/Interfaces.mpc:
+ Updated because of file renames
+
+ * ciao/CCM_Base.idl:
+ Removed old comment
+
+ * ciao/CCM_Component.idl:
+ Forward declare CORBA::IRObject instead of including the IFR_Client
+ idl file
+
+ * ciao/Deployment_Base.idl:
+ Removed not needed include
+
+ * ciao/Dynamic_Component_Activator.h:
+ Reordered includes
+
+ * ciao/Swapping_Servant_Home_Impl_Base.h:
+ * ciao/Upgradeable_Context_Impl_T.h:
+ * ciao/Swapping_Servant_Home_Impl_T.h:
+ * ciao/Swapping_Servant_Home_Impl_T.cpp:
+ Added ciao/ as prefix for the includes
+
+ * ciao/Upgradeable_Context_Impl_T.h:
+ Added private default constructor
+
+ * ciao/Deployment.idl:
+ * ciao/DomainApplicationManager.idl:
+ * ciao/ExecutionManager.idl:
+ * ciao/NodeApplication_Callback.idl:
+ * ciao/NodeApplicationManager.idl:
+ * ciao/NodeManager.idl:
+ * ciao/RepositoryManager.idl:
+ * ciao/CCM_Core.mpc:
+ Splitted Deployment.idl in multiple files so that the linker
+ can decide not to link in a set of object files we don't need.
+ This will reduce footprint for several applications
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ * DAnCE/NodeManager/Node_Manager.cpp:
+ * DAnCE/NodeManager/NodeManager.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.{h.cpp}:
+ * DAnCE/TargetManager/Deployment_Configuration.h:
+ Updated for the idl subsetting of ciao/Deployment.idl. Also add ciao/
+ prefix to several includes and try to cleanup a little.
+
+ * DAnCE/RepositoryManager/RepositoryManager.idl:
+ * DAnCE/RepositoryManager/RepositoryManagerDaemon.idl:
+ Renamed the first file to the second, matches the interface name.
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/PC_Updater.{h,cpp}:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ Updated because of rename above
+
+ * DAnCE/RTNodeApplication/senv.sh:
+ Removed this file, no need here.
+
+ * DAnCE/RTNodeApplication/NodeApplication_Task.h:
+ No need for virtual inheritance, that consumes more footprint then
+ needed.
+
+ * DAnCE/RTNodeApplication/NodeApplication_Task.cpp:
+ Reordered includes
+
+Wed Mar 08 15:58:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/ServerResources.idl:
+ Fixed incorrect file header
+
+Wed Mar 08 14:01:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * rules.ciao.GNU:
+ Added $(CIAO_ROOT)/ciao to LDFLAGS and $(CIAO) to INCLDIRS
+ as we do in rules.tao.GNU, this improves the footprint stats
+
+Mon Mar 06 16:16:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Swapping_Container.{h,cpp}:
+ Made serial_number_ unsigned and documented why it is static
+
+ * performance-tests/Benchmark/LatencyTest.h:
+ Removed not needed msvc pragma push/pop
+
+Sun Mar 05 11:16:46 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * CIAO version 0.5 released.
+
+Thu Mar 2 17:50:36 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticGraph/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.cpp:
+
+ Fixed a bug in the logic that determines completeness of recursive
+ structs and unions.
+
+Thu Mar 2 08:49:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/Container_Impl.cpp:
+ Replaced NULL with 0
+
+Thu Mar 2 01:33:09 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * NEWS:
+
+ Updated this file with info from Ming Xiong and Gan Deng.
+
+Wed Mar 1 22:34:52 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * NEWS:
+
+ Updated the file with info from Ming Xiong.
+
+Wed Mar 1 19:34:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO-INSTALL.html:
+ Updated rename of CIAOTAO.mwc to CIAO_TAO.mwc
+
+Wed Mar 1 15:02:10 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Container_Impl.h
+ * DAnCE/NodeApplication/Container_Impl.cpp
+
+ Added codes to unregister with naming service when removing
+ components
+
+Tue Feb 28 18:46:42 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Deployment.xsd
+ * DAnCE/Deployment.xsd.orig
+ * DAnCE/XMI.xsd
+ * DAnCE/XMI.xsd.orig
+
+ Removed these schema files. They were misleading and useless.
+
+Fri Feb 24 21:21:02 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Added a verbatim to disable hidden_visibility for Config_Handlers
+
+Fri Feb 24 18:54:52 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ some cosmetic changes
+
+ * DAnCE/RepositoryManager/URL_Parser.h:
+ made the constructor protected and made the ACE_Singleton a friend
+
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ fixed a bug and improved the robustness of the code
+
+Fri Feb 24 09:38:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO-INSTALL.html:
+ Fixed typo
+
+Thu Feb 23 23:35:59 UTC 2006 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/Swapping/Receiver/Receiver.mpc:
+ * examples/Swapping/Sender/Sender.mpc:
+
+ I was over zealous in my previous change. I shortened too many
+ project names (those that are defined in projects outside of these
+ mpc files).
+
+Wed Feb 22 16:38:32 UTC 2006 Chad Elliott <elliott_c@ociweb.com>
+
+ * CIAO-INSTALL.html:
+
+ Updated the documentation on how to build cidlc on Windows.
+
+ * examples/Swapping/Receiver/Receiver.mpc:
+ * examples/Swapping/Sender/Sender.mpc:
+
+ Shortened the project names in these MPC files to avoid fuzz
+ warnings.
+
+Wed Feb 22 01:11:59 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+
+ Fixed a bug about naming service registration.
+ Thanks Sandro Andrade <sandro @dcc.ufba.br> for reporting
+ a bug about removing component error.
+
+Tue Feb 21 23:59:05 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Deployment.idl
+
+ Added a parameter to the perform_redeployment() operation
+ to the NodeApplicationManager interface to separate the
+ "installation of new components" from the "removal of
+ existing components".
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Modified the logic of perform_redeployment() functionality
+ to enforce correct order of ReDaC, which is:
+ (1) Install new components,
+ (2) Set up new connections,
+ (3) Remove old connections, and
+ (4) Remove old components.
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+
+ Fixed a bug about removing components when using ReDaC.
+ In NodeApplicationManager, after the perform_redeployment()
+ call calls the remove_components() method to actually
+ destroy components from the component server, DAnCE NAM doesn't
+ unbind those components from the cached component_map_, hence
+ when the create_connections() method is called afterwords,
+ NAM tries to access the destroyed components to get
+ their port information, which causes the Object_Not_Exist
+ exception thrown.
+
+ The fix will unbind the removed components from the
+ cached component map. However, the trick is that after
+ we unbind these components, the port iinformation of
+ these components are also lost, then the
+ DomainApplicaitonManager could not handle the
+ "removal" of connections correctly.
+
+ The Right Fix is to enforce correct call sequence, which
+ are illustrated above.
+ Thanks Sandro Andrade <sandro @dcc.ufba.br> for reporting
+ a bug about removing component error.
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+
+ Added a component state map to keep track of component state
+ information. With this map, components will be activated
+ only when they are newly created, and will be passivated
+ only when they are currently active. This will also fix
+ a bug about the component initialization sequence. Earlier,
+ when components are installed, they are immediately activated
+ by explicitly calling ciao_preactivate, ciao_activate, and
+ ciao_postactivate on the comopnent object reference,
+ which is not compliant to the Spec defined semantics.
+ This fix shall ensure that the components are activated AFTER
+ their connections have been setup.
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+
+ Fixed a bug when passing object reference to a local function.
+ Earlier the memory of the object reference is released by
+ the callee, which causes the object reference becomes invalid
+ after the function returns.
+
+Tue Feb 21 19:43:11 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
+ * performance-tests/Protocols/Controller/Controller.mpc
+
+ Added avoids+= ace_for_tao to two additional projects.
+
+ * examples/Display/descriptors/EM.ior
+ * examples/Display/descriptors/GPS.ior
+ * examples/Display/descriptors/NavDisplay.ior
+ * examples/Display/descriptors/NavDisplayGUI.ior
+
+ Removed these ior files.
+
+Tue Feb 21 17:40:20 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.cpp:
+
+ Fixed ACE_TRACE compilation error.
+
+Mon Feb 20 15:08:49 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * CIAO version 0.4.10 released.
+
+Mon Feb 20 19:48:12 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_Impl.ccd
+
+ Removed this file because it is generated
+
+Fri Feb 17 19:22:21 UTC 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * NEWS:
+
+ Updated this file with more inputs.
+
+Thu Feb 16 15:04:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO_DAnCE.mwc:
+ Fixed typo in this file
+
+Thu Feb 16 04:14:15 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
+ * performance-tests/Protocols/Receiver/Receiver.mpc
+ * performance-tests/Protocols/Sender/Sender.mpc
+
+ Disabled building some project when ace_for_tao is set.
+
+Wed Feb 15 19:24:31 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO.mwc
+
+ This file now builds all of CIAO.
+
+ * CIAODAnCE.mwc
+ * CIAO_DAnCE.mwc
+
+ Renamed this file to CIAO_DAnCE.mwc
+
+ * CIAOTAO.mwc
+ * CIAO_TAO.mwc
+
+ Renamed this file to CIAO_TAO.mwc.
+
+ Thanks to Chad Elliott (elliott_c at ociweb dot com) for suggesting
+ these changes.
+
+ * CIAO_TAO_DAnCE.mwc
+
+ Removed the DAnCE/tests/Config_Handlers exclusion, as it no
+ longer exists.
+
+Wed Feb 15 07:35:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp:
+ Replaced ACE cast macros with their C++ versions
+
+Wed Feb 15 07:28:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+ Fixed generation so that it compiles with Borland
+
+Tue Feb 14 23:01:46 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+
+ Fixed a bug when removing ReDaC components from the container.
+ This bug was caused by the container set indexing error when
+ handling newly installed components.
+ Thanks Sandro Andrade <sandro @dcc.ufba.br> for reporting
+ this issue.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Some cosmetic changes.
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h
+
+ Added a const modifier in the constructor to ensure safety.
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Fixed a bug when detecting whether a component is shared
+ by multiple assemblies. Earlier, when ReDaC is used, existing
+ components are wrongly treated as shared components.
+
+Tue Feb 14 22:02:59 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO_TAO_DAnCE.mwc
+
+ Added naming service and Config_Handlers.
+
+ * DAnCE/NodeManager/NodeManager.mpc
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc
+
+ Fixed link time warnings on OS X.
+
+Tue Feb 14 19:57:32 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+
+ Fixed a bug about when a component has a name with "Exec"
+ string in it, the _stub library could be picked up
+ incorrectly.
+
+Mon Feb 13 20:53:58 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+
+ Fixed a bug about removing existing components. Earlier
+ the logic in detecting "to-be-removed" components has
+ a bug.
+
+Mon Feb 13 20:11:35 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp
+
+ Changed ACE_const_cast to c++ native const_cast since the
+ former one is deprecated. Also changed the implementation of
+ the acquireSession() logic, so the deadlock bug could
+ be reproduced.
+
+Mon Feb 13 20:01:38 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+
+ Cosmetics change.
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+
+ Enhanced to call ccm_activate, ciao_preactivate, and
+ ciao_postactivate when installing new components.
+ Thanks Sandro Andrade <sandro @dcc.ufba.br> for reporting
+ this issue.
+
+ Also added the logic for remove_existing_components into
+ the class, which has not been integrated yet.
+
+ Refactor the code by putting these logics into separate
+ methods to enhance readability.
+
+Mon Feb 13 17:12:09 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp
+
+ Fixed a bug about registering EM with naming service, originally
+ an invalid naming context is specified. Also allowed EM to both
+ register to naming service AND dump and IOR file. Thanks Sandro
+ Andrade <sandro at dcc dot ufba dot br> for reporting this bug.
+
+Mon Feb 13 15:41:21 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp
+
+ Fixed a warning about "deprecated conversion from string
+ constant to `char*' on RHEL_Static_GCC-3.4.2 build.
+
+Mon Feb 13 11:34:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h:
+ Removed not allowed semicolon
+
+Mon Feb 13 09:22:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h:
+ Fixed compile error in single threaded builds
+
+Mon Feb 13 08:32:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Server_init.cpp:
+ * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp:
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp:
+ Fixed conversion warnings
+
+Sat Feb 11 21:39:54 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.h
+
+ Fixed fuzz build erros.
+
+Sat Feb 11 21:26:08 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression/descriptors/run_test.pl
+
+ Fixed the command line option to start the NodeApplication
+ to enable real-time support.
+ Thanks Roland Schimmack <Roland.Schimmack @ gmx.de> for
+ reporting this error.
+
+Sat Feb 11 21:00:00 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * ciao/Server_init.cpp
+
+ Removed an extra explicit qualification
+
+Sat Feb 11 18:49:21 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciaosvcs/Events/CIAO_Events.mpc
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc
+ Removed these files to get at least our builds running again
+
+Fri Feb 10 16:11:35 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Events.mpc
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc
+
+ Temporarily disable the build of these projects before
+ the integration effort is complete to avoid pollute
+ the scoreboard.
+
+Fri Feb 10 14:28:14 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * docs/tutorials/CoSMIC/01.html
+ * docs/tutorials/CoSMIC/02.html
+ * docs/tutorials/CoSMIC/index.html
+ * docs/tutorials/CoSMIC/Images/fig10.jpg
+ * docs/tutorials/CoSMIC/Images/fig11.jpg
+ * docs/tutorials/CoSMIC/Images/fig2.jpg
+ * docs/tutorials/CoSMIC/Images/fig4.jpg
+ * docs/tutorials/CoSMIC/Images/fig5.jpg
+ * docs/tutorials/CoSMIC/Images/fig6.jpg
+ * docs/tutorials/CoSMIC/Images/fig7.jpg
+ * docs/tutorials/CoSMIC/Images/fig8.jpg
+ * docs/tutorials/CoSMIC/Images/fig9.jpg
+ * docs/tutorials/CoSMIC/Model/Quoter.xme
+
+ Updated the CoSMIC tutorial so that it is consistent with
+ the latest GME and CoSMIC.
+
+Fri Feb 10 11:15:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Port_Activator.h:
+ Doxygen improvements
+
+ * ciao/NodeApp_CB_Impl.h:
+ Made destructor protected
+
+ * ciao/Container_Base.{h,cpp}:
+ Made the refcount unsigned long, addressed several comments and
+ improved documentation
+
+Fri Feb 10 04:56:26 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+ * DAnCE/NodeApplication/Container_Impl.h
+ * ciao/Server_init.cpp
+ * ciao/Server_init.h
+
+ Added support for creating multicomponent naming context through
+ the deployment plan. Thanks Dipa Suri <dipa.suri @ lmco.com> for
+ contributing a NameUtility class implementation.
+
+ * ciaosvcs/Events/CIAO_Events.idl
+ * ciaosvcs/Events/CIAO_Events.mpc
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.cpp
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.h
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.idl
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent.mpc
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.cpp
+ * ciaosvcs/Events/CIAO_Direct/CIAO_DirectEvent_Factory.h
+
+ Added some files for event channel integration for CIAO.
+ More file check-ins are on the way.
+
+Thu Feb 9 23:38:19 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * TAO/CIAO/CIAOTAO.mwc
+
+ Updated mwc to include some dependencies required by tests
+ and examples.
+
+ * tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_Impl.ccd
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h
+ * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp
+ * tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp
+ * tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat
+ * tests/Bug_2130_Regression/descriptors/rt-config-example.csr
+ * tests/Bug_2130_Regression/descriptors/run_test.pl
+ * tests/Bug_2130_Regression/interfaces/ENW.idl
+ * tests/Bug_2130_Regression/interfaces/ENW.mpc
+ * tests/Bug_2130_Regression/interfaces/ENW_stub_export.h
+ * tests/Bug_2130_Regression/interfaces/ENW_svnt_export.h
+
+ Added a new tests for Bug_2130.
+ Thanks Roland Schimmack <Roland.Schimmack @ gmx.de> for
+ providing this test case.
+
+Thu Feb 9 16:48:42 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/be_global.h:
+ * tools/IDL3_to_IDL2/be_init.cpp:
+ * tools/IDL3_to_IDL2/be_sunsoft.cpp:
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h:
+
+ Removed all usage of internal 'idl_bool' typedef in the
+ IDL3 to IDL2 converter, consistently with the changes to
+ the TAO IDL compiler front end, which is used by this
+ tool.
+
+Thu Feb 9 16:33:45 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/Any_Handler.cpp
+ * tools/Config_Handlers/CCD_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.cpp
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/CRDD_Handler.cpp
+ * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp
+ * tools/Config_Handlers/DD_Handler.cpp
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/DP_PCD_Handler.cpp
+ * tools/Config_Handlers/DataType_Handler.cpp
+ * tools/Config_Handlers/ERE_Handler.cpp
+ * tools/Config_Handlers/IDD_Handler.cpp
+ * tools/Config_Handlers/IDREF_Base.cpp
+ * tools/Config_Handlers/ID_Handler.cpp
+ * tools/Config_Handlers/IRDD_Handler.cpp
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/PSPE_Handler.cpp
+ * tools/Config_Handlers/Property_Handler.cpp
+ * tools/Config_Handlers/RDD_Handler.cpp
+ * tools/Config_Handlers/Req_Handler.cpp
+ * tools/Config_Handlers/STD_PC_Intf.cpp
+ * tools/Config_Handlers/XML_File_Intf.cpp
+
+ Added CIAO_TRACE statements to aid in debugging.
+
+Wed Feb 08 15:53:31 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * CIAO version 0.4.9 released.
+
+Tue Feb 7 16:10:10 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Fixed an ordering problem.
+
+Mon Feb 6 19:13:13 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+
+ Fixed an export problem manifesting in VC8.
+
+ * performance-tests/Benchmark/Benchmark.mpc
+
+ Added an empty IDL_Files section to the servant to prevent
+ nmake from regenerating from the IDL file.
+
+Mon Feb 6 13:54:39 UTC 2006 Ossama Othman <ossama_othman at symantec dot com>
+
+ * ciao/ComponentsC.h:
+
+ Place TAO namespace in this pre-generated stub header within a
+ TAO versioned namespace, as TAO_IDL does for all stubs. Fixes
+ build errors in versioned-namespace enabled builds.
+
+Mon Feb 6 13:33:54 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NoOp_Configurator.h
+
+ Case sensitivity error from previous commit.
+
+Mon Feb 6 00:39:41 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp
+ * DAnCE/NodeApplication/Configurator_Factory.h
+ * DAnCE/NodeApplication/NodeApplication.mpc
+ * DAnCE/NodeApplication/NodeApplication_Core.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/NodeApplication/NoOp_Configurator.cpp
+ * DAnCE/NodeApplication/NoOp_Configurator.h
+ * DAnCE/NodeApplication/NoOp_Configurator_export.h
+
+ Fixed linking errors on Borland 6. Mostly involved improper
+ symbol export control.
+
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.hpp
+
+ Added a fix for a broken <string> include in Borland 6.
+
+Fri Feb 3 24:30:19 UTC 2006 Ossama Othman <ossama_othman at symantec dot com>
+
+ * ciao/CIAO_common.h:
+
+ Removed extraneous "#" in "# #error" preprocessor directive.
+
+ * ciao/Client_init.h:
+
+ Moved CIAO namespace out of TAO-versioned namespace block. It
+ shouldn't have been there. Fixes namespace clashes in versioned
+ namespace enabled builds.
+
+Thu Feb 2 23:55:01 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Updated the release notes.
+
+Thu Feb 2 22:59:23 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp
+
+ Updated include from zziplib.h to zzip/zzip.h, as the former
+ is deprecated and absent in the most recent release.
+
+Thu Feb 2 15:49:31 2006 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * docs/tutorials/CoSMIC/01.html: Commited a fix for a typo detected by
+ Abdullah Sowayan <abdullah dot sowayan at lmco dot com> and
+ fixed by Ming Xiong.
+
+Thu Feb 2 16:58:15 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO_TAO_DAnCE.mwc:
+ * CIAODAnCE.mwc:
+ Removed Old_Config_Handlers and spec_RepositoryManager
+
+Thu Feb 2 16:31:15 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h
+ * DAnCE/NodeManager/CIAO_Monitor.h
+ * DAnCE/NodeManager/MonitorCB.h
+ * DAnCE/NodeManager/MonitorController.cpp
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/TargetManager/DomainDataManager.h
+
+ Removed extra ';' after closing braces on namespaces.
+ Was causing errors on GCC4 builds.
+
+ * DAnCE/NodeManager/MonitorController.inl
+
+ Removed this file, as it is no longer used.
+
+Wed Feb 1 21:21:35 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h
+ * DAnCE/NodeManager/CIAO_Monitor.cpp
+ * DAnCE/NodeManager/CIAO_Monitor.h
+ * DAnCE/NodeManager/MonitorCB.cpp
+ * DAnCE/NodeManager/MonitorCB.h
+ * DAnCE/NodeManager/MonitorController.cpp
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/TargetManager/DomainDataManager.cpp
+ * DAnCE/TargetManager/DomainDataManager.h
+ * DAnCE/TargetManager/TargetManager_exec.cpp
+ * DAnCE/TargetManager/TargetManager_exec.h
+
+ Wraps the TargetManager/Monitors inside the CIAO namespace.
+ Thanks to Nilabja Roy (nilabjar@dre.vanderbilt.edu) for
+ making these changes and thanks to Johnny for noticing this!
+
+Wed Feb 1 20:42:42 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp
+ * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp
+ * tools/Config_Handlers/Utils/XercesString.cpp
+ * tools/Config_Handlers/Utils/XercesString.h
+ * tools/Config_Handlers/XMLSchema/Writer.hpp
+
+ Fixes for warnings on ICC platforms.
+
+Wed Feb 1 14:38:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ Small doxygein improvement
+
+Wed Feb 1 04:32:38 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Planner_Manager/Component/Planner_Manager.idl
+
+ Resolve a linking error on Windows.
+
+Tue Jan 31 23:33:23 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers
+ * DAnCE/test/Config_Handlers_Tests
+
+ Removed deprecated config handlers.
+
+ * NEWS
+
+ Commented on this removal.
+
+Tue Jan 31 21:51:52 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl
+ * examples/Hello/descriptors/run_test_without_ns.pl
+
+ Added a parameter to the NodeManagers to cause them to wait
+ up to 30 seconds for the NodeApplications to spawn before failing.
+ This should fix the hello test on several platforms.
+
+Tue Jan 31 21:29:06 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl
+
+ Updated to force naming service to not use multicast, instead
+ using NameServiceIOR environment variable.
+
+ * examples/Hello/descriptors/run_test_without_ns.pl
+
+ Updated ports to reflect new NodeManagerMap.
+
+Tue Jan 31 15:11:29 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Controller/Component/Controller.mpc
+
+ Fixed linking errors on OS X.
+
+Tue Jan 31 14:41:31 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Fixed a couple of warning on SuSE_10_0_GCC4.0.2_x86_64_Valgrind
+ build.
+
+Tue Jan 31 11:42:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Fixed compile error with VxWorks 5.5.1
+
+Mon Jan 30 22:43:26 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_NodeDaemons.pl:
+
+ Fixing this script so that the Hello example deploys successfully.
+
+Mon Jan 30 21:16:40 UTC 2006 Ming Xiong <ming.xiong@vanderbilt.edu>
+
+ * docs/tutorials/CoSMIC/01.html
+ * docs/tutorials/CoSMIC/02.html
+ * docs/tutorials/CoSMIC/03.html
+ * docs/tutorials/CoSMIC/04.html
+ * docs/tutorials/CoSMIC/index.html
+ * docs/tutorials/CoSMIC/Icons/AddConnMode.gif
+ * docs/tutorials/CoSMIC/Icons/SetMode.gif
+ * docs/tutorials/CoSMIC/Images/fig1.jpg
+ * docs/tutorials/CoSMIC/Images/fig10.jpg
+ * docs/tutorials/CoSMIC/Images/fig11.jpg
+ * docs/tutorials/CoSMIC/Images/fig2.jpg
+ * docs/tutorials/CoSMIC/Images/fig3.jpg
+ * docs/tutorials/CoSMIC/Images/fig4.jpg
+ * docs/tutorials/CoSMIC/Images/fig5.jpg
+ * docs/tutorials/CoSMIC/Images/fig6.jpg
+ * docs/tutorials/CoSMIC/Images/fig7.jpg
+ * docs/tutorials/CoSMIC/Images/fig8.jpg
+ * docs/tutorials/CoSMIC/Images/fig9.jpg
+ * docs/tutorials/CoSMIC/Model/Quoter.xme
+
+ Added CoSMIC tutorial for /docs/tutorials/Quoter/Simple
+
+Mon Jan 30 17:50:38 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+
+ Modified to inherit from dance_extension_stub project
+ so the included header file could be found.
+
+Mon Jan 30 17:35:12 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/Interfaces/Interfaces.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/NodeManager/NodeManager_Impl.h
+
+ Fixed a linking error of NodeManager when trying to
+ link to IDL generated servant code.
+
+ * DAnCE/NodeManager/CIAO_NodeManager_Export.h
+ * DAnCE/Interfaces/NodeManager_svnt_export.h
+
+ Removed the first one and added the second one to
+ fix the linking error when trying to find entry
+ point for IDL compiler generated servant code.
+
+Mon Jan 30 05:07:09 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/NodeManagerMap.dat
+
+ Corrected the ports to match those in the run_test.pl script.
+
+Mon Jan 30 01:59:23 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+
+ Cosmetic change.
+
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Fixed a typo.
+
+Mon Jan 30 01:47:21 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Export.h
+
+ Added dll import/export mechanism into NodeManager library.
+
+Sat Jan 28 22:24:35 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl
+
+ Corrected the name of the NodeManagerMap passed to ExecutionManager.
+ This was causing the test to fail across all platforms.
+
+Sat Jan 28 05:55:45 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Added a missing after clause.
+
+Fri Jan 27 22:42:47 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Controller/Component/Controller.mpc
+
+ Fixed linking errors on Windows.
+
+Fri Jan 27 20:58:19 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression
+
+ A place to host Bug 2130 test case.
+
+Fri Jan 27 20:42:47 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/DnC_Dump_T.h
+
+ Silenced warnings in solaris.
+
+Fri Jan 27 20:30:01 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Fixed uninitialized variable warnings on Solaris GCC.
+
+ *DAnCE/NodeManager/NodeManager.mpc
+
+ Refactored the projects here so all files related to NodeManager
+ are only compiled once.
+
+Fri Jan 27 19:15:19 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/Monitor.mpc: Added the dependancy on
+ TargetManaer_stub
+
+Fri Jan 27 19:07:08 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/NodeManager/MonitorController.inl
+
+ Refined the fix in
+ Fri Jan 27 17:29:54 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+ to use ACE_SYNCH_MUTEX. Thanks to Doug Schmidt for suggesting the
+ improvement.
+
+Fri Jan 27 17:35:55 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Controller/Component/Controller.mpc
+
+ Fixed linking errors on Mac OS X.
+
+Fri Jan 27 17:29:54 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/NodeManager/MonitorController.inl
+
+ Added preprocessor logic to fall back to an ACE_Mutex on
+ platforms that don't support ACE_Thread_Mutex.
+
+Fri Jan 27 16:59:11 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Fixed a couple of warnings on SuSE_10_0_GCC4.0.2_x86_64_Valgrind
+ build about pointer initialization.
+
+Thu Jan 26 23:48:47 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html
+
+ Fixed a fuzz error about dependency on ~schmidt/ACE_wrappers.
+
+Thu Jan 26 19:25:06 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc
+
+ Added an empty IDL_Files segment to the _exec project,
+ which should clean up tons of Windows VC build erros
+ and warnings.
+
+Thu Jan 26 17:57:45 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Modified to inherit from a base project dance_extension_stub.mpb
+ to avoid explicily included path specification.
+
+Thu Jan 26 10:25:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Fixed incorrect doxygen tag
+
+ * CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl:
+ Added missing ACE_INLINE macro's
+
+
+Thu Jan 26 01:44:15 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp
+ * ciao/Deployment.idl
+
+ Fixed a bug of shared component capability. Originally, we
+ haven't differentiate between "shared components" and
+ "external components", so when a component ref count becomes
+ 0, the "shared components" will become empty, however, since
+ some components are installed remotely, removing it will
+ cause problem if we don't have such differentiation.
+
+Wed Jan 25 23:44:01 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * CIAOTAO.mwc:
+ * CIAO.mwc:
+
+ Added RACE to the workspace.
+
+Wed Jan 25 22:47:30 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * CIAO_TAO_DAnCE.mwc
+
+ Added another mwc file which builds ACE, TAO, CIAO, DAnCE
+ minium to run a CIAO simple example.
+
+Wed Jan 25 22:28:06 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Added include+= to find header files and fixed a typo.
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Fixed an error in Linux build.
+
+Wed Jan 25 22:11:23 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Changed order of the base member initialization list, which
+ should clear some warnings of the Linux builds.
+
+Wed Jan 25 21:32:44 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+
+ Fixed dependency problems.
+
+Wed Jan 25 20:28:35 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/Interfaces/ExecutionManager.idl
+ * DAnCE/Interfaces/Interfaces.mpc
+ * DAnCE/Interfaces/README
+ * DAnCE/Interfaces/NodeManager.idl
+ * DAnCE/Interfaces/NodeManager_stub_export.h
+ * DAnCE/Interfaces/ExecutionManager_stub_export.h
+
+ Added these files into a separate directory
+ called DAnCE/Interfaces to termporarily solve the MPC
+ directory dependency issue.
+
+ * DAnCE/ExecutionManager/ExecutionManager.idl
+ * DAnCE/NodeManager/NodeManager.idl
+
+ Removed these files.
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/NodeManager/NodeManager_Impl.h
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+
+ Modified to accomodate the above refactoring work.
+
+Wed Jan 25 19:46:57 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Deployment_common.h
+
+ Added this new file, which is supposed to contain all the
+ reusable types/classes/methods across the DAnCE toolchain.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+
+ Modified the code to accomodate the above refactoring work.
+
+ * DAnCE/TargetManager/DomainDataManager.cpp
+
+ Got rid of a warning message about unreferenced variable.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManage.mpc
+
+ Added a dependency from DAM to ExecutionManager_stub project.
+
+Wed Jan 25 02:53:07 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ * ciao/Deployment.idl
+
+ Fixed a bug about destroying *ApplicationManagers.
+ This fix will ensure that DAM won't be destroyed if any
+ components managed by itself are still up and running.
+
+Wed Jan 25 01:41:53 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+
+ Some cosmetic changes.
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Fixed a bug about when to killing a NodeApplication process.
+
+ * ciao/Container_Base.cpp
+
+ Comment out meaningless debug statement.
+
+Wed Jan 25 00:56:39 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test_without_ns.pl
+
+ Modified to use the correct NodeManagerMap.dat file.
+
+Wed Jan 25 00:47:02 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/descriptors_RTCCM/RTsvc.conf
+ * examples/Hello/descriptors_RTCCM/input.csr
+ * examples/Hello/descriptors_RTCCM/rt-config-example.cdp
+ * examples/Hello/descriptors_RTCCM/rt-config-example.csr
+ * examples/Hello/descriptors_RTCCM/rt-example.cdp
+ * examples/Hello/descriptors_RTCCM/rt_run_test.pl
+ * examples/Hello/descriptors_ReDaC/deploymentplan.cdp
+ * examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp
+ * examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp
+ * examples/Hello/descriptors_naming/deploymentplan_naming.cdp
+
+ Create some new descriptors, reorganized them, and put
+ them into different directories.
+
+Wed Jan 25 00:23:02 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * CIAODAnCE.mwc
+
+ Added another mwc file which only builds CIAO and DAnCE.
+
+ * examples/Hello/step-by-step.html
+
+ Fixed an error in this documentation page.
+
+ * examples/Hello/descriptors/RTsvc.conf
+ * examples/Hello/descriptors/TestNodeManagerMap.dat
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp
+ * examples/Hello/descriptors/rt-config-example.cdp
+ * examples/Hello/descriptors/rt-config-example.csr
+ * examples/Hello/descriptors/rt-example.cdp
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp
+ * examples/Hello/descriptors/rt_run_test.pl
+
+ Removed these descriptor files and put them into separate
+ directories to better organize things.
+
+ * examples/Hello/descriptors_shared_components/deploymentplan.cdp
+ * examples/Hello/descriptors_shared_components/
+ deploymentplan_shared_components.cdp
+
+ Added a dedicated directory to put descriptors for shared
+ components scenario.
+
+Wed Jan 25 00:10:50 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/DAM_Map.cpp
+ * DAnCE/ExecutionManager/DAM_Map.h
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+
+ Added capabilities to handle adding/removing
+ connections between components in new assembly and existing/external
+ components in old assemblies. This involves putting
+ ExecutionManager as a coordinator for different DAMs.
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl
+ * DAnCE/NodeManager/NAM_Map.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/NodeManager/Node_Manager.cpp
+
+ Added capabilities for handling shared components across
+ different assemblies. This involves putting NodeManager
+ as a local coordinator for different NAMs.
+
+ * DAnCE/NodeApplication/NodeApplication.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+
+ Enhancement of adding/removing connections.
+
+ * DAnCE/Plan_Launcher/DAM_Map.cpp
+ * DAnCE/Plan_Launcher/DAM_Map.h
+
+ Removed from the repo, since they are located in the other
+ directory as well, and we can use relative path to point
+ to those existing files.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+
+ Enhanced to handle shared components scenario which interacts
+ with *managers.
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp
+
+ Fixed for working with the newly enhanced DAnCE toolchain.
+
+ * ciao/Deployment.idl
+
+ Adding enhancements for adding shared components capabilities
+
+Wed Jan 25 00:01:37 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorCB.cpp
+
+ Fixed a warning about unreferenced variable in Windows build.
+
+ * DAnCE/NodeManager/MonitorController.h
+
+ Included header file missing path to its directory.
+
+ * DAnCE/TargetManager/CmpClient.cpp
+
+ Fixed a warning about unreferenced variable in Windows build.
+
+Mon Jan 23 23:10:32 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+
+ * DAnCE/spec_RepositoryManager/HTTP_Client.h:
+ * DAnCE/spec_RepositoryManager/HTTP_Client.cpp:
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.h:
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/spec_RepositoryManager/Options.h:
+ * DAnCE/spec_RepositoryManager/Options.cpp:
+ * DAnCE/spec_RepositoryManager/PC_Updater.h:
+ * DAnCE/spec_RepositoryManager/PC_Updater.cpp:
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.h:
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp:
+ * DAnCE/spec_RepositoryManager/README.txt:
+ * DAnCE/spec_RepositoryManager/RM_Helper.h:
+ * DAnCE/spec_RepositoryManager/RM_Helper.cpp:
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager.idl:
+ * DAnCE/spec_RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/spec_RepositoryManager/URL_Parser.h:
+ * DAnCE/spec_RepositoryManager/URL_Parser.cpp:
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp:
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc:
+
+ Removed these files. Zapping the DAnCE/spec_RepositoryManager/
+ directory which used to hold the implementation of the
+ RepositoryManager while the ExecutionManager was in the
+ DAnCE/RepositoryManager/ directory.
+
+Mon Jan 23 22:41:49 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/HTTP_Client.h:
+ * DAnCE/RepositoryManager/HTTP_Client.cpp:
+ * DAnCE/RepositoryManager/HTTP_Handler.h:
+ * DAnCE/RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/RepositoryManager/Options.h:
+ * DAnCE/RepositoryManager/Options.cpp:
+ * DAnCE/RepositoryManager/PC_Updater.h:
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/PC_Updater_T.h:
+ * DAnCE/RepositoryManager/PC_Updater_T.cpp:
+ * DAnCE/RepositoryManager/README.txt:
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager.idl:
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/URL_Parser.h:
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp:
+
+ Moving what used to be DAnCE/spec_RepositoryManager directory to
+ the DAnCE/RepositoryManager directory.
+
+Mon Jan 23 22:14:06 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Adding couple more checks to increase robustness.
+
+Mon Jan 23 20:07:17 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h
+
+ Added a virtual destructor to resolve warnings.
+
+ * DAnCE/TargetManager/DomainDataManager.cpp
+ * DAnCE/TargetManager/TargetManager_exec.cpp
+
+ Fixed some problems caused by
+ Mon Jan 23 15:11:40 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+Mon Jan 23 17:03:09 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * RACE/Controller/Component/Controller_svnt_export.h:
+ * RACE/Controller/Component/Controller_stub_export.h:
+ * RACE/Controller/Component/Controller_exec_export.h:
+ * RACE/Controller/Component/Controller_exec.h:
+ * RACE/Controller/Component/Controller_exec.cpp:
+ * RACE/Controller/Component/Controller.mpc:
+ * RACE/Controller/Component/Controller.idl:
+ * RACE/Controller/Component/Controller.cidl:
+
+ Added IDL, CIDL, and MPC files for the RACE controller along with a
+ dummy implementation of the controller.
+
+Mon Jan 23 15:11:40 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc
+
+ Cleaned up the MPC file, fixed a linking error on OS X.
+
+Sat Jan 21 21:54:59 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/SizeTypeCalculator.cpp:
+
+ Fixed a bug in size type calculation of nested structs and unions.
+ Thanks to Sandro Santos Andrade <sandros@dcc.ufba.br> for
+ reporting the problem.
+
+Sat Jan 21 20:27:13 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.idl:
+ * DAnCE/TargetManager/TargetManager.mpc:
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+ Added this file to include the facet for RACE Controller
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Added implementation for the facet serving the RACE Controller.
+
+
+Sat Jan 21 02:04:15 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Removed trailing whitespaces and tabs
+
+ * DAnCE/NodeManager/BaseMonitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ * DAnCE/NodeManager/MonitorCB.h:
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ Removed system headers and replaced systme calls with ACE calls.
+ Also updated documentation with doxygen standard
+
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Removed system headers and replaced systme calls with ACE calls.
+ Also updated documentation with doxygen standard
+
+ * tools/Config_Handlers/DD_Handler.h:
+ * tools/Config_Handlers/DD_Handler.cpp:
+ Removed system headers and replaced systme calls with ACE calls.
+ Also updated documentation with doxygen standard
+
+Fri Jan 20 22:30:21 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ The include to NodeManagerC.h is removed since the dependency on
+ NodeManager_stub was removed.
+
+Fri Jan 20 20:33:23 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ Changed the Domain Application Manager to remove the dependency on
+ NodeManager_stub.
+
+Fri Jan 20 07:24:47 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/PC_Updater.h:
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/spec_RepositoryManager/URL_Parser.h:
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp:
+
+ Improved the documentation, the output and added some minor features.
+ Changed all occurnences of 'new' to ACE_NEW in ZIP_Wrapper.cpp which
+ I had previously forgotten.
+
+ * DAnCE/new_RepositoryManager/packages/inconsistent.cpk:
+ * DAnCE/new_RepositoryManager/packages/package.cpk:
+
+ Removed these files.
+
+Thu Jan 19 01:29:58 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.h:
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/spec_RepositoryManager/PC_Updater.h:
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.h:
+ * DAnCE/spec_RepositoryManager/RM_Helper.h:
+ * DAnCE/spec_RepositoryManager/RM_Helper.cpp:
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/spec_RepositoryManager/URL_Parser.h:
+ * DAnCE/spec_RepositoryManager/URL_Parser.cpp:
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h:
+
+ Changed all occurenced of new to ACE_NEW. Turned some documentation to
+ Doxygen style. Modified the URL_Parser singleton to use the ACE_Singleton
+ class. More changes on the way.
+
+Wed Jan 18 23:56:51 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h: Corrected the file name in @file
+
+ * DAnCE/TargetManager/CmpClient.cpp: Corrected the file name in @file
+
+Wed Jan 18 16:42:41 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h:Added documentation, changed
+ function signature
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:Removed system headers
+ * DAnCE/NodeManager/Monitor.mpc:Added cvs tag
+ * DAnCE/NodeManager/MonitorController.cpp:Removed sleep call
+ * DAnCE/NodeManager/NodeManager.mpc:Added after clause to compile
+ TargetManager_stub before
+
+ * DAnCE/TargetManager/TM_Client.mpc:Added cvs tag
+ * DAnCE/TargetManager/TargetManager.mpc: Added cvs tag ,
+ Removed Deployment_Configuration.cpp from TargetManager_exec
+
+Tue Jan 17 23:52:11 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/Options.h:
+ * DAnCE/spec_RepositoryManager/Options.cpp:
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp:
+
+ Took care of the todo's that Johnny suggested. Now using ACE_Singleton
+ parametrized with ACE_Null_Mutex.
+
+Tue Jan 17 21:07:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/spec_RepositoryManager/HTTP_Client.h:
+ Layout change
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.{h,cpp}:
+ Changed bytecount_ to size_t
+
+Tue Jan 17 21:03:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/spec_RepositoryManager/Options.h:
+ Doxygen improvements
+
+ * DAnCE/spec_RepositoryManager/Options.cpp:
+ Layout changes and add some todo's
+
+Tue Jan 17 19:31:56 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Added a project inherit improperly removed by
+ Mon Jan 16 16:22:25 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+Mon Jan 16 19:59:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/spec_RepositoryManager/URL_Parser.h:
+ * DAnCE/spec_RepositoryManager/PC_Updater.h:
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp:
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.h:
+ * DAnCE/spec_RepositoryManager/HTTP_Client.h:
+ Doxygen improvements
+
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp:
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.h:
+ * DAnCE/spec_RepositoryManager/HTTP_Client.cpp:
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp:
+ Layout changes
+
+Mon Jan 16 18:36:47 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+
+ Addressed some warnings from the RHEL_Static_GCC-3.4.2
+ build.
+
+Mon Jan 16 16:48:11 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/Options.h:
+ * DAnCE/spec_RepositoryManager/Options.cpp:
+ * DAnCE/spec_RepositoryManager/PC_Updater.cpp:
+ * DAnCE/spec_RepositoryManager/README.txt:
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Added the newest changes to the RepoMan. This change add the
+ functionality that pertains to interface types. It is currently
+ disabled due to lack of support in the modeling tools for interfaces
+ for assemby-based interfaces.
+
+ I still need to clean up some of the output and some of the code before
+ the release of the beta.
+
+Mon Jan 16 16:22:25 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/BaseMonitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ * DAnCE/NodeManager/Monitor.mpc:
+ * DAnCE/NodeManager/MonitorCB.h:
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/NodeManager/MonitorController.inl:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ * DAnCE/NodeManager/NodeManager.mpc:
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ * DAnCE/NodeManager/Node_Manager.cpp:
+ These files implement the Monitor within the
+ NodeManager implementation.
+
+ * DAnCE/TargetManager/CmpClient.cpp:
+ * DAnCE/TargetManager/Deployment_Configuration.h:
+ * DAnCE/TargetManager/Deployment_Configuration.cpp:
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/TM_Client.mpc:
+ * DAnCE/TargetManager/TargetManager.cidl:
+ * DAnCE/TargetManager/TargetManager.idl:
+ * DAnCE/TargetManager/TargetManager.mpc:
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ * DAnCE/TargetManager/TargetManager_exec_export.h:
+ * DAnCE/TargetManager/TargetManager_stub_export.h:
+ * DAnCE/TargetManager/TargetManager_svnt_export.h:
+ These files implement the Target Manager Implementation
+
+ * DAnCE/TargetManager/descriptors/Domain.cdd:
+ * DAnCE/TargetManager/descriptors/NodeDetails.dat:
+ * DAnCE/TargetManager/descriptors/NodeManagerMap.dat:
+ * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp:
+ * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl:
+ These are needed for the running of the TargetManager
+
+ * ciao/CCM_Core.mpc:
+ * ciao/Deployment.idl:
+ * ciao/Deployment_Base.idl:
+ * ciao/Deployment_Data.idl:
+ * ciao/Packaging_Data.idl:
+ * ciao/ServerResources.idl:
+ Needs to be changed to resolve conflicts when compiling the
+ Target Manager cidl file
+
+ * ciao/Target_Data.idl:
+ This is the file which contains declarations which has been
+ separated for the Target manager
+
+ * tools/Config_Handlers/Config_Handlers.mpc:
+ * tools/Config_Handlers/DD_Handler.h:
+ * tools/Config_Handlers/DD_Handler.cpp:
+ These implement the extension to the config handlers for
+ the parsing of the Target data domain.
+
+Fri Jan 13 20:39:21 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/XSCRT/Parser.hpp
+ * tools/Config_Handlers/XSCRT/XML.hpp
+
+ Added a templated casting operator for Xerces types instead
+ of using standard dynamic_cast. Thanks to Ossama Othman
+ ossama at dre dot vanderbilt dot edu for suggesting this
+ fix.
+
+ * CIAO-INSTALL.html
+ * NEWS
+
+ The above changes removed the requirement for an RTTI enabled
+ version of Xerces. Updated these documents to reflect this.
+
+Thu Jan 12 21:40:47 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/ReDaC-Usage.html
+
+ Fixed some typos and an error.
+
+Tue Jan 10 22:34:22 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/cdd.cpp
+ * tools/Config_Handlers/cdd.hpp
+
+ Regenerated to reflect updates to schema in
+ Tue Jan 10 19:01:45 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Modified_Deployment.xsd
+
+ Removed, as this file is obsolete, and schema should only exist in
+ CIAO_ROOT/docs/schema
+
+Tue Jan 10 22:05:17 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/ReDaC-Usage.html
+
+ Added a tutorial-like web page to showcase ReDaC service
+ of DAnCE.
+
+ * NEWS
+
+ Updated with DAnCE's recent enhancements.
+
+Tue Jan 10 19:01:45 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/cdd.xsd
+
+ Corrected incorrect cardinality on several target domain elements.
+
+Tue Jan 10 11:10:01 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * NEWS:
+
+ Updated with recent developments.
+
+Mon Jan 9 14:17:39 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ * examples/Hello/descriptors/Receiver_Svnt.iad:
+ * examples/Hello/descriptors/Sender_Svnt.iad:
+ * examples/Hello/descriptors/flattened_deploymentplan.cdp:
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp:
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp:
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_remove.cdp:
+ * examples/Hello/descriptors/rt-config-example.cdp:
+ * examples/Hello/descriptors/rt-example.cdp:
+
+ Updated occurrences of the string name of the servant executor
+ DLL extry point to correspond with the changes in
+
+ Fri Jan 6 20:09:34 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Fri Jan 6 20:09:34 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changed the names of the generated extern C functions that
+ create the home and servant executors to incorportate the
+ entire scoped name of the class, to avoid name clashes
+ (since extern "C" functions link globally no matter what
+ scope they are declared in) when class names are
+ duplicated inside different nested namespaces. Thanks
+ to James Hill <james.h.hill@vanderbilt.edu> and Boris
+ Kolpackov <boris@dre.vanderbilt.edu> for their help
+ with the problem.
+
+ * DAnCE/tests/Config_Handlers/HUDisplay/Airframe_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/GPS_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/NavDisplay_Svnt.iad:
+ * DAnCE/tests/Config_Handlers/HUDisplay/Timer_Svnt.iad:
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl:
+ * docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad:
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad:
+ * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp:
+ * examples/BasicSP/descriptors/Airframe_Svnt.iad:
+ * examples/BasicSP/descriptors/GPS_Svnt.iad:
+ * examples/BasicSP/descriptors/NavDisplay_Svnt.iad:
+ * examples/BasicSP/descriptors/Timer_Svnt.iad:
+ * examples/BasicSP/descriptors/flattened_deploymentplan.cdp:
+
+ Updated the hand-crafted descriptor files in CIAO tests and
+ examples to reflect the changes above.
+
+Thu Jan 5 21:28:17 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Fixed some warning in Boarland C++ builds.
+
+Thu Jan 5 00:53:30 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
+
+ * ChangeLog:
+
+ Untabify.
+ Delete-trailing-spaces.
+
+ Changed "add-log-time-format" to a really ugly lambda expression
+ that formats changelog timestamps in UTC and works with both GNU
+ Emacs and XEmacs.
+
+Wed Jan 4 21:01:15 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * ciao/CCM_Base.idl:
+
+ Replaced #if !defined (CIAO_HAS_IMPORT_KEYWORD) with
+ #ifdef CIAO_HAS_IMPORT_KEYWORD. This will give CIDLC's
+ CPP a chance to handle it properly.
+
+ * CCF/CCF/CompilerElements/Preprocessor.cpp:
+
+ Fixed a bug in lexeme parsing.
+
+Wed Jan 4 11:39:59 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/CCM_Core.mpc
+
+ Removed $CIAO_ROOT/DAnCE include, added CIAO_ROOT/ciao.
+
+Tue Jan 3 19:55:43 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/CompilerElements/Preprocessor.cpp:
+ * CCF/CCF/CompilerElements/Preprocessor.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp:
+ * CIDLC/cidlc.cpp:
+
+ Implemented support for basic preprocessor directives:
+ #ifdef, #ifndef, #else, and #endif as well as the -D
+ command-line option. Also added exception handlers for
+ filesystem exceptions.
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Struct.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.hpp:
+
+ Implemented incomplete struct and union semantics which
+ will appear in CORBA 3.1.
+
+ * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp:
+
+ Code clean-ups.
+
+Fri Dec 30 11:56:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Dynamic_Component_Servant_Base.{h,cpp}:
+ Moved the default constructor to public again, vc8 needs it, no
+ idea why, have to recheck later
+
+Thu Dec 29 08:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Fixed implicit conversion warning
+
+Wed Dec 28 10:42:31 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/Old_Config_Handlers/DnC_Dump.cpp
+ * tools/Config_Handlers/DnC_Dump.cpp
+ * tools/Config_Handlers/PSPE_Handler.cpp
+
+ Silenced some warnings from
+ Fri Dec 23 11:49:04 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+Wed Dec 28 12:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Context_Impl_Base.{h,cpp}:
+ Readded the default constructor, some compilers need it, no idea
+ why, will sort this out later but this at least makes the scoreboard
+ less red
+
+Tue Dec 27 15:57:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Container_Base.{h,cpp}:
+ * ciao/Context_Impl_Base.{h,cpp}:
+ * ciao/Home_Servant_Impl_Base.{h,cpp}:
+ * ciao/Servant_Impl_Base.{h,cpp}:
+ * ciao/Swapping_Servant_Home_Impl_Base.{h,cpp}:
+ * ciao/Swapping_Servant_Home_Impl_T.h:
+ Moved the default constructor to the private section and removed
+ the implementation with the assert
+
+Tue Dec 27 15:08:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/NodeApplication_Core.cpp:
+ Initialise pointer with 0
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.{h,cpp,inl}:
+ Just declare the default constructor private, it seems not
+ to be used and the implementation was incorrect
+
+Fri Dec 23 11:49:04 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeApplication/NodeApplication_Impl.inl
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp
+ * ciao/Container_Base.cpp
+ * ciao/Deployment.idl
+ * ciao/Deployment_Core.idl
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_add.cdp
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns_remove.cdp
+
+ Merged from CVS Branch CIAO_ReDAC_01. This merge enables DAnCE to
+ handle dynamic updating component assemblies as well as its
+ configurations on the fly. Major IDL changes include the following:
+
+ 1) Modified the finishLaunch() operation on the DomainApplicationManager
+ interface by adding an additional boolean parameter to differentiate
+ whether this is for inital deployment or for redeployment.
+
+ 2) Modified the finishLaunch() operation on the NodeApplicationManager
+ interface by adding an additional boolean parameter to differentiate
+ whether this is for inital deployment or for redeployment.
+
+ 3) Added new operations perform_redeployment() to the ExecutionManager
+ interface and NodeApplicationManager interface.
+
+Fri Dec 23 13:47:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ComponentPackager/*
+ Removed all these files, this component was using ziparchive and
+ we didn't build it. After checking this with the DAnCE developers
+ the conclustion was to zap it
+
+Thu Dec 22 19:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ Removed not needed msvc pragma push/pop
+
+Thu Dec 22 19:51:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ Made variable const
+
+Thu Dec 22 19:47:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Removed some old includes, make a variable const
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.{h,cpp}:
+ Made get_default_node_manager_ior and get_node_manager_ior
+ const methods
+
+Thu Dec 22 19:43:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ Initialise pointers with 0
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h:
+ Removed include of cpp file in this file, this file is not
+ declaring a template
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Converted documentation to doxygen style
+
+Thu Dec 22 19:36:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ComponentPackager/ComponentPackager.mpc:
+ Use exceptions as base project
+
+ * DAnCE/ComponentPackager/Component_Packager.cpp:
+ Converted some documentation to doxygen style
+
+ * DAnCE/ComponentPackager/Base_Packager.cpp:
+ Fixed argument not used warnings
+
+ * DAnCE/ComponentPackager/CPK_Packager.{h,cpp}:
+ Small cleanup
+
+Thu Dec 22 14:10:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ComponentPackager/Base_Packager.h:
+ Changed documentation to doxygen style
+
+Tue Dec 20 08:07:51 2005 Simon McQueen <sm@prismtech.com>
+
+ * CIAO version 0.4.8 released.
+
+Fri Dec 16 15:58:27 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+
+ Modified to fix a bug reported by Will Otte regarding
+ DAnCE's parsing of deployment plan to find component
+ servant and executor libraries. This is a temporary
+ workaround so even if a component name happens to
+ have "_exec" string inside it, DAnCE could still
+ work correctly to find the corresponding servant
+ and executor libraries.
+
+Fri Dec 16 14:57:21 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Container_Base.cpp
+ * ciao/Container_Base.h
+
+ Fixed a bug about RT-CCM. The bug creeped out when the
+ facet_consumer_poa_ is not configured properly to use
+ application specific real-time policies. Thanks to
+ Roland Schimmack <Roland.Schimmack @ gmx.de> for
+ reporting this bug.
+
+Tue Dec 13 12:13:26 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * COPYING: Updated this file to mention compliance issues wrt the
+ new "The Energy Policy Act of 2005". Thanks to Malcolm Spence
+ for providing this.
+
+Tue Dec 13 09:07:21 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html
+ * CIDLC/README.html
+
+ Updates to the CIDLC build documentation. Thanks to James Hill
+ <hillj at isis dot vanderbilt dot edu> for completing this update.
+
+Mon Dec 12 13:20:00 UTC 2005 Simon Massey <sma@prismtech.com>
+
+ * NEWS:
+
+ Added Nanbor's changes from the release notes.
+
+Fri Dec 9 13:39:10 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Any_Handler.h
+
+ Added a missing include for the versioned namespace macros.
+
+Fri Dec 9 09:18:01 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/Server_init.h
+
+ Added a missing include for the versioned namespace macros.
+
+Thu Dec 08 21:34:36 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * NEWS
+
+ Updated the NEWS file to capture ReDaC stuff.
+
+Thu Dec 8 15:38:02 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/DT_Handler.h:
+ * ciao/Client_init.h:
+ * ciao/Context_Impl_T.h:
+ * ciao/Server_init.h:
+ * ciao/Upgradeable_Context_Impl_T.h:
+ * tools/Config_Handlers/Any_Handler.h:
+
+ Fixed versioned namespace support. The versioning macros calls
+ around forward declarations in the CORBA namespace were
+ missing.
+
+Thu Dec 08 08:38:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Fixed compile errors with VxWorks
+
+Wed Dec 07 18:05:35 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Deployment.idl
+ * ciao/Deployment_Core.idl
+ * doc/index.html
+
+ Document CIAO specific interface extension/modifications.
+
+Wed Dec 7 12:41:22 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+
+ Fixed a bug in regular expressions that are used to get rid of
+ file suffixes.
+
+Tue Dec 06 12:33:27 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Fixed warnings in Borland.
+
+Tue Dec 6 16:14:01 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_T.cpp:
+
+ Changed initialization of boolean class members from '0'
+ to 'false'.
+
+ * ciao/Servant_Impl_T.h:
+
+ Added comments to the executor and context class members,
+ providing info about where they are initialized.
+
+Mon Dec 5 14:43:48 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+
+ Removed superfluous dependancy on Xerces.
+
+Sun Dec 4 11:13:32 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
+ * DAnCE/tests/Config_Handlers/handler_test.mpb
+
+ Fix linking errors on Tiger.
+
+Fri Dec 2 11:25:48 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.idl
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/RepositoryManager/Repository_Manager.cpp
+ * DAnCE/RepositoryManager/Repository_Manager_conf.h
+ * DAnCE/RepositoryManager/Update_Plan.cpp
+ * DAnCE/RepositoryManager/Update_Plan.h
+
+ Removed the deprecated RepositoryManager implementation.
+
+ * NEWS
+
+ Updated the NEWS file to reflect this.
+
+Thu Dec 1 10:16:46 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Fixed some errors caused by previous commit.
+
+Thu Dec 1 12:57:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ Use 0 instead of NULL, NULL is not portable
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/NodeManager/NAM_Map.cpp:
+ Initialise pointers with 0 and return false instead of 0
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ Removed not needed msvc pragma push/pop
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Initialise pointers with 0 and removed some printf that seems some
+ left over debugging statements
+
+Wed Nov 30 16:24:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/xsc-banner.h
+
+ Updated this file to reflect recent export macro changes.
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.cpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdp.cpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.cpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.cpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.cpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.cpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.cpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Made a borland specific fix apply to all compilers, hopefully
+ fixing ICC builds.
+
+Wed Nov 30 12:30:59 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/flattened_deploymentplan.cdp
+
+ Added metadata necessary to initialize an enum attribute.
+
+Wed Nov 30 08:06:00 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ This project is deprecated according to Will, so added
+ requires+=dummy_label, it is up to the DAnCE people to
+ decide when they zap this from the archive
+
+Fri Nov 25 10:50:00 UTC 2005 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/Old_Config_Handlers/XercesString.cpp
+
+ Fixed prototype return type qualifier missmatch
+
+Thu Nov 24 16:04:05 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Added the MPC base project dependency to typecodefactory,
+ and hopefully this should fix some linking erros on the
+ scoreboard.
+
+Thu Nov 24 11:25:09 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/XercesString.h
+
+ Fixed a warning, since declaring function return type
+ to be const is meaningless.
+
+Tue Nov 22 16:03:24 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+
+ Fixed a memory management related bug, we should not
+ explicitly call release() on the component object
+ reference of var type.
+
+Mon Nov 21 17:24:42 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * NEWS:
+
+ Updated with information about changes in CCF.
+
+Fri Nov 18 10:28:31 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc
+
+ Quashed a link time warning on OS X.
+
+Thu Nov 17 18:13:28 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Swapping/Sender/Sender.mpc:
+
+ Added a dependency of SenderE.idl on itself, to keep
+ VC8 from launching the IDL compiler on it until it
+ has been generated by the CIDL compiler.
+
+Thu Nov 17 09:53:35 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Fixed warning about unused arguments
+
+Wed Nov 16 11:30:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Swapping/Sender/Sender_exec.cpp:
+ Fixed warning in VxWorks build
+
+Mon Nov 14 22:43:09 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp
+ * ciao/Deployment.idl
+
+ Fixed some errors and warnings on the builds.
+
+Mon Nov 14 11:05:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Display/RateGen/RateGen_exec.h:
+ * examples/BasicSP/EC/EC_exec.h:
+ Timer id's are long, not int
+
+ * ciao/Servant_Activator.cpp:
+ Fixed 64bit conversion warnings
+
+Sun Nov 13 12:54:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Swapping/Sender/Sender_exec_2.cpp:
+ * examples/Swapping/Sender/Sender_exec_1.cpp:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ Fixed warnings in VxWorks build
+
+Fri Nov 11 17:49:40 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * ciao/Deployment.idl
+
+ More stuff regarding dynamic assembly management. These
+ changes won't break existing initial deployment and
+ configuration.
+
+Fri Nov 11 12:37:00 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+ * ciao/Deployment.idl
+ * ciao/Deployment_Core.idl
+
+ Added the DAnCE enhancements to support dynamic
+ assembly management and reconfiguration. No actual
+ implementation is there except some capability
+ in NodeApplication_Impl servant class.
+
+Thu Nov 10 17:13:20 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Servant_Activator.cpp
+
+ Enhanced a debug output message.
+
+Thu Nov 10 06:54:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Port_Activator_T.cpp:
+ Fixed warning in VxWorks build
+
+Tue Nov 8 22:13:50 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * ciao/Container_Base.cpp
+ * ciao/Servant_Impl_Base.cpp
+ * ciao/Swapping_Servant_Home_Impl_T.cpp
+ * ciao/Upgradeable_Context_Impl_T.cpp
+ * examples/BasicSP/EC/EC.mpc
+
+ Resolved some warnings in OS X relating to ambiguous conversions.
+
+Mon Nov 7 16:23:41 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * performance-tests/Benchmark/Benchmark.mpc
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
+
+ Resolving linking errors on OS X.
+
+Mon Nov 7 14:00:31 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * NEWS: Added some new TO-DO items.
+
+Mon Nov 07 10:23:09 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Fixed
+ incorrect usage of extracting a struct from an any. Thanks much
+ to Gan for helping with the debugging effort.
+
+ * examples/Hello/descriptors/rt_run_test.pl:
+ * examples/Hello/descriptors/rt-example.cdp: Enabled the use of RT
+ policy sets and RT-enabled NodeApplication in the example by
+ default.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp: Minor enhancement to
+ the debug messages.
+
+Fri Nov 04 16:44:29 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementtionInfo.cpp
+
+ Changed to use the "copying" version of the Any insertion
+ operator. Thanks Jeff Parsons for the help on this.
+
+Thu Nov 03 15:34:39 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+
+ Fixed a bug which causes unknow exception when calling
+ startLaunch on NodeApplicationManager.
+
+Thu Nov 3 19:36:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Fixed implicit conversion warning in VxWorks build
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ Renamed global variable count to counter to fix clash with STL count
+ algoritm on VxWorks
+
+Thu Nov 03 11:14:52 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp: Added a tad more and
+ improve existing debugging print out.
+
+ * examples/Hello/descriptors/rt-example.cdp:
+ * examples/Hello/descriptors/rt-config-example.csr:
+ * examples/Hello/descriptors/rt_run_test.pl: Changed to use a
+ simpler version of DeploymentPlan for the test for now.
+
+Wed Nov 02 19:28:14 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/CB_Handler.cpp
+ * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp
+ * tools/Config_Handlers/RT-CCM/PS_Handler.cpp
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp:
+
+ Fixed some bugs related to populating/displaying ServerResource
+ data structure.
+
+Wed Nov 02 14:55:14 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Fixed strings
+ comparisons syntax.
+
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp:
+ * DAnCE/NodeApplication/RTConfig_Manager.h: Added a new
+ print_resource method and a bunch of debugging print out to help
+ debugging XML parsing and propagating.
+
+ * examples/Hello/descriptors/RTsvc.conf:
+ * examples/Hello/descriptors/rt_run_test.pl: Added a RTsvc.conf
+ file to start up the NodeApplication in RT mode.
+
+ * examples/Hello/descriptors/rt-config-example.csr: Made RT
+ resource definitions more realistic and added a new policy set
+ for debugging XML parsing.
+
+Wed Nov 02 07:09:10 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: Fixed
+ usage of strings.
+
+Tue Nov 01 22:41:04 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp: Changed to
+ insert policy set name into ContainerPolicySet property instead
+ of the actual policy since we already have the policy set
+ definitions when creating the NodeApplication.
+
+Tue Nov 01 13:44:58 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp:
+ * DAnCE/NodeApplication/RTConfig_Manager.h:
+ * DAnCE/NodeApplication/RTConfig_Manager.inl:
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp:
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.h: Integrated
+ RTConfig_Manager with the RTNodeApp_Configurator.
+
+Mon Oct 31 22:37:42 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.cpp:
+ * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.h:
+ * DAnCE/NodeApplication/NodeApplication/RTConfig_Manager.inl:
+ Added the RT configuration manager that keep track of all the RT
+ resources and policy sets in a NodeApplication. We still need
+ to hook this up in the RTNodeApp_Configurator.
+
+Mon Oct 31 11:22:41 2005 <Gan Deng@SKYLINENETGEAR>
+
+ * examples/Hello/descriptors/rt-config-example.csr
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+
+ Fixed the descriptor by adding the server resource id tag.
+
+Sun Oct 30 22:49:52 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeManager/Node_Manager.cpp: Fixed missing -a Get_Opt
+ parameter and usage text. "-a" is used to set the optional
+ command line flags for the NodeApplication. The logic was there
+ in the Get_Opt loop but the Get_Opt object was not set to parse
+ the flag and the usage text for Node_Manager didn't mention the
+ flag either.
+
+ Eventually, the optional command line flags should really come
+ from the ServerResource XML file.
+
+ * NodeApplicationManager/NodeApplicationManager_Impl.cpp: Added a
+ missing space to separate optional command line flags from the
+ default ones. The old one worked only when no optional
+ commandline flags are presented.
+
+ * ciao/Deployment_Core.idl: Removed "init" method from the
+ Container interface since it is really implementation specific.
+
+ * DAnCE/NodeApplication/Container_Impl.cpp:
+ * DAnCE/NodeApplication/Container_Impl.h: Changed the signature of
+ init method to take a PolicyList pointer directly since this is
+ what we really need to initialize a container.
+
+ * DAnCE/NodeApplication/Configurator_Factory.h: Added comments
+ documentating how we should really support multiple external
+ configurator module and how it could be done.
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp: Changed DLL open
+ to not closing down the DLL handle on exit. Otherwise,
+ NodeApplication can not shut down cleanly.
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.h: Commented on the
+ potential need for a finalizer method, or two.
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp: Added actual
+ hooks to process optional policies for RT support.
+
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp: Added code to
+ parse the optional properties and manipulate RT resources and
+ policies.
+
+Sun Oct 30 10:27:27 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp: Fixed a typo in
+ command line option flag.
+
+Fri Oct 28 12:30:06 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+
+ Scoreboard fixes.
+
+Thu Oct 27 21:06:39 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/CodeGenerationKit/IndentationCxx.hpp:
+
+ Added support for indentation of function arguments.
+
+Thu Oct 27 00:29:11 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
+
+ Fixed some compilation and linking errors shown on the scoreboard,
+ particularly for Windows builds.
+
+Thu Oct 27 07:16:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * rules.ciao.GNU:
+ When cmd is the shell, use a different way to get the CIAO versions
+ needed for building with VxWorks 5.5 with Windows as host
+
+Wed Oct 26 23:07:59 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added backend support for the frontend features added by
+ Boris in
+
+ Tue Oct 25 14:08:44 2005 Boris Kolpackov <boris@kolpackov.net>.
+
+Wed Oct 26 16:16:32 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.cpp:
+ * DAnCE/NodeApplication/NodeApp_Configurator.h: Updated the
+ NodeApp_Configurator to support pre_orb_initialize and
+ post_orb_initialize methods which will be invoked before and
+ after ORB_init is called.
+
+ * DAnCE/NodeApplication/NodeApplication.cpp: Moved ORB_init into
+ NodeApplication_Core object.
+
+ * DAnCE/NodeApplication/NodeApplication_Core.cpp:
+ * DAnCE/NodeApplication/NodeApplication_Core.h:
+ * DAnCE/NodeApplication/NodeApplication_Core.inl: Moved the
+ NodeApplication_Options and NoOp_Configurator classes into
+ Configurator_Factory.* file. Refactored NodeApplication_Core to
+ enable pre_orb_initialize and post_orb_initialize.
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp:
+ * DAnCE/NodeApplication/Configurator_Factory.h: Factored all the
+ NodeApp_Configurtor creation strategies and NodeApplication
+ configuration managements into these files. It also includes
+ the no-ops NodeApp_Configurator used by non-RT NodeApplication.
+
+ We should extend the argument parsing logic to support
+ user-supplied NodeApp_Configurator at some point.
+
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplication/RTNA_Configurator_Export.h:
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.cpp:
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.h: Added the
+ dynamic library for real-time configuration. The current
+ implementation set up the NodeApplication process by enabling
+ the RTCORBA support. We still need to add the capability to
+ parse and allocate RT resources and policies.
+
+Wed Oct 26 18:37:00 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Array.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/String.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.hpp:
+
+ Corrected a left/right node mismatch in
+ type-arguments->specialization relation.
+
+Wed Oct 26 16:37:26 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+
+ Clear array type before starting sequence, string, etc.,
+ declarations.
+
+Tue Oct 25 14:08:44 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Array.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Array.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/String.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/String.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.hpp:
+ * CCF/CCF/IDL2/Traversal/Array.cpp:
+ * CCF/CCF/IDL2/Traversal/Array.hpp:
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/CCF/IDL2/Traversal/IntExpression.hpp:
+ * CCF/CCF/IDL2/Traversal/Sequence.cpp:
+ * CCF/CCF/IDL2/Traversal/Sequence.hpp:
+ * CCF/CCF/IDL2/Traversal/String.cpp:
+ * CCF/CCF/IDL2/Traversal/String.hpp:
+
+ Implemented the second part of the const expression support.
+ This includes bounded sequences, strings, and arrays.
+
+Mon Oct 24 09:36:28 2005 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_dance.html:
+
+ Corrected minor error with display of figures.
+
+Mon Oct 24 08:10:29 2005 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.{h,inl,cpp}:
+ * DAnCE/NodeApplication/Container_Impl.{h,inl,cpp}:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.{cpp,inl,h}:
+ * DAnCE/NodeManager/NodeManager_Impl.{cpp,h}:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/NodeManager/NodeManager.mpc:
+ * DAnCE/StaticConfigurator/README:
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.{cpp,mpc}:
+ * DAnCE/StaticConfigurator/StaticDAnCEApp.{cpp.tmpl,mpc.tmpl}:
+ * docs/static_dance.html:
+ * docs/imgs/dance_arch.{vsd,jpg}:
+ * docs/imgs/static_dance_arch.{vsd,jpg}:
+ * docs/imgs/static_dance_impl.{vsd,jpg}:
+
+ Added Static D&C capability to CIAO. See
+ $CIAO_ROOT/docs/static_dance.html for further details.
+
+Fri Oct 21 13:58:13 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/DynAny_Handler.mpc
+
+ Modified to make this not build on systems built with minimum
+ corba.
+
+Fri Oct 21 09:56:10 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/RTNodeApplication/RTNodeApplication.mpc: Removed the MPC
+ file to prevent it from being built.
+
+ * DAnCE/RTNodeApplication/REAME: Stated the directory has been
+ depricated.
+
+Fri Oct 21 13:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Fixed unitialized warnings
+
+Fri Oct 21 10:04:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Old_Config_Handlers/Process_Element_T.cpp:
+ Fixed 64bit warnings
+
+Thu Oct 20 09:07:21 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.{h,cpp}:
+ Actually, destructors can be pure virtual. They just can't be
+ defined in header files.
+
+Thu Oct 20 09:45:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.{h,cpp}:
+ Destructor can't be pure virtual
+
+Wed Oct 19 15:03:56 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ These changes are made to add support for RT-capable
+ NodeApplication.
+
+ * ciao/CCM_Core.mpc:
+ * ciao/Container_Impl.h:
+ * ciao/Container_Impl.inl:
+ * ciao/Container_Impl.cpp:
+ * ciao/NodeApplication_Impl.h:
+ * ciao/NodeApplication_Impl.inl:
+ * ciao/NodeApplication_Impl.cpp: Moved NodeApplication and
+ Container interface implementations under DAnCE/NodeApplication/
+ subdir. They are coupled with NodeApplication implementation
+ now.
+
+ * DAnCE/NodeApplication/NodeApplication.mpc: Changed to
+ incorporate the following files/changes.
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.h:
+ * DAnCE/NodeApplication/NodeApp_Configurator.cpp: Added abstract,
+ base NodeApp_Configurator class to define the interface for
+ configuring NodeApplication internal.
+
+ * DAnCE/NodeApplication/Container_Impl.h:
+ * DAnCE/NodeApplication/Container_Impl.inl:
+ * DAnCE/NodeApplication/Container_Impl.cpp: Moved from ciao/
+ subdir.
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.h:
+ * DAnCE/NodeApplication/NodeApplication_Impl.inl:
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp: Changed to
+ depend on a concrete NodeApp_Configurator to perform the
+ configuration.
+
+ * DAnCE/NodeApplication/NodeApplication_Core.h:
+ * DAnCE/NodeApplication/NodeApplication_Core.inl:
+ * DAnCE/NodeApplication/NodeApplication_Core.cpp:
+ * DAnCE/NodeApplication/NodeApplication.cpp: Restructured the
+ NodeApplication implementation so that the ORB event loop can be
+ run on the main thread or on a separate thread, using the FIFO
+ scheduling class.
+
+ A new create_configurator method in NodeApplication_Core will
+ create the "right" concrete configurator based on the command
+ line flags. We will support a RT configuration soon.
+ Currently, there's only a NoOp_Configurator for running
+ NodeApplication without RT support.
+
+ We will add the RT configuration as a dynamic library and will
+ hook it up via ACE_DLL in a few days.
+
+Tue Oct 18 16:50:24 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Updated release notes.
+
+Mon Oct 17 13:21:59 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/ccd.xsd
+
+ Updated to work with expected format for Repoman/ComponentPackager
+
+Fri Oct 14 17:22:59 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.cpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.cpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.cpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.cpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.cpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.cpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.cpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.cpp
+ * tools/Config_Handlers/toplevel.hpp
+
+ Regerated with new version of XSC which implements some heavy
+ optimizations.
+
+Fri Oct 14 14:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp:
+ Removed not needed ;
+
+Thu Oct 13 15:42:12 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+ * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp
+
+ Various compile fixes for Borland.
+
+ * tools/Config_Handlers/XMLSchema/Types.hpp
+
+ Modified to use ACE typedefs for number types.
+
+ * tools/Config_Handlers/XSCRT/Elements.hpp
+
+ Removed unneeded non-const conversion operator which was causing
+ errors in Borland.
+
+Wed Oct 12 14:13:09 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Sender.idl
+ * examples/Hello/Sender/Sender_exec.cpp
+ * examples/Hello/Sender/Sender_exec.h
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
+
+ Example of initializing enumerated attributes.
+
+Wed Oct 12 15:08:31 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/TP_Handler.cpp:
+
+ Changed the types of some static_casts on the rhs of
+ assignments to match the types on the lhs, eliminating
+ warnings from MSVC 7.1.
+
+Wed Oct 12 13:17:58 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Removed generation of error message with code that attempts
+ to set an enum attribute value, and replace it with code
+ that extracts the enum value from the Any arguement.
+
+Wed Oct 12 08:38:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h:
+ Fixed fuzz check
+
+Tue Oct 11 16:37:01 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.cpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.cpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.cpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.cpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.cpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.cpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.cpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.cpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Fixed a bug which broke the gaurantee that element order in the
+ XSC type would be the same as the element order in the instance
+ document.
+
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
+
+ Fixed a runtime error and removed some debugging information.
+
+Mon Oct 10 17:37:20 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu
+
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp
+
+ reverted a change we made earlier to accomodate older verisons of ZZIPLIB
+
+
+Mon Oct 10 15:46:57 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp
+
+ Trivial corrections for portability problems.
+
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc
+
+ Updated to properlly use base projects.
+
+Mon Oct 10 20:07:39 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc:
+ * tools/Config_Handlers/DynAny_Handler.mpc:
+
+ Add export files to projects, and removed redundant
+ base projects.
+
+ * tools/Config_Handlers/RT-CCM/TPL_Handler.cpp:
+
+ Changed some static casts on the rhs of assignments to types
+ corresponding to the lhs, elminating warnings on MSVC 7.1.
+
+Mon Oct 10 15:05:00 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/cdd.xsd
+
+ Checking in some updated schema for domain information.
+
+Mon Oct 10 13:53:15 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/DynAny_Handler.mpc
+ * tools/Config_Handlers/IDREF_Base.h
+ * tools/Config_Handlers/XSC_XML_Handlers_Export.h
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h
+ * tools/Config_Handlers/RT-CCM/CB_Handler.h
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+ * tools/Config_Handlers/RT-CCM/CLA_Handler.h
+ * tools/Config_Handlers/RT-CCM/OC_Handler.h
+ * tools/Config_Handlers/RT-CCM/OR_Handler.h
+ * tools/Config_Handlers/RT-CCM/PM_Handler.h
+ * tools/Config_Handlers/RT-CCM/PS_Handler.h
+ * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
+ * tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.h
+ * tools/Config_Handlers/RT-CCM/TPL_Handler.h
+ * tools/Config_Handlers/RT-CCM/TP_Handler.h
+ * tools/Config_Handlers/RT-CCM/input.csr
+ * tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h
+ * tools/Config_Handlers/Utils/Utils.mpc
+ * tools/Config_Handlers/Utils/XML_Error_Handler.h
+ * tools/Config_Handlers/Utils/XML_Helper.h
+ * tools/Config_Handlers/Utils/XML_Schema_Resolver.h
+
+ Fixed messy export macro usage. This will clean up builds on
+ Windows.
+
+Sun Oct 9 19:22:44 CDT 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu
+
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc
+
+ Fixing a few includes after Will Otte's latest changes.
+
+
+Sun Oct 9 09:51:41 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/DynAny_Handler.mpc
+
+ Moved this file down a level to make MPC stop complaining.
+
+Fri Oct 7 18:22:40 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Any_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
+
+ *Hopefully* fix compile problem on Windows.
+
+Fri Oct 7 18:25:11 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/IDD_Handler.cpp
+ * tools/Config_Handlers/MDD_Handler.cpp
+
+ Fix runtime error.
+
+Fri Oct 7 16:18:40 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h
+
+ Fix for a compile problem.
+
+Fri Oct 7 14:25:09 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DataType_Handler.h
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.mpc
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h
+ * tools/Config_Handlers/Any_Handler.cpp
+
+ Add support for using Dynamic Any. This will evolve in the coming
+ weeks into more complete support for complex types.
+
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/ADD_Handler.h
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/CCD_Handler.cpp
+ * tools/Config_Handlers/CCD_Handler.h
+ * tools/Config_Handlers/CEPE_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.h
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/DP_PCD_Handler.cpp
+ * tools/Config_Handlers/DP_PCD_Handler.h
+ * tools/Config_Handlers/ERE_Handler.cpp
+ * tools/Config_Handlers/ERE_Handler.h
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/IDD_Handler.h
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/MDD_Handler.h
+ * tools/Config_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/PSPE_Handler.cpp
+ * tools/Config_Handlers/PSPE_Handler.h
+
+ Optimization made possible by improvements in XSC.
+
+Fri Oct 7 14:20:36 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added more debug statements.
+
+Fri Oct 7 19:14:29 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Updated CIDL compiler section with instructions for building
+ the CIDL compiler using MPC.
+
+Fri Oct 7 18:46:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.{h,inl}:
+ Removed inl file, it is empty
+
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.inl:
+ Removed, empty
+
+Thu Oct 6 16:52:21 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added more debug statements and comments.
+
+Thu Oct 6 16:11:56 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Added more debug statements and also comments in the code.
+
+Thu Oct 6 15:32:41 CDT 2005 Stoyan Paunov spaunov@isis.vanderbilt.edu
+
+ * DAnCE/spec_RepositoryManager/PC_Updater.cpp
+ * DAnCE/spec_RepositoryManager/PC_Updater.h
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.cpp
+ * DAnCE/spec_RepositoryManager/PC_Updater_T.h
+
+ Added these files which implement a PackageConfiguration visitor.
+ The visitor helps deal with the internal complexity of the PackageConfiguration
+ and helps preseve my sanity ;)
+
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h
+
+ Some more code. With this the package distribution part of the RM
+ is ready. I still need to clean up a few details. This is coming soon.
+
+
+Thu Oct 6 15:05:30 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+
+ Added debug statements and comments.
+
+Thu Oct 6 14:26:31 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ * DAnCE/Plan_Launcher/DAM_Map.cpp:
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ * ciao/Container_Impl.cpp:
+ * ciao/NodeApplication_Impl.cpp:
+ * ciao/Servant_Activator.cpp:
+
+ Fixed the debug statements to look for critical levels
+ no more than 9.
+
+Thu Oct 6 14:00:16 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Impl.cpp:
+
+ Added debug messages and comments.
+
+Thu Oct 6 12:30:40 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * ciao/NodeApplication_Impl.cpp:
+
+ Added debug messages and comments.
+
+Thu Oct 6 08:00:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ Fixed compile problems
+
+Wed Oct 5 17:42:24 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Any_Handler.cpp
+
+ Part of previous commit.
+
+Wed Oct 5 17:07:07 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/cdd.xsd
+
+ Moved recursive Domain data into cdd.xsd. This will hopefully
+ lessen the time required to compile.
+
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/DataType_Handler.cpp
+
+ Fixed some potential run-time bugs in Borland. Style
+ corrections.
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.cpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.cpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.cpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.cpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/iad.cpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.cpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/test.cdp
+ * tools/Config_Handlers/toplevel.cpp
+ * tools/Config_Handlers/toplevel.hpp
+
+ Regerated with new version of XSC. Major changes:
+ * Now only one accessor and one mutator per document element
+ * Changes in schema above.
+
+Wed Oct 5 14:44:31 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+
+ Added some debug statements and some optimization choices.
+
+Tue Oct 4 14:08:24 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/unused_elements.xsd
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+
+ Updated to include domain information (ie, bridge, interconnect).
+
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.h
+
+ Cosmetic changes.
+
+Mon Oct 3 14:27:39 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html
+
+ Updated install documentation to reflect the restructuring.
+
+Mon Oct 3 12:48:26 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Commented out some debugging information.
+
+Mon Oct 3 15:44:15 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/Purify.html:
+
+ Updated doc file with installation info and more info about
+ Purifying a spawned child process.
+
+Mon Oct 3 10:14:19 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Corrected a bug in parameter checking.
+
+ * DAnCE/NodeManager/Node_Manager.cpp
+
+ Added documentation for the -d command line options.
+
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.h
+
+ New functionality in the Config_Handlers.
+
+Mon Oct 3 10:00:08 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * bin/valgrind_nodedaemon.py
+
+ Script to help launch nodemanager/nodeapplication under Valgrind.
+
+Mon Oct 3 000:31:09 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/Purify.html:
+
+ New file, documenting the use of Purify with CIAO and DAnCE.
+
+Sun Oct 2 22:24:15 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp:
+
+ Added include of RT-CCM/CIAOServerResources.hpp.
+
+ * tools/Config_Handlers/DP_Handler.cpp:
+
+ Added export macros to friend function declarations.
+
+Sat Oct 1 15:38:23 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/test.cpp
+
+ Corrected the config handler test to properly test the handlers.
+
+ * tools/Config_Handlers/PSPE_Handler.cpp
+
+ Fixed a run-time bug that was causing corrupted plans in Borland
+ builds.
+
+Friday Sep 30 15:12:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc
+ * RACE/Planner_Manager/Component/Planner_Manager.mpc
+ * tests/IDL3/ImpliedIDL/All/all.mpc
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Fixes for compile problems in Borland6
+
+Fri Sep 30 15:11:47 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Updated the NEWS file.
+
+Fri Sep 30 07:53:47 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.cpp
+
+ Should have been part of the previous commit.
+
+Thu Sep 29 18:11:25 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * ciao/Container_Impl.cpp
+ * ciao/NodeApplication_Impl.cpp
+ * ciao/Upgradeable_Context_Impl_T.cpp
+
+ Fuzz errors.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * tools/Config_Handlers/RT-CCM/Config_Handlers_Export.h
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.h
+ * tools/Config_Handlers/Utils/Config_Handlers_Export.h
+
+ Correction for a emulated exception error.
+
+Thu Sep 29 13:01:23 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/Version.h
+
+ Corrected the version number.
+
+Thu Sep 29 11:34:55 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/Swapping_Servant_Home_Impl_T.cpp
+
+ Fixed build problem on non-exception systems.
+
+Thu Sep 29 07:28:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp:
+ Fixed not used argument warning
+
+Thu Sep 29 06:44:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Utils/XML_Schema_Resolver.h:
+ Added missing pre.h
+
+Wed Sep 28 16:44:39 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * docs/schema/CIAOServerResources.xsd
+
+ Updated to support RT-CCM.
+
+Wed Sep 28 14:44:39 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ New version of the XSC including additional features needed for
+ RT-CCM.
+
+Wed Sep 28 08:24:32 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/Utils.mpc
+ * tools/Config_Handlers/Utils/XML_Helper.cpp
+ * tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp
+ * tools/Config_Handlers/Utils/XML_Schema_Resolver.h
+
+ Implemented a schema resolver so that the XML parser till grab the
+ schemata from $CIAO_ROOT/docs/schema.
+
+ * docs/tutorials/Quoter/Simple/descriptors/Deployment.xsd
+ * docs/tutorials/Quoter/Simple/descriptors/Modified_Deployment.xsd
+ * examples/BasicSP/descriptors/Deployment.xsd
+ * examples/Display/descriptors/Deployment.xsd
+ * examples/Display/descriptors/Modified_Deployment.xsd
+ * examples/Hello/descriptors/Deployment.xsd
+ * examples/Hello/descriptors/Modified_Deployment.xsd
+ * examples/Hello/descriptors/XMI.xsd
+ * examples/Hello/descriptors/Deployment.xsd
+ * examples/Hello/descriptors/Modified_Deployment.xsd
+ * examples/Hello/descriptors/XMI.xsd
+
+ Removed obsolete schemata.
+
+ * examples/Display/descriptors/flattened_deploymentplan.cdp
+ * examples/Hello/descriptors/flattened_deploymentplan.cdp
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
+ * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp
+
+ Migrated these deployment plans to use Deployment.xsd and friends,
+ instead of Modified_Deployment.xsd.
+
+ * NEWS
+
+ Updated the NEWS to include this feature.
+
+Tue Sep 27 13:16:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+ * DAnCE/NodeApplication/NodeApplication.mpc
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/Old_Config_Handlers/Config_Handlers.mpc
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/RTNodeApplication/RTNodeApplication.mpc
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc
+ * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
+ * RACE/Output_Adapters/Base/Output_Adapter.mpc
+ * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc
+ * ciao/CCM_Core.mpc
+ * examples/BasicSP/BasicSP.mpc
+
+ Fixed a large number of deficiencies in our build structure.
+ More changes to come later.
+
+Tue Sep 27 11:10:37 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Updated the news file.
+
+Tue Sep 27 10:51:20 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl
+
+ Updated this script to bring it in line with modern CIAO. This
+ includes:
+
+ - Base projects are now the _dnc variants
+ - Export files are now automatically generated.
+
+Tue Sep 27 14:26:44 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Const.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Const.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/CIDL/Parser.cpp:
+
+ Implemented first part of the const expression support. This
+ includes parser rules, semantic graph types and semantic
+ actions. Traversal types are still to be implemented.
+
+Tue Sep 27 06:42:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Fixed compile problem
+
+ * tools/Config_Handlers/XMLSchema/TypeInfo.tpp:
+ Removed using std::make_pair, this causes a crash of the BCB6
+ compiler. It doesn't seem to cause issues with CBX, but it
+ seems the code wasn't really needed and now BCB6 is also happy
+
+Mon Sep 26 11:06:40 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+
+ Updates for compile problems in Borland.
+
+Mon Sep 26 11:06:40 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Cleared up some scoreboard errors.
+
+Sat Sep 24 20:44:20 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Fixed linking errors.
+
+Sat Sep 24 08:40:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc:
+ Added Id tag
+
+Sat Sep 24 02:37:20 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * ciao/Deployment.idl
+ * ciao/Deployment_Core.idl
+ * ciao/ServerResources.idl
+
+ Enhanced to support RT-CCM feature.
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+
+ Refactor the NodeApplicationManager to populate the correct
+ node level deployment plan info, while taking into account
+ of the RT-CCM feature.
+
+ * ciao/NodeApplication_Impl.cpp
+ * ciao/NodeApplication_Impl.h
+
+ Modified to accomodate the change in IDL files.
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp
+
+ Fixed these tests to make them run with the modified IDL
+ files.
+
+ * DAnCE/examples/Hello/descriptors/rt-config-example.csr
+ * DAnCE/examples/Hello/descriptors/rt-config-example.cdp
+
+ An example descriptor files to describe server resource,
+ and associate server resources and policy set defs with
+ the deployment plan.
+
+ NOTE: All above code are tested working fine with the existing
+ examples.
+
+Fri Sep 23 10:05:18 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ fixes for build problems.
+
+Thu Sep 22 16:21:12 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Added error report message from the tool.
+
+ * ciao/Container_Base.cpp
+
+ Cosmetic change.
+
+Thu Sep 22 14:45:32 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/STD_CID_Handler.cpp
+ * tools/Config_Handlers/STD_CID_Handler.h
+ * tools/Config_Handlers/STD_CPD_Handler.cpp
+ * tools/Config_Handlers/STD_CPD_Handler.h
+ * tools/Config_Handlers/STD_PCD_Handler.cpp
+ * tools/Config_Handlers/STD_PCD_Handler.h
+ * tools/Config_Handlers/STD_PC_Intf.cpp
+ * tools/Config_Handlers/XML_File_Intf.cpp
+ * tools/Config_Handlers/RT-CCM/SRD_Handler.h
+ * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
+
+ Made these files consistent with the new Utils directory.
+
+ * tools/Config_Handlers/Utils/Utils.mpc
+ * tools/Config_Handlers/Utils/XML_Error_Handler.cpp
+ * tools/Config_Handlers/Utils/XML_Error_Handler.h
+ * tools/Config_Handlers/Utils/XML_Helper.cpp
+ * tools/Config_Handlers/Utils/XML_Helper.h
+ * tools/Config_Handlers/Utils/XercesString.cpp
+ * tools/Config_Handlers/Utils/XercesString.h
+
+ Moved common XML utilities to a separate directory.
+
+Thu Sep 22 13:21:12 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * ciao/CCM_Core.mpc
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
+
+ Put the ServerResources.idl into Deployment_stub project. Modified
+ other MPC project files to reflect this change.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Pass the infoProperty which contains the entire server resource
+ definitions to each individual child deployment plans.
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+
+ NodeManager now validates the correctness of the individual local
+ dpeloyment plan. In particular, it tries to verify that all the
+ component instances within this child deployment plan have the same
+ "server_resource_id" assigned.
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp
+
+ Added a NodeApplication test case, where multiple components could
+ be installed one-by-one through a serious of "install" invocations.
+
+ * examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
+
+ Fixed a typo.
+
+
+
+Thu Sep 22 12:26:45 CDT 2005 Stoyan spaunov@isis.vanderbilt.edu
+
+ * DAnCE/spec_RepositoryManager/
+ * DAnCE/new_RepositoryManager/
+
+ Added the former, removed the latter.
+
+
+Thu Sep 22 10:50:45 CDT 2005 Stoyan spaunov@isis.vanderbilt.edu
+
+
+ * DAnCE/spec_RepositoryManager/HTTP_Client.cpp
+ * DAnCE/spec_RepositoryManager/HTTP_Client.h
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.cpp
+ * DAnCE/spec_RepositoryManager/HTTP_Handler.h
+ * DAnCE/spec_RepositoryManager/Options.cpp
+ * DAnCE/spec_RepositoryManager/Options.h
+ * DAnCE/spec_RepositoryManager/README.txt
+ * DAnCE/spec_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/spec_RepositoryManager/RepositoryManager.idl
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/spec_RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/spec_RepositoryManager/RMadmin.cpp
+ * DAnCE/spec_RepositoryManager/RM_Helper.cpp
+ * DAnCE/spec_RepositoryManager/RM_Helper.h
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.mpc
+ * DAnCE/spec_RepositoryManager/spec_RepositoryManager.ncb
+ * DAnCE/spec_RepositoryManager/URL_Parser.cpp
+ * DAnCE/spec_RepositoryManager/URL_Parser.h
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/spec_RepositoryManager/ZIP_Wrapper.h
+
+
+ Checked in these file and cleaned up *some* of the underlying mess due to previous
+ mix-ups. Many of the files are new. Some are newer versions of older files.
+ Previously there were 2 RM directories spec_RepositoryManager and
+ new_RepositoryManager. Someone had removed the spec* verion and checked in the
+ wrong files in the new* version (which used to be a non-spec compilent impl).
+ Apparently on top of that the two directories have been linked somehow! I will
+ check on what the reason for this is later.
+
+
+Thu Sep 22 13:15:28 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+
+ Fixed typo.
+
+Wed Sep 21 15:32:38 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication.cpp
+ * DAnCE/RTNodeApplication/NodeApplication_Task.cpp
+ * DAnCE/RepositoryManager/Repository_Manager.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp
+ * ciao/Container_Base.cpp
+ * ciao/Container_Impl.cpp
+ * ciao/Servant_Activator.cpp
+ * ciao/Servant_Impl_T.cpp
+ * ciao/Swapping_Container.cpp
+ * ciao/Swapping_Servant_Home_Impl_T.cpp
+ * ciao/Upgradeable_Context_Impl_T.cpp
+ * docs/templates/CIAO_Glue_Session_Template.cpp
+ * examples/Hello/Sender/Sender_exec.cpp
+ * examples/Swapping/Receiver/Receiver_exec.cpp
+ * examples/Swapping/Sender/Sender_exec.cpp
+ * examples/Swapping/Sender/Sender_exec_1.cpp
+ * examples/Swapping/Sender/Sender_exec_2.cpp
+
+ Fixed numerous emulated exception errors.
+
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h
+
+ removed obsolete EM implementation.
+
+Wed Sep 21 13:34:28 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/RT-CCM/test.cpp
+
+ Modified so the output XML file is based on the XSC dom document
+ instead from the input file directly.
+
+Tue Sep 20 21:58:23 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/IDL3/ImpliedIDL/All/convert.idl:
+
+ Modified valuetype declartion used as a primary key to
+ conform to the CCM spec section 61.7.2.1 listing
+ constraints on primary key types.
+
+Tue Sep 20 02:25:34 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Quick fix for a build problem on Windows. A better solution
+ will follow when I check in my CIAO build system revamp.
+
+Tue Sep 20 10:19:46 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/test.cdp
+
+ A test deployment plan file that contains odd constructs.
+ Used for testing.
+
+Tue Sep 20 10:07:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc
+
+ Added a missing library.
+
+Tue Sep 20 09:50:28 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Modified to kill all NodeApplication processes when the deployment fails.
+
+Tue Sep 20 09:35:28 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Added a missing library.
+
+Mon Sep 19 16:29:57 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ADD_Handler.cpp
+ * Common.h
+ * IDD_Handler.cpp
+ * IDD_Handler.h
+ * IDREF_Base.cpp
+ * IDREF_Base.h
+ * IRDD_Handler.cpp
+ * IRDD_Handler.h
+ * MDD_Handler.cpp
+ * PSPE_Handler.cpp
+ * STD_CID_Handler.cpp
+ * XML_Error_Handler.cpp
+
+ Added some improved error handling/reporting. Much more to come.
+
+ * test.cpp
+ * RT-CCM/RT-CCM-Handlers.mpc
+ * RT-CCM/SRD_Handler.cpp
+ * RT-CCM/SRD_Handler.h
+ * Config_Handlers.mpc
+ * DP_Handler.cpp
+
+ Added hooks for parsing ServerResources document into a deployment
+ plan.
+
+ This is activated by adding an InfoProperty with name
+ "CIAOServerResources" with a value of a valid CSR file.
+
+ Also enabled parsing of deployRequirements and infoProperties.
+
+Mon Sep 19 10:55:05 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Input_Adapters/Base/Input_Adapter.mpc
+ * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
+ * RACE/Output_Adapters/Base/Output_Adapter.mpc
+ * RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc
+ * RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc
+ * RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc
+ * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc
+ * RACE/Planner_Manager/Component/Planner_Manager.mpc
+ * RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc
+ * RACE/Planners/Base/Planner.mpc
+ * RACE/Planners/Interface/Planner_Interface.mpc
+ * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc
+ * RACE/common/RACE_common.mpc
+ * tools/Config_Handlers/RT-CCM/CLA_Handler.h
+ * tools/Config_Handlers/RT-CCM/OC_Handler.cpp
+ * tools/Config_Handlers/RT-CCM/OR_Handler.cpp
+ * tools/Config_Handlers/RT-CCM/OR_Handler.h
+
+ Misc fuzz fixes.
+
+Fri Sep 16 09:54:44 2005 William Otte <wotte@william-ottes-powerbook-g4-15.local>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+
+ Emulated exception fixes.
+
+Thu Sep 15 07:29:03 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * TAO/CIAO/examples/Hello/descriptors/NodeManagerMap.dat: Make sure
+ there's a newline at the end of this file. Thanks to Zachi
+ Klopman <zklopman@gmail.com> for reporting this.
+
+Thu Sep 15 11:20:20 2005 CSET William Otte <wotte@dre.vanderbilt.edu>
+
+
+ * ciao/Container_Base.cpp
+
+ Fix for compile error on platforms with emulated exceptions.
+
+Wed Sep 14 13:25:00 CEST 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
+
+ Fix for a library ordering problem.
+
+Wed Sep 14 11:18:42 2005 CEST William Otte <wotte@william-ottes-powerbook-g4-15.local>
+
+ * tools/Config_Handlers/CIAOServerResources.cpp
+ * tools/Config_Handlers/CIAOServerResources.hpp
+
+ Removed these from the repo to avoid confusion.
+
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Ported patches from:
+ Tue Sep 13 17:18:12 CEST 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ which were made against the wrong file. Thanks to Gan Deng for
+ pointing this out.
+
+Wed Sep 14 13:28:14 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_NodeDaemons.pl
+
+ Modified the relevant path due to the recent CIAO directory
+ reorganization.
+
+ * examples/Hello/Sender/Sender.idl
+ * examples/Hello/Sender_exec.cpp
+ * examples/Hello/starter.cpp
+
+ Added test for "readonly" attribute.
+ Fixed a bug of setting attribute through command line options
+ through the "starter" executable. Also, make the default ior
+ file name to be "Sender.ior" to make it consistent with the
+ output generated by DAnCE. Thanks Zacki
+ <zklopman at gmail dot com> for reporting these.
+
+ * examples/Hello/step-by-step.html
+
+ Updated the documentation to run the example.
+
+Tue Sep 13 17:18:12 CEST 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAOServerResources.hpp
+
+ Fixes for compile errors in:
+ . Especially strict C++ compilers
+ . Windows VC71 (hopefully)
+
+Tue Sep 13 17:05:31 2005 CEST William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/NodeManager/Node_Manager.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ * ciao/Container_Base.cpp
+ * ciao/NodeApplication_Impl.cpp
+
+ Folding in some of the error reporting work that I have been
+ working on for the past couple weeks. Most common deployment
+ errors are now reported through the plan_launcher.
+
+Tue Sep 13 16:55:15 CEST 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/IDD_Handler.cpp
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/PSPE_Handler.cpp
+ * tools/Config_Handlers/STD_CID_Handler.cpp
+
+ Fixes for compile errors on both:
+ . 64 bit platforms
+ . GCC4
+
+Tue Sep 13 16:01:35 CEST 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/XMLSchema/Traversal.hpp
+ * tools/Config_Handlers/XMLSchema/TypeInfo.hpp
+ * tools/Config_Handlers/XMLSchema/Types.hpp
+ * tools/Config_Handlers/XMLSchema/Writer.hpp
+ * tools/Config_Handlers/XSCRT/Elements.hpp
+ * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp
+ * tools/Config_Handlers/XSCRT/Parser.hpp
+ * tools/Config_Handlers/XSCRT/Traversal.hpp
+ * tools/Config_Handlers/XSCRT/Writer.hpp
+ * tools/Config_Handlers/XSCRT/XML.hpp
+ * tools/Config_Handlers/XSCRT/XMLSchema.hpp
+
+ Rolled back Stoyan's changes from the previous commit. The proper
+ fix for this problem would be to update the include paths in the
+ affected MPC files, which has the virtue of not breaking
+ builds on platforms with case-sensitive filesystems.
+
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc
+
+ Updated the include path to include the new config handlers directory.
+
+Mon Sep 12 17:34:47 CDT 2005 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * tools/Config_Handlers/XMLSchema/Traversal.hpp
+ * tools/Config_Handlers/XMLSchema/TypeInfo.hpp
+ * tools/Config_Handlers/XMLSchema/Types.hpp
+ * tools/Config_Handlers/XMLSchema/Writer.hpp
+ * tools/Config_Handlers/XSCRT/Elements.hpp
+ * tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp
+ * tools/Config_Handlers/XSCRT/Parser.hpp
+ * tools/Config_Handlers/XSCRT/Traversal.hpp
+ * tools/Config_Handlers/XSCRT/Writer.hpp
+ * tools/Config_Handlers/XSCRT/XML.hpp
+ * tools/Config_Handlers/XSCRT/XMLSchema.hpp
+
+ Fixed a number of problems related to Will's changes. The XSC_Config_Handler_Tests
+ project was not compiling. I had the same problem in RepositoryManager. Will had
+ changed the directory structure, but did not update any of the include paths.
+ Needless to say there were like 30-40 of those in the XSCRT and XMLSchema directories
+
+Fri Sep 9 12:35:20 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/STD_IAD_Handler.cpp
+ * tools/Config_Handlers/STD_PCD_Handler.cpp
+ * tools/Config_Handlers/STD_PC_Intf.cpp
+
+ Changed to comform with new refactoring.
+
+Fri Sep 9 12:32:14 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/CCM_Core.mpc
+ * ciao/Container_Base.cpp
+ * ciao/Deployment.idl
+ * ciao/Deployment_Core.idl
+ * ciao/Deployment_Data.idl
+ * ciao/Packaging_Data.idl
+
+ Refactoring to support cidl compilation of deployment structures.
+ This refactoring should solve compilation errors in the config handlers.
+
+Wed Sep 7 16:31:12 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Removed generation of export macro in the typedef of the
+ template class instantiation that defines a facet servant.
+ Thanks to Ossama Othman <ossama@dre.vanderbilt.edu> for
+ pointing out that typedefs need not be exported.
+
+Tue Sep 6 11:39:15 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * ciao/Deployment_Data.idl
+
+ Commented out IDL that is unsupported by CIDLC.
+
+ * RACE
+
+ Added IDL for RACE.
+
+Tue Sep 6 09:58:12 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl
+
+ Modified the script to fix the absolute path to the naming service
+ with a relative path.
+
+Fri Sep 2 17:38:31 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * performance-tests/Protocols/Controller/Controller.mpc
+ * performance-tests/Protocols/Receiver/Receiver.mpc
+ * performance-tests/Protocols/Sender/Sender.mpc
+ * performance-tests/Protocols/common/Protocols.mpc
+ * tests/CIDL/CodeGen/CodeGen.mpc
+
+ Migrated to modern CIAO base projects.
+
+Fri Sep 2 16:41:08 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/Benchmark.mpc
+ * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
+
+ Migrated to modern CIAO projects.
+
+Fri Sep 2 15:10:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/tutorial
+
+ Removed the obsolete hello tutorial.
+
+Fri Sep 2 15:04:00 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * tests/tests.mwc
+ * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc
+ * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc
+ * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc
+ * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc
+ * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc
+ * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc
+ * tests/IDL3/Events/Abstract/Abstract.mpc
+ * tests/IDL3/Events/Regular/Regular.mpc
+ * tests/IDL3/Homes/Attributes/HomeAttributes.mpc
+ * tests/IDL3/Homes/Basic/Basic.mpc
+ * tests/IDL3/Homes/Factory/Factory.mpc
+ * tests/IDL3/Homes/Finder/Finder.mpc
+ * tests/IDL3/Homes/Inheritance/Inheritance.mpc
+ * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc
+ * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc
+ * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc
+ * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc
+ * tests/IDL3/ImpliedIDL/Events/Events.mpc
+ * tests/IDL3/ImpliedIDL/Homes/Homes.mpc
+ * tests/IDL3/Lookup/lookup_test.mpc
+
+ Updated to use dnc ciao base project.
+
+ * tests/RTCCM
+
+ Removed this test.
+
+Thu Sep 1 10:20:48 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ CIAO Reorganization. Plese see tag before_ciao_reorg
+ to obtain the old version.
+
+Wed Aug 31 15:16:23 2005 William Otte <wotte@dre.vanderbilt.edu>
+ * DAnCE/Config_Handlers/RT-CCM/CB_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/PM_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/TP_Handler.cpp
+
+ Fixes to satisfy a tempramental Borland compiler.
+
+Wed Aug 31 13:28:46 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/ADD_Handler.cpp
+ * DAnCE/Config_Handlers/ADD_Handler.h
+ * DAnCE/Config_Handlers/IDD_Handler.cpp
+ * DAnCE/Config_Handlers/IDD_Handler.h
+ * DAnCE/Config_Handlers/IDREF_Base.cpp
+ * DAnCE/Config_Handlers/IDREF_Base.h
+ * DAnCE/Config_Handlers/MDD_Handler.cpp
+ * DAnCE/Config_Handlers/MDD_Handler.h
+ * DAnCE/Config_Handlers/STD_CID_Handler.cpp
+ * DAnCE/Config_Handlers/STD_CID_Handler.h
+
+ Simple refactoring to make the IDREF interface more generic.
+
+ * DAnCE/Config_Handlers/XML_Helper.cpp
+ * DAnCE/Config_Handlers/XML_Helper.h
+
+ Made empty document creation more generic.
+
+ * DAnCE/Config_Handlers/RT-CCM/CB_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/CB_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/CIAOServerResources.cpp
+ * DAnCE/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+ * DAnCE/Config_Handlers/RT-CCM/CLA_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/CLA_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/OC_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/OC_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/OR_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/OR_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/PM_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/PM_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/PS_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/PS_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
+ * DAnCE/Config_Handlers/RT-CCM/SRD_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/SRD_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/TPL_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/TP_Handler.cpp
+ * DAnCE/Config_Handlers/RT-CCM/TP_Handler.h
+ * DAnCE/Config_Handlers/RT-CCM/input.csr
+ * DAnCE/Config_Handlers/RT-CCM/test.cpp
+
+ The new RT-CCM handlers. These have yet to be integrated into the
+ main config_handler path.
+
+ * DAnCE/ciao/CCM_Core.mpc
+ * DAnCE/ciao/ServerResources.idl
+
+ Updates to the support the RT-CCM Handlers.
+
+ * docs/schema/CIAOServerResources.xsd
+
+ Corrected a few oversights.
+
+Wed Aug 31 09:49:28 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp
+
+ Workaround for a buggy Borland compiler.
+
+Tue Aug 30 14:33:08 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+
+ Slight handcrafting to remove commas from the end of enumerator lists.
+
+Tue Aug 30 11:59:14 CDT 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/IRDD_Handler.h
+ * DAnCE/Config_Handlers/PCD_Handler.h
+
+ Fixed a class/struct mismatch.
+
+Tue Aug 30 11:51:32 CDT 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+ * DAnCE/Config_Handlers/CIAOServerResources.cpp
+ * DAnCE/Config_Handlers/CIAOServerResources.hpp
+ * DAnCE/Config_Handlers/Deployment.cpp
+ * DAnCE/Config_Handlers/Deployment.hpp
+ * DAnCE/Config_Handlers/ccd.cpp
+ * DAnCE/Config_Handlers/ccd.hpp
+ * DAnCE/Config_Handlers/cdd.cpp
+ * DAnCE/Config_Handlers/cdd.hpp
+ * DAnCE/Config_Handlers/cdp.cpp
+ * DAnCE/Config_Handlers/cdp.hpp
+ * DAnCE/Config_Handlers/cid.cpp
+ * DAnCE/Config_Handlers/cid.hpp
+ * DAnCE/Config_Handlers/cpd.cpp
+ * DAnCE/Config_Handlers/cpd.hpp
+ * DAnCE/Config_Handlers/iad.cpp
+ * DAnCE/Config_Handlers/iad.hpp
+ * DAnCE/Config_Handlers/pcd.cpp
+ * DAnCE/Config_Handlers/pcd.hpp
+ * DAnCE/Config_Handlers/toplevel.cpp
+ * DAnCE/Config_Handlers/toplevel.hpp
+
+ Fixes a large number of compiler warnings in Borland.
+
+Thu Aug 25 15:26:25 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/ciao/ServerResources.idl: Added the missing <stacksize>
+ attribute to ORS_ThreadpoolWithLanes struct. Thanks to Will
+ Otte for catching this.
+
+Wed Aug 24 20:41:59 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Removed commented-out code.
+
+Tue Aug 23 20:09:59 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/DT_Handler.h:
+ * DAnCE/RTNodeApplication/RTServer_Impl.h:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Context_Impl_Base.h:
+ * DAnCE/ciao/NodeApplication_Impl.h:
+
+ Reordered include directives to make sure all necessary
+ non-dependent names are parsed before the templates that use
+ them. Addresses g++ 3.4.x or better compile-time errors.
+
+Tue Aug 23 19:29:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DeploymentManager/DeploymentManager.mpc:
+ Add dummy_label to all projects, this don't build, this is
+ the fast way to get the scoreboard green. Already one project
+ had this in the file.
+
+Mon Aug 22 10:59:18 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DeploymentManager/DeploymentManager.cidl
+ * DAnCE/DeploymentManager/DeploymentManager.idl
+ * DAnCE/DeploymentManager/DeploymentManager.mpc
+ * DAnCE/DeploymentManager/DeploymentManager_Impl.cpp
+ * DAnCE/DeploymentManager/DeploymentManager_Impl.h
+ * DAnCE/DeploymentManager/DeploymentManager_exec_export.h
+ * DAnCE/DeploymentManager/DeploymentManager_stub_export.h
+ * DAnCE/DeploymentManager/DeploymentManager_svnt_export.h
+
+ Preliminary skeleton for the DeploymentManager.
+
+Fri Aug 19 07:56:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Config_Handlers/DataType_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/DT_Handler.cpp:
+ * DAnCE/ciao/ComponentsC.h:
+ * ciao/ComponentsC.h:
+ Updated for AnyTypeCode refactoring
+
+Tue Aug 16 15:16:10 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * docs/schema/CIAOServerResources.xsd: Changed to define most of
+ the RT policy details with "element"s instead of "attribute"s
+ since "attribute"s can be optional. Thanks to Will Otte for
+ pointing this out.
+
+Tue Aug 16 09:46:45 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+
+ Moved some changes in from the branch to correct errors from:
+ Mon Aug 15 12:03:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+Mon Aug 15 12:03:43 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/ADD_Handler.cpp
+ * DAnCE/Config_Handlers/ADD_Handler.h
+ * DAnCE/Config_Handlers/CCD_Handler.cpp
+ * DAnCE/Config_Handlers/CCD_Handler.h
+ * DAnCE/Config_Handlers/CRDD_Handler.h
+ * DAnCE/Config_Handlers/DP_Handler.cpp
+ * DAnCE/Config_Handlers/DP_Handler.h
+ * DAnCE/Config_Handlers/DP_PCD_Handler.cpp
+ * DAnCE/Config_Handlers/DP_PCD_Handler.h
+ * DAnCE/Config_Handlers/IDD_Handler.cpp
+ * DAnCE/Config_Handlers/IDD_Handler.h
+ * DAnCE/Config_Handlers/IDREF_Base.cpp
+ * DAnCE/Config_Handlers/ID_Handler.h
+ * DAnCE/Config_Handlers/IRDD_Handler.cpp
+ * DAnCE/Config_Handlers/MDD_Handler.cpp
+ * DAnCE/Config_Handlers/MDD_Handler.h
+ * DAnCE/Config_Handlers/PCD_Handler.cpp
+ * DAnCE/Config_Handlers/PCD_Handler.h
+ * DAnCE/Config_Handlers/PSPE_Handler.cpp
+ * DAnCE/Config_Handlers/Req_Handler.cpp
+ * DAnCE/Config_Handlers/XML_Helper.cpp
+ * DAnCE/Config_Handlers/XML_Helper.h
+ * DAnCE/Config_Handlers/XercesString.cpp
+ * DAnCE/Config_Handlers/XercesString.h
+ * DAnCE/Config_Handlers/test.cpp
+
+ Checked in support for IDL->XSC->XML mapping. Thanks to Lucas
+ Seibert <heynonynony at yahoo dot com> for completing this work.
+
+Mon Aug 15 00:01:01 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CIDLC/cidlc.cpp: Made ErrorHandler auto-detach itself
+ from the stream when it is destroyed. This fixes the
+ segmentation fault on Solaris in libstdc++ termination code.
+
+Wed Aug 10 09:39:41 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+ * DAnCE/Config_Handlers/CIAOServerResources.cpp
+ * DAnCE/Config_Handlers/CIAOServerResources.hpp
+ * DAnCE/Config_Handlers/Deployment.cpp
+ * DAnCE/Config_Handlers/Deployment.hpp
+ * DAnCE/Config_Handlers/ccd.cpp
+ * DAnCE/Config_Handlers/ccd.hpp
+ * DAnCE/Config_Handlers/cdd.cpp
+ * DAnCE/Config_Handlers/cdd.hpp
+ * DAnCE/Config_Handlers/cdp.cpp
+ * DAnCE/Config_Handlers/cdp.hpp
+ * DAnCE/Config_Handlers/cid.cpp
+ * DAnCE/Config_Handlers/cid.hpp
+ * DAnCE/Config_Handlers/cpd.cpp
+ * DAnCE/Config_Handlers/cpd.hpp
+ * DAnCE/Config_Handlers/iad.cpp
+ * DAnCE/Config_Handlers/iad.hpp
+ * DAnCE/Config_Handlers/pcd.cpp
+ * DAnCE/Config_Handlers/pcd.hpp
+ * DAnCE/Config_Handlers/toplevel.cpp
+ * DAnCE/Config_Handlers/toplevel.hpp
+
+ Regenerated with the latest CVS-head version of XSC. These support
+ a couple improvements that will aid in optimizing the config
+ handlers.
+
+Tue Aug 9 11:55:13 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * docs/imgs/component-basic.png
+ * docs/imgs/CCM.vsd
+
+ Updated CCM diagram to fix a interface naming error.
+
+
+Tue Aug 9 10:02:13 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * DAnCE/ComponentPackager/README.html: Improved the
+ documentation to point to the right directory for the Quoter
+ example. Thanks to Aldo Texier <aldo.texier@oktal.fr> for
+ reporting this.
+
+Tue Aug 9 13:11:04 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+
+ Updated dependencies to reflect the recent name change from
+ NodeDaemon_stub to NodeManager_stub.
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp:
+
+ Updated identifier names to match the change from NodeDaemon
+ to ModeManager.
+
+Mon Aug 08 22:02:43 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * docs/EnvVars.html
+ * docs/index.html
+ * docs/Trace.html
+ * docs/imgs/DAnCE-Dynamic.png
+ * docs/imgs/DAnCE-Dynamic.sxd
+
+ Beefed up the CIAO documentation page. These files are
+ checked in on behalf of Ming. Thanks Friedhelm Wolf
+ <Friedhelm.wolf at gmx.de> for contributing the DAnCE
+ interaction diagram.
+
+Mon Aug 8 18:50:36 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NAM_Map.h
+ * DAnCE/NodeManager/NodeManager.idl
+ * DAnCE/NodeManager/NodeManager.mpc
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.inl
+ * DAnCE/NodeManager/NodeManager_stub_export.h
+ * DAnCE/NodeManager/Node_Manager.cpp
+ * DAnCE/NodeManager/README
+ * DAnCE/RTNodeApplication/README
+
+ Changed all references to Node_Daemon to NodeManager to avoid
+ confusion, since these phrases are used interchangeably.
+
+ * DAnCE/NodeManager/NodeDaemon.idl
+ * DAnCE/NodeManager/NodeDaemon.mpc
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp
+ * DAnCE/NodeManager/NodeDaemon_Impl.h
+ * DAnCE/NodeManager/NodeDaemon_Impl.inl
+ * DAnCE/NodeManager/NodeDaemon_stub_export.h
+ * DAnCE/NodeManager/Node_Daemon.cpp
+
+ Removed these files to support the change above.
+
+ * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl
+ * DAnCE/examples/Display/descriptors/basicNodeDaemon.pl
+ * DAnCE/examples/Hello/step-by-step.html
+ * DAnCE/examples/Hello/descriptors/run_NodeDaemons.pl
+ * DAnCE/examples/Hello/descriptors/run_test.pl
+ * DAnCE/examples/Hello/descriptors/run_test_without_ns.pl
+ * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl
+ * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl
+
+ Updated these scripts to call NodeManager instead of NodeDaemon.
+
+Fri Aug 5 11:45:13 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/CIAOServerResources.cpp
+ * DAnCE/Config_Handlers/CIAOServerResources.hpp
+
+ XSC code generated from CIAOServerResources.xsd for RT-CCM
+ properties.
+
+ * docs/schema/CIAOServerResources.xsd
+
+ Fixed some namespace errors.
+
+Fri Aug 05 08:00:08 2005 Simon Massey <sma@prismtech.com>
+
+ * CIAO version 0.4.7 released.
+
+Wed Aug 3 12:34:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ Corrected order of the libraries to resolve static link
+ errors
+
+Tue Aug 2 08:36:40 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Possiible fix for borlan build problem.
+
+Mon Aug 01 16:01:43 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * ChangeLog
+
+ Fixed several incorrect checkin date
+
+Mon Aug 01 14:55:43 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/RepositoryManager_Impl.cpp
+
+ Fixed a C4715 warning under MSVC7.1
+
+Mon Aug 1 19:39:30 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+
+ Removed duplicate 'after' and 'libs' items, and added the
+ new export macro definition file (see below) to
+ Header_Files.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h:
+
+ Added export macro to class declaration and include of export
+ macro definitin file.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h:
+
+ New file to define the export macro for the Plan_Launcher_Impl
+ library.
+
+Sun Jul 31 21:56:43 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/Options.h
+
+ Improved documentation to meet the requirement of Doxygen
+
+Sun Jul 31 21:45:43 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+
+ Fixed C4101 warnings in MSVC
+
+Sun Jul 31 21:26:43 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+
+ Updated RMadmin.cpp to merge latest changes
+
+Fri Jul 29 15:02:43 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
+ * DAnCE/examples/Hello/descriptors/run_test_without_ns.pl
+
+ Added a flattened deployment plan and test script which
+ doesn't use naming service.
+
+ * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp
+
+ Documented the above another available test in the file.
+
+Fri Jul 29 09:30:43 2005 Nishanth Shanakran <nshankar@dre.vanderbilt.edu>
+
+ * NEWS:
+
+ Added a brief description about Resource Allocation and Control
+ Engine (RACE).
+
+Fri Jul 29 06:56:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc:
+ Fixed fuzz error
+
+Thu Jul 28 23:00:11 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/Options.cpp
+ * DAnCE/new_RepositoryManager/Options.h
+ * DAnCE/new_RepositoryManager/README.txt
+ * DAnCE/new_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/new_RepositoryManager/RepositoryManager.idl
+ * DAnCE/new_RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/new_RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.h
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc
+
+ Checked in the changes to new_RepositoryManager
+
+Fri Jul 29 03:52:11 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Made is such that Plan_Launcher_Impl library gets generated
+ and installed.
+
+Wed Jul 28 15:18:14 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * docs\schema\Modified_Deployment.xsd
+
+ Change the XML element order of IAD to conform to spec
+
+Wed Jul 27 19:20:14 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * NEWS
+
+ Added news about naming service integration.
+
+Wed Jul 27 07:40:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/cid.cpp:
+ * DAnCE/Config_Handlers/cpd.cpp:
+ * DAnCE/Config_Handlers/iad.cpp:
+ Explicitly initialise base class
+
+Wed Jul 27 07:35:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/STD_IAD_Handler.h:
+ Fixed fuzz error
+
+Tue Jul 26 21:22:45 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+
+ Added 'CIDL_' prefix to the scoped name of the exec impl class's
+ base class, in the impl class declaration inheritance list. This
+ file was overlooked when making similar changes to other exec
+ impl classes in CIAO tests and examples.
+
+Mon Jul 26 13:54:12 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * docs/schema/cid.xsd
+ * docs/schema/cpd.xsd
+ * docs/schema/iad.xsd
+ * docs/schema/Modified_Deployment.xsd
+
+ Added <xsd:attribute name="href"> for cid/cpd/iad(.xsd) and changed Modified_Deployment.xsd
+ accordingly.We will need href attribute in the repository manager process.
+
+ * DAnCE/Config_Handlers/iad.cpp
+ * DAnCE/Config_Handlers/iad.hpp
+ * DAnCE/Config_Handlers/cid.cpp
+ * DAnCE/Config_Handlers/cid.hpp
+ * DAnCE/Config_Handlers/cpd.cpp
+ * DAnCE/Config_Handlers/cpd.hpp
+
+ Regenerated xsc codes for updated schemas in CIAO/docs/schema/
+
+ * DAnCE/Config_Handlers/STD_CID_Handler.cpp
+ * DAnCE/Config_Handlers/STD_CID_Handler.h
+ * DAnCE/Config_Handlers/STD_CPD_Handler.cpp
+ * DAnCE/Config_Handlers/STD_CPD_Handler.h
+ * DAnCE/Config_Handlers/STD_IAD_Handler.cpp
+ * DAnCE/Config_Handlers/STD_IAD_Handler.h
+ * DAnCE/Config_Handlers/STD_PC_Intf.cpp
+ * DAnCE/Config_Handlers/STD_PC_Intf.h
+ * DAnCE/Config_Handlers/STD_PCD_Handler.cpp
+ * DAnCE/Config_Handlers/STD_PCD_Handler.h
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+
+ Added new handlers for mapping Config_Handlers::PackageConfiguration to Deployment:PackageConfiguration.
+ Updated Config_Handlers.mpc accordingly
+
+Tue Jul 26 12:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp:
+ Fixed vc71 warnings
+
+Tue Jul 26 10:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ Added some missing CORBA::string_dup calls, this fixes these
+ tests on Windows
+
+Tue Jul 26 07:32:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.{h,cpp}:
+ Fixed warning and use doxygen comment style
+
+Mon Jul 25 22:14:20 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/SizeTypeCalculator.cpp:
+
+ Fixed visitor to handle types declared inside the scope of
+ an interface, valuetype, or home. Thanks to Friedhelm Wolf
+ <Friedhelm.wolf@gmx.de> for reporting a CIDL compiler
+ problem with a struct declared inside an interface.
+
+Mon Jul 25 18:40:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ Corrected NodeApplication path
+
+Mon Jul 25 08:39:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+ Made these tests independent of setting of CIAO_ROOT
+
+Sun Jul 24 07:45:19 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp
+
+ Fixed an exception emulation warning in Debian_Full_Reactor
+ build.
+
+Sun Jul 24 07:40:19 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+
+ Enhanced error output information a little bit by
+ adding process ID and thread ID.
+
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Fixed exception emulation warnings in Debian_Full_Reactor
+ build.
+
+Sun Jul 24 01:19:21 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+
+ Fixed a bug (memory problem) in the plan_launcher which caused
+ the "tearing down" assembly failure.
+
+ * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp
+ * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp
+
+ Added a UUID tag to the flattened deployment plan.
+
+Sat Jul 23 23:11:21 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Minimum/Receiver/Receiver.mpc
+ * DAnCE/tests/Minimum/Sender/Sender.mpc
+
+ Modified shared library names to fix some linking erros
+ on build scoreboard.
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl
+
+ Fixed the script so naming service could be started
+ correctly.
+
+ * DAnCE/examples/Hello/step-by-step.html
+
+ Simple instruction about using naming service.
+
+Sat Jul 23 14:53:22 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Port_Activator.cpp:
+ * DAnCE/ciao/Port_Activator.h:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Added a method in Port_Activator to set the name of
+ port activator. The port activator is used to activate
+ the ports of the component.
+
+ Fixed a incorrect delete call in the update_port_activator
+ function in Servant_Activator.cpp. This will fix the core
+ dump in the CIAO tests.
+
+ Modified the calling sequence to deactivate ports when we
+ deactivate the component.
+
+Sat Jul 23 12:23:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ Added several missing ACE_TRY_CHECK macros.
+
+Mon Jul 18 22:31:12 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Fixed some compilation error about using NamingContextEx.
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl
+
+ Fixed this script so naming service will be started
+ explicitly. Thanks Simon McQueen <sm@prismtech.com>
+ for pointing the error.
+
+Mon Jul 18 22:31:12 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Impl.cpp
+ * DAnCE/ciao/Container_Impl.h
+ * DAnCE/ciao/CCM_Core.mpc
+ * DAnCE/ciao/NodeApplication_Impl.cpp
+
+ Added support for registering components with naming service.
+ A system deployer could config such capability through XML tag
+
+ * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp
+ * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp
+
+ Added a couple of examples for using naming service by adding
+ some <ConfigProperty> tag to the deployment plan descriptor.
+
+Fri Jul 15 23:50:12 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * NEWS:
+ Updated the NEWS file to include the result of our latest
+ discussion/plan about DAnCE.
+
+Fri Jul 15 10:02:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NAM_Map.h:
+ Fixed fuzz error
+
+Tue Jul 12 00:03:57 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * docs/tutorials/Quoter/Simple/README.html
+
+ Updated some directory information in this file since the quoter example has been
+ moved to new directory.
+
+Mon Jul 11 11:44:57 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * TAO/CIAO/DAnCE/examples/Quoter/README.html
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.cidl
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.cpp
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.idl
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker.mpc
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec.cpp
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_exec_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_stub_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Broker/Broker_svnt_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.cidl
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.cpp
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.idl
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor.mpc
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_exec_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_stub_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Distributor/Distributor_svnt_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base.idl
+ * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base.mpc
+ * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base_stub_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/Stock_Base/Stock_Base_svnt_export.h
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.ccd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.cid
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker.cpd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Exec.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Stub.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Broker_Svnt.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Deployment.xsd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.ccd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.cid
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor.cpd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Exec.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Stub.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Distributor_Svnt.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Domain.cdd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Libraries.iad
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cdp
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cid
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.cpd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.dat
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/Stock.pcd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/XMI.xsd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/package.tpd
+ * TAO/CIAO/DAnCE/examples/Quoter/descriptors/runNodeDaemons.pl
+ * TAO/CIAO/DAnCE/examples/Quoter/images/quoter.jpg
+
+ Removed Quoter example in DAnCE/examples/ directory to avoid duplicate. The orignal
+ example could be found in CIAO/docs/tutorials/Quoter/Simple.
+
+Fri Jul 8 17:42:57 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_svnt_export.h
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h
+ * docs/tutorials/Quoter/Simple/Broker/Broker.mpc
+ * docs/tutorials/Quoter/Simple/Broker/Broker.idl
+ * docs/tutorials/Quoter/Simple/Broker/Broker.cidl
+ * docs/tutorials/Quoter/Simple/Broker/Broker.cpp
+ * docs/tutorials/Quoter/Simple/Broker/Broker_exec.h
+ * docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp
+ * docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h
+ * docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h
+ * docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.idl
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h
+ * docs/tutorials/Quoter/Simple/descriptors/Broker.ccd
+ * docs/tutorials/Quoter/Simple/descriptors/Broker.cid
+ * docs/tutorials/Quoter/Simple/descriptors/Broker.cpd
+ * docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Deployment.xsd
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor.cid
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Domain.cdd
+ * docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp
+ * docs/tutorials/Quoter/Simple/descriptors/Libraries.iad
+ * docs/tutorials/Quoter/Simple/descriptors/Modified_Deployment.xsd
+ * docs/tutorials/Quoter/Simple/descriptors/package.tpd
+ * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl
+ * docs/tutorials/Quoter/Simple/descriptors/Stock.cdp
+ * docs/tutorials/Quoter/Simple/descriptors/Stock.cid
+ * docs/tutorials/Quoter/Simple/descriptors/Stock.cpd
+ * docs/tutorials/Quoter/Simple/descriptors/Stock.dat
+ * docs/tutorials/Quoter/Simple/descriptors/Stock.pcd
+ * docs/tutorials/Quoter/Simple/descriptors/XMI.xsd
+
+ Created a new directory tutorials to hold multiple tutorial examples, added quoter
+ to this directory as simple quoter example. Will add a multiple receptacle quoter
+ example soon.
+
+
+Fri Jul 8 17:13:57 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp
+
+ Updated the plan so that it includes the base libraries as artifact. This
+ will help ComponentPackager to wrap up everything in the archive.
+
+
+Fri Jul 8 15:49:57 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/ComponentPackager/Base_Packager.h
+ * DAnCE/ComponentPackager/ComponentPackager.mpc
+ * DAnCE/ComponentPackager/CPK_Packager.cpp
+ * DAnCE/ComponentPackager/Package.xsd
+ * DAnCE/ComponentPackager/pdl.cpp
+ * DAnCE/ComponentPackager/pdl.hpp
+ * DAnCE/ComponentPackager/PDL_Handler.cpp
+ * DAnCE/ComponentPackager/PDL_Handler.h
+ * DAnCE/ComponentPackager/README.html
+ * DAnCE/ComponentPackager/Sample.pdl
+
+ Updated ComponentPackager to support XSC, eliminating the coupling with
+ Old_Config_Handlers.Move the schema for .pdl file from Deployment.xsd to
+ Package.xsd so that it's independently helpful by itself.
+
+Fri Jul 8 09:43:57 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+
+ Fixed a compile error on Debian Core.
+
+Thu Jul 7 23:38:32 UTC 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * docs/index.html
+
+ Modofied this page a little bit to include our work in DAnCE.
+
+Wed Jul 6 17:21:58 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+
+ Fixed incorrect syntax in ACE_THROW macro.
+
+Tue Jul 5 11:16:44 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NAM_Map.h
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+
+ Fixed some misc fuzz errors.
+
+Tue Jul 5 16:01:39 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Small change to the checkin of
+
+ Mon Jul 4 22:50:17 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ to emit an error message when attempting to set a wstring
+ attribute from a CCM property value, since wstrings are
+ not yet supported for this activity.
+
+Mon Jul 4 22:50:17 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Created a new code emitter that knows which types CIAO
+ supports as component attribute types (basic types) and
+ which it does not (everything else). In the former case,
+ when DAnCE is assigning attribute values from XML properties -
+ in set_attributes () - it emits the usual code delegating
+ the assignment to the specific attribute mutator method
+ based on a string compare of the given attribute name to
+ the known attribute names of that component. In the latter
+ case, it emits an error message, stating that this particular
+ IDL kind is not supported by CIAO as a component attribute
+ type. Thanks to Sunil Rottoo <srottoo@airsage.com> for
+ pointing out that trying to set the value of an unsupported
+ component attribute type from a DnC property value in XML
+ caused a crash.
+
+Mon Jul 4 09:15:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.h:pp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/ciao/Container_Impl.h:
+ * DAnCE/ciao/Home_Servant_Impl_T.h:
+ * DAnCE/ciao/NodeApp_CB_Impl.h:
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ * DAnCE/ciao/Servant_Impl_T.h:
+ * DAnCE/ciao/StandardConfigurator_Impl.h:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h:
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h:
+ * ciao/ComponentInstallation_Impl.h:
+ * ciao/ComponentServer_Impl.h:
+ * ciao/Container_Impl.h:
+ * ciao/HomeRegistrar_i.h:
+ * ciao/Home_Servant_Impl_T.h:
+ * ciao/Servant_Impl_T.h:
+ * ciao/ServerActivator_Impl.h:
+ * ciao/StandardConfigurator_Impl.h:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h:
+ * performance-tests/Benchmark/LatencyTest.h:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.h:
+ * tools/Assembly_Deployer/Assembly_Impl.h:
+ * tools/Assembly_Deployer/Assembly_Service_Impl.h:
+ * tools/Daemon/Daemon_Impl.h:
+ * tools/Simple_Component_Server/Simple_Server_i.h:
+ All servants are reference counted by default, no need anymore to
+ derive the servant from RefCountServantBase
+
+Sat Jul 2 12:16:49 2005 Cassia Tatibana <cassia@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+
+ Added CIAO_TRACE messages.
+
+Fri Jul 1 08:42:27 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp
+
+ Fixed compile errors with emulated exceptions turned on.
+
+Thu Jun 30 23:34:40 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/tests/Minimum/Receiver/Receiver_exec.cpp:
+ * DAnCE/tests/Minimum/Receiver/Receiver_exec.h:
+ * DAnCE/tests/Minimum/Sender/Sender_exec.cpp:
+ * DAnCE/tests/Minimum/Sender/Sender_exec.h:
+
+ More overlooked changes to exec files corresponding to
+ CIDL compiler code generation changes of
+
+ Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Thu Jun 30 12:36:06 2005 William Otte <wotte@atl.lmco.com>
+
+ * DAnCE/Plan_Launcher/DAM_Map.cpp
+ * DAnCE/Plan_Launcher/DAM_Map.h
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Added DAM_Map to the Plan_Launcher directory, as make wouldn't
+ handle the relative reference properly.
+
+Thu Jun 30 09:29:24 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+ * DAnCE/new_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.h
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h
+
+ Fixed Doxygen documentation tags, fixed some indenting,
+ removed tabs.
+
+Thu Jun 30 09:59:17 2005 William Otte <wotte@atl.lmco.com>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+
+ Factored out the plan launcher capability into a shared library so
+ applications can use its functionality.
+
+Thu Jun 30 04:33:35 2005 ming xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/ComponentPackager/Base_Packager.h
+ * DAnCE/ComponentPackager/CPK_Packager.cpp
+ * DAnCE/ComponentPackager/CPK_Packager.h
+ * DAnCE/ComponentPackager/PDL_Handler.cpp
+ * DAnCE/ComponentPackager/PDL_Handler.h
+ * DAnCE/ComponentPackager/Base_Packager.cpp
+
+ Added a release operation for destructor of PDL_Handler;Changed the
+ definition of input parameter for CPK_Packager::createPackager to const
+ to indicate it can not be changed
+
+Thu Jun 30 00:37:35 EDT 2005 Stoyan Paunov <s.paunov@vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+ * DAnCE/new_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.h
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h
+
+ removed the "@file" comments which apparently confuse Doxygen.
+
+
+Wed Jun 29 17:00:57 2005 Cassia Tatibana <cassia@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+
+ Added CIAO_TRACE messages.
+
+Wed Jun 29 16:38:42 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/ComponentPackager/Base_Packager.h
+ * DAnCE/ComponentPackager/CPK_Packager.h
+ * DAnCE/ComponentPackager/CPK_Packager.h
+
+ Changed a couplfe of places to meet the Doxygen test and TChar test for
+ bin/fuzz.pl
+
+Wed Jun 29 16:28:52 2005 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeManager/NAM_Map.cpp
+ * DAnCE/NodeManager/NAM_Map.h
+ * DAnCE/NodeManager/NodeDaemon.mpc
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp
+ * DAnCE/NodeManager/NodeDaemon_Impl.h
+ * DAnCE/NodeManager/Node_Daemon.cpp
+ * DAnCE/ciao/Deployment.idl
+
+ Merged dance_multiple_assemblies to main. This merge
+ contains code necessary to be able to deploy multiple assemblies
+ into a single NodeManager.
+
+Wed Jun 29 18:09:11 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Added check for successful opening of target file, which prevents
+ a crash when the file open is unsuccessful, for example when
+ write permissions are denied in the directory. Thanks to Will
+ Otte <wotte@dre.vanderbilt.edu> for pointing out the problem.
+
+Tue Jun 28 08:55:12 EDT 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/ComponentPackager/Base_Packager.cpp
+ * DAnCE/ComponentPackager/Base_Packager.h
+ * DAnCE/ComponentPackager/CPK_Packager.cpp
+ * DAnCE/ComponentPackager/CPK_Packager.h
+ * DAnCE/ComponentPackager/ComponentPackager.mpc
+ * DAnCE/ComponentPackager/Component_Packager.cpp
+ * DAnCE/ComponentPackager/Modified_Deployment.xsd
+ * DAnCE/ComponentPackager/PDL_Handler.cpp
+ * DAnCE/ComponentPackager/PDL_Handler.h
+ * DAnCE/ComponentPackager/README.html
+ * DAnCE/ComponentPackager/Sample.pdl
+ * DAnCE/ComponentPackager/XercesString.cpp
+ * DAnCE/ComponentPackager/XercesString.h
+
+ Added the files implementing ComponentPackager, for details
+ please read README.html
+
+Tue Jun 28 01:03:12 EDT 2005 Stoyan Paunov <s.paunov@vanderbilt.edu>
+
+ * TAO/CIAO/DAnCE/new_RepositoryManager/RMadmin.cpp
+ * TAO/CIAO/DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * TAO/CIAO/DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp
+
+ removed the _O_* flags to ACE_OS::open ();
+
+Mon Jun 27 16:25:52 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender_exec.cpp:
+
+ Fixed cut-and-paste error.
+
+Mon Jun 27 07:04:01 2005 Chad Elliott <elliott_c@ociweb.com>
+
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc:
+ * DAnCE/new_RepositoryManager/README.txt:
+
+ Switch to using the existing zlib and zzip base projects.
+
+Sun Jun 26 23:53:23 EDT 2005 Stoyan Paunov <s.paunov@vanderbilt.edu>
+
+ * DAnCE/new_RepositoryManager/Modified_Deployment.xsd
+ * DAnCE/new_RepositoryManager/Options.cpp
+ * DAnCE/new_RepositoryManager/Options.h
+ * DAnCE/new_RepositoryManager/README.txt
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+ * DAnCE/new_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.h
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.idl
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h
+ * DAnCE/new_RepositoryManager/packages/inconsistent.cpk
+ * DAnCE/new_RepositoryManager/packages/package.cpk
+
+ Added these files to the head. The files are implementing the repository
+ manager.
+
+ * DAnCE/new_RepositoryManager/Modified_Deployment.xsd
+ needed for the retrievePlan function that retrieves the Deployment plan
+
+ * DAnCE/new_RepositoryManager/Options.cpp
+ * DAnCE/new_RepositoryManager/Options.h
+ options class for the RMadmin.cpp
+
+ * DAnCE/new_RepositoryManager/README.txt
+
+ * DAnCE/new_RepositoryManager/RMadmin.cpp
+ a sample client program. You can use it as an example on how to use the RM
+
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/new_RepositoryManager/ZIP_Wrapper.h
+ The ZIP Wrapper class that allows read access to ZIP packages and CCM packages
+ that have the cpk extension.
+
+ * DAnCE/new_RepositoryManager/RepositoryManager.cpp
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.idl
+ * DAnCE/new_RepositoryManager/new_RepositoryManager.mpc
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.cpp
+ * DAnCE/new_RepositoryManager/new_RepositoryManager_Impl.h
+ The Repository Manager implementation files
+
+ * DAnCE/new_RepositoryManager/packages/inconsistent.cpk
+ * DAnCE/new_RepositoryManager/packages/package.cpk
+ couple of sample packages that I created manually to test the RM.
+
+
+Fri Jun 24 14:36:02 2005 Cassia Tatibana <cassia@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CIAO_common.h:
+
+ Added definition for CIAO_TRACE.
+
+Fri Jun 24 14:21:31 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/tutorial/Hello/hello_exec.cpp:
+ * docs/tutorial/Hello/hello_exec.h:
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/Receiver/Receiver_exec.h:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/Sender_exec.h:
+ * performance-tests/Protocols/Receiver/Receiver_exec.cpp:
+ * performance-tests/Protocols/Receiver/Receiver_exec.h:
+ * performance-tests/Protocols/Sender/Sender_exec.cpp:
+ * performance-tests/Protocols/Sender/Sender_exec.h:
+ * tests/RTCCM/DiffServ/Receiver/Receiver_exec.cpp:
+ * tests/RTCCM/DiffServ/Receiver/Receiver_exec.h:
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.cpp:
+ * tests/RTCCM/DiffServ/Sender/Sender_exec.h:
+
+ More fixes to hand-written executor code to bring the file up
+ to date with the recent changes in generated code. These were
+ overlooked in
+
+ Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Wed Jun 22 23:20:04 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.h:
+ * DAnCE/examples/Display/RateGen/RateGen_exec.h:
+ * DAnCE/examples/Hello/Receiver/Receiver_exec.cpp:
+ * DAnCE/examples/Hello/Receiver/Receiver_exec.h:
+ * DAnCE/examples/Hello/Sender/Sender_exec.cpp:
+ * DAnCE/examples/Hello/Sender/Sender_exec.h:
+ * DAnCE/examples/Quoter/Broker/Broker_exec.cpp:
+ * DAnCE/examples/Quoter/Broker/Broker_exec.h:
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp:
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver_exec.cpp:
+ * DAnCE/examples/Swapping/Receiver/Receiver_exec.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.h:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp:
+ * DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h:
+ * docs/releasenotes/index.html:
+
+ Eliminated generation of the CIAO_GLUE_-prefixed namespace
+ and replaced it with a namespace constructed from the
+ composition local name and a CIDL_ prefix. Whereas the
+ previos namespace was always at global scope, the new one
+ will be generated inside namespaces mapped from IDL module
+ declarations, if the composition is declared inside any.
+ These changes were motivated by an example sent in by
+ Will Otte <wotte@dre.vanderbilt.edu>, where the composition
+ was declared inside several nested modules, and the generated
+ code would not compile. The new namespace encloses
+
+ - the component servant
+ - the home servant
+ - the facet servants, if any
+ - the executor interface in the executor IDL file
+ - optionally generated executor impl classes
+
+ Minor changes were required to existing executor impl
+ files as a result of the changes to generated code.
+
+Wed Jun 22 10:59:00 2005 Gary Maxey <gary.maxey@hp.com>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp
+ Updated visitor for valuebox support.
+
+Mon Jun 20 18:10:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/MapView_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel_moc.cpp:
+ Removed these files, these are generated and shouldn't be in the
+ archive
+
+Mon Jun 20 09:29:00 2005 Gary Maxey <gary.maxey@hp.com>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h
+ Add visitor for valuebox support.
+
+Sun Jun 19 20:18:50 2005 Ming Xiong <mxiong@tango.dre.vanderbilt.edu>
+
+ * NEWS:
+
+ Updated NEWS on upcoming support for Component Packaging
+
+Thu Jun 16 21:46:10 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Display/descriptors/Modified_Deployment.xsd
+ * DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd
+ * docs/schema/Modified_Deployment.xsd
+
+ Modified the <InstanceDeploymentDescription> element type
+ to allow having unbounded number of <configProperty> elements.
+ Thanks Will Chai <willchai@126.com> to report this problem.
+
+Wed Jun 15 14:46:00 2005 Gautam Thaker <gthaker@atl.lmco.com>
+
+ * DAnCE/examples/Hello/step-by-step.html:
+
+ Fixed a typo regarding name of script "run_NodeDaemons.pl" and
+ one other sentence fragement.
+
+Mon Jun 13 13:44:41 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+
+ Fixed a typo.
+
+Thu Jun 4 14:36:00 UTC 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.h
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp
+
+ Fixed a virtual hiding warning reported on WinXP_BCB6_Pro_Dynamic_Debug
+
+Thu Jun 9 09:31:28 2005 Simon McQueen <sm@prismtech.com>
+
+ * NEWS:
+
+ Updated with late release note submissions.
+
+Wed Jun 08 08:50:35 2005 Simon McQueen <sm@prismtech.com>
+
+ * CIAO version 0.4.6 released.
+
+Wed Jun 8 11:21:50 2005 Simon McQueen <sm@prismtech.com>
+
+ * NEWS:
+
+ Updated with release note entries.
+
+Mon Jun 6 12:33:16 2005 Simon McQueen <sm@prismtech.com>
+
+ * DAnCE/examples/Display/GPS/GPS.mpc:
+
+ Added HUDisplay_DnC_svnt to after tag for project GPS_DnC_svnt
+ to fix build error on BCB 6 dynamic build.
+
+
+Thu Jun 2 22:56:11 UTC 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/Quoter/README.html
+
+ Added a link to the CoSMIC quoter tutorial page hosted by
+ Ming Xiong.
+
+ * NEWS
+
+ Updated NEWS file.
+
+Tue May 31 22:46:06 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Eliminated unused arguments.
+
+Mon May 30 15:22:16 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XML_File_Intf.h:
+ * DAnCE/Config_Handlers/DP_Handler.h:
+
+ auto_ptr is changed with ACE_Auto_Ptr, auto_ptr does not have
+ reset in VC6.
+
+Mon May 30 17:59:28 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Fixed incorrect code generation in *_svnt.cpp file for
+ attribute assignment of sequence types. Thanks to Sunil Rottoo
+ <srottoo@adacelcanada.com> for reporting the problem.
+
+Mon May 30 12:19:42 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Port_Activator_T.cpp:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Made use of ACE_ENV macros to fix Debian Full Reactor
+ build errors.
+
+Fri May 27 23:35:23 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Impl.cpp:
+ * DAnCE/ciao/Container_Impl.h:
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_T.h:
+
+ Changed the structure of the utility maps that maintain
+ the component references, to use "_var" instead of "_ptr"
+ in order to facilitate effective memory destructions.
+
+Fri May 27 20:26:33 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * CCF/CCF/CCF.sln:
+ * CCF/Example/Example.sln:
+ * CIDLC/CIDLC.sln:
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CCF/CCF/CompilerElements/CompilerElements.vcproj:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+ * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.vcproj:
+ * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.vcproj:
+ * CIDLC/CIDLC.vcproj:
+
+ Deleted MSVC solution and project files, these are generated by the
+ mwc.
+
+Fri May 27 13:41:20 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Port_Activator.h:
+ * DAnCE/ciao/Port_Activator_T.cpp:
+ * DAnCE/ciao/Port_Activator_T.h:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Added support for deactivating facets and event consumers
+ when a component is getting deactivated. This fixes
+ couple of memory leaks in the DAnCE deployment scenarios.
+
+
+Thu May 26 22:55:26 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Added code to deactivate facets when component
+ is getting removed.
+
+Thu May 26 20:41:04 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+
+ Added support for the component servants to inherit
+ from RefCountServantBase, to allow freeing up of
+ servants in a more standard and effective manner.
+
+ Added support functions in Servant_Impl_T class to
+ clean up the component executor memory.
+
+ Added support functions in Home_Servant_Impl_T and
+ Servant_Impl_Base classes to uninstall components
+ by executing operations like ccm_remove () in the
+ right order.
+
+ Finally fixed couple of memory leaks with respect
+ to cleaning up component servants and component
+ executors.
+
+ Thanks to Steve Baker <Steve_D_Baker@Raytheon.com>
+ for reporting the problem.
+
+Thu May 26 21:09:22 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Simple_Component_Server/Simple_Component_Server.mpc
+
+ Put an empty IDL_Files segment in the
+ "Simple_Component_Server" project so the IDL
+ file is not picked up automatically. Thanks to Will Chai
+ <willchai@126.com> for reporting this.
+
+ * NEWS
+ * DAnCE/NEWS
+
+ Merged these two files and deleted the DAnCE/NEWS file,
+ since these two files serve similar purposes.
+
+Thu May 26 14:46:53 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp
+
+ Fixed a memory leak which would cause NodeManagers to leak
+ when destroyed.
+
+Thu May 26 07:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/examples/Quoter/Broker/Broker.cpp:
+ Fixed doxygen file tag
+
+Wed May 25 11:05:05 2005 Ming Xiong <mxiong@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Quoter/Stock_Base/Stock_Base.mpc:
+ * DAnCE/examples/Quoter/Stock_Base/Stock_Base.idl:
+ * DAnCE/examples/Quoter/Stock_Base/Stock_Base_svnt_export.h:
+ * DAnCE/examples/Quoter/Stock_Base/Stock_Base_stub_export.h:
+ * DAnCE/examples/Quoter/Broker/Broker.mpc:
+ * DAnCE/examples/Quoter/Broker/Broker.idl:
+ * DAnCE/examples/Quoter/Broker/Broker.cidl:
+ * DAnCE/examples/Quoter/Broker/Broker.cpp:
+ * DAnCE/examples/Quoter/Broker/Broker_exec.h:
+ * DAnCE/examples/Quoter/Broker/Broker_exec.cpp:
+ * DAnCE/examples/Quoter/Broker/Broker_svnt_export.h:
+ * DAnCE/examples/Quoter/Broker/Broker_stub_export.h:
+ * DAnCE/examples/Quoter/Broker/Broker_exec_export.h:
+ * DAnCE/examples/Quoter/Distributor/Distributor.mpc:
+ * DAnCE/examples/Quoter/Distributor/Distributor.idl:
+ * DAnCE/examples/Quoter/Distributor/Distributor.cidl:
+ * DAnCE/examples/Quoter/Distributor/Distributor.cpp:
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.h:
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec.cpp:
+ * DAnCE/examples/Quoter/Distributor/Distributor_svnt_export.h:
+ * DAnCE/examples/Quoter/Distributor/Distributor_stub_export.h:
+ * DAnCE/examples/Quoter/Distributor/Distributor_exec_export.h:
+ * DAnCE/examples/Quoter/descriptors/Broker.ccd:
+ * DAnCE/examples/Quoter/descriptors/Broker.cid:
+ * DAnCE/examples/Quoter/descriptors/Broker.cpd:
+ * DAnCE/examples/Quoter/descriptors/Broker_Exec.iad:
+ * DAnCE/examples/Quoter/descriptors/Broker_Stub.iad:
+ * DAnCE/examples/Quoter/descriptors/Broker_Svnt.iad:
+ * DAnCE/examples/Quoter/descriptors/Deployment.xsd:
+ * DAnCE/examples/Quoter/descriptors/Distributor.ccd:
+ * DAnCE/examples/Quoter/descriptors/Distributor.cid:
+ * DAnCE/examples/Quoter/descriptors/Distributor.cpd:
+ * DAnCE/examples/Quoter/descriptors/Distributor_Exec.iad:
+ * DAnCE/examples/Quoter/descriptors/Distributor_Stub.iad:
+ * DAnCE/examples/Quoter/descriptors/Distributor_Svnt.iad:
+ * DAnCE/examples/Quoter/descriptors/Domain.cdd:
+ * DAnCE/examples/Quoter/descriptors/flattened_deploymentplan.cdp:
+ * DAnCE/examples/Quoter/descriptors/Libraries.iad:
+ * DAnCE/examples/Quoter/descriptors/Modified_Deployment.xsd:
+ * DAnCE/examples/Quoter/descriptors/package.tpd:
+ * DAnCE/examples/Quoter/descriptors/runNodeDaemons.pl:
+ * DAnCE/examples/Quoter/descriptors/Stock.cdp:
+ * DAnCE/examples/Quoter/descriptors/Stock.cid:
+ * DAnCE/examples/Quoter/descriptors/Stock.cpd:
+ * DAnCE/examples/Quoter/descriptors/Stock.dat:
+ * DAnCE/examples/Quoter/descriptors/Stock.pcd:
+ * DAnCE/examples/Quoter/descriptors/XMI.xsd:
+
+ Added a Quoter example for DAnCE
+
+Wed May 25 11:13:19 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+
+ Added code to call ccm_remove () on the executor
+ before removing the component.
+
+ Thanks to Steven Baker <Steven_D_Baker@raytheon.com> for
+ identifying the problem.
+
+Wed May 25 10:52:39 2005 Cassia Tatibana <cassia@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Display/HUDisplay.idl:
+ * DAnCE/examples/Display/HUDisplay.mpc:
+ * DAnCE/examples/Display/HUDisplay_stub_export.h:
+ * DAnCE/examples/Display/HUDisplay_svnt_export.h:
+ * DAnCE/examples/Display/README.html:
+ * DAnCE/examples/Display/GPS/GPS.cidl:
+ * DAnCE/examples/Display/GPS/GPS.idl:
+ * DAnCE/examples/Display/GPS/GPS.mpc:
+ * DAnCE/examples/Display/GPS/GPSEI.idl:
+ * DAnCE/examples/Display/GPS/GPS_exec.cpp:
+ * DAnCE/examples/Display/GPS/GPS_exec.h:
+ * DAnCE/examples/Display/GPS/GPS_exec_export.h:
+ * DAnCE/examples/Display/GPS/GPS_stub_export.h:
+ * DAnCE/examples/Display/GPS/GPS_svnt_export.h:
+ * DAnCE/examples/Display/GPS/GPS_tracing_exec.cpp:
+ * DAnCE/examples/Display/GPS/GPS_tracing_exec.h:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay.cidl:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay.idl:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay.mpc:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.cpp:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_exec.h:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_exec_export.h:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_stub_export.h:
+ * DAnCE/examples/Display/NavDisplay/NavDisplay_svnt_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/Command.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/DetailView_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/MapView.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/MapView.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/MapView_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavUnit.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NavUnit.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/NodeItem_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/QuitCmd.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/RootPanel_moc.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/Worker.cpp:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/Worker.h:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/trolltech.gif:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/worldmap1.gif:
+ * DAnCE/examples/Display/NavDisplayGUI_exec/worldmap1.xpm:
+ * DAnCE/examples/Display/RateGen/RateGen.cidl:
+ * DAnCE/examples/Display/RateGen/RateGen.idl:
+ * DAnCE/examples/Display/RateGen/RateGen.mpc:
+ * DAnCE/examples/Display/RateGen/RateGen_exec.cpp:
+ * DAnCE/examples/Display/RateGen/RateGen_exec.h:
+ * DAnCE/examples/Display/RateGen/RateGen_exec_export.h:
+ * DAnCE/examples/Display/RateGen/RateGen_stub_export.h:
+ * DAnCE/examples/Display/RateGen/RateGen_svnt_export.h:
+ * DAnCE/examples/Display/RateGen/controller.cpp:
+ * DAnCE/examples/Display/descriptors/Deployment.xsd:
+ * DAnCE/examples/Display/descriptors/EM.ior:
+ * DAnCE/examples/Display/descriptors/GPS.ior:
+ * DAnCE/examples/Display/descriptors/Modified_Deployment.xsd:
+ * DAnCE/examples/Display/descriptors/NavDisplay.ior:
+ * DAnCE/examples/Display/descriptors/NavDisplayGUI.ior:
+ * DAnCE/examples/Display/descriptors/NodeManagerMap.dat:
+ * DAnCE/examples/Display/descriptors/RateGen.ior:
+ * DAnCE/examples/Display/descriptors/XMI.xsd:
+ * DAnCE/examples/Display/descriptors/basicNodeDaemon.pl:
+ * DAnCE/examples/Display/descriptors/flattened_deploymentplan.cdp:
+
+ Ported the Display example in CIAO to DAnCE.
+
+Tue May 24 22:23:48 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/Hello/step-by-step.html
+
+ Fixed a typo in the command line option. Thanks to Will Chai
+ <willchai@126.com> for reporting this.
+
+Tue May 24 00:23:26 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+
+ Changed the mpc files to use the cidlc.mpb.
+
+Sun May 22 21:23:48 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp
+
+ Modified the operation from <_ciao_passivate> to <ciao_passivate>
+ due to my earlier interface changes.
+
+Sun May 22 11:29:36 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+
+ Fixed a memory leak in the container code to
+ delete the ServantActivator pointer.
+
+Sat May 21 16:08:48 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/Deployment_Core.idl
+
+ Added <ciao_passivate> operation on the NodeApplication interface,
+ which is useful for enforce the correct component deactivation
+ sequence.
+
+ * DAnCE/ciao/Deployment.idl
+
+ Moved the StopError exception definition and put into the
+ Deployment_Core.idl, since <ciao_passviate> operation needs
+ such exception declaration.
+
+ * DAnCE/ciao/CCM_Component.idl
+
+ Added <ciao_passivate> operation to the CCM_Object interface.
+
+ * DAnCE/ciao/NodeApplication_Impl.cpp
+ * DAnCE/ciao/NodeApplication_Impl.h
+
+ Implementation of the above added operation <ciao_passivate>.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Modified to call <ciao_passivate> before calling <destroyApplication>.
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp
+
+ Modified the Repository_Manager/executor to invoke <start>
+ separately from invoking finishLaunch.
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp
+
+ Removed the call of <ciao_passivate> from the
+ Servant_Impl_Base::remove() function since this will be
+ called separately on the whole assembly, i.e. passivate ALL
+ components in the assembly before removing components.
+
+ * DAnCE/ciao/Servant_Impl_T.cpp
+ * DAnCE/ciao/Servant_Impl_T.h
+
+ Changed the operation name from "_ciao_passivate" to
+ "ciao_passivate", in order to make it to be the implementation
+ of the <ciao_passivate> operation added on the CCM_Object
+ interface.
+
+Sat May 21 14:39:48 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/ciao/Deployment_Core.idl
+
+ Added <ciao_preactivate> and <ciao_postactivate>
+ operations on the NodeApplication interface, which is useful
+ for enforce the correct component activation operation
+ sequence.
+
+ * DAnCE/ciao/NodeApplication_Impl.cpp
+ * DAnCE/ciao/NodeApplication_Impl.h
+
+ Implemented the above operations.
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+
+ Modified it to call ciao_preactivate and ciao_postactivate
+ on NodeApplications accordingly
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+
+ Modified to disable the "start" while "finishLaunch", since
+ it is the application developer's control to invoke start
+ operation in the whole assembly.
+
+ * DAnCE/ciao/Container_Base.cpp
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Put some debug output into the CIAO_DebugLevel control
+
+ * DAnCE/examples/Hello/Sender/Sender_exec.cpp
+
+ Cosmetic changes.
+
+Tue May 17 20:49:48 UTC 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/IDL3/ImpliedIDL/All/all.mpc:
+ * tests/IDL3/ImpliedIDL/All/convert.idl:
+ * tests/IDL3/ImpliedIDL/All/pass_through.idl:
+ * tests/IDL3/ImpliedIDL/All/include.idl:
+ * tests/IDL3/ImpliedIDL/All/README:
+
+ New files comprising a test for the tao_idl3_to_idl2
+ executable. The test executes tao_idl3_to_idl2 on the
+ listed IDL files, then executes the TAO IDL compiler on
+ the resulting IDL files. The resulting C++ code is compiled,
+ and if there are no errors or warnings in this last step,
+ the test is a success.
+
+Tue May 17 07:51:47 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/Process_Element.h:
+ * DAnCE/Old_Config_Handlers/Process_Element.cpp:
+
+ Fixed unresolved symbol link error.
+
+Mon May 16 21:29:49 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/Process_Element.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp (remove_component):
+
+ Fixed syntax errors.
+
+Mon May 16 12:06:51 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp (~IndentityProvider):
+ * DAnCE/Old_Config_Handlers/Process_Element.h (Process_Function):
+ * DAnCE/Old_Config_Handlers/Process_Element.cpp
+ (~Process_Function):
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.h (Pulse_Handler):
+ * tests/RTCCM/Priority_Test/Controllers/Pulser.cpp
+ (~Pulse_Handler):
+
+ Added missing virtual destructor. Fixes g++ 4.0 "class with
+ virtual functions but no virtual destructor" warnings.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp (mode):
+
+ Fixed "non-local variable uses anonymous type" g++ 4.0 warning.
+
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp (remove_component):
+ * tools/RTComponentServer/RTConfig_Manager.cpp
+ (find_threadpool_by_name):
+ * tools/XML_Helpers/RTConfig_Handlers.cpp (add_threadpoollane):
+ (add_priorityband):
+
+ Fixed "variable may be used uninitialized" warnings.
+
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp
+ (teardown_assembly):
+
+ Fixed format specifier mismatch.
+
+Mon May 16 11:27:30 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Added line to table about availability of binaries for MacOS
+ and Solaris.
+
+Sat May 14 06:12:44 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO version 0.4.5 released.
+
+Thu May 12 10:20:55 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * Updated the COPYING file to clarify some ambiguity about
+ proprietary usage of CIAO.
+
+Tue May 10 21:12:47 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * docs/releasenotes/dance.html: Updated this page to clearly
+ point out which OMG D&C specification DAnCE implements.
+ Thanks to Gary Duzan <gduzan@bbn.com> for requesting this.
+
+Tue May 10 07:49:47 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
+
+ * DAnCE/examples/Hello/descriptors: Changed the name of
+ ruNodeDaemons.pl to run_NodeDaemons.pl. Thanks to Arno Wilhelm
+ <arno.wilhelm@profile.co.at> for reporting this.
+
+Sun May 8 11:07:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tests/CIDL/CodeGen/CodeGen.mpc:
+ Removed requires+=cidl
+
+Sat May 7 19:53:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+ Removed requires+=cidl for the NodeAppTest_RoundTrip_svnt project.
+ It should not be there. Thanks for Jaiganesh B
+ <jai@dre.vanderbilt.edu> for finding out that this caused the
+ problems in the gcc4 build
+
+Fri May 6 08:15:43 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc:
+
+ Changed base project lists and added explicit lists (sometimes
+ empty) for header and inline files.
+
+Wed May 4 19:27:01 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Fixed typo in generated code - changed "provides_" prefix
+ in component facet access operation to the correct
+ "provide_". Thanks to Don Busch <busch_d@ociweb.com> for
+ pointing out the mistake.
+
+Tue May 03 22:42:47 2005 Nanbor Wang <nanbor@gauss.txcorp.com>
+
+ * NEWS: Updated news on upcoming real-time extension on Gan Deng's
+ behalf.
+
+Tue May 3 13:05:44 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changed the generated string (used for object id) which is passed
+ to the port activator constructor and to generate_reference() to
+ be a concatentation of the component instance name and the port
+ name, to ensure uniqueness in any use case.
+
+Mon May 2 07:19:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp:
+ * DAnCE/ciao/Dynamic_Component_Servant_T.cpp:
+ Fixed gcc 4 warnings
+
+Sat May 1 03:11:17 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * ciao/tools/Simple_Component_Server/Simple_Component_Server.cpp:
+
+ Made a change to fix compile errors.
+
+Sat Apr 30 20:02:10 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * ciao/Container_Impl.cpp:
+
+ Made a change to fix compile errors.
+
+Sat Apr 30 09:58:05 2005 Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Home_Servant_Impl_T.cpp:
+ * ciao/Home_Servant_Impl_T.h:
+
+ Made changes to the old CIAO infrastructure to support
+ passing and storing of the component instance name from the
+ descriptor XML file and into the component instance.
+
+Thu Apr 28 14:50:05 2005 Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Dynamic_Component_Servant_T.cpp:
+ * DAnCE/ciao/Dynamic_Component_Servant_T.h:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h:
+
+ Made changes to the CIAO infrastructure that allows the
+ swapping capability to make use of the component instance
+ name when we create object references.
+
+Wed Apr 27 11:15:12 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Container_Impl.cpp:
+ * DAnCE/ciao/Deployment_Core.idl:
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_T.h:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+
+ Some cosmetic changes and changes by Jaiganesh Balasubramanian
+ <jai@dre.vanderbilt.edu> to support the passing and storing of
+ the component instance name (from the descriptor XML file) in
+ the component instance. Also removed the gen_UUID() static
+ method from class Servant_Impl_Base, since it is no longer
+ used.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changes to servant code generation corresponding with the
+ changes above.
+
+Tue Apr 26 18:14:01 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/releasenotes/index.html:
+
+ Updated CIDL compiler documentation, and added item about the
+ existing IDL3-to-IDL2 coverter.
+
+ * tools/IDL3_to_IDL2/README:
+
+ Updated documentation file.
+
+Tue Apr 26 11:34:52 2005 Nanbor Wang <nanbor@tesla.txcorp.com>
+
+ * docs/schema/CIAOServerResources.xsd: Changed some of the XML
+ element and type names to be more consistent with the rest of
+ RTCORBA spec that the following new IDL file follows.
+
+ * DAnCE/ciao/ServerResources.idl: First cut of server
+ configuration information set in IDL.
+
+Mon Apr 25 11:07:28 2005 Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+
+ Fixed compiler warnings in the Debian Full_Reactor build.
+
+Sun Apr 24 02:47:22 2005 Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Swapping_Container.cpp:
+ * DAnCE/ciao/Swapping_Container.h:
+
+ Made changes to fix compile errors.
+
+Sat Apr 23 13:54:10 2005 Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * DAnCE/example/Swapping/Sender/Sender_exec_1.cpp:
+
+ Made a modification to the example to reflect changes made
+ in the infrastructure code.
+
+Sat Apr 23 13:43:22 2005 Jai Balasubramanian <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/UpgradeableContext.idl:
+ * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp:
+ * DAnCE/ciao/Upgradeable_Context_Impl_T.h:
+
+ Made some changes to the CIAO infrastructure to efficiently
+ handle updating the facets when the component is swapped.
+
+Thu Apr 21 18:10:13 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base.idl:
+ * DAnCE/examples/HelloHello_Base/Hello_Base.mpc:
+ * DAnCE/examples/HelloReceiver/Receiver.idl:
+ * DAnCE/examples/HelloReceiver/Receiver.mpc:
+ * DAnCE/examples/HelloSender/Sender.idl:
+ * DAnCE/examples/HelloSender/Sender.mpc:
+
+ Made cosmetic changes to all files, and added explicit
+ specification of header and inline files in MPC
+ projects. Also added -Sc command line option to the
+ IDL compiler, to suppress generation of the TIE
+ classes.
+
+Thu Apr 21 17:40:12 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CIDL/Traversal/Elements.cpp:
+ * CCF/CCF/IDL3/Traversal/EventType.cpp:
+
+ Removed these files, since they contain nothing but
+ empty namespaces.
+
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+
+ Removed the above files from the appropriate projects.
+
+Thu Apr 21 14:31:21 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+
+ Changes to eliminate some warnings in the Debian LInux build.
+
+Thu Apr 21 09:06:58 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * Added UUID generation for the object id when creating
+ event consumers, similar to that already added for facets.
+ This change eliminates the error of repeated connection
+ to the same event consumer instance when multiple
+ instances and connections are intended. Thanks to
+ Steve Baker <steven_d_baker@raytheon.com> for reporting
+ the problem.
+
+Thu Apr 21 09:04:32 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/TestNodeManagerMap.dat
+ * DAnCE/examples/Hello/descriptors/run_test.pl
+
+ Added a NodeManagerMap specific to the test and changed the ports
+ that the node managers invoked by the test listen on to avoid
+ test failures.
+
+Wed Apr 20 16:14:26 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/CIAOServerResources.xsd
+
+ Fixed syntax and semantic errors.
+
+Wed Apr 20 12:43:53 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl:
+
+ Not all the test platforms has CIAO_ROOT environment variable
+ defined. Changed that dependency to ACE_ROOT in the script.
+
+Wed Apr 20 13:11:28 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added full scoping to a generated method call on
+ Servant_Impl_Base, to eliminate a warning from the
+ Borland compiler.
+
+Wed Apr 20 13:05:23 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp
+ * DAnCE/RepositoryManager/Update_Plan.cpp
+
+ Fixed compile errors in Borland.
+
+Wed Apr 20 08:09:17 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_T.cpp
+
+ Fixed a compile error with emulated exceptions.
+
+Wed Apr 20 08:03:23 2005 CDT Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/DP_Handler.cpp
+
+ Silenced some compile errors in VC6.
+
+Tue Apr 19 23:41:02 2005 CDT Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XML_File_Intf.cpp
+
+ Silenced some compile errors in VC6.
+
+Tue Apr 19 16:46:00 2005 CDT Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html
+
+ Fixed this page to direct people where to download CIDLC.
+
+Tue Apr 19 17:33:55 2005 Nanbor Wang <nanbor@tesla.txcorp.com>
+
+ * docs/schema/ServerResourceUsage.txt:
+ * docs/schema/CIAOServerResources.xsd: Added the first draft
+ schema for DAnCE RT extension, and a file to document how I
+ foresee the extension can be used.
+
+Tue Apr 19 12:16:00 2005 CDT Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/IDREF_Base.h
+
+ Fixed a compile error on VC71.
+
+Mon Apr 18 12:50:51 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added '.in ()' to some _var type arguments in generated code.
+
+Mon Apr 18 08:38:14 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changed all instances of 'FALSE' to 'false'.
+
+Sun Apr 17 21:57:52 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Removed unnecessary _narrow() and local variable from generated
+ event push operations.
+
+Sun Apr 17 16:05:57 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp
+
+ Fixed a compile error on platforms using emulated exceptions.
+
+Sun Apr 17 12:46:51 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Event.idl:
+ * DAnCE/ciao/CCM_Event.idl:
+
+ Added operation ciao_is_substitutable() to EventConsumerBase,
+ so we can check if there is an inheritance relationship
+ when a base class event consumer is passed to the subscribe()
+ operation for a derived eventtype. Thanks to Boris Kolpackov
+ <boris@dre.vanderbilt.edu> for suggesting this approach.
+
+ * CIDLC/Literals.cpp:
+
+ Cosmetic changes.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code generation to take advantage of the new
+ EventConsumerBase operation described above.
+
+Sat Apr 16 20:17:38 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl:
+
+ Fixed some perl errors.
+
+Sat Apr 16 18:31:40 2005 CDT Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc
+
+ Removed typecodefactory fromt the base projects.
+
+Sat Apr 16 17:24:40 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+
+ Added a missing include file.
+
+Sat Apr 16 17:22:42 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl:
+
+ Added code to ensure killing open processes on failure.
+
+Sat Apr 16 16:38:09 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/run_test.pl:
+
+ Added perl script running all the steps for deploying an application.
+
+Sat Apr 16 16:10:10 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+
+ Added two command line options to plan_launcher to easily use in
+ scripts. Now the launch and destruction of the application can be
+ done in two steps.
+
+Sat Apr 16 15:00:31 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/step-by-step.html:
+
+ Fixed typo on the documentation.
+
+Fri Apr 15 12:54:46 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Req_Handler.h
+
+ Fixed a compile error on builds using -pendantic.
+
+Fri Apr 15 10:46:56 CDT 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Added a condition to check whether call standard configurator.
+
+ * DAnCE/RepositoryManager/Repository_Manager.cpp
+
+ Modified to make it work by using ORBDebugLevel.
+
+ * DAnCE/examples/Hello/Sender/Sender_exec.cpp
+
+ Fixed a warning message.
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp
+
+ This should fix the warning message on Dynamic_Hash_Op_Lookup
+ build.
+
+Thu Apr 14 10:54:56 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp
+
+ Fixed a warning due to ambiguous conversion.
+
+Thu Apr 143 10:21:58 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/Sender/Sender.idl
+ * DAnCE/examples/Hello/Sender/Sender_exec.cpp
+ * DAnCE/examples/Hello/Sender/Sender_exec.h
+ * DAnCE/examples/Hello/Sender/starter.cpp
+ * DAnCE/examples/Hello/descriptors/Hello.cid
+ * DAnCE/examples/Hello/descriptors/Receiver.cid
+ * DAnCE/examples/Hello/descriptors/Sender.cid
+
+ Modified the Hello example to showcase the feature of setting
+ attributes through XML. "string" and "long" type attributes
+ are put into the test.
+
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Cleaned up a little bit.
+
+Thu Apr 14 10:14:44 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Added 'naming' to the list of base projects to fix a compile
+ error
+
+Thu Apr 14 02:02:13 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp
+ * DAnCE/ciao/Context_Impl_T.cpp
+ * DAnCE/ciao/Dynamic_Component_Servant_Base.h
+ * DAnCE/ciao/Dynamic_Component_Servant_T.cpp
+ * DAnCE/ciao/Dynamic_Component_Servant_T.h
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp
+ * DAnCE/ciao/Servant_Impl_T.cpp
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp
+ * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp
+
+ Fixed a number of mistakes with emulated exceptions.
+
+Wed Apr 13 18:55:58 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Component.idl
+ * DAnCE/ciao/Container_Impl.cpp
+ * DAnCE/ciao/Servant_Impl_Base.cpp
+ * DAnCE/ciao/Servant_Impl_Base.h
+
+ Added support for configuring component attributes through
+ XML <configProperty> tags.
+
+ * DAnCE/RepositoryManager/Update_Plan.cpp
+ * DAnCE/RepositoryManager/Update_Plan.h
+
+ Fixed to make sure correct component attributes are
+ populated. Thanks Jai <jai@dre.vanderbilt.edu> for the fix.
+
+Wed Apr 13 15:14:58 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+
+ Deleted typecodefactory base project to the mpc files.
+
+Wed Apr 13 11:39:58 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+
+ Added typecodefactory base project to the mpc files.
+
+Tue Apr 12 17:12:35 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+
+ Added a static method to generate a UUID. This method is
+ called by the generated servant class to create unique
+ object ids for port object references. Thanks to Steve
+ Baker <steven_d_baker@raytheon.com> for reporting the
+ problem of connecting to facets on multiple instances
+ of the same component type.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changed code generation for provide_*_i() to use the
+ new method described above.
+
+Tus Apr 12 16:04:21 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/IAD_Handler.cpp
+
+ Modified to ignore the <dependsOn> tag, since this might
+ cause a problem where multiple _svnt or multiple _exec
+ libraries to be specified as implArtifacts of a component
+ type.
+
+Tue Apr 12 14:35:58 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html
+
+ Updated to include Xerces information. Also cleaned up the
+ file a bit and made it XHTML compliant.
+
+Tue Apr 12 11:56:26 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Dynamic_Component_Activator.cpp
+ * DAnCE/ciao/Servant_Activator.cpp
+ * DAnCE/ciao/Servant_Impl_Base.cpp
+
+ Fixed some more compile errors with emulated exceptions.
+
+Tue Apr 12 11:11:41 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Servant_Impl_Base.cpp
+
+ Fixed some compile errors with emulated exceptions.
+
+Mon Apr 11 23:54:21 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+
+ Fixed a bug where multiple "_svnt" and "_exec" libs for
+ a given MonolithicDeploymentDescription could cause
+ chaos while pupulating ImplementationInfo stuct. This
+ fix now only consides the first "_svnt" and "_exec"
+ libs, and ignore remaining ones. A better solution will
+ be enforcing any MonolithicDeploymentDescription could
+ only have exactly one _svnt and one _exec lib. This
+ will be achieved through the flattened deployment plan.
+
+Mon Apr 11 17:56:22 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+
+ Added typecodefactory to the list of project files.
+
+Mon Apr 11 13:43:47 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+
+ Corrected the ExecutionManager narrow operation.
+
+Mon Apr 11 08:29:50 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Impl.cpp:
+ * DAnCE/ciao/Dynamic_Component_Activator.cpp:
+ * DAnCE/ciao/Dynamic_Component_Activator.h:
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ * DAnCE/ciao/Swapping_Container.cpp:
+ * DAnCE/ciao/Swapping_Container.h:
+
+ Fixed various glitches with environment variables, unused variables,
+ and ACE_TRY macros.
+
+Mon Apr 11 07:12:54 CDT 2005 Will Otte <wotte@dre.vanderbit.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+
+ Fixed a compile error.
+
+Sun Apr 10 18:44:22 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+ * DAnCE/Config_Handlers/ccd.cpp
+ * DAnCE/Config_Handlers/ccd.hpp
+
+ Regenerated the handlers to reflect the changes in the previous
+ commit.
+
+Sat Apr 09 18:35:23 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/ccd.xsd
+
+ Updated schemas to reflect changes made to Modified_Deployment
+ in conformance to the spec.
+
+Sat Apr 09 17:15:23 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Changed the after clause to point to the XSC_Config_Handlers
+ instad of the old config handlers.
+
+Sat Apr 09 23:59:40 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
+
+ Fixed a bug where duplicated CORBALOC specified in the
+ NodeManagerMap could cause undetected exception. This fix
+ will allow such duplication IOR error to be detected explicitly
+ and error message will be printed out. Thanks Steve Baker
+ <Steven_D_Baker@raytheon.com> for report this bug.
+
+Fri Apr 8 14:30:52 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/cdp.cpp
+ * DAnCE/Config_Handlers/cdp.hpp
+
+ Regenerated handlers to reflect schema changes.
+
+ * docs/schema/cdp.xsd
+
+ Updated schema to allow 0 on the realizes element.
+
+Fri Apr 8 13:33:24 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added backend support for attribute exceptions.
+
+Thu Apr 07 14:49:40 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/basicNodeDaemon.pl
+ * DAnCE/examples/Hello/descriptors/runNodeDaemons.pl
+
+ Removed the first file and added the second file since
+ the name of the first file doens't make any sense. These
+ two files are the same.
+
+ * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp
+ * DAnCE/examples/BasicSP/descriptors/flattened_deploymentplan.cdp
+
+ Removed the first file and added the second file since
+ the name of the first file contained a typo.
+
+ * DAnCE/examples/Hello/descriptor/Modified_Deployment.xsd
+
+ Changed the <deploymentPlan> tag to allow zero <realizes>
+ tag in the XML.
+
+ * DAnCE/Config_Handlers/DP_Handler.cpp
+ * DAnCE/Config_Handlers/cdp.cpp
+ * DAnCE/Config_Handlers/cdp.hpp
+
+ Modified handlers to accomodate the above change.
+
+ * DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp
+
+ Added this file in, which is a flattened deployment plan for
+ for the Hello example. I will come back to remove the <realizes>
+ tag some time later since it is useless.
+
+ * DAnCE/examples/Hello/step-by-step.html
+
+ Bring the documentation page up to date.
+
+Wed Apr 06 11:12:40 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp
+
+ Cleaned this a little bit. Removed most <SupportedType> and
+ <port> tags from the <realizes> tag.
+
+Wed Apr 06 10:30:40 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat
+
+ Modified virtual node names to make them more meaningful.
+
+ * DAnCE/examples/BasicSP/descriptors/DeploymentPlan.cdp
+
+ Added this file, which is a copy of the old HUDisplay.cdp
+ file. This is the old version deployment plan XML metadata.
+
+ * DAnCE/examples/BasicSP/descriptors/BasicSP.cdp
+ * DAnCE/examples/BasicSP/descriptors/HUDisplay.cdp
+
+ Removed these two files since they are redundant. The
+ former one now is "flattern_deploymentplan.cdp",
+ the latter one is "DeploymentPlan.cdp".
+
+ * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp
+
+ Fixed this file, which contains a invalid connection, i.e.,
+ connecting a EventPublisher to a SimplexReceptacle. The root
+ of this problem is that "data_read" is a Facet instead of
+ a EventPublisher.
+
+Tue Apr 05 19:29:40 2005 Gan Deng <dengg@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+
+ Fixed project dependency.
+
+ * DAnCE/ciao/Container_Impl.cpp
+
+ Fixed a compilation error caused by specifying a
+ wrong exception name.
+
+ * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat
+
+ Fixed a wrong string to specify the vitual node name.
+
+Tue Apr 5 14:37:16 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+
+ Updated Gary's fix to work in Borland 6.
+
+Tue Apr 5 14:13:10 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+
+ Incorporated a fix to the Any handler from Gary Duzan.
+
+Tue Apr 5 11:34:32 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+ * DAnCE/Config_Handlers/Deployment.cpp
+ * DAnCE/Config_Handlers/Deployment.hpp
+ * DAnCE/Config_Handlers/ccd.cpp
+ * DAnCE/Config_Handlers/ccd.hpp
+ * DAnCE/Config_Handlers/cdd.cpp
+ * DAnCE/Config_Handlers/cdd.hpp
+ * DAnCE/Config_Handlers/cdp.cpp
+ * DAnCE/Config_Handlers/cdp.hpp
+ * DAnCE/Config_Handlers/cid.cpp
+ * DAnCE/Config_Handlers/cid.hpp
+ * DAnCE/Config_Handlers/cpd.cpp
+ * DAnCE/Config_Handlers/cpd.hpp
+ * DAnCE/Config_Handlers/iad.cpp
+ * DAnCE/Config_Handlers/iad.hpp
+ * DAnCE/Config_Handlers/pcd.cpp
+ * DAnCE/Config_Handlers/pcd.hpp
+ * DAnCE/Config_Handlers/toplevel.cpp
+ * DAnCE/Config_Handlers/toplevel.hpp
+ * DAnCE/Config_Handlers/XMLSchema/Types.hpp
+
+ New version of the generated XSC handlers fixing the following problems:
+ - Use ACE_TCHAR instead of char as the character type
+ - Export macros for the generated classes.
+ - Borland 6 support
+ - Misc VC6 warnings.
+
+Sun Apr 3 23:52:50 CDT 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * examples/BasicSP/descriptors/flattern_deploymentplan.cdp
+
+ Fixed a mistake in the descriptor.
+
+Sun Apr 3 18:08:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Container_Base.h:
+ * ciao/ServerActivator_Impl.h:
+ Added missing include of ace/Hash_Map_Manager_T.h
+
+Sat Apr 02 13:12:40 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/examples/BasicSP/README.html: Brought the documentation a
+ bit more up-to-date.
+
+Sat Apr 2 13:06:02 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/ciao/Container_Base.cpp: Added more debug print out
+ statements in install_home method.
+
+Sat Apr 02 11:45:52 2005 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp: Merged from xsc_handler_1
+ branch. Added a missing break statement, otherwise, it will not
+ run.
+
+Thu Mar 31 20:31:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Added missing include of ace/Hash_Map_Manager_T.h
+
+Thu Mar 31 09:45:07 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Attribute.hpp:
+ * CCF/CCF/IDL2/Traversal/Attribute.cpp:
+ * CCF/CCF/IDL2/Traversal/Attribute.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Added support for raises-specification in attributes.
+
+Wed Mar 30 21:48:14 2005 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * DAnCE/Config_Handlers/Deployment.hpp: Made the function
+ deploymentPlan an export function since it will be accessed
+ externally. The handler test program needed this change to
+ compile on Win32.
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc: Changed to source in
+ the Xerces library settings from the latest xerces MPC template
+ that Kitty suggested.
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp:
+ * DAnCE/Config_Handlers/ccd.hpp:
+ * DAnCE/Config_Handlers/cdd.hpp:
+ * DAnCE/Config_Handlers/cdp.hpp:
+ * DAnCE/Config_Handlers/cid.hpp:
+ * DAnCE/Config_Handlers/cpd.hpp:
+ * DAnCE/Config_Handlers/iad.hpp:
+ * DAnCE/Config_Handlers/pcd.hpp:
+ * DAnCE/Config_Handlers/toplevel.hpp:
+ * DAnCE/Config_Handlers/XMLSchema/Types.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Parser.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Traversal.hpp:
+ * DAnCE/Config_Handlers/XSCRT/Writer.hpp:
+ * DAnCE/Config_Handlers/XSCRT/XML.hpp: Changed all local include
+ files to use the right syntax. I.e., they should be in the form
+ of:
+
+ #include "foo/bar.h"
+
+ instead of
+
+ #include <foo/bar.h>
+
+Wed Mar 30 22:03:23 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/xsc-banner.cpp
+ * docs/schema/xsc-banner.h
+
+ These files are the banners that should be included at
+ the top of XSC generated code.
+
+Wed Mar 30 13:23:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/ComponentsC.h:
+ * DAnCE/ciao/ComponentsC.h:
+ Fixed include of Typecode.h to TypeCode.h
+
+Wed Mar 30 13:20:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/DataType_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/DT_Handler.cpp:
+ Fixed include of Typecode.h to TypeCode.h
+
+Thu Mar 24 17:02:34 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp
+ * DAnCE/Config_Handlers/Deployment.hpp
+ * DAnCE/Config_Handlers/ccd.hpp
+ * DAnCE/Config_Handlers/cdd.hpp
+ * DAnCE/Config_Handlers/cdp.hpp
+ * DAnCE/Config_Handlers/cid.hpp
+ * DAnCE/Config_Handlers/cpd.hpp
+ * DAnCE/Config_Handlers/iad.hpp
+ * DAnCE/Config_Handlers/pcd.hpp
+ * DAnCE/Config_Handlers/toplevel.hpp
+ * DAnCE/Config_Handlers/XSCRT/XML.hpp
+ * DAnCE/Config_Handlers/vc6-4786.h
+
+ Finally beat a big warning problem in VC6.
+
+Thu Mar 24 15:19:21 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp
+ * DAnCE/Config_Handlers/XSCRT/XML.hpp
+
+ Moved a pragma disable from Elements.hpp to XML.hpp to
+ attempt to silence more warnings in VC6.
+
+Thu Mar 24 14:52:03 2005 Will Otte <wotte@dre.vanderilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+
+ Fixed a compile error for 64bit arch that resulted from
+ the earlier VC6 fix.
+
+Thu Mar 24 09:21:59 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+
+ Added the "after" clause in the MPC file to fix a
+ linker error.
+
+Thu Mar 24 08:46:07 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+
+ - Added generation of ACE_UNUSED_ARG macros for local variables in
+ the get_registered_consumers() method for upgradeable components,
+ to avoid unused argument warnings if the component has no
+ event consumers.
+
+ - Added predefined string literals for "ACE_UNUSED_ARG",
+ "ACE_CHECK_RETURN", and "ACE_THROW_RETURN".
+
+Wed Mar 23 19:45:32 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL2/IDL2.vcpoj:
+
+ Added more new files to the project, ValueTypeMember.hpp and
+ ValueTypeMember.tpp in IDL2/Traversal.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Restored backend code that was commented out until frontend
+ support for traversal of valuetype/eventtype members was added.
+
+Wed Mar 23 13:00:32 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+
+ Fixed compile errors for VC6.
+
+Wed Mar 23 12:39:43 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+
+ Added a missing library include.
+
+Wed Mar 23 11:19:32 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1_export.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2_export.h:
+
+ Added new export macros to fix compiler problems in Windows
+ builds.
+
+Wed Mar 23 11:41:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp:
+ Fixed compile errors
+
+Wed Mar 23 11:22:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp:
+ * DAnCE/Config_Handlers/DP_Handler.cpp:
+ Fixed compile errors with Borland
+
+Tue Mar 22 21:21:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ Fixed fuzz error
+
+Tue Mar 22 13:08:32 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.h
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.h
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.h
+
+ Silence some Fuzz errors.
+
+Tue Mar 22 11:45:57 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/ADD_Handler.cpp
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+ * DAnCE/Config_Handlers/CCD_Handler.cpp
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp
+
+ Changes to accomodate broken compilers (VC6).
+
+Tue Mar 22 10:40:21 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender_exec.cpp:
+
+ Made changes to fix compiler warnings.
+
+Tue Mar 22 10:26:18 2005 Will Otte <wotte@dre.vanderbilt.edu>
+ * DAnCE/Config_Handlers/CCD_Handler.cpp
+
+ Silenced an error in VC6 that occured because it couldn't obey
+ some simple scope rules.
+
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp
+
+ Silenced a warning in VC6 debug builds relating to debug identifiers being
+ too long.
+
+Tue Mar 22 08:44:03 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/Container_Base.cpp
+
+ Silenced a warning.
+
+Tue Mar 22 08:05:57 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL2/IDL2.vcproj:
+
+ Added new ValueTypeFactory files to SemanticAction and new
+ ValueTypeMember files to SemanticGraph.
+
+Tue Mar 22 00:13:56 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp
+
+ Silenced warnings present in GCC >3 builds.
+
+ * DAnCE/Config_Handlers/CCD_Handler.h
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+ * DAnCE/Config_Handlers/IDD_Handler.cpp
+ * DAnCE/Config_Handlers/Property_Handler.h
+ * DAnCE/Config_Handlers/Req_Handler.h
+ * DAnCE/Config_Handlers/XML_Error_Handler.h
+ * DAnCE/Config_Handlers/XML_File_Intf.h
+
+ Silenced a few warnings present in the Fuzz build.
+
+Mon Mar 21 08:47:44 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL2/IDL2.vcproj:
+
+ Added the new ValuetypeMember files in SemanticAction to
+ the project.
+
+Mon Mar 21 16:25:07 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp:
+
+ Finished "full support" for valuetype members. It also
+ adds "full support" for eventtype members since it just
+ re-uses valuetype's rules.
+
+
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/ValueTypeFactory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+
+ Added support for valuetype factories.
+
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.tpp:
+
+ Implemented support for valuetype inheritance and
+ support of interfaces.
+
+
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp:
+ * CCF/CCF/IDL3/Traversal/EventType.tpp:
+
+ Implemented support for eventtype inheritance and
+ support of interfaces.
+
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp:
+
+ Minor cleanups.
+
+Sun Mar 20 21:35:04 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+
+ Made a change to link to the right library.
+
+Sun Mar 20 21:12:55 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+
+ Disabled the build of the test. There is no need for
+ this to build for the most part - as it is not a great test -
+ and appears to be lighting up the scoreboard for some reason.
+
+Sun Mar 20 14:05:08 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/tests/Config_Handlers/CompImplDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompIntrDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/CompPkgDesc_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Domain_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Handler_Test.h:
+ * DAnCE/tests/Config_Handlers/IAD_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/PC_Handler_Test.cpp:
+ * DAnCE/tests/Config_Handlers/Plan_Handler_Test.cpp:
+
+ Made changed to include the "right" config handlers
+ to fix the compilation errors.
+
+Sun Mar 20 13:57:55 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XercesString.cpp:
+ * DAnCE/Config_Handlers/XercesString.h:
+
+ Added these new files from the old config handlers
+ directory to the new config handlers directory
+ to fix missing includes.
+
+Sun Mar 20 13:54:17 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/Process_Element_T.cpp:
+
+ Changed a #include to fix a compilation error.
+
+Sun Mar 20 17:39:18 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+ * ciao/Servant_Impl_Base.h:
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_T.h:
+ * ciao/Servant_Impl_T.cpp:
+ * ciao/Home_Servant_Impl_T.cpp:
+
+ Made changes to the older version of the ciao
+ infrastructure to reflect changes made in the
+ newer version of ciao, which is DaNCE.
+
+Sun Mar 20 10:09:14 2005 Will Otte <wotte@dre.vanderbilt.edu>
+ * DAnCE/Config_Handlers/Basic_Handler.cpp
+ * DAnCE/Config_Handlers/Basic_Handler.h
+ * DAnCE/Config_Handlers/CAD_Handler.cpp
+ * DAnCE/Config_Handlers/CAD_Handler.h
+ * DAnCE/Config_Handlers/CPK_Handler.cpp
+ * DAnCE/Config_Handlers/CPK_Handler.h
+ * DAnCE/Config_Handlers/CPR_Handler.cpp
+ * DAnCE/Config_Handlers/CPR_Handler.h
+ * DAnCE/Config_Handlers/Cap_Handler.cpp
+ * DAnCE/Config_Handlers/Cap_Handler.h
+ * DAnCE/Config_Handlers/CompImplDesc_Handler.cpp
+ * DAnCE/Config_Handlers/CompImplDesc_Handler.h
+ * DAnCE/Config_Handlers/CompIntrDesc_Handler.cpp
+ * DAnCE/Config_Handlers/CompIntrDesc_Handler.h
+ * DAnCE/Config_Handlers/CompPkgDesc_Handler.cpp
+ * DAnCE/Config_Handlers/CompPkgDesc_Handler.h
+ * DAnCE/Config_Handlers/Config.h
+ * DAnCE/Config_Handlers/Config_Error_Handler.cpp
+ * DAnCE/Config_Handlers/Config_Error_Handler.h
+ * DAnCE/Config_Handlers/Config_Handler_export.h
+ * DAnCE/Config_Handlers/DT_Handler.cpp
+ * DAnCE/Config_Handlers/DT_Handler.h
+ * DAnCE/Config_Handlers/Domain_Handler.cpp
+ * DAnCE/Config_Handlers/Domain_Handler.h
+ * DAnCE/Config_Handlers/IAD_Handler.cpp
+ * DAnCE/Config_Handlers/IAD_Handler.h
+ * DAnCE/Config_Handlers/IR_Handler.cpp
+ * DAnCE/Config_Handlers/IR_Handler.h
+ * DAnCE/Config_Handlers/MID_Handler.cpp
+ * DAnCE/Config_Handlers/MID_Handler.h
+ * DAnCE/Config_Handlers/NIA_Handler.cpp
+ * DAnCE/Config_Handlers/NIA_Handler.h
+ * DAnCE/Config_Handlers/PCI_Handler.cpp
+ * DAnCE/Config_Handlers/PCI_Handler.h
+ * DAnCE/Config_Handlers/PC_Handler.cpp
+ * DAnCE/Config_Handlers/PC_Handler.h
+ * DAnCE/Config_Handlers/Plan_Handler.cpp
+ * DAnCE/Config_Handlers/Plan_Handler.h
+ * DAnCE/Config_Handlers/Process_Element.cpp
+ * DAnCE/Config_Handlers/Process_Element.h
+ * DAnCE/Config_Handlers/Process_Element_T.cpp
+ * DAnCE/Config_Handlers/Process_Element_T.h
+ * DAnCE/Config_Handlers/RS_Handler.cpp
+ * DAnCE/Config_Handlers/RS_Handler.h
+ * DAnCE/Config_Handlers/RUK_Handler.cpp
+ * DAnCE/Config_Handlers/RUK_Handler.h
+ * DAnCE/Config_Handlers/Requirement_Handler.cpp
+ * DAnCE/Config_Handlers/Requirement_Handler.h
+ * DAnCE/Config_Handlers/SPK_Handler.cpp
+ * DAnCE/Config_Handlers/SPK_Handler.h
+ * DAnCE/Config_Handlers/SP_Handler.cpp
+ * DAnCE/Config_Handlers/SP_Handler.h
+ * DAnCE/Config_Handlers/TPD_Handler.cpp
+ * DAnCE/Config_Handlers/TPD_Handler.h
+ * DAnCE/Config_Handlers/Utils.cpp
+ * DAnCE/Config_Handlers/Utils.h
+ * DAnCE/Config_Handlers/XercesString.cpp
+ * DAnCE/Config_Handlers/XercesString.h
+
+ Removed files unused by the new config handlers.
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+
+ Enabled the config handlers build.
+
+Sat Mar 19 18:19:34 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/XMLSchema/Traversal.hpp
+ * DAnCE/Config_Handlers/XMLSchema/Traversal.ipp
+ * DAnCE/Config_Handlers/XMLSchema/Traversal.tpp
+ * DAnCE/Config_Handlers/XMLSchema/TypeInfo.hpp
+ * DAnCE/Config_Handlers/XMLSchema/TypeInfo.ipp
+ * DAnCE/Config_Handlers/XMLSchema/TypeInfo.tpp
+ * DAnCE/Config_Handlers/XMLSchema/Types.hpp
+ * DAnCE/Config_Handlers/XMLSchema/Types.ipp
+ * DAnCE/Config_Handlers/XMLSchema/Types.tpp
+ * DAnCE/Config_Handlers/XMLSchema/Writer.hpp
+ * DAnCE/Config_Handlers/XMLSchema/Writer.ipp
+ * DAnCE/Config_Handlers/XMLSchema/Writer.tpp
+ * DAnCE/Config_Handlers/XSCRT/Elements.hpp
+ * DAnCE/Config_Handlers/XSCRT/Elements.ipp
+ * DAnCE/Config_Handlers/XSCRT/Elements.tpp
+ * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp
+ * DAnCE/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp
+ * DAnCE/Config_Handlers/XSCRT/Parser.hpp
+ * DAnCE/Config_Handlers/XSCRT/Parser.ipp
+ * DAnCE/Config_Handlers/XSCRT/Parser.tpp
+ * DAnCE/Config_Handlers/XSCRT/Traversal.hpp
+ * DAnCE/Config_Handlers/XSCRT/Traversal.ipp
+ * DAnCE/Config_Handlers/XSCRT/Traversal.tpp
+ * DAnCE/Config_Handlers/XSCRT/Writer.hpp
+ * DAnCE/Config_Handlers/XSCRT/Writer.ipp
+ * DAnCE/Config_Handlers/XSCRT/Writer.tpp
+ * DAnCE/Config_Handlers/XSCRT/XML.hpp
+ * DAnCE/Config_Handlers/XSCRT/XML.ipp
+ * DAnCE/Config_Handlers/XSCRT/XML.tpp
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.ipp
+ * DAnCE/Config_Handlers/XSCRT/XMLSchema.tpp
+
+ Completed the merge of xsc_handler_1 into main.
+
+Sat Mar 19 17:29:50 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+
+ Fixed compiler errors.
+
+Sat Mar 19 16:57:41 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Old_Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Any_Handler.h:
+ * DAnCE/Old_Config_Handlers/Basic_Deployment_Data.cpp:
+ * DAnCE/Old_Config_Handlers/Basic_Deployment_Data.hpp:
+ * DAnCE/Old_Config_Handlers/Basic_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Basic_Handler.h:
+ * DAnCE/Old_Config_Handlers/CAD_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CAD_Handler.h:
+ * DAnCE/Old_Config_Handlers/CEPE_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CEPE_Handler.h:
+ * DAnCE/Old_Config_Handlers/CPK_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CPK_Handler.h:
+ * DAnCE/Old_Config_Handlers/CPR_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CPR_Handler.h:
+ * DAnCE/Old_Config_Handlers/Cap_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Cap_Handler.h:
+ * DAnCE/Old_Config_Handlers/CompImplDesc_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CompImplDesc_Handler.h:
+ * DAnCE/Old_Config_Handlers/CompIntrDesc_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CompIntrDesc_Handler.h:
+ * DAnCE/Old_Config_Handlers/CompPkgDesc_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/CompPkgDesc_Handler.h:
+ * DAnCE/Old_Config_Handlers/Config.h:
+ * DAnCE/Old_Config_Handlers/Config_Error_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Config_Error_Handler.h:
+ * DAnCE/Old_Config_Handlers/Config_Handler_export.h:
+ * DAnCE/Old_Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/Old_Config_Handlers/DT_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/DT_Handler.h:
+ * DAnCE/Old_Config_Handlers/Deployment.cpp:
+ * DAnCE/Old_Config_Handlers/Deployment.hpp:
+ * DAnCE/Old_Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/Old_Config_Handlers/DnC_Dump.h:
+ * DAnCE/Old_Config_Handlers/DnC_Dump_T.cpp:
+ * DAnCE/Old_Config_Handlers/DnC_Dump_T.h:
+ * DAnCE/Old_Config_Handlers/Domain_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Domain_Handler.h:
+ * DAnCE/Old_Config_Handlers/Dump_Obj.cpp:
+ * DAnCE/Old_Config_Handlers/Dump_Obj.h:
+ * DAnCE/Old_Config_Handlers/ERE_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/ERE_Handler.h:
+ * DAnCE/Old_Config_Handlers/IAD_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/IAD_Handler.h:
+ * DAnCE/Old_Config_Handlers/ID_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/ID_Handler.h:
+ * DAnCE/Old_Config_Handlers/IR_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/MID_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/MID_Handler.h:
+ * DAnCE/Old_Config_Handlers/NIA_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/NIA_Handler.h:
+ * DAnCE/Old_Config_Handlers/PCI_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/PCI_Handler.h:
+ * DAnCE/Old_Config_Handlers/PC_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/PC_Handler.h:
+ * DAnCE/Old_Config_Handlers/Plan_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Plan_Handler.h:
+ * DAnCE/Old_Config_Handlers/Process_Element.cpp:
+ * DAnCE/Old_Config_Handlers/Process_Element.h:
+ * DAnCE/Old_Config_Handlers/Process_Element_T.cpp:
+ * DAnCE/Old_Config_Handlers/Process_Element_T.h:
+ * DAnCE/Old_Config_Handlers/Property_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Property_Handler.h:
+ * DAnCE/Old_Config_Handlers/RS_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/RS_Handler.h:
+ * DAnCE/Old_Config_Handlers/RUK_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/RUK_Handler.h:
+ * DAnCE/Old_Config_Handlers/Requirement_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/Requirement_Handler.h:
+ * DAnCE/Old_Config_Handlers/SPK_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/SPK_Handler.h:
+ * DAnCE/Old_Config_Handlers/SP_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/SP_Handler.h:
+ * DAnCE/Old_Config_Handlers/TPD_Handler.cpp:
+ * DAnCE/Old_Config_Handlers/TPD_Handler.h:
+ * DAnCE/Old_Config_Handlers/Utils.cpp:
+ * DAnCE/Old_Config_Handlers/Utils.h:
+ * DAnCE/Old_Config_Handlers/XercesString.cpp:
+ * DAnCE/Old_Config_Handlers/XercesString.h:
+ * DAnCE/Old_Config_Handlers/ccd.cpp:
+ * DAnCE/Old_Config_Handlers/ccd.hpp:
+ * DAnCE/Old_Config_Handlers/cdd.cpp:
+ * DAnCE/Old_Config_Handlers/cdd.hpp:
+ * DAnCE/Old_Config_Handlers/cdp.cpp:
+ * DAnCE/Old_Config_Handlers/cdp.hpp:
+ * DAnCE/Old_Config_Handlers/cid.cpp:
+ * DAnCE/Old_Config_Handlers/cid.hpp:
+ * DAnCE/Old_Config_Handlers/cpd.cpp:
+ * DAnCE/Old_Config_Handlers/cpd.hpp:
+ * DAnCE/Old_Config_Handlers/iad.cpp:
+ * DAnCE/Old_Config_Handlers/iad.hpp:
+ * DAnCE/Old_Config_Handlers/pcd.cpp:
+ * DAnCE/Old_Config_Handlers/pcd.hpp:
+ * DAnCE/Old_Config_Handlers/toplevel.cpp:
+ * DAnCE/Old_Config_Handlers/toplevel.hpp:
+
+ Older version of config handlers.
+
+
+Sat Mar 19 16:14:20 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/ccd.cpp:
+ * DAnCE/Config_Handlers/ccd.hpp:
+ * DAnCE/Config_Handlers/cdd.cpp:
+ * DAnCE/Config_Handlers/cdd.hpp:
+ * DAnCE/Config_Handlers/cdp.cpp:
+ * DAnCE/Config_Handlers/cdp.hpp:
+ * DAnCE/Config_Handlers/cid.cpp:
+ * DAnCE/Config_Handlers/cid.hpp:
+ * DAnCE/Config_Handlers/cpd.cpp:
+ * DAnCE/Config_Handlers/cpd.hpp:
+ * DAnCE/Config_Handlers/iad.cpp:
+ * DAnCE/Config_Handlers/iad.hpp:
+ * DAnCE/Config_Handlers/pcd.cpp:
+ * DAnCE/Config_Handlers/pcd.hpp:
+ * DAnCE/Config_Handlers/toplevel.cpp:
+ * DAnCE/Config_Handlers/toplevel.hpp:
+ * DAnCE/Config_Handlers/ERE_Handler.cpp:
+ * DAnCE/Config_Handlers/ERE_Handler.h:
+ * DAnCE/Config_Handlers/IDD_Handler.cpp:
+ * DAnCE/Config_Handlers/IDD_Handler.h:
+ * DAnCE/Config_Handlers/IDREF_Base.cpp:
+ * DAnCE/Config_Handlers/IDREF_Base.h:
+ * DAnCE/Config_Handlers/ID_Handler.cpp:
+ * DAnCE/Config_Handlers/ID_Handler.h:
+ * DAnCE/Config_Handlers/IRDD_Handler.cpp:
+ * DAnCE/Config_Handlers/IRDD_Handler.h:
+ * DAnCE/Config_Handlers/MDD_Handler.cpp:
+ * DAnCE/Config_Handlers/MDD_Handler.h:
+ * DAnCE/Config_Handlers/PCD_Handler.cpp:
+ * DAnCE/Config_Handlers/PCD_Handler.h:
+ * DAnCE/Config_Handlers/PSPE_Handler.cpp:
+ * DAnCE/Config_Handlers/PSPE_Handler.h:
+ * DAnCE/Config_Handlers/Property_Handler.cpp:
+ * DAnCE/Config_Handlers/Property_Handler.h:
+ * DAnCE/Config_Handlers/RDD_Handler.cpp:
+ * DAnCE/Config_Handlers/RDD_Handler.h:
+ * DAnCE/Config_Handlers/Req_Handler.cpp:
+ * DAnCE/Config_Handlers/Req_Handler.h:
+ * DAnCE/Config_Handlers/XML_Error_Handler.cpp:
+ * DAnCE/Config_Handlers/XML_Error_Handler.h:
+ * DAnCE/Config_Handlers/XML_File_Intf.cpp:
+ * DAnCE/Config_Handlers/XML_File_Intf.h:
+ * DAnCE/Config_Handlers/XML_Helper.cpp:
+ * DAnCE/Config_Handlers/XML_Helper.h:
+ * DAnCE/Config_Handlers/XercesString.cpp:
+ * DAnCE/Config_Handlers/XercesString.h:
+ * DAnCE/Config_Handlers/ADD_Handler.cpp:
+ * DAnCE/Config_Handlers/ADD_Handler.h:
+ * DAnCE/Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Config_Handlers/Any_Handler.h:
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp:
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.hpp:
+ * DAnCE/Config_Handlers/CCD_Handler.cpp:
+ * DAnCE/Config_Handlers/CCD_Handler.h:
+ * DAnCE/Config_Handlers/CEPE_Handler.cpp:
+ * DAnCE/Config_Handlers/CEPE_Handler.h:
+ * DAnCE/Config_Handlers/CPD_Handler.cpp:
+ * DAnCE/Config_Handlers/CPD_Handler.h:
+ * DAnCE/Config_Handlers/CRDD_Handler.cpp:
+ * DAnCE/Config_Handlers/CRDD_Handler.h:
+ * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp:
+ * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h:
+ * DAnCE/Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/Config_Handlers/Config_Handlers_Export.h:
+ * DAnCE/Config_Handlers/DP_Handler.cpp:
+ * DAnCE/Config_Handlers/DP_Handler.h:
+ * DAnCE/Config_Handlers/DP_PCD_Handler.cpp:
+ * DAnCE/Config_Handlers/DP_PCD_Handler.h:
+ * DAnCE/Config_Handlers/DataType_Handler.cpp:
+ * DAnCE/Config_Handlers/DataType_Handler.h:
+ * DAnCE/Config_Handlers/Deployment.cpp:
+ * DAnCE/Config_Handlers/Deployment.hpp:
+ * DAnCE/Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump.h:
+ * DAnCE/Config_Handlers/DnC_Dump_T.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump_T.h:
+ * DAnCE/Config_Handlers/Dump_Obj.cpp:
+ * DAnCE/Config_Handlers/Dump_Obj.h:
+
+ Merged branch xsc_handler_1 to main.
+
+Sat Mar 19 15:36:55 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/RDD_Handler.cpp:
+ * DAnCE/Config_Handlers/RDD_Handler.h:
+ * DAnCE/Config_Handlers/Req_Handler.cpp:
+ * DAnCE/Config_Handlers/Req_Handler.h:
+ * DAnCE/Config_Handlers/XML_Error_Handler.cpp:
+ * DAnCE/Config_Handlers/XML_Error_Handler.h:
+ * DAnCE/Config_Handlers/XML_File_Intf.cpp:
+ * DAnCE/Config_Handlers/XML_File_Intf.h:
+ * DAnCE/Config_Handlers/XML_Helper.cpp:
+ * DAnCE/Config_Handlers/XML_Helper.h:
+
+ More XSC config handlers.
+
+Sat Mar 19 15:29:45 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.h:
+ * DAnCE/Config_Handlers/Basic_Deployment_Data.cpp:
+ * DAnCE/Config_Handlers/CEPE_Handler.cpp:
+ * DAnCE/Config_Handlers/CEPE_Handler.h:
+ * DAnCE/Config_Handlers/Deployment.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump.h:
+ * DAnCE/Config_Handlers/DnC_Dump_T.cpp:
+ * DAnCE/Config_Handlers/DnC_Dump_T.h:
+ * DAnCE/Config_Handlers/Dump_Obj.cpp:
+ * DAnCE/Config_Handlers/Dump_Obj.h:
+ * DAnCE/Config_Handlers/ERE_Handler.cpp:
+ * DAnCE/Config_Handlers/ERE_Handler.h:
+ * DAnCE/Config_Handlers/IDD_Handler.cpp:
+ * DAnCE/Config_Handlers/IDD_Handler.h:
+ * DAnCE/Config_Handlers/IDREF_Base.cpp:
+ * DAnCE/Config_Handlers/IDREF_Base.h:
+ * DAnCE/Config_Handlers/ID_Handler.cpp:
+ * DAnCE/Config_Handlers/ID_Handler.h:
+ * DAnCE/Config_Handlers/IRDD_Handler.cpp:
+ * DAnCE/Config_Handlers/IRDD_Handler.h:
+ * DAnCE/Config_Handlers/MDD_Handler.cpp:
+ * DAnCE/Config_Handlers/MDD_Handler.h:
+ * DAnCE/Config_Handlers/Modified_Deployment.xsd:
+ * DAnCE/Config_Handlers/PCD_Handler.cpp:
+ * DAnCE/Config_Handlers/PCD_Handler.h:
+ * DAnCE/Config_Handlers/PSPE_Handler.cpp:
+ * DAnCE/Config_Handlers/PSPE_Handler.h:
+
+ More XML config handlers.
+
+Sat Mar 19 15:25:17 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/ADD_Handler.cpp:
+ * DAnCE/Config_Handlers/ADD_Handler.h:
+ * DAnCE/Config_Handlers/BasicSP.cdp:
+ * DAnCE/Config_Handlers/CCD_Handler.cpp:
+ * DAnCE/Config_Handlers/CCD_Handler.h:
+ * DAnCE/Config_Handlers/CPD_Handler.cpp:
+ * DAnCE/Config_Handlers/CPD_Handler.h:
+ * DAnCE/Config_Handlers/CRDD_Handler.cpp:
+ * DAnCE/Config_Handlers/CRDD_Handler.h:
+ * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.cpp:
+ * DAnCE/Config_Handlers/ComponentPropertyDescription_Handler.h:
+ * DAnCE/Config_Handlers/Config_Handlers_Export.h:
+ * DAnCE/Config_Handlers/DP_Handler.cpp:
+ * DAnCE/Config_Handlers/DP_Handler.h:
+ * DAnCE/Config_Handlers/DP_PCD_Handler.cpp:
+ * DAnCE/Config_Handlers/DP_PCD_Handler.h:
+ * DAnCE/Config_Handlers/DataType_Handler.cpp:
+ * DAnCE/Config_Handlers/DataType_Handler.h:
+
+ Added a XSC compiler compliant config handlers.
+
+Sat Mar 19 15:22:54 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ * DAnCE/ExecutionManager/DAM_Map.h:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h:
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+
+ Fixed some more compiler errors.
+
+Sat Mar 19 15:06:37 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ * DAnCE/ExecutionManager/DAM_Map.h:
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ * DAnCE/NodeApplication/NodeApplication.cpp:
+ * DAnCE/NodeManager/NodeDaemon_Impl.cpp:
+
+ Made changes to fix compile errors.
+
+Sat Mar 19 15:02:03 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ *
+ DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Made changes to reflect changes made to the CIAO
+ infrastructure to support NodeApplication instantiate
+ multiple containers.
+
+ Thanks to Gan Deng <dengg@dre.vanderbilt.edu> for making this
+ change.
+
+Sat Mar 19 14:54:15 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/descriptors/BasicSP.cdp:
+ * DAnCE/examples/BasicSP/descriptors/NodeManagerMap.dat:
+ * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl:
+ * DAnCE/examples/BasicSP/descriptors/flattern_deploymentplan.cdp:
+
+ Added a flattened deployment plan for testing the DaNCE
+ infrastructure.
+
+ Thanks to Will Otte <w.otte@vanderbilt.edu> for helping
+ out with this project.
+
+Sat Mar 19 14:23:49 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base.idl:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base.mpc:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base_stub_export.h:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver.mpc:
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+
+ Fixed few minor compiler errors.
+
+Sat Mar 19 13:40:30 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base.idl:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base.mpc:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base_stub_export.h:
+ * DAnCE/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver.cidl:
+ * DAnCE/examples/Swapping/Receiver/Receiver.idl:
+ * DAnCE/examples/Swapping/Receiver/Receiver.mpc:
+ * DAnCE/examples/Swapping/Receiver/Receiver_exec.cpp:
+ * DAnCE/examples/Swapping/Receiver/Receiver_exec.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver_exec_export.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver_stub_export.h:
+ * DAnCE/examples/Swapping/Receiver/Receiver_svnt_export.h:
+ * DAnCE/examples/Swapping/Sender/Sender.cidl:
+ * DAnCE/examples/Swapping/Sender/Sender.idl:
+ * DAnCE/examples/Swapping/Sender/Sender.mpc:
+ * DAnCE/examples/Swapping/Sender/Sender_exec.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_1.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.cpp:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_2.h:
+ * DAnCE/examples/Swapping/Sender/Sender_exec_export.h:
+ * DAnCE/examples/Swapping/Sender/Sender_stub_export.h:
+ * DAnCE/examples/Swapping/Sender/Sender_svnt_export.h:
+ * DAnCE/examples/Swapping/Sender/starter.cpp:
+
+ Added a "HelloWorld" example that can test the dynamic
+ swapping of component implementation capability.
+
+ Thanks to Bala Natarajan <bala@dre.vanderbilt.edu>
+ for helping me with this project.
+
+Sat Mar 19 13:17:37 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+
+ Made changes to reflect changes made to the infrastructure
+ to provide the capability in the NodeApplication
+ to support multiple containers.
+
+Sat Mar 19 13:13:13 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+
+ Changes to reflect the infrasrtuctural changes related
+ to providing capability in the NodeApplication
+ to support multiple containers.
+
+ Thanks to Gan Deng <dengg@dre.vanderbilt.edu> for
+ architecting and implementing this project.
+
+Sat Mar 19 13:08:18 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/NodeApplication_Impl.inl:
+
+ Made some changes to fix compiler errors.
+
+Sat Mar 19 12:48:44 2005 Jaiganesh B <jai@dre.vanderbilt.edu>
+
+ * DAnCE/ciao/CCM_Core.mpc:
+ * DAnCE/ciao/CIAO_Config.h:
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/Container_Base.h:
+ * DAnCE/ciao/Container_Impl.cpp:
+ * DAnCE/ciao/Container_Impl.h:
+ * DAnCE/ciao/Container_Impl.inl:
+ * DAnCE/ciao/Context_Impl_T.cpp:
+ * DAnCE/ciao/Deployment.idl:
+ * DAnCE/ciao/Deployment_Core.idl:
+ * DAnCE/ciao/Dynamic_Component_Activator.cpp:
+ * DAnCE/ciao/Dynamic_Component_Activator.h:
+ * DAnCE/ciao/Dynamic_Component_Servant_Base.cpp:
+ * DAnCE/ciao/Dynamic_Component_Servant_Base.h:
+ * DAnCE/ciao/Dynamic_Component_Servant_T.cpp:
+ * DAnCE/ciao/Dynamic_Component_Servant_T.h:
+ * DAnCE/ciao/Home_Servant_Impl_Base.h:
+ * DAnCE/ciao/Home_Servant_Impl_T.cpp:
+ * DAnCE/ciao/Home_Servant_Impl_T.h:
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ * DAnCE/ciao/NodeApplication_Impl.inl:
+ * DAnCE/ciao/Object_Set_T.cpp:
+ * DAnCE/ciao/Object_Set_T.h:
+ * DAnCE/ciao/Object_Set_T.inl:
+ * DAnCE/ciao/Port_Activator_T.cpp:
+ * DAnCE/ciao/Servant_Activator.cpp:
+ * DAnCE/ciao/Servant_Activator.h:
+ * DAnCE/ciao/Servant_Impl_Base.cpp:
+ * DAnCE/ciao/Servant_Impl_Base.h:
+ * DAnCE/ciao/Servant_Impl_T.cpp:
+ * DAnCE/ciao/Servant_Impl_T.h:
+ * DAnCE/ciao/SwapExec.idl:
+ * DAnCE/ciao/Swapping_Container.cpp:
+ * DAnCE/ciao/Swapping_Container.h:
+ * DAnCE/ciao/Swapping_Container.inl:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.cpp:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_Base.h:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp:
+ * DAnCE/ciao/Swapping_Servant_Home_Impl_T.h:
+ * DAnCE/ciao/UpgradeableContext.idl:
+ * DAnCE/ciao/Upgradeable_Context_Impl_T.cpp:
+ * DAnCE/ciao/Upgradeable_Context_Impl_T.h:
+
+ Added CIAO infrastructure changes to allow NodeApplications
+ to support multi container instantiation.
+
+ Added CIAO infrastructure changes to allow dynamic
+ swapping of component implementations.
+
+ Thanks to Gan Deng <dengg@dre.vanderbilt.edu> and
+ Bala Natarajan <bala@dre.vanderbilt.edu> for their
+ help in architecting and implementing these changes.
+
+Fri Mar 18 18:34:20 2005 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/ValueTypeMember.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueTypeMember.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueTypeMember.tpp:
+
+ First part of the "full" support for members in valuetypes.
+
+
+Thu Mar 17 10:18:33 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added command line option 'custom-container' to the CIDL
+ compiler backend, and code generation to execute if the
+ argument to the new option is 'upgradeable'. CIAO
+ infrastructure changes to support dynamic component
+ swapping will be merged from a branch shortly - these
+ CIDL compiler changes will not affect any existing builds
+ or tests since they don't use the new command line option.
+
+Fri Mar 11 10:33:28 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/cdp.xsd
+
+ Corrected an incorrect element in the schema.
+
+Fri Mar 11 12:01:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/ComponentsC.h:
+ * ciao/ComponentsS.h:
+ * DAnCE/ciao/ComponentsC.h:
+ * DAnCE/ciao/ComponentsS.h:
+ * DAnCE/NodeManager/NodeDaemon_Impl.h:
+ * performance-tests/Benchmark/LatencyTest.h:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.h:
+ Changed _MSC_VER check
+
+Fri Mar 4 17:13:16 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Hello_Base/Hello_Base.idl:
+ * examples/Hello/Hello_Base/Hello_Base.mpc:
+ * examples/Hello/Receiver/Receiver.idl:
+ * examples/Hello/Receiver/Receiver.mpc:
+ * examples/Hello/Sender/Sender.mpc:
+
+ Cosmetic changes to IDL files and changes to MPC files to
+ eliminate unnecessary files in a given project and bring
+ in missing export header files.
+
+Thu Mar 3 10:31:10 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+
+ - Added support for .cdl file extension similar to
+ support already in the servant generators.
+
+ - Fixed bug in export include generation.
+
+ Thanks to Matt Emerson <mjemerson@isis.vanderbilt.edu>,
+ Ming Xiong <xiongm@isi.vanderbilt.edu>, James Hill
+ <jhill@isis.vanderbilt.edu> and Stoyan Paunov
+ <spaunov@isis.vanderbilt.edu> for reporting these
+ problems.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ - Replaced remaining instances of generation of 'new' with
+ 'ACE_NEW' and changed code generation to reduce line
+ lengths.
+
+ - Changed code generation of Cookie_var for multiplex
+ receptacles to pass a Cookie* to ACE_NEW, then
+ assign to the _var, instead of passing in _var.out(),
+ which causes the allocation to fail on some platforms.
+ Thanks to Don Busch <busch_d@ociweb.com> for reporting
+ the problem.
+
+Mon Mar 03 09:37:23 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/Hello.cdp
+ * DAnCE/examples/Hello/descriptors/hello.dat
+
+ Remove these two files because the file name is bad.
+
+ * DAnCE/examples/Hello/descriptors/DeploymentPlan.cdp
+ * DAnCE/examples/Hello/descriptors/NodeManagerMap.dat
+
+ Added these two files.
+
+ * DAnCE/examples/Hello/step-by-step.html
+
+ Fixed this page to reflex the above change.
+
+Mon Mar 03 08:59:23 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc
+
+ Fixed the Hello_Base_DnC_svnt project settings which
+ caused comilation errors.
+
+Wed Mar 02 11:42:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Config_Handlers/Config_Handlers.mpc
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ * performance-tests/Protocols/Controller/Controller.mpc
+ * performance-tests/Protocols/Receiver/Receiver.mpc
+ * performance-tests/Protocols/Sender/Sender.mpc
+ * tests/RTCCM/DiffServ/Controller/Controller.mpc
+ Use exceptions as base project instead of requires exceptions
+
+Mon Mar 02 18:30:25 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html
+ * DAnCE/examples/Hello/step-by-step.html
+
+ Modified these two documentation page to fix some errors.
+
+ * DAnCE/examples/Hello/Hello_Base/Hello_Base.mpc
+
+ Fixed wrong shared library names and project names.
+
+Sat Feb 26 14:38:46 2005 Arvind S. Krishna <arvindk@tango.dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc:
+ * examples/handcrafted/BasicSP_EC/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC2/EC/EC.mpc:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc:
+ * examples/handcrafted/BasicSP_EC2/BasicSP.mpc:
+
+ Replaced all occurances of "dummy" with "dummy_label"
+
+ * bin/replace_dummy_with_dummylabel.sh:
+
+ Shell script that can be used to do this. In case people find it
+ useful.
+
+
+Tue Feb 22 09:55:51 2005 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+
+ Fixed typos in code generation that were omitting a space
+ between the type name and '_ciao_extract_val' for enums,
+ structs and unions when used as component or home attributes.
+ Thanks to Steve Baker <steven_d_baker@raytheon.com> for
+ reporting the bug with enums.
+
+Fri Feb 18 10:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/Servant_Activator.h:
+ * ciao/Servant_Activator.h:
+ Added missing includes because of POA refactoring
+
+Thu Feb 17 14:04:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Component_Base.idl:
+ Fixed typo in include of orb.idl. Thanks to Roland Schimmack
+ <Roland dot Schimmack at gmx dot de> for reporting this
+
+Tue Feb 15 22:43:34 2005 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BMDisplay_exec.h:
+
+ Added missing export file to make things compile on Windows
+ platforms. Thanks to Diana Ukleja <Diana_Ukleja@raytheon.com>
+ for pointing this out.
+
+Mon Feb 14 14:52:32 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NEWS
+
+ Updated the NEWS file by adding support for parsing
+ hierarchical assembly of component descriptors.
+
+Sun Feb 13 13:25:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * Release:
+ Removed CIAO-INSTALL from the release files. It is already
+ picked up because we include the complete CIAO directory
+
+Fri Feb 11 11:12:21 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NEWS
+
+ Updated the NEWS file by adding support for setting up
+ attribute in component configuration.
+
+Fri Feb 11 11:10:54 2005 Will Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Modified_Deployment.xsd:
+
+ Corrected a couple mistakes in the schema.
+
+Thu Feb 10 07:11:04 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO version 0.4.4 released.
+
+Tue Feb 08 10:04:21 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NEWS
+
+ Updated the NEWS file for the coming 0.4.4 release.
+
+Mon Feb 7 09:49:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * Release:
+ Added CIAO-INSTALL to the release files
+
+Fri Feb 4 09:35:00 2005 Emre Turkay <turkaye@dre.vanderbilt.edu>
+
+ * DAnCE/examples/Hello/descriptors/basicNodeDaemon.pl:
+ The perl script to create node daemons created.
+
+ * DAnCE/examples/Hello/step-by-step.html:
+ Step by step tutorial for the DAnCE.
+
+Fri Feb 4 12:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ Include SString.h instead of SStringfwd.h to fix compile errors with
+ CBuilderX
+
+Thu Feb 3 20:01:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Segment_Timer/Segment_Timer.mpc:
+ Removed TAO_ROOT again, the gnu template has been changed so that
+ when CIAO is detected, also TAO_ROOT is set
+
+Thu Feb 3 12:32:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ciao/NodeApplication_Impl.h:
+ Added include of ace/SString.h to fix compile errors with CBuilderX
+
+Thu Feb 3 10:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Segment_Timer/Segment_Timer.mpc:
+ Added $(TAO_ROOT) so that MPC creates a correct GNU makefile
+
+Wed Feb 2 19:48:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * rules.ciao.GNU:
+ Fixed error in this file
+
+Wed Feb 2 09:39:25 2005 Chad Elliott <elliott_c@ociweb.com>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+ * CIDLC/CIDLC.mpc:
+
+ Converted includes to incorporate $(CIAO_ROOT). This allows the
+ GNUACEProjectCreator to recognize these projects as CIAO projects.
+
+ * DAnCE/ciao/CCM_Core.mpc:
+ * ciao/CCM_Core.mpc:
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+ * tools/Segment_Timer/Segment_Timer.mpc:
+
+ Added a bogus include of $(CIAO_ROOT). This allows the
+ GNUACEProjectCreator to recognize these projects as CIAO projects.
+
+Wed Feb 2 14:33:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * rules.ciao.GNU:
+ New rules file to set the correct SOVERSION and SONAME values
+
+Wed Feb 2 10:51:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Port_Activator_T.cpp:
+ Added include of OS_NS_string.h to get ACE_OS::strcmp
+
+Tue Feb 1 18:09:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ * DAnCE/ciao/CCM_Core.mpc:
+ Removed some ciaoversion based projects I missed during my checkin
+ below
+
+Tue Feb 1 13:41:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ * DAnCE/ciao/CCM_Core.mpc:
+ Removed ciaoversion as base project. This will be removed because it
+ results in the fact that each generated GNU makefile will get the
+ version number generated. We want that the GNU make rules get the
+ version number from Version.h
+
+Mon Jan 31 21:00:12 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (pre):
+
+ Generate '#include "ace/OS_NS_string.h"' directive. CIAO CIDL
+ servant sources call ACE_OS::strcmp(), the prototype of which is
+ found in that header. Necessitated by inter-header dependency
+ reductions in ACE.
+
+Mon Jan 31 11:59:04 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Config_Handlers/CPK_Handler.cpp:
+ * DAnCE/Config_Handlers/DT_Handler.cpp:
+ * DAnCE/Config_Handlers/Property_Handler.cpp:
+ * DAnCE/Config_Handlers/RS_Handler.cpp:
+ * DAnCE/Config_Handlers/Requirement_Handler.cpp:
+ * DAnCE/Config_Handlers/SP_Handler.cpp:
+ * DAnCE/ciao/Port_Activator_T.cpp:
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * ciao/Container_Impl.cpp:
+ * performance-tests/Protocols/Controller/Controller.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+
+ Added missing header include directives that are necessary due
+ to inter-header dependency reductions in ACE.
+
+Sun Jan 30 20:30:46 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/ciao/Container_Base.cpp:
+ * DAnCE/ciao/NodeApplication_Impl.cpp:
+ * ciao/Container_Base.cpp:
+ * ciao/ServerActivator_Impl.h:
+ * docs/tutorial/Hello/hello_exec.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * tests/RTCCM/Priority_Test/Controllers/client.cpp:
+ * tests/RTCCM/Priority_Test/Workers/CB_Worker_exec.cpp:
+ * tools/Assembly_Deployer/Deployment_Configuration.h:
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+
+ Added missing header include directives that are necessary due
+ to inter-header dependency reductions in ACE.
+
+Sun Jan 23 01:49:51 2005 Marek Brudka <mbrudka@aster.pl>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/README (Module):
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc (Module):
+ Changes related with separation of GUI reactors.
+ The additional information is avalaible in ChangeLog at REACTOR_SEPARATION branch (below).
+
+ Mon Dec 6 00:39:19 2004 Marek Brudka <mbrudka@aster.pl>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/README (Module):
+ Remove reference to ACE_HAS_QT.
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc (Module):
+ Removed deprecated qt_moc base project.
+
+Fri Jan 21 17:27:12 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
+
+ Fixed dependency relationship by making
+ NodeAppTest_RoundTrip_stub depending on CIAO_DnC_Container.
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
+
+ Fixed warning on Debian_Full_Reactor build. The warning is
+ caused because of assigning "const char*" to a "char *" type.
+
+ Thanks Johnny Willemsen <jwillemsen@remedy.nl> for pointing
+ these.
+
+Thu Jan 20 18:29:47 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
+
+ * DAnCE/Config_Handlers/Any_Handler.cpp:
+ * DAnCE/Config_Handlers/Utils.cpp:
+ * performance-tests/Protocols/Sender/Sender_exec.cpp:
+ * tools/Daemon/Daemon_Impl.cpp:
+
+ Converted all ACE_{static,dynamic,reinterpret,const}_cast macros
+ calls to their standard C++ counterparts using new
+ bin/ACE-casts-convert script. The ACE cast macros were
+ deprecated back in ACE 5.4.2.
+
+Thu Jan 20 09:54:04 2005 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/descriptors/NOTE.txt:
+ * examples/OEP/Display/descriptors/NOTE-win.txt:
+
+ Fixed the discrepancy on using Assembly_Deployer. Thanks to
+ Martina Yen <martina_h_yen@raytheon.com> for reporting this.
+
+Wed Jan 19 09:39:14 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/BasicSP.mpc
+ * DAnCE/examples/BasicSP/BMClosedED/BMClosedED.mpc
+ * DAnCE/examples/BasicSP/BMDevice/BMDevice.mpc
+ * DAnCE/examples/BasicSP/BMDisplay/BMDisplay.mpc
+ * DAnCE/examples/BasicSP/EC/EC.mpc
+
+ Changed the shared component library name from
+ <what_ever_component>_DnC_<stub> to <What_ever_component>_<stub>,
+ since it doesn't make sense to let the modelers to put _DnC
+ trailing a component name.
+
+ The same change applied to _svnt and _exec libraries.
+
+ * DAnCE/examples/BasicSP/descriptors/basicNodeDaemon.pl
+
+ Fixed this script since Some earlier cosmetic change make
+ this perl script broken.
+
+ Thanks Steven Baker <Steven_D_Baker@raytheon.com> and
+ Sam Abbe <sam_abbe@raytheon.com> to pointing errors to
+ run this example.
+
+Sat Jan 15 15:16:14 2005 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/examples/BasicSP/README.html
+
+ Updated this README file for instructions on running the BasicSP
+ example by using DAnCE. Thanks Sam Abbe <sam_abbe@raytheon.com>
+ for pointing errors on this document page. This fixes bugid
+ 2031.
+
+Mon Jan 10 09:45:14 2005 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * DAnCE/RTNodeApplication/RTServer_Impl.h:
+ * DAnCE/RTNodeApplication/RTServer_Impl.cpp: Removed init method
+ altogether. VC6 can't handle the syntax and we'll deal with
+ later.
+
+Fri Jan 7 10:02:02 2005 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * DAnCE/RTNodeApplication/RTServer_Impl.cpp (init): Changed to
+ call the virtual function defined by the parent explicitly with
+ this pointer to work around a VC6 bug.
+
+Wed Jan 5 15:20:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.inl:
+ * DAnCE/tests/Config_Handlers/Handler_Test.i:
+ Removed inl/i file, updated h,cpp
+
+Wed Jan 5 14:57:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Assembly_Deployer/Deployment_Configuration.{h,cpp,inl}:
+ * tools/XML_Helpers/XML_Utils.{h,cpp,inl}:
+ Removed inl file, updated h,cpp
+
+Wed Jan 5 10:45:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RTNodeApplication/RTServer_Impl.h:
+ Fixed compile problem in emulated exception builds due to
+ incorrect environment macro
+
+Mon Jan 3 10:01:09 2005 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * DAnCE/RTNodeApplication/README:
+ * DAnCE/RTNodeApplication/NodeApplication_Task.cpp:
+ * DAnCE/RTNodeApplication/NodeApplication_Task.h:
+ * DAnCE/RTNodeApplication/NodeApplication_Task.inl:
+ * DAnCE/RTNodeApplication/RTNodeApplication.cpp:
+ * DAnCE/RTNodeApplication/RTNodeApplication.mpc:
+ * DAnCE/RTNodeApplication/RTServer_Impl.cpp:
+ * DAnCE/RTNodeApplication/RTServer_Impl.h:
+ * DAnCE/RTNodeApplication/RTServer_Impl.inl:
+ * DAnCE/RTNodeApplication/senv.sh: Added a minimal
+ real-time-enabled NodeApplication server.
+
+Mon Jan 3 12:20:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ * DAnCE/ciao/CCM_Core.mpc:
+ Added ciaoversion as base project to all projects so that SOVERSION
+ is set to the correct version number in the GNU makefiles
+
+Thu Dec 30 13:24:16 2004 Chris Cleeland <cleeland@ociweb.com>
+
+ * CIAO version 0.4.3 released.
+
+
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-06b b/modules/CIAO/ChangeLogs/ChangeLog-06b
new file mode 100644
index 00000000000..b7797cca18a
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-06b
@@ -0,0 +1,2752 @@
+Fri Nov 17 16:08:43 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * performace-tests/Protocols/common/Protocols_svnt_export.h:
+
+ Removed this file, renamed as the one added below.
+
+ * performace-tests/Protocols/common/Protocols_skel_export.h:
+
+ New file, renamed from the one removed above.
+
+ * performace-tests/Protocols/Sender/Sender.idl:
+ * performace-tests/Protocols/Sender/Sender.mpc:
+ * performace-tests/Protocols/Receiver/Receiver.mpc:
+ * performace-tests/Protocols/Receiver/Receiver.idl:
+ * performace-tests/Protocols/common/Protocols.mpc:
+ * performace-tests/Protocols/common/Protocols.idl:
+
+ Fixes to incorrect generation by generate_component_mpc.pl,
+ similar to those in
+
+ Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ Also removed include of Components.idl from Protocols.idl,
+ since it contains no component or eventtype declarations,
+ and added the include to Sender.idl and Receiver.idl.
+
+Thu Nov 16 14:41:24 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/Bug_2130_Regression/interfaces/ENW_svnt_export.h:
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_svnt_export.h:
+
+ Removed these files, added as renamed below.
+
+ * tests/Bug_2130_Regression/interfaces/ENW_skel_export.h:
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h:
+
+ New files, renamed from those removed above.
+
+ * tests/Bug_2130_Regression/interfaces/ENW.mpc:
+ * tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc:
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc:
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc:
+ * docs/tutorials/Quoter/Simple/Broker/Broker.mpc:
+
+ Fixes to incorrect generation by generate_component_mpc.pl,
+ similar to those in
+
+ Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Wed Nov 15 19:56:46 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Display/Display_Base/Display_Base_svnt_export.h:
+
+ Removed this file, and added it as named below.
+
+ * examples/Display/Display_Base/Display_Base_skel_export.h:
+
+ New file, renamed from the one removed above.
+
+ * examples/Display/Display_Base/Display_Base.mpc:
+
+ Fixed incorrect export macros that were originally generated
+ by generate_component_mpc.pl. Also removed the -GT IDL
+ compiler command line option, which generated unnecessar
+ tie classes and template files (added by a base MPC project),
+ and made cosmetic changes to line breaks. Finally,
+ renamed project Display_Base_svnt to Display_Base_skel,
+ to eliminate confusion since the projects in this MPC
+ file are object-based, not component-based. The export
+ macros and export include files were also renamed, as
+ described above, consistently with these last changes.
+
+ * examples/GPS/GPS.mpc:
+ * examples/NavDisplay/NavDisplay.mpc:
+ * examples/RateGen/RateGen.mpc:
+
+ Renamed references to the Display_Base_svnt lib to be
+ consistent with the name change above, removed -GT
+ from the command line options passed to the IDL compiler,
+ and added -SS (suppress skeleton file generation) and
+ -St (suppress typecode and Any operator generation) from
+ *_svnt projects, and removed 'idlflags' line from
+ *_exec projects without IDL files.
+
+Wed Nov 15 10:30:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * NEWS:
+
+ Entries submitted by Shanshan Jiang and Johnny Willemsen.
+
+Tue Nov 14 16:27:55 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Null_Component/Null_Component.mpc:
+
+ Updated lib names in 'libs +=...' lines, overlooked in
+
+ Mon Nov 13 16:54:47 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Tue Nov 14 09:00:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * NEWS:
+
+ Entry submitted by Boris Kolpackov.
+
+Mon Nov 13 16:54:47 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Null_Component/Null_Interface_svnt_export.h:
+
+ Removed this file, renamed as below.
+
+ * examples/Null_Component/Null_Interface_skel_export.h:
+
+ Added this file, renamed from removed file above.
+
+ * examples/Null_Component/Null_Interface.mpc:
+
+ Renamed several things corresponding to the renaming
+ change above and replace export macro definition in
+ the skel project with separate stub and skel export
+ macro definitions and corresponding included. Also
+ added typecode/Any suppression command line option
+ -St to IDL compiler execution for both stub and skel
+ projects, and reduced MPC base project dependencies
+ (and thus link dependencies) to a minimum.
+
+ * examples/Null_Component/Null_Component.mpc:
+ * examples/Null_Component/StaticDAnCEApp.mpc:
+
+ Renamed items corresponding to change above.
+
+Fri Nov 10 16:10:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Hello/Hello_Base/Hello_Base.mpc:
+ * examples/Hello/Receiver/Receiver.mpc:
+ * examples/Hello/Sender/Sender.mpc:
+ Removed deprecated -Sc option from idlflags
+
+Wed Nov 8 20:56:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Null_Component/*:
+ Added some modelling files I got also from Abdul and removed the .ccd file
+ I committed by accident
+
+Wed Nov 8 14:24:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp:
+ Fixed a small memory leaks and other problems. This fixes bugzilla
+ 2692. Thanks to Sowayan Abdullah <abdullah dot sowayan at lmco dot com>
+ for reporting these issues.
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ A few small improvements
+
+Sun Nov 5 19:16:57 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ Removed the use of STL iostream.
+ Use ACE DLL decorator, prefix, suffix for DLL file names.
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ Removed the use of STL iostream.
+
+Fri Nov 3 03:03:24 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/RepositoryManager/PC_Updater.cpp
+ Modified these files to differentiate the location field of
+ deploymentplan for different platforms.
+
+Thu Nov 2 22:54:12 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServnatSourceGenerator.cpp:
+
+ Added generation of code to register eventtype factories with
+ the container ORB for components with publish and emit ports
+ (generation of such registration for components with consume
+ ports already existed). This additional registration is necessary
+ if the component sends an event using a CIAO Event Service
+ event channel that is collocated with it.
+
+Thu Nov 2 20:22:46 UTC 2006 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu>
+
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp (main):
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp (main):
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp (main):
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCE/NodeManager/Node_Manager.cpp (main): Replaced exit() with
+ ACE_OS::exit(). Thanks to Abdul Sowayan for reporting this.
+ This fixes bugid #2695.
+
+Mon Oct 30 19:13:03 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tests/IDL3/Events/Any/EventAny.idl:
+ * tests/IDL3/Events/Any/Any.mpc:
+ * tests/IDL3/Events/Any/main.cpp:
+ * tests/IDL3/Events/Any/README:
+ * tests/IDL3/Events/Any/run_test.pl:
+
+ New test, to ensure that IDL eventtypes are
+ inserted/extracted from Anys correctly, and that
+ the resulting Anys are marshaled/demarshaled
+ correctly.
+
+ * tests/IDL3/Events/Regular/Regular.mpc:
+
+ Added backslashes to shorted 'idlflags' line.
+
+Mon Oct 30 13:26:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/TargetManager/CmpClient.cpp
+ BUILDCZAR removing old scoreboard warning.
+
+Thu Oct 26 14:37:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp:
+ Use ACE_OS methods, this fixes bugzilla 2691.
+ Thanks to Sowayan Abdullah <abdullah dot sowayan at lmco dot com>
+ for reporting this issue
+
+Wed Oct 25 14:54:03 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Composition.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Component.hpp:
+ * CCF/CCF/IDL3/SemanticAction/EventType.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Home.hpp:
+
+ Minor fixes and cleanups.
+
+ * CCF/CCF/IDL2/Parsing/Recovery.hpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/CIDL/Parser.hpp:
+ * CCF/CCF/CIDL/Parser.cpp:
+ * CCF/CCF/IDL3/Parser.hpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+
+ Added syntax errors to every grammar rule.
+
+Wed Oct 25 11:02:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Null_Component/StaticDAnCEApp.mpc:
+ Enabled this project in all builds
+
+Mon Oct 23 19:35:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Added missing CORBA::string_dup to fix crash with BCB
+
+Fri Oct 20 06:41:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp:
+ Changed the HomeAttributes generation in such a way that it
+ also compiles with BCB6
+
+ * examples/Null_Component/*:
+ New example, a component with just one interface. This can be used
+ to analyze the core footprint and see what we can reduce
+ Thanks to Sowayan Abdullah <abdullah dot sowayan at lmco dot com>
+ for creating this example
+
+Thu Oct 19 23:22:49 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ Modified this file to make sure RepositoryManager project is built
+ after minizip project.
+
+Thu Oct 19 10:47:12 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * DAnCE/TargetManager/CmpClient.cpp
+ * DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp
+ * examples/BasicSP/EC/controller.cpp
+ * examples/Display/RateGen/controller.cpp
+ * tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp
+ Changed the naked atoi () to ACE_OS::atoi (), again thanks to Abdul
+ for reporiting this.
+
+Wed Oct 18 14:00:04 UTC 2006 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu>
+
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
+ (parse_args): Changed the naked atoi() to ACE_OS::atoi().
+ Thanks to Abdul for reporting this.
+
+Wed Oct 18 12:05:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/TargetManager/DomainDataManager.cpp
+ Removed warnings about unused local variables (line 186 & 558)
+
+Wed Oct 18 09:50:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/TargetManager/CmpClient.cpp
+ Removed warning about unused local variable (line 154)
+
+Tue Oct 17 21:23:27 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/README
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h
+ Updated these files to use minizip under $ACE_ROOT/contrib/minizip.
+
+Tue Oct 17 13:40:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ Several small layout changes and use ACE_ERROR for
+ errors
+
+Tue Oct 17 13:30:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/RTNodeApp_Configurator.{h,cpp}:
+ Moved destructor implementation to cpp file
+
+Tue Oct 17 13:10:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ Doxygen improvements
+
+ * DAnCE/NodeManager/NAM_Map.{h,cpp}:
+ Made is_available a const method
+
+ * DAnCE/NodeManager/Node_Manager.cpp:
+ Use bool
+
+ * DAnCE/NodeManager/Node_Manager_Impl.cpp:
+ Use ACE_ERROR together with LM_ERROR
+
+Tue Oct 17 12:32:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp:
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp:
+ Use ACE_ERROR together with LM_ERROR
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.inl:
+ Initialise pointers with 0
+
+ * DAnCE/NodeApplication/Configurator_Factory.{h,cpp}:
+ * DAnCE/NodeApplication/Container_Impl.cpp:
+ * DAnCE/NodeApplication/NodeApplication_Core.cpp:
+ Use bool and const improvements, doxygen improvements
+
+Mon Oct 16 19:52:15 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ Updated the re_launch_plan () function for Repoman integration.
+
+ * DAnCE/RepositoryManager/README
+ * DAnCE/RepositoryManager/RepositoryManager.cpp
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+ * examples/BasicSP/RepoMan_Usage.html
+ Fixed some warnings on Liunx.
+ Fixed the "Deamon" typos.
+
+Mon Oct 16 15:11:40 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TM_Client.mpc:
+ Fixed the linking error in Mac and in FC5 Static
+
+Mon Oct 16 11:20:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
+ BUILD CZAR. Due to the removal of
+ DAnCE/NodeApplication/NodeApp_Configurator.cpp to correct
+ the fuze error below, this "other" project's MPC needed to
+ be updated. (Why is this dependancy here?)
+
+Mon Oct 16 11:20:00 UTC 2006 Simon Massey <sma@prismtech.com>
+
+ * DAnCE/NodeApplication/NodeApp_Configurator.cpp
+ * DAnCE/TargetManager/DomainEvents.idl
+ BUILD CZAR. Removed Fuzz errors after no user action to correct.
+
+Mon Oct 16 08:35:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/ADD_Handler.cpp:
+ * tools/Config_Handlers/DP_Handler.cpp:
+ * tools/Config_Handlers/IDREF_Base.cpp:
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp:
+ * tools/Config_Handlers/RT-CCM/PS_Handler.cpp:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp
+ * DAnCE/RepositoryManager/
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ Use ACE_ERROR together with LM_ERROR
+
+ * RACE/Controller/Component/Controller.idl:
+ Changed some comments to doxygen style
+
+ * DAnCE/RepositoryManager/PC_Updater_T.cpp:
+ Const change
+
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ Layout changes
+
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ Use strcmp to compare two strings and several layout changes
+
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h:
+ Doxygen changes
+
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ Documentation changes
+
+ * DAnCE/RepositoryManager/URL_Parser.{h,cpp}:
+ Use bool for debug_
+
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp:
+ Initialise pointers with 0
+
+Mon Oct 16 08:35:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl:
+ Simplified this file by using the new ciao_static_dnc_app base
+ project.
+
+Fri Oct 13 17:57:12 2006 John S. Kinnebrew <john.s.kinnebrew@vanderbilt.edu>
+
+ * docs/schema/SANet_Network.xsd
+ * docs/schema/Task_Map.xsd
+
+ Added SA-POP schemas.
+
+Fri Oct 13 17:54:58 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc:
+ Addressed the problems coming up in Mac. Changed the project
+ inheritence of the TM Component.
+
+Fri Oct 13 17:43:29 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ Addressed an error in the last check-in.
+
+Thu Oct 12 17:36:58 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/CmpClient.cpp:
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/DomainEvents.idl:
+ * DAnCE/TargetManager/TM_Client.mpc:
+ * DAnCE/TargetManager/TargetManager.idl:
+ * DAnCE/TargetManager/TargetManager.mpc:
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Added the functionality to detect any add/delete to the Domain.
+ Added the feature to relay events to anyone interested for the above.
+
+ * DAnCE/TargetManager/descriptors/run_test_TargetManager.pl:
+ Changed the test script to test the above
+
+Tue Oct 10 19:13:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl:
+ Fixed compile error.
+ Thanks to Sowayan Abdullah <abdullah dot sowayan at lmco dot com>
+ for reporting this.
+
+Tue Oct 10 17:56:51 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ Modify these files to get the artifacts names when using http reference.
+
+Tue Oct 10 14:24:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ Layout improvements, use ACE_ERROR with LM_ERROR
+
+ * DAnCE/ExecutionManager/DAM_Map.cpp:
+ Const improvements
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h:
+ Layout changes
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Use ACE_ERROR with LM_ERROR
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h:
+ Documentation improvements
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ Const improvements
+
+ * DAnCE/NodeApplicationManager/HTTP_Handler.cpp:
+ Const improvements
+
+Tue Oct 10 09:28:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Base.idl:
+ Removed a remark about RTF 1.1, method is now according to the spec
+
+ * ciao/CCM_Component.idl:
+ * ciao/CCM_Container.idl:
+ * ciao/CCM_Event.idl:
+ * ciao/Deployment.idl:
+ * ciao/Target_Data.idl
+ Updated some documentation and added some todos about things which
+ are CIAO specific
+
+ * ciao/Server_init.cpp:
+ With LM_ERROR use ACE_ERROR
+
+ * ciao/Dynamic_Component_Activator.{h,cpp}:
+ Removed some invalid comments and a mutex that was not used at all
+
+ * ciao/Context_Impl_Base.h:
+ Documentation update
+
+Thu Oct 05 00:35:37 2006 William R. Otte wotte@dre.vanderbilt.edu
+
+ * CIAO version 0.5.3 released.
+
+Wed Oct 4 08:12:24 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * NEWS:
+
+ Updated with entries for the CIDL compiler work.
+
+Tue Oct 3 15:16:40 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * NEWS:
+
+ Updated the NEWS to add the changes for Repoman and Plan_Generator
+ projects.
+
+Tue Oct 3 12:49:16 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * NEWS:
+
+ Updated the NEWS to add the changes for CoSMIC Quoter tutorial
+
+Mon Oct 2 09:28:58 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * docs/index.html:
+ Corrected linked to OMG spec
+
+Mon Oct 2 08:58:58 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Set the nodemanager in the static nodeapplication manager.
+ Thanks to Sowayan Abdullah <abdullah dot sowayan at lmco dot com>
+ for reporting this.
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ Doxygen improvement
+
+Thu Sep 28 16:47:58 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ Added the base projects to Plan_Launcher_Impl project to include
+ required libs. Added null head files to the Plan_Launcher project to
+ remove the unnecessary dependency on other libs.
+
+Thu Sep 28 15:57:53 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc:
+ Fixed the "undefined reference" error on FC5_Static build.
+
+ * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp:
+ Modified this file to handle the possible RepoMan null reference error.
+
+Tue Sep 26 21:05:48 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ Fixed the "conversion from '_var' to 'CORBA::Object*'" warning.
+
+Tue Sep 26 15:52:12 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * docs/tutorials/Quoter/Simple/Broker/Broker.cidl:
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl:
+
+ Added missing semicolons.
+
+Mon Sep 25 23:19:15 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ Modified the fetch_reference_naming () to remove its arguments related
+ to Repoman.
+
+ * DAnCE/Plan_Generator/PCVisitor.h:
+ Adjusted the order of the data members of Plan_Generator_i class.
+
+
+Mon Sep 25 19:46:37 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Generator/Plan_Generator.mpc (project): Fixed the MPC
+ file by removing the "requires += RepositoryManager" as this
+ project, as well as other projects that depend on this, will not
+ be built unless RepositoryManager=1 is set.
+
+Mon Sep 25 14:42:03 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc: Fixed the mpc file.
+
+Mon Sep 25 13:06:05 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * CCF/CCF/IDL2/SemanticAction/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Composition.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Composition.hpp:
+
+ Move some operator<< operators to the global scope so that they
+ do not hide others.
+
+Sun Sep 24 21:06:07 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ Removed the unnecessary Repoman head file.
+
+Sat Sep 23 04:31:13 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/RepositoryManager/RMadmin.cpp
+ * ciao/RepositoryManager.idl
+ Added the replace argument in installPackage () and createPackage ()
+ functions and extend the functionalities of these two functions based
+ on the latest D&C spec.
+
+Sat Sep 23 04:07:59 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Generator
+ * DAnCE/Plan_Generator/PCVisitor.cpp
+ * DAnCE/Plan_Generator/PCVisitor.h
+ * DAnCE/Plan_Generator/PCVisitorBase.cpp
+ * DAnCE/Plan_Generator/PCVisitorBase.h
+ * DAnCE/Plan_Generator/PCVisitorBase.inl
+ * DAnCE/Plan_Generator/Plan_Generator.mpc
+ * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp
+ * DAnCE/Plan_Generator/Plan_Generator_Impl.h
+ * DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h
+ Added these files which implement the Plan_Generator project. This
+ project is used to retrieve information from Repoman and generate/modify
+ DeploymentPlans based on different demands.
+
+ * DAnCE/Planner
+ * DAnCE/Planner/Node_T.cpp
+ * DAnCE/Planner/Node_T.h
+ * DAnCE/Planner/Node_T.inl
+ * DAnCE/Planner/PCVisitor.cpp
+ * DAnCE/Planner/PCVisitor.h
+ * DAnCE/Planner/PCVisitorBase.cpp
+ * DAnCE/Planner/PCVisitorBase.h
+ * DAnCE/Planner/PCVisitorBase.inl
+ * DAnCE/Planner/Planner.cpp
+ * DAnCE/Planner/Planner.mpc
+ Deleted these files. The planner project has been replaced by the more
+ useful Plan_Generator project.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ Modified these files.
+
+ * DAnCE/Plan_Generator/PCVisitor.cpp
+ * DAnCE/Plan_Generator/PCVisitor.h
+ * DAnCE/Plan_Generator/PCVisitorBase.cpp
+ * DAnCE/Plan_Generator/PCVisitorBase.h
+ * DAnCE/Plan_Generator/PCVisitorBase.inl
+ Deleted these files.
+ Removed the Plan_Launcher's dependence on RepoMan. Use Plan_Generator
+ to retrieve information from Repoman and generate/modify DeploymentPlans.
+
+Fri Sep 22 09:27:25 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/String.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/IntExpression.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/String.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueTypeMember.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/IntExpression.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Name.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.hpp.m4:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Array.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Name.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Native.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Exception.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Translation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/TypeId.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Graph.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Member.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Literals.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Graph.tpp:
+ * CCF/CCF/IDL2/SemanticGraph/Literals.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Struct.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Module.hpp:
+
+ * CCF/CCF/CIDL/SemanticGraph/Executor.cpp:
+ * CCF/CCF/CIDL/SemanticGraph/Composition.cpp:
+ * CCF/CCF/CIDL/SemanticGraph/Executor.hpp:
+ * CCF/CCF/CIDL/SemanticGraph/Composition.hpp:
+
+ * CCF/CCF/IDL3/SemanticGraph/Component.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/Component.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/EventType.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/Home.hpp:
+
+
+ Add file name and line information to every semantic
+ graph node. This information is used in diagnostics.
+
+
+ * CCF/CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/NumericExpression.hpp:
+
+ Adjust semantic actions interface to provide a way to derive
+ line numbers.
+
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeMember.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/NumericExpression.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueTypeFactory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Const.cpp:
+
+ * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventTypeFactory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp:
+
+ * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp:
+
+ Propagate file name and line number from tokens to semantic
+ graph nodes. Use file and line numbers when printing error
+ messages.
+
+
+ * CCF/CCF/IDL2/Token.hpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+
+ Fix a number of bugs in error handling and recover.
+
+
+ * CIDLC/cidlc.cpp:
+
+ Use file name and line number when creating the translation
+ unit object.
+
+
+Wed Sep 20 04:05:42 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * docs\tutorials\CoSMIC\02.html
+
+ Added some useful links to various resources to help readers reduce
+ learning curve.Added a small section that mentions that a Node Map file
+ has to be created in order to get Quoter example working. Again,
+ Thanks to Sowayan Abdullah from LMCO for his help in improving the
+ cosmic documentations.
+
+
+Mon Sep 18 03:26:22 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.h
+
+ Fixed compile error by removing extra ;.
+
+Fri Sep 15 21:28:47 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * ciao/Deployment_Core.idl
+
+ Removed the unnecessary event type definition for RTEC since
+ they are no longer used.
+
+Sun Sep 10 09:20:18 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.cpp
+ * tools/Config_Handlers/Utils/XML_Helper.h
+
+ Removed workaround from previous commit, as Ossama Othman has
+ provided the proper fix in the G++ macros.
+
+Fri Sep 8 00:28:27 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.cpp
+ * tools/Config_Handlers/Utils/XML_Helper.h
+
+ Made the export declaration on the singleton typedef
+ contingent on a Microsoft compiler, as the GCC included
+ with FC5 was not defining the symbol as a result.
+
+Fri Sep 1 03:09:38 UTC 2006 xiong,ming <ming.xiong@vanderbilt.edu>
+
+ * docs\tutorials\CoSMIC\index.html
+ * docs\tutorials\CoSMIC\01.html
+
+ Updated index.html to change the cosmic version.Updated 01.html
+ to reflect recent changes of idl_to_picml. Thanks to Sowayan Abdullah
+ from LMCO for his help in improving the cosmic documentations.
+
+Thu Aug 31 22:45:09 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ Modified this file to include $(CIAO_ROOT)/tools/Config_Handlers
+ in the RMAdmin project.
+
+Wed Aug 30 17:16:18 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ Added more changes to this file to fix the "reference to
+ ACE_Singleton<CIAO::Config_Handlers::XML_Helper, ACE_Null_Mutex>
+ ::instance()'"warnings with FC5_Static build.
+
+Tue Aug 29 23:08:20 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ Fixed the "reference to `ACE_Singleton<CIAO::Config_Handlers
+ ::XML_Helper, ACE_Null_Mutex>::instance()'"warnings with
+ FC5_Static build.
+
+ * DAnCE/RepositoryManager/RMadmin.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ Removed unnecessary using of CIAO::Config_Handlers::XML_Helper.
+
+Mon Aug 28 12:53:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Container_Base.cpp:
+ Fixed some compile warnings with gcc 2.96
+
+Thu Aug 24 15:44:08 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ Changed some of the command-line options.
+
+ * examples/BasicSP/RepoMan_Usage.html
+ Made some minor changes.
+
+Thu Aug 24 000:41:16 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/PCVisitor.cpp
+ * DAnCE/Plan_Launcher/PCVisitor.h
+ * DAnCE/Plan_Launcher/PCVisitorBase.cpp
+ * DAnCE/Plan_Launcher/PCVisitorBase.h
+ Solved the "'class has virtual functions but non-virtual destructor"
+ warnings.
+
+Wed Aug 23 17:57:15 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/PCVisitorBase.h
+ Solved the "invalid use of undefined type 'struct PCVisitorBase'"
+ warnings.
+
+Wed Aug 23 15:22:36 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/PCVisitor.cpp
+ Solved the "unused parameter" warning.
+
+Wed Aug 23 000:04:06 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/README
+ Made some minor changes.
+
+Wed Aug 23 000:00:43 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * examples/BasicSP/descriptors/basicNodeDaemon.pl
+ Use "$ENV{'ACE_ROOT'}/bin" to point to the location of lib file.
+
+Tue Aug 22 23:47:06 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher.mpc
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
+ Modified these files for RepoMan integration.
+
+ * DAnCE/Plan_Launcher/PCVisitor.cpp
+ * DAnCE/Plan_Launcher/PCVisitor.h
+ * DAnCE/Plan_Launcher/PCVisitorBase.cpp
+ * DAnCE/Plan_Launcher/PCVisitorBase.h
+ * DAnCE/Plan_Launcher/PCVisitorBase.inl
+ Added these files for RepoMan integration.
+
+ * examples/BasicSP/RepoMan_Usage.html
+ Added this file, which explains how to run the BasicSP example using
+ the integrated RepoMan.
+
+Mon Aug 21 15:19:25 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl:
+ * examples/Hello/descriptors/run_test_without_ns.pl: Fixed the
+ environment variable DANCE_ROOT to point to CIAO_ROOT/DAnCE.
+
+Thu Aug 17 16:09:09 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Options.cpp
+ * DAnCE/RepositoryManager/RMadmin.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ Reimplemented the findNamesByType () and getAllTypes () operations
+ of Repository Manager, which use the newly generated
+ ACE_Hash_MultiMap_Manager class and its corresponding classes.
+
+Mon Aug 14 15:46:34 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.h
+
+ Fixed a compile error for pedantic GCC4.
+
+Sun Aug 13 15:18:00 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * CCF/CCF/CodeGenerationKit/Regex.hpp:
+
+ Reimplemented regex wrapper to allow building CIDLC on
+ platforms without wchat_t support (e.g., Cygwin/Mingw).
+
+Fri Aug 11 11:46:17 UTC 2006 Boris Kolpackov <boris@codesynthesis.com>
+
+ * CCF/CCF/IDL2/SemanticGraph/Name.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Name.hpp:
+
+ Added support for IDL (underscore) escaping. Added support
+ for custom name printers.
+
+ * CIDLC/UnescapedNamePrinter.hpp:
+
+ Name printer that prints names unescaped (without the IDL
+ underscore).
+
+ * CIDLC/CxxNamePrinter.cpp:
+ * CIDLC/CxxNamePrinter.hpp:
+
+ Name printer that escapes C++ keywords.
+
+ * CIDLC/CorbaTypeNameEmitters.cpp:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/ExecImplHeaderGenerator.cpp:
+ * CIDLC/ExecImplSourceGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/RepositoryIdGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/UtilityTypeNameEmitters.cpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/CompositionEmitter.cpp:
+
+ Updated to handle IDL and C++ name escaping. This fixes
+ bugzilla bug #2427.
+
+Fri Aug 11 07:30:35 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.h
+ * DAnCE/RepositoryManager/RMadmin.cpp
+
+ Fixes for a compiler error in the version of GCC shipped with
+ FC5.
+
+Wed Aug 9 18:53:48 UTC 2006 Jaiganesh B <jai.dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ DAnCE/NodeApplication/RTNodeApp_Configurator.cpp:
+ examples/Hello/descriptors_RTCCM/rt-example.cdp:
+ examples/Hello/descriptors_RTCCM/rt-config-example.csr:
+
+ Fixed the RT-CCM code to conform to the schema changes. Made changes
+ to the descriptors directory to fix the working example for RT-CCM.
+
+ Thanks to Nanbor Wang for helping fix the codebase.
+
+Tue Aug 8 07:53:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO-INSTALL.html:
+ Removed vc6 info
+
+Fri Aug 4 21:40:46 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/tutorials/CoSMIC/01.html
+ * docs/tutorials/CoSMIC/02.html
+ * docs/tutorials/CoSMIC/03.html
+ * docs/tutorials/CoSMIC/04.html
+ * docs/tutorials/CoSMIC/style.css
+ * docs/tutorials/CoSMIC/index.html
+
+ Style fixes, grammatical and spelling corrections, clarifications.
+
+Thu Aug 3 20:38:39 UTC 2006 Nanbor Wang <nanbor (at) txcorp (dot) com>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp:
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+
+ Fixed RT-CCM support.
+
+Thu Aug 3 15:33:11 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * docs/cidlc.html:
+
+ Regenerated to include the -D and -I options.
+
+Wed Aug 2 18:52:14 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp:
+
+ Added option types: flag or value.
+
+ * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineParser.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLine.hpp:
+
+ Reimplemented to use hand-coded parser instead of Spirit. The
+ new implementation takes into account the option types.
+
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.cpp:
+
+ Removed.
+
+ * CIDLC/cidlc.cpp:
+ * CIDLC/ServantGenerator.hpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/DescriptorGenerator.hpp:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecImplGenerator.cpp:
+ * CIDLC/ExecImplGenerator.hpp:
+
+ Updated with the option types. This fixes bugzilla bug #2426.
+
+
+Fri Jul 28 17:53:57 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticGraph/Translation.cpp:
+
+ Reimplemented a chunk of code that resulted in what appears to
+ be invalid code generation by the Intel C++ compiler. This
+ fixes bugzilla bug #2387.
+
+Thu Jul 27 18:08:47 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO_TAO.mwc
+ * CIAO_TAO_DAnCE.mwc
+
+ Replaced relative references to ACE/TAO with absolute references
+ using environment variables.
+
+Mon Jul 24 15:45:34 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * Subversion conversion completed at revision 73730
+
+Sun Jul 23 15:44:43 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * Repository frozen for repository conversion
+
+Sat Jul 22 21:34:57 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Container_Base.cpp
+
+ Fixed a runtime Segfault bug about destroying POA. The problem
+ is because a Session_Container creates 2 POAs, one of which is called
+ facet_cons_POA which uses the Servant_Activator policy to activate component
+ ports (facets, consumers) on demand, then the Servant_Activator object
+ was deleted when the Session_Container object is out of scope in its
+ destructor. But when the ORB finally shuts itself down, it tries
+ to clean all the resources including the facet_cons_POA, since the
+ Servant_Activator attached to this POA is long gone, a segfault
+ occurs in the cleaning up phase. The right fix is to destroy all the POAs
+ associated with this Session_Container in its destructor together with the
+ Servant_Activator. Thanks Phlip <phlip2005 @ gmail.com> for a
+ bug report.
+
+Thu Jul 20 22:03:31 UTC 2006 Nanbor Wang <nanbor (at) txcorp (dot) com>
+
+ * docs/schema/ServerResourceUsage.txt: Revised the document to
+ change how a policy set should be hooked into a component
+ instance. This needs to be changed to reflect recent changed in
+ DnC schema.
+
+Thu Jul 20 01:10:58 UTC 2006 Vipul Singh <vipuls@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp: Removed the variable name
+ from the arguments in function definition in empty functions to
+ fix warnings.
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h: Changed declaration
+ at a few places from const static to static const to fix a few
+ warnings, also removed an unnecessarily defined namespace.
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp: Made a few
+ changes to fix the warnings and to keep the code in sync with
+ the changes made to RepositoryManager_Impl.h. Fixed code which
+ passed non POD types to a varargs function(ACE_DEBUG) which
+ resulted in aborts at runtime.
+
+ * DAnCE/RepositoryManager/URL_Parser.cpp: Assigned value to ptr before
+ if condition to fix a few warnings.
+
+Wed Jul 19 08:00:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Config_Handlers.mpc:
+ Use exceptions as base project
+
+Mon Jul 17 17:49:41 UTC 2006 Ossama Othman <ossama_othman at symantec dot com>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+
+ Use new ACE_CString::size_type type to hold string
+ position/index value, instead of "int". Addresses "comparison
+ between signed and unsigned" warnings.
+
+Sat Jul 15 04:21:13 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/README.txt:
+ Remove this file.
+
+ * DAnCE/RepositoryManager/README:
+ Add this file.
+
+Thu Jul 13 18:42:08 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ Fixed a minor error.
+
+Wed Jul 12 14:00:59 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ Fixed the "comparison between signed and unsigned integer" warning.
+
+Tue Jul 11 23:19:58 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ Fixed the "conversion from '__int64' to 'size_t', possible loss
+ of data" warnings.
+
+Sun Jul 09 06:01:14 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO version 0.5.2 released.
+
+Wed Jul 5 15:31:18 UTC 2006 Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+
+ * NEWS
+ Updated the NEWS file to add the changes of Repoman.
+
+Tue Jul 4 11:39:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Home_Servant_Impl_T.cpp:
+ * ciao/Dynamic_Component_Servant_T.cpp:
+ * ciao/Swapping_Servant_Home_Impl_T.cpp:
+ Fixed compile problems with VxWorks 5.5.1 and GCC 2.96
+
+Tue Jul 4 06:26:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc:
+ Don't build this project in the ace_for_tao configuration
+
+Mon Jul 3 16:20:54 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * NEWS
+
+ Updated the NEWS file.
+
+Tue Jun 27 13:37:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ Layout changes
+
+Fri Jun 23 13:45:38 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+
+ Added $(TAO_ROOT) to the 'includes' line of the executable
+ project, due to a change in the way TAO/Version.h is
+ included.
+
+Thu Jun 22 18:47:47 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Dynamic_Component_Servant_T.cpp:
+ * ciao/Dynamic_Component_Servant_T.h:
+ * ciao/Swapping_Servant_Home_Impl_T.cpp:
+ * ciao/Swapping_Servant_Home_Impl_T.h:
+
+ Made changes to template code corresponding to those in
+
+ Mon Jun 19 14:52:25 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+Mon Jun 19 14:52:25 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Home_Servant_Impl_T.cpp:
+ * ciao/Home_Servant_Impl_T.h:
+ * ciao/Servant_Impl_T.cpp
+ * ciao/Servant_Impl_T.h:
+
+ Reduced the number of template parameters in
+ the component servant and home servant template
+ base classes.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changes to generated servant code corresponding
+ the the changes in servant base class code
+ described above.
+
+Thu Jun 15 20:13:02 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/be_helper.cpp:
+
+ Uncommented code that outputs our copyright notice. This
+ change also elinates an unused arg warning for the
+ copyright notice string.
+
+ * tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp:
+
+ Added a newline after opening the file for better readability.
+
+Thu Jun 15 18:37:43 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc:
+
+ Added ciao_deployment_stub as a base project for
+ CIAO_Events_Handlers, to eliminate 'unresolved symbol'
+ linking errors. Thanks to Ming Xiong <ming.xiong@vanderbilt.edu>
+ for suggesting the fix.
+
+Thu Jun 15 15:10:58 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/IDL3_to_IDL2/be_extern.h:
+ * tools/IDL3_to_IDL2/be_init.cpp:
+ * tools/IDL3_to_IDL2/be_produce.cpp:
+
+ Changes to keep this backend in sync with changes to the
+ TAO_IDL front end - see TAO ChangeLog entry of a few
+ minutes ago.
+
+Thu Jun 8 16:07:05 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_Utils_T.cpp (describe_multiplex_receptacle):
+
+ Fixed an error in instantiation of a
+ Components::ConnectionDescription valuetype - the actual
+ constructor call should have been on the OBV_* subclass.
+
+Thu Jun 8 12:29:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Planner/PCVisitor.cpp:
+ Fixed parameter never used warnings
+
+Wed Jun 7 21:39:00 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc
+
+ Removed unneeded base projects.
+
+Wed Jun 7 21:07:11 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Servant_Impl_Utils_T.cpp:
+
+ Fixed CORBA memory management rule violations in
+ Servant_Impl_Base static template methods
+ describe_pub_event_source(), describe_simplex_receptacle() and
+ describe_multiplex_receptacle(). Thanks to Phlip
+ <phlip2005@gmail.com> for reporting a problem in
+ get_all_receptacles() that uncovered the above violations.
+
+Wed Jun 7 16:52:45 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+
+ Fix for linking error in Visual Studio.
+
+Wed Jun 7 06:04:45 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp
+
+ Modified to generate an include of CCM_Container.idl.
+
+ * ciao/Components.idl
+ * ciao/ComponentsC.h
+ * ciao/ComponentsS.h
+
+ Changed Components.idl to include CCM_Component.idl instead of
+ CCM_Container.idl. This removes a dependancy on the container
+ library for stub projects.
+
+ Note this commit may be rolled back later based on discussions
+ on the dance-dev list, I am making it preemptively to resolve
+ scoreboard problems.
+
+Tue Jun 6 20:32:53 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/Property_Handler.h
+
+ Compile fixes for Borland.
+
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/XMLSchema/Writer.hpp
+
+ Fixes for Borland ICEs.
+
+Tue Jun 6 13:48:59 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers_Common_Export.h
+
+ Missing file from previous commit.
+
+Mon Jun 5 20:34:51 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ * DAnCE/TargetManager/TM_Client.mpc
+ * RACE/Controller/Component/Controller.mpc
+ * docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
+ * docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc
+ * examples/BasicSP/BasicSP.mpc
+ * examples/BasicSP/BMClosedED/BMClosedED.mpc
+ * examples/BasicSP/BMDevice/BMDevice.mpc
+ * examples/BasicSP/BMDisplay/BMDisplay.mpc
+ * examples/BasicSP/EC/EC.mpc
+ * examples/Display/Display_Base/Display_Base.mpc
+ * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
+ * examples/Hello/Hello_Base/Hello_Base.mpc
+ * examples/Hello/Receiver/Receiver.mpc
+ * examples/Hello/Sender/Sender.mpc
+ * examples/Swapping/Hello_Base/Hello_Base.mpc
+ * examples/Swapping/Receiver/Receiver.mpc
+ * examples/Swapping/Sender/Sender.mpc
+ * performance-tests/Protocols/common/Protocols.mpc
+ * tests/Bug_2130_Regression/interfaces/ENW.mpc
+ * tests/CIDL/CodeGen/CodeGen.mpc
+ * tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc
+ * tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc
+ * tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc
+ * tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc
+ * tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc
+ * tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc
+ * tests/IDL3/Events/Abstract/Abstract.mpc
+ * tests/IDL3/Events/Regular/Regular.mpc
+ * tests/IDL3/Homes/Attributes/HomeAttributes.mpc
+ * tests/IDL3/Homes/Basic/Basic.mpc
+ * tests/IDL3/Homes/Factory/Factory.mpc
+ * tests/IDL3/Homes/Finder/Finder.mpc
+ * tests/IDL3/Homes/Inheritance/Inheritance.mpc
+ * tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc
+ * tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc
+ * tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc
+ * tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc
+ * tests/IDL3/ImpliedIDL/Events/Events.mpc
+ * tests/IDL3/ImpliedIDL/Homes/Homes.mpc
+ * tests/IDL3/Lookup/lookup_test.mpc
+ * tests/Minimum/Minimum_Base/Minimum.mpc
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+
+ Fixes for linking errors/warnings in OS X.
+
+ * tools/Config_Handlers/Any_Handler.h
+ * tools/Config_Handlers/CEPE_Handler.h
+ * tools/Config_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/DataType_Handler.h
+ * tools/Config_Handlers/ERE_Handler.h
+ * tools/Config_Handlers/Req_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+
+ Factored certain elements used by both the deployment
+ and packaging handlers into a seperate library, also
+ fixes for linking errors in OS X.
+
+Fri Jun 2 18:55:41 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc:
+ * DAnCE/TargetManager/TargetManager.mpc:
+ * DAnCE/TargetManager/TM_Client.mpc:
+
+ Shortened long lines.
+
+Fri Jun 2 12:17:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * rules.ciao.GNU:
+ Added setting of TAO_IDL3_TO_IDL2 and TAO_IDL3_TO_IDL2_DEP when
+ they are not set, needed for cross compilation
+
+Thu Jun 1 21:23:51 UTC 2006 <ming.xiong@vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test.pl
+ Changed the codes so that it will correctly destroy all
+ running processes upon failure.
+
+Thu Jun 1 16:03:26 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/Planner/Planner.cpp:
+
+ Added global qualifier (double colon) to the specialization
+ and typedef of the planner's Node class, to avoid an
+ 'ambiguous symbol' error in VC8, which is presumably confusing
+ it with Deployment::Node.
+
+Thu Jun 1 15:49:47 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Planner/Node_T.h
+ * DAnCE/Planner/Planner.cpp
+
+ Modified some minor errors.
+
+Thu Jun 1 12:55:07 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Display/NavDisplay/NavDisplay.mpc:
+
+ Fixed typo.
+
+Wed May 31 18:46:37 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Display/NavDisplay/NavDisplay.mpc:
+
+ Added 'libs += Display_Base_stub' to the
+ Display_Base_NaviDisplay_stub project so that VC8, with its
+ parallel builds, will know about the dependency that VC7.1
+ seems to get from the 'after' line.
+
+Wed May 31 18:17:11 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/TargetManager/TM_Client.mpc:
+
+ Cosmetic changes.
+
+Wed May 31 17:08:17 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/Planner/Planner.mpc
+ * DAnCE/Planner/Planner.cpp
+
+ Removed the generated file of Repoman (RepositoryManagerDaemonC.*)
+ included in the Planner project and use the RepositoryManagerC.*.
+
+Wed May 31 16:49:12 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+
+ Made some minor changes.
+
+Tue May 30 10:08:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/MonitorController.cpp:
+ Fixed typo
+
+Tue May 30 06:16:58 UTC 2006 Boris Kolpackov <boris@kolpackov.net>
+
+ * tools/Config_Handlers/XSCRT/Elements.hpp:
+
+ Added a fix for Sun C++ <= 5.7 template instantiation issue.
+
+Tue May 30 00:00:22 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/Planner/Node_T.h:
+ * DAnCE/Planner/Node_T.inl:
+ * DAnCE/Planner/Node_T.cpp:
+ * DAnCE/Planner/PCVisitor.h:
+ * DAnCE/Planner/PCVisitor.cpp:
+ * DAnCE/Planner/PCVisitorBase.h:
+ * DAnCE/Planner/PCVisitorBase.inl:
+ * DAnCE/Planner/PCVisitorBase.cpp:
+ * DAnCE/Planner/Planner.mpc:
+ * DAnCE/Planner/Planner.cpp:
+
+ Checking in the Planner for DAnCE which creates a Deployment
+ Plan on the fly (in-memory).
+
+ * RACE/Input_Adapters/LocationUpdater/Injector.cpp:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h:
+ * RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h:
+ * RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable:
+ * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h:
+ * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl:
+ * RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp:
+ * RACE/Input_Adapters/LocationUpdater/PlanUpdater.h:
+ * RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp:
+ * RACE/Input_Adapters/LocationUpdater/README.txt:
+
+ Adding the LocationUpdater which is a RACE input adapter which
+ updates the locations of the implementation artifact to reclect
+ the ones available in the RepositoryManager. Please see the README
+ and the code for more info.
+
+ * RACE/Input_Adapters/PlanGenerator/Injector.cpp:
+ * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h:
+ * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl:
+ * RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.h:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h:
+ * RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h:
+ * RACE/Input_Adapters/PlanGenerator/README.txt:
+
+ Adding the PlanGenerator which is a RACE input adapter which queries
+ the RepositoryManager for an installation name, retrieves the corresponding
+ PackageConfiguration, and builds the DeploymentPlan on the fly. Please see
+ the README and the code for more info.
+
+Mon May 29 21:58:18 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+
+ Got rid of the code that updates the loader path for the
+ libraries downloaded via HTTP. Now this has to be done
+ manually.
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/README.txt:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+
+ Changing the way library names are matched to be more general.
+ Some additions to the README
+ A minor change to one of the functions
+
+Mon May 29 19:07:54 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ * examples/Swapping/Sender/Sender_exec.cpp:
+
+ Changed C-style casts from void* to pointer-to-function
+ to two-step reinterpret_cast<>s, with ptrdiff_t as a
+ temporary intermediate. C++ forbids casting directly
+ between pointer-to-object and pointer-to-function, and
+ some the newer compilers are catching it.
+
+Mon May 29 17:44:01 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Display/Display_Base/Display_Base.mpc:
+
+ Changed the base project of Display_Base_stub from
+ ciao_client_dnc to ciao_events_base_dnc, in order to pull
+ in a needed dependency on CIAO_DnC_Container. Thanks to
+ Ming Xiong <mxiong@dre.vanderbilt.edu> for supplying the
+ fix.
+
+Mon May 29 15:32:38 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Display/NavDisplay/NavDisplay.mpc:
+
+ Cosmetic changes (shortened long lines).
+
+ * examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+
+ Changed 'after +=' and 'libs +=' lines to reflect recent
+ changes to other examples/Display projects.
+
+Fri May 26 13:57:38 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/RMAdmin.cpp(ACE_TMAIN):
+
+ Fixed unused variable warning, cosmetic changes.
+
+Fri May 26 12:59:03 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * DAnCE/NodeManager/NAM_Map.cpp:
+ Make the equality test explicit to work with the revised octet
+ sequence implementation.
+
+Thu May 25 19:02:52 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Container_Base.cpp(ciao_install_home):
+
+ Changed the single-step reinterpret_cast of the component
+ DLL entry points to be a two-step process: first to the
+ integer type 'ptrdiff_t' then to the desired pointer-to-
+ function type. A single cast won't work because casting
+ from pointer-to-object (even void*) to pointer-to-function
+ directly is not allowed in C++.
+
+Thu May 25 11:50:39 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * ciao/Container_Base.cpp:
+ Replace the use of static_cast in ciao_install_home with
+ reinterpret_cast since void* sources are involved.
+
+Wed May 24 17:35:53 UTC 2006 Nanbor Wang <nanbor@exothermic.txcorp.com>
+
+ * examples/Display/RateGen/RateGen.mpc: Fixed the project
+ dependency for controller.
+
+Tue May 23 22:46:58 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Options.cpp
+ * DAnCE/RepositoryManager/Options.h
+ * DAnCE/RepositoryManager/RMadmin.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/RepositoryManager/RepositoryManager.cpp
+
+ Added the code to save the state of the RepoMan at exit and
+ load the state of it at start.
+
+Tue May 23 14:31:11 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/Options.cpp
+ * DAnCE/RepositoryManager/Options.h
+ * DAnCE/RepositoryManager/RMadmin.cpp
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ * DAnCE/RepositoryManager/RepositoryManager.cpp
+
+ Added the naming service & the implementation of createPackage
+ function to RepoMan.
+
+Mon May 22 18:49:14 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Container_Base.cpp(ciao_install_home):
+
+ Changed C-style casts of DLL entrypoints to static_cast<>s
+ to the appropriate pointer to function. This change is
+ intended to eliminate warnings from gcc 4.0.
+
+Fri May 19 16:49:32 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/NodeApplicationManager/URL_Parser.cpp:
+ * DAnCE/NodeManager/Node_Manager.cpp:
+
+ Minor changes to eliminate scoreboard warnings, and to bring
+ code in line with the ACE style guidelines.
+
+Thu May 18 20:28:00 UTC 2006 Roopa Pundaleeka <roopa@txcorp.com>
+
+ * examples/Display/GPS/GPS_Impl.ccd:
+ * examples/Display/NavDisplay/NavDisplay_Impl.ccd:
+ * examples/Display/RateGen/RateGen_Impl.ccd:
+
+ Removed these generated files from CVS.
+
+Thu May 18 11:28:52 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+
+ * examples/Display/Display_Base/GNUmakefile:
+ * examples/Display/Display_Base/GNUmakefile.Display_Base_stub:
+ * examples/Display/Display_Base/GNUmakefile.Display_Base_svnt:
+
+ Removed these files from CVS.
+
+Wed May 17 21:20:46 UTC 2006 Roopa Pundaleeka <roopa@txcorp.com>
+
+ * TAO/CIAO/examples/Display:
+ Ported the Display example to use the new CIAO framework
+
+
+Tue May 16 12:10:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * README:
+ Removed mentioning of vc6
+
+Mon May 15 20:48:52 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (generate):
+
+ Removed commented-out code.
+
+ * CIDLC/ServantHeaderGenerator.cpp (generate_facets):
+
+ Fixed cut-and-paste error that was causing facet servant
+ class declaration to get skipped when the composition is
+ defined inside one or more IDL modules.
+
+Fri May 12 07:36:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Utils/Functors.h:
+ Added a workaround for specific for BCB6, should fix the gcc4
+ internal compiler errors
+
+Fri May 12 07:29:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/XSCRT/Elements.hpp:
+ The work around is needed for < gcc 3.3 and also BCB6, so make
+ it a little bit more easier to handle this.
+
+Thu May 11 21:24:45 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.hpp:
+ * CIDLC/UtilityTypeNameEmitters.cpp:
+ * CIDLC/UtilityTypeNameEmitters.hpp:
+
+ Change code generation for facet servant classes to be
+ defined in a special namespace created from a prefix
+ and a flattened version of the name of the scope
+ containing the interface that supports the facet. This
+ change enables facets in the same translation unit
+ using the same interface to use a single source code
+ definition (an internal check in the CIDL compiler
+ guarantees that the facet servant class is generated
+ once per interface per translation unit). The fact
+ that the actual facet servant class type is an instantiation
+ of a template class ensures that the same interface type
+ used as a facet in multiple translation units in a build
+ will not produce multiple-definition link errors,
+ although in this case there will be duplicated code.
+ Thanks to James Hill <j.hill@vanderbilt.edu> for providing
+ the multiple-facet-single-translation-unit use case
+ and to Nanbor Wang <nanbor@txcorp.com> for his comments
+ on the proposed solution.
+
+Wed May 10 14:04:57 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorCB.cpp
+ * DAnCE/TargetManager/CmpClient.cpp
+ * DAnCE/TargetManager/DomainDataManager.cpp
+
+ Fixes for warnings.
+
+Mon May 8 20:41:43 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * bin/PerlCIAO/perlciao.mpc:
+
+ Fixing a fuzz build error due to a missing Id tag
+
+Mon May 8 15:33:58 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/RepositoryManager/HTTP_Client.h:
+ * DAnCE/RepositoryManager/HTTP_Client.cpp:
+ * DAnCE/RepositoryManager/HTTP_Handler.h:
+ * DAnCE/RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/RepositoryManager/Options.h:
+ * DAnCE/RepositoryManager/Options.cpp:
+ * DAnCE/RepositoryManager/PC_Updater.h:
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/PC_Updater_T.h:
+ * DAnCE/RepositoryManager/PC_Updater_T.cpp:
+ * DAnCE/RepositoryManager/README.txt:
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/RepositoryManager/RepositoryManagerDaemon.idl:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/URL_Parser.h:
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp:
+
+ Updating the RepositoryManager with the latest changes from the
+ escher repository. Adding my newest changes. Adding some new
+ minor features.
+
+ * bin/PerlCIAO/TestUtils.base:
+ * bin/PerlCIAO/TestUtils.pm:
+ * bin/PerlCIAO/TestUtils_Base.pm:
+ * bin/PerlCIAO/generate_container.pl:
+ * bin/PerlCIAO/perlciao.mpc:
+
+ This is a set of test utilities tailored towards testing CIAO components.
+ It provides a nice and quick interface provising the common functionality
+ necessary to run a CIAO test and perform clean-up on failure. This utils
+ are a wrapper around the $ACE_ROOT/bin/PerlACE/ utilities. I will check in
+ an example of how test utils are used shortly.
+
+ * tools/Config_Handlers/IDD_Handler.cpp:
+
+ Fixing a bug in the PackageConfiguration reverse handler.
+
+
+Fri May 5 15:36:47 2006 Douglas C. Schmidt <schmidt@cse.wustl.edu>
+
+ * docs/cidlc.html Added documentation for the CIDL compiler.
+ Thanks to Boris for contributing this.
+
+ * docs/index.html: Fixed some broken links to the tutorials and added
+ a link to Ming's tutorial example that shows how to use CoSMIC.
+
+Fri May 5 16:58:17 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp (CIAO): Fixed the
+ parsing of command line options.
+
+Thu May 4 21:35:01 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/DP_Handler.cpp
+
+ Fixed a reverse handler bug.
+
+Thu May 4 08:33:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ Fixed compilation error
+
+Wed May 3 22:11:32 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * docs/schema/Basic_Deployment_Data.xsd
+ * docs/schema/ccd.xsd
+ * docs/schema/cdd.xsd
+ * docs/schema/cdp.xsd
+ * docs/schema/cid.xsd
+ * docs/schema/cpd.xsd
+ * docs/schema/iad.xsd
+ * docs/schema/pcd.xsd
+ * docs/schema/toplevel.xsd
+
+ Schema propagated from the ARMS repo.
+
+Wed May 3 12:53:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * Config_Handlers/Utils/Functors.h:
+ Made the FUNC argument just return void, this fixes the errors with this
+ template with BCB on my system, hopefully it doesn't break other
+ compilers
+
+Tue May 2 03:04:50 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.cpp: Removed the code
+ snippet that bootstraps the NodeApplication process at a
+ specific OS priority.
+
+Wed Apr 26 21:25:26 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ * tools/Config_Handlers/Utils/Functors.h
+
+ Introduced a workaround for a ICE in GCC 4.0.22.
+
+Wed Apr 26 13:10:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/DP_Handler.cpp:
+ * tools/Config_Handlers/XML_File_Intf.cpp:
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp:
+ * tools/Config_Handlers/XSCRT/XMLSchema.hpp:
+ * tools/Config_Handlers/XSCRT/Elements.hpp:
+ * tools/Config_Handlers/XSCRT/XML.hpp:
+ Removed workarounds for vc6 again
+
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h:
+ Added missing post.h
+
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h:
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.h:
+ Fixed incorrect file tags
+
+Wed Apr 26 08:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ Fixed compile problem in gcc4 build
+
+Tue Apr 25 21:27:05 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc
+
+ Linking problems for Borland.
+
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+
+ More compile fixes for Borland.
+Tue Apr 25 20:12:25 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * ciao/Deployment_Core.idl
+ * tools/Config_Handlers/ADD_Handler.cpp
+ * tools/Config_Handlers/CCD_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.h
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ERE_Handler.cpp
+ * tools/Config_Handlers/ERE_Handler.h
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.h
+ * tools/Config_Handlers/Property_Handler.cpp
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/Req_Handler.cpp
+ * tools/Config_Handlers/Req_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.cpp
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.h
+
+ Compilation fixes for borland, some cosmetic fixes as well.
+
+Tue Apr 25 09:00:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/CPD_Handler.h:
+ ComponentPortDescription is a struct, so also forward declare it
+ as a struct
+
+Mon Apr 24 18:53:22 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp
+
+ Fixed a code generation problem caused by careless merging.
+
+Mon Apr 24 18:40:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/ADD_Handler.cpp:
+ * tools/Config_Handlers/DP_Handler.cpp:
+ * tools/Config_Handlers/ID_Handler.h:
+ Removed incorrect semi colons
+
+Mon Apr 24 06:33:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/IDREF_Base.cpp:
+ Removed not needed semi colon that caused compile errors in some
+ builds
+
+Sun Apr 23 11:22:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Utils/XML_Helper.h:
+ Fixed compile error
+
+Sat Apr 22 21:13:10 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.hpp
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
+
+ Compile errors.
+
+Fri Apr 21 16:24:46 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * Merge from the ARMS Escher repository.
+
+ Changelog entries to follow:
+
+ Tue Apr 11 09:29:12 UTC 2006 <wotte@blade35.isislab.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.h
+ * DAnCE/NodeManager/Node_Manager.cpp
+
+ Additional debugging/compile fixes.
+
+ Tue Apr 11 08:30:42 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/Deployment_Core.idl
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.cpp
+ * DAnCE/ExecutionManager/ExecutionManager_Impl.h
+
+ Modified to passivate (and reactivate later) shared components
+ when tearing down an assembly.
+
+ Sun Apr 9 01:03:19 UTC 2006 <wotte@blade35.isislab.vanderbilt.edu>
+
+ * M APRIL_DEMO.mwc
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/ExecutionManager/Execution_Manager.cpp
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/MonitorCB.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/Node_Manager.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+
+ Various compile/runtime fixes.
+
+ Fri Apr 7 15:47:34 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Modified to enforce passivation occured on all components
+ before any connections are removed.
+
+ Fri Apr 7 03:28:03 UTC 2006 Edward R. Mulholland <emulholl@atl.lmco.com>
+
+ * tools/Config_Handlers/Utils/XML_Helper.cpp:
+
+ Replaced "throw;" (which Stroustrup tells us causes an abort)
+ with "throw 0;" (kind of like an unnamed exception, which is
+ clearly what the author of this code intended).
+
+ * ciao/Packaging_Data.idl:
+
+ I've had occasion to use this file with the IFR Service, and
+ I've found that the IFR Service backend chokes on a bunch of
+ stuff here. The stuff that it chokes on has been protected with
+ "#ifndef AVOID_IFR_CRASH" so that you can protect the backend
+ from crashing if you pass -DAVOID_IFR_CRASH to tao_ifr.
+
+ * ciao/Servant_Impl_Base.cpp:
+ * ciao/Servant_Impl_Base.h:
+
+ Implemented the add_receptacle operation.
+
+ Fri Apr 7 02:55:37 UTC 2006 Edward R. Mulholland <emulholl@atl.lmco.com>
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+
+ Added ACE_CATCHANY and ACE_CATCHALL blocks in
+ Plan_Launcher_i::launch_plan to avoid crashing in case of CORBA
+ fault.
+
+ Fri Apr 7 02:54:29 UTC 2006 Edward R. Mulholland <emulholl@atl.lmco.com>
+
+ * DAnCE/NodeApplication/Configurator_Factory.cpp:
+
+ Options beginning with "-ORB" are explicitly ignored. This
+ avoids having an "-ORB" option mistakenly parsed as being a
+ "-o <ior_output_file>" option.
+
+ Fri Apr 7 02:51:31 UTC 2006 Edward R. Mulholland <emulholl@atl.lmco.com>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code to support "get_all_receptacles" operation.
+
+ Fri Apr 7 02:47:02 UTC 2006 Edward R. Mulholland <emulholl@atl.lmco.com>
+
+ * CCF/CCF/IDL2/SemanticGraph/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp:
+
+ Made a couple small changes that keep the CIDLC from coughing on
+ enums
+
+ Fri Apr 7 02:37:34 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
+
+ Fixed a bug in detecting External connection and Internal
+ connections. Earlier when an external component is detected,
+ not *all* connections associated with this components are
+ purged from the to-be-removed connections list. Added another
+ helper method <purge_connections> to accomplish this task.
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+
+ Modified to reuse rebind() instead of bind() to avoid
+ redeployment duplicate instance errors.
+
+ Thu Apr 6 15:02:59 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.cpp:
+
+ Modified the NodeApplications to up at OS priority 20 instead of
+ 50.
+
+ Thu Apr 6 00:35:35 UTC 2006 Nilabja Roy <roy_n@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+
+ Fixed the TM component removal problem. Changed/Removed
+ debug messages.
+
+ Wed Apr 5 16:54:20 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Any_Handler.cpp
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/IDD_Handler.cpp
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
+ * tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
+
+ Improvements to output more information in the reverse handler.
+
+
+ Thu Mar 30 22:10:53 UTC 2006 William Otte <wotte@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * ciao/Home_Servant_Impl_T.cpp
+ * ciao/Servant_Activator.cpp
+ * tools/Config_Handlers/DD_Handler.cpp
+ * tools/Config_Handlers/IDREF_Base.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+
+ Disabled excessive debugging.
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
+ * DAnCE/NodeApplicationManager/ImplementationInfo.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Disabled RT-CCM support.
+
+ * DAnCE/TargetManager/DomainDataManager.cpp
+
+ Added error messages.
+
+ Wed Mar 29 21:34:07 UTC 2006 Nilabja Roy <roy_n@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ Fixed a Access Error in the monitor.
+
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Added to have graceful termination.
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Update to turn off monitors at the end.
+
+ Mon Mar 27 22:39:25 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Utils/XML_Helper.cpp
+ * tools/Config_Handlers/Utils/XML_Helper.h
+
+ Mon Mar 27 20:10:09 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
+ (get_node_manager):
+
+ Modified this method to re-throw the caught exception.
+
+ Sun Mar 26 22:10:16 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+
+ Added code to handle exceptions while trying to connect to the
+ node managers in get_node_manager ().
+
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+
+ Added debug messages.
+
+ * RACE/Controller/Component/RACE_common.h:
+
+ Added a new file to define the RACE_DEBUG and RACE_ERROR macros.
+
+ Mon Mar 27 00:22:02 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+
+ Modified to allow ccm_passicate to be called on all components
+ before actually deactivating any components.
+
+ Thu Mar 23 23:18:56 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/MonitorController.cpp (svc):
+
+ Removed an unwanted debug statement.
+
+ Thu Mar 23 22:54:25 UTC 2006 Nishanth Shankarn <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+
+ Removed an unwanted debug statement.
+
+ Thu Mar 23 19:40:54 UTC 2006 Nishanth Shankarn <nshankar@dre.vanderbilt.edu>
+
+ * APRIL_DEMO.mwc:
+ * CIAO.mwc:
+ * CIAODAnCE.mwc:
+ * CIAOTAO.mwc:
+ * CIAO_TAO_DAnCE.mwc:
+
+ Modified the mwc files so that they exclude the RACE/hog_string
+ directory.
+
+ Thu Mar 23 18:04:58 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+
+ Fixed a bug in set_priority method.
+
+ Wed Mar 22 19:32:37 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Modified to make debug statements debug_level controlled.
+
+ Wed Mar 22 00:51:11 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+
+ Modified to find the corresponding NAM when given a plan_uuid.
+
+ Wed Mar 22 02:12:58 UTC 2006 Nilabja Roy <roy_n@dre.vanderbilt.edu>
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.cpp:
+
+ Removed some of the debug statements
+
+ Tue Mar 21 19:12:57 UTC 2006 Nishanth Shankarn <nshankar@dre.vanderbilt.edu>
+
+ * RACE/hog_string/hog.cdp:
+
+ Fixed the plan id.
+
+ Mon Mar 20 21:07:50 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+
+ turning off the HTTP capability for Linux until I figure out why
+ it affects the loading of libraries.
+
+ Mon Mar 20 20:40:37 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+
+ Changed loader path delimiter on Unix-like systems from ';' to ':'
+
+
+ Mon Mar 20 17:22:22 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/HTTP_Client.h:
+ * DAnCE/NodeApplicationManager/HTTP_Client.cpp:
+ * DAnCE/NodeApplicationManager/HTTP_Handler.h:
+ * DAnCE/NodeApplicationManager/HTTP_Handler.cpp:
+ * DAnCE/NodeApplicationManager/URL_Parser.h:
+ * DAnCE/NodeApplicationManager/URL_Parser.cpp:
+
+ Oops. Forgot to add the actual HTTP code.
+
+ Mon Mar 20 04:27:48 UTC 2006 Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h:
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+
+ Adding HTTP capability to DAnCE.
+
+ * DAnCE/RepositoryManager/HTTP_Client.h:
+ * DAnCE/RepositoryManager/HTTP_Client.cpp:
+ * DAnCE/RepositoryManager/HTTP_Handler.h:
+ * DAnCE/RepositoryManager/HTTP_Handler.cpp:
+ * DAnCE/RepositoryManager/Options.h:
+ * DAnCE/RepositoryManager/Options.cpp:
+ * DAnCE/RepositoryManager/PC_Updater.h:
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/PC_Updater_T.h:
+ * DAnCE/RepositoryManager/PC_Updater_T.cpp:
+ * DAnCE/RepositoryManager/RM_Helper.h:
+ * DAnCE/RepositoryManager/RM_Helper.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager.mpc:
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/URL_Parser.h:
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h:
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp:
+
+ Porting the RepositoryManager to the newest XML config handlers.
+ Also migrating the code from the DOC repository to ensure the gap
+ between the code in this repository and that in cvs.doc.wustl.edu
+ repo is closed.
+
+
+ NOTE: I still have some testing left, but before that I need to
+ compile the CoSMIC version from this repository and regenerate
+ a bunch of descriptors because all the example descriptors are
+ broken.
+
+ Sat Mar 18 22:33:10 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/Interfaces/NodeManager.idl
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * ciao/Deployment.idl
+
+ Put the struct Sched_Params definition outside of the NAM
+ interface.
+ Cleaned up the code a bit.
+
+ Sun Mar 19 16:52:54 UTC 2006 Nilabja Roy <roy_n@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/CmpClient.cpp:
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Updated to implement the commitResource and releaseResource
+ function
+
+ Sat Mar 18 19:01:18 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication.cpp:
+
+ Enhanced the NodeApplication to run in realtime priority mode.
+
+ Fri Mar 17 06:36:18 UTC 2006 Nilabja Roy <roy_n@dre.vanderbilt.edu>
+
+ * DAnCE/Interfaces/NodeManager.idl:
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ * ciao/Deployment.idl:
+
+ Implemented the set_priority method on the NodeManager
+ and NodeApplicationManager interface. Removed some of the debug
+ messages
+
+ Thu Mar 16 03:54:39 UTC 2006 Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/DD_Handler.cpp:
+ Updated the handler to handle optional parameters
+
+ Tue Mar 14 07:01:28 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ Updated to make it portable in windows
+
+ * DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp:
+ Fixed the entry point.
+
+ Mon Mar 13 23:04:32 UTC 2006 <wotte@mako.isislab.vanderbilt.edu>
+
+ * tools/Config_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/DataType_Handler.h
+ * tools/Config_Handlers/ID_Handler.h
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/Req_Handler.h
+ * tools/Config_Handlers/SatisfierProperty_Handler.h
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.h
+ * tools/Config_Handlers/Utils/XercesString.h
+
+ Fixed linking/warnings on Windows.
+
+ Mon Mar 13 18:27:27 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager.mpc:
+ Changed the projects to depend on NodeManager_Stub. This will fix the
+ linking errors in Windows.
+
+ Mon Mar 13 17:36:28 UTC 2006 Krishnakumar B <kitty@dre.vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp (namespace): Updated the
+ generated code to set the component id on the component context
+ class to allow retrieving the id at run-time from an executor
+ implementation.
+
+ Mon Mar 13 17:28:44 UTC 2006 <wotte@mako.isislab.vanderbilt.edu>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
+
+ Fixes for nameservice discovery of EM.
+
+ * docs/schema/toplevel.xsd
+
+ Minor correction to schema.
+
+ Fri Mar 10 17:03:26 UTC 2006 <wotte@mako.isislab.vanderbilt.edu>
+
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+
+ Fixed minor bug in URI interface.
+
+ Thu Mar 9 22:26:17 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Context_Impl_Base.cpp:
+ * ciao/Context_Impl_Base.h:
+
+ Added CORBA::String_var member to store the component instance
+ id, also added a pair of set/get methods called _ciao_instance_id.
+
+ Wed Mar 8 19:07:31 UTC 2006 <wotte@mako.isislab.vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp
+
+ Add error message for connection failure.
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
+
+ Disabled this project.
+
+ * DAnCE/TargetManager/TargetManager_exec.cpp
+ * DAnCE/TargetManager/TargetManager_exec.h
+
+ Fix entry point problems.
+
+ Wed Mar 8 19:29:20 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Added the structure in the TMExt interface to maintain the
+ mapping between hostname to NM refs.
+
+ Wed Mar 8 14:40:41 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools//Config_Handlers/Deployment.cpp
+ * tools//Config_Handlers/Deployment.hpp
+ * tools//Config_Handlers/GNUmakefile
+ * tools//Config_Handlers/cdd.cpp
+ * tools//Config_Handlers/cdd.hpp
+ * tools//Config_Handlers/pcd.cpp
+ * tools//Config_Handlers/pcd.hpp
+ * tools//Config_Handlers/toplevel.cpp
+ * tools//Config_Handlers/toplevel.hpp
+ * tools//Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools//Config_Handlers/Package_Handlers/PCD_Handler.h
+
+ New generated code.
+
+ Wed Mar 8 03:11:02 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Implement the Signal Handler for the process NodeManager. And
+ set the option avoid_zombies=0
+
+
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/NodeManager/MonitorController.cpp:
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Implement ComponentID to Process Id mapping
+
+ Tue Mar 7 23:26:41 UTC 2006 Nilabja Roy <nilabjar@localhost.localdomain>
+
+ * DAnCE/TargetManager/DomainDataManager.cpp
+ * DAnCE/TargetManager/TargetManagerExt.idl
+ * DAnCE/TargetManager/TargetManager.mpc:
+ Changed to depend on the NodeManager_Stub, so that
+ CIAO::NodeManager can be used.
+
+ Tue Mar 7 03:14:50 UTC 2006 Nilabja R <nilabjar@dre.vanderbilt.edu>
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Changed to add the Comp_id to Proc_id mapping
+
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ Changed to add the percentage cpu same as vmstat
+
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/NodeManager/MonitorController.cpp:
+ Changed to add the Comp_id to Proc_id mapping
+
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Changed to add the Comp_id to Proc_id mapping
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ Changed to add interface to RACE
+
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Changed to add interface to RACE
+
+ * DAnCE/TargetManager/descriptors/Domain.cdd:
+ Updated to the latest xsd
+
+
+ * docs/schema/cdd.xsd:
+ Changed the Domain definations
+
+ Mon Mar 6 19:46:54 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/Interfaces/NodeManager.idl
+ * DAnCE/NodeManager/NodeManager_Impl.h
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+
+ Added the set_priority method to modify the priority of
+ NodeApplication process.
+
+ Wed Mar 1 20:56:16 UTC 2006 Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+
+ * DAnCE/TargetManager/TargetManager_exec.h
+ * DAnCE/TargetManager/TargetManager_exec.cpp
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+
+ Added method to TargetManagerExt interface to obtain references to
+ the NodeManagers.
+
+
+ Fri Feb 24 22:55:51 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.cpp
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/CEPE_Handler.cpp
+ * tools/Config_Handlers/CEPE_Handler.h
+ * tools/Config_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/CRDD_Handler.cpp
+ * tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp
+ * tools/Config_Handlers/Config_Handlers.mpc
+ * tools/Config_Handlers/DP_Handler.cpp
+ * tools/Config_Handlers/DP_Handler.h
+ * tools/Config_Handlers/DataType_Handler.cpp
+ * tools/Config_Handlers/DataType_Handler.h
+ * tools/Config_Handlers/DnC_Dump.cpp
+ * tools/Config_Handlers/ERE_Handler.h
+ * tools/Config_Handlers/IDD_Handler.cpp
+ * tools/Config_Handlers/IDREF_Base.cpp
+ * tools/Config_Handlers/IDREF_Base.h
+ * tools/Config_Handlers/ID_Handler.cpp
+ * tools/Config_Handlers/ID_Handler.h
+ * tools/Config_Handlers/IRDD_Handler.cpp
+ * tools/Config_Handlers/IRDD_Handler.h
+ * tools/Config_Handlers/MDD_Handler.cpp
+ * tools/Config_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Property_Handler.h
+ * tools/Config_Handlers/RDD_Handler.cpp
+ * tools/Config_Handlers/Req_Handler.cpp
+ * tools/Config_Handlers/Req_Handler.h
+ * tools/Config_Handlers/STD_PCD_Handler.h
+ * tools/Config_Handlers/ccd.cpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cid.cpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.cpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.cpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.cpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/test.cdp
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CAD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CID_Handler.h
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/CPD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h
+ * tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/IAD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/NIA_Handler.h
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/PCD_Handler.h
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
+ * tools/Config_Handlers/Package_Handlers/PC_Intf.h
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ * tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
+ * tools/Config_Handlers/Package_Handlers/SID_Handler.h
+ * tools/Config_Handlers/Package_Handlers/test.cpp
+ * tools/Config_Handlers/Package_Handlers/descriptors/package.tpd
+ * tools/Config_Handlers/Utils/Exceptions.h
+ * tools/Config_Handlers/Utils/Functors.h
+ * tools/Config_Handlers/Utils/XML_Error_Handler.cpp
+ * tools/Config_Handlers/Utils/XML_Helper.h
+ * tools/Config_Handlers/XMLSchema/Writer.hpp
+
+ Package handlers and changes necessary to support them.
+
+Fri Apr 21 08:13:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+ Removed usage of ACE_NESTED_CLASS
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ Fixed compile errors
+
+Thu Apr 20 13:14:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/DnC_Dump.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ Fixed compile error
+
+Thu Apr 20 09:14:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/RT-CCM/CLA_Handler.cpp:
+ Fixed compile error
+
+Wed Apr 19 19:03:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp:
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Fixed usage of sequences. The sequences now return
+ a pointer on the subscript operators, not _var which was not according
+ to the spec.
+
+Wed Apr 19 14:39:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/XMLSchema/Types.hpp:
+ Removed vc6 workaround
+
+Wed Apr 19 13:43:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * docs/schema/xsc-banner.h:
+ * tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp:
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp:
+ Removed include of vc6-4786.h
+
+Wed Apr 19 13:39:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/STD_PC_Intf.cpp:
+ * tools/Config_Handlers/XSCRT/XMLSchema.hpp:
+ * tools/Config_Handlers/XSCRT/Elements.hpp:
+ * tools/Config_Handlers/XSCRT/XML.hpp:
+ * tools/Config_Handlers/DP_Handler.cpp:
+ * tools/Config_Handlers/DP_Handler.cpp:
+ Removed vc6 workarounds
+
+Wed Apr 19 11:23:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/DnC_Dump.{h,cpp}:
+ Updated for string manager change in TAO
+
+ * ciao/Servant_Impl_Base.cpp:
+ Updated for sequence change
+
+Wed Apr 19 07:48:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * tools/Config_Handlers/Basic_Deployment_Data.hpp
+ * tools/Config_Handlers/Deployment.hpp
+ * tools/Config_Handlers/ccd.hpp
+ * tools/Config_Handlers/cdd.hpp
+ * tools/Config_Handlers/cdp.hpp
+ * tools/Config_Handlers/cid.hpp
+ * tools/Config_Handlers/cpd.hpp
+ * tools/Config_Handlers/iad.hpp
+ * tools/Config_Handlers/pcd.hpp
+ * tools/Config_Handlers/toplevel.hpp
+ Removed vc6 workarounds
+
+ * tools/Config_Handlers/vc6-4786.h
+ Removed
+
+Tue Apr 18 20:55:05 2006 Wallace Zhang <zhangw@ociweb.com>
+
+ * CIAO version 0.5.1 released.
+
+Local Variables:
+mode: change-log
+add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time))
+indent-tabs-mode: nil
+End:
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-07a b/modules/CIAO/ChangeLogs/ChangeLog-07a
new file mode 100644
index 00000000000..613da3f1e4c
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-07a
@@ -0,0 +1,1122 @@
+Mon Jan 22 23:14:56 2007 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * CIAO version 0.5.5 released.
+
+Thu Jan 18 17:49:00 UTC 2007 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * docs/index.html:
+
+ Fixed broken links to doxygen.
+
+Wed Jan 10 21:35:25 UTC 2007 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * NEWS:
+
+ Updated with my changes since 0.5.4.
+
+Tue Jan 8 20:01:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * RACE/common/RACE_common.idl:
+ Use the CORBA::StringSeq to reduce footprint
+
+Tue Jan 8 19:43:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_CCMException.idl:
+ * ciao/CCM_Context.idl:
+ Added some commented out IDL that is part of the QoS4CCM spec
+
+Sun Jan 7 18:44:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/URL_Parser.cpp:
+ No need to set members to 0 in destructor
+
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ Fixed conversion warning and memory leak
+
+Sun Jan 7 12:14:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_ClientContainerInterceptor.idl:
+ * ciao/CCM_ClientContainerInterceptorRegistration.idl:
+ * ciao/CCM_ContainerClientRequestInfo.idl:
+ * ciao/CCM_ContainerInterceptor.idl:
+ * ciao/CCM_ContainerRequestInfo.idl:
+ * ciao/CCM_ContainerServantRequestInfo.idl:
+ * ciao/CCM_ContainerServerRequestInfo.idl:
+ * ciao/CCM_ContainerStubRequestInfo.idl:
+ * ciao/CCM_ExtensionComponent.idl:
+ * ciao/CCM_ExtensionContext.idl:
+ * ciao/CCM_InvalidRegistration.idl:
+ * ciao/CCM_QoS.idl:
+ * ciao/CCM_ServantContainerInterceptor.idl:
+ * ciao/CCM_ServantContainerInterceptorRegistration.idl:
+ * ciao/CCM_ServerContainerInterceptor.idl:
+ * ciao/CCM_ServerContainerInterceptorRegistration.idl:
+ * ciao/CCM_StubContainerInterceptor.idl:
+ * ciao/CCM_StubContainerInterceptorRegistration.idl:
+ Added interfaces from QoS for CCM spec (OMG 06-04-15). We
+ don't have an implementation yet, just the interfaces at
+ this moment
+
+Fri Jan 5 12:14:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ Fixed conversion warnings
+
+ * DAnCE/RepositoryManager/PC_Updater.cpp:
+ * DAnCE/RepositoryManager/RMadmin.cpp:
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ Improved layout and documentation
+
+Wed Jan 3 19:32:05 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
+
+ * CIAO_TAO_DAnCE.mwc:
+
+ Added $(ACE_ROOT)/contrib/minizip since the RepositoryManager can
+ use minizip if the zlib feature is enabled.
+
+Wed Jan 3 07:01:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ Fixed conversion warnings
+
+ * DAnCE/RepositoryManager/URL_Parser.cpp:
+ Initialise pointer with 0
+
+Wed Jan 3 16:18:36 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
+
+ * tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc:
+
+ Use the install base project instead of the deprecated core base
+ project.
+
+Thu Dec 28 12:22:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ Doxygen improvements
+
+Mon Dec 25 16:19:42 UTC 2006 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu>
+
+ * Merry Christmas everyone!!!
+
+Wed Dec 20 06:37:27 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * MPC/config/ciao_rtevent_dnc.mpb:
+ * MPC/config/ciao_events_dnc.mpb:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager.mpc:
+ * ciao/CCM_Core.mpc:
+
+ Fixed linking errors on OS X.
+
+Wed Dec 13 08:35:48 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp:
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp:
+
+ Fixed warnings on NoInterceptors_Core build related to
+ type conversion.
+
+Wed Dec 13 07:57:02 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp:
+
+ Fixed a fuzz error.
+
+Wed Dec 13 07:29:10 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp:
+
+ Fixed Debian_GCC_4.0 compilation error by removing
+ unnecessary common for enum definition.
+
+Wed Dec 13 07:19:13 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h:
+
+ Fixed a compilation error in Win2003_VC71_Versioned_Namespace
+ build by removing the unnecessary declaration.
+
+Wed Dec 13 06:45:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/Swapping/Sender/Sender_exec.h:
+ Fixed include because of file name changes
+
+Tue Dec 12 20:55:02 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp:
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h:
+
+ Modified the ciao_push_event() in this base class to fix
+ BCC warnings.
+
+Tue Dec 12 20:21:03 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h:
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp:
+
+ Fixed the fuzz errors.
+
+Tue Dec 12 20:15:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Component.idl:
+ * ciao/CCM_Core.mpc:
+ * ciao/CCM_EventBase.idl:
+ * ciao/CCM_EventConsumerBase.idl:
+ * ciao/CCM_HomeConfiguration.idl:
+ * ciao/CCM_HomeConfigurator.idl:
+ * ciao/CCM_Object.idl:
+ * ciao/CCM_PrimaryKeyBase.idl:
+ * ciao/CCM_SessionComponent.idl:
+ * ciao/CCM_StateIdFactory.idl:
+ * ciao/Servant_Impl_Base.h:
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl:
+ * DAnCE/TargetManager/DomainEvents.idl:
+ Added remarks about compliance and another set of splitting
+ idl files in smaller ones
+
+ * ciao/CCM_Event.idl:
+ * ciao/CCM_Events.idl:
+ Renamed Event to Events
+
+ * ciao/CCM_HomeConfigurator.idl:
+ * ciao/CCM_HomeConfiguration.idl:
+ Renamed Configurator to Configuration
+
+Tue Dec 12 14:48:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Base.idl:
+ * ciao/CCM_CCM2Context.idl:
+ * ciao/CCM_ComponentId.idl:
+ * ciao/CCM_Configurator.idl:
+ * ciao/CCM_Container.idl:
+ * ciao/CCM_Container_Ex.idl:
+ * ciao/CCM_Core.mpc:
+ * ciao/CCM_Entity2Context.idl:
+ * ciao/CCM_Event.idl:
+ * ciao/CCM_ExecutorLocator.idl:
+ * ciao/CCM_HomeConfigurator.idl:
+ * ciao/CCM_SessionComponent.idl:
+ * ciao/CCM_SessionContext.idl:
+ * ciao/CCM_StandardConfigurator.idl:
+ * ciao/CCM_StateIdFactory.idl:
+ * ciao/Deployment_NodeApplication.idl:
+ Moved more interfaces to their own file
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.h:
+ Removed virtual keywords, not needed
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ Const changes and improved some messages
+
+ * DAnCE/Plan_Generator/PCVisitor.h:
+ * DAnCE/Plan_Generator/PCVisitorBase.h:
+ Doxygen changes
+
+ * tools/Config_Handlers/DynAny_Handler.mpc:
+ layout changes
+
+Tue Dec 12 10:08:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * MPC/config/taoidl3toidl2defaults.mpb:
+ Moved from TAO to here
+
+Mon Dec 11 20:55:39 UTC 2006 Gan Deng <gan.deng@vanderbilt.edu>
+
+ * ciao/CCM_Event.idl:
+
+ Modified the "ciao_push_event" operation to pass in "source_id",
+ which is used to identify the sources of the publisher ports to
+ support event filtering mechanism.
+
+ * ciao/Deployment_Events.idl:
+
+ Added new IDL definitions to support RTEC federation, such as
+ AddrServer, UDPSender, UPDReceiver, etc.
+
+ * ciao/Deployment_NodeApplication.idl:
+
+ Modified the "install_es" operation to install one service object
+ per invocation, instead of a sequence of objects.
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp:
+ * DAnCE/NodeApplication/NodeApplication_Impl.h:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h:
+
+ Modified to accomodate the changes made above by adding only
+ one ciao event service object reference to the map.
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl:
+
+ Removed the inheritance relationship between Consumer_Config and
+ Supplier_Config object. The reason why it was there is because
+ of a tightly coupled design long time ago.
+
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp:
+ * ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h:
+
+ Added a virtual function "ciao_push_event" and provides a
+ default implementation, which is essentially a no_op impl.
+
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp:
+ * ciaosvcs/Events/CIAO_EventService_Factory_impl.h:
+
+ Modified the factory method "create" by passing in the
+ string identifier for the service object.
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl:
+
+ Added new operations to create gateways object to support
+ event channel federations.
+
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp:
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h:
+ * ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc:
+ * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp:
+ * ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h:
+
+ Added the implementation and MPC files to support event
+ channel federations in CIAO_Event_Service.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Automatically generate the implementation code of
+ ciao_push_event for component in the servant code.
+
+ * DAnCE/NodeApplication/NodeApplication.cpp:
+
+ Explicitly add the init_svcs() operation to the
+ NA component server implementation. We should figure
+ out a way to see whether we can avoid doing this at
+ this level.
+
+ * DAnCE/NodeManager/Node_Manager.cpp:
+
+ Enhanced NM to pass in service configuration file explicitly.
+ Also fixed a bug about controlling ORBDebugLevel.
+
+ * docs/schema/CIAOEvents.xsd:
+
+ Enhanced the CIAOEvents schema to support event channel
+ federation configuration.
+
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp:
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp:
+ * tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp:
+
+ Config handlers enhancement to support the above
+ schema changes.
+
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+
+ Modified to use environment variables instead of relative paths.
+
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+
+ Modified to explicitly print out the contents of the received msgs.
+
+ * examples/Hello/descriptors_events/ciao-events-example-collocated.ced:
+ * examples/Hello/descriptors_events/ciao-events-example-with-federation.ced:
+ * examples/Hello/descriptors_events/ciao-events-example-with-filters.ced:
+ * examples/Hello/descriptors_events/ciao-events-example.ced:
+ * examples/Hello/descriptors_events/ciao-events-federation-mcast.ced:
+ * examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced:
+ * examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced:
+ * examples/Hello/descriptors_events/ciao-events-federation-udp.ced:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp:
+ * examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp:
+ * examples/Hello/descriptors_events/NodeManagerMap.dat:
+ * examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat:
+ * examples/Hello/descriptors_events/rtec.conf:
+ * examples/Hello/descriptors_events/run_NodeDaemons.pl:
+ * examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl:
+ * examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl:
+
+ Added a bunch of test cases for CIAO Event Service.
+
+Fri Dec 8 22:59:14 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/tools.mwc:
+
+ Added IDL3_to_IDL2 directory to the list.
+
+Fri Dec 8 000:09:04 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl:
+
+ Another typo found by Abdullah Sowayan <abdullah.sowayan@lmco.com>.
+
+Thu Dec 7 20:22:57 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl:
+
+ Fixed bug that omits necessary space between items in 'after'
+ line, if it contains more than one item. Thanks to Abdullah
+ Sowayan <abdullah.sowayan@lmco.com> for reporting the bug.
+
+Thu Dec 7 19:15:04 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl:
+
+ Fixed typo, had 'ciao_server_dnc', should have been
+ 'ciao_servant_dnc'. Thanks to Abdullah Sowayan
+ <abdullah.sowayan@lmco.com> for reporting the mistake.
+
+Thu Dec 7 19:04:38 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Config_Handlers/DynAny_Handler.mpc:
+
+ Removed taolib and anytypecode base projects, since they are
+ already pulled in by typecodefactory.
+
+Thu Dec 7 13:47:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration (init):
+ Use ACE_Read_Buffer to read the file and parse it contents. This way
+ we are independent of a fixed buffer length, especially on systems
+ with multiple network cards and IPv6 enabled the IORs can get huge.
+
+Thu Dec 7 11:48:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ * MPC/config/ciao_server_dnc.mpb:
+ Don't build DnC server with minimum corba and CORBA/e, this was
+ disabled in the past implicitly because we used security as
+ MPC base project but because that has been removed we now
+ have to explicitly disable this project
+
+Thu Dec 7 11:34:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/Plan_Generator/Plan_Generator_Impl.cpp:
+ Added some todo's, check whether the narrow on the NamingContext
+ did succeed, use CORBA::ULong for the sequence index
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+ Use a CORBA::String_var to store the uuid string
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ Added some todo's, check whether the narrow on the NamingContext
+ did succeed, layout changes, fixed bugzilla bug 2729, thanks to Abdul
+ for reporting that.
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h:
+ Doxygen improvements
+
+Wed Dec 6 11:26:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CIAO_ServerResources.idl:
+ * ciao/Deployment_NodeApplicationManager.idl:
+ * DAnCE/NodeApplication/NodeApplication_Impl.h:
+ * DAnCE/NodeManager/MonitorCB.h:
+ * DAnCE/NodeManager/MonitorController.h:
+ * DAnCE/TargetManager/DomainDataManager.h:
+ * tools/Config_Handlers/DD_Handler.h:
+ Doxygen documentation updates
+
+ * MPC/config/ciao_container_dnc.mpb:
+ * ciao/CCM_Core.mpc:
+ Added avoids_corba_e_compact as base project
+
+Tue Dec 5 11:45:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ * MPC/config/ciao_container_dnc.mpb:
+ Don't build Dnc_Container with corba/e compact has been enabled
+
+ * tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc:
+ Simplified this MPC file
+
+Mon Dec 4 12:14:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * MPC/config/*:
+ All CIAO base projects are moved from
+ ACE_wrappers/bin/MakeProjectCreator/config to this directory
+
+Mon Dec 4 12:35:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/TM_Client.mpc:
+ Simplified this file using more base projects
+
+Mon Dec 4 12:29:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ Documentation changes
+
+ * DAnCE/TargetManager/TargetManager.mpc:
+ Simplified this file using more base projects
+
+Mon Dec 4 12:24:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * MPC
+ * MPC/config
+ New directory for the base projects specifically for CIAO
+
+Mon Dec 4 12:16:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp:
+ Use include from CIAO_ROOT and removed using namespace
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc:
+ Simplified this file
+
+Mon Dec 4 11:41:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/ExecutionManager.mpc:
+ Simplified by using the base projects
+
+Mon Dec 4 11:37:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ Converted the NodeApplication into a library and build
+ an exe using this library. Will prevent duplicate compilation
+ of part of the code. Fixes bugzilla bug 2739.
+
+ * DAnCE/NodeApplication/CIAO_NodeApplication_export.h:
+ New export file:
+
+ * DAnCE/NodeApplication/Configurator_Factory.h:
+ * DAnCE/NodeApplication/Container_Impl.h:
+ * DAnCE/NodeApplication/NodeApplication_Core.h:
+ * DAnCE/NodeApplication/NodeApplication_Impl.h:
+ Added export macro to export the class from the new NodeApplication
+ library.
+
+ * DAnCE/NodeApplication/NodeApplication.mpc:
+ Added new library project and use this in the executable.
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ Use the new NodeApplication library and the new base projects
+ I added for CIAO
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.{h,cpp,inl}:
+ Moved destructor from inline to cpp method and small code improvements
+
+ * DAnCE/NodeManager/NodeManager.mpc:
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.mpc:
+ Simplified by using the new base projects
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Small improvements
+
+Mon Dec 4 07:35:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIAO-INSTALL.html:
+ Updated build instructions
+
+ * ciao/Dynamic_Component_Activator.cpp:
+ Removed not needed return statements in a void method
+
+ * ciao/Dynamic_Component_Activator.h:
+ Changed guard in file to match filename
+
+ * ciao/Home_Servant_Impl_T.cpp:
+ Layout changes
+
+ * ciao/Port_Activator.{h,cpp}:
+ The name methods did really change oid, so renamed name
+ to oid and added a new name method to return the name
+ member
+
+ * ciao/Servant_Activator.cpp:
+ Const changes and updated for Port Activator changes
+
+ * ciao/Servant_Impl_Base.cpp:
+ Small code improvements
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp:
+ Const changes
+
+ * DAnCE/NodeApplication/Container_Impl.cpp:
+ * DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp:
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp:
+ Throw NO_MEMORY when allocation fails
+
+ * DAnCE/NodeApplication/RTConfig_Manager.cpp:
+ Throw BAD_PARAM when an incorrect method parameter has been passed
+
+ * DAnCE/NodeManager/BaseMonitor.h:
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ * DAnCE/NodeManager/NodeManager_Impl.h:
+ Doxygen changes
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Fixed a comment
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.h:
+ Use true/false for bool
+
+ * DAnCE/TargetManager/DomainDataManager.cpp:
+ Layout changes
+
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Removed not needed includes, made messages dependent
+ on the debug level, added missing duplicate
+
+ * DAnCE/TargetManager/TargetManager_exec.h:
+ Don't use std:: for auto_ptr
+
+ * DAnCE/TargetManager/TargetManagerExt.idl:
+ Removed commented out include
+
+ * DAnCE/TargetManager/TargetManagerImpl.idl:
+ Removed empty lines
+
+ * DAnCE/tests/NodeApplicationTest/run_test.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_ex.pl:
+ * DAnCE/tests/NodeApplicationTest/run_test_simple.pl:
+ * DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl:
+ * docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl:
+ * examples/Display/descriptors/basicNodeDaemon.pl:
+ * examples/Display/descriptors/run_NodeDaemons.pl:
+ * examples/Hello/descriptors/run_NodeDaemons.pl:
+ Use $ACE_ROOT/bin with use lib. This fixes bugzilla bug 2737,
+ thanks for Abdul for reporting this.
+
+ * docs/tutorials/Quoter/Simple/01.html:
+ Update from Abdul
+
+Fri Dec 1 16:27:34 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl:
+
+ Fixed generation of export files. Thanks to Abdullah
+ Sowayan <abdullah.sowayan@lmco.com> for reporting
+ the problem.
+
+Fri Dec 1 13:39:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * docs/tutorials/CoSMIC/index.html:
+ * docs/tutorials/Quoter/Simple/index.html:
+ Updated download location of ACE/TAO/CIAO
+
+Fri Dec 1 11:26:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+ Fixed invalid check whether we have a nil POA or not
+
+Fri Dec 1 11:17:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/TargetManager/Deployment_Configuration.{h,cpp}:
+ Removed these files, not used in the mpc file
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.{h,cpp}:
+ Close the file handle, part of the fix for bugzilla bug 2733
+
+ * DAnCE/TargetManager/DomainDataManager.{h,cpp}:
+ Const changes, sequences have a CORBA::ULong as length, not int.
+ Added some todo's and use a little bit more ACE
+
+ * DAnCE/TargetManager/TargetManager.cidl:
+ Removed empty line
+
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Fixed memory management and the way we check for a nil
+ reference
+
+Fri Dec 1 09:01:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * bin/generate_component_mpc.pl:
+ Layout improvements, thanks to Abdul for making this
+ update.
+
+Thu Nov 30 12:45:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/ExecutionManager/Execution_Manager.cpp:
+ Removed not needed ACE_TRY_CHECK
+
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.cpp:
+ * DAnCE/ExecutionManager/Execution_Manager_Impl.h:
+ Const improvement
+
+ * DAnCE/RepositoryManager/RepositoryManager.cpp:
+ Initialise pointer with 0, removed code after return
+ added added a todo
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.h:
+ Doxygen improvement
+
+ * DAnCE/RepositoryManager/ZIP_Wrapper.cpp:
+ Lot of layout changes to make the code a little bit more
+ readable, more has to be done to this file
+
+ * DAnCE/RepositoryManager/ZIP_Wrapper.h:
+ Doyxgen improvements and removed not needed include
+
+ * DAnCE/TargetManager/CmpClient.cpp:
+ Use true/false for a bool
+
+ * DAnCE/TargetManager/Deployment_Configuration.cpp:
+ Use bool and use 0 instead of NULL
+
+ * DAnCE/TargetManager/DomainDataManager.h:
+ Doxygen changes
+
+ * DAnCE/TargetManager/DomainEvents.idl:
+ Removed not needed include
+
+ * DAnCE/TargetManager/TargetManager_exec.cpp:
+ Layout changes
+
+ * DAnCE/TargetManager/TM_Client.mpc:
+ Removed not needed includes
+
+Wed Nov 29 21:26:53 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/generate_component_mpc.html:
+
+ New file, documentation for the Perl script
+ generate_component_mpc.pl, in CIAO_ROOT/bin.
+
+ * bin/generate_component_mpc.pl:
+
+ Changes mainly to correct problems with MPC files
+ generated for non-component builds, i.e., from some IDL
+ file used in common by multiple component builds, such
+ as the definition of a port interface. Also made changes
+ and added a new command line option to help minimize the
+ amount of code generated from IDL and minimize the
+ dependencies of the generated makefile or project.
+
+Wed Nov 29 15:43:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ Don't use plain new, fixes bugzilla bug 2732. Thanks to Abdul
+ for reporting this
+
+Wed Nov 29 12:48:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/*.idl:
+ Added ciao/ as prefix to the include path. This way it is clear
+ where we are including a file from.
+
+Tue Nov 28 21:38:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RTNodeApplication:
+ Zapped, not used anymore
+
+Tue Nov 28 19:33:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Deployment_DomainApplicationManager.idl:
+ Added comments about more details which are not compliant according
+ to the spec
+
+ * DAnCE/DomainApplicationManager/Deployment_Configuration.cpp:
+ Use native bool instead of int
+
+ * DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h:
+ Reordered includes and improved doxygen documentation
+
+ * DAnCE/NodeApplication/NodeApplication_Impl.cpp:
+ Const changes, use ACE_ERROR for error messages
+
+ * DAnCE/NodeManager/CIAO_Monitor.cpp:
+ Const changes, use more ACE and little cleanup
+
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ Doxygen improvement
+
+ * DAnCE/NodeManager/MonitorCB.cpp:
+ Code layout changes
+
+ * DAnCE/NodeManager/MonitorCB.h:
+ Doxygen changes and added some todo's
+
+ * DAnCE/NodeManager/MonitorController.cpp:
+ Use bool and small improvements
+
+ * DAnCE/NodeManager/Node_Manager.cpp:
+ Use the correct value for the lenght of the buffer passed
+ to hostname
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Small improvements and added some todo's
+
+ * DAnCE/Plan_Launcher/Plan_Launcher.cpp:
+ Cleanup
+
+ * DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp:
+ Made some debug lines dependent on a debug level
+
+Tue Nov 28 16:11:32 UTC 2006 William R. Otte <wotte@dre.vanderbilt.edu>
+
+ * tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
+ * DAnCE/NodeManager/Monitor.mpc
+
+ Fixes for link errors in OS X.
+
+Tue Nov 28 11:45:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ Updated because of idl file rename
+
+Tue Nov 28 10:42:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/*:
+ * *:
+ Renamed a lot of idl files, if the file contains interfaces/types
+ from the DAnCE spec, added Deployment_ as prefix, if they are
+ containing CIAO specific interfaces, added CIAO_. This way we can
+ more easily see if we have spec compliant IDL or not.
+
+Tue Nov 28 09:50:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Home.idl:
+ * ciao/CCM_Object.idl:
+ Moved CCMHome again to its own file
+
+ * ciao/Security.idl:
+ CIAO uses an interface of the security service but we don't
+ do a thing with it, so just define a local interface within
+ CIAO and use that for the moment, saves 250Kb of footprint
+
+ * ciao/CCM_Context.idl:
+ Use the local security interface
+
+ * ciao/ExectionManager.idl:
+ Added todo
+
+ * ciao/CCM_Core.idl:
+ Added new file
+
+Mon Nov 27 18:34:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/NodeApplicationManager.idl:
+ * ciao/Deployment_ApplicationManager.idl:
+ Moved ApplicationManager interface to its own file
+
+ * ciao/CCM_Core.mpc:
+ Added new file
+
+ * ciao/DomainApplicationManager.idl:
+ * ciao/TargetManager.idl:
+ Updated includes
+
+ * ciao/Target_Data.idl:
+ Moved ResourceNotAvailable also to the new
+ Deyloyment_ApplicationManger file
+
+ * DAnCE/NodeManager/CIAO_Monitor.h:
+ Removed include of memory, not portable and not used.
+ Fixes bugzilla bug 2730. Thanks to Abdul for reporting
+ this.
+
+Mon Nov 27 15:41:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Deployment_Core.idl:
+ * ciao/Deployment_Container.idl:
+ * ciao/Deployment_NodeApplication.idl:
+ Moved types from Core to the other files and added remarks
+ to all CIAO specific types
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h:
+ * DAnCE/NodeApplicationManager/ImplementationInfo.h:
+ Updated includes because of the move above
+
+Mon Nov 27 14:55:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Core.mpc:
+ Added new Deployment_DeploymentPlan
+
+ * ciao/Deployment_Data.idl
+ * ciao/Deployment_DeploymentPlan.idl:
+ Moved types related to DeploymentPlan to their own file
+
+ * ciao/Deployment_Data.idl
+ Removed RequirementSatisfier, it is superfluous.
+
+ * ciao/Deployment.idl:
+ No need to include Deployment_Data
+
+ * ciao/Target_Data.idl:
+ Removed not needed include
+
+ * ciao/Deployment_Connection.idl:
+ * ciao/TargetManager.idl:
+ * RACE/Output_Adapters/Interface/PlanEgress.idl:
+ * RACE/Plan_Analyzer/Interface/PlanIngress.idl:
+ * RACE/Planner_Manager/Interface/Planner_Manager_I.idl:
+ * RACE/Planners/Interface/Planner_I.idl:
+ Updated include because of move above
+
+ * tools/Config_Handlers/DnC_Dump.{h,cpp}:
+ Removed RequirementSatisfier
+
+Mon Nov 27 14:11:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Deployment.idl:
+ Removed LastConfiguration, it is not used and has been zapped
+ from the DAnCE spec
+
+Mon Nov 27 14:04:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Deployment_Core.idl:
+ * ciao/Deployment_NodeApplication.idl:
+ Moved ESInstallationInfo to NodeApplication file
+
+ * ciao/Deployment.idl:
+ LastConfiguration doesn't seem used, added a comment to that
+ exception.
+
+ * ciao/NodeApplicationManager.idl:
+ Doxygen improvement
+
+Mon Nov 27 13:23:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/NodeApplicationManager.idl:
+ Doxygen improvement
+
+ * ciao/Deployment_Core.idl:
+ Removed InvalidLocation exception, not used and not in the DAnCE
+ spec
+
+Mon Nov 27 13:10:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Deployment_Core.idl
+ * ciao/Deployment_Container.idl
+ * ciao/Deployment_NodeApplication.idl
+ Moved some interfaces from Core to their own files
+
+ * ciao/CCM_Core.mpc:
+ Updated because of split above and added some more flags to
+ reduce the amount of generated files
+
+ * ciao/DomainApplicationManager.idl:
+ * ciao/NodeApplication_CallBack.idl
+ Updated include
+
+ * DAnCE/NodeApplication/Container_Impl.h:
+ * DAnCENodeApplication/NodeApplication_Impl.h:
+ * DAnCEtests/NodeApplicationTest/NodeApp_test_client.cpp:
+ * DAnCEtests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp:
+ * DAnCEtests/NodeApplicationTest/NodeApp_test_client_ex.cpp:
+ * DAnCEtests/NodeApplicationTest/NodeApp_test_client_simple.cpp:
+ Updated includes because of refactoring above
+
+Mon Nov 27 09:40:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
+ Instead of the http files in this library, use the HTTP
+ classes from the TAO lib
+
+ * DAnCE/RepositoryManager/HTTP_Client.cpp
+ * DAnCE/RepositoryManager/HTTP_Client.h
+ * DAnCE/RepositoryManager/HTTP_Handler.cpp
+ * DAnCE/RepositoryManager/HTTP_Handler.h
+ Removed, not needed anymore, these files did move to the TAO
+ lib to support http:// ior and we are reusing them now in
+ CIAO
+
+ * DAnCE/RepositoryManager/RepositoryManager.mpc
+ Removed the files above
+
+Mon Nov 27 09:36:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.cpp:
+ Instead of the http files in this library, use the HTTP
+ classes from the TAO lib
+
+ * DAnCE/NodeApplicationManager/URL_Parser.h:
+ Doxygen improvements
+
+ * DAnCE/NodeApplicationManager/HTTP_Client.cpp:
+ * DAnCE/NodeApplicationManager/HTTP_Client.h:
+ * DAnCE/NodeApplicationManager/HTTP_Handler.cpp:
+ * DAnCE/NodeApplicationManager/HTTP_Handler.h:
+ Removed, not needed anymore, these files did move to the TAO
+ lib to support http:// ior and we are reusing them now in
+ CIAO
+
+ * DAnCE/NodeApplicationManager/NodeApplicationManager.mpc:
+ Removed the files above
+
+Mon Nov 27 09:33:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/NodeManager/NodeManager_Impl.cpp:
+ Removed include of errno.h. It is not portable, but it seems
+ it isn't needed at all. Thanks to Abdul for reporting this,
+ this fixes bugzilla bug 2726.
+
+Mon Nov 27 08:59:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * docs/tutorials/Quoter:
+ Extended this tutorial with more documentations. Thanks to
+ Abdul for delivering these files. This fixes bugzilla 2717
+
+Fri Nov 24 13:59:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * DAnCE/StaticConfigurator/StaticDAnCEParser.cpp:
+ Added check whether we got a valid NodeImplementationInfo back
+ and not a nill pointer. Fixes bugzilla bug 2692 finally.
+ Thanks to Abdul for pointing out the need for this check
+
+Fri Nov 24 09:41:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc:
+ Don't build this project in ace_for_tao configuration
+
+Thu Nov 23 12:34:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Home.idl:
+ * ciao/CCM_Object.idl:
+ Moved CCMHome again to its own file now the idl compiler has
+ been fixed to handle this correctly
+
+Wed Nov 22 20:39:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Dynamic_Component_Servant_Base.h:
+ Removed the character c from the first line which drove the
+ compilers really crazy
+
+Wed Nov 22 19:31:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Home.idl:
+ * ciao/CCM_Object.idl:
+ Moved CCMHome to CCMObject, when these are in seperate files
+ the generated code for components is not correct. We want to have
+ these interfaces in seperate files but we can sort out this
+ later.
+
+Wed Nov 22 14:45:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/Dynamic_Component_Servant_Base.h:
+ Fixed pragme once warning
+
+Wed Nov 22 11:05:12 2006 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ciao/CCM_Base.idl
+ * ciao/CCM_CCM2Context.idl
+ * ciao/CCM_CCMException.idl
+ * ciao/CCM_Component.idl
+ * ciao/CCM_Configurator.idl
+ * ciao/CCM_Container.idl
+ * ciao/CCM_Container_Ex.idl
+ * ciao/CCM_Context.idl
+ * ciao/CCM_Cookie.idl
+ * ciao/CCM_Core.mpc
+ * ciao/CCM_EnterpriseComponent.idl
+ * ciao/CCM_EntityComponent.idl
+ * ciao/CCM_EntityContext.idl
+ * ciao/CCM_Enumeration.idl
+ * ciao/CCM_Event.idl
+ * ciao/CCM_Home.idl
+ * ciao/CCM_HomeConfigurator.idl
+ * ciao/CCM_HomeExecutorBase.idl
+ * ciao/CCM_HomeFinder.idl
+ * ciao/CCM_HomeRegistration.idl
+ * ciao/CCM_KeylessCCMHome.idl
+ * ciao/CCM_Navigation.idl
+ * ciao/CCM_Object.idl
+ * ciao/CCM_ProxyHomeRegistration.idl
+ * ciao/CCM_Receptacle.idl
+ * ciao/CCM_Session2Context.idl
+ * ciao/CCM_SessionSynchronization.idl
+ * ciao/CCM_StandardConfigurator.idl
+ * ciao/Client_init.cpp
+ * ciao/Components.idl
+ * ciao/Cookies.h
+ * ciao/CosPersistentState.idl
+ * ciao/Deployment.idl
+ * ciao/Deployment_Application.idl
+ * ciao/Deployment_Base.idl
+ * ciao/Deployment_Connection.idl
+ * ciao/Deployment_Core.idl
+ * ciao/Deployment_Data.idl
+ * ciao/Deployment_TargetData.idl
+ * ciao/DomainApplicationManager.idl
+ * ciao/Home_Servant_Impl_Base.h
+ * ciao/NodeApplicationManager.idl
+ * ciao/NodeManager.idl
+ * ciao/Servant_Impl_Base.h
+ * ciao/Servant_Impl_T.cpp
+ * ciao/Server_init.cpp
+ * ciao/StandardConfigurator_Impl.h
+ * ciao/SwapExec.idl
+ * ciao/Swapping_Servant_Home_Impl_Base.h
+ * ciao/Target_Data.idl
+ * ciao/TargetManager.idl
+ * ciao/UpgradeableContext.idl
+ Splitted the huge idl files into smaller parts. The CCM files are almost done,
+ the Deployment files do need some more iterations to get smaller files that
+ contain an interface with the types they need. This way the linker can optimize
+ objects out during a static compilation
+
+ * ciao/CIAO_Value.idl:
+ * ciao/Container_Base.pidl:
+ Removed, not used at all
+
+ * ciao/ComponentsC.h:
+ * ciao/ComponentsS.h:
+ Removed, will be generated by tao_idl
+
+ * DAnCE/Interfaces/NodeManagerDaemon.idl
+ * DAnCE/NodeApplicationManager/Containers_Info_Map.h
+ * DAnCE/NodeManager/MonitorController.h
+ * DAnCE/TargetManager/CmpClient.cpp
+ * DAnCE/TargetManager/DomainDataManager.h
+ * DAnCE/TargetManager/DomainEvents.idl
+ * DAnCE/TargetManager/TargetManager.cidl
+ * DAnCE/TargetManager/TargetManager.mpc
+ * tools/Config_Handlers/DD_Handler.cpp
+ * tools/Config_Handlers/DnC_Dump.h
+ * examples/Hello/Sender/starter.cpp
+ Updated because of rename above
+
+ * DAnCE/TargetManager/TargetManager.idl:
+ Renamed to TargetManagerImpl.idl, this is the interface
+ it contains.
+
+ * DAnCE/NodeApplication/Container_Impl.cpp
+ * DAnCE/NodeApplication/Container_Impl.h
+ Removed get_homes(), it is not in the base idl
+
+ * examples/Display/Display_Base/Display_Base.mpc
+ * examples/Display/GPS/GPS.mpc
+ * examples/Display/NavDisplay/NavDisplay.mpc
+ * examples/Display/RateGen/RateGen.mpc
+ * RACE/common/RACE_common.mpc
+ * RACE/Input_Adapters/Base/Input_Adapter.mpc
+ * RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
+ * RACE/Output_Adapters/Base/Output_Adapter.mpc
+ * RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc
+ * RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc
+ * RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc
+ * RACE/Planner_Manager/Component/Planner_Manager.mpc
+ * RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc
+ * RACE/Planners/Base/Planner.mpc
+ * RACE/Planners/Interface/Planner_Interface.mpc
+ * RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc
+ * tests/IDL3/ImpliedIDL/All/all.mpc
+ * tests/IDL3/Lookup/lookup_test.mpc
+ * tests/Minimum/Minimum_Base/Minimum.mpc
+ * tests/Minimum/Receiver/Receiver.mpc
+ * tests/Minimum/Sender/Sender.mpc
+ Simplified these mpc files, the -GT option is not added by
+ orbsvcslib anymore and -Sc is deprecated
+
+ * tests/IDL3/Events/Any/main.cpp:
+ * tests/IDL3/Events/Any/README:
+ * tests/IDL3/Events/Any/run_test.pl:
+ Updated this test to reproduce a problem with valuetype
+ insertion into an any. This test will now fail until
+ Jeff Parsons commits some idl compiler changes
+
+Mon Nov 20 08:16:34 2006 Simon McQueen <sm@prismtech.com>
+
+ * CIAO version 0.5.4 released.
+
+Local Variables:
+mode: change-log
+add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time))
+indent-tabs-mode: nil
+End:
+
diff --git a/modules/CIAO/ChangeLogs/ChangeLog-pre_release b/modules/CIAO/ChangeLogs/ChangeLog-pre_release
new file mode 100644
index 00000000000..5f7b2769f7c
--- /dev/null
+++ b/modules/CIAO/ChangeLogs/ChangeLog-pre_release
@@ -0,0 +1,6202 @@
+Fri Apr 02 13:41:09 2004 Balachandran <bala@dre.vanderbilt.edu>
+
+ * CIAO version 0.4.1 released.
+
+Fri Apr 2 13:05:56 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * NEWS:
+
+ Updated with the latest developments just prior to BFO.
+
+Wed Mar 31 23:03:59 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Added code emitter to generate includes of *S.h corresponding to
+ IDL files included in the CIDL file. Thanks to Gary Duzan
+ <gduzan@bbn.com> for pointing out the problem.
+
+Wed Mar 31 17:59:12 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/static_configurator/Static_Configurator.mpc:
+
+ Fixed fuzz warnings.
+
+Mon Mar 29 11:00:00 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Excluded the file RepositoryIdGenerator.cpp from the Release build,
+ as it has already been excluded from the Debug build. Thanks to
+ Marek Brudka <mbrudka@elka.pw.edu.pl> for reporting the problem.
+
+Sun Mar 28 23:51:17 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * TAO/CIAO/tools/RTComponentServer/Makefile.RTComponentServer:
+
+ Updated dependencies.
+
+ * TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h:
+
+ Removed inclusion of Functor.h.
+
+Mon Mar 29 05:46:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * TAO/CIAO/tools/RTComponentServer/Makefile.RTComponentServer:
+
+ Updated dependencies.
+
+ * TAO/CIAO/tools/RTComponentServer/RTConfig_Manager.h:
+
+
+
+Tue Mar 23 14:34:06 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Modified code generated by FacetEmitter class to generate
+ the _Servant class for a facet in the scope where the IDL
+ interface the facet employs is defined, as mandated by the
+ CCM spec.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Change generation of the declaration of a local variable
+ which is a _var of the executor class for a facet to match the
+ scope of the declaration of the executor class itself, which
+ must be, as mentioned above, in the same scope as the declaration
+ of the IDL interface used by the facet.
+
+ Thanks to Jessica Pistole <Jessica.Pistole@jhuapl.edu> for
+ sending the example IDL/CIDL files that demostrated the
+ problem.
+
+Tue Mar 16 11:22:44 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_ciao_contents.html:
+ * docs/static_config_example.html:
+ * docs/index.html:
+
+ Fixed webpage for unnecessary whitespace characters. Fixed links
+ to images. Thanks to Tao Lu for pointing out.
+
+Tue Mar 16 10:34:41 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Added instantiation of generators for regular and readonly
+ attributes in interfaces supported by components. The
+ corresponding code generation in the servant source file
+ was already there.
+
+Tue Mar 16 10:36:21 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Added the support for CIDL with MPC on Linux.
+
+Tue Mar 16 10:52:21 2004 Venkita Subramonian <venkita@harry.cs.wustl.edu>
+
+ * docs/static_config_example.html:
+ * docs/static_ciao_contents.html:
+ * docs/static_ciao_toc.html:
+
+ Made some modifications to include an example run.
+
+ * docs/index.html:
+
+ Added link from the CIAO main page to the static config
+ documentation.
+
+Sun Mar 14 00:23:02 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+ * CCF/CCF/CIDL/CodeGenerationKit.mpc:
+ * CCF/CCF/CIDL/CompilerElements.mpc:
+
+ Removed the * to disable the duplicated words in the
+ project/makefile.
+
+Sun Mar 14 00:16:46 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mpc:
+
+ Removed the * to disable the duplicated words in the
+ project/makefile.
+
+Mon Mar 15 10:14:16 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/cidlc.cpp:
+
+ Temporary fix for the wrong return code in CIDL compiler.
+ Thanks to Gary Duzan <gduzan@bbn.com> for reporting this.
+
+Fri Mar 12 11:03:38 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added missing operations to generate enum type names. Thanks to
+ Jessica Pistole <Jessica.Pistole@jhuapl.edu> for reporting
+ the missing type names in generated servant glue code.
+
+Thu Mar 11 16:30:45 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+
+ Added support for bounded string and wstring.
+
+ * CCF/Documentation/TODO:
+
+ Reflected new achievement.
+
+ * CIDLC/cidlc.cpp:
+
+ Cosmetic changes.
+
+2004-03-11 Venkita Subramonian <venkita@harry.cs.wustl.edu>
+
+ * ciao/Container_Base.cpp: Removed an ACE_DEBUG statement which
+ got in by mistake.
+
+Wed Mar 10 14:59:19 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_ciao_toc.html:
+ * docs/static_ciao_contents.html:
+ * docs/static_ciao_index.html: Updated documentation. Renamed
+ static_ciao.html to static_ciao_contents.html.
+
+Wed Mar 10 12:36:01 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code generator instantiations to handle multiple nested
+ modules.
+
+ * CIDLC/cidlc.cpp:
+
+ Fixed typo in usage message.
+
+Tue Mar 9 23:18:22 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/static_configurator/Static_Assembly_Parser.cpp:
+
+ Made a minor fix to eliminate unnecessary command line option
+ processing.
+
+ * tools/static_configurator/README: Added this file.
+
+Tue Mar 9 22:48:10 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_ciao.html:
+ * docs/imgs/ciao-static1.jpg:
+ * docs/imgs/ciao-static2.jpg:
+ * docs/imgs/ciao-dynamic1.jpg:
+ * docs/imgs/ciao-dynamic2.jpg:
+ * docs/imgs/ciao-static-vs-dynamic.jpg: Added documentation for
+ CIAO static configuration.
+
+Mon Mar 8 14:57:39 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Added inclusion of the source file when compiling with
+ --lem-force-all option.
+
+Mon Mar 8 13:54:16 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * NEWS:
+
+ Added a NEWS file which tracks user visible changes between
+ every beta. Thanks to Olli Savia and Gary Duzan for motivating
+ this.
+
+Wed Mar 3 14:30:53 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added code generation for operations corresponding to
+ attributes in facets and supported interfaces. Thanks to
+ Praveen K Sharma <psharma@bbn.com> for reporting the bug.
+ This closes [BUGID:1756].
+
+Tue Mar 2 19:50:50 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * DnC/Node/NodeApplicationManager_Impl.h:
+
+ Added @@Tao comments.
+
+Tue Mar 2 15:08:39 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed code generation in the body of an operation. This
+ body just delegates to the executor, so we have to
+ generate the argument list again (just the names, not
+ the types), but we don't have to generate the raises
+ list again. The front end Traversal raises() method
+ was getting executed, no code generated, but it was
+ picking up the overridden comma() method used for the
+ arg list. So we had to override raises() itself to
+ do nothing. Thanks to Boris for his help with this.
+
+Tue Mar 2 01:34:18 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Node:
+ * DnC/Node/NodeApplication_Impl.h:
+ * DnC/Node/NodeApplication_Impl.h:
+
+ Added the prototype definition files of
+ NodeApplication and NodeApplicationManager.
+
+Sun Feb 29 20:57:40 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/static_configurator/Static_Configurator.h:
+ * tools/static_configurator/Static_Configurator.cpp:
+ * tools/static_configurator/Static_Assembly_Parser.cpp: Fixed
+ compile errors in builds with native exceptions disabled.
+
+ * tools/static_configurator/Static_Assembly_Visitors.cpp: Fixed
+ compile errors in gcc 3.3.2. Thanks to Bala for pointing out.
+
+Sat Feb 28 15:42:22 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/static_configurator/Static_Assembly_Visitors.cpp:
+
+ Fixed a couple of small errors. But this file still doeasn't
+ compile with gcc 3.3.2. Sending Venkita note.
+
+Fri Feb 27 11:35:41 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed code generation errors reported by Edward Mulholland
+ <emulholl@atl.lmco.com>.
+
+Thu Feb 26 14:21:48 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAOTAO.mwc:
+
+ An mwc file for CIAO with its dependencies on ACE+TAO. Folks can
+ now run $ACE_ROOT/bin/mwc.pl CIAOTAO.mwc in $CIAO_ROOT and
+ invoke "make" from $CIAO_ROOT. Thanks to Brian Mendel and Ed
+ Mulholland for motivating this.
+
+Tue Feb 24 18:00:44 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl: Removed
+ * DnC/DnC_Deployment.idl
+ * DnC/DnC_Element.idl
+ * DnC/DnC_Resource.idl
+
+ Deployment.idl is splited into 3 parts now.
+
+Mon Feb 23 15:04:26 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Added generation of a top-level namespaces with the name
+ derived from composition. Plus all the necessary modifications
+ in generated code to adopt this scheme.
+
+Mon Feb 23 13:54:19 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Added ".\Literals.cpp" into the project.
+
+Mon Feb 23 13:34:20 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Reversed the change.
+
+Thu Feb 19 11:07:35 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/index.html:
+
+ Added the parts listing area. Added a few relative links.
+
+Wed Feb 18 13:05:35 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticGraph/Name.cpp:
+
+ Added missing header inclusion.
+
+Wed Feb 18 10:43:54 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/index.html:
+
+ Added the tutorial section in this file.
+
+Wed Feb 18 10:11:42 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+
+ Changed these MPC files to specify the output lib path.
+
+Wed Feb 18 14:05:13 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CCF/CCF/CCF.mwc:
+ Removed this file, it has an error and is not needed.
+
+Tue Feb 17 01:18:16 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * examples/OEP/Display/RateGen/client.cpp:
+ * examples/OEP/Display/RateGen/controller.cpp:
+
+ Fixed the code for exception safety when exceptions are
+ disabled. I don't claim that I have caught everything, but
+ should have most of the problems. Another pass is required to fix
+ the remaining problems.
+
+Mon Feb 16 20:01:19 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mwc:
+
+ Added the mpc files from CCF in there. This will make it easier
+ for the users. Users just need to go to $CIAO_ROOT/CIDLC and
+ type mwc.pl CIDLC.mwc and then a make. They need not go to go
+ and build CCF specifically. But this has a hitch that Tao needs
+ to fix. The CCF libraries should be installed in $CIAO_ROOT/lib
+ for this to work fine. Tao has accepted to fix this.
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Bunch of wrong environment macro usage. This should fix the
+ problems that Brian Mendel reported. Thanks to Brian for
+ reporting this.
+
+ These fixes wouldn't have taken so long. The CIDLC linking takes
+ a really really long time!
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/starter.cpp:
+ * examples/OEP/BasicSP/EC/EC_exec.cpp:
+ * examples/OEP/BasicSP/EC/client.cpp:
+ * examples/OEP/BasicSP/EC/controller.cpp:
+
+ Fixes to the executor code to get it compiling on platforms with
+ exceptions disabled.
+
+Mon Feb 16 16:32:11 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * CCF/CCF/CCF.mwc:
+ Fixed typo in this file, this fixes the problems out VC71 build has
+
+Fri Feb 13 11:51:17 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Added generation of file caption to local executor mapping.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed bug in name generation when decalartions are in file
+ scope.
+
+ * CIDLC/DescriptorGenerator.cpp:
+
+ Fixed inconsistent tags.
+
+ * CIDLC/Literals.cpp:
+ * CIDLC/Literals.hpp:
+
+ Split literals into header and source.
+
+ * CIDLC/CIDLC.mpc:
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/Makefile:
+ * CIDLC/Makefile.alt:
+
+ Added Literals.cpp
+
+Thu Feb 12 17:40:33 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mwc:
+ * CIDLC/CIDLC.mpc:
+
+ Updated these two files.
+ Note: Only linux with boost/utility installed as package/rpm is
+ tested.
+
+Thu Feb 12 11:00:39 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html
+ * CCF/CCF/CIDL/CIDL.mpc
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
+ * CCF/CCF/CompilerElements/CompilerElements.mpc
+ * CCF/CCF/IDL2/IDL2.mpc
+ * CCF/CCF/IDL3/IDL3.mpc
+
+ Updated these files to set the static linkage.
+
+Thu Feb 12 10:31:23 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CCF/CCF/CCF.mwc:
+
+ Added this workspace file.
+
+Wed Feb 11 19:17:54 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIAO-INSTALL.html:
+
+ Added this file for CIAO install/build instructions.
+
+Wed Feb 11 12:05:59 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Updated URLs to the Boost website. Fixed incorrect build
+ instruction for Windows.
+
+Wed Feb 11 11:36:08 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/run_test_debug.pl:
+
+ A new script that uses -ORBdebuglevel while running the
+ component server.
+
+ * examples/Hello/step-by-step.html:
+
+ Added a pointer to the above script.
+
+ Thanks to Gary Duzan <gduzan@bbn.com> and Praveen Sharma
+ <psharma@bbn.com> for motivating this.
+
+Tue Feb 10 18:15:59 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Fixed bugs and updated links.
+
+Tue Feb 10 16:44:33 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Changed the include path.
+
+Tue Feb 10 16:28:53 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * cidlc/CIDLC.vcproj:
+
+ Added '..' to include paths, to pick up inclusion of
+ ciao/Version.h.
+
+ * cidlc/ServantHeaderGenerator.cpp:
+ * cidlc/ServantSourceGenerator.cpp:
+
+ Fixed errors in generated environment variables. Thanks to
+ Edward Mulholland <emulholl@atl.lmco.com> for reporting the
+ problems.
+
+Tue Feb 10 14:54:48 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * ciao/Container_Impl.h:
+ * ciao/Container_Base.h: Changes to fix compile errors by adding
+ default arguments for static configuration related paramters in
+ the constructor.
+
+
+Tue Feb 10 11:35:47 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * DnC/Deployment.idl:
+
+ Added this file for the new DnC spec.
+
+Tue Feb 10 10:41:48 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/static_configurator/Static_Assembly_Visitors.{cpp,h}:
+ * tools/static_configurator/Static_Assembly_Parser.cpp:
+ * tools/static_configurator/Static_Assembly.h: Offline static
+ configuration parser to parse XML files into an intermediate C++
+ header file which will be included by the online configuration
+ engine.
+
+ * tools/static_configurator/Static_Configurator.mpc:
+ * tools/static_configurator/Static_Configurator.{h,cpp}: Online
+ configuration engine that reads the intermediate table created
+ by the offline parser. This is responsible for creating
+ component servers, homes, containers, components and
+ establishing connections between components.
+
+ * ciao/Container_Base.{h,cpp}: Modifications for static
+ configuration. While installing a home, instead of loading the
+ entry point symbol from a DLL, the entry point function pointer
+ is obtained from a hashmap which is passed to the
+ container. This hashmap contains the name of the entry point and
+ the entry point function pointer.
+
+ * ciao/Container_Impl.{h,cpp,inl}:
+ * ciao/ComponentServer_Impl.{h,cpp,inl}: Changed constructor
+ signatures to add a flag for static configuration and a hashmap
+ containing the static entry function pointers. These are
+ defaulted to 0.
+
+Fri Feb 6 15:54:26 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/Hello/Hello_Base/Hello_Base.idl:
+ * examples/OEP/BasicSP/BasicSP.idl:
+ * examples/OEP/Display/HUDisplay.idl:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.idl:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
+
+ Removed the 'ciao/' path prefix from inclusions of
+ Components.idl.
+
+Fri Feb 6 14:49:48 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.mpc:
+ * CCF/CCF/CIDL/CIDL.mpc
+ * CCF/CCF/IDL2/IDL2.mpc
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
+ * CCF/CCF/CompilerElements/CompilerElements.mpc
+ * CCF/CCF/IDL3/IDL3.mpc
+
+ Added reqires cidl in these mpc files. By default
+ cidl is not turned on, so MPC won't generate makefiles.
+
+Thu Feb 5 12:58:14 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+ * CIDLC/README.html:
+
+ Updated all URLs to point to the 'central location'.
+
+Wed Feb 4 14:58:05 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * ./CIDLC/CIDLC.mpc:
+ * ./CCF/CCF/CIDL/CIDL.mpc
+ * ./CCF/CCF/IDL2/IDL2.mpc
+ * ./CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
+ * ./CCF/CCF/CompilerElements/CompilerElements.mpc
+ * ./CCF/CCF/IDL3/IDL3.mpc
+
+ Added these mpc files to build CIDLC compiler.
+ The libpath of Boost and Utility is not fixed yet.
+ Need to test all the mpc files on both Linux/Windows.
+
+Wed Feb 4 13:58:36 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/CCM_Base.idl:
+ * ciao/CCM_Container.idl:
+ * ciao/CCM_Core.mpc:
+ * ciao/CCM_Deployment.idl:
+ * examples/Hello/Hello_Base/Hello_Base.idl:
+ * examples/OEP/BasicSP/BasicSP.idl:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.cpp:
+ * examples/OEP/Display/HUDisplay.idl:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * performance-tests/Benchmark/Benchmark.mpc:
+ * performance-tests/Benchmark/server.cpp:
+ * performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.idl:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/client.cpp:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
+ * performance-tests/Benchmark/RoundTripServer/server.cpp:
+ * tests/temp/assembly/client.cpp:
+ * tests/temp/assembly/control.idl:
+ * tests/temp/assembly/control.mpc:
+ * tests/temp/assembly/server.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.h:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Service.idl:
+ * tools/Assembly_Deployer/Assembly_Visitors.h:
+ * tools/Assembly_Deployer/Deployment_Configuration.h:
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/ComponentServer/ComponentServer_test_client.cpp:
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/Daemon_Commands.cpp:
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/Daemon_Commands.cpp:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+ * tools/XML_Helpers/XMLHelpers.mpc:
+ * tools/XML_Helpers/XML_Utils.h:
+
+ - Removed all include paths except TAO_ROOT and CIAO_ROOT
+ for C++ and IDL compilers, from MPC files.
+
+ - Modified includes in source and header files as necessary,
+ per the above changes.
+
+ - Added missing ACE_ROOT/ace includes.
+
+ - Made other modifications as necessary to MPC files to
+ eliminate build errors.
+
+Mon Feb 2 20:07:41 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/Makefile.XML_Helpers:
+
+ Removed RTConfiguration_Stub.cpp and included
+ RTConfigurationC.cpp for compilation.
+
+Mon Feb 2 20:00:07 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/RTConfiguration.idl:
+
+ Include RTCORBA_include.pidl instead of RTCORBA.pidl.
+
+ * tools/XML_Helpers/RTConfiguration_Stubs.cpp:
+
+ Removed the hacks in this file since they are no longer
+ necessary.
+
+ * tools/XML_Helpers/XMLHelpers.mpc:
+
+ Changed the order of inheritance to get the libraries in the
+ right order.
+
+ All these should fix a problem reported by Diego Sevilla Ruiz
+ and as always thanks to him for reporting it.
+
+Sat Jan 31 18:26:24 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/RTConfiguration.idl:
+
+ Appended "tao" to the path for RTCORBA.pidl.
+
+Thu Jan 29 14:03:42 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * tools/XML_Helpers/XMLHelpers.mpc:
+
+ Updated these mpc files to work with IDL_Files as a custom build
+ type instead of a built-in build type.
+
+Thu Jan 29 12:30:52 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * step-by-step.html:
+ * Receiver/Receiver.mpc:
+ * Receiver/Receiver_exec.cpp:
+ * Receiver/Receiver_exec.h:
+ * Sender/Sender.mpc:
+ * Sender/Sender_exec.cpp:
+ * Sender/Sender_exec.h:
+ * descriptors/default.cad:
+ * descriptors/multi-receivers-default.cad:
+ * descriptors/run_test_multirecv.pl:
+
+ Following changes have been added to resolve the EI.idl problem.
+ 1. All *EI.idl are removed.
+ 2. All provided facets are implemented by the way of
+ "composition".
+ 3. Added one more deployment scenario which has 2 instances of
+ the Receiver.
+
+Thu Jan 29 11:00:50 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Reverted some more changes since they caused the C++ generated
+ code to break.
+
+Thu Jan 29 10:03:42 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Debian package libboost-dev apparently does not include regex.
+ Instead regex is provided as a separate libboost-regex-dev.
+ Added libboost-regex-dev as a required package to build CCF.
+ Thanks to Hans-Peter Bock <Hans-Peter.Bock@isw.uni-stuttgart.de>
+ for reporting this.
+
+Wed Jan 28 17:49:06 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Reverted back to SessionContext since it would be very hard
+ to fix C++ code to conform to this change. Will have to
+ do it later as part of C++ code refactoring.
+
+Wed Jan 28 13:21:00 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+
+ Use the new qt and qt_moc base projects. The qt-min* base
+ projects have been removed and the functionality moved into qt and
+ qt_moc. The original qt and qt_moc base projects were dispersed
+ and became different base projects.
+
+Wed Jan 28 13:02:28 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Implemented generation of additional interfaces that allow
+ separation between executor interfaces and composition type.
+
+Tue Jan 27 12:05:13 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/Sender_exec.h:
+
+ New EI-less implementation.
+
+ * CIDLC/CIDLC.sln:
+ * CIDLC/CIDLC.vcproj:
+
+ Updated projects to compile with boost out-of-the-box.
+
+Tue Jan 27 11:33:39 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Sender_exec.h:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/Sender.idl:
+ * examples/Hello/Sender/starter.cpp:
+
+ Updated these files.
+
+Tue Jan 27 10:15:59 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html:
+
+ Some format and trivial fix.
+
+Mon Jan 26 20:33:31 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html:
+
+ Updated this file with new font.
+
+Fri Jan 23 10:36:27 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CCF.sln:
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CCF/CCF/CompilerElements/CompilerElements.vcproj:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+
+ Updated projects to compile with boost out-of-the-box.
+
+ * CCF/Documentation/Build.html:
+
+ Added step-by-step instructions for building CCF on
+ Windows. Thanks to Tao Lu for helping me with this.
+
+Thu Jan 22 23:38:32 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/OEP/Display/descriptors/DualDisplay.cad:
+
+ Changed the name of the file.
+
+Wed Jan 21 11:16:31 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Parsing/Recovery.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.tpp:
+ * CCF/CCF/IDL3/Traversal/EventType.tpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Cosmetic changes.
+
+Wed Jan 21 10:17:22 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Makefile:
+ * CCF/CCF/Makefile:
+ * CCF/CCF/CIDL/Makefile:
+ * CCF/CCF/CIDL/Makefile.alt:
+ * CCF/CCF/CIDL/Makefile.archive:
+ * CCF/CCF/CIDL/Makefile.archive.alt:
+ * CCF/CCF/CIDL/SemanticAction/Makefile:
+ * CCF/CCF/CIDL/SemanticAction/Makefile.alt:
+ * CCF/CCF/CIDL/SemanticAction/Makefile.object:
+ * CCF/CCF/CIDL/SemanticAction/Makefile.object.alt:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Makefile:
+ * CCF/CCF/CIDL/SemanticGraph/Makefile:
+ * CCF/CCF/CIDL/Traversal/Makefile:
+ * CCF/CCF/CodeGenerationKit/Makefile:
+ * CCF/CCF/CompilerElements/Makefile:
+ * CCF/CCF/IDL2/Makefile:
+ * CCF/CCF/IDL2/Makefile.alt:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Makefile.archive.alt:
+ * CCF/CCF/IDL2/SemanticAction/Makefile:
+ * CCF/CCF/IDL2/SemanticAction/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticAction/Makefile.object:
+ * CCF/CCF/IDL2/SemanticAction/Makefile.object.alt:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Makefile:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticGraph/Makefile:
+ * CCF/CCF/IDL2/Traversal/Makefile:
+ * CCF/CCF/IDL2/Traversal/Makefile.alt:
+ * CCF/CCF/IDL3/Makefile:
+ * CCF/CCF/IDL3/Makefile.alt:
+ * CCF/CCF/IDL3/Makefile.archive:
+ * CCF/CCF/IDL3/Makefile.archive.alt:
+ * CCF/CCF/IDL3/SemanticAction/Makefile:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Makefile:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL3/SemanticGraph/Makefile:
+ * CCF/CCF/IDL3/Traversal/Makefile:
+ * CIDLC/Makefile:
+
+ Added ACE-style makefiles.
+
+ * CCF/CCF/CIDL/Parser.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/Token.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Exception.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Translation.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/Component.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/Home.hpp:
+
+ Cosmetic changes.
+
+ * CCF/Documentation/Build.html:
+
+ Fixed a typo.
+
+Mon Jan 19 10:08:15 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/Makefile.alt:
+ * CIDLC/cidlc.cpp:
+
+ Added --version command line option to CIDL compiler. Thanks
+ to Craig Rodrigues for the suggestion.
+
+Thu Jan 15 20:17:17 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Fixed some typos. Thanks to Craig Rodrigues for reporting
+ them.
+
+Thu Jan 15 17:53:38 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Updated build instructions for Debian GNU/Linux and RedHat
+ OS family.
+
+Thu Jan 15 14:39:35 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Config.rules:
+
+ Fixed incorrect initialization of UTILITY_BUILD_RULES when
+ UTILITY_ROOT is set. Thanks to Gary Duzan <gduzan@bbn.com>
+ for reporting this.
+
+Thu Jan 15 14:30:44 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * README:
+
+ Updated the file with information about CIDLC. Thanks to Gary
+ Duzan <gduzan@bbn.com> for motivating this.
+
+Wed Jan 14 18:50:00 2004 Balachandran <bala@dre.vanderbilt.edu>
+
+ * CIAO version 0.4 released.
+
+Wed Jan 14 15:22:13 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIDLC/README
+ * CIDLC/README.html:
+
+ HTML'ised README into a new file README.html and removed the
+ ascii equivalent of it.
+
+Wed Jan 14 11:30:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/releasenotes/index.html:
+ * docs/index.html:
+
+ Updated releasenotes.
+
+Wed Jan 14 10:59:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/releasenotes:
+
+ New directory.
+
+ * docs/releasenotes/index.html:
+
+ The actual document is placed here to be consistent with TAO.
+
+ * docs/releasenotes.html:
+
+ Removed the file since it has been moved into a new directory.
+
+Tue Jan 13 20:54:31 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ChangeLog:
+
+ Lots of entries had gotten removed. Fixed them.
+
+Tue Jan 13 11:24:55 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Config.rules:
+
+ Added 'default-if-not-set' value for UTILITY_BUILD_RULES to
+ look into well-known location where RedHat and Debian packages
+ are installed.
+
+Sat Jan 10 11:58:05 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAO.mwc:
+
+ Fixed a typo in the previous checkin.
+
+Sat Jan 10 11:08:42 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * CIAO.mwc:
+
+ We removed all the mpc files for CIDLC. Needed to remove that
+ from the workspace file too.
+
+Fri Jan 9 16:01:55 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/cidlc.cpp:
+
+ Changed the error return value from -1 to 1. For some reason,
+ Visual Studio does not detect the -1 return value and thinks
+ everything is fine.
+
+Fri Jan 9 15:45:33 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Added some clarifications suggested by Tao Lu.
+
+Fri Jan 9 14:46:41 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+
+ Added new files for union support and updated other project
+ settings.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/izeTypeCalculator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added support for unions to the back end, and fixed a bug in
+ generating the servant name when the component is declared at
+ file scope.
+
+Fri Jan 9 12:25:37 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp:
+
+ Fixed a bug with union member handling in semantic
+ actions.
+
+Fri Jan 9 12:20:32 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Config.rules:
+ * CCF/Makefile.alt:
+ * CCF/CCF/Makefile.alt:
+ * CCF/CCF/CIDL/Makefile.alt:
+ * CCF/CCF/CIDL/Makefile.archive:
+ * CCF/CCF/CIDL/SemanticAction/Makefile.alt:
+ * CCF/CCF/CIDL/SemanticAction/Makefile.object:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/CIDL/SemanticGraph/Makefile.alt:
+ * CCF/CCF/CIDL/Traversal/Makefile.alt:
+ * CCF/CCF/CodeGenerationKit/Makefile.alt:
+ * CCF/CCF/CompilerElements/Makefile.alt:
+ * CCF/CCF/IDL2/Makefile.alt:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/SemanticAction/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticAction/Makefile.object:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticGraph/Makefile.alt:
+ * CCF/CCF/IDL2/Traversal/Makefile.alt:
+ * CCF/CCF/IDL3/Makefile.alt:
+ * CCF/CCF/IDL3/Makefile.archive:
+ * CCF/CCF/IDL3/SemanticAction/Makefile.alt:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL3/SemanticGraph/Makefile.alt:
+ * CCF/CCF/IDL3/Traversal/Makefile.alt:
+ * CCF/Documentation/Build.html:
+ * CCF/Example/Makefile.alt:
+ * CCF/Example/CIDL/Makefile.alt:
+ * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt:
+ * CCF/Example/CodeGenerationKit/Makefile.alt:
+ * CCF/Example/CodeGenerationKit/Indentation/Makefile.alt:
+ * CCF/Example/CodeGenerationKit/Indentation/IDL/Makefile.alt:
+ * CCF/Example/CodeGenerationKit/Indentation/XML/Makefile.alt:
+ * CCF/Example/ComponentDeploymentDescriptor/Makefile.alt:
+ * CCF/Example/IDL2/Makefile.alt:
+ * CCF/Example/IDL2/CxxMapping/Makefile.alt:
+ * CCF/Test/Makefile.alt:
+ * CCF/Test/CIDL/Makefile.alt:
+ * CCF/Test/CIDL/Compiler/Makefile.alt:
+ * CCF/Test/CompilerElements/Makefile.alt:
+ * CCF/Test/CompilerElements/CPP/Makefile.alt:
+ * CCF/Test/IDL2/Makefile.alt:
+ * CCF/Test/IDL2/Compiler/Makefile.alt:
+ * CCF/Test/IDL2/SemanticGraph/Makefile.alt:
+ * CCF/Test/IDL2/SemanticGraph/HandBuilt/Makefile.alt:
+ * CCF/Test/IDL2/Traversal/Makefile.alt:
+ * CCF/Test/IDL2/Traversal/Recreate/Makefile.alt:
+ * CCF/Test/IDL3/Makefile.alt:
+ * CCF/Test/IDL3/Compiler/Makefile.alt:
+ * CIDLC/Makefile.alt:
+
+ Added 'flexibility' variables to Config.rules and
+ updated makefiles to reflect this change.
+
+Thu Jan 8 15:33:31 2004 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * CCF/CCF/CCF.mwc
+ * CCF/CCF/CIDL/CIDL.mpc
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc
+ * CCF/CCF/CompilerElements/CompilerElements.mpc
+ * CCF/CCF/IDL2/IDL2.mpc
+ * CCF/CCF/IDL3/IDL3.mpc
+ * CCF/CCF.mwc
+ * CCF/Example/CIDL/CIDL.mwc
+ * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.mpc
+ * CCF/Example/Example.mwc
+ * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.mpc
+ * CCF/Example/CodeGenerationKit/Indentation/XML/XML.mpc
+ * CCF/Example/CodeGenerationKit/Indentation/Indentation.mwc
+ * CCF/Example/CodeGenerationKit/CodeGenerationKit.mwc
+ * CIDLC/cidlc.mpc
+
+ Removed all these MPC files since CIDL is not working with MPC yet.
+
+Thu Jan 8 15:10:24 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Union.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Union.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticGraph/Union.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Union.hpp:
+ * CCF/CCF/IDL2/Traversal/Struct.hpp:
+ * CCF/CCF/IDL2/Traversal/Union.cpp:
+ * CCF/CCF/IDL2/Traversal/Union.hpp:
+
+ Added support for union.
+
+Thu Jan 8 14:47:22 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Changed default suffix for generating #include of C++ header
+ file generated from executor mapping IDL file, similar to the
+ change in
+
+ Thu Jan 8 12:00:16 2004 Jeff Parsons <j.parsons@vanderbilt.edu>.
+
+Thu Jan 8 13:49:10 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+
+ Reverted the changes in
+
+ Wed Jan 7 11:20:13 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ since these command line options (include paths) are now part of
+ the default command line.
+
+Thu Jan 8 12:00:16 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Changed default suffix for the generated executor mapping IDL file
+ from '_exec.idl' to 'E.idl'.
+
+ * ciao/CCM_Core.mpc:
+
+ Added header files that are unmatched by a corresponding .cpp file.
+
+Wed Jan 7 11:20:13 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+
+ Added include path command line options for the CIDL compiler.
+
+Wed Jan 7 09:56:39 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Fixed a typo.
+
+Tue Jan 6 18:25:24 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+
+ Fixed bug in Scope::add_edge_right (Extends&).
+
+Tue Jan 6 17:26:33 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp:
+
+ Added support for lookup in inherited/supported
+ scopes.
+
+Tue Jan 6 11:35:27 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.hpp:
+
+ Added virtual destructors to classes ServantHeaderEmitter and
+ ServantSourceEmitter to eliminate warnings on g++ 3.3.
+
+Tue Jan 6 11:23:29 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/EC/client.cpp:
+ * examples/OEP/BasicSP/EC/controller.cpp:
+
+ Replaced occurrences of cerr with ACE_ERROR_RETURN.
+
+ * examples/OEP/Display/GPS/GPS_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.cpp:
+
+ Added #include of ace/OS_NS_time.h.
+
+Tue Jan 6 10:16:51 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+
+ Fixed a warning using _var.
+
+Mon Jan 5 21:38:53 2004 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Fixed uninitialized variable bug that resulted in generation
+ of unused modules.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-0.idl:
+
+ Added unused module to the test case.
+
+ * CIDLC/cidlc.cpp:
+
+ Cosmetic chnages.
+
+Mon Jan 5 20:31:18 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/RepositoryIdGenerator.cpp:
+ * CIDLC/RepositoryIdGenerator.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed typos in servant code generation.
+
+Mon Jan 5 19:34:44 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Updated Utility library url.
+
+Mon Jan 5 19:16:40 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/Makefile.alt:
+
+ Added updated generators to the build.
+
+Mon Jan 5 18:48:54 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Test/IDL2/Traversal/Recreate/Makefile.alt:
+
+ Fixed a typo.
+
+Mon Jan 5 18:27:12 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Config.rules:
+
+ Added default values to the paths.
+
+Mon Jan 5 15:47:04 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/README:
+
+ Updated build instructions.
+
+Mon Jan 5 14:32:17 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/Build.html:
+
+ Updated build instructions.
+
+Mon Jan 5 01:44:13 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/CompilerElements.vcproj:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+
+ Added files recently checked in to projects.
+
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/Collectors.hpp:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/DescriptorGenerator.hpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantGenerator.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.hpp:
+ * CIDLC/SizeTypeCalculator.cpp:
+ * CIDLC/SizeTypeCalculator.hpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+ * CIDLC/cidlc.cpp:
+
+ Overhauled the entire backend to integrate with the new
+ frontend traversal framework, and with recently supported
+ features.
+
+Sun Jan 4 17:48:50 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+
+ Fixed warnings with g++ builds.
+
+Sat Jan 3 16:34:35 2004 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/Traversal/Operation.hpp:
+ * CCF/CCF/IDL2/Traversal/Operation.tpp:
+ * CCF/CCF/IDL3/Traversal/Home.cpp:
+ * CCF/CCF/IDL3/Traversal/Home.hpp:
+
+ Added receives_none() member function.
+
+Fri Jan 2 16:09:32 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Container_Base.cpp:
+
+ Fixed a compile error in single threaded configuration.
+
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp:
+
+ Fixed more warnings with g++, mostly from the wrong usage of
+ _var's.
+
+Fri Jan 2 15:36:07 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.hpp:
+
+ Changed pass-by-value to pass-by-const-ref for fs::path argument.
+
+Fri Jan 2 14:41:35 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+
+ Fixed small recognition bug.
+
+ * CCF/CCF/IDL2/Traversal/Attribute.cpp:
+ * CCF/CCF/IDL2/Traversal/Attribute.hpp:
+
+ Added traversal or readonly attribute.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+
+ Added support for readonly attribute.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-1.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+
+ Updated tests and results.
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Added support for readonly attribute.
+
+Fri Jan 2 13:44:06 2004 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/Preprocessor.cpp:
+
+ Removed debug print.
+
+ * CCF/Documentation/TODO:
+
+ Updated.
+
+Fri Jan 2 12:59:05 2004 Chad Elliott <elliott_c@ociweb.com>
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+
+ Prefixed the project name with the '*' operator to avoid project
+ name conflicts.
+
+Thu Jan 1 20:27:30 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Makefile:
+
+ Updated dependancies since we have now have the Makefiles in the
+ repo.
+
+Thu Jan 1 19:58:26 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+
+ Fixed typo.
+
+Thu Jan 1 20:12:03 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/XML_Utils.cpp:
+
+ Fixed a unused variable warning.
+
+Thu Jan 1 20:05:59 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/Daemon_Impl.cpp:
+ * tools/Daemon/controller_i.cpp:
+ * tools/RTComponentServer/ComponentServer_Task.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp:
+ * tools/Simple_Component_Server/Simple_Server_i.cpp:
+ * tools/Simple_Component_Server/sample_client.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Spec.cpp:
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+
+ More fixes to remove compile errors when exceptions are set
+ to 0.
+
+Thu Jan 1 19:32:23 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/ComponentServer_Impl.cpp:
+
+ Fixed typo in the last checkin.
+
+Thu Jan 1 19:28:58 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/ComponentInstallation_Impl.cpp:
+ * ciao/ComponentServer_Impl.cpp:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.inl:
+ * ciao/Container_Impl.cpp:
+ * ciao/Container_Impl.inl:
+ * ciao/Cookies.cpp:
+ * ciao/ServerActivator_Impl.cpp:
+
+ Bunch of fixes to remove compile errors when exceptions are set
+ to 0.
+
+Thu Jan 1 18:46:02 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/XML_Helpers/Cascadable_DocHandler.i:
+
+ Fixed compile errors when exceptions are turned off.
+
+Thu Jan 1 18:41:06 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Makefile:
+
+ Do not compile CIAO with static_libs_only=1.
+
+Thu Jan 1 13:53:53 2004 Boris Kolpackov <boris@kolpackov.net>
+
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp (class Nameable)
+
+ Added support for iteration over Names edges.
+
+
+Thu Jan 1 17:23:44 UTC 2004 Don Hinton <dhinton@dresystems.com>
+
+ * Makefile:
+ Moved coreclean target to bottom of file so that the all target
+ will come first. Added ALT_DIRS variable that contains CIDLC,
+ examples, and tests directories that should not be built by
+ default. Set the DIRS variable = CORE_DIRS by default and add
+ ALT_DIRS only if BOOST_ROOT and UTILITY_ROOT have been set.
+ This will need to be adjusted a bit, since the ALT_DIRS don't
+ have regular Makefiles right now, but it's a start and will
+ allow all the *nix builds to start building the CORE_DIRS in the
+ regular autobuilds.
+
+ * ciao/Makefile:
+ * ciao/Makefile.CIAO_Client:
+ * ciao/Makefile.CIAO_Container:
+ * ciao/Makefile.CIAO_Server:
+ * tools/Makefile:
+ * tools/Assembly_Deployer/Makefile:
+ * tools/Assembly_Deployer/Makefile.Assembly_Deployer:
+ * tools/Assembly_Deployer/Makefile.Assembly_Manager:
+ * tools/ComponentServer/Makefile:
+ * tools/ComponentServer/Makefile.ComponentServer:
+ * tools/ComponentServer/Makefile.ComponentServer_test_client:
+ * tools/Daemon/Makefile:
+ * tools/Daemon/Makefile.CIAO_Daemon:
+ * tools/Daemon/Makefile.DaemonController:
+ * tools/RTComponentServer/Makefile:
+ * tools/RTComponentServer/Makefile.RTComponentServer:
+ * tools/ServerActivator/Makefile:
+ * tools/ServerActivator/Makefile.ServerActivator:
+ * tools/ServerActivator/Makefile.ServerActivator_test_client:
+ * tools/Simple_Component_Server/Makefile:
+ * tools/Simple_Component_Server/Makefile.Simple_Component_Server:
+ * tools/Simple_Component_Server/Makefile.Simple_Component_Server_test_client:
+ * tools/Simple_Component_Server/Makefile.Simple_Server_Stub:
+ * tools/XML_Helpers/Makefile:
+ * tools/XML_Helpers/Makefile.Helper_Test:
+ * tools/XML_Helpers/Makefile.XML_Helpers:
+ Added new Makefiles generated by MPC and lightly modified to
+ remove unneeded variables and targets (mainly realclean, and idl
+ related ones that are OBE due to recent fixes to the underlying
+ make system.).
+
+Wed Dec 31 18:13:21 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/Preprocessor.cpp:
+ * CCF/CCF/IDL2/LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Exception.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Include.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Module.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Native.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Struct.hpp:
+ * CCF/CCF/IDL2/SemanticAction/TypeId.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/ValueType.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.tpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Exception.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Module.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Module.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Exception.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Exception.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Fundamental.cpp.m4:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Member.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Module.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Name.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Name.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Native.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Native.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Sequence.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Translation.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Translation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/TypeId.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/CCF/IDL2/Traversal/Interface.tpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.cpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/ValueType.tpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Component.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Consumes.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Emits.hpp:
+ * CCF/CCF/IDL3/SemanticAction/EventType.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Home.hpp:
+ * CCF/CCF/IDL3/SemanticAction/HomeFactory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Provides.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Publishes.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Uses.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Emits.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Provides.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/Component.hpp:
+ * CCF/CCF/IDL3/SemanticGraph/Elements.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/Home.hpp:
+ * CCF/CCF/IDL3/Traversal/EventType.tpp:
+ * CCF/CCF/CIDL/SemanticAction/Composition.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Factory.hpp:
+ * CCF/CCF/CIDL/SemanticAction/HomeExecutor.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Composition.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Composition.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp:
+ * CCF/CCF/CIDL/SemanticGraph/Elements.cpp:
+ * CCF/CCF/CIDL/SemanticGraph/Executor.cpp:
+ * CCF/Documentation/TODO:
+
+ Minor cosmetic changes and cleanups.
+
+
+Wed Dec 31 12:27:16 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/tutorial/Hello/hello.mpc:
+ Updated this file to avoid duplicated project names in
+ MPC generated solution file for VC.
+
+Wed Dec 31 10:16:17 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIAO/ciao/Component_Base.idl:
+
+ Replaced inclusion of IFR_Client/Interface.pidl with orb.idl
+ since it has all that's needed.
+
+Tue Dec 30 17:47:49 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * ciao/CCM_Base.idl:
+
+ Temporarily commented import declaration even though it is
+ conditionally commented out. Current CIDLC's preprocessor
+ does not handle conditional compilation.
+
+Tue Dec 30 17:03:27 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/Diagnostic.hpp:
+ * CCF/CCF/CompilerElements/TokenStream.hpp:
+
+ Cosmetic changes.
+
+
+ * CCF/CCF/CompilerElements/Makefile.alt:
+ * CCF/CCF/CompilerElements/Preprocessor.cpp:
+ * CCF/CCF/CompilerElements/Preprocessor.hpp:
+ * CCF/CCF/CompilerElements/PreprocessorToken.cpp:
+ * CCF/CCF/CompilerElements/PreprocessorToken.hpp:
+
+ New (though not very capable) preprocessor for the time being.
+
+
+ * CCF/CCF/IDL2/SemanticAction/Native.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Native.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Native.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Native.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Native.hpp:
+ * CCF/CCF/IDL2/Traversal/Native.cpp:
+ * CCF/CCF/IDL2/Traversal/Native.hpp:
+
+ Added support for IDL2 native feature.
+
+ * CCF/CCF/IDL2/SemanticAction/ValueType.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/ValueType.hpp:
+
+ Extended support for IDL2 valuetype feature.
+
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Include.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Makefile.alt:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.hpp:
+ * CCF/CCF/IDL2/Traversal/Fundamental.hpp:
+ * CCF/CCF/IDL2/Traversal/Makefile.alt:
+
+ Cosmetic changes.
+
+
+ * CCF/CCF/IDL3/SemanticAction/EventType.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/EventType.hpp:
+
+ Added support for IDL3 eventtype feature.
+
+ * CCF/CCF/IDL3/SemanticAction/HomeFinder.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFinder.hpp:
+
+ Added support for IDL3 home finder feature.
+
+ * CCF/CCF/IDL3/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL3/LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/IDL3/Parser.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp:
+
+ Cosmetic changes.
+
+
+ * CCF/CCF/CIDL/LexicalAnalyzer.cpp:
+ * CCF/CCF/CIDL/LexicalAnalyzer.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/CIDL/SemanticGraph/Composition.cpp:
+ * CCF/CCF/CIDL/SemanticGraph/Composition.hpp:
+
+ Cosmetic changes.
+
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt:
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+ * CCF/Example/IDL2/CxxMapping/Makefile.alt:
+ * CCF/Example/IDL2/CxxMapping/driver.cpp:
+ * CCF/Test/Makefile.alt:
+ * CCF/Test/CIDL/Compiler/GeneratorImpl.hpp:
+ * CCF/Test/CIDL/Compiler/Makefile.alt:
+ * CCF/Test/CIDL/Compiler/driver.cpp:
+ * CCF/Test/CompilerElements/Makefile.alt:
+ * CCF/Test/CompilerElements/CPP/Makefile.alt:
+ * CCF/Test/CompilerElements/CPP/driver.cpp:
+ * CCF/Test/IDL2/Compiler/Makefile.alt:
+ * CCF/Test/IDL2/Compiler/driver.cpp:
+ * CCF/Test/IDL2/Traversal/Recreate/GeneratorImpl.hpp:
+ * CCF/Test/IDL3/Compiler/Makefile.alt:
+ * CCF/Test/IDL3/Compiler/driver.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/cidlc.cpp:
+
+ Updated to reflect changes above.
+
+
+ * CCF/Documentation/TODO:
+
+ Reflected new achievements.
+
+
+Tue Dec 30 13:53:20 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Philosophers/Philosophers.idl:
+ * examples/Philosophers/README:
+ Moved this unfinished example from examples/handcrafted here.
+
+Tue Dec 30 13:39:00 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * ChangeLog:
+ Updated my ChangeLog entries to the correct format.
+ Thanks for the help from Bala and Boris.
+
+Tue Dec 30 11:42:08 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/handcrafted/examples.mwc:
+ Removed this file since MPC works recursively now.
+
+Tue Dec 30 11:28:43 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * exmaples/handcrafted/BasicSP:
+ Removed this directory. This example has been moved to
+ examples/OEP/BasicSP and been modified to use the CIDL compiler.
+
+Tue Dec 30 11:26:24 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/handcrafted/Philosophers:
+ Removed this directory.
+
+Tue Dec 30 11:20:39 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/handcrafted/Hello:
+ Removed this directory. This example has been moved to
+ docs/tutorial/Hello and been modified to use the CIDL compiler.
+
+Tue Dec 30 10:56:03 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/handcrafted/Display:
+ Removed this directory. This example has been moved to
+ examples/OEP/Display and been modified to use the CIDL compiler.
+
+Tue Dec 23 16:26:19 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Operation.hpp:
+ * CCF/CCF/IDL2/Traversal/Operation.cpp:
+ * CCF/CCF/IDL2/Traversal/Operation.hpp:
+ * CCF/CCF/IDL2/Traversal/Operation.tpp:
+ * CCF/Test/IDL2/SemanticGraph/HandBuilt/Builder.cpp:
+
+ Added support for oneway operations.
+
+ * CCF/CCF/IDL3/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL3/Makefile.archive:
+ * CCF/CCF/IDL3/Parser.cpp:
+ * CCF/CCF/IDL3/Parser.hpp:
+ * CCF/CCF/IDL3/SemanticAction.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Makefile.alt:
+ * CCF/CCF/IDL3/SemanticGraph/Home.cpp:
+ * CCF/CCF/IDL3/SemanticGraph/Home.hpp:
+
+ Added support for home finders.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+
+ Added support for feature mentioned above.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+
+ Added coverage for features mentioned above.
+
+ * CCF/Documentation/TODO:
+
+ Reflected new achievements.
+
+Tue Dec 23 12:03:27 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+
+ Updated VC7.1 projects. Also temporarily excluded from the
+ build generators that are still to be ported.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+
+ Changed 'interface' to 'interface_' since VC7.1 naively believes
+ that interface is an alias for struct.
+
+Tue Dec 23 11:34:56 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CCF/CCF/CompilerElements/CompilerElements.vcproj:
+
+ Updated VC7.1 projects.
+
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Attribute.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Operation.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Elements.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Graph.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Graph.tpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Consumes.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Emits.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/HomeFactory.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Provides.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Publishes.cpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Uses.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.cpp:
+
+ Got rid of some warnings.
+
+Tue Dec 23 10:03:38 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SemanticGraph.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Enum.cpp:
+ * CCF/CCF/IDL2/SemanticGraph/Enum.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Makefile.alt:
+ * CCF/CCF/IDL2/Traversal/Enum.cpp:
+ * CCF/CCF/IDL2/Traversal/Enum.hpp:
+
+ Added support for IDL enum type.
+
+ * CCF/CCF/IDL2/SemanticGraph/Member.hpp:
+ * CCF/CCF/IDL2/SemanticGraph/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Exception.hpp:
+ * CCF/CCF/IDL2/Traversal/Attribute.hpp:
+
+ Cosmetic changes.
+
+Mon Dec 22 16:50:18 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.hpp:
+
+ New version of local executor mapping generator.
+
+ * CIDLC/cidlc.cpp:
+
+ New version of CIDL compiler driver with temporarily disabled
+ generators that require porting.
+
+ * CIDLC/Makefile.alt:
+
+ Temporarily disabled generators that require porting.
+
+Mon Dec 22 16:26:21 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF:
+
+ Added new version of CCF.
+
+Mon Dec 22 15:35:19 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF:
+
+ Removed (through cvs, not physically) previous version in
+ preparation for commitment of the new version.
+
+Thu Dec 18 09:57:50 2003 Balachandran <bala@dre.vanderbilt.edu>
+
+ * CIAO version 0.3.6 released.
+
+2003-12-17 Tao Lu <lu@tango.dre.vanderbilt.edu>
+
+ * examples/Hello/step-by-step.html:
+
+ Added this html file for explaination of the step by step tutorial.
+
+Tue Dec 16 18:25:01 2003 Tao Lu <lu@tango.dre.vanderbilt.edu>
+
+ * docs/tutorial/Hello/README:
+ * docs/tutorial/Hello/config:
+ * docs/tutorial/Hello/CIAO_Installation_Data.ini:
+ * docs/tutorial/Hello/hello.idl:
+ * docs/tutorial/Hello/hello.cidl:
+ * docs/tutorial/Hello/hello.mpc:
+ * docs/tutorial/Hello/hello.csd:
+ * docs/tutorial/Hello/hello.ssd:
+ * docs/tutorial/Hello/hello_exec.cpp:
+ * docs/tutorial/Hello/hello_exec.h:
+ * docs/tutorial/Hello/hello_stub_export.h:
+ * docs/tutorial/Hello/hello_svnt_export.h:
+ * docs/tutorial/Hello/hello_exec_export.h:
+ * docs/tutorial/Hello/client.cpp:
+ * docs/tutorial/Hello/simple_client.cpp:
+ * docs/tutorial/Hello/run_test.pl:
+ * docs/tutorial/Hello/run_simple_test.pl:
+
+ Changed Nanbor's handcrafted helloworld example to use the CIDL compiler.
+ Stardard CIAO naming is used (_svnt, _exec etc.).
+
+Tue Dec 16 14:14:59 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * docs/tutorial/hello/index.html:
+
+ Removed this file. We will use Nanbor's Hello example in the tutorial.
+ The step-by-step example will use another name and be kept in CIAO/examples.
+
+Mon Dec 8 16:14:59 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * docs/todo.html:
+ * docs/RT-Extension.html:
+
+ Updated files.
+
+2003-12-08 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_svnt.h:
+ * examples/Hello/Sender/Sender_svnt.h:
+
+ Removed two generated files.
+
+Sun Dec 7 20:38:55 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/starter.cpp:
+ * examples/Hello/Hello_Base/Hello_Base.idl:
+
+ Fixed fuzz errors.
+
+Sun Dec 7 20:32:41 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_svnt.h:
+ * examples/Hello/Sender/Sender_svnt.h:
+ * examples/Hello/descriptors/run_test_default.pl:
+
+ Fixed fuzz errors.
+
+Wed Dec 3 10:55:41 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
+ Changed comment to indicate that the interface uses a reference and
+ not porvides it. Thanks to Gautam Thaker for pointing this out.
+
+Wed Dec 3 12:25:20 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/NOTE.txt:
+ * performance-tests/Benchmark/descriptors/NOTE.txt:
+ Moved file to the right directory and updated name of the .cad file
+ to the right one. Thanks to Gautam Thaker for pointing this out.
+
+
+Tue Dec 2 18:40:59 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/descriptors/run_test_default.pl:
+ * examples/Hello/descriptors/run_test_remote.pl:
+ Added two auto run perl scripts and fixed the bug in the
+ Receiver_exec which caused the OBV run time error when
+ the Sender and the Receiver are not collocated.
+
+Tue Dec 2 18:32:23 2003 Tao Lu <lu@tango.dre.vanderbilt.edu>
+
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/descriptors/run_test_default.pl:
+ * examples/Hello/descriptors/run_test_remote.pl:
+ Added two auto run perl scripts and fixed the bug in the
+ Receiver_exec which caused the OBV run time error when
+ the Sender and the Receiver are not collocated.
+
+Mon Dec 1 17:49:43 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/descriptors/remote.cad:
+ * examples/Hello/descriptors/remote.dat:
+ Added these 2 files for the example to run on remote setting.
+
+Mon Dec 1 02:35:18 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Sender.mpc:
+ Added the empty IDL_Files part in the starter project to get rid
+ of the linking error(MPC generates makefile which links in
+ unnecessary linkage reqirements). Also deleted all the Makefiles
+ in the example. The user should run mwc.pl to regenerate the
+ Makefile before building the project.
+
+Sun Nov 30 20:51:06 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/Sender/Makefile.Hello_Starter:
+ Added this makefile which will make the starter program.
+
+Sun Nov 30 11:47:29 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello:
+ Moved the starter.cpp into the Sender project to so the
+ dependency will be set correctly.
+
+Sat Nov 29 15:57:54 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * examples/handcrafted/BasicSP/*.mpc:
+ * examples/handcrafted/Display/*.mpc:
+ Removed all MPC files for this directory and sub directories
+ because these examples are going to be removed and at this moment
+ these MPC files cause problems with the MPC generation because
+ of duplicate names.
+
+Fri Nov 28 14:09:56 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello/README:
+ * examples/Hello/Makefile:
+ * examples/Hello/Hello_Base/Hello_Base_stub_export.h:
+ * examples/Hello/Hello_Base/Makefile.Hello_Base_stub:
+ * examples/Hello/Hello_Base/Hello_Base.idl:
+ * examples/Hello/Hello_Base/Hello_Base_svnt_export.h:
+ * examples/Hello/Hello_Base/Makefile.Hello_Base_svnt:
+ * examples/Hello/Hello_Base/Hello_Base.mpc:
+ * examples/Hello/Hello_Base/Makefile:
+ * examples/Hello/Sender/Sender.cidl:
+ * examples/Hello/Sender/Sender_exec.h:
+ * examples/Hello/Sender/Makefile:
+ * examples/Hello/Sender/Sender.idl:
+ * examples/Hello/Sender/Sender_exec_export.h:
+ * examples/Hello/Sender/Makefile.Hello_Base_Sender_exec:
+ * examples/Hello/Sender/Sender.mpc:
+ * examples/Hello/Sender/Sender_stub_export.h:
+ * examples/Hello/Sender/Makefile.Hello_Base_Sender_stub
+ * examples/Hello/Sender/SenderEI.idl:
+ * examples/Hello/Sender/Sender_svnt.h:
+ * examples/Hello/Sender/Makefile.Hello_Base_Sender_svnt:
+ * examples/Hello/Sender/Sender_exec.cpp:
+ * examples/Hello/Sender/Sender_svnt_export.h:
+ * examples/Hello/Receiver/ReceiverEI.idl:
+ * examples/Hello/Receiver/Makefile:
+ * examples/Hello/Receiver/Receiver_Impl.ccd:
+ * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_exec:
+ * examples/Hello/Receiver/Receiver_exec.cpp:
+ * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_stub:
+ * examples/Hello/Receiver/Receiver_exec.h:
+ * examples/Hello/Receiver/Makefile.Hello_Base_Receiver_svnt:
+ * examples/Hello/Receiver/Receiver_exec_export.h:
+ * examples/Hello/Receiver/Receiver.cidl:
+ * examples/Hello/Receiver/Receiver_stub_export.h:
+ * examples/Hello/Receiver/Receiver.idl:
+ * examples/Hello/Receiver/Receiver_svnt.h:
+ * examples/Hello/Receiver/Receiver.mpc:
+ * examples/Hello/Receiver/Receiver_svnt_export.h:
+ * examples/Hello/starter/Makefile:
+ * examples/Hello/starter/Makefile.Hello_Starter:
+ * examples/Hello/starter/starter.cpp:
+ * examples/Hello/starter/starter.mpc:
+ * examples/Hello/descriptors/CIAO_Installation_Data.ini:
+ * examples/Hello/descriptors/Receiver.ssd:
+ * examples/Hello/descriptors/default.cad:
+ * examples/Hello/descriptors/test.dat:
+ * examples/Hello/descriptors/Sender.csd:
+ * examples/Hello/descriptors/Receiver.csd:
+ * examples/Hello/descriptors/Sender.ssd:
+
+ Added the files for Hello example.
+
+Fri Nov 28 13:58:58 2003 Tao Lu <lu@dre.vanderbilt.edu>
+
+ * examples/Hello:
+
+ Added the Hello example to CIAO. Thanks nanbor for the
+ handcrafted examples from which I learned to program do CIAO
+ programming. This example is meant to be used a step-by-step
+ tutorial for CIAO.
+
+Wed Nov 26 22:16:34 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+
+ Changed generated exception list of disconnect_* operation for
+ an emits declaration to match the correct exception list
+ generated in ServantSourceGenerator.cpp.
+
+Tue Nov 25 19:46:07 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.hpp:
+
+ Corrected a comment.
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed servant code generation to output only for components
+ and homes that are used in a CIDL composition. Thanks to
+ Gary Duzan <gduzan@bbn.com> for reporting the problem. Also
+ added support for attributes declared in a home.
+
+Tue Nov 25 15:39:51 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/FileSystem.hpp:
+
+ Made normalize() function use 'native' path type when
+ constructing the path.
+
+Tue Nov 25 15:06:02 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/cidlc.cpp:
+
+ Some code to support #include handling.
+
+Tue Nov 25 14:47:18 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CodeGenerationKit/CommandLine.hpp:
+
+ Added capability to iterate over options.
+
+ * CCF/CCF/CompilerElements/FileSystem.hpp:
+
+ Added normalize() function to normalize absolute paths.
+
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Include.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp:
+
+ Added #include handling.
+
+ * CCF/Test/IDL2/Parser/Include/root.idl:
+ * CCF/Test/IDL2/Parser/Include/bar/bar.idl:
+ * CCF/Test/IDL2/Parser/Include/bar/baz.idl:
+ * CCF/Test/IDL2/Parser/Include/foo/foo.idl:
+
+ Simple test for #include.
+
+Tue Nov 25 09:34:10 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/run_test.pl
+ Changed the script to take the right svc.conf file
+
+Mon Nov 24 19:24:42 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/handcrafted/BasicSP/BMClosedED/BMClosedED_exec.cpp:
+ * examples/handcrafted/BasicSP/BMDevice/BMDevice_exec.cpp:
+
+ Cosmetic fixes.
+
+Mon Nov 24 16:37:12 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/ComponentsC.h:
+
+ Removed unneeded inclusion of ComponentsC.i
+
+Mon Nov 24 14:48:09 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/ComponentsS.h:
+
+ Removed unneeded inclusion of ComponentsS_T.h.
+
+Mon Nov 24 14:41:22 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp:
+ * tools/Assembly_Deployer/Deployment_Configuration.cpp:
+ * tools/Daemon/DaemonController.cpp:
+ * tools/Daemon/controller_i.cpp:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp:
+
+ Added missing ACE file includes.
+
+Mon Nov 24 14:21:58 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/Server_init.cpp:
+
+ Added missing ACE includes.
+
+Mon Nov 24 13:39:43 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/Collectors.hpp:
+
+ Cosmetic changes.
+
+ * CIDLC/Literals.hpp:
+
+ Added /* */ in a string literal around an arg name which
+ is never used in generated methods where it appears in the
+ argument list.
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Commented out some unused arg names, and removed some extra
+ newlines. In the connect() operation generated for a
+ component, added ACE_UNUSED_ARG() for an argument which is
+ unused if the component has no receptacles declared.
+
+ * CCF/CCF/IDL2/SyntaxTree/TranslationCtor.cpp:
+
+ New file with a dummy class and constructor, added as a workaround
+ for errors related to the protected default constructor of the
+ real TranslationRegion class, simlar to what has already been
+ added for the Elements, Interface and Valuetype classes in
+ IDL2::SyntaxTree.
+
+ * CCF/CCF/IDL2/SyntaxTree/IDL2.mpc:
+
+ Updated with recently added files.
+
+Thu Nov 20 20:05:34 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/ComponentsS.h:
+ * ciao/ComponentsS_T.h:
+
+ Removed wrong includes.
+
+Thu Nov 20 17:50:55 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/RTComponentServer/RTComponentServer.mpc:
+
+ Inherit the project form ACEXML since we need that.
+
+Thu Nov 6 07:55:20 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Makefile:
+
+ Added coreclean target for doing realclean on a core set of
+ directories in the nightly build.
+
+Wed Nov 5 14:07:06 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp:
+
+ Got rid of some warnings.
+
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/Parsing/Recovery.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Elements.hpp:
+
+ Added a work-around to subvert constness of descriptor
+ member in spirit::parser_error. Joel de Guzman acknowledged
+ that this is an architectural error but unfortunately it
+ doesn't seem he is going to fix it any time soon (even though
+ patch is available).
+
+Tue Nov 4 21:21:06 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/ComponentsC.h:
+ * ciao/ComponentsS.h;
+
+ Regenerated these files. Not sure why this is maintained in the
+ repo.
+
+ * examples/handcrafted/Hello/hello_executors.h:
+
+ #include "tao/LocalObject.h"
+
+Tue Nov 04 19:35:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * COPYING: Added ACE/TAO/CIAO Copyright disclaimer. Thanks to
+ Roland Schimmack <SC@ProCom.de> for motivating the change.
+
+Tue Nov 4 17:11:06 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Daemon/CIAO_Daemon.cpp: Fixed warnings from g++.
+
+Tue Nov 4 16:51:22 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tools/Daemon/controller_i.cpp:
+
+ #included "ace/OS_NS_strings.h"
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp:
+ * tools/XML_Helpers/Softpkg_Handlers.cpp:
+ * tools/XML_Helpers/XML_Utils.cpp:
+
+ #included "ace/OS_String.h" to get the above files compiling
+ with g++. We still get a link error that Don is looking at.
+
+Tue Nov 4 16:34:45 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Active_Objref_Map.h:
+ * ciao/Client_init.h:
+ * ciao/Object_Set_T.h:
+ * ciao/Server_init.h:
+
+ Added new includes that are needed to get them compiling.
+
+Wed Oct 29 16:39:48 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Removed extra generated close brace.
+
+Wed Oct 29 15:56:33 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Traversal/Interface.hpp:
+ * CCF/CCF/IDL2/Traversal/Struct.hpp:
+
+ Cosmetic changes.
+
+ * CIDLC/CIDLC.vcproj:
+
+ Added SizeTypeCalculator.{h,cpp} to project.
+
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Fixed bugs in code generation - missing 'Consumer' appended
+ to eventtype name, and event typename used for concatenation
+ of operation name instead of event identifier name.
+
+ * CIDLC/SizeTypeCalculator.cpp:
+
+ Added support for wstrings, sequences and interfaces.
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added support for typedefs, structs, sequences and interfaces.
+
+ * CIDLC/cidlc.cpp:
+
+ Added instantiation and launch of SizeTypeCalculator.
+
+Wed Oct 29 15:19:07 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4:
+ * CCF/CCF/IDL2/SyntaxTree/Elements.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Interface.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Struct.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Component.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/EventType.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Home.hpp: added support for sharing
+ context by typedef temporary and principal syntax tree node.
+
+Wed Oct 29 13:36:47 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Traversal/Elements.cpp:
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/CCF/IDL2/Traversal/Typedef.hpp: fixed bug in typedef
+ traversal scheme.
+
+Fri Oct 24 19:16:21 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/CCF/IDL2/Traversal/Typedef.hpp: Fixed inheritance ambiguity.
+
+ * CIDLC/Makefile.alt:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp: Added some functions for
+ typedef testing.
+
+ * CIDLC/SizeTypeCalculator.cpp:
+ * CIDLC/SizeTypeCalculator.hpp: Added initial implementation
+ of fixed/variable type size calculation.
+
+Fri Oct 24 18:17:21 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/IDL2/IDL2.vcproj:
+
+ Added new front end files to the project.
+
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/TypeId.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/ElementsCtor.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/InterfaceCtor.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Struct.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/ValueTypeCtor.cpp:
+
+ Fixed various minor errors, such as removal of unused argument
+ identifiers, and addition of 'using std".
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ Added case for sequences, and typedefs of string and wstring.
+
+Fri Oct 24 17:14:51 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Traversal/Typedef.hpp: New implementation of
+ typedef traverser.
+
+Fri Oct 24 11:31:34 2003 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * CIAO version 0.3.5 released.
+
+Thu Oct 16 16:45:35 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp:
+ * CCF/CCF/IDL2/SyntaxTree.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Struct.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Member.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.cpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Struct.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Makefile.alt:
+ * CCF/CCF/IDL2/SyntaxTree/Member.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Member.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Operation.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Struct.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Struct.hpp:
+ * CCF/CCF/IDL2/Traversal/Makefile.alt:
+ * CCF/CCF/IDL2/Traversal/Member.cpp:
+ * CCF/CCF/IDL2/Traversal/Member.hpp:
+ * CCF/CCF/IDL2/Traversal/Struct.cpp:
+ * CCF/CCF/IDL2/Traversal/Struct.hpp:
+ * CCF/CCF/IDL2/Traversal/Typedef.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Operation.hpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ Added support for struct.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+ Added a few structs for testing.
+
+ * CCF/Documentation/TODO: Marked some items as done or
+ partially done.
+
+Thu Oct 16 12:55:06 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SyntaxTree/ElementsCtor.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/InterfaceCtor.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/ValueTypeCtor.cpp: Added fake ctor
+ definition for some compilers (like MSVC) that insist they
+ should be defined (even though never used).
+
+Thu Oct 16 12:07:01 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.cpp.m4:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.m4:
+ * CCF/CCF/IDL2/SyntaxTree/Elements.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Elements.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Interface.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Interface.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/ValueType.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/BuiltIn.hpp:
+ * CCF/CCF/IDL2/Traversal/BuiltIn.hpp.m4:
+ * CCF/CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Component.cpp:
+ * CCF/CCF/IDL3/SyntaxTree/Component.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/EventType.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Home.hpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp: Added the
+ SyntaxTree::ForwardDeclarableTypeDecl base class and moved
+ there {virtual bool defined () const;}. Added
+ {virtual bool complete () const;} to TypeDecl to reflect type
+ completeness. Also changed some type names for consistency.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: Minor changes to
+ reflect above.
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+ * CIDLC/cidlc.cpp: Minor changes to reflect above.
+
+Wed Oct 15 15:43:13 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/Makefile.archive:
+ * CCF/CCF/IDL2/Parser.cpp:
+ * CCF/CCF/IDL2/Parser.hpp:
+ * CCF/CCF/IDL2/SyntaxTree.hpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Makefile.alt:
+ * CCF/CCF/IDL2/SyntaxTree/Sequence.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Sequence.hpp:
+ * CCF/CCF/IDL2/Traversal/Makefile.alt:
+ * CCF/CCF/IDL2/Traversal/Sequence.cpp:
+ * CCF/CCF/IDL2/Traversal/Sequence.hpp: Added support for
+ unbounded sequence.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+ Added a few sequences for testing.
+
+Wed Oct 15 13:59:33 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4:
+ * CCF/CCF/IDL2/SyntaxTree/Elements.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Interface.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/Typedef.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/ValueType.hpp:
+ * CCF/CCF/IDL2/Traversal/Elements.cpp:
+ * CCF/CCF/CIDL/SemanticAction/Impl/HomeExecutor.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Component.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Home.hpp:
+ * CCF/CCF/IDL3/SemanticAction/Impl/Include.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Component.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/EventType.hpp:
+ * CCF/CCF/IDL3/SyntaxTree/Home.hpp:
+ * CCF/CCF/IDL3/Traversal/Operation.cpp: Second part of
+ typedef-related infrastructure.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/test-0.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-0_exec.idl.orig:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-1.idl: Added a few
+ typedef's for testing.
+
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/Makefile.alt:
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp: Some minor
+ clean-up's.
+
+ * CCF/Documentation/TODO: Added a few more items.
+
+Tue Oct 14 22:44:43 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Hello/simple_client.cpp:
+ * examples/handcrafted/Hello/client.cpp: Added the missing streams
+ header file.
+
+Tue Oct 14 17:18:43 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/Makefile.alt: Added alternative (to mpc) means of
+ building CIDL compiler.
+
+Tue Oct 14 16:57:54 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/RepositoryIdGenerator.cpp: Some minor clean-up's.
+
+Tue Oct 14 16:41:41 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/IDL2/Makefile.archive:
+ * CCF/IDL2/Parser.cpp:
+ * CCF/IDL2/Parser.hpp:
+ * CCF/IDL2/SemanticAction.hpp:
+ * CCF/IDL2/SyntaxTree.hpp:
+ * CCF/IDL2/Traversal.hpp:
+ * CCF/IDL2/SemanticAction/Factory.hpp:
+ * CCF/IDL2/SemanticAction/Typedef.hpp:
+ * CCF/IDL2/SemanticAction/Impl/Factory.hpp:
+ * CCF/IDL2/SemanticAction/Impl/Interface.hpp:
+ * CCF/IDL2/SemanticAction/Impl/Typedef.cpp:
+ * CCF/IDL2/SemanticAction/Impl/Typedef.hpp:
+ * CCF/IDL2/SyntaxTree/BuiltIn.hpp:
+ * CCF/IDL2/SyntaxTree/BuiltIn.hpp.m4:
+ * CCF/IDL2/SyntaxTree/Elements.cpp:
+ * CCF/IDL2/SyntaxTree/Elements.hpp:
+ * CCF/IDL2/SyntaxTree/Elements.tpp:
+ * CCF/IDL2/SyntaxTree/Interface.hpp:
+ * CCF/IDL2/SyntaxTree/Makefile.alt:
+ * CCF/IDL2/SyntaxTree/Module.hpp:
+ * CCF/IDL2/SyntaxTree/Operation.hpp:
+ * CCF/IDL2/SyntaxTree/Translation.cpp:
+ * CCF/IDL2/SyntaxTree/Translation.hpp:
+ * CCF/IDL2/SyntaxTree/TypeId.cpp:
+ * CCF/IDL2/SyntaxTree/Typedef.cpp:
+ * CCF/IDL2/SyntaxTree/Typedef.hpp:
+ * CCF/IDL2/SyntaxTree/ValueType.hpp:
+ * CCF/IDL2/Traversal/BuiltIn.hpp:
+ * CCF/IDL2/Traversal/BuiltIn.hpp.m4:
+ * CCF/IDL2/Traversal/Elements.cpp:
+ * CCF/IDL2/Traversal/Elements.hpp:
+ * CCF/IDL2/Traversal/Interface.hpp:
+ * CCF/IDL2/Traversal/Module.hpp:
+ * CCF/IDL2/Traversal/Operation.hpp:
+ * CCF/IDL2/Traversal/Translation.hpp:
+ * CCF/IDL2/Traversal/TypeId.hpp:
+ * CCF/IDL2/Traversal/Typedef.cpp:
+ * CCF/IDL2/Traversal/Typedef.hpp:
+ * CCF/IDL3/SyntaxTree/Component.hpp:
+ * CCF/IDL3/SyntaxTree/EventType.hpp:
+ * CCF/IDL3/SyntaxTree/Home.hpp:
+ * CCF/IDL3/SyntaxTree/Operation.hpp:
+ * CCF/IDL3/Traversal/Component.hpp:
+ * CCF/IDL3/Traversal/EventType.hpp:
+ * CCF/IDL3/Traversal/Home.hpp:
+ * CCF/IDL3/Traversal/Operation.hpp:
+ * CCF/CIDL/SyntaxTree/Composition.hpp:
+ * CCF/CIDL/SyntaxTree/HomeExecutor.hpp:
+ * CCF/CIDL/Traversal/Composition.hpp:
+ * CCF/CIDL/Traversal/HomeExecutor.hpp: First part of
+ typedef-related infrastructure.
+
+ * CCF/CodeGenerationKit/IndentationIDL.hpp:
+ * CCF/CompilerElements/Preprocessor.hpp:
+ * Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ * Example/CIDL/LocalExecutorMapping/cidlc.cpp:
+ * Example/CIDL/LocalExecutorMapping/test-0.idl: Some minor
+ clean-up's.
+
+ * Documentation/TODO: Added a few more items.
+
+Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * performance-tests/Benchmark/RoundTrip/svc.conf:
+ Changed to load Advanced_Resource_Factory dynamically.
+
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.h:
+ * performance-tests/Benchmark/RoundTripServer/server.cpp:
+ Changed to implement the Benchmark::Latency_Test interface
+ instead of the Latency_Test interface. Otherwise, we won't be
+ able to connect the interface to a receptacle expecting another
+ interface type.
+
+Tue Oct 14 00:54:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ Fixed a minor compilation problem.
+
+ * performance-tests/Benchmark/descriptors/Test-ior.cad:
+ * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl:
+ * performance-tests/Benchmark/RoundTripServer/server.cpp:
+
+ Changed to output IOR to a fixed file named "rtserver.ior" and
+ refer to the object as file://rtserver.ior in the cad file
+
+Mon Oct 13 23:41:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/RateGen/controller.cpp:
+ * examples/handcrafted/Display/RateGen/client.cpp: Added inclusion
+ of "ace/streams.h" to make them compile.
+
+Mon Oct 13 22:31:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp:
+ Fixed a fuzz warning.
+
+Mon Oct 13 16:49:00 2003 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/ComponentServer_Task.h:
+ Added /**/ to fix Fuzz errors.
+
+Sun Oct 12 20:44:41 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/Collectors.hpp:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/DescriptorGenerator.hpp:
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ExecutorMappingGenerator.hpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantGenerator.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.hpp:
+ Changed top of files to match the title/author/cvs id format for
+ all other CCF and CIDLC files.
+
+ * CIDLC/TypeNameEmitter.cpp:
+ * CIDLC/TypeNameEmitter.hpp:
+
+ New files, adding support for all basic IDL types, and factoring
+ out the typename emitter classes for operation return types and
+ parameters into a separate translation unit, to eliminate the
+ duplication in ServantHeaderGenerator.cpp and
+ ServantSourceGenerator.cpp.
+
+ * CIDLC/cidlc.mpc:
+ * CIDLC/CIDLC.vcproj:
+
+ Updated with the new files above.
+
+Sun Oct 12 18:36:16 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/Benchmark.mpc:
+ * performance-tests/Benchmark/Benchmark.idl:
+ * performance-tests/Benchmark/server.cpp:
+ * performance-tests/Benchmark/svc.conf:
+ * performance-tests/Benchmark/LatencyTest.h:
+ * performance-tests/Benchmark/LatencyTest.cpp:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
+ * performance-tests/Benchmark/RoundTripClient/client.cpp:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.idl:
+ Added test scenario in which a CORBA component interacts with
+ a CORBA server.
+
+Sat Oct 11 00:18:13 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: My previous change didn't
+ completely fix the script. It was using the obsolet dependency
+ MPC keyword "depends" instead of "after", and the dependencies
+ was partially broken.
+
+Fri Oct 10 18:39:18 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/RepositoryIdGenerator.cpp:
+ * CIDLC/RepositoryIdGenerator.hpp:
+ * CIDLC/cidlc.cpp:
+
+ Added backend support for typeid and typeprefix, used in
+ computing the repository id string.
+
+Fri Oct 10 15:54:00 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL2/LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuildIn.m4:
+ * CCF/CCF/IDL2/SyntaxTree/BuildIn.hpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuildIn.hpp.m4:
+ * CCF/CCF/IDL2/SyntaxTree/BuildIn.cpp:
+ * CCF/CCF/IDL2/SyntaxTree/BuildIn.cpp.m4:
+ * CCF/CCF/IDL2/Traversal/BuildIn.hpp:
+ * CCF/CCF/IDL2/Traversal/BuildIn.hpp.m4:
+ * CCF/Example/CIDL/LocalExecutorMapping/cidlc.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2.idl:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-1_exec.idl.orig:
+ * CCF/Example/CIDL/LocalExecutorMapping/test-2_exec.idl.orig:
+ * CIDLC/cidlc.cpp: Added support for all built-in types (spec
+ calls them 'base types') in CCF and in CIDL compiler driver.
+
+ * CCF/Documentation/TODO: marked corresponding item as done.
+
+Thu Oct 09 00:50:24 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: Minor enhancement to the previous
+ change. This script now allows an optional project name prefix
+ to be define via the [-u] flag. If this flag is not used, the
+ dependent component's name will be used as project name prefix.
+ Since there are possibly many component depending on the same
+ component, using the depending componant name may not help much.
+ If neither -u and -p flag are used, no project name prefix will
+ be added (the redundant leading underscore from the previous
+ change has been removed.)
+
+Fri Oct 6 10:00:12 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Documentation/TODO: merged items from my off-line TODO.
+
+Fri Oct 03 22:45:43 2003 Chris Cleeland <cleeland@ociweb.com>
+
+ * CIAO version 0.3.4 released.
+
+Fri Oct 03 11:07:20 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/releasenotes.html: Updated the release notes with more
+ recent news.
+
+Fri Oct 3 08:14:26 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc: Fixed a problem with
+ the MPC file. Thanks to Johnny Willemsen for poitning this out.
+
+Thu Oct 2 15:02:10 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/IDL2/Traversal/TypeId.hpp:
+ * CCF/CCF/IDL2/Traversal/TypeId.cpp:
+ * CCF/CCF/IDL2/Traversal.hpp:
+ * CCF/CCF/IDL2/SyntaxTree.hpp:
+ * CCF/CCF/IDL2/SemanticAction.hpp: Added missing pieces for
+ typeid/typeprefix support.
+
+Wed Oct 1 14:26:09 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CCF/CompilerElements/Context.hpp: added count () member
+ function.
+
+ * CIDLC/RepositoryIdGenerator.hpp:
+ * CIDLC/RepositoryIdGenerator.cpp: implemented first phase of
+ repository id generation.
+
+Tue Sep 30 09:52:13 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * performance-tests/mico/mico-thrput-st/client.cc:
+ * performance-tests/mico/mico-thrput-st/server.cc:
+
+ Fixed fuzz errors.
+
+
+Fri Sep 26 12:13:44 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl:
+ Changed to deploy Test-IOR.cad instead of
+ Test-Name-Service.cad.
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h:
+ Fixed some extra line-breaks that were causing compilation errors.
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ Fixed a compilation error.
+
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+ Removed a redundant comma.
+
+ * tools/ComponentServer/ComponentServer.cpp:
+ Fixed execution error in "debug mode."
+
+Wed Sep 24 20:59:09 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC2/EC/EC.mpc: Fixed problems that
+ missed my last checkiin "Sun Sep 21 17:07:45 2003 Balachandran
+ Natarajan <bala@dre.vanderbilt.edu>".
+
+Sun Sep 21 17:15:24 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * bin/generate_component_mpc.pl: Appended the value provided to
+ the -p option to the project names.
+
+Sun Sep 21 17:07:45 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc
+ * examples/handcrafted/BasicSP_EC2/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc:
+ Changed the project file names so that they don't clash with the
+ project names in examples/handcrafted/BasicSP. This shold get
+ rid of warning in VC7 builds hosted by remedy.
+
+Fri Sep 19 14:27:57 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc:
+ Fixed to adhere to latest mpc changes. This also ensured proper
+ make files to be generated.
+
+Fri Sep 19 13:31:50 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/descriptors/Test-IOR.cad:
+ cad file to test CORBA server with Component client
+ * performance-tests/Benchmark/RoundTripClient/run_test_ior.pl:
+ Perl script to run the benchmark
+ * performance-tests/Benchmark/RounTrip_server:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp:
+ * performance-tests/Benchmark/RoundTripServer/LatencyTest.h:
+ * performance-tests/Benchmark/RoundTripServer.mpc:
+ * performance-tests/Benchmark/RoundTripServer/server.cpp:
+ * performance-tests/Benchmark/RoundTripServer/Test.idl:
+ A server to communicate with CIAO client, implementing the same
+ interface needed.
+
+Tue Sep 16 14:04:06 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/Example/ComponentDeploymentDescriptor: Added small example
+ that shows how syntax tree traversal mechanism can be used in
+ different code generation tasks.
+
+Thu Aug 28 12:30:10 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/CFF/IDL2/SyntaxTree/Elements.*: Made SyntaxTree::Node
+ capable of holding arbitrary context information (see
+ SyntaxTree::Node::context ()). Plus some minor architectural
+ changes.
+
+ * CCF/CFF/IDL2/SyntaxTree/TypeId.*
+ * CCF/CFF/IDL2/SemanticAction/TypeId.*
+ * CCF/CFF/IDL2/SemanticAction/Impl/TypeId.*
+ * CCF/CFF/IDL2/LexicalAnalyzer.*
+ * CCF/CFF/IDL2/Parser.*: Added support for typeid and typeprefix.
+
+Tue Aug 26 16:59:49 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.inl:
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+ * tools/RTComponentServer/RTServer_Impl.h:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp: Fixed compilation
+ problem on Linux.
+
+Tue Aug 26 10:14:03 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIDLC/ServantSourceGenerator.cpp: Correctly generate get and set
+ operations for attributes in the servant code. An error in how
+ I built the traverse was preventing that.
+
+Tue Aug 26 09:27:17 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Changed the constructor of SetAttributeEmitter to take
+ INArgTypeNameEmitter as a delegate instead of
+ ReturnTypeNameEmitter, which was previously the case, causing
+ the code generation to emit the return type char* instead
+ of the correct IN argument type const char*. Thanks to
+ Roland Schimmack <SC@ProCom.de> for reporting the bug.
+
+Mon Aug 25 09:47:19 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h: Fixed a
+ compilation error by adding inclusion of "ace/Null_Mutex.h" and
+ define QT_GENUINE_STR.
+
+Mon Aug 25 07:42:14 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/ComponentServer_Task.cpp:
+ * tools/RTComponentServer/ComponentServer_Task.h:
+ * tools/RTComponentServer/RTConfig_Manager.h: Fixed merge errors
+ by adding inclusion of "tao/ORB.h", "ace/Null_Mutex.h" and
+ such.
+
+Sun Aug 24 22:03:55 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ Merged the RTCIAO-0 branch into main trunk.
+
+ Sun Aug 24 21:45:33 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+ * tools/Daemon/Daemon.mpc: Both CIAO_Daemon and Assembly_Manager
+ depend on RTCORBA library now because they both required to
+ handle RTCORBA related types.
+
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp:
+ * tools/Assembly_Deployer/Assembly_Visitors.h: Decoupled the
+ container creation functionality from the creation of
+ ComponentServer into a separate method. This allows us to
+ better manage the type of container and the associating policy
+ sets.
+
+ * tools/Assembly_Deployer/Deployment_Configuration.cpp:
+ * tools/Assembly_Deployer/Deployment_Configuration.h: Changed the
+ get_activator[_ior] functions to return default activator where
+ there's no valid activator id available instead of throwing an
+ exception.
+
+ * tools/ComponentServer/ComponentServer.cpp: Invoke the init
+ method of ComponentServer servant. This function is now
+ supported.
+
+ * tools/RTComponentServer/ComponentServer_Task.cpp:
+ * tools/RTComponentServer/ComponentServer_Task.h:
+ * tools/RTComponentServer/RTComponentServer.cpp:
+ * tools/RTComponentServer/RTComponentServer.mpc:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTServer_Impl.cpp:
+ * tools/RTComponentServer/RTServer_Impl.h:
+ * tools/RTComponentServer/RTServer_Impl.inl: Added/Changed to
+ properly support the real-time ComponentServer implementation.
+
+ * tools/ServerActivator/ServerActivator.cpp: Fixed a fuzz error.
+
+ * tools/XML_Helpers/Assembly_Spec.inl: Changed to return 0 if
+ rtcad_filename and rtpolicyset_ref is not specified in the
+ original XML file.
+
+ Thu Aug 14 16:27:52 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/XML_Helpers/RTCAD-example.rtd:
+ * tools/XML_Helpers/RTCAD-example.cad: Added new file to show some
+ example cad and rtd files.
+
+ * tools/XML_Helpers/main.cpp:
+ * tools/XML_Helpers/XML_Utils.cpp: Extended to invoke the RTCAD
+ handler.
+
+ * tools/XML_Helpers/RTConfig_Handlers.h:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp: Fixed run-time errors.
+
+ Wed Aug 13 01:48:46 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTComponentServer.mpc: Added dependency
+ to XML_Helpers library.
+
+ * tools/XML_Helpers/XML_Utils.h: Added parse_rtcad_extension
+ static method. This is yet to be implemented.
+
+ * tools/XML_Helpers/RTConfig_Handlers.h:
+ * tools/XML_Helpers/RTConfig_Handlers.inl:
+ * tools/XML_Helpers/RTConfig_Handlers.cpp: Added new files for
+ parsing RTConfig extention.
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/XML_Helpers/RTConfiguration.idl: Renamed
+ RTORB_Resources_Info to RTORB_Resource_Info.
+
+ * tools/XML_Helpers/XMLHelper.mpc: Added rtcorba as a base
+ project. We now depend on RTCORBA.
+
+ Sun Aug 10 13:50:15 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfiguration.idl:
+ * tools/RTComponentServer/RTConfigurationClient.cpp:
+ * tools/RTComponentServer/RTComponentServer.mpc: Removed
+ RTConfiguration.idl and the stub wrapper
+ RTConfigurationClient.cpp. They have been moved to XML_Helpers
+ library.
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTConfig_Manager.cpp: Changed to include
+ RTConfigurationC.h from XML_Helpers subdir and make sure
+ RTCORBA.h is included before RTConfigurationC.h.
+
+ * tools/XML_Helpers/XMLHelpers.mpc:
+ * tools/XML_Helpers/RTConfiguration.idl:
+ * tools/XML_Helpers/RTConfiguration_Stubs.cpp: Added
+ RTConfiguration info and its wrapper cpp file. This wrapper cpp
+ file is used to ensure that RTCORBA.h is included before
+ RTConfigurationC.h.
+
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.h:
+ * tools/XML_Helpers/Assembly_Handlers.inl:
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Assembly_Spec.inl: Extended to parse and store
+ <extension> information in <processcollocation> and
+ <homeplacement>.
+
+ Wed Aug 06 17:02:02 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTConfig_Manager.cpp: Added support for
+ keeping PriorityBands information.
+
+ Sun Aug 3 23:12:20 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfig_Manager.cpp: Fixed mismatched
+ throw specifications. Added inclusion of "ace/SString.h" as ACE
+ now only includes "ace/SStringfwd.h".
+
+ Sun Aug 03 00:45:59 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTConfig_Manager.cpp: Fixed some
+ accidental pastings of code.
+
+ Fri Aug 01 13:50:34 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/RTComponentServer.mpc:
+ * tools/RTComponentServer/RTConfig_Manager.cpp:
+ * tools/RTComponentServer/RTConfig_Manager.h:
+ * tools/RTComponentServer/RTConfig_Manager.inl:
+ * tools/RTComponentServer/RTConfiguration.idl: Added code for
+ managing named collection of RTCORBA related policies.
+
+ Sun Jul 06 21:37:22 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/ComponentServer_Task.cpp (svc): Changed
+ to take advantage of CIAO::Activator_Callback interface change
+ for getting back our own ConfigValues. We will need to use
+ these configuration values in the future.
+
+ Sun Jul 06 11:50:48 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/ComponentServer_Task.cpp:
+ * tools/RTComponentServer/ComponentServer_Task.h:
+ * tools/RTComponentServer/ComponentServer_Task.inl:
+ * tools/RTComponentServer/README:
+ * tools/RTComponentServer/RTComponentServer.cpp:
+ * tools/RTComponentServer/RTComponentServer.mpc: Added the
+ skeleton of RTComponentServer.
+
+ Sun Jul 06 11:33:55 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * Added: this temporary ChangeLog file for changes within the
+ RTComponentServer.
+
+
+Sun Aug 24 21:38:24 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h: Added an extra argument of type
+ CORBA::PolicyList to the init method which we can use to pass
+ extra RTCORBA policies into the RT Container.
+
+ * ciao/Container_Impl.cpp:
+ * ciao/Container_Impl.h: Fixed memory management of cached
+ ConfigValue valuetype.
+
+ * ciao/ServerActivator_Impl.h:
+ * ciao/ServerActivator_Impl.cpp: Extended the server activator to
+ specify RTCAD filename when instantiating a RTComponentServer.
+
+ * examples/OEP/Display/descriptors/HUDisplay-rtcad.cad:
+ * examples/OEP/Display/descriptors/NOTE-win.txt:
+ * examples/OEP/Display/descriptors/RTsvc.conf:
+ * examples/OEP/Display/descriptors/test.rtd:
+ * examples/OEP/Display/descriptors/svcmap.dat: Added an RTCCM
+ example.
+
+Wed Aug 20 17:44:29 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIDLC/DescriptorGenerator.cpp: Small fix to make it compile
+ under linux also.
+
+Wed Aug 20 17:36:02 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/mico:
+ Directory where mico specific tests will be added
+
+ * performance-tests/mico/mico-thrput-st:
+ Single threaded throughput tests for the MICO ORB
+
+ * performance-tests/mico/mico-thrput-st/server.cc:
+ * performance-tests/mico/mico-thrput-st/client.cc:
+ * performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc:
+ * performance-tests/mico/mico-thrput-st/RoundTrip_impl.h:
+ * performance-tests/mico/mico-thrput-st/Makefile:
+ * performance-tests/mico/mico-thrput-st/mico-env:
+ * performance-tests/mico/mico-thrput-st/RoundTrip.idl:
+ Single threaded througput test for MICO ORB. This experiment
+ uses the same interface as the one used in TAO for generating
+ daily performance stats. Further, the test also uses ACE for
+ generating results.
+
+Wed Aug 20 17:19:52 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/cidlc.mpc:
+
+ Added new and missing files.
+
+Wed Aug 20 17:09:18 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+
+ Added missing header files to the project.
+
+ * CCF/CCF/CodeGenerationKit/Regex.hpp:
+
+ Boris Kolpackov's <boris@dre.vanderbilt.edu> change
+ to allow a choice of delimiters when passing a
+ regular expression string to the perl_s() method.
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+
+ Minor cosmetic changes.
+
+ * CIDLC/DescriptorGenerator.cpp:
+ * CIDLC/DescriptorGenerator.hpp:
+
+ New files, containing code for an XML generator, the
+ CORBA Component Descriptor .ccd file.
+
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/cidlc.cpp:
+
+ Updated these files to recognize the new generator.
+ Also changed the output directory of the executable
+ to be CIAO_ROOT/bin.
+
+Wed Aug 20 14:48:15 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CCF/Example/CodeGenerationKit/Indentation/XML/Makefile.alt:
+ * CCF/Example/CodeGenerationKit/Indentation/XML/XML.mpc:
+ * CCF/Example/CodeGenerationKit/Indentation/XML/indent_xml.cpp:
+ Added example of usage for the XML indenter.
+
+ * CCF/CCF/CodeGenerationKit/IndentationXML.hpp: Added XML
+ indenter.
+
+Tue Aug 19 16:06:01 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIDLC/cidlc.mpc: Some cleaning of the MPC file: Removed unneeded
+ Instrocpection and added the CompilerElements library.
+
+Mon Aug 18 14:08:05 2003 Arvind S. Krishna <arvindk@equus.dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/descriptors/test-multi-process.dat:
+ This file contains host port locations for running components
+ in multiple hosts/processes. Will be used as an example
+ scenario for benchmarking experiments
+
+Mon Aug 18 12:11:55 2003 Arvind S. Krishna <arvindk@equus.dre.vanderbilt.edu>
+
+ * performance-tests/Benchmar/Multi_Threaded/NOTE.txt:
+ Updated information on pre-conditions necessary to run the
+ experiment
+
+Mon Aug 18 12:01:37 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * performance-tests/Benchmar/Multi_Threaded/Multi_Threaded.mpc:
+ * performance-tests/Benchmar/Multi_Threaded/client.cpp:
+ * performance-tests/Benchmar/Multi_Threaded/Client_Task.h:
+ * performance-tests/Benchmar/Multi_Threaded/Client_Task.cpp:
+ * performance-tests/Benchmar/Multi_Threaded/run_test.pl:
+ * performance-tests/Benchmar/Multi_Threaded/svc.conf:
+ * performance-tests/Benchmar/Multi_Threaded/NOTE.txt:
+ * performance-tests/Benchmar/Multi_Threaded/README:
+ Test that measures round-trip latency behavior using a
+ multi-threaded client.
+
+ * performance-tests/Benchmark/descriptors/Multi_Threaded.cad:
+ * performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini:
+ Appropriate CAD file to configure the above experiment
+
+Sun Aug 17 22:43:55 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Container_Impl.cpp: Changed the signature of
+ CIAO::Container to pass in a CORBA::PolicyList. We will need
+ this to initialize RT_Session_Container and the future
+ unclassified container.
+
+ * docs/ConfigValues.html:
+ * docs/XML/ciao_rt_cad_ext.dtd:
+ * docs/XML/componentassembly.dtd: Updated documentation on
+ extension element usage, RTCAD extension usage and recognizable
+ ConfigValues names.
+
+ * examples/OEP/Display/RateGen/client.cpp:
+ * examples/OEP/Display/RateGen/controller.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp:
+ Reordered order of inclusion to make sure ACE headers are seen
+ by the compiler first.
+
+Sun Aug 17 09:53:57 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CCF/CCF/CCF.mwc: Fixed a bug in the name of a file that was
+ preventing the build in VC71.
+
+Fri Aug 15 16:26:03 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIAO/CCF/CCF/CIDL/CIDL.vcproj:
+ * CIAO/CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CIAO/CCF/CCF/CompilerElements/CompilerElements.vcproj:
+ * CIAO/CCF/CCF/IDL2/IDL2.vcproj:
+ * CIAO/CCF/CCF/IDL3/IDL3.vcproj:
+ * CIAO/CIDLC/CIDLC.vcproj:
+
+ Turned off detection of 64-bit portability issues in these
+ projects. There are places in the Boost library where they
+ play fast and loose with conversions in this area, which
+ leads to many warnings.
+
+Fri Aug 15 15:18:37 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF:
+ * CIDLC:
+
+ Added VC7.1 Solutions and Projects.
+
+Wed Aug 13 17:37:30 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BasicSP.mpc:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC/EC/EC.mpc:
+
+ Updated library linkage and library paths.
+
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedEDE.idl:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDeviceE.idl:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/EC/ECE.idl:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/EC/EC_exec.h:
+ * examples/handcrafted/BasicSP_EC/EC/controller.cpp:
+ * examples/handcrafted/BasicSP_EC/EC/client.cpp:
+
+ Added new Cookie implementation.
+ Use new method _ciao_the_ORB () to get container's ORB reference in
+ subscribe () and unsubscribe () methods.
+
+Wed Aug 13 16:23:02 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp:
+
+ Fixed memory management and added comments.
+
+Wed Aug 13 13:25:14 2003 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIDLC/cidlc.mpc: Reordered static library list to suit
+ dependencies.
+
+Wed Aug 13 12:20:12 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+
+ Added #include ace/Log_Msg.h to fix compilation error.
+
+Wed Aug 13 10:49:14 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * ciao/Container_Base.h:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.inl:
+
+ Added _ciao_the_ORB () method to CIAO::Container to access the
+ container's underlying ORB.
+ Changed the_POA () method to _ciao_the_POA ().
+
+Wed Aug 13 10:42:12 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay_svnt.h:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h:
+
+ Added /**/ to pre.h and post.h includes.
+
+Tue Aug 12 21:56:42 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+
+ * tools/XML_Helper/Assembly_Spec.h:
+ Fixed compilation error from a missing
+ #include "ace/Null_Mutex.h".
+
+2003-08-12 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIAO.mwc: Removed CCF MPC files as they still don't work the way
+ I expected it to.
+
+2003-08-11 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CIDLC/ServantGenerator.cpp: Removed commented code.
+
+2003-08-07 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * CCF/Example/CodeGenerationKit/Indentation/IDL/IDL.mpc:
+ * CCF/Example/CodeGenerationKit/Indentation/Indentation.mwc:
+ * CCF/Example/CodeGenerationKit/CodeGenerationKit.mwc:
+ * CCF/Example/CIDL/LocalExecutorMapping/LocalExecutorMapping.mpc:
+ * CCF/Example/CIDL/CIDL.mwc:
+ * CCF/Example/Example.mwc:
+ * CCF/CCF/CompilerElements/CompilerElements.mpc:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.mpc:
+ * CCF/CCF/IDL3/IDL3.mpc:
+ * CCF/CCF/IDL2/IDL2.mpc:
+ * CCF/CCF/CIDL/CIDL.mpc:
+ * CCF/CCF/CCF.mwc:
+ * CCF/CCF.mwc:
+ CCF Makefiles to MPC.
+
+ * CIDLC/cidlc.mpc: Adapted to the new structure of the CIDL
+ compiler.
+
+ * CIDLC/README: Updated the information regarding the new
+ libraries and how to build the CIDL compiler now.
+
+ * CIDLC/parser_examples/*.*: Removed old parser examples code.
+
+Tue Aug 12 20:18:23 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.idl:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.idl:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC2/EC/EC.idl:
+ * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/EC/EC_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.idl:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventServiceEI.idl:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.cpp:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_exec.h:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService_svnt.h:
+ * examples/handcrafted/BasicSP_EC2/BasicSP.idl:
+
+ Updated handcrafted event channel example; components now provide and use the
+ RtecEventChannelAdmin::EventChannel interface.
+
+2003-08-11 Arvind S. Krishna <arvindk@equus.dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/client.cpp:
+ * performance-tests/Benchmark/RoundTrip/svc.conf:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc:
+ * performance-tests/Benchmark/RoundTrip/run_test.pl:
+ The client was not using the proper svc conf file to run in
+ "single-threaded" mode. Added proper svc.conf file and support
+ code in the client. The .mpc file was modified to add client's
+ dependency with TAO_Strategies library.
+
+Thu Aug 07 16:46:42 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ Changed to use base project qt-min_moc as we don't need to use
+ ACE_QtReactor.
+
+Wed Aug 06 17:00:05 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/XML/ciao_rt_cad_ext.dtd: Added DTD for RT extension to cad
+ file.
+
+2003-08-06 Arvind S. Krishna <arvindk@equus.dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/run_test.pl:
+ Fixed problems relating to parsing arguments when the number of
+ iterations is specified from the command line.
+
+Tue Aug 05 17:25:45 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP_EC2/EC/EC.mpc:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc:
+ * examples/handcrafted/BasicSP_EC2/BasicSP.mpc:
+
+ Added library include paths and additional library to MPC
+ files.
+
+ Removed file:
+ * examples/handcrafted/BasicSP_EC2/EC/config:
+
+ Removed unnecessary file.
+
+ * examples/handcrafted/BasicSP_EC2/EC/controller.cpp:
+ * examples/handcrafted/BasicSP_EC2/EC/client.cpp:
+
+ Included ace/Streams.h.
+
+Tue Aug 05 13:23:12 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ Added files:
+ * examples/handcrafted/BasicSP_EC2/*.*:
+ * examples/handcrafted/BasicSP_EC2/BMClosedED/*.*:
+ * examples/handcrafted/BasicSP_EC2/BMDevice/*.*:
+ * examples/handcrafted/BasicSP_EC2/EC/*.*:
+ * examples/handcrafted/BasicSP_EC2/descriptors/*.*:
+ * examples/handcrafted/BasicSP_EC2/BMDisplay/*.*:
+ * examples/handcrafted/BasicSP_EC2/RTEventService/*.*:
+
+ Added new event channel example. The event service is
+ integrated as a separate component.
+
+2003-08-04 Arvind S. Krishna <arvindk@equus.dre.vanderbilt.edu>
+
+ * performance-tests/Benchmark/RountTripClient/run_test.pl:
+ * performance-tests/Benchmark/RountTripClient/RoundTripClient_exec.cpp:
+ * performance-tests/Benchmark/RountTrip/RoundTrip_exec.cpp:
+ Fixed errors in the perl file for running the example. Corrected
+ the way in which throughput is measured within the client
+ component. Also added code to enable tests to be run in the
+ super user mode.
+
+2003-08-04 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ * performance-tests/Benchmark/RoundTripClient/client.cpp:
+ * performance-tests/Benchmark/RoundTripClient/run_test.pl:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.cad:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.csd:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.ssd:
+ Made the test to run. Fixed some problems with UUID. Made the
+ client to correctly expect a component instance instead of a
+ home.
+
+Mon Jul 7 23:35:14 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/RTComponentServer/ComponentServer_Task.inl:
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp: Fixed
+ compilation errors/warnings on Linux.
+
+Fri Aug 01 23:34:38 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/Simple_Component_Server/sample_client.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp: Fixed compilation
+ errors. We need to include "ace/streams.h" explicitly if we
+ want to use iostream stuff.
+
+2003-08-01 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ Small bug fix.
+
+ * performance-tests/Benchmark/Benchmark.idl: Added missing
+ Controller interface.
+
+2003-07-31 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * performance-tests/Benchmark/Benchmark.idl:
+ * performance-tests/Benchmark/Benchmark.mpc:
+ * performance-tests/Benchmark/BenchmarkE.idl:
+ * performance-tests/Benchmark/Benchmark_stub_export.h:
+ * performance-tests/Benchmark/Benchmark_svnt_export.h:
+ * performance-tests/Benchmark/NOTE.txt:
+ * performance-tests/Benchmark/README:
+ * performance-tests/Benchmark/RoundTrip/README:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.cidl:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.idl:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip.mpc:
+ * performance-tests/Benchmark/RoundTrip/RoundTripEI.idl:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h:
+ * performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h:
+ * performance-tests/Benchmark/RoundTrip/client.cpp:
+ * performance-tests/Benchmark/RoundTrip/run_test.pl:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h:
+ * performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h:
+ * performance-tests/Benchmark/RoundTripClient/client.cpp:
+ * performance-tests/Benchmark/RoundTripClient/run_test.pl:
+ * performance-tests/Benchmark/descriptors/Benchmark.cad:
+ * performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini:
+ * performance-tests/Benchmark/descriptors/RoundTrip.csd:
+ * performance-tests/Benchmark/descriptors/RoundTrip.ssd:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.cad:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.csd:
+ * performance-tests/Benchmark/descriptors/RoundTripClient.ssd:
+ * performance-tests/Benchmark/descriptors/test.dat:
+ Added files for the performance tests Arvind and I are
+ developing.
+
+ * CIDLC/ServantHeaderGenerator.cpp: Removed usage of Traversal
+ namespace to avoid name clashing.
+
+ * CIDLC/ExecutorMappingGenerator.cpp:
+ * CCF/Example/CIDL/LocalExecutorMapping/ExecutorMappingGenerator.cpp:
+ Generate SessionContext by now instead of CCMContext for local
+ interfaces.
+
+Thu Jul 31 16:50:29 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMDevice/BMDevice_svnt.cpp:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.h:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED_svnt.cpp:
+
+ Made modifications requested. Added @@ Bala comments to
+ indicate changes.
+
+2003-07-31 Diego Sevilla <dsevilla@ditec.um.es>
+
+ * examples/OEP/BasicSP/EC/EC_exec.{cpp,h}: Changed the exception
+ specification for the new_EC method (explicit home operations
+ don't throw CCMException.)
+
+ * examples/OEP/Display/RateGen/RateGen_exec.{cpp,h}: Ditto.
+
+ * CIDLC/*: Adapted the CIDL compiler to work with the new CCF
+ library. Basically the same code is generated with small bugs
+ fixed.
+
+Wed Jul 30 07:26:29 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.h:
+ * examples/handcrafted/BasicSP_EC/EC/EC_svnt.cpp: Added @@ George
+ comments for George. This is a code review. Same comments apply
+ to other components.
+
+Tue Jul 29 15:36:20 2003 Boris Kolpackov <boris@dre.vanderbilt.edu>
+
+ * CCF/*.*: Replaced old version with a new one.
+
+Thu Jul 24 16:22:27 2003 George Edwards <g.edwards@vanderbilt.edu>
+
+ Added new files:
+ * examples/handcrafted/BasicSP_EC/*.*:
+ * examples/handcrafted/BasicSP_EC/BMClosedED/*.*:
+ * examples/handcrafted/BasicSP_EC/BMDevice/*.*:
+ * examples/handcrafted/BasicSP_EC/BMDisplay/*.*:
+ * examples/handcrafted/BasicSP_EC/descriptors/*.*:
+ * examples/handcrafted/BasicSP_EC/EC/*.*:
+
+ Modified BasicSP example to use TAO's RT event channel for
+ event propagation. This involved modifications to each
+ component's servant header and source files, which are normally
+ generated by the CIDL compiler.
+
+Sun Jul 13 20:14:42 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * README: Updated information on MPC tools. ACE/TAO are in
+ transition to use MPC based solution exclusively (like what CIAO
+ is doing already.) There are currently some mismatch between
+ MPC genearted Makefile/project files and the stock ones. Be
+ caution.
+
+ Once we switch to all MPC based approach, this will no longer be
+ a problem.
+
+Wed Jul 09 21:06:12 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/ServerActivator/ServerActivator.cpp: Fixed compilation due
+ to earlier change in the signature of ServerActivator_Impl::init
+ method.
+
+Tue Jul 08 10:52:56 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/README: Reverted the previous documentation change,
+ instead, register the daemon interface as "CIAODaemon" in the
+ internal IOR table. This provides a more consistent naming
+ scheme throughout. Thanks to Roland Schimmack <SC@ProCom.de>
+ for motivating this change.
+
+Tue Jul 08 07:11:23 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/Daemon/README: Fixed discrepancy in document. The
+ IOR-Table entry for daemon interface should be "CIAO-Daemon"
+ instead of "CIAODaemon". Thanks to Roland Schimmack
+ <SC@ProCom.de> for reporting this.
+
+Sun Jul 06 21:40:39 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ There are two major changes in this entry.
+
+ 1. A scheme for associating component server with a logical
+ configuration and to map the logical name to a real svc.conf
+ file. Each local CIAO_Daemon can determine what default
+ svc.conf file to use, if none specified, and how logical
+ names map to actual svc.conf files.
+
+ 2. Added mechanism to pass the ConfigValues from
+ Components::Deployment::ServerActivator::create_component_server
+ to a Components::Deployment::ComponentServer instance which it
+ can later use for futher configure the ComponentServer.
+
+ * ciao/Server_init.cpp:
+ * ciao/Server_init.h: Added a new Utility namespace for commonly
+ used server side functions. Currently only a write_IOR
+ method is available.
+
+ * ciao/CIAO_Servers.idl: Updated
+ CIAO::Activator_Callback::register_component_server method to
+ pass back ComponentServer's ConfigValues.
+
+ * docs/ConfigValues.html: Docuement the new ConfigValue name
+ ("CIAO-svcconf-id") that CIAO recognize.
+
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/ServerActivator_Impl.h:
+ * ciao/ServerActivator_Impl.inl: Changed to support:
+
+ Activator_Callback change.
+
+ Mechanisms to maintain an (id, svc.conf) mapping, and keeping a
+ default svc.conf file.
+
+ * ciao/ComponentServer_Impl.h:
+ * ciao/ComponentServer_Impl.inl: Changed to update the
+ ConfigValues when calling back to the ServerActivator.
+
+ * examples/OEP/Display/descriptors/svcmap.dat: Added an example
+ svcconf-id to svc.conf filename mapping file.
+
+ * tools/Assembly_Deployer/Assembly_Visitors.cpp: Extend the the
+ syntax of <destination> tag. It can now contain an optional '|'
+ delimited svc.conf id to provide the CIAO Daemon the logical
+ svc.conf file should use.
+
+ * tools/Assembly_Deployer/Deployment_Configuration.cpp: Enhanced
+ to provide a more comprehensive error message.
+
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/README: Extended CIAODaemon's command line options
+ to pass in the default svc.conf filename and the (id, svc.conf)
+ mapping data file.
+
+ * tools/ComponentServer/ComponentServer.cpp: Changed to update
+ this component server's ConfigValues after calling back to the
+ ServerActivator. Removed the old write_IOR function and changed
+ to use the global function in CIAO::Utility namespace.
+
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp: Some
+ minor memory leaks were identified in this file, but I didn't
+ have time to fix them yet. So added comments to identify them.
+
+Sun Jul 06 19:41:06 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/NavDisplayGUI_exec/README: Documented how
+ one can generate a project that work for this component.
+
+Thu Jul 03 16:04:35 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CCM_Core.mpc: Fixed compilation errors by
+
+ . Including $(TAO_ROOT)/orbsvcs/orbsvcs to IDL and C++ include
+ paths. It's necessary to do this because security idl files
+ includes other stuff in that subdir.
+
+ . Adding dependency to ifr_client to CIAO_Container library.
+
+Wed Jul 02 14:57:00 2003 Justin Michel <michel_j@ociweb.com>
+
+ * CIAO.mwc
+ * CIDLC/cidlc.mpc
+ * CIDLC/parser_examples/examples.mwc
+ * examples/OEP/examples.mwc
+ * examples/handcrafted/examples.mwc
+ * examples/handcrafted/BasicSP/EC/EC.mpc
+ * examples/handcrafted/Hello/hello.mpc
+ * tests/tests.mwc
+ * tools/tools.mwc
+
+ Added workspaces and updated projects files to use
+ the latest MPC features.
+
+Wed Jun 25 11:00:00 2003 Justin Michel <michel_j@ociweb.com>
+
+ * ciao/CCM_Core.mpc:
+ * examples/OEP/BasicSP/BasicSP.mpc:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/HUDisplay.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/BasicSP/BasicSP.mpc:
+ * examples/handcrafted/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/BasicSP/EC/EC.mpc:
+ * examples/handcrafted/Display/HUDisplay.mpc:
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Hello/hello.mpc:
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+ * tools/ComponentServer/ComponentServer.mpc:
+ * tools/Daemon/Daemon.mpc:
+ * tools/ServerActivator/ServerActivator.mpc:
+ * tools/Simple_Component_Server/Simple_Component_Server.mpc:
+ * tools/XML_Helpers/XMLHelpers.mpc:
+
+ Added and updated mpc files to use the latest
+ features and make use of base projects.
+
+
+Tue Jun 24 15:42:46 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: Updated mpc file generator to
+ take advantage of the new CIDL rules.
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/BasicSP/BasicSP.mpc:
+ * examples/handcrafted/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/handcrafted/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/handcrafted/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/handcrafted/Display/HUDisplay.mpc:
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Hello/hello.mpc: Updated mpc files to take
+ advantage of the new CIDL build rules, and to use the new
+ ciao_servant mpc template for building servant DLLs and
+ ciao_component mpc template for building component executor
+ DLLs..
+
+Sun Jun 22 15:23:00 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/BasicSP/EC/EC.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc: Renamed projects named
+ "controller" to resolve project name conflicts.
+
+Sun Jun 22 09:03:57 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/diffs/*: Removed obsolete diff files.
+
+Sat Jun 21 10:30:24 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/BasicSP/BasicSP.mpc:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc:
+ * examples/OEP/BasicSP/BMDevice/BMDevice.mpc:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc:
+ * examples/OEP/BasicSP/EC/EC.mpc: Added new MPC files.
+
+ * examples/OEP/BasicSP/BasicSP.dsw:
+ * examples/OEP/BasicSP/BasicSP_stub.dsp:
+ * examples/OEP/BasicSP/BasicSP_svnt.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_stub.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp:
+ * examples/OEP/BasicSP/EC/EC_client.dsp:
+ * examples/OEP/BasicSP/EC/EC_exec.dsp:
+ * examples/OEP/BasicSP/EC/EC_stub.dsp:
+ * examples/OEP/BasicSP/EC/EC_svnt.dsp:
+ * examples/OEP/BasicSP/EC/controller.dsp: Removed these
+ handcrafted projects/workspaces now that we genertae them via MPC.
+
+Sat Jun 21 09:50:37 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/HUDisplay.mpc:
+ * examples/OEP/Display/GPS/GPS.mpc:
+ * examples/OEP/Display/NavDisplay/NavDisplay.mpc:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/OEP/Display/RateGen/RateGen.mpc: Added new MPC files
+ that can handle CIDL and Qt files.
+
+ * examples/OEP/Display/Display.dsw:
+ * examples/OEP/Display/HUDisplay_stub.dsp:
+ * examples/OEP/Display/HUDisplay_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_exec.dsp:
+ * examples/OEP/Display/GPS/GPS_stub.dsp:
+ * examples/OEP/Display/GPS/GPS_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp:
+ * examples/OEP/Display/RateGen/RateGen_client.dsp:
+ * examples/OEP/Display/RateGen/RateGen_exec.dsp:
+ * examples/OEP/Display/RateGen/RateGen_stub.dsp:
+ * examples/OEP/Display/RateGen/RateGen_svnt.dsp:
+ * examples/OEP/Display/RateGen/controller.dsp: Removed handcrafted
+ projects/workspaces now that we can generate them with MPC
+ files.
+
+Fri Jun 20 21:06:23 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/Display/HUDisplay_stub.dsp:
+ * examples/OEP/Display/HUDisplay_svnt.dsp: Fixed incorrect usages
+ of environment variables in project files.
+
+Fri Jun 20 11:41:50 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/ServerActivator_Impl.cpp (create_component_server):
+ Added more code to generate debug info when things go wrong.
+ Thanks to Emre Turkay <emre.turkay@vanderbilt.edu> for
+ motivating this.
+
+Fri Jun 20 10:21:10 2003 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+
+ Added inheritance from qt_moc and removed the custom definition
+ for MOC_Files.
+
+Thu Jun 19 07:54:42 2003 Chad Elliott <elliott_c@ociweb.com>
+
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+
+ Added 'specific' scopes to take into account the different qt
+ library names on different platforms.
+
+Tue Jun 17 11:02:19 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Hello/README: Updated the obsolete
+ instructions to test run this component. Thanks to Jesse
+ Greenwald <jesse@cis.ksu.edu> for reporting this.
+
+Mon Jun 16 11:16:52 2003 Chris Cleeland <cleeland@ociweb.com>
+
+ * CIAO version 0.3.3 released.
+
+Sun Jun 08 10:42:15 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.cpp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp: Added code
+ to registered the ValueFactory with the ORB so we can deploy
+ this component independent of others in this example. Enhanced
+ the debug output a bit.
+
+ * docs/releasenote.html: Added info on CIDL compiler.
+
+ * exampels/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp:
+ Really checked in the following change.
+
+ Mon Jun 02 23:36:29 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+Tue Jun 03 07:55:01 2003 Simon McQueen <sm@prismtechnologies.com>
+
+ * CIAO version 0.3.2 released.
+
+Tue Jun 3 01:26:04 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BasicSP.dsw:
+ * examples/OEP/BasicSP/BasicSP_stub.dsp:
+ * examples/OEP/BasicSP/BasicSP_svnt.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp:
+ * examples/OEP/BasicSP/EC/EC_stub.dsp:
+ * examples/OEP/Display/HUDisplay_stub.dsp:
+ * examples/OEP/Display/HUDisplay_svnt.dsp:
+
+ Updated settings in these files.
+
+ * examples/OEP/BasicSP/NOTE.txt:
+
+ Fixed typos.
+
+ * examples/OEP/BasicSP/descriptors/daemon.ior:
+
+ Removed this file from the repository - it's just a temporary.
+
+Mon Jun 02 23:36:29 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * exampels/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp:
+ Regenerated and hand modified the project file.
+
+Mon Jun 2 22:45:05 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ciao/ComponentsC.h:
+ * ciao/ComponentsS.h:
+
+ Contains the *C.h and *S.h corresponding to the include in Components.idl.
+
+Mon Jun 02 12:47:50 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * README: Revised the root readme file.
+
+Mon Jun 2 12:42:10 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/External/Utility/Documentation/Build.html:
+
+ New file containing build information for the CIDL compiler.
+
+ * CIDLC/README:
+
+ Updated file to point to the new file above and other
+ documentation files in that same directory.
+
+Mon Jun 2 02:00:04 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BasicSP.dsw:
+ * examples/OEP/BasicSP/BasicSP_stub.dsp:
+ * examples/OEP/BasicSP/BasicSP_svnt.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_stub.dsp:
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_exec.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_stub.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_exec.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_stub.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp:
+ * examples/OEP/BasicSP/EC/EC_client.dsp:
+ * examples/OEP/BasicSP/EC/EC_exec.dsp:
+ * examples/OEP/BasicSP/EC/EC_stub.dsp:
+ * examples/OEP/BasicSP/EC/EC_svnt.dsp:
+ * examples/OEP/BasicSP/EC/controller.dsp:
+ * examples/OEP/Display/Display.dsw:
+ * examples/OEP/Display/HUDisplay_stub.dsp:
+ * examples/OEP/Display/HUDisplay_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_exec.dsp:
+ * examples/OEP/Display/GPS/GPS_stub.dsp:
+ * examples/OEP/Display/GPS/GPS_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp:
+ * examples/OEP/Display/NavDisplayGUI_exec/README
+ * examples/OEP/Display/RateGen/RateGen_client.dsp:
+ * examples/OEP/Display/RateGen/RateGen_exec.dsp:
+ * examples/OEP/Display/RateGen/RateGen_stub.dsp:
+ * examples/OEP/Display/RateGen/RateGen_svnt.dsp:
+ * examples/OEP/Display/RateGen/controller.dsp:
+
+ Fixed project and workspace settings for the generated
+ version of the HUDisplay and BasicSP examples.
+
+Sun Jun 1 23:00:53 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Makefile: Added the path to the RELEASE_FILES
+
+Sun Jun 1 19:07:49 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/README:
+ * examples/OEP?BasicSP/README:
+ * examples/OEP/Display/README:
+
+ Updated these files with info about the URL for downloading
+ CIDL compiler binaries.
+
+Sun Jun 1 14:30:53 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * docs/releasenotes.html:
+ * docs/todo.html:
+
+ Added items related to the CIDL compiler.
+
+Sat May 31 10:54:11 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Makefile: We dont have any special files like INSTALL that needs
+ specila attention during the release.
+
+Fri May 30 19:33:36 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CCF/DesignNotes:
+ * CCF/Makefile:
+ * CCF/Version:
+ * CCF/CCF/CCF.sln:
+ * CCF/CCF/Makefile:
+ * CCF/CCF/CIDL/CIDL.cpp:
+ * CCF/CCF/CIDL/CIDL.vcproj:
+ * CCF/CCF/CIDL/CIDL_LexicalAnalyzer.hpp:
+ * CCF/CCF/CIDL/CIDL_Parser.hpp:
+ * CCF/CCF/CIDL/CIDL_SemanticAction.hpp:
+ * CCF/CCF/CIDL/CIDL_SemanticActionImpl.hpp:
+ * CCF/CCF/CIDL/CIDL_SyntaxTree.cpp:
+ * CCF/CCF/CIDL/CIDL_SyntaxTree.hpp:
+ * CCF/CCF/CIDL/CIDL_SyntaxTreeFwd.hpp:
+ * CCF/CCF/CIDL/CIDL_Traversal.cpp:
+ * CCF/CCF/CIDL/CIDL_Traversal.hpp:
+ * CCF/CCF/CIDL/MSVC_Pragmas.hpp:
+ * CCF/CCF/CIDL/Makefile:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.cpp:
+ * CCF/CCF/CodeGenerationKit/CodeGenerationKit.vcproj:
+ * CCF/CCF/CodeGenerationKit/CommandLine.cpp:
+ * CCF/CCF/CodeGenerationKit/CommandLine.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineDescriptor.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.cpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineGrammar.hpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineParser.cpp:
+ * CCF/CCF/CodeGenerationKit/CommandLineParser.hpp:
+ * CCF/CCF/CodeGenerationKit/IDLStream.hpp:
+ * CCF/CCF/CodeGenerationKit/MSVC_Pragmas.hpp:
+ * CCF/CCF/CodeGenerationKit/Makefile:
+ * CCF/CCF/CodeGenerationKit/Regex.hpp:
+ * CCF/CCF/CompilerElements/DiagnosticStream.cpp:
+ * CCF/CCF/CompilerElements/DiagnosticStream.hpp:
+ * CCF/CCF/CompilerElements/ExH.hpp:
+ * CCF/CCF/CompilerElements/FileSystem.hpp:
+ * CCF/CCF/CompilerElements/MSVC_Pragmas.hpp:
+ * CCF/CCF/CompilerElements/Parser.hpp:
+ * CCF/CCF/CompilerElements/Preprocessor.hpp:
+ * CCF/CCF/CompilerElements/ReferenceCounting.hpp:
+ * CCF/CCF/CompilerElements/SemanticAction.hpp:
+ * CCF/CCF/CompilerElements/Token.hpp:
+ * CCF/CCF/CompilerElements/TokenStream.hpp:
+ * CCF/CCF/CompilerElements/Traversal.hpp:
+ * CCF/CCF/IDL2/IDL2.cpp:
+ * CCF/CCF/IDL2/IDL2.vcproj:
+ * CCF/CCF/IDL2/IDL2_LexicalAnalyzer.cpp:
+ * CCF/CCF/IDL2/IDL2_LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL2/IDL2_Parser.hpp:
+ * CCF/CCF/IDL2/IDL2_SemanticAction.hpp:
+ * CCF/CCF/IDL2/IDL2_SemanticActionImpl.hpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree.cpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree.hpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree.tpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTreeFwd.hpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree_BuiltIn.cpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree_BuiltIn.hpp:
+ * CCF/CCF/IDL2/IDL2_SyntaxTree_Value.hpp:
+ * CCF/CCF/IDL2/IDL2_Traversal.cpp:
+ * CCF/CCF/IDL2/IDL2_Traversal.hpp:
+ * CCF/CCF/IDL2/MSVC_Pragmas.hpp:
+ * CCF/CCF/IDL2/Makefile:
+ * CCF/CCF/IDL3/IDL3.cpp:
+ * CCF/CCF/IDL3/IDL3.vcproj:
+ * CCF/CCF/IDL3/IDL3_LexicalAnalyzer.hpp:
+ * CCF/CCF/IDL3/IDL3_Parser.hpp:
+ * CCF/CCF/IDL3/IDL3_SemanticAction.hpp:
+ * CCF/CCF/IDL3/IDL3_SemanticActionImpl.hpp:
+ * CCF/CCF/IDL3/IDL3_SyntaxTree.cpp:
+ * CCF/CCF/IDL3/IDL3_SyntaxTree.hpp:
+ * CCF/CCF/IDL3/IDL3_SyntaxTreeFwd.hpp:
+ * CCF/CCF/IDL3/IDL3_SyntaxTree_EventType.cpp:
+ * CCF/CCF/IDL3/IDL3_SyntaxTree_EventType.hpp:
+ * CCF/CCF/IDL3/IDL3_Traversal.cpp:
+ * CCF/CCF/IDL3/IDL3_Traversal.hpp:
+ * CCF/CCF/IDL3/MSVC_Pragmas.hpp:
+ * CCF/CCF/IDL3/Makefile:
+ * CCF/External/Utility/Makefile:
+ * CCF/External/Utility/Version:
+ * CCF/External/Utility/Config/Archive.gcc.post.rules:
+ * CCF/External/Utility/Config/Archive.gcc.pre.rules:
+ * CCF/External/Utility/Config/Archive.post.rules:
+ * CCF/External/Utility/Config/Archive.pre.rules:
+ * CCF/External/Utility/Config/Documentation.post.rules:
+ * CCF/External/Utility/Config/Documentation.pre.rules:
+ * CCF/External/Utility/Config/Executable.gcc.post.rules:
+ * CCF/External/Utility/Config/Executable.gcc.pre.rules:
+ * CCF/External/Utility/Config/Executable.generic.post.rules:
+ * CCF/External/Utility/Config/Executable.generic.pre.rules:
+ * CCF/External/Utility/Config/Executable.post.rules:
+ * CCF/External/Utility/Config/Executable.pre.rules:
+ * CCF/External/Utility/Config/Recursion.post.rules:
+ * CCF/External/Utility/Config/Recursion.pre.rules:
+ * CCF/External/Utility/Config/Shared.gcc.post.rules:
+ * CCF/External/Utility/Config/Shared.gcc.pre.rules:
+ * CCF/External/Utility/Config/Shared.generic.post.rules:
+ * CCF/External/Utility/Config/Shared.generic.pre.rules:
+ * CCF/External/Utility/Config/Shared.post.rules:
+ * CCF/External/Utility/Config/Shared.pre.rules:
+ * CCF/External/Utility/Config/Thoughts:
+ * CCF/External/Utility/Documentation/Makefile:
+ * CCF/External/Utility/Documentation/News.html:
+ * CCF/External/Utility/Documentation/index.html:
+ * CCF/External/Utility/Documentation/ExH/Makefile:
+ * CCF/External/Utility/Documentation/ExH/Makefile.documentation:
+ * CCF/External/Utility/Documentation/ExH/News.html:
+ * CCF/External/Utility/Documentation/ExH/index.html:
+ * CCF/External/Utility/Documentation/ExH/Example/Makefile:
+ * CCF/External/Utility/Documentation/ExH/Logic/Makefile:
+ * CCF/External/Utility/Documentation/ExH/System/Makefile:
+ * CCF/External/Utility/Documentation/ReferenceCounting/Makefile:
+ * CCF/External/Utility/Documentation/ReferenceCounting/News.html:
+ * CCF/External/Utility/Documentation/ReferenceCounting/index.html:
+ * CCF/External/Utility/Documentation/Style/CXX.css:
+ * CCF/External/Utility/Documentation/Style/CXX_Blue.css:
+ * CCF/External/Utility/Documentation/Synch/Makefile:
+ * CCF/External/Utility/Documentation/Synch/News.html:
+ * CCF/External/Utility/Documentation/Synch/index.html:
+ * CCF/External/Utility/Documentation/Synch/Policy/Makefile:
+ * CCF/External/Utility/Utility/ExH/Compound.hpp:
+ * CCF/External/Utility/Utility/ExH/Compound.tpp:
+ * CCF/External/Utility/Utility/ExH/Converter.hpp:
+ * CCF/External/Utility/Utility/ExH/Converter.tpp:
+ * CCF/External/Utility/Utility/ExH/ExH.hpp:
+ * CCF/External/Utility/Utility/ExH/StringConverter.hpp:
+ * CCF/External/Utility/Utility/ExH/StringConverter.ipp:
+ * CCF/External/Utility/Utility/ExH/StringStreamConverter.hpp:
+ * CCF/External/Utility/Utility/ExH/StringStreamConverter.ipp:
+ * CCF/External/Utility/Utility/ExH/Logic/DescriptiveException.hpp:
+ * CCF/External/Utility/Utility/ExH/Logic/DescriptiveException.ipp:
+ * CCF/External/Utility/Utility/ExH/Logic/Exception.hpp:
+ * CCF/External/Utility/Utility/ExH/Logic/Exception.ipp:
+ * CCF/External/Utility/Utility/ExH/System/DescriptiveException.hpp:
+ * CCF/External/Utility/Utility/ExH/System/DescriptiveException.ipp:
+ * CCF/External/Utility/Utility/ExH/System/Exception.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/DefaultImpl.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/DefaultImpl.ipp:
+ * CCF/External/Utility/Utility/ReferenceCounting/ExternalLockImpl.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/ExternalLockImpl.ipp:
+ * CCF/External/Utility/Utility/ReferenceCounting/Interface.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/Interface.ipp:
+ * CCF/External/Utility/Utility/ReferenceCounting/Interface.tpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/ReferenceCounting.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/SmartPtr.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/SmartPtr.tpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/StrictPtr.hpp:
+ * CCF/External/Utility/Utility/ReferenceCounting/StrictPtr.tpp:
+ * CCF/External/Utility/Utility/Synch/Policy/Null.hpp:
+ * CCF/External/Utility/Utility/Synch/Policy/Null.ipp:
+ * CIDLC/CIDLC.sln:
+ * CIDLC/CIDLC.vcproj:
+ * CIDLC/ExecutorMapp:ingGenerator.cpp:
+ * CIDLC/ExecutorMapp:ingGenerator.hpp:
+ * CIDLC/Literals.hpp:
+ * CIDLC/Makefile:
+ * CIDLC/ServantGenerator.cpp:
+ * CIDLC/ServantGenerator.hpp:
+ * CIDLC/ServantHeaderGenerator.cpp:
+ * CIDLC/ServantHeaderGenerator.hpp:
+ * CIDLC/ServantSourceGenerator.cpp:
+ * CIDLC/ServantSourceGenerator.hpp:
+ * CIDLC/Version:
+ * CIDLC/cidlc.cpp:
+
+ Source code, documentation and build files for the
+ CIDL compiler.
+
+Fri May 30 18:18:25 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/*:
+
+ Removed all files in this directory from the repository except
+ DesignNotes, which will reappear in a new directory along with
+ other CIDL compiler checkins. The parser examples that were
+ in this directory are no longer useful or up to date. Soon
+ parts of the CIDL compiler will be checked into this directory.
+
+ * README:
+
+ New file.
+
+Fri May 30 17:41:05 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BMClosedED/BMClosedED_svnt.dsp:
+ * examples/OEP/BasicSP/BMDevice/BMDevice_svnt.dsp:
+ * examples/OEP/BasicSP/BMDisplay/BMDisplay_svnt.dsp:
+ * examples/OEP/BasicSP/EC/EC_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_svnt.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp:
+ * examples/OEP/Display/RateGen/RateGen_svnt.dsp:
+
+ Changed the location of the CIDL compiler executable to
+ CIAO_ROOT/bin for the MSVC projects.
+
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.h:
+
+ Removed these file from the repository - they are generated
+ and shouldn't have been checked in.
+
+Fri May 30 15:25:29 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/Display/Configuration-0.png:
+ * examples/OEP/Display/Display.dsw:
+ * examples/OEP/Display/HUDisplay.idl:
+ * examples/OEP/Display/HUDisplay.mpc:
+ * examples/OEP/Display/HUDisplay_stub.dsp:
+ * examples/OEP/Display/HUDisplay_stub_export.h:
+ * examples/OEP/Display/HUDisplay_svnt.dsp:
+ * examples/OEP/Display/HUDisplay_svnt_export.h:
+ * examples/OEP/Display/NOTE:
+ * examples/OEP/Display/README:
+ * examples/OEP/Display/cleanup_mpcfiles.cmd:
+ * examples/OEP/Display/GPS/GPS.cidl:
+ * examples/OEP/Display/GPS/GPS.idl:
+ * examples/OEP/Display/GPS/GPSEI.idl:
+ * examples/OEP/Display/GPS/GPS_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_exec.dsp:
+ * examples/OEP/Display/GPS/GPS_exec.h:
+ * examples/OEP/Display/GPS/GPS_exec_export.h:
+ * examples/OEP/Display/GPS/GPS_stub.dsp:
+ * examples/OEP/Display/GPS/GPS_stub_export.h:
+ * examples/OEP/Display/GPS/GPS_svnt.dsp:
+ * examples/OEP/Display/GPS/GPS_svnt_export.h:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.dsp:
+ * examples/OEP/Display/GPS/GPS_tracing_exec.h:
+ * examples/OEP/Display/GPS/config:
+ * examples/OEP/Display/NavDisplay/NavDisplay.cidl:
+ * examples/OEP/Display/NavDisplay/NavDisplay.idl:
+ * examples/OEP/Display/NavDisplay/NavDisplayEI.idl:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec.h:
+ * examples/OEP/Display/NavDisplay/NavDisplay_exec_export.h:
+ * examples/OEP/Display/NavDisplay/NavDisplay_stub.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_stub_export.h:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.cpp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.dsp:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt.h:
+ * examples/OEP/Display/NavDisplay/NavDisplay_svnt_export.h:
+ * examples/OEP/Display/NavDisplay/config:
+ * examples/OEP/Display/NavDisplay/run_test.pl:
+ * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/AddNavUnitCmd.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/Command.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/DetailView.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/MapView.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/MapView.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.dsp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavUnit.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NavUnit.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/NodeItem.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/QuitCmd.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/README:
+ * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/RootPanel.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/UpdatePositionCmd.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/Worker.cpp:
+ * examples/OEP/Display/NavDisplayGUI_exec/Worker.h:
+ * examples/OEP/Display/NavDisplayGUI_exec/trolltech.gif:
+ * examples/OEP/Display/NavDisplayGUI_exec/worldmap1.gif:
+ * examples/OEP/Display/NavDisplayGUI_exec/worldmap1.xpm:
+ * examples/OEP/Display/RateGen/RateGen.cidl:
+ * examples/OEP/Display/RateGen/RateGen.idl:
+ * examples/OEP/Display/RateGen/RateGenEI.idl:
+ * examples/OEP/Display/RateGen/RateGen_client.dsp:
+ * examples/OEP/Display/RateGen/RateGen_exec.cpp:
+ * examples/OEP/Display/RateGen/RateGen_exec.dsp:
+ * examples/OEP/Display/RateGen/RateGen_exec.h:
+ * examples/OEP/Display/RateGen/RateGen_exec_export.h:
+ * examples/OEP/Display/RateGen/RateGen_stub.dsp:
+ * examples/OEP/Display/RateGen/RateGen_stub_export.h:
+ * examples/OEP/Display/RateGen/RateGen_svnt.dsp:
+ * examples/OEP/Display/RateGen/RateGen_svnt_export.h:
+ * examples/OEP/Display/RateGen/client.cpp:
+ * examples/OEP/Display/RateGen/config:
+ * examples/OEP/Display/RateGen/controller.cpp:
+ * examples/OEP/Display/RateGen/controller.dsp:
+ * examples/OEP/Display/RateGen/run_test.pl:
+ * examples/OEP/Display/descriptors/CIAO_Installation_Data.ini:
+ * examples/OEP/Display/descriptors/DuelDisplay.cad:
+ * examples/OEP/Display/descriptors/GPS.csd:
+ * examples/OEP/Display/descriptors/GPS.ssd:
+ * examples/OEP/Display/descriptors/GPS_tracing.csd:
+ * examples/OEP/Display/descriptors/HUDisplay.cad:
+ * examples/OEP/Display/descriptors/HUDisplayGUI.cad:
+ * examples/OEP/Display/descriptors/NOTE.txt:
+ * examples/OEP/Display/descriptors/NavDisplay.csd:
+ * examples/OEP/Display/descriptors/NavDisplay.ssd:
+ * examples/OEP/Display/descriptors/NavDisplayGUI.csd:
+ * examples/OEP/Display/descriptors/RateGen.csd:
+ * examples/OEP/Display/descriptors/RateGen.ssd:
+ * examples/OEP/Display/descriptors/RemoteDisplay.cad:
+ * examples/OEP/Display/descriptors/RemoteDisplayGUI.cad:
+ * examples/OEP/Display/descriptors/test.dat:
+
+ New example, same as the one in examples/handcrafted/Display,
+ but using CIDL compiler generated code.
+
+Fri May 30 14:27:55 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * PROBLEM-REPORT-FORM (Subject): Fixed a typo.
+
+Fri May 30 14:15:45 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * VERSION:
+ * PROBLEM-REPORT-FORM (Subject): Files needed for the release.
+
+Fri May 30 14:11:11 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * ciao/Version.h: Changed the version info to be 0.3.1 instead of
+ 0.1.1. We want it to go the way ACE+TAO go.
+
+Fri May 30 13:57:26 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * Makefile: A new top level Makefile which will have the needed
+ information for the release.
+
+Fri May 30 12:29:37 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * examples/OEP/BasicSP/BasicSP.dsw:
+ * examples/OEP/BasicSP/BasicSP.idl:
+ * examples/OEP/BasicSP/BasicSP.mpc:
+ * examples/OEP/
+ files.
+
+ * examples/handcrafted/Display/HUDisplay_svnt.cpp:
+ * examples/handcrafted/Display/HUDisplay_svnt.inl:
+ * examples/handcrafted/Display/GPS/GPSE.idl:
+ * examples/handcrafted/Display/GPS/GPS_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_exec.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ * examples/handcrafted/Display/RateGen/RateGenE.idl:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.h:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ * examples/handcrafted/Display/RateGen/client.cpp:
+ * examples/handcrafted/Display/RateGen/controller.cpp:
+ * examples/handcrafted/Hello/client.cpp:
+ * examples/handcrafted/Hello/helloE.idl:
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Visitors.h:
+ * tools/Assembly_Deployer/Assembly_Visitors.inl:
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/ComponentServer/ComponentServer_test_client.cpp:
+ * tools/Daemon/controller_i.cpp:
+ * tools/Daemon/controller_i.h:
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Spec.cpp:
+ * tools/XML_Helpers/Assembly_Spec.inl:
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+ * tools/XML_Helpers/Softpkg_Handlers.cpp: Fixed compilation errors
+ and warnings. They include
+
+ Using a _var in places where a _ptr is expected.
+
+ Incorrect Capitalization of file names.
+
+ Unused variables warnings.
+
+ Exception throw specification mis-matches.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp: Propagated
+ previous fixes into the tempate code.
+
+ * ciao/Container_Base.cpp: Removed a redundant ACE_INLINE decl.
+
+Tue Apr 15 17:07:52 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Softpkg_Handlers.h:
+ * tools/XML_Helpers/XMLHelpers.mpc:
+ * tools/XML_Helpers/XML_Utils.h:
+ * tools/XML_Helpers/XML_Helpers_Export.h: Refactored these files
+ to make them into a library.
+
+ * tools/XML_Helpers/XML_Helpers.dsw:
+ * tools/XML_Helpers/Helper_Test.dsp:
+ * tools/Daemon/CIAO_Daemon.dsp:
+ * tools/Daemon/Daemon.dsw:
+ * tools/Daemon/DaemonController.dsp: Removed these project files
+ and depend solely on MPC generated files.
+
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+ * tools/Daemon/Daemon.mpc: Updated MPC files to link with the new
+ XML_Helpers library.
+
+Tue Apr 15 11:07:36 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Daemon.idl:
+ * ciao/Daemon_Impl.h:
+ * ciao/Daemon_Impl.inl:
+ * ciao/Daemon_Impl.cpp:
+ * tools/Daemon/Daemon.idl:
+ * tools/Daemon/Daemon_Impl.h:
+ * tools/Daemon/Daemon_Impl.inl:
+ * tools/Daemon/Daemon_Impl.cpp:
+ * ciao/CCM_Core.mpc:
+ * ciao/CIAO_Server.dsp:
+ * tools/Daemon/CIAO_Daemon.dsp:
+ * tools/Daemon/Daemon.mpc:
+ * tools/Daemon/DaemonController.dsp: Moved Daemon idl file and
+ implementations out of CIAO_Server library into Daemon
+ implemenation.
+
+ Removed HomeRegistrar related files from the projects of the
+ CIAO_Server library. They need to be moved a a proper place in
+ the near future.
+
+ * docs/todo.html: Document other refactoring needed in the
+ CCM_Core libraries.
+
+Mon Apr 14 17:06:37 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/HUDisplay_svnt.cpp:
+ * examples/handcrafted/Display/HUDisplay_svnt.h:
+ * examples/handcrafted/Display/GPS/GPS_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_exec.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/GPS/GPS_svnt.h:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.h:
+ * examples/handcrafted/Display/RateGen/client.cpp:
+ * examples/handcrafted/Display/RateGen/controller.cpp:
+ * examples/handcrafted/Display/RateGen/run_test.pl:
+ * examples/handcrafted/Display/descriptors/NOTE.txt: Updated
+ docuemntation. Changed to inherit Pulse_Handler from
+ ACE_Task_Base. Reworked controller.cpp so that it won't look
+ like the process that actually generates the events.
+
+Mon Apr 14 14:57:51 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/RateGen/controller.cpp: Changed to
+ perform only one action in each exection of this program. I.e.,
+ it either switch on or off the RateGen component and exit
+ immediately. This is to avoid the mis-conception that the
+ controller actually generates the Rate.
+
+Sat Apr 12 12:36:08 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * CIDLC/parser_examples/cidl/cidl.vcproj:
+ * CIDLC/parser_examples/idl2/idl2.vcproj:
+ * CIDLC/parser_examples/idl3/idl3.vcproj: Changed the extra
+ include paths from:
+
+ ..,../spirit-1.3.0,../spirit-1.3.0/miniboost
+
+ to:
+
+ ..,$(SPIRIT_DIR),$(SPIRIT_DIR)/miniboost
+
+ to be consistent with the MPC files and to decouple Spirit from
+ CIAO's directory strucutre.
+
+Sat Apr 12 10:48:13 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.inl: Incorporated
+ changes for fixing gcc compilation warnings.
+
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/ComponentServer/ComponentServer_test_client.cpp:
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp: Added
+ misiing newlines in usage messages.
+
+Sat Apr 12 01:25:35 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * CIDLC/parser_examples/README:
+ * CIDLC/parser_examples/cidl/cidl.mpc:
+ * CIDLC/parser_examples/idl2/idl2.mpc:
+ * CIDLC/parser_examples/idl3/idl3.mpc: Added new MPC files to take
+ advantage of MPC/MWC tool. Updated the README to provide some
+ minimal instructions.
+
+Tue Apr 8 23:10:43 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/parser_examples/README:
+ * CIDLC/parser_examples/parser_examples.sln:
+ * CIDLC/parser_examples/cidl/cidl.cpp:
+ * CIDLC/parser_examples/cidl/cidl.vcproj:
+ * CIDLC/parser_examples/cidl/cidl_grammar.cpp:
+ * CIDLC/parser_examples/cidl/cidl_grammar.h:
+ * CIDLC/parser_examples/cidl/hello.cidl:
+ * CIDLC/parser_examples/idl2/idl2.cpp:
+ * CIDLC/parser_examples/idl2/idl2.vcproj:
+ * CIDLC/parser_examples/idl2/idl2_grammar.cpp:
+ * CIDLC/parser_examples/idl2/idl2_grammar.h:
+ * CIDLC/parser_examples/idl2/test_idl2.idl:
+ * CIDLC/parser_examples/idl3/idl3.cpp:
+ * CIDLC/parser_examples/idl3/idl3.vcproj:
+ * CIDLC/parser_examples/idl3/idl3_grammar.cpp:
+ * CIDLC/parser_examples/idl3/idl3_grammar.h:
+ * CIDLC/parser_examples/idl3/test_idl3.idl:
+
+ Added parser examples (IDL2, IDL3, and CIDL) using the Spirit
+ parser.
+
+Tue Apr 08 19:42:16 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: Fixed
+ a class name mismatch.
+
+Mon Apr 07 21:20:37 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/ServerActivator_Impl.cpp: Fixed a couple of compilation
+ warnings with gcc.
+
+ * ciao/CIAO_Client.dsp:
+ * ciao/CIAO_Container.dsp:
+ * ciao/CIAO_Server.dsp: Turned on RTTI to sync up with the new Any
+ implementation.
+
+ * ciao/CIAO_common.h:
+ * ciao/Cookies.cpp: Fixed the use of old CORBA_* types. They are
+ no longer available in the newer version of ACE/TAO.
+
+Sun Apr 06 20:36:39 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/CIAO_Installation_Data.ini:
+ * examples/handcrafted/Display/HUDisplay.cad:
+ * examples/handcrafted/Display/GPS/GPS.csd:
+ * examples/handcrafted/Display/GPS/GPS.ssd:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.csd:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.ssd:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.csd:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.ssd:
+ * examples/handcrafted/Display/RateGen/RateGen.csd:
+ * examples/handcrafted/Display/RateGen/RateGen.ssd: Removed these
+ files as they have already been moved to the
+ examples/handcrafted/Display/descriptors/ subdirectory.
+
+ * examples/handcrafted/Display/NOTE: Updated obsolete notes.
+
+ Thanks to Andrey Nechypurenko
+ <Andrey.Nechypurenko@mchp.siemens.de> for the following
+ changes. He reported, motivated or sent patches for them.
+
+ * examples/handcrafted/Display/descriptors/NOTE.txt: Fixed several
+ typos.
+
+ * examples/handcrafted/Display/descriptors/DuelDisplay.cad:
+ * examples/handcrafted/Display/descriptors/GPS_tracing.csd:
+ * examples/handcrafted/Display/descriptors/HUDisplayGUI.cad:
+ * examples/handcrafted/Display/descriptors/RemoteDisplayGUI.cad:
+ Updated these assembly descriptors to use the new GPS component
+ that emulate a trace (instead of the random coordinates).
+
+ * examples/handcrafted/Display/NavDisplay/client.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/run_test.pl:
+ Removed these testing artifacts because NavDisplay component
+ requires other component to function properly.
+
+ * tools/XML_Helpers/Assembly_Spec.inl: Fixed VC7.1 compilation
+ error.
+
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_tracing_exec.h: Added a
+ new implementation for the GPS component. This implementation
+ simulates coordinates of a trace instead of some random
+ positions.
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ Please find in attachment slightly modified version of
+ NavDisplayGUI. I have modified it slightly mainly in order to
+ let the GUI component to find background and animation images
+ either based on ACE_ROOT or using ../NavDisplayGUI_exec/.
+
+ * examples/handcrafted/Display/NavDisplayGUI_exec/README: Removed
+ the mentioning of run_test.pl. It's no longer valid.
+
+Sat Apr 05 20:08:27 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CCM_Deployment.idl:
+ * ciao/Component_Base.idl:
+ The operation Components::Deployment::Assembly::build can throw
+ CreateFailure exception. It was missing in the IDL files.
+
+ * ciao/Server_init.cpp:
+ Register OBV factory for CIAO::Cookie also.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ Made sure we duplicate the object reference before adding them
+ to subscriber/connection active maps.
+
+ * examples/handcrafted/Display/HUDisplay.idl:
+ * examples/handcrafted/Display/HUDisplay.mpc:
+ * examples/handcrafted/Display/HUDisplay_svnt.h:
+ * examples/handcrafted/Display/HUDisplay_svnt.inl:
+ * examples/handcrafted/Display/GPS/GPS_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_exec.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ Updated the example to support 2-dimentional position interface.
+ Also fixed the reference counting problem in the servant glue
+ code.
+
+
+ * examples/handcrafted/Display/RateGen/controller.cpp:
+ Added a new
+
+ * examples/handcrafted/Display/descriptors/HUDisplay.cad:
+ * examples/handcrafted/Display/descriptors/HUDisplayGUI.cad:
+ * examples/handcrafted/Display/descriptors/RemoteDisplay.cad:
+ * examples/handcrafted/Display/descriptors/RemoteDisplayGUI.cad:
+ Added variety of different composition example. See NOTE.txt
+ under the same directory for more information.
+
+ * examples/handcrafted/Display/descriptors/test.dat:
+ Added a "Remote" entry so showcase how to deploy a system across
+ several machines.
+
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.h:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Visitors.h:
+ Added support for establishing connections according to
+ Assembly_Spec.
+
+ * tools/Assembly_Deployer/Assembly_Service.idl:
+ * tools/Assembly_Deployer/Assembly_Service_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Service_Impl.h:
+ Added a simple interface in an attempt to solve the unreliable
+ shutdown problem.
+
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.h:
+ * tools/XML_Helpers/Assembly_Handlers.inl:
+ * tools/XML_Helpers/Assembly_Spec.cpp:
+ * tools/XML_Helpers/Assembly_Spec.h:
+ Fixed "connectevent" parsing. I had the "source" and
+ "destination" interface reversed.
+
+Fri Apr 04 22:40:11 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/descriptors/*: Moved all XML
+ descriptors and deployment configuration into this newly created
+ subdirectory to simply procedures to test this example.
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp:
+ Changed to thow a BAD_INV_ORDER exception is the receptacle is
+ not connected instead of a MSVC structural exception.
+
+ * tools/Daemon/Daemon.mpc:
+ * tools/Daemon/DaemonController.dsp:
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Spec.cpp:
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Assembly_Spec.inl:
+ * tools/Assembly_Deployer/Assembly_Deployer.cpp:
+ * tools/Assembly_Deployer/Assembly_Deployer.mpc:
+ * tools/Assembly_Deployer/Assembly_Impl.cpp:
+ * tools/Assembly_Deployer/Assembly_Impl.h:
+ * tools/Assembly_Deployer/Assembly_Impl.inl:
+ * tools/Assembly_Deployer/Assembly_Manager.cpp:
+ * tools/Assembly_Deployer/Assembly_Visitors.h:
+ * tools/Assembly_Deployer/Assembly_Visitors.inl:
+ * tools/Assembly_Deployer/Deployment_Configuration.cpp:
+ * tools/Assembly_Deployer/Deployment_Configuration.h:
+ * tools/Assembly_Deployer/Deployment_Configuration.inl: Added more
+ support for component installation when building an Assembly.
+
+Thu Apr 03 15:08:20 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Assembly_Impl.*:
+ * tools/Assembly_Deployer/Assembly_Impl.*: Moved the Assembly
+ implementaiton files to the tools/Assembly_Deployer/ directory.
+
+ * ciao/CCM_Core.mpc:
+ * ciao/CIAO_Server.dsp: Removed Assembly_Impl.*.
+
+Thu Apr 03 13:11:49 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Assembly_Handlers.h:
+ * tools/XML_Helpers/Assembly_Handlers.cpp: Added support for parsing
+ component and home registering info. Otherwise, it'd be hard to
+ use a composed application.
+
+Wed Apr 02 17:08:00 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/XML_Helpers/Assembly_Handlers.cpp:
+ * tools/XML_Helpers/Assembly_Handlers.h:
+ * tools/XML_Helpers/Assembly_Handlers.inl:
+ * tools/XML_Helpers/Assembly_Spec.cpp:
+ * tools/XML_Helpers/Assembly_Spec.h:
+ * tools/XML_Helpers/Assembly_Spec.inl:
+ * tools/XML_Helpers/Helper_Test.dsp: Added implementations for
+ handling componentassembly XML documents and building the
+ assembly specification information. These handlers currently
+ process only "crucial" information needed to get a system up and
+ running, i.e., they do not yet extract all types of information
+ in a componentassembly document.
+
+ Also important is that all XML handlers in CIAO assume all XML
+ documents they process are valid and well-formed. ACEXML
+ currently does not validate XML document yet. Therefore, you
+ need to validate the XML documents using other XML parser (such
+ as msxml) shall CIAO's assembly parsing behave strangely as the
+ handlers assume a validator has already taken up most of the
+ checking responsibility.
+
+ * tools/XML_Helpers/Softpkg_Handlers.cpp:
+ * tools/XML_Helpers/Softpkg_Handlers.h:
+ * tools/XML_Helpers/Softpkg_Handlers.inl:
+ * tools/XML_Helpers/XML_Utils.cpp:
+ * tools/XML_Helpers/XML_Utils.h: Added a new
+ parse_componentassembly utility function and moved some of the
+ helper functions out of Softpkg_Handlers.
+
+ * tools/XML_Helpers/main.cpp:
+
+ * bin/generate_component_mpc.pl: Added dependent library to the
+ list of libraries client program links to.
+
+ * docs/XML/componentassembly.dtd: Fixed a typo in DTD definition.
+
+ * examples/handcrafted/Display/HUDisplay.cad: Added a
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplay/client.cpp:
+ * examples/handcrafted/Display/NavDisplay/run_test.pl: Added a
+ client program to test the component.
+
+ * examples/handcrafted/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/AddNavUnitCmd.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/Command.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/DetailView.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/MapView.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayEIC.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.csd:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI.ssd:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavUnit.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NavUnit.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NodeItem.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/NodeItem.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/QuitCmd.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/QuitCmd.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/README:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/RootPanel.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/RootPanel.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/UpdatePositionCmd.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/Worker.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/Worker.h:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/moc_DetailView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/moc_MapView.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/moc_NodeItem.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/moc_RootPanel.cpp:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/run_test.pl:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/trolltech.gif:
+ * examples/handcrafted/Display/NavDisplayGUI_exec/worldmap1.gif:
+ Added a Qt GUI based component to showcase how we can
+ reconfigure a system using different component easily. Thanks
+ to Andrey Nechypurenko <andreynech@mchp.siemens.com> for
+ contributing the implementation.
+
+ * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added
+ deployment information for the new GUI NavDisplay component
+ implementation.
+
+ * examples/handcrafted/Hello/client.dsp:
+ * examples/handcrafted/Hello/hello_executors.dsp:
+ * examples/handcrafted/Hello/hello_servants.dsp:
+ * examples/handcrafted/Hello/hello_stub.dsp: Hmm, I probably
+ checked in the MPC/MWC generated project accidentally. :)
+
+Mon Mar 24 16:17:21 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp:
+ Added implementation for servant factory methods. Thanks to
+ Andrey Nechypurenko <andreynech@yahoo.com> for reporting this.
+
+Fri Mar 21 15:51:57 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/new_components.html: Revised naming convention for
+ user-defined component executor impl IDL.
+
+ * bin/generate_component_mpc.pl: Added an option for adding
+ user-defined component executor impl IDL automatically,
+ according the the naming convention. Fixed the dependencies to
+ "dependent" libraries.
+
+ * examples/handcrafted/Display/RateGen/RateGen.csd:
+ * examples/handcrafted/Display/RateGen/RateGen.ssd: Simplified the
+ XML descriptors.
+
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Display/RateGen/RateGenEI.idl:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.h: Fixed
+ dependencies and naming convention.
+
+ * examples/handcrafted/Display/GPS/GPS.csd:
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/GPS/GPS.ssd:
+ * examples/handcrafted/Display/GPS/GPSEI.idl:
+ * examples/handcrafted/Display/GPS/GPS_exec.cpp:
+ * examples/handcrafted/Display/GPS/GPS_exec.h:
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.csd:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.ssd:
+ * examples/handcrafted/Display/NavDisplay/NavDisplayEI.idl:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec.h:
+
+ * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added
+ component implementaions for GPS and NavDisplay.
+
+Thu Mar 20 21:50:07 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/ComponentInstallation_Impl.cpp: Added a more comprehensive
+ error printout.
+
+ * docs/index.html: Fixed a broken link.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h: Added the servant
+ factory entry point function that I missed.
+
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.h: Fixed up
+ the servant DLL entry point.
+
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen_comp.idl:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.h: Added the
+ actual implementation for component executor.
+
+ * examples/handcrafted/Display/CIAO_Installation_Data.ini: Added
+ this deployment datafile. This file will contain information
+ describing all the components used in this example.
+
+ * examples/handcrafted/Display/RateGen/RateGen.csd:
+ * examples/handcrafted/Display/RateGen/RateGen.ssd: Added XML
+ component descriptors.
+
+ * examples/handcrafted/Display/RateGen/client.cpp: Added a test
+ client program.
+
+ * examples/handcrafted/Display/RateGen/run_test.pl: Added a test
+ script to test out this single component.
+
+ * tools/ComponentServer/ComponentServer_test_client.cpp: Changed
+ the client program to debug RateGen component. We need to make
+ this test client more robust so we can use it to debug different
+ component implementations more easily.
+
+Tue Mar 18 16:36:07 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl:
+ * examples/handcrafted/Display/HUDisplay.mpc:
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc: Updated the
+ script and regenerated mpc file to record the original options
+ used to generate the MPC files.
+
+ * examples/handcrafted/Display/NOTE: Added more info on how to
+ generate Makefiles/Projects for this example.
+
+ * examples/handcrafted/Display/RateGen/RateGen.idl: Fixed a typo.
+
+ * examples/handcrafted/Display/RateGen/RateGen_Impl.idl:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_exec.h: Added the
+ actual component and home implementations. This particular
+ component implementation shows how to suppoort SessionComponent
+ interface in a component implementation (you will need to do
+ that for any non-trivial component implementations that require
+ to access component-specific context.)
+
+Tue Mar 18 12:03:29 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Renamed various
+ "_ciao_deactivate*" operations to "ciao_passivate*" to be more
+ consistent with the CC* opertions.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/GPS/GPS_svnt.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.inl:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.h:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.inl:
+ Propagated the SessionComponent opertion support to CIDL
+ templates and the multiple component example "generated" files.
+
+Mon Mar 17 23:10:47 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Added support for
+ SessionComponent specific operations,
+ ccm_{activate,passivate,remove}. These changes still need to be
+ propagated to the CIDL templates.
+
+ We also need to review how Deployment::Container and CCMHome
+ manage the lifecyles of homes, components, and facet servants.
+
+Sun Mar 16 21:57:10 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * examples/handcrafted/Display/GPS/GPS_svnt.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.inl:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.h:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.inl: Added
+ code to support SessionComponent::set_session_context operation
+ and make sure the Context objects also inherit from
+ TAO_Local_RefCounted_Object.
+
+ * examples/handcrafted/Hello/helloE.idl:
+ * examples/handcrafted/Hello/hello_executors.h:
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Changed to implement
+ component specific context as a SessionContext, plus the
+ aforementioned changes.
+
+Sun Mar 16 11:43:20 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/ConfigValues.html:
+ * docs/index.html: Updated the main document entry page. It is
+ grossly outdated.
+
+ * tools/ComponentServer/ComponentServer.mpc:
+ * tools/Daemon/Daemon.mpc:
+ * tools/ServerActivator/ServerActivator.mpc:
+ * tools/XML_Helpers/XMLHelpers.mpc: Added more mpc files.
+
+Sat Mar 15 11:43:34 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Makefile:
+ * ciao/Makefile.client:
+ * ciao/Makefile.container:
+ * ciao/Makefile.server: Removed Makefiles. I depend on MPC files
+ exclusively at the moment.
+
+ * ciao/Assembly_Impl.cpp:
+ * ciao/Assembly_Impl.h:
+ * ciao/CCM_Core.mpc:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Container_Impl.h:
+ * ciao/Daemon_Impl.h:
+ * ciao/Object_Set_T.cpp:
+ * ciao/ServerActivator_Impl.h: Fixed Linux build errors. Some
+ warnings are not fixed due to incomplete implementations and I
+ want to make sure they got addressed in some future point.
+
+Fri Mar 14 23:19:52 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CCM_Core.mpc: Updated the core MPC file to reflect recent
+ added files.
+
+Fri Mar 14 16:08:22 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/todo.html: Recorded a compilation error in the generated
+ code that I commented out for later "study."
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.idl: Fixed a
+ typo.
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplayE.idl:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.cpp:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt.inl:
+ Added new "generated" code.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * docs/templates/Executor.idl: Updated templates based on the code
+ they generated.
+
+Thu Mar 13 20:11:49 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.idl:
+ * examples/handcrafted/Display/GPS/GPS.idl:
+ * examples/handcrafted/Display/Configuration-0.png: Updated the
+ port names so they make more sense in the context. Thanks to
+ Dave Sharp and Wendy Rolls for the suggestions.
+
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.h: Added the
+ missing factory entry point for the servant home.
+
+ * examples/handcrafted/Display/GPS/GPSE.idl:
+ * examples/handcrafted/Display/GPS/GPS_svnt.cpp:
+ * examples/handcrafted/Display/GPS/GPS_svnt.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt.inl: Added new
+ "generated" code.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * docs/templates/Executor.idl: Updated templates based on the code
+ they generated (manually. Did I mention how much fun it was to
+ generate code manually?)
+
+Wed Mar 12 23:29:27 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: Fixed an incomplete library
+ expansion and added a flag to specify library path
+ dependencies.
+
+ * docs/releasenotes.html: Updated the status of single component
+ deployment capability. I forgot to do that when it was done.
+
+ * examples/handcrafted/Display/NOTE: Added directions on how to
+ generate various mpc files.
+
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc: Regenerated
+ MPC files to fix incomplete dependent library names and to add
+ library path dependencies.
+
+ * examples/handcrafted/Display/HUDisplay.idl:
+ * examples/handcrafted/Display/RateGen/RateGen.idl:
+ * examples/handcrafted/Display/HUDisplayE.idl:
+ * examples/handcrafted/Display/RateGen/RateGenE.idl: Moved the
+ opmode interface definition from RateGen.idl back to
+ HUDisplay.idl. This interface is a supported interface of
+ RateGen but it should be viewed as a shared interface.
+
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.cpp:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.h:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt.inl: Added
+ more handcrafted servant glue code for RateGen component.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * docs/templates/Executor.idl: Updated and fixed CIDL template
+ code based on results from using these templates manually.
+
+Wed Mar 12 00:03:56 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/HUDisplay_svnt.h:
+ * examples/handcrafted/Display/HUDisplay_svnt.cpp: Added forgotten
+ _get_component implementation.
+
+Tue Mar 11 22:47:06 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/HUDisplayE.idl: Removed redundant
+ operations that have already been defined in the facet interface.
+
+ * examples/handcrafted/Display/HUDisplay_svnt.cpp:
+ * examples/handcrafted/Display/HUDisplay_svnt.h:
+ * examples/handcrafted/Display/HUDisplay_svnt.inl: Added hand
+ generated code based on the glue code template in
+
+ docs/templates/
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl: Updated template
+ code based on results from hand generated code.
+
+Tue Mar 11 15:18:52 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: Added this new to auto-generate
+ the mpc files for a single component implementation. The mpc
+ file generated by the script should work for most simple
+ component implementation, without modification and can serve as
+ a template for more complicated ones. This script also
+ generates hints that can be fed back to a shell to create the
+ necessary export definition files.
+
+ * docs/todo.html: Added improvement items that can be done for
+ generate_component_mpc.pl.
+
+ * bin/gen_export_files.cmd: Removed. The new
+ generate_component_mpc script provides more accurate hints on
+ how to create export files.
+
+
+ Renamed and reorganized all files in the following
+ multi-component example according to the guideline I set in
+ docs/new_component.html.
+
+ * examples/handcrafted/Display/Display.mpc:
+ * examples/handcrafted/Display/HUD_skel_export.h:
+ * examples/handcrafted/Display/HUD_stub_export.h:
+ * examples/handcrafted/Display/GPS/GPS_skel_export.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_skel_export.h:
+ * examples/handcrafted/Display/RateGen/RateGen_skel_export.h:
+ Removed.
+
+ * examples/handcrafted/Display/HUDisplay.mpc:
+ * examples/handcrafted/Display/HUDisplay_stub_export.h:
+ * examples/handcrafted/Display/HUDisplay_svnt_export.h:
+ * examples/handcrafted/Display/GPS/GPS_exec_export.h:
+ * examples/handcrafted/Display/GPS/GPS_svnt_export.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_exec_export.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_svnt_export.h:
+ * examples/handcrafted/Display/RateGen/RateGen_exec_export.h:
+ * examples/handcrafted/Display/RateGen/RateGen_svnt_export.h:
+ Modified.
+
+ * examples/handcrafted/Display/HUDisplay.idl:
+ * examples/handcrafted/Display/HUDisplayE.idl:
+ * examples/handcrafted/Display/GPS/GPS.mpc:
+ * examples/handcrafted/Display/GPS/GPS_stub_export.h:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.mpc:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay_stub_export.h:
+ * examples/handcrafted/Display/RateGen/RateGen.idl:
+ * examples/handcrafted/Display/RateGen/RateGen.mpc:
+ * examples/handcrafted/Display/RateGen/RateGen_stub_export.h:
+ Added.
+
+Tue Mar 11 11:41:39 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * bin/generate_component_mpc.pl: Added a MPC file generater perl
+ script for creating new MPC definitions for single component
+ implementations.
+
+Sun Mar 09 14:38:59 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/new_components.html: Added this new document to describe
+ files involved in creating a new components.
+
+ * docs/com-impl.html: Added a link to the new component
+ implementation. document
+
+ * docs/imgs/File-Gen-Existing.png:
+ * docs/imgs/File-Gen-Future.png:
+ * docs/imgs/File_Generation_Flow.vsd: Updated the tools/files
+ collaboration diagram to reflect the latest plan.
+
+ * examples/handcrafted/Hello/hello.mpc: Updated the MPC file to
+ make sure it works properly. We need to figure out a way to
+ auto-generate a template of this file.
+
+Thu Mar 06 20:29:42 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ The following changes integrate the XML parsing of softpkg
+ descriptors with the daemon management framework so we can now
+ instantiate and test a single component implementation using
+ its softpkg descriptor.
+
+ * ciao/ComponentServer_Impl.cpp:
+ * ciao/ComponentServer_Impl.h:
+ * ciao/ComponentServer_Impl.inl: Added a cached
+ ComponentInstallation reference so we can pass it to the
+ containers this ComponentServer creates.
+
+ * ciao/Container_Impl.cpp:
+ * ciao/Container_Impl.h: Added an extra argument in init for
+ taking in the ComponentInstallation reference. Also modified
+ the install_home related mechanisms to use ComponentInstallation
+ interface to acquire the actual implementation "locations".
+
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+ * tools/ComponentServer/ComponentServer_test_client.cpp: Changed
+ to use UUID.
+
+ * tools/XML_Helpers/Cascadable_DocHandler.h: Removed a redundant
+ export decl.
+
+ * tools/Daemon/DaemonController.dsp: Added files from the
+ XML_Helpers directories for the added XML handling capability.
+
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/Softpkg_Commands.cpp:
+ * tools/Daemon/Softpkg_Commands.h: Added new commands to start and
+ terminate ComponentServer for running one component home.
+
+ * examples/handcrafted/Hello/CIAO_Installation_Data.ini:
+ * examples/handcrafted/Hello/client.cpp:
+ * examples/handcrafted/Hello/hello.ssd:
+ * examples/handcrafted/Hello/run_test.pl: Changed and set up the
+ test to start up a ComponentServer via Daemon.
+
+Wed Mar 05 21:43:44 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ Moved all Daemon controller related classes into CIAO::Daemon_i
+ namespace.
+
+ * tools/Daemon/Softpkg_Commands.cpp:
+ * tools/Daemon/Softpkg_Commands.h:
+ * tools/Daemon/Softpkg_Commands.inl: Added two new "start_home"
+ and "end_home" command for starting up and shutting down a
+ ComponentServer for a single component home. Still need
+ implementation.
+
+ * tools/Daemon/DaemonController.cpp:
+ * tools/Daemon/DaemonController.dsp:
+
+ * tools/Daemon/controller_i.cpp:
+ * tools/Daemon/controller_i.h:
+ * tools/Daemon/controller_i.inl:
+ * tools/Daemon/Daemon_Commands.cpp:
+ * tools/Daemon/Daemon_Commands.h:
+ * tools/Daemon/Daemon_Commands.inl: Moved most of the Daemon
+ controlling commands into this file.
+
+Tue Mar 04 20:40:21 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/RateGen/RateGenE.idl: Fixed a typo.
+ Thanks to Jeff Gray <gray@cis.uab.edu> for pointing it out.
+
+Thu Feb 27 22:15:48 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/ComponentServer_Impl.h: Fixed a cut-n-paste error in a comment.
+
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/ServerActivator_Impl.h: Changed to cache an IOR to
+ the ComponentInstallation interface and pass the IOR with
+ -ORBInitRef option to the ComponentServer. We will need it when
+ installing a component home in the container.
+
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Removed inheriting
+ the component specific context from the SessionContext local
+ interface. This component example should be run as Service
+ component, not Session component.
+
+ * tools/ServerActivator/README:
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/ServerActivator/ServerActivator.cpp: Changed to propagate
+ the ComponentInstallation somehow.
+
+ * tools/ServerActivator/ServerActivator_test_client.cpp: Removed a
+ redundant $Id$ tag.
+
+Sat Feb 22 23:45:52 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/releasenotes.html:
+ * docs/todo.html: Updated information regarding different
+ component deployment schemes.
+
+ * examples/handcrafted/Hello/hello.csd:
+ * examples/handcrafted/Hello/hello.ssd: Fixed syntax errors.
+
+ * tools/XML_Helpers/Softpkg_Handlers.cpp:
+ * tools/XML_Helpers/Softpkg_Handlers.h:
+ * tools/XML_Helpers/Softpkg_Handlers.inl:
+ * tools/XML_Helpers/XML_Utils.cpp:
+ * tools/XML_Helpers/XML_Utils.h:
+ * tools/XML_Helpers/XML_Utils.inl: Added these new file to extract
+ necessary information to install the component specified in a
+ .csd (component softpkg descriptor) file. The
+ Softpkg_Handlers.* contain the XML Handler(s) for parsing the
+ csd document and XML_Utils.* contain the file Assembly tools can
+ use to extract the needed info. Notice that the XML handler
+ currently don't do a lot of validation.
+
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+ * tools/XML_Helpers/Cascadable_DocHandler.h:
+ * tools/XML_Helpers/Cascadable_DocHandler.i: Added error handling
+ functions and allows it to accept a Locator from the parser to
+ show error location.
+
+ * tools/XML_Helpers/Svcconf.dsp:
+ * tools/XML_Helpers/Svcconf.dsw: Renamed these files to the
+ following:
+
+ * tools/XML_Helpers/XMLHelpers.dsp:
+ * tools/XML_Helpers/Helper_Test.dsw:
+ * tools/XML_Helpers/main.cpp: Added new files into the project
+ file and changed the project and workspace name.
+
+
+Thu Feb 20 22:15:08 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ Manually generated the following XML descriptors. These are the
+ minimum to install a component. Currently, I just get the UUID
+ using win32's UUIDGEN or GUIDGEN.
+
+ * examples/handcrafted/Hello/hello.csd: Component softpkg descriptor.
+
+ * examples/handcrafted/Hello/hello.ssd: CIAO's servant softpkg
+ descriptor.
+
+ * examples/handcrafted/Hello/hello.ccd: CORBA component descriptor.
+
+Wed Feb 19 13:30:19 2003 Boris Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * CIDLC/DesignNotes: Reorganized stuff a bit again and added some
+ comments on Jeff's comments.
+
+Mon Feb 17 17:47:55 2003 Boris Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * CIDLC/DesignNotes: Reorganized stuff a bit and added some new
+ ideas/notes.
+
+Sun Feb 16 21:30:42 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/releasenotes.html: Updated release info with the following.
+
+ * ciao/ComponentInstallation_Impl.cpp:
+ * ciao/ComponentInstallation_Impl.h: Fixed a problem of empty
+ persistent backing store file. I need to store the
+ configuration data under a subsection (as oppose to the root
+ section.)
+
+ * ciao/CIAO_Server.dsp:
+ * ciao/Daemon.idl:
+ * ciao/Daemon_Impl.cpp:
+ * ciao/Daemon_Impl.h:
+ * ciao/Daemon_Impl.inl: Added a generic server process control
+ interface that provides operations to query available service
+ interfaces and to shutdown the server process.
+
+ * tools/Daemon/CIAO_Daemon.cpp:
+ * tools/Daemon/CIAO_Daemon.dsp:
+ * tools/Daemon/CIAO_Installation_Data.ini:
+ * tools/Daemon/Daemon.dsw:
+ * tools/Daemon/README:
+ * tools/Daemon/DaemonController.cpp:
+ * tools/Daemon/DaemonController.dsp:
+ * tools/Daemon/controller_i.cpp:
+ * tools/Daemon/controller_i.h:
+ * tools/Daemon/controller_i.inl: Added new per-host CIAO_Daemon
+ implementaion which offer both ComponentInstallation interface
+ which manages the local component implementation cache, and
+ ServerActivator interface which the Assembly framework interacts
+ with to spawn new ComponentServer processes. See the README
+ file in this directory and releasenotes.html for more details.
+
+ There's also a DaemonController tool which provides a command
+ line interface to control the daemon process and to interact
+ with ComponentInstallation and ServerActivation interfaces.
+
+Sat Feb 15 22:54:11 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CIAO_Server.dsp:
+ * ciao/ComponentInstallation_Impl.cpp:
+ * ciao/ComponentInstallation_Impl.h:
+ * ciao/ComponentInstallation_Impl.inl: Filled in the
+ implementation for ComponentInstallation interface. We
+ currently only provide a naive implemntation for this
+ interface. It currently manages the pathnames to various
+ component implementations so a Container can fetch a
+ implementation from its UUID.
+
+ * examples/handcrafted/Hello/hello_servants.dsp: Added CIAO_server
+ to the list of link libraries. I need to move the base
+ container implementation from the CIAO_Server library to
+ CIAO_Container library.
+
+Fri Feb 14 23:15:39 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/todo.html: Added info on why the Assembly tools should
+ be responsible of the act of home registration.
+
+ * ciao/Container_Impl.cpp:
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/ComponentServer_Impl.cpp: Changed the use of ACE_NEW_RETURN
+ to ACE_NEW_THROW_EX.
+
+ * ciao/ComponentServer_Impl.h: Cosmetic changes.
+
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Fixed <unsubscribe>
+ signature based on RTF 1.1.
+
+ * tools/ComponentServer/ComponentServer.cpp: Added comments
+ explaining why we are not init'ing the component server right
+ now.
+
+ * tools/ServerActivator/README:
+ * examples/handcrafted/Hello/client.cpp:
+ * tools/ServerActivator/ServerActivator_test_client.cpp: Forced in
+ hack to test out installing the HelloWorldHome using the new
+ ServerActivator -> ComponentServer -> Container interfaces.
+
+ * tools/Simple_Component_Server/Simple_Component_Server.cpp: Fix
+
+Fri Feb 14 17:10:50 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/ConfigValues.html: Updated more supported ConfigValues types.
+
+ * docs/releasenotes.html:
+ * docs/todo.html:
+
+ * ciao/Client_init.cpp:
+ * ciao/Server_init.cpp:
+ * ciao/Client_init.h:
+ * ciao/Server_init.h: Removed "ciao/" from the include paths. We
+ now always include ciao core files as they are specified in the
+ include path directly.
+
+ * ciao/CIAO_Server.dsp:
+ * ciao/CIAO_Servers.idl:
+ * ciao/ComponentServer_Impl.cpp:
+ * ciao/ComponentServer_Impl.h:
+ * ciao/ComponentServer_Impl.inl:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h:
+ * ciao/Container_Impl.cpp:
+ * ciao/Container_Impl.h:
+ * ciao/Container_Impl.inl:
+ * ciao/Object_Set_T.cpp:
+ * ciao/Object_Set_T.h:
+ * ciao/Object_Set_T.inl:
+ * ciao/ServerActivator_Impl.cpp:
+ * ciao/ServerActivator_Impl.h:
+ * ciao/ServerActivator_Impl.inl: Filled in more implementations.
+
+ * tools/ServerActivator/README:
+ * tools/ServerActivator/ServerActivator.cpp:
+ * tools/ServerActivator/ServerActivator.dsp:
+ * tools/ServerActivator/ServerActivator.dsw:
+ * tools/ServerActivator/ServerActivator_test_client.cpp:
+ * tools/ServerActivator/ServerActivator_test_client.dsp: Added a
+ ServerActivator implementation.
+
+ * tools/ComponentServer/ComponentServer.cpp:
+ * tools/ComponentServer/ComponentServer.dsp:
+ * tools/ComponentServer/ComponentServer.dsw:
+ * tools/ComponentServer/ComponentServer_test_client.cpp:
+ * tools/ComponentServer/ComponentServer_test_client.dsp:
+ * tools/ComponentServer/README: Added a more comprehensive
+ ComponentServer implementation.
+
+Sun Feb 09 20:39:05 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/todo.html: Added more todo items as we go along. :)
+
+ * ciao/Component_Base.idl:
+ * ciao/CCM_Deployment.idl: Changed the create method in
+ ::Components::Deployment::AssemblyFactory to create_assembly per
+ CCM RTF 1.1.
+
+ * ciao/Assembly_Impl.cpp:
+ * ciao/Assembly_Impl.h:
+ * ciao/Assembly_Impl.inl: CCM RTF 1.1 changes. Also added other
+ test code in the file and explained how to create an Assembly
+ object.
+
+ * ciao/CIAO_Core.mpc:
+ * ciao/CIAO_Client.dsp:
+ * ciao/CIAO_Server.dsp:
+ * ciao/CIAO_Value.idl: Added a CIAO internal cookie valuetype so
+ we can downcast the incoming ::Components::Cookie back to CIAO's
+ internal implementation type CIAO::Cookie easily. The original
+ "brute force cast" didn't work and CIAO::Cookie also provides a
+ way to fish out the internal octetseq we need internally.
+
+ * ciao/Cookies.cpp:
+ * ciao/Cookies.h:
+ * ciao/Cookies.inl: Changed to inherit the internal cookie
+ implementation from OBV_CIAO::Cookie instead of
+ OBV_Components::Cookie. Also changed the extract method to be
+ static.
+
+ * ciao/Client_init.cpp: Added a new valuefactory to create
+ ::Components::Cookie valuetype when receiving CIAO::Cookie from
+ the server. This should really be handled by supporting
+ truncatable valuetype in TAO.
+
+ * docs/templates/CIAO_Glue_Session_Template.inl: Applied some of
+ the bug fixes from using Active Map and Cookie. These template
+ files need to be reviewed further.
+
+ * tests/temp/README:
+ * tests/temp/assembly/README:
+ * tests/temp/assembly/assembly.dsw:
+ * tests/temp/assembly/client.cpp:
+ * tests/temp/assembly/client.dsp:
+ * tests/temp/assembly/control.idl:
+ * tests/temp/assembly/control.mpc:
+ * tests/temp/assembly/run_test.pl:
+ * tests/temp/assembly/server.cpp:
+ * tests/temp/assembly/server.dsp: Added this test to make sure the
+ demonstrate how to use AssemblyFactory and Assembly interface,
+ and the Assembly's are being managed properly. More
+ importantly, I used this test to make sure the internal
+ implementation for Cookie and Active_Object_Map are working
+ correctly.
+
+ * tools/XML_Helpers/Svcconf.dsp:
+ * tools/XML_Helpers/Svcconf.dsw:
+ * tools/XML_Helpers/Svcconf_Handler.cpp:
+ * tools/XML_Helpers/Svcconf_Handler.h:
+ * tools/XML_Helpers/Svcconf_Handler.i:
+ * tools/XML_Helpers/main.cpp:
+ * tools/XML_Helpers/svc.conf.xml: Added an example to demonstrate
+ how to write a subclass of Cascadable_DocHandler and how to use
+ the Skip_DocHandler. Just so I won't forget how to use them.
+
+Sat Feb 08 20:45:20 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/*: WiP intermediate checkins.
+
+ * ciao/Object_Set_T.h:
+ * ciao/Object_Set_T.cpp (object_in_set): Added a new method to
+ check if an object is already in the set or not.
+
+Fri Feb 07 23:35:35 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Object_Set_T.h:
+ * ciao/Object_Set_T.i:
+ * ciao/Object_Set_T.cpp: Added a naive implementation of an object
+ reference set. It is naive because it simply keeps object
+ references in an objref_var array without checking for
+ duplication. More importantly, it takes O(n) to to look for an
+ object reference and return it. What we really need is a
+ thread-safe hash_set<> like class here. Since this is mostly
+ used only during setup/assemble time for a CIAO application,
+ i.e., not on critical path, this class serves as a place holder
+ for later, more efficient implementation.
+
+ This new class is needed to support ServerActivator,
+ ComponentServer, and Container interface in
+ Components::Deployment module.
+
+ * docs/ConfigVAlues.html: Added this new document page to record
+ what configuration values can be used to initialize
+ ComponentServer's and Container's.
+
+ * docs/todo.html: Documented more future todo tasks and ideas.
+
+Tue Feb 04 23:10:56 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/todo.html: Added a new item descirbing things that need to
+ be done for component/home configuration using CCM's XML
+ property files.
+
+ * tools/XML_Helpers/Handler-Interaction.png:
+ * tools/XML_Helpers/Handler-Interaction.vsd:
+ * tools/XML_Helpers/README: Files that document how to use
+ Cascadable_DocHandler and interactions among handlers of
+ different layers.
+
+ * tools/XML_Helpers/Cascadable_DocHandler.cpp:
+ * tools/XML_Helpers/Cascadable_DocHandler.h:
+ * tools/XML_Helpers/Cascadable_DocHandler.i: A
+ ACEXML_DefaultHandler subclass which can be easily cascaded
+ together to handle hierarchical XML document structure. There
+ is also a Skip_DocHandler class which subclasses from
+ Cascadable_DocHandler and can be used to skip over some certain
+ XML tags completely. These helper classes should probably be
+ collected under ACEXML in the future.
+
+Sun Feb 02 21:05:39 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Cookies.cpp (insert): Fixed a warning.
+
+ * ciao/CCM_Base.idl: Changed to include <orb.idl> instead of <corba.pidl>.
+
+ * ciao/CCM_Event.idl: Fixed a typo I put in last.
+
+Sun Feb 02 15:23:26 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/XML/componentassembly.dtd:
+ * docs/XML/corbacomponent.dtd:
+ * docs/XML/properties.dtd:
+ * docs/XML/softpkg.dtd: Updated these files with the ones from my
+ web page. They are now in-sync with the latest RTF.
+
+Wed Jan 29 13:27:01 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * CIDLC/DesignNotes:
+
+ Added a list of items from the IDL compiler that need redesign and
+ can perhaps be done incrementally in the CIDL compiler, and
+ eventually integrated back into the IDL compiler.
+
+Wed Jan 22 16:05:18 2003 Boris S Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * CIDLC/DesignNotes: added some more ideas.
+
+Wed Jan 22 13:54:12 2003 Boris S Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * CIDLC/DesignNotes: added this file to capture and document CIDL
+ complier design ideas/decisions.
+
+Tue Jan 21 16:20:44 2003 Boris S Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * tools/CIDLC:
+ * CIDLC: moved CIDLC directory one level up.
+
+Mon Jan 13 15:23:09 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/Executor.idl: Added meta-code for user-defined
+ oeprations, factory operations, and finder operations.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl: Filled in the
+ rest of the CIDL generated Servant Glue code templates.
+
+Mon Jan 13 11:18:37 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Component_Base.idl:
+ * ciao/CCM_Base.idl: Based on Components 1.1 RTF
+ Events::unsubscribe operations now return the unsubscribed
+ consumber object reference instead of void.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl: Filled in most of
+ the operations for component servant. Only opeations left
+ unimplemented include Events::get_*_publishers which I will
+ implement in the *_Context class later.
+
+ There are several other oeprations that throw NO_IMPLEMENT
+ exception or are no-op currently. Missing them probably is okay
+ for now. Next up, Home Servant template.
+
+Mon Jan 13 00:27:03 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl: Filled in a great
+ more generated code. This is almost done, finally.
+
+ * docs/templates/CIAO_Glue_Session_Template.cpp:
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * docs/templates/Executor.idl: Changed to lead template comments
+ with '##' instead of # to diffentiate them from preprocessor
+ directives that we should generate.
+
+ * ciao/HomeRegistrar_i.inl:
+ * ciao/HomeRegistrar_i.cpp: Fixed incorrect uses of exception macros.
+
+ * ciao/Cookies.h:
+ * ciao/Cookies.cpp: Added a new insert method which "encode" an
+ Active_Objref_Map key into the Cookie.
+
+ * ciao/Container_Base.inl:
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h: Added a new get_objref method which
+ basically allow us to get the component reference using POA's
+ servant_to_reference operation. Added a new inline file and
+ fixed some incorrect uses of exception macros.
+
+ * ciao/Component_Base.idl:
+ * ciao/CCM_Base.idl: Based on Components 1.1 RTF
+ Receptacles::disconnect operations now return the disconnected
+ object reference instead of void.
+
+Fri Jan 10 12:03:00 2003 Boris S Kolpackov <boris@isis-server.isis.vanderbilt.edu>
+
+ * tools/CCIDL:
+ * tools/CIDLC:
+ * tools/CIDLC/README: Renamed CCIDL to CIDLC. Added some
+ explanations about naming convention choosen for CIDL compiler.
+
+Thu Jan 09 00:57:37 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/cidl_template.cidl: Added an example CIDL file.
+
+ * docs/templates/CIAO_Glue_Session_Template.h:
+ * docs/templates/CIAO_Glue_Session_Template.inl:
+ * docs/templates/CIAO_Glue_Session_Template.cpp: Added more
+ implementation code.
+
+Wed Jan 08 16:48:28 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/CIAO_Glue_Session_Template.h: Added the complete
+ list of operations that needs to be supported. Next up, the
+ implementation templates.
+
+ * ciao/Active_Objref_Map.cpp:
+ * ciao/Active_Objref_Map.h: Defined a typedef called
+ CIAO::Active_Objref_Map for managing CORBA::Object_var's using
+ the ACE_Active_Map_Manager and instantiate the template.
+
+ * ciao/Cookies.cpp:
+ * ciao/Cookies.h: Added insertion/extraction of
+ ACE_Active_Map_Manager_Key operations.
+
+Tue Jan 07 23:28:28 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CIAO_common.h: Added a new file to collect common CIAO
+ macros.
+
+ * ciao/CIAO_Component_i.cpp:
+ * ciao/CIAO_Component_i.h: Removed.
+ * ciao/Client_init.cpp:
+ * ciao/Client_init.h: The old CIAO_client_init in
+ CIAO_Component_i is now called Client_init under CIAO namespace.
+ This function initlializes the value factories for client side ORB.
+
+ * ciao/Server_init.cpp:
+ * ciao/Server_init.h: Added new function Server_init under CIAO
+ namespace to initialize server side value factories for server
+ side ORB.
+
+ * ciao/Cookies.cpp:
+ * ciao/Cookies.h:
+ * ciao/Cookies.inl: Added server-side implementation of
+ Components::Cookie called CIAO::Map_Key_Cookie. This
+ implementation is only used within the containers (i.e., server
+ side). Client doesn't need to know how to interpret a Cookie.
+
+ * ciao/Container_Base.h:
+ * ciao/HomeRegistrar_i.h: Fixed various ACE-guideline conformity
+ problems.
+
+ * ciao/CCM_Core.mpc:
+ * ciao/CIAO_Client.dsp:
+ * ciao/CIAO_Container.dsp:
+ * ciao/CIAO_Server.dsp:
+ * ciao/Makefile.client:
+ * ciao/Makefile.container:
+ * ciao/Makefile.server: Updated various makefiles/projects.
+
+Tue Jan 07 07:48:02 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Container_Base.cpp (install_servant): Changed to decrease
+ the refcount of servant by one to make sure servants get
+ "released" properly.
+
+Fri Jan 03 11:27:12 2003 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/templates/Executor.idl: This pseudo-meta IDL template file
+ summarizes the standard executor mapping and serves as a
+ template for CCIDL compiler.
+
+Sun Dec 22 23:12:49 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/RateGen/RateGen.idl:
+ * examples/handcrafted/Display/GPS/GPS.idl:
+ * examples/handcrafted/Display/NavDisplay/NavDisplay.idl:
+ * examples/handcrafted/Display/HUDisplay.idl:
+ * examples/handcrafted/Display/Display.mpc: Added more files for
+ this multi-component example.
+
+ The followings should go to the ChangeLog under $(ACE_ROOT)
+
+ * bin/MakeProjectCreator/configs/ciao_client.mpc:
+ * bin/MakeProjectCreator/configs/ciao_component.mpc:
+ * bin/MakeProjectCreator/configs/ciao_server.mpc: Added libpaths
+ defintions.
+
+Sat Dec 21 15:09:55 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/Simple_Component_Server/Simple_Component_Server.dsp:
+ * examples/handcrafted/Hello/run_test.pl: Changed to generate
+ Simple_Component_Server executable in the project directory.
+
+ * examples/handcrafted/Hello/hello.mpc:
+ * ciao/CCM_Core.mpc:
+ * tools/Simple_Component_Server/Simple_Component_Server.mpc:
+ Created MPC specifications.
+
+ The followings should go to the ChangeLog under $(ACE_ROOT)
+
+ * bin/MakeProjectCreator/configs/ciao_client.mpc:
+ * bin/MakeProjectCreator/configs/ciao_component.mpc:
+ * bin/MakeProjectCreator/configs/ciao_server.mpc: Created MPC
+ templates for CIAO client, component implmentation, and server
+ tools.
+
+Fri Dec 20 23:09:53 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/Makefile.server: Added HomeRegistrar.idl and
+ HomeRegistrar_i to the makefile.
+
+ * tools/Simple_Component_Server/Makefile: Added a new makefile.
+
+Fri Dec 20 20:32:53 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CCM_Component.idl:
+ * ciao/CCM_Container.idl:
+ * ciao/Container_Base.cpp:
+ * ciao/Makefile.client:
+ * ciao/Makefile.container:
+ * ciao/Makefile.server: Fixed compilation erros and Makefiles on
+ Linux.
+
+Thu Dec 19 20:44:39 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Display/README:
+ * examples/handcrafted/Display/Configuration-0.png: Added new
+ files explaining the purpose of the the new example and what it
+ will do.
+
+Wed Dec 18 20:37:06 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Hello/run_test.pl: Added a script to
+ automate running this stuff.
+
+ * examples/handcrafted/Hello/README: Replaced the reference to
+ CIAO_single_com_server to Simple_Component_Server.
+
+Tue Dec 17 23:30:59 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/CIAO_single_com_server/*:
+ * tools/Simple_Component_Server/*: Changed the name of the simple
+ server from CIAO_single_com_server to Simple_Component_Server.
+ The original name didn't make too much sense at all.
+
+Tue Dec 17 22:49:32 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CIAO_Server.dsp:
+ * ciao/HomeRegistrar.idl:
+ * ciao/HomeRegistrar_i.{h,inl,cpp}: Added a NameService based
+ HomeFinder extension. This interface defines the registration
+ operation, which is not defined in the CCM specification. This
+ is part of the CIAO_Server library.
+
+ * tools/CIAO_single_com_server/CIAO_single_com_server.cpp: Changed
+ to register installed components with the HomeRegistrar instead
+ of dumping the IOR into a file. The only thing that gets dumped
+ into a file now is the IOR for the HomeFinder interface which
+ HomeRegistrar inherits.
+
+ * examples/handecrafted/Hello/README: Added information on the
+ procedures one should follow to run this test.
+
+ * examples/handcrafted/Hello/config: Updated the component server
+ config file to include the repo ids and canonical name for the
+ home.
+
+ * examples/handcrafted/Hello/client.dsp:
+ * examples/handcrafted/Hello/client.cpp: Changed to use acquire
+ the home object reference thru the HomeFinder interface, instead
+ of passing it in explicitly.
+
+ * examples/handcrafted/Hello/hello.dsw:
+ * examples/handcrafted/Hello/server.cpp:
+ * examples/handcrafted/Hello/server.dsp: Removed server from the
+ workspace. As we now have a true component server, we no longer
+ need a server process for this example.
+
+
+Mon Dec 16 10:56:46 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/CIAO_single_com_server/CIAO_single_com_server.cpp: Fixed
+ command line argument parsing problem. We now process the
+ command line argument for ORB correctly.
+
+Sun Dec 15 23:54:16 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * tools/CIAO_single_com_server/*: Added a new prototype component
+ server. We can now run session components on a generic server
+ using a proprietary config file for component installation.
+
+ * ciao/Container_Base.{h,cpp}: Fixed incorrect usage of ACE_DLL
+ where executor and servant Dlls got unloaded prematurely.
+
+Wed Dec 11 14:39:08 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ A lot have changed since last ChangeLog entry. Most of the
+ changes are intermediate so I didn't even try to record them.
+
+ * ciao/CCMCore.dsw:
+ * ciao/CIAO_Container.dsp:
+ * ciao/CIAO_Server.dsp: Moved Container_Base.* from CIAO_Container
+ library to CIAO_Server library. These classes in Container_Base
+ are really run-time container management interfaces than
+ container interfaces themselves.
+
+ * ciao/Container_Base.cpp:
+ * ciao/Container_Base.h: Added _ciao_install_home which enable
+ installing a component home from relevant DLL named and entry
+ points. We are not managing the lifecycle of DLL objects in the
+ implementation yet (we just never unlink DLL. :) This will have
+ to be changed in the future.
+
+ * examples/handcrafted/Hello/hello_servants.cpp:
+ * examples/handcrafted/Hello/hello_servants.h: Added an entry
+ point "create_HelloWorld_Servant" so we can use the glue code
+ with the new "generic server."
+
+ * examples/handcrafted/Hello/server.cpp:
+ * examples/handcrafted/Hello/server.dsp: Reworked the server
+ implementation so that it is no longer tied to a specific
+ component implementation. I.e., we can use the same server to
+ host any *one* component now.
+
+ * examples/handcrafted/Hello/client.dsp: Added a missing link
+ directory.
+
+Tue Nov 05 23:42:04 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * CCMCore.dsp:
+ * CIAO_BaseC.cpp:
+ * CIAO_BaseC.h:
+ * CIAO_BaseC.i:
+ * CIAO_ComponentC.cpp:
+ * CIAO_ComponentC.h:
+ * CIAO_ComponentC.i:
+ * CIAO_ContainerC.cpp:
+ * CIAO_ContainerC.h:
+ * CIAO_ContainerC.i:
+ * CIAO_Container_ExC.cpp:
+ * CIAO_Container_ExC.h:
+ * CIAO_Container_ExC.i:
+ * CIAO_DeploymentC.cpp:
+ * CIAO_DeploymentC.h:
+ * CIAO_DeploymentC.i:
+ * CIAO_EventC.cpp:
+ * CIAO_EventC.h:
+ * CIAO_EventC.i:
+ * CIAO_TransactionC.cpp:
+ * CIAO_TransactionC.h:
+ * CIAO_TransactionC.i:
+ * Component_BaseC.cpp:
+ * Component_BaseC.h:
+ * Component_BaseC.i:
+ * Component_BaseS.cpp:
+ * Component_BaseS.h:
+ * Component_BaseS.i:
+ * Component_BaseS_T.cpp:
+ * Component_BaseS_T.h:
+ * Component_BaseS_T.i:
+ * CosPersistentStateC.cpp:
+ * CosPersistentStateC.h:
+ * CosPersistentStateC.i:
+ * CosPersistentStateS.cpp:
+ * CosPersistentStateS.h:
+ * CosPersistentStateS.i:
+ * CosPersistentStateS_T.cpp:
+ * CosPersistentStateS_T.h:
+ * CosPersistentStateS_T.i: Removed generated files.
+
+ * CCMCore.dsw:
+ * CIAO_CLIENT_Export.h:
+ * CIAO_Client.dsp:
+ * CIAO_Component.pidl:
+ * CIAO_Container.dsp:
+ * CIAO_Container_Export.h:
+ * CIAO_SERVER_Export.h:
+ * CIAO_Server.dsp:
+ * README: Split up the CCM Core library into 3 libraries for clients,
+ component implementations, and component servers.
+
+Thu Sep 26 15:20:13 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * ciao/CCMCore.dsp:
+ * ciao/CIAO_Base.pidl:
+ * ciao/CIAO_BaseC.cpp:
+ * ciao/CIAO_BaseC.h:
+ * ciao/CIAO_BaseC.i:
+ * ciao/CIAO_Component.pidl:
+ * ciao/CIAO_ComponentC.cpp:
+ * ciao/CIAO_ComponentC.h:
+ * ciao/CIAO_ComponentC.i:
+ * ciao/CIAO_Container.pidl:
+ * ciao/CIAO_ContainerC.cpp:
+ * ciao/CIAO_ContainerC.h:
+ * ciao/CIAO_ContainerC.i:
+ * ciao/CIAO_Container_Ex.pidl:
+ * ciao/CIAO_Container_ExC.cpp:
+ * ciao/CIAO_Container_ExC.h:
+ * ciao/CIAO_Container_ExC.i:
+ * ciao/CIAO_Deployment.pidl:
+ * ciao/CIAO_DeploymentC.cpp:
+ * ciao/CIAO_DeploymentC.h:
+ * ciao/CIAO_DeploymentC.i:
+ * ciao/CIAO_Event.pidl:
+ * ciao/CIAO_EventC.cpp:
+ * ciao/CIAO_EventC.h:
+ * ciao/CIAO_EventC.i:
+ * ciao/CIAO_Transaction.pidl:
+ * ciao/CIAO_TransactionC.cpp:
+ * ciao/CIAO_TransactionC.h:
+ * ciao/CIAO_TransactionC.i: Changed to split the component idl
+ file into severl smaller idl files.
+
+ * ciao/Makefile: An empty place holder for now.
+
+ * ciao/Version.h:
+ * ciao/ciao.rc: Added version information files.
+
+Thu Jul 18 22:14:59 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * examples/handcrafted/Philosophers/Philosophers.idl (Example):
+
+Mon Jun 17 17:35:31 2002 Nanbor Wang <nanbor@cs.wustl.edu>
+
+ * docs/index.html:
+ * docs/imgs/CCM.vsd:
+ * docs/imgs/basic-container.png:
+ * docs/imgs/component-basic.png:
+ * docs/imgs/deployment.png:
+ * docs/imgs/extended-container.png:
+ * docs/imgs/home-config.png: Added CIAO documentation.
diff --git a/modules/CIAO/DAnCE/Deployment.mwc b/modules/CIAO/DAnCE/Deployment.mwc
new file mode 100644
index 00000000000..fcf95d10967
--- /dev/null
+++ b/modules/CIAO/DAnCE/Deployment.mwc
@@ -0,0 +1,4 @@
+// $Id$
+
+workspace {
+}
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.cpp b/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
new file mode 100644
index 00000000000..83775494498
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.cpp
@@ -0,0 +1,169 @@
+// $Id$
+
+#include "Deployment_Configuration.h"
+#include "ciao/CIAO_common.h"
+
+#include "ace/OS_NS_stdio.h"
+#include "ace/OS_NS_string.h"
+#include "ace/Read_Buffer.h"
+
+CIAO::Deployment_Configuration::Deployment_Configuration (CORBA::ORB_ptr o)
+ : orb_ (CORBA::ORB::_duplicate (o))
+{
+}
+
+CIAO::Deployment_Configuration::~Deployment_Configuration (void)
+{
+ this->deployment_info_.unbind_all ();
+}
+
+int
+CIAO::Deployment_Configuration::init (const char *filename)
+{
+ if (filename == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "DANCE (%P|%t) Deployment_Configuration.cpp"
+ ": Unable to identify the file name \n"));
+ return -1;
+ }
+
+ FILE *inf = ACE_OS::fopen (filename, "r");
+
+ if (inf == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "DAnCE (%P|%t) Deployment_Configuration.cpp:"
+ "Fail to open node manager map data file: <%s>\n",
+ filename),
+ -1);
+ }
+
+ // Get a read buffer, this will close the stream when we are ready
+ ACE_Read_Buffer reader (inf, true);
+
+ bool first = true;
+ char* string = 0;
+
+ // Read from the file line by line
+ while ((string = reader.read ('\n')) != 0)
+ {
+ // Search from the right to the first space
+ const char* ior_start = ACE_OS::strrchr (string, ' ');
+ // Search from the left to the first space
+ const char* dest_end = ACE_OS::strchr (string, ' ');
+ // The destination is first followed by some spaces
+ ACE_CString destination (string, dest_end - string);
+ // And then the IOR
+ ACE_CString ior (ior_start + 1, ACE_OS::strlen (ior_start + 1));
+ if (this->deployment_info_.bind (destination.c_str (), ior.c_str ()) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "DAnCE (%P|%t) Deployment_Configuration, "
+ "failed to bind destination <%s>\n",
+ destination.c_str ()),
+ -1);
+ }
+
+ if (CIAO::debug_level () > 5)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) Deployment_Configuration, "
+ "read <%s> <%s>\n", destination.c_str (), ior.c_str ()));
+ }
+
+ if (first)
+ {
+ this->default_node_manager_.IOR_ = ior;
+ first = false;
+ }
+ }
+
+ return 0;
+}
+
+const char *
+CIAO::Deployment_Configuration::get_node_manager_ior (const char *name) const
+{
+ if (name == 0)
+ return this->get_default_node_manager_ior ();
+
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ CIAO::Deployment_Configuration::Node_Manager_Info> *entry = 0;
+
+ if (this->deployment_info_.find (ACE_CString (name),
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) Deployment_Configuration, "
+ "get_node_manager_ior, failed to find IOR for destination <%s>\n",
+ name));
+ return 0;
+ }
+
+ return entry->int_id_.IOR_.c_str ();
+}
+
+const char *
+CIAO::Deployment_Configuration::get_default_node_manager_ior (void) const
+{
+ if (this->default_node_manager_.IOR_.length () == 0)
+ return 0;
+ return this->default_node_manager_.IOR_.c_str ();
+}
+
+::Deployment::NodeManager_ptr
+CIAO::Deployment_Configuration::get_node_manager (const char *name)
+{
+ if (name == 0)
+ return get_default_node_manager ();
+
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ CIAO::Deployment_Configuration::Node_Manager_Info> *entry = 0;
+
+ if (this->deployment_info_.find (ACE_CString (name),
+ entry) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "DAnCE (%P|%t) Deployment_Configuration.cpp:"
+ "Failed to find IOR for destination <%s>\n",
+ name),
+ 0);
+ }
+
+ if (CORBA::is_nil (entry->int_id_.node_manager_.in ()))
+ {
+ try
+ {
+ CORBA::Object_var temp = this->orb_->string_to_object
+ (entry->int_id_.IOR_.c_str ());
+
+ entry->int_id_.node_manager_ =
+ ::Deployment::NodeManager::_narrow (temp.in ());
+ }
+ catch (const CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR, "DANCE (%P|%t) Deployment_Configuration.cpp: "
+ "Error while contacting NodeManager %s\n", name));
+ throw;
+ }
+ }
+ return ::Deployment::NodeManager::_duplicate
+ (entry->int_id_.node_manager_.in ());
+}
+
+::Deployment::NodeManager_ptr
+CIAO::Deployment_Configuration::get_default_node_manager ()
+{
+ if (CORBA::is_nil (this->default_node_manager_.node_manager_.in ()))
+ {
+ CORBA::Object_var temp = this->orb_->string_to_object
+ (this->default_node_manager_.IOR_.c_str ());
+
+ this->default_node_manager_.node_manager_ =
+ ::Deployment::NodeManager::_narrow (temp.in ());
+ }
+ return ::Deployment::NodeManager::_duplicate
+ (this->default_node_manager_.node_manager_.in ());
+}
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.h b/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.h
new file mode 100644
index 00000000000..af17d4357ed
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/Deployment_Configuration.h
@@ -0,0 +1,128 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Deployment_Configuration.h
+ *
+ * $Id$
+ *
+ * The Deployment_Configuration provides abstraction for the
+ * deployment mechanisms.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ * @author Gan Deng <gan.deng@vanderbilt.edu>
+ */
+//=============================================================================
+#ifndef CIAO_DEPLOYMENT_CONFIGURATION_H
+#define CIAO_DEPLOYMENT_CONFIGURATION_H
+#include /**/ "ace/pre.h"
+
+#include "ace/Hash_Map_Manager_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Deployment_NodeManagerC.h"
+#include "tao/Valuetype/ValueBase.h"
+#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
+#include "ace/SString.h"
+
+#include "DomainApplicationManager/DomainApplicationManager_Export.h"
+
+namespace CIAO
+{
+ /**
+ * @class Deployment_Configuration
+ *
+ * @brief A class that provides strategies on deployment topology.
+ *
+ * This class provides strategies on how the DomainApplicationManager
+ * should deploy an deployment plan at domain-level. This is achieved
+ * by providing mappings from deployment destination names to actually
+ * NodeManager daemon IORs, and the strategy for which default NodeManager
+ * daemons a deployment mechanism should use.
+ *
+ * This is a trivial implementation of the deployment configuration
+ * strategy. We can enhance this class later on to provide
+ * different deployment location strategies, such as naming service.
+ */
+ class DomainApplicationManager_Export Deployment_Configuration
+ {
+ public:
+ typedef struct _node_manager_info
+ {
+ _node_manager_info (const char *ior = 0)
+ {
+ IOR_ = ior;
+ }
+
+ ACE_CString IOR_;
+ ::Deployment::NodeManager_var node_manager_;
+ } Node_Manager_Info;
+
+ Deployment_Configuration (CORBA::ORB_ptr o);
+
+ /// Destructor
+ ~Deployment_Configuration (void);
+
+ /**
+ * Init method takes the filename to a configuration file which
+ * has a simple line format of name, ior string delimited by a
+ * space in each line.
+ *
+ * name IOR-string
+ *
+ * @retval 0 on success.
+ * @retval -1 otherwise.
+ */
+ int init (const char *filename);
+
+ /**
+ * @retval 0 if no valid name were found. When @c name = 0, then
+ * this function behave exactly as get_default_activator_ior.
+ */
+ const char *get_node_manager_ior (const char *name) const;
+
+ /**
+ * Return the default NodeManager the DomainApplicationManager
+ * should use to deploy a component. In this implementation, the
+ * first entry in the deployment configuration data file is always
+ * the entry for default activator.
+ *
+ * @retval 0 if no valid daemon is configured.
+ */
+ const char *get_default_node_manager_ior () const;
+
+ /**
+ * @retval nil if no valid name were found.
+ */
+ ::Deployment::NodeManager_ptr
+ get_node_manager (const char *name);
+
+ /**
+ * Return the reference to the default NodeManager the
+ * DomainApplicationManager should use to deploy a node-level
+ * deployment plan..
+ *
+ * @retval nil if no valid daemon is configured.
+ */
+ ::Deployment::NodeManager_ptr
+ get_default_node_manager ();
+
+ protected:
+ CORBA::ORB_var orb_;
+
+ ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Node_Manager_Info,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> deployment_info_;
+
+ Node_Manager_Info default_node_manager_;
+ };
+
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_DEPLOYMENT_CONFIGURATION_H */
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
new file mode 100644
index 00000000000..0fa9d1eaafb
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager.mpc
@@ -0,0 +1,21 @@
+// -*- MPC -*-
+// $Id$
+
+project (DomainApplicationManager): ciao_deployment_svnt, naming {
+ sharedname = DomainApplicationManager
+ after += ExecutionManager_stub
+
+ dynamicflags = DOMAINAPPLICATIONMANAGER_BUILD_DLL
+
+ Source_Files {
+ DomainApplicationManager_Impl.cpp
+ Deployment_Configuration.cpp
+ }
+
+ Header_Files {
+ DomainApplicationManager_Impl.h
+ Deployment_Configuration.h
+ DomainApplicationManager_Export.h
+ }
+}
+
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h
new file mode 100644
index 00000000000..31fa9b914b7
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s DomainApplicationManager
+// ------------------------------
+#ifndef DOMAINAPPLICATIONMANAGER_EXPORT_H
+#define DOMAINAPPLICATIONMANAGER_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DOMAINAPPLICATIONMANAGER_HAS_DLL)
+# define DOMAINAPPLICATIONMANAGER_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DOMAINAPPLICATIONMANAGER_HAS_DLL */
+
+#if !defined (DOMAINAPPLICATIONMANAGER_HAS_DLL)
+# define DOMAINAPPLICATIONMANAGER_HAS_DLL 1
+#endif /* ! DOMAINAPPLICATIONMANAGER_HAS_DLL */
+
+#if defined (DOMAINAPPLICATIONMANAGER_HAS_DLL) && (DOMAINAPPLICATIONMANAGER_HAS_DLL == 1)
+# if defined (DOMAINAPPLICATIONMANAGER_BUILD_DLL)
+# define DomainApplicationManager_Export ACE_Proper_Export_Flag
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DOMAINAPPLICATIONMANAGER_BUILD_DLL */
+# define DomainApplicationManager_Export ACE_Proper_Import_Flag
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DOMAINAPPLICATIONMANAGER_BUILD_DLL */
+#else /* DOMAINAPPLICATIONMANAGER_HAS_DLL == 1 */
+# define DomainApplicationManager_Export
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARATION(T)
+# define DOMAINAPPLICATIONMANAGER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DOMAINAPPLICATIONMANAGER_HAS_DLL == 1 */
+
+// Set DOMAINAPPLICATIONMANAGER_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DOMAINAPPLICATIONMANAGER_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DOMAINAPPLICATIONMANAGER_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DOMAINAPPLICATIONMANAGER_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DOMAINAPPLICATIONMANAGER_NTRACE */
+
+#if (DOMAINAPPLICATIONMANAGER_NTRACE == 1)
+# define DOMAINAPPLICATIONMANAGER_TRACE(X)
+#else /* (DOMAINAPPLICATIONMANAGER_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DOMAINAPPLICATIONMANAGER_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DOMAINAPPLICATIONMANAGER_NTRACE == 1) */
+
+#endif /* DOMAINAPPLICATIONMANAGER_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
new file mode 100644
index 00000000000..89dd9a3179e
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.cpp
@@ -0,0 +1,2017 @@
+// $Id$
+
+#include "DomainApplicationManager_Impl.h"
+#include "ExecutionManager/Execution_Manager_Impl.h"
+#include "ciao/Deployment_NodeApplicationManagerC.h"
+#include "ace/Null_Mutex.h"
+#include "ace/OS_NS_string.h"
+#include "ace/SString.h"
+#include "ace/Assert.h"
+
+#if !defined (__ACE_INLINE__)
+# include "DomainApplicationManager_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+CIAO::DomainApplicationManager_Impl::
+DomainApplicationManager_Impl (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ Deployment::TargetManager_ptr manager,
+ Execution_Manager::Execution_Manager_Impl * em,
+ const Deployment::DeploymentPlan & plan,
+ const char * deployment_file)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ : orb_ (CORBA::ORB::_duplicate (orb)),
+ poa_ (PortableServer::POA::_duplicate (poa)),
+ execution_manager_ (em), // a plain C++ pointer
+ target_manager_ (Deployment::TargetManager::_duplicate (manager)), // object ref
+ plan_ (plan),
+ num_child_plans_ (0),
+ // @@ (OO) The default size for an ACE_Hash_Map_Mapanger is quiet
+ // large. The maximum size of an ACE_Hash_Map_Manager is
+ // also fixed, i.e. it does not grow dynamically on demand.
+ // Make sure the default size of artifact_map_ is
+ // appropriate for your needs. You may also want to make
+ // the size configurable at compile-time, at least.
+ //
+ // Need to initialize chained artifacts here.
+ //
+ deployment_file_ (CORBA::string_dup (deployment_file)),
+ deployment_config_ (orb),
+ is_redeployment_ (false),
+ esd_ (0)
+{
+ ACE_NEW_THROW_EX (this->all_connections_,
+ Deployment::Connections (),
+ CORBA::NO_MEMORY ());
+
+ ACE_NEW_THROW_EX (this->shared_,
+ Deployment::ComponentPlans (),
+ CORBA::NO_MEMORY ());
+
+ ACE_NEW_THROW_EX (this->esd_,
+ CIAO::DAnCE::EventServiceDeploymentDescriptions (),
+ CORBA::NO_MEMORY ());
+
+ for (CORBA::ULong i = 0; i < this->plan_.infoProperty.length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->plan_.infoProperty[i].name.in (),
+ "CIAOEvents") != 0)
+ continue;
+
+ // Note, we should do a sanity check here to make
+ // sure we didn't pick up the wrong infoProperty!!
+ this->plan_.infoProperty[0].value >>= this->esd_;
+ break;
+ }
+}
+
+CIAO::DomainApplicationManager_Impl::~DomainApplicationManager_Impl ()
+{
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "DomainApplicationManager destroyed\n"));
+ }
+}
+
+Deployment::NodeApplication_ptr
+CIAO::DomainApplicationManager_Impl::get_node_app (const char * node_name)
+ ACE_THROW_SPEC ((::CORBA::SystemException, ::Deployment::NoSuchName))
+{
+ // Get the NodeApplication object reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (node_name, entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::get_node_app -"
+ "ERROR while finding the node application "
+ "for the node [%s] \n",
+ node_name));
+ throw Deployment::NoSuchName ();
+ }
+
+ return
+ Deployment::NodeApplication::_duplicate (
+ entry->int_id_.node_application_.in ());
+}
+
+void
+CIAO::DomainApplicationManager_Impl::init ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::PlanError))
+{
+ try
+ {
+
+ //Deployment::DnC_Dump::dump (this->plan_);
+ /*
+ //======================================
+ // Dump the contents of infoProperty to a XML file
+ if (CIAO::debug_level () > 1)
+ {
+ CIAO::DAnCE::ServerResource *sr = 0;
+ this->plan_.infoProperty[0].value >>= sr;
+
+ Config_Handlers::SRD_Handler reverse_handler (sr);
+
+ Config_Handlers::XML_Helper the_helper;
+ xercesc::DOMDocument *the_xsc
+ (the_helper.create_dom ("CIAO:ServerResources",
+ "http://www.dre.vanderbilt.edu/ServerResources"));
+
+ ServerResources (*reverse_handler.srd_xsc (), the_xsc);
+
+ // write out the result
+ the_helper.write_DOM (the_xsc, "output.srd");
+ }
+ */
+ //======================================
+
+ // (1) Call get_plan_info() method to get the total number
+ // of child plans and list of NodeManager names, and
+ // (2) Check the validity of the global deployment plan.
+ if (! this->get_plan_info ())
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::init -"
+ "ERROR while calling get_plan_info () \n"));
+ throw Deployment::PlanError ();
+ }
+
+ // Call split_plan()
+ if (! this->split_plan ())
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::init -"
+ "ERROR while calling split_plan () \n"));
+ throw Deployment::PlanError ();
+ }
+
+ // Invoke preparePlan on each NodeManager by giving child plan.
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeManager object reference.
+ ::Deployment::NodeManager_var my_node_manager =
+ this->deployment_config_.get_node_manager
+ (this->node_manager_names_[i].c_str ());
+
+ // Get the child deployment plan reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::init -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+ throw Deployment::PlanError ();
+ }
+
+ Chained_Artifacts & artifacts = entry->int_id_;
+
+ // Call preparePlan() method on the NodeManager with the
+ // corresponding child plan as input, which returns a
+ // NodeApplicationManager object reference.
+ Deployment::ApplicationManager_var tmp_app_manager =
+ my_node_manager->preparePlan (artifacts.child_plan_.in ());
+
+ Deployment::NodeApplicationManager_var app_manager =
+ Deployment::NodeApplicationManager::_narrow
+ (tmp_app_manager.in ());
+
+ if (CORBA::is_nil (app_manager.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::init -"
+ "ERROR while narroing the NAM "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error ("DomainAppMgr::init () received a nil \
+ reference for NodeApplicationManager\n");
+
+ ACE_DEBUG ((LM_DEBUG, error.c_str ()));
+ throw
+ (Deployment::StartError ("DomainApplicationManager_Impl:init",
+ error.c_str ()));
+ }
+
+ // Cache the NodeApplicationManager object reference.
+ artifacts.node_application_manager_ = app_manager._retn ();
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("DomainApplicationManager_Impl::init\t\n");
+ throw;
+ }
+}
+
+bool
+CIAO::DomainApplicationManager_Impl::get_plan_info (void)
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::get_plan_info");
+
+ // Read the deployment.dat file and get to know the different nodes
+ // that are present in the deployment domain.
+ // We should be able to replace this way, by parsing the domain
+ // descriptor to get to know more on the domain.
+ //
+ if ( this->deployment_config_.init (this->deployment_file_) == -1 )
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::get_plan_info -"
+ "ERROR while trying to initialize after reading "
+ "deployment DAT file \n"));
+ return 0;
+ }
+
+ // Error: If there are no nodes in the plan => No nodes to deploy the
+ // components
+ CORBA::ULong const length = this->plan_.instance.length ();
+
+ if (length == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::get_plan_info -"
+ "ERROR while trying to get the total instances to "
+ "be deployed \n"));
+ return false;
+ }
+
+ // Copy the name of the node in the plan on to the node manager
+ // array, Making sure that duplicates are not added.
+ //
+ // OPTIMIZATION:
+ // We can parse the domain descriptor and the size of the node
+ // data structure is the size of the num_plans and
+ // the individual node names need to be entered into the
+ // node_manager_map.
+ //
+ int num_plans = 0;
+ this->node_manager_names_.clear ();
+
+ for (CORBA::ULong index = 0; index < length; index ++)
+ {
+ bool matched = false;
+
+ const CORBA::ULong number_node_managers =
+ this->node_manager_names_.size ();
+
+ for (CORBA::ULong i = 0; i < number_node_managers; ++i)
+ // If a match is found do not add it to the list of unique
+ // node names
+ if (ACE_OS::strcmp (this->plan_.instance [index].node.in (),
+ (this->node_manager_names_ [i]).c_str ()) == 0)
+ {
+ // Break out -- Duplicates found
+ matched = true;
+ break;
+ }
+
+ if (! matched)
+ {
+ // Check if there is a corresponding NodeManager instance existing
+ // If not present return false
+ ::Deployment::NodeManager_var mgr =
+ this->deployment_config_.get_node_manager
+ (this->plan_.instance [index].node.in ());
+
+ if (CORBA::is_nil (mgr.in ()))
+ return false; /* Failure */
+
+ // Add this unique node_name to the list of NodeManager names
+ this->node_manager_names_.push_back (this->plan_.instance [index].node.in ());
+
+ // Increment the number of plans
+ ++num_plans;
+ }
+ }
+
+ // Set the length of the Node Managers
+ //
+ // why cannot we use the provate variable in the above "for" loop?
+ //
+ this->num_child_plans_ = num_plans;
+
+ // Indicate success
+ return true;
+}
+
+//@@ We should ask those spec writers to look at the code below, hopefully
+// They will realize some thing.
+int
+CIAO::DomainApplicationManager_Impl::split_plan (void)
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::split_plan");
+
+ // Initialize the total number of child deployment plans specified
+ // by the global plan.
+ CORBA::ULong i;
+
+ for ( i = 0; i < this->num_child_plans_; ++i)
+ {
+ ::Deployment::DeploymentPlan_var tmp_plan;
+ ACE_NEW_RETURN (tmp_plan,
+ ::Deployment::DeploymentPlan,
+ 0);
+
+ // Construct the UUID for the child plan.
+ // Currently, this UUID consists of:
+ // The global UUID for the parent plan + the name of the node the
+ // child plan is to be installed on.
+ ACE_CString child_uuid (this->plan_.UUID.in ());
+ child_uuid += "@";
+ child_uuid += this->node_manager_names_[i];
+
+ tmp_plan->UUID = CORBA::string_dup (child_uuid.c_str ());
+ tmp_plan->implementation.length (0);
+ tmp_plan->instance.length (0);
+ tmp_plan->connection.length (0);
+ tmp_plan->externalProperty.length (0);
+ tmp_plan->dependsOn.length (0);
+ tmp_plan->artifact.length (0);
+
+ // @@ There is an optimization point here, since we really don't have to
+ // pass the entire CIAOServerResources into each individual child plan.
+ tmp_plan->infoProperty = this->plan_.infoProperty;
+
+ //tmp_plan->infoProperty[0].name = CORBA::string_dup ("CIAOServerResource");
+ //tmp_plan->infoProperty[0].value = this->plan_.infoProperty[0].value;
+
+ Chained_Artifacts artifacts;
+
+ // Fill in the child_plan_ field, relinquishing ownership
+ artifacts.child_plan_ = tmp_plan._retn ();
+
+ // Fill in the node_manager_ field.
+ artifacts.node_manager_ =
+ this->deployment_config_.get_node_manager
+ (this->node_manager_names_[i].c_str ());
+
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find
+ (node_manager_names_[i], entry) == 0)
+ artifacts.old_child_plan_ = (entry->int_id_).child_plan_;
+ else
+ artifacts.old_child_plan_ = 0;
+
+ // In case we are doing redeployment, rebind will help replace the
+ // old child plan with the new child plan.
+ this->artifact_map_.rebind (node_manager_names_[i], artifacts);
+ }
+
+ // (1) Iterate over the <instance> field of the global DeploymentPlan
+ // structure.
+ // (2) Retrieve the necessary information to contruct the node-level
+ // plans one by one.
+ for ( i = 0; i < (this->plan_.instance).length (); ++i)
+ {
+ // @@TODO Fill in the child deployment plan in the map.
+ // If the component instance already exists in the child plan,
+ // then we overwrite the existing instance, since the new instance
+ // might have different resource usage requirements.
+
+
+
+ // Get the instance deployment description
+ const ::Deployment::InstanceDeploymentDescription & my_instance =
+ (this->plan_.instance)[i];
+
+ // Find the corresponding child deployment plan entry in
+ // the hash map for this instance.
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find
+ (ACE_CString (my_instance.node.in ()),
+ entry) != 0)
+ return 0; // no valid name found.
+
+ // Get the child plan.
+ ::Deployment::DeploymentPlan_var &child_plan =
+ (entry->int_id_).child_plan_;
+
+ // Fill in the contents of the child plan entry.
+
+ // Append the "MonolithicDeploymentDescriptions implementation"
+ // field with a new "implementation", which is specified by the
+ // <implementationRef> field of <my_instance> entry. NOTE: The
+ // <artifactRef> field needs to be changed accordingly.
+ const ::Deployment::MonolithicDeploymentDescription & my_implementation =
+ (this->plan_.implementation)[my_instance.implementationRef];
+
+ // Deployment::DnC_Dump::dump (this->plan_);
+ //Deployment::DnC_Dump::dump ( (this->plan_.implementation)[my_instance.implementationRef]);
+ //ACE_DEBUG ((LM_DEBUG, "My implementation"));
+ //Deployment::DnC_Dump::dump (my_implementation);
+
+ CORBA::ULong index_imp = child_plan->implementation.length ();
+ child_plan->implementation.length (++index_imp);
+ child_plan->implementation[index_imp-1] = my_implementation;
+
+ // Initialize with the correct sequence length.
+ CORBA::ULongSeq ulong_seq;
+ ulong_seq.length (my_implementation.artifactRef.length ());
+
+ // Append the "ArtifactDeploymentDescriptions artifact" field
+ // with some new "artifacts", which is specified by the
+ // <artifactRef> sequence of <my_implementation> entry.
+ const CORBA::ULong impl_length = my_implementation.artifactRef.length ();
+ for (CORBA::ULong iter = 0;
+ iter < impl_length;
+ iter ++)
+ {
+ CORBA::ULong artifact_ref = my_implementation.artifactRef[iter];
+
+ // Fill in the <artifact> field of the child plan
+ CORBA::ULong index_art = child_plan->artifact.length ();
+ child_plan->artifact.length (++index_art);
+ child_plan->artifact[index_art-1] =
+ (this->plan_.artifact)[artifact_ref];
+
+ // Fill in the <artifactRef> field of the MonolithicDeploymentDescription
+ ulong_seq[iter] = index_art-1;
+ }
+
+ // Change the <artifactRef> field of the "implementation".
+ child_plan->implementation[index_imp-1].artifactRef = ulong_seq;
+
+ // Append the "InstanceDeploymentDescription instance" field with
+ // a new "instance", which is almost the same as the "instance" in
+ // the global plan except the <implementationRef> field.
+ // NOTE: The <implementationRef> field needs to be changed accordingly.
+ CORBA::ULong index_ins = child_plan->instance.length ();
+ child_plan->instance.length (++index_ins);
+ child_plan->instance[index_ins-1] = my_instance;
+
+ // Change the <implementationRef> field of the "instance".
+ // @@ The implementationRef starts from 0.
+ // @@TODO: Below logic needs to be changed once we want to avoid
+ // duplicate <implementation> for the optimization.
+ child_plan->instance[index_ins-1].implementationRef = index_ins-1;
+ }
+
+ return 1;
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+add_connections (const Deployment::Connections & incoming_conn)
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::add_connections");
+
+ CORBA::ULong const old_len = this->all_connections_->length ();
+
+ // Expand the length of the <all_connection_> sequence.
+ this->all_connections_->length (old_len + incoming_conn.length ());
+
+ // Store the connections to the <all_conections_> sequence
+ const CORBA::ULong conn_lenth = incoming_conn.length ();
+ for (CORBA::ULong i = 0; i < conn_lenth; ++i)
+ {
+ (*this->all_connections_)[old_len + i] = incoming_conn[i];
+ }
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+startLaunch (const ::Deployment::Properties & configProperty,
+ ::CORBA::Boolean start)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::ResourceNotAvailable,
+ ::Deployment::StartError,
+ ::Deployment::InvalidProperty))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::startLaunch");
+ ACE_UNUSED_ARG (start);
+
+ try
+ {
+ // Clean up all cached connections first
+ this->all_connections_->length (0);
+
+ // Invoke startLaunch() operations on each cached NodeApplicationManager
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeApplicationManager object reference.
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::startLaunch -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to node manager: ");
+ error += this->node_manager_names_[i];
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl:startLaunch",
+ error.c_str ()));
+ }
+
+ ::Deployment::NodeApplicationManager_ptr my_nam =
+ (entry->int_id_).node_application_manager_.in ();
+
+ if (CORBA::is_nil (my_nam))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::startLaunch -"
+ "ERROR while narrowing the NAM "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("While starting launch, the DomainApplicationManager\
+ has a nil reference for NodeApplicationManager\n");
+ ACE_DEBUG ((LM_DEBUG, error.c_str ()));
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+
+
+ ::Deployment::Connections_var retn_connections;
+
+ // Obtained the returned NodeApplication object reference
+ // and the returned Connections variable.
+ ::Deployment::Application_var temp_application;
+ if (!is_redeployment_)
+ {
+ temp_application =
+ my_nam->startLaunch (configProperty,
+ retn_connections.out (),
+ 0);
+ }
+ else
+ {
+ //=============================================================
+ // Add New Components Logic
+ //=============================================================
+ // Let's add new components only now, the to-be-removed
+ // components should be removed AFTER the connections
+ // are removed.
+ temp_application =
+ my_nam->perform_redeployment (configProperty,
+ retn_connections.out (),
+ true, // add new components only now
+ 0);
+ }
+
+ // Narrow down to NodeApplication object reference
+ ::Deployment::NodeApplication_var my_na =
+ ::Deployment::NodeApplication::_narrow (temp_application.in ());
+
+ if (CORBA::is_nil (my_na.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::startLaunch -"
+ "ERROR while narrowing the NAM "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("The DomainApplicationManager receives a nil "
+ "reference of NodeApplication after calling "
+ "startLaunch on NodeApplicationManager.\n");
+ ACE_ERROR ((LM_ERROR, error.c_str ()));
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+
+ // Cache the returned set of connections into the list.
+ this->add_connections (retn_connections.in ());
+
+ // Cache the returned NodeApplication object reference into
+ // the hash table.
+ (entry->int_id_).node_application_ = my_na._retn ();
+ }
+
+ this->synchronize_shared_components_with_node_managers ();
+ }
+ catch (const Deployment::StartError& ex)
+ {
+ ACE_DEBUG ((LM_DEBUG, "DAM_Impl:StartError: %s, %s\n",
+ ex.name.in (),
+ ex.reason.in ()));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::startLaunch\t\n");
+ throw;
+ }
+
+}
+
+
+void
+CIAO::DomainApplicationManager_Impl::install_all_es (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ try
+ {
+ for (CORBA::ULong j = 0; j < this->esd_->length (); ++j)
+ {
+ // Find NA, and then invoke operation on it
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->esd_[j].node.in (),
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::install_all_es -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->esd_[j].node.in ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to NodeManager: ");
+ error += this->esd_[j].node.in ();
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl::install_all_es",
+ error.c_str ()));
+ }
+
+ // Invoke install_es () operation on each cached NodeApplication object.
+ ::Deployment::NodeApplication_ptr my_na =
+ (entry->int_id_).node_application_.in ();
+
+ ::CIAO::CIAO_Event_Service_var ciao_es =
+ my_na->install_es (this->esd_[j]);
+
+ // Add these returned ES objects into the cached map
+ this->add_es_to_map (this->esd_[j].name.in (), ciao_es.in ());
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::install_all_es.\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+add_es_to_map (const char * node_name,
+ CIAO::CIAO_Event_Service * ciao_es)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ try
+ {
+ this->es_map_.bind (
+ node_name,
+ CIAO::CIAO_Event_Service::_duplicate (ciao_es));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::add_es_to_map.\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+finishLaunch (CORBA::Boolean start,
+ CORBA::Boolean is_ReDaC)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::finishLaunch");
+ try
+ {
+ // Install all the CIAO_Event_Services within the Deployment Plan
+ this->install_all_es ();
+
+ // Invoke finishLaunch() operation on each cached NodeApplication object.
+ // This will establish bindings for only those internal components, but
+ // NOT for those external/shared components, which requires special
+ // handling, since these components are outside the control of this
+ // DomainApplicationManager.
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeApplication object reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> * entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::finishLaunch -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to NodeManager: ");
+ error += this->node_manager_names_[i];
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl::finishLaunch",
+ error.c_str ()));
+ }
+
+ //@@ Note: Don't delete the below debugging helpers.
+ // Dump the connections for debug purpose.
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ ACE_DEBUG ((LM_DEBUG,
+ "dump incoming connections for child plan:%s\n",
+ (entry->int_id_).child_plan_->UUID.in ()));
+ dump_connections (this->all_connections_.in ());
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ }
+
+ // Get the Connections variable, if ReDaC is true, then we get
+ // those new connections only. NOTE: get_outgoing_connections
+ // by default will get *all* connections.
+ Deployment::Connections * my_connections =
+ this->get_outgoing_connections (
+ (entry->int_id_).child_plan_.in (),
+ !is_ReDaC,
+ true, // we search *new* plan
+ DomainApplicationManager_Impl::Internal_Connections);
+
+ if (my_connections == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::finishLaunch -"
+ "ERROR while getting the outgoing connections "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl::finish_launch",
+ "There was some error establishing connections."));
+ }
+
+ // Dump the connections for debug purpose.
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ ACE_DEBUG ((LM_DEBUG,
+ "dump outgoing connections for child plan:%s\n",
+ (entry->int_id_).child_plan_->UUID.in ()));
+ dump_connections (*my_connections);
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ }
+
+ // Invoke finishLaunch() operation on NodeApplication.
+ if (my_connections->length () != 0)
+ {
+ entry->int_id_.node_application_->finishLaunch
+ (*my_connections,
+ start,
+ true // "true" => establish new connections only
+ );
+ }
+
+ //=============================================================
+ // Remove Old Connections Logic
+ //=============================================================
+
+ if (is_ReDaC) // We should also *REMOVE* unnecessary connections
+ {
+ // If this is a brand new child plan, then continue.
+ if ((entry->int_id_).old_child_plan_ == 0)
+ continue;
+
+ // Get all the connections in the old deployment plan
+ Deployment::Connections * connections_in_old_plan =
+ this->get_outgoing_connections (
+ (entry->int_id_).old_child_plan_.in (),
+ true, // yes, get *all* the connections
+ false, // search in the *old* plan
+ DomainApplicationManager_Impl::Internal_Connections);
+
+ // Pass in the "false" parameter to get *all* the connections in
+ // the new deployment plan, regardless those in old plan
+ Deployment::Connections * connections_in_new_plan =
+ this->get_outgoing_connections (
+ (entry->int_id_).child_plan_.in (),
+ true, // yes, get *all* the connections
+ true, // search in the *new* plan
+ DomainApplicationManager_Impl::Internal_Connections);
+
+ Deployment::Connections * unnecessary_connections =
+ this->subtract_connections (*connections_in_old_plan,
+ *connections_in_new_plan);
+
+ delete connections_in_old_plan;
+ delete connections_in_new_plan;
+
+ // Dump the connections for debug purpose.
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ ACE_DEBUG ((LM_DEBUG,
+ "dump to-be-removed connections for child plan:%s\n",
+ (entry->int_id_).child_plan_->UUID.in ()));
+ dump_connections (*unnecessary_connections);
+ ACE_DEBUG ((LM_DEBUG,
+ "==============================================\n"));
+ }
+
+ // Invoke finishLaunch() operation on NodeApplication.
+ if (unnecessary_connections->length () != 0)
+ {
+ if (CORBA::is_nil (entry->int_id_.node_application_.in ()))
+ throw Deployment::StartError ();
+
+ entry->int_id_.node_application_->finishLaunch
+ (*unnecessary_connections,
+ start,
+ false // false ==> remove unnecessary connections
+ );
+ }
+
+ //=============================================================
+ // Remove Old Components
+ //=============================================================
+ // Finally we need to remove those to-be-removed components
+ ::Deployment::Properties_var configProperty;
+ ACE_NEW (configProperty,
+ Deployment::Properties);
+
+ ::Deployment::Connections_var retn_connections;
+
+ Deployment::Application_var temp_application =
+ entry->int_id_.node_application_manager_->
+ perform_redeployment (configProperty,
+ retn_connections.out (),
+ false, // remove old components only
+ false);// do not "start"
+ }
+ }
+
+ // Establish bindings on external/shared components of this deployment plan.
+ this->post_finishLaunch ();
+ }
+ catch (const Deployment::StartError& ex)
+ {
+ ACE_ERROR ((LM_ERROR, "DAM_Impl::finishLaunch - StartError: %s, %s\n",
+ ex.name.in (),
+ ex.reason.in ()));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::finishLaunch: ""Killing NodeApplications.\n");
+
+ // Invoke destroyManager() operation on each cached
+ // NodeManager object.
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeManager and NodeApplicationManager object references.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> * entry = 0;
+ this->artifact_map_.find (this->node_manager_names_[i],entry);
+
+ ::Deployment::NodeApplicationManager_ptr
+ my_node_application_manager =
+ (entry->int_id_).node_application_manager_.in ();
+
+ // Invoke destoryApplication() operation on the NodeApplicationManger.
+ // Since we have the first arg is not used by NAM anyway.
+ my_node_application_manager->destroyApplication
+ (0);
+ }
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+post_finishLaunch (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ try
+ {
+ // For each "external" component...
+ CORBA::ULong length = this->shared_->length ();
+ for (CORBA::ULong j = 0; j < length; ++j)
+ {
+ // Construct <Component_Binding_Info> struct for the component
+ CIAO::Component_Binding_Info *
+ binding = this->populate_binding_info (
+ this->shared_[j].name.in (),
+ this->shared_[j].plan_uuid.in ());
+
+ // Invoke <finalize_global_binding> on ExecutionManager
+ this->execution_manager_->finalize_global_binding (
+ *binding, true);
+
+ delete binding;
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::post_finishLaunch.\n");
+ throw;
+ }
+
+}
+
+CIAO::Component_Binding_Info *
+CIAO::DomainApplicationManager_Impl::
+populate_binding_info (const ACE_CString& name,
+ const ACE_CString& child_uuid)
+{
+ CIAO::Component_Binding_Info * retv;
+ ACE_NEW_RETURN (retv,
+ CIAO::Component_Binding_Info (),
+ 0);
+
+ retv->name_ = name;
+
+ // Parse the child_uuid string and populate the "node" name and
+ // "plan_uuid" fields. Our protocol here is searching for the "@",
+ // the substring *before* that is the global plan uuid, and the
+ // substring *after* that is the node name.
+ ACE_CString::size_type pos = child_uuid.find ('@');
+
+ retv->plan_uuid_ =
+ child_uuid.substring (0, pos);
+
+ retv->node_ =
+ child_uuid.substring (pos + 1,
+ ACE_CString::npos); // get the rest of the string
+
+ Deployment::Connections_var connections;
+ ACE_NEW_RETURN (connections,
+ Deployment::Connections,
+ 0);
+
+ this->get_outgoing_connections_i (name.c_str (),
+ connections.inout (),
+ false, // get *all* connections
+ true); // search current plan
+
+ retv->providedReference_ = connections._retn ();
+
+ return retv;
+}
+
+CIAO::Component_Binding_Info *
+CIAO::DomainApplicationManager_Impl::
+populate_binding_info (const ACE_CString& name)
+{
+ CIAO::Component_Binding_Info * retv;
+ ACE_NEW_RETURN (retv,
+ CIAO::Component_Binding_Info (),
+ 0);
+
+ // Looking for the child plan uuid through the shared compoonent list
+ for (CORBA::ULong i = 0; i < this->shared_->length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->shared_[i].name.in (),
+ name.c_str ()) == 0)
+ {
+ ACE_CString child_uuid = this->shared_[i].plan_uuid.in ();
+ retv = this->populate_binding_info (name, child_uuid);
+ return retv;
+ }
+ }
+
+ return 0; // If no matching is found (should never happen).
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+add_shared_components (const Deployment::ComponentPlans & shared)
+{
+ for (CORBA::ULong i = 0; i < shared.length (); ++i)
+ {
+ CORBA::ULong curr_len = this->shared_->length ();
+ this->shared_->length (curr_len + 1);
+ this->shared_[curr_len] = shared[i];
+ }
+}
+
+bool
+CIAO::DomainApplicationManager_Impl::
+is_shared_component (const char * name)
+{
+ for (CORBA::ULong i = 0; i < this->shared_->length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->shared_[i].name.in (),
+ name) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+synchronize_shared_components_with_node_managers (void)
+{
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeManager object reference.
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::startLaunch -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to node manager: ");
+ error += this->node_manager_names_[i];
+
+ throw
+ (Deployment::StartError
+ ("DomainApplicationManager_Impl:startLaunch",
+ error.c_str ()));
+ }
+
+ // Update the shared components list
+ ::Deployment::NodeManager_ptr
+ my_node_manager = (entry->int_id_).node_manager_.in ();
+
+ Deployment::ComponentPlans_var
+ shared = my_node_manager->get_shared_components ();
+
+ this->add_shared_components (shared.in ());
+ }
+}
+
+
+Deployment::Connections *
+CIAO::DomainApplicationManager_Impl::
+get_outgoing_connections (const Deployment::DeploymentPlan &plan,
+ bool is_getting_all_connections,
+ bool is_search_new_plan,
+ Connection_Search_Type t)
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::get_outgoing_connections");
+ Deployment::Connections_var connections;
+ ACE_NEW_RETURN (connections,
+ Deployment::Connections,
+ 0);
+
+ // For each component instance in the child plan ...
+ CORBA::ULong number = plan.instance.length ();
+ for (CORBA::ULong i = 0; i < number; ++i)
+ {
+
+ if (t == Internal_Connections &&
+ this->is_shared_component (plan.instance[i].name.in ()))
+ continue;
+
+ // Get the outgoing connections of the component
+ if (!get_outgoing_connections_i (plan.instance[i].name.in (),
+ connections.inout (),
+ is_getting_all_connections,
+ is_search_new_plan))
+ return 0;
+ }
+ return connections._retn ();
+}
+
+
+// Get outgoing connections for particular instance
+bool
+CIAO::DomainApplicationManager_Impl::
+get_outgoing_connections_i (const char * instname,
+ Deployment::Connections & retv,
+ bool is_getting_all_connections,
+ bool is_search_new_plan)
+ ACE_THROW_SPEC ((Deployment::StartError))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::get_outoing_connections_i");
+
+ Deployment::DeploymentPlan tmp_plan;
+ if (is_search_new_plan)
+ tmp_plan = this->plan_;
+ else
+ tmp_plan = this->old_plan_;
+
+ // Search for all the bindings in the plan.
+ const CORBA::ULong total_length = tmp_plan.connection.length();
+ for (CORBA::ULong i = 0; i < total_length; ++i)
+ {
+ // Current binding that we are looking at.
+ const Deployment::PlanConnectionDescription & binding =
+ tmp_plan.connection[i];
+
+ // If this is a ReDaC case, then we ignore the connection if it
+ // already exists in the old_plan
+ if (already_exists (binding) &&
+ !is_getting_all_connections)
+ continue;
+
+ this->populate_connection_for_binding (instname,
+ binding,
+ tmp_plan,
+ retv);
+ }
+ return true;
+}
+
+// Search the current binding to see whether a connection of this
+// component needs to be populated
+bool
+CIAO::DomainApplicationManager_Impl::
+populate_connection_for_binding (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError))
+{
+ const CORBA::ULong binding_len = binding.internalEndpoint.length ();
+
+ // If only 1 internalEndpoint, then we know it's through event service.
+ if (binding_len == 1)
+ {
+ return
+ this->handle_es_connection (instname,
+ binding,
+ plan,
+ retv);
+ }
+ else if (binding_len == 2)
+ {
+ return this->handle_direct_connection (instname,
+ binding,
+ plan,
+ retv);
+ }
+ else // invalid binding encounted...
+ return false;
+}
+
+bool
+CIAO::DomainApplicationManager_Impl::
+handle_es_connection (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError))
+{
+ // The initial retv might have something inside
+ CORBA::ULong len = retv.length ();
+
+ const Deployment::PlanSubcomponentPortEndpoint & endpoint =
+ binding.internalEndpoint[0];
+
+ // If the instance name does NOT match one of the names in the binding
+ // Then thsi binding has nothing related to myself (an instance)
+ if (ACE_OS::strcmp (instname,
+ plan.instance[endpoint.instanceRef].name.in ()) != 0)
+ return false;
+
+ if (binding.externalReference.length () != 1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::"
+ "handle_publisher_es_connection -"
+ "externalReference must have length of 1.\n"));
+ return false;
+ }
+
+ retv.length (len+1);
+ retv[len].instanceName = instname;
+ retv[len].portName = endpoint.portName.in ();
+ retv[len].kind = endpoint.kind;
+
+ ACE_CString es_id = binding.externalReference[0].location.in ();
+
+ retv[len].endpointInstanceName = es_id.c_str ();
+ retv[len].endpointPortName = CORBA::string_dup ("CIAO_ES");
+
+ // We need to populate the actual filter and store it into
+ // the <connection.config> field
+ if (binding.deployRequirement.length () != 0)
+ {
+ retv[len].config =
+ * (this->get_connection_QoS_configuration (binding.deployRequirement[0]));
+ }
+
+ // If we didnt find the objref of the connection ...
+ CIAO::CIAO_Event_Service_var es;
+
+ if (this->es_map_.find (es_id.c_str (), es) != 0)
+ {
+ ACE_CString error ("Creating connections for ");
+ error += instname;
+ error += ": unable to find object reference for connection ";
+ error += binding.name.in ();
+ ACE_THROW_RETURN (Deployment::StartError
+ ("DomainApplicationManager_Impl::create_connections_i",
+ error.c_str ()),
+ false);
+ }
+
+ retv[len].event_service = es._retn ();
+
+ // One more thing needs to be done if this is a es_consumer connection
+ // We need to populate the <endpoint> field of this connection, which
+ // is the object reference of this event consumer port.
+ if (endpoint.kind == Deployment::EventConsumer)
+ {
+ // Now we search in the received connections to get the objRef of event sink
+ bool found = false;
+ const CORBA::ULong all_conn_len = this->all_connections_->length ();
+ for (CORBA::ULong j = 0; j < all_conn_len; ++j)
+ {
+ const Deployment::Connection & curr_recv_conn =
+ this->all_connections_[j];
+
+ // We need to look at the instance name and the port name to confirm.
+ if (ACE_OS::strcmp (curr_recv_conn.instanceName.in (),
+ instname) == 0 &&
+ ACE_OS::strcmp (curr_recv_conn.portName.in (),
+ endpoint.portName.in ()) == 0)
+ {
+ retv[len].endpoint =
+ CORBA::Object::_duplicate(curr_recv_conn.endpoint.in ());
+ found = true;
+ }
+ } // End of searching received connections
+
+ if (!found)
+ {
+ ACE_CString error ("Creating connections for ");
+ error += instname;
+ error += ": unable to find object reference for connection ";
+ error += binding.name.in ();
+ ACE_THROW_RETURN (Deployment::StartError
+ ("DomainApplicationManager_Impl::handle_es_connection",
+ error.c_str ()),
+ false);
+ }
+ }
+
+ return true;
+}
+
+bool
+CIAO::DomainApplicationManager_Impl::
+handle_direct_connection (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError))
+{
+ // The initial retv might have something inside
+ CORBA::ULong len = retv.length ();
+
+ const CORBA::ULong binding_len = binding.internalEndpoint.length ();
+ for (CORBA::ULong i = 0; i < binding_len; ++i)
+ {
+ const Deployment::PlanSubcomponentPortEndpoint & endpoint =
+ binding.internalEndpoint[i];
+
+ // If the instance name does NOT match one of the names in the binding
+ if (ACE_OS::strcmp (instname,
+ plan.instance[endpoint.instanceRef].name.in ()) != 0)
+ continue;
+
+ // We are only interested when we are the "client" of the endpoint objref
+ if (endpoint.kind == Deployment::EventPublisher ||
+ endpoint.kind == Deployment::EventEmitter ||
+ endpoint.kind == Deployment::SimplexReceptacle ||
+ endpoint.kind == Deployment::MultiplexReceptacle )
+ {
+ // Obtain the index of the "real" endpoint which has an objref. It
+ // is the opposite side of myself.
+ CORBA::ULong e_index = (i + 1) % 2;
+
+ ACE_CString source_port =
+ binding.internalEndpoint[i].portName.in ();
+
+ ACE_CString endpoint_inst =
+ plan.instance[binding.internalEndpoint[e_index]
+ .instanceRef].name.in ();
+
+ ACE_CString endpoint_port =
+ binding.internalEndpoint[e_index].portName.in ();
+
+ bool found = false;
+
+ // Now we search in the received connections to get the objRef.
+ const CORBA::ULong all_conn_len = this->all_connections_->length ();
+ for (CORBA::ULong j = 0; j < all_conn_len; ++j)
+ {
+ const Deployment::Connection & curr_recv_conn =
+ this->all_connections_[j];
+
+ // We need to look at the instance name and the port name to confirm.
+ if (ACE_OS::strcmp (curr_recv_conn.instanceName.in (),
+ endpoint_inst.c_str ()) == 0 &&
+ ACE_OS::strcmp (curr_recv_conn.portName.in (),
+ endpoint_port.c_str ()) == 0)
+ {
+ retv.length (len+1);
+ retv[len].instanceName = instname;
+ retv[len].portName = source_port.c_str ();
+ retv[len].endpointInstanceName = endpoint_inst.c_str ();
+ retv[len].endpointPortName = endpoint_port.c_str ();
+
+ retv[len].endpoint =
+ CORBA::Object::_duplicate(curr_recv_conn.endpoint.in ());
+ retv[len].kind = binding.internalEndpoint[i].kind;
+
+ ++len;
+ found = true;
+ break;
+ }
+ } // End of searching received connections
+
+ // We didnt find the objref of the connection ...
+ if (!found)
+ {
+ ACE_CString error ("Creating connections for ");
+ error += instname;
+ error += ": unable to find object reference for connection ";
+ error += binding.name.in ();
+ ACE_THROW_RETURN (Deployment::StartError
+ ("DomainApplicationManager_Impl::create_connections_i",
+ error.c_str ()),
+ false);
+ }
+ break;
+ }
+ }
+ return true;
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+start ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::StartError))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::start");
+
+ try
+ {
+ CORBA::ULong i;
+
+ for (i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeApplication object reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::start -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to node manager: ");
+ error += this->node_manager_names_[i];
+
+ throw Deployment::StartError(
+ "DomainApplicationManager_Impl:startLaunch",
+ error.c_str ());
+ }
+
+ ::Deployment::NodeApplication_ptr my_na =
+ (entry->int_id_).node_application_.in ();
+
+ my_na->ciao_preactivate ();
+ }
+
+ // Invoke start () operation on each cached NodeApplication object.
+ for (i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeApplication object reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::start -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ throw Deployment::StartError ();
+ }
+
+ ::Deployment::NodeApplication_ptr my_na =
+ (entry->int_id_).node_application_.in ();
+
+ my_na->start ();
+ }
+
+ // Invoke ciao_postctivate () operation on each
+ // cached NodeApplication object.
+
+ for (i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeApplication object reference.
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::start -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to node manager: ");
+ error += this->node_manager_names_[i];
+
+ throw Deployment::StartError(
+ "DomainApplicationManager_Impl:startLaunch",
+ error.c_str ());
+ }
+
+ ::Deployment::NodeApplication_ptr my_na =
+ (entry->int_id_).node_application_.in ();
+
+ my_na->ciao_postactivate ();
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("DomainApplicationManager_Impl::start\t\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+destroyApplication ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::StopError))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::destroyApplication");
+ try
+ {
+ // Passivate shared components also, which should delegate to EM to handle
+ this->passivate_shared_components ();
+
+ // Passivate all components associated with the plan
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) DomainApplicationManager_Impl.cpp -"
+ "CIAO::DomainApplicationManager_Impl::destroyApplication -"
+ "ERROR while finding the node specific plan "
+ "for the node [%s] \n",
+ this->node_manager_names_[i].c_str ()));
+
+ ACE_CString error
+ ("Unable to resolve a reference to NodeManager: ");
+ error += this->node_manager_names_[i];
+
+ throw
+ (Deployment::StopError
+ ("DomainApplicationManager_Impl::destroyApplication",
+ error.c_str ()));
+ }
+ ACE_DEBUG ((LM_DEBUG, "DAM_Impl: Invoking passivate on %s\n",
+ this->node_manager_names_[i].c_str ()));
+
+ // Invoke ciao_passivate () operation on each cached NodeApplication object.
+ ::Deployment::NodeApplication_ptr my_na =
+ (entry->int_id_).node_application_.in ();
+
+ my_na->ciao_passivate ();
+ }
+
+ // Remove all connections associated with the plan
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ this->artifact_map_.find (this->node_manager_names_[i], entry);
+
+ Deployment::Connections_var connections =
+ this->get_outgoing_connections (
+ (entry->int_id_).child_plan_.in (),
+ true, // yes, get *all* the connections
+ true, // yes, we search the current plan
+ DomainApplicationManager_Impl::External_Connections);
+
+ // Invoke finishLaunch() on NodeApplication to remove bindings.
+ // If this NodeApplication is not within the control of this DAM,
+ // then we should delegate the call to the correct DAM through EM.
+
+ // Iterave over the returned connection list in <connections>,
+ // (1) If this is a shared component, then we remove this connection
+ // from <connections> list, and then populate a "Component_Binding_Info"
+ // struct for it and send to EM for remove.
+ // (2) For the rest of the connections, we send them to the NAs
+ // managed by the local DAM to remove.
+
+ for (CORBA::ULong j = 0; j < connections->length (); ++j)
+ {
+ if (this->is_shared_component (connections[j].instanceName.in ()))
+ {
+ // ask EM to remove the binding for us
+ ACE_CString inst_name = connections[j].instanceName.in ();
+ CIAO::Component_Binding_Info *
+ binding = this->populate_binding_info (inst_name.c_str ());
+
+ this->execution_manager_->finalize_global_binding (
+ *binding, false);
+
+ // Remove all the connections whose "source" component
+ // is this component instance from the <connections> list
+ this->purge_connections (connections,
+ inst_name.c_str ());
+ }
+ }
+
+ if (connections->length () > 0)
+ {
+ entry->int_id_.node_application_->finishLaunch
+ (connections.in (),
+ true, // "true" ==> start the components
+ false // "false" => remove connections
+ );
+ }
+
+ }
+
+ // After all the connections are removed, we actually destroy
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ ACE_Hash_Map_Entry <ACE_CString, Chained_Artifacts> *entry = 0;
+
+ this->artifact_map_.find (this->node_manager_names_[i], entry);
+
+ // Invoke destroyPlan() operation on the NodeManager
+ Deployment::NodeManager_var
+ my_node_manager = (entry->int_id_).node_manager_;
+
+ my_node_manager->destroyPlan ((entry->int_id_).child_plan_);
+ }
+
+ // ??
+ // Shall we invoke destroyManager () operation on the NodeManager, since we need
+ // to clean up all the NodeApplicationManagers associated with this deployment
+ // plan (one NodeApplicationManager per Node per plan).
+
+ // We should again activate those shared components
+ this->activate_shared_components ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::destroyApplication\t\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+destroyManager ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::destroyManager");
+ try
+ {
+ for (CORBA::ULong i = 0; i < this->num_child_plans_; ++i)
+ {
+ // Get the NodeManager and NodeApplicationManager object references.
+ ACE_Hash_Map_Entry
+ <ACE_CString,
+ Chained_Artifacts> *entry = 0;
+
+ if (this->artifact_map_.find (this->node_manager_names_[i],
+ entry) != 0)
+ throw Deployment::StopError (); // Should never happen!
+
+ ::Deployment::NodeManager_var my_node_manager =
+ (entry->int_id_).node_manager_;
+
+ ::Deployment::NodeApplicationManager_var my_nam =
+ (entry->int_id_).node_application_manager_;
+
+ my_node_manager->destroyManager (my_nam.in ());
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::destroyManager\t\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+perform_redeployment (
+ const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::PlanError,
+ Deployment::InstallationFailure,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InvalidConnection,
+ ::Components::RemoveFailure))
+{
+ // Currently we could dynamically update the NodeManagerMap topology,
+ // but later maybe we could add another parameter to this operation,
+ // which allows the user to specify the new NodeManagerMap data file.
+ this->old_plan_ = this->plan_;
+ this->is_redeployment_ = true;
+ this->plan_ = plan;
+
+ try
+ {
+ // Call init() on the myself, which will validate/split the plan and
+ // call preparePlan on each NodeManager, by this, we shall get
+ // all the object references of NM and NAM associated with each
+ // component instance populated.
+ this->init ();
+
+ // Call startLaunch on each NM for each child plan, this should not only
+ // install all the new components specified, but should also remove
+ // the components that are no longer in the new deployment plan.
+ // Meanwhile, we should set up the container configurations appropriately,
+ // whose information is fully captured in the node-level deployment plan.
+ ::Deployment::Properties_var properties;
+ ACE_NEW (properties,
+ Deployment::Properties);
+
+ this->startLaunch (properties.in (), false);
+
+ // finishLaunch will (1) establish new connections, and (2)
+ // get rid of those non-existing connections. As we know, in the
+ // node level, the connections are cached within the NodeApplication *and*
+ // Container, then we should modify the implementation of the
+ // <finishLaunch> on the NodeApplication to accomplish this.
+ this->finishLaunch (true, true); // true means start activation also.
+ // ture means "ReDaC" is desired
+
+ this->start ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::perform_redeployment\t\n");
+ this->plan_ = this->old_plan_;
+ throw;
+ }
+}
+
+
+// Returns the DeploymentPlan associated with this ApplicationManager.
+::Deployment::DeploymentPlan *
+CIAO::DomainApplicationManager_Impl::
+getPlan ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::getPlan");
+ Deployment::DeploymentPlan_var plan = 0;
+ // Make a deep copy of the Plan
+ ACE_NEW_THROW_EX (plan,
+ Deployment::DeploymentPlan (this->plan_),
+ CORBA::NO_MEMORY ());
+
+ // Transfer ownership
+ return plan._retn ();
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+dump_connections (const ::Deployment::Connections & connections)
+{
+ CIAO_TRACE("CIAO::DomainApplicationManager_Impl::dump_connections");
+ const CORBA::ULong conn_len = connections.length ();
+ for (CORBA::ULong i = 0; i < conn_len; ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "instanceName: %s\n", connections[i].instanceName.in ()));
+
+ ACE_DEBUG ((LM_DEBUG, "portName: %s\n", connections[i].portName.in ()));
+
+ ACE_DEBUG ((LM_DEBUG, "portkind: "));
+
+ switch (connections[i].kind)
+ {
+ case Deployment::Facet:
+
+ ACE_DEBUG ((LM_DEBUG, "Facet\n"));
+ break;
+
+ case Deployment::SimplexReceptacle:
+
+ ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n"));
+ break;
+
+ case Deployment::MultiplexReceptacle:
+
+ ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n"));
+ break;
+
+ case Deployment::EventEmitter:
+
+ ACE_DEBUG ((LM_DEBUG, "EventEmitter\n"));
+ break;
+
+ case Deployment::EventPublisher:
+
+ ACE_DEBUG ((LM_DEBUG, "EventPublisher\n"));
+ break;
+
+ case Deployment::EventConsumer:
+
+ ACE_DEBUG ((LM_DEBUG, "EventConsumer\n"));
+ break;
+
+ default:
+ ACE_DEBUG ((LM_DEBUG, "Unknown port kind.\n"));
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "endpointInstanceName: %s\n",
+ connections[i].endpointInstanceName.in ()));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "endpointPortName: %s\n",
+ connections[i].endpointPortName.in ()));
+ ACE_DEBUG ((LM_DEBUG, "---------------------\n"));
+ }
+}
+
+bool
+CIAO::DomainApplicationManager_Impl::
+already_exists (const Deployment::PlanConnectionDescription & conn)
+{
+ const CORBA::ULong conn_len = this->old_plan_.connection.length();
+ for(CORBA::ULong i = 0; i < conn_len; ++i)
+ {
+ if (ACE_OS::strcmp (this->old_plan_.connection[i].name.in (),
+ conn.name.in ()) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+Deployment::Connections *
+CIAO::DomainApplicationManager_Impl::
+subtract_connections (const Deployment::Connections & left,
+ const Deployment::Connections & right)
+{
+ Deployment::Connections_var retv;
+ ACE_NEW_RETURN (retv,
+ Deployment::Connections,
+ 0);
+
+ CORBA::ULong left_length = left.length ();
+ CORBA::ULong right_length = right.length ();
+ for (CORBA::ULong i = 0; i < left_length; ++i)
+ {
+ bool found = false;
+ for (CORBA::ULong j = 0; j < right_length; ++j)
+ {
+ if (ACE_OS::strcmp (left[i].instanceName.in (),
+ right[j].instanceName.in ()) == 0 &&
+ ACE_OS::strcmp (left[i].portName.in (),
+ right[j].portName.in ()) == 0 &&
+ left[i].kind == right[j].kind &&
+ left[i].endpoint->_is_equivalent (right[j].endpoint.in ()))
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ CORBA::ULong curr_length = retv->length ();
+ retv->length (curr_length + 1);
+ retv[curr_length] = left[i];
+ }
+ }
+ return retv._retn ();
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+passivate_shared_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ try
+ {
+ // For each "external" component...
+ CORBA::ULong length = this->shared_->length ();
+ for (CORBA::ULong j = 0; j < length; ++j)
+ {
+ // Construct <Component_Binding_Info> struct for the component
+ CIAO::Component_Binding_Info *
+ binding = this->populate_binding_info (
+ this->shared_[j].name.in (),
+ this->shared_[j].plan_uuid.in ());
+
+ // Invoke <finalize_global_binding> on ExecutionManager
+ this->execution_manager_->passivate_shared_components (
+ *binding);
+
+ delete binding;
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::passivate_shared_components.\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+activate_shared_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ try
+ {
+ // For each "external" component...
+ CORBA::ULong length = this->shared_->length ();
+ for (CORBA::ULong j = 0; j < length; ++j)
+ {
+ // Construct <Component_Binding_Info> struct for the component
+ CIAO::Component_Binding_Info *
+ binding = this->populate_binding_info (
+ this->shared_[j].name.in (),
+ this->shared_[j].plan_uuid.in ());
+
+ // Invoke <finalize_global_binding> on ExecutionManager
+ this->execution_manager_->activate_shared_components (
+ *binding);
+
+ delete binding;
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "DomainApplicationManager_Impl::activate_shared_components.\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::DomainApplicationManager_Impl::
+purge_connections (Deployment::Connections_var & connections,
+ const char * inst)
+{
+ CORBA::ULong total_len = connections->length ();
+
+ for (CORBA::ULong i = 0; i < total_len; ++i)
+ {
+ bool found = false;
+
+ // Remove all the connections whose "source" component
+ // name is <inst>
+ if (ACE_OS::strcmp (connections[i].instanceName.in (),
+ inst) == 0)
+ {
+ found = true;
+
+ for (CORBA::ULong j = i; j < total_len - 1; ++j)
+ {
+ connections[j] = connections[j + 1];
+ }
+ connections->length (total_len - 1);
+ }
+
+ if (found)
+ this->purge_connections (connections, inst);
+ }
+}
+
+const Deployment::Properties *
+CIAO::DomainApplicationManager_Impl::
+get_connection_QoS_configuration (const Deployment::Requirement & requirement)
+{
+ // Get the name/identifier of the filter associated with
+ // this connection
+ Deployment::Properties * retv;
+ ACE_NEW_NORETURN (retv, Deployment::Properties);
+
+ CORBA::ULong len = retv->length ();
+
+ for (CORBA::ULong i = 0;
+ i < requirement.property.length ();
+ ++i)
+ {
+ const char *filter_name;
+ if (ACE_OS::strcmp ("EventFilter",
+ requirement.property[i].name) == 0)
+ {
+
+ if ((requirement.property[i].value >>= filter_name) == false)
+ ACE_ERROR ((LM_ERROR,
+ "ERROR: DomainApplicationManager_Impl::"
+ "get_connection_QoS_configuration unable to "
+ "extract event filter information\n"));
+ }
+
+ // Search for the desired filter
+ for (CORBA::ULong j = 0; j < this->esd_->length (); ++j)
+ {
+ // Populate the "filters" info, in case this CIAO_Event_Service has
+ // one or more filters specified through descriptors
+ for (CORBA::ULong k = 0; k < this->esd_[j].filters.length (); ++k)
+ {
+ if (ACE_OS::strcmp (this->esd_[j].filters[k].name.in (),
+ filter_name) == 0)
+ {
+ retv->length (len + 1);
+ (*retv)[len].name = CORBA::string_dup ("EventFilter");
+ (*retv)[len].value <<= this->esd_[j].filters[k];
+ break;
+ }
+ }
+ }
+ }
+ return retv;
+}
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
new file mode 100644
index 00000000000..f9ebd9dba06
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.h
@@ -0,0 +1,504 @@
+//==================================================================
+/**
+ * @file DomainApplicationManager_Impl.h
+ *
+ * $Id$
+ *
+ * This file contains implementation for the servant of
+ * Deployment::DomainApplicationManager.
+ *
+ * @author Gan Deng <gan.deng@vanderbilt.edu>
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ */
+//=====================================================================
+
+#ifndef CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H
+#define CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+#include "ace/Hash_Map_Manager.h"
+#include "ace/Vector_T.h"
+#include "ace/Functor.h"
+#include "ace/OS_NS_string.h"
+
+#include "ciao/Deployment_DomainApplicationManagerS.h"
+#include "ciao/Deployment_common.h"
+
+#include "tao/Valuetype/ValueBase.h"
+#include "tao/Valuetype/Valuetype_Adapter_Impl.h"
+
+#include "ciao/CIAO_common.h"
+#include "ciao/Deployment_EventsC.h"
+
+#include "Deployment_Configuration.h"
+#include "DomainApplicationManager_Export.h"
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ class Execution_Manager_Impl;
+ }
+
+ /**
+ * @class DomainApplicationManager_Impl
+ *
+ * @brief A servant for the Deployment::DomainApplicationManager
+ * interface. The DomainApplicationManager is responsible for
+ * deploying an application on the domain level, i.e. across
+ * nodes. It specializes the ApplicationManager abstract interface.
+ */
+ class DomainApplicationManager_Export DomainApplicationManager_Impl
+ : public virtual POA_Deployment::DomainApplicationManager
+ {
+ public:
+
+ /// External_Connections means we search all the connections including
+ /// the connectiosn for external/shared components of this plan which hold
+ /// port objrefs of components within this plan
+ enum Connection_Search_Type
+ {
+ External_Connections,
+ Internal_Connections
+ };
+
+ /// Define the type which contains a list of DnC artifacts.
+ /// @@ Assumption: Each NodeApplicationManager create only one
+ /// NodeApplication when the startLaunch() operation is invoked,
+ /// which means all the nodes on that child plan are collocated in
+ /// the same process.
+ typedef struct _chained_artifacts
+ {
+ ::Deployment::NodeManager_var node_manager_;
+ ::Deployment::DeploymentPlan_var child_plan_;
+ ::Deployment::NodeApplicationManager_var node_application_manager_;
+ ::Deployment::NodeApplication_var node_application_;
+ ::Deployment::DeploymentPlan_var old_child_plan_;
+ } Chained_Artifacts;
+
+ /// Constructor
+ DomainApplicationManager_Impl (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ Deployment::TargetManager_ptr manager,
+ Execution_Manager::Execution_Manager_Impl * em,
+ const Deployment::DeploymentPlan &plan,
+ const char * deployment_file)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ /*===========================================================
+ * Below are helper methods for the DomainApplicationManager
+ *
+ *============================================================*/
+ /**
+ * Initialize the DomainApplicationManager.
+ * @para em A pointer to the ExecutionManager servant C++ object.
+ *
+ * (1) Set the total number of child plans.
+ * (2) Set the list of NodeManager names, which is an array of strings.
+ * The <node_manager_names> is a pointer to an array of ACE_CString
+ * objets, which is allocated by the caller and deallocated by the
+ * DomainApplicationManager destructor.
+ * (3) Check the validity of the deployment plan and the deployment
+ * information data file.
+ * (4) Call split_plan () member function.
+ * (5) Invoke all the preparePlan () operations on all the corresponding
+ * NodeManagers with child plans.
+ *
+ *
+ * @@ What else do we need to initialize here?
+ */
+ void init ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::PlanError));
+
+ /**
+ * set_uuid method on the DomainApplicationManager assigns the
+ * UUID of the associated plan to this Manager. This helps in
+ * reverse lookup operations such as given a manager, obtaining
+ * the UUID associated. The get_uuid method is used in this case.
+ */
+ void set_uuid (const char * uuid);
+
+ const char * get_uuid () const;
+
+ /*===========================================================
+ * Below are operations from the DomainApplicationManager
+ *
+ *============================================================*/
+
+ /**
+ * Fetch the NodeApplication object reference based on the NodeManager name.
+ */
+ virtual Deployment::NodeApplication_ptr get_node_app (
+ const char * node_name)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::NoSuchName));
+
+ /**
+ * Executes the application, but does not start it yet. Users can
+ * optionally provide launch-time configuration properties to
+ * override properties that are part of the plan. Raises the
+ * InvalidProperty exception if a configuration property is
+ * invalid. Raises the StartError exception if an error occurs
+ * during launching. Raises the ResourceNotAvailable exception if
+ * the commitResources parameter to the prepare operation of the
+ * ExecutionManager was true, if late resource allocation is used,
+ * and one of the requested resources is not available.
+ */
+ virtual void
+ startLaunch (const ::Deployment::Properties & configProperty,
+ ::CORBA::Boolean start)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::ResourceNotAvailable,
+ ::Deployment::StartError,
+ ::Deployment::InvalidProperty));
+
+ /**
+ * The second step in launching an application in the
+ * domain-level. If the start parameter is true, the application
+ * is started as well. Raises the StartError exception if
+ * launching or starting the application fails.
+ */
+ virtual void finishLaunch (CORBA::Boolean start,
+ CORBA::Boolean is_ReDAC)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::StartError));
+
+ /**
+ * The last step in launching an application in the
+ * domain-level. We establish connection bindings
+ * for external/shared components of this deployment plan
+ * components.
+ * Internally, this operation will invoke some operations
+ * on ExecutionManager to finish up this task.
+ */
+ virtual void post_finishLaunch (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void passivate_shared_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void activate_shared_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /**
+ * Starts the application. Raises the StartError exception if
+ * starting the application fails.
+ */
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::StartError));
+
+ /**
+ * Terminates a running application. Raises the StopError
+ * exception if an error occurs during termination. Raises the
+ * InvalidReference exception if the appliction reference is
+ * unknown.
+ */
+ virtual void destroyApplication ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::StopError));
+
+ /**
+ * Returns the DeploymentPlan associated with this ApplicationManager.
+ */
+ virtual ::Deployment::DeploymentPlan * getPlan ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /**
+ * This is a helper function to destroy the NodeAppManager.
+ * Since we don't want to do so in the destructor so we will
+ * ask the ExecutionManager to do this on us when the same IDL
+ * op invoked on it. This is part of the result for merging DAM
+ * with DA.
+ */
+ virtual void destroyManager ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError));
+
+ // The input parameter is a *new_plan* which has the
+ // same UUID of the existing running plan.
+ virtual void
+ perform_redeployment (
+ const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::PlanError,
+ Deployment::InstallationFailure,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InvalidConnection,
+ ::Components::RemoveFailure));
+
+ protected:
+ /// Destructor
+ virtual ~DomainApplicationManager_Impl (void);
+
+ /**
+ * (1) Parse the global deployment plan, get the total number of
+ * child plans included in the global plan, and get the list of
+ * names of NodeManagers for each child plan.
+ * (2) Check whether all the NodeManager names are present in the
+ * deployment information data file.
+ */
+ bool get_plan_info (void);
+
+ /**
+ * Split the global (domain-level) deployment plan to a set of
+ * local (node-level) deployment plans. The set of local plans
+ * are cached in the ACE hash map member variable.
+ * Also, fill in the <node_manager_> field of the Chained_Artifacts
+ * struct.
+ */
+ int split_plan (void);
+
+ /**
+ * Construct <Component_Binding_Info> struct for the component instance.
+ *
+ * @param name component instance name
+ * @param child_uuid child plan uuid string
+ */
+ CIAO::Component_Binding_Info *
+ populate_binding_info (const ACE_CString& name,
+ const ACE_CString& child_uuid);
+
+ /**
+ * Construct <Component_Binding_Info> struct for the component instance.
+ * Fetch the plan_uuid info from the internally cached shared component
+ * list.
+ *
+ * @param name component instance name
+ */
+ CIAO::Component_Binding_Info *
+ populate_binding_info (const ACE_CString& name);
+
+ /**
+ * Contact each NodeManager to get shared compnents information
+ * and then update its internal cache.
+ */
+ void synchronize_shared_components_with_node_managers (void);
+
+ /**
+ * A helper function to add a list of shared components into
+ * the cached shared component list.
+ *
+ * @param shared A list of shared components to be added.
+ */
+ void add_shared_components (const Deployment::ComponentPlans & shared);
+
+ /**
+ * A private function to check whether a component is in the shared
+ * component list.
+ *
+ * @param name The name of a component instance.
+ */
+ bool is_shared_component (const char * name);
+
+ /**
+ * Cache the incoming connections, which is a sequence of Connections,
+ * into the <all_connections_> list.
+ */
+ void add_connections (const Deployment::Connections & incoming_conn);
+
+ /**
+ * Given a child deployment plan, find the <Connections> sequence
+ * of the "providedReference" for the component instances in the
+ * child deployment plan as Receiver side.
+ * By default, we search in the new plan.
+ *
+ * If <is_getting_all_connections> is false, then we only
+ * search for "new connections" (valid for ReDaC case only).
+ * Otherwise, we will search for both new connections and those
+ * already existing connections.
+ */
+ Deployment::Connections *
+ get_outgoing_connections (const Deployment::DeploymentPlan &plan,
+ bool is_getting_all_connections = true,
+ bool is_search_new_plan = true,
+ Connection_Search_Type t = Internal_Connections);
+
+ /// This is a helper function to find the connection for a component.
+ bool
+ get_outgoing_connections_i (const char * instname,
+ Deployment::Connections & retv,
+ bool is_ReDAC,
+ bool is_search_new_plan)
+ ACE_THROW_SPEC ((Deployment::StartError));
+
+ bool
+ populate_connection_for_binding (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError));
+
+ bool
+ handle_es_connection (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError));
+
+ bool
+ handle_direct_connection (
+ const char * instname,
+ const Deployment::PlanConnectionDescription & binding,
+ const Deployment::DeploymentPlan & plan,
+ Deployment::Connections & retv)
+ ACE_THROW_SPEC ((Deployment::StartError));
+
+ /// Dump connections, a static method
+ void dump_connections (const ::Deployment::Connections & connections);
+
+ /// Check whether a connection already exists in the cached old plan
+ bool already_exists (const Deployment::PlanConnectionDescription & conn);
+
+ /// Remove those appeared in <right> from the <left>
+ Deployment::Connections *
+ subtract_connections (const Deployment::Connections & left,
+ const Deployment::Connections & right);
+
+ void
+ purge_connections (Deployment::Connections_var & connections,
+ const char * inst);
+
+ /**
+ * The first step in finish_launching an application in the
+ * domain-level. We install all the CIAO_Event_Service objects
+ * as specified in the DeploymentPlan.
+ * Internally, this operation will invoke an operation on each cached
+ * NodeApplication object.
+ */
+ virtual void install_all_es (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /**
+ * Add all CIAO_Event_Service objects into the cached map.
+ */
+ virtual void
+ add_es_to_map (const char* node_name,
+ CIAO::CIAO_Event_Service * ciao_es)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /**
+ * Get the actual event connection QoS properties based on the
+ * deployment requirement. The deployment requirement only specifies
+ * an identifier/reference to the EventServiceDeploymentDescriptions.
+ */
+ virtual const Deployment::Properties *
+ get_connection_QoS_configuration (
+ const Deployment::Requirement & requirement);
+
+ protected:
+ /// location of the Domainapplication
+ CORBA::String_var domainapp_path_;
+
+ /// Keep a pointer to the managing ORB serving this servant.
+ CORBA::ORB_var orb_;
+
+ /// Keep a pointer to the managing POA.
+ PortableServer::POA_var poa_;
+
+ /// Pointer to the ExecutionManager_Impl "singleton" servant object
+ /// We could do this because ExecutionManager and DomainApplicationManager
+ /// are always collocated in the same process, so we don't have
+ /// to pass CORBA object reference back and forth.
+ Execution_Manager::Execution_Manager_Impl * execution_manager_;
+
+ /// Cache a list of shared components
+ Deployment::ComponentPlans_var shared_;
+
+ /// Cache the ior of the previous reference
+ CORBA::String_var ior_;
+
+ /// Cached TargetManager.
+ Deployment::TargetManager_var target_manager_;
+
+ /// Cached deployment plan for the particular domain.
+ /// The plan will be initialized when init is called.
+ Deployment::DeploymentPlan plan_;
+
+ /// Cached old deployment plan, i.e., before redeployment
+ Deployment::DeploymentPlan old_plan_;
+
+ /// Cached child plans.
+ //Deployment::DeploymentPlan * child_plan_;
+
+ /// Total number of child deployment plans.
+ size_t num_child_plans_;
+
+ /// The list of node manager names, each of them
+ /// corresponds to one child plan.
+ ACE_Vector<ACE_CString> node_manager_names_;
+
+ /// Cached information for NodeManager, NodeApplicationManager,
+ /// NodeApplication, Connections, etc.
+ /// Key: NodeManager name with CString type.
+ /// Value: Chained_Artifacts struct type.
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Chained_Artifacts,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Chained_Artifacts_Table;
+
+ Chained_Artifacts_Table artifact_map_;
+
+ /// Cached information of all the CIAO_Event_Service objects within
+ /// the deployment plan
+ /// Key: the string identifier of the CIAO_Event_Service
+ /// Value: the object reference of the CIAO_Event_Service
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ CIAO::CIAO_Event_Service_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Event_Service_Table;
+
+ Event_Service_Table es_map_;
+
+ /// The deployment information data file.
+ const char * deployment_file_;
+
+ /// Deployment Configuration info, which contains the deployment topology.
+ Deployment_Configuration deployment_config_;
+
+ /// UUID from the Plan
+ CORBA::String_var uuid_;
+
+ /// Maintain a list of <Connections>, each of which is obtained by
+ /// calling the startLaunch() method on the NodeApplicationManager object.
+ ::Deployment::Connections_var all_connections_;
+
+ /// This variable is used to control the execution path of some
+ /// member function implementations. The reason is because we want
+ /// to avoid unnecessary code duplicate. The default value is "false".
+ bool is_redeployment_;
+
+ /// Cache the CIAO_Event_Service deployment description
+ CIAO::DAnCE::EventServiceDeploymentDescriptions_var esd_;
+ };
+}
+
+#if defined (__ACE_INLINE__)
+# include "DomainApplicationManager_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_DOMAINAPPLICATIONMANAGER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl
new file mode 100644
index 00000000000..b50adfbc712
--- /dev/null
+++ b/modules/CIAO/DAnCE/DomainApplicationManager/DomainApplicationManager_Impl.inl
@@ -0,0 +1,16 @@
+// -*- C++ -*-
+//
+// $Id$
+
+ACE_INLINE const char *
+CIAO::DomainApplicationManager_Impl::get_uuid () const
+{
+ return this->uuid_;
+}
+
+ACE_INLINE void
+CIAO::DomainApplicationManager_Impl::set_uuid (const char * uuid)
+{
+ // Copy this uuid reference
+ this->uuid_ = CORBA::string_dup (uuid);
+}
diff --git a/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.cpp b/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.cpp
new file mode 100644
index 00000000000..350fb63d331
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.cpp
@@ -0,0 +1,122 @@
+#include "DAM_Map.h"
+#include "ciao/CIAO_Config.h"
+#include "ciao/CIAO_common.h"
+
+ACE_RCSID (ExecutionManager,
+ DAM_Map,
+ "$Id$")
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ DAM_Map::DAM_Map (void)
+ : map_ (CIAO_DEFAULT_MAP_SIZE)
+ {
+ }
+
+ size_t
+ DAM_Map::size (void)
+ {
+ return this->map_.current_size ();
+ }
+
+ bool
+ DAM_Map::is_plan_available (const ACE_CString &str)
+ {
+ CIAO_TRACE("Execution_Manager::DAM_Map::is_plan_available");
+ if (this->map_.find (str) == 0)
+ return true;
+
+ return false;
+ }
+
+ ::Deployment::DomainApplicationManager_ptr
+ DAM_Map::fetch_dam_reference (const ACE_CString &str)
+ {
+ CIAO_TRACE("Execution_Manager::DAM_Map::fetch_dam_reference");
+ if (!this->is_plan_available (str))
+ return ::Deployment::DomainApplicationManager::_nil ();
+
+ ::Deployment::DomainApplicationManager_var tmp;
+
+ /// There should be duplicate when assigning a _var to an _var.
+ int const retval = this->map_.find (str,
+ tmp);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) CIAO_ExecutionManager: fetch_dam_reference, "
+ "result from find is [%d] \n",
+ retval));
+ }
+
+ return tmp._retn ();
+ }
+
+
+ bool
+ DAM_Map::bind_dam_reference (
+ const ACE_CString &str,
+ ::Deployment::DomainApplicationManager_ptr dam)
+ {
+ CIAO_TRACE("Execution_Manager::DAM_Map::bind_dam_reference");
+ int const retval =
+ this->map_.rebind (str,
+ dam);
+
+ if (retval != 0)
+ return false;
+
+ return true;
+ }
+
+
+ Deployment::DomainApplicationManagers *
+ DAM_Map::get_dams ()
+ {
+ CIAO_TRACE("Execution_Manager::DAM_Map::get_dams");
+ CORBA::ULong const sz =
+ this->map_.current_size ();
+
+ // Initialize the list of DomainApplication Managers
+ Deployment::DomainApplicationManagers_var list;
+ ACE_NEW_THROW_EX (list,
+ Deployment::DomainApplicationManagers (sz),
+ CORBA::NO_MEMORY());
+
+ // Add the manager to the list
+ list->length (sz);
+
+ Iterator end =
+ this->map_.end ();
+
+ CORBA::ULong i = 0;
+
+ for (Iterator b =
+ this->map_.begin (); b != end; ++b)
+ {
+ list [i] =
+ Deployment::DomainApplicationManager::_duplicate ((*b).int_id_.in ());
+
+ ++i;
+ }
+
+ return list._retn ();
+ }
+
+ bool
+ DAM_Map::unbind_dam (const ACE_CString &str)
+ {
+ CIAO_TRACE("Execution_Manager::DAM_Map::unbind_dam");
+ int const retval =
+ this->map_.unbind (str);
+
+ if (retval != 0)
+ return false;
+
+ return true;
+ }
+ }
+}
diff --git a/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.h b/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.h
new file mode 100644
index 00000000000..d69c9d10e9a
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/DAM_Map.h
@@ -0,0 +1,72 @@
+/*=======================================================================
+ *
+ * @file DAM_Map.h
+ *
+ * $Id$
+ *
+ * @brief Map of DomainApplicationManager to UUID's
+ *
+ * @author Bala Natarajan <bala @ dre.vanderbilt.edu>
+ *
+ *======================================================================*/
+#ifndef CIAO_DAM_MAP_H
+#define CIAO_DAM_MAP_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/Deployment_DomainApplicationManagerC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Null_Mutex.h"
+#include "ace/Hash_Map_Manager.h"
+#include "ace/SString.h"
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ /**
+ * @class DAM_Map
+ *
+ * @brief Map of DomainApplicationManager to ACE_CStrings
+ *
+ */
+ class DAM_Map
+ {
+ public:
+ DAM_Map (void);
+
+ bool is_plan_available (const ACE_CString &str);
+
+ ::Deployment::DomainApplicationManager_ptr
+ fetch_dam_reference (const ACE_CString &str);
+
+ bool bind_dam_reference (
+ const ACE_CString &str,
+ ::Deployment::DomainApplicationManager_ptr tmp);
+
+ Deployment::DomainApplicationManagers *
+ get_dams ();
+
+ bool unbind_dam (const ACE_CString &str);
+
+ size_t size (void);
+
+ private:
+ typedef
+ ACE_Hash_Map_Manager_Ex < ACE_CString,
+ ::Deployment::DomainApplicationManager_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> MAP;
+ typedef MAP::iterator Iterator;
+
+ MAP map_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_DAM_MAP_H*/
diff --git a/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc
new file mode 100644
index 00000000000..736eaa5f885
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/ExecutionManager.mpc
@@ -0,0 +1,16 @@
+// -*- MPC -*-
+// $Id$
+
+project(ExecutionManager): ciao_server_dnc, dance_extension_stub, ciao_domainapplicationmanager_dnc, ciao_executionmanager_stub {
+ exename = Execution_Manager
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ../Interfaces/ExecutionManagerDaemonS.cpp
+ Execution_Manager.cpp
+ Execution_Manager_Impl.cpp
+ DAM_Map.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp
new file mode 100644
index 00000000000..c7b5df7b96a
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager.cpp
@@ -0,0 +1,247 @@
+//--*C++*--
+// $Id$
+
+#include "Execution_Manager_Impl.h"
+
+// Include Name Service header
+#include "orbsvcs/CosNamingC.h"
+#include "tao/Utils/Implicit_Deactivator.h"
+
+#include "ace/SString.h"
+#include "ace/Read_Buffer.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/OS_NS_stdio.h"
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ const char *ior_file_name_ = "executionManager.ior";
+ const char *init_file_name = "deployment.dat";
+ const char *pid_file_name_ = 0;
+ static bool register_with_ns_ = false;
+ static bool write_to_ior_ = false;
+
+ bool
+ parse_args (int argc, char *argv[])
+ {
+ ACE_Get_Opt get_opts (argc, argv, "o:i:np:");
+ int c;
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ write_to_ior_ = true;
+ ior_file_name_ = get_opts.opt_arg ();
+ break;
+ case 'i':
+ init_file_name = get_opts.opt_arg ();
+ break;
+ case 'n':
+ register_with_ns_ = true;
+ break;
+ case 'p':
+ pid_file_name_ = get_opts.opt_arg ();
+ break;
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o <ior_output_file>\n"
+ "-i <installation data filename>\n"
+ "-n <use naming service>\n"
+ "-p <filename to output the process id>\n"
+ "\n",
+ argv [0]),
+ false);
+ }
+
+ return true;
+ }
+
+ bool
+ write_ior_file (CORBA::ORB_ptr orb,
+ CIAO::ExecutionManagerDaemon_ptr obj)
+ {
+ CORBA::String_var ior =
+ orb->object_to_string (obj);
+
+ FILE* ior_output_file_ =
+ ACE_OS::fopen (ior_file_name_, "w");
+
+ if (ior_output_file_)
+ {
+ ACE_OS::fprintf (ior_output_file_,
+ "%s",
+ ior.in ());
+ ACE_OS::fclose (ior_output_file_);
+ }
+ else
+ return false;
+
+ return true;
+ }
+
+ void
+ write_pid (void)
+ {
+ if (pid_file_name_ == 0)
+ return;
+
+ FILE* pid_file = ACE_OS::fopen (pid_file_name_, "w");
+
+ if (pid_file)
+ {
+ ACE_OS::fprintf (pid_file,
+ "%i",
+ ACE_OS::getpid ());
+ ACE_OS::fclose (pid_file);
+ }
+ }
+
+ bool
+ register_with_ns (CORBA::ORB_ptr orb,
+ CIAO::ExecutionManagerDaemon_ptr obj)
+ {
+ // Naming Service related operations
+ CORBA::Object_var naming_context_object =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_context_object.in ());
+
+ // Initialize the Naming Sequence
+ CosNaming::Name name (1);
+ name.length (1);
+
+ // String dup required for MSVC6
+ name[0].id = CORBA::string_dup ("ExecutionManager");
+
+ // Register the servant with the Naming Service
+ try
+ {
+ // Register the servant with the Naming Service
+ naming_context->bind (name, obj);
+ }
+ catch (CosNaming::NamingContext::AlreadyBound &)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Execution_Manager.cpp: Name already bound, rebinding....\n"));
+ naming_context->rebind (name, obj);
+ }
+
+ return true;
+ }
+
+ int
+ run_main (int argc, char *argv[])
+ {
+
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ if (!parse_args (argc, argv))
+ return -1;
+
+ // Get reference to Root POA.
+ CORBA::Object_var obj
+ = orb->resolve_initial_references ("RootPOA");
+
+ PortableServer::POA_var poa =
+ PortableServer::POA::_narrow (obj.in ());
+
+
+ if (CORBA::is_nil (poa.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) CIAO_ExecutionManager: "
+ "Nil POA panic error, returning \n"),
+ -1);
+
+ // Create and install the CIAO Daemon servant
+ Execution_Manager_Impl *daemon_servant = 0;
+ ACE_NEW_RETURN (daemon_servant,
+ Execution_Manager_Impl(orb.in (),
+ poa.in (),
+ init_file_name),
+ -1);
+
+ // Implicit activation
+ PortableServer::ServantBase_var safe_daemon (daemon_servant);
+
+ CIAO::ExecutionManagerDaemon_var daemon =
+ daemon_servant->_this ();
+
+ TAO::Utils::Implicit_Deactivator de (daemon_servant);
+ bool retval = false;
+
+ if (register_with_ns_)
+ {
+ retval =
+ register_with_ns (orb.in (),
+ daemon.in ());
+ }
+
+ if (write_to_ior_)
+ {
+ retval =
+ write_ior_file (orb.in (),
+ daemon.in ());
+ }
+
+ if (!retval)
+ return -1;
+
+ // Activate POA manager
+ PortableServer::POAManager_var mgr =
+ poa->the_POAManager ();
+
+ if (mgr.in () == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) CIAO_ExecutionManager: "
+ "Nil POA Manager error, returning \n"),
+ -1);
+
+ mgr->activate ();
+
+ // End Deployment part
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_ExecutionManager is running...\n"));
+
+ write_pid ();
+
+ // Run the main event loop for the ORB.
+ orb->run ();
+
+ // Forget the pointer. The POA will take care of it during
+ // destroy.
+ (void) de.release ();
+
+ poa->destroy (1,
+ 1);
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("CIAO_ExecutionManager::main\t\n");
+ return -1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_ExecutionManager has closed\n"));
+ return 0;
+ }
+
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ return CIAO::Execution_Manager::run_main (argc,
+ argv);
+}
diff --git a/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
new file mode 100644
index 00000000000..8a93b2f5ef0
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.cpp
@@ -0,0 +1,512 @@
+// $Id$
+
+#include "Execution_Manager_Impl.h"
+#include "ciao/CIAO_common.h"
+#include "DomainApplicationManager/DomainApplicationManager_Impl.h"
+
+ACE_RCSID (ExecutionManager,
+ Execution_Manager_Impl,
+ "$Id$")
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ Execution_Manager_Impl::Execution_Manager_Impl (
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * init_file)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+ , poa_ (PortableServer::POA::_duplicate (poa))
+ , init_file_ (init_file)
+ {
+ }
+
+ Execution_Manager_Impl::~Execution_Manager_Impl (void)
+ {
+ }
+
+ Deployment::DomainApplicationManager_ptr
+ Execution_Manager_Impl::preparePlan (
+ const Deployment::DeploymentPlan &plan,
+ CORBA::Boolean)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::PlanError,
+ Deployment::StartError
+ ))
+ {
+ CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::preparePlan");
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Domain Application Manager "
+ "invoked CIAO_Execution_Manager: preparePlan \n"));
+
+ // There is a Domain Application Manager already existing
+ // for this DeploymentPlan.
+ // No need to create a new DAM. Hence pass the
+ // reference that is already created.
+ //
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) calling this->man_.is_plan_available()...\n"));
+ if (this->map_.is_plan_available (plan.UUID.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Plan is already available; "
+ "calling this->man_.fetch_dam_reference()...\n"));
+
+ return this->map_.fetch_dam_reference (plan.UUID.in ());
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Plan wasn't already available\n"));
+ }
+
+ // We are about to begin working on a new DeploymentPlan.
+ // Create a DAM servant, which will be populated
+ // to be sent back to the PlanLauncher.
+ //
+ CIAO::DomainApplicationManager_Impl *dam_servant = 0;
+
+ // Create a new Domain Application Manager servant
+ // to be sent back to the Plan Launcher.
+ //
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to instantiate CIAO::DomainApplicationManager_Impl\n"));
+ ACE_NEW_THROW_EX (
+ dam_servant,
+ CIAO::DomainApplicationManager_Impl (
+ this->orb_.in (),
+ this->poa_.in (),
+ ::Deployment::TargetManager::_nil (),
+ this, // a plain C++ pointer
+ plan,
+ this->init_file_.c_str ()),
+ CORBA::NO_MEMORY ());
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Instantiated CIAO::DomainApplicationManager_Impl\n"));
+
+ // Sanity check for NULL pointer
+ // Should we throw an exception here?
+ // We have exceptions like PlanError or StartError at
+ // our disposal already in this function.
+ // Why did the creation of DAM fail in the first place?
+ //
+
+ // Standard owner transfer mechanisms.
+ //
+ PortableServer::ServantBase_var safe_daemon (dam_servant);
+
+ // Calling the init function on the DAM.
+ // This function will split the plan into node specific
+ // plans, so that those plans can be sent off to individual
+ // Node Application Managers.
+ //
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to init...\n"));
+ dam_servant->init ();
+
+ // This is a wrong exception to be thrown here.
+ // We already had a DAM servant, the DAM servant is
+ // not NIL any more.
+ // We need to throw the right exception here.
+ //
+
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) About to set uuid on DAM...\n"));
+ dam_servant->set_uuid (plan.UUID.in ());
+
+ Deployment::DomainApplicationManager_var dam =
+ dam_servant->_this ();
+
+ /// @@ TODO:Need to check the return value......
+ ///
+ this->map_.bind_dam_reference (
+ plan.UUID.in (),
+ Deployment::DomainApplicationManager::_duplicate (dam.in ()));
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) Bound DAM reference...\n"));
+
+ // Return the ApplicationManager instance
+ return dam._retn ();
+ }
+
+ Deployment::DomainApplicationManagers *
+ Execution_Manager_Impl::getManagers ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::getManagers");
+
+ // TODO Need to check the return value.
+ //
+ return this->map_.get_dams ();
+ }
+
+ Deployment::DomainApplicationManager_ptr
+ Execution_Manager_Impl::getManager (const char * plan_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException, Deployment::PlanNotExist))
+ {
+ return this->map_.fetch_dam_reference (plan_uuid);
+ }
+
+ void
+ Execution_Manager_Impl::destroyManager (
+ Deployment::DomainApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError))
+ {
+ CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::destroyManagers");
+ try
+ {
+ ::Deployment::DeploymentPlan_var plan =
+ manager->getPlan ();
+
+ // What if we still have components running within this plan?
+ //
+ (void) this->map_.unbind_dam (plan->UUID.in ());
+
+ // Where does the POA deactivate happen?
+ //
+ manager->destroyManager ();
+
+#if 0
+ PortableServer::ObjectId_var oid =
+ this->poa_->reference_to_id (manager);
+
+ this->poa_->deactivate_object (oid.in ());
+#endif /*if 0*/
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::destroyManager\t\n");
+ throw Deployment::StopError ();
+ }
+ }
+
+
+ void
+ Execution_Manager_Impl::destroyManagerByPlan (
+ const char * plan_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError))
+ {
+ CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::destroyManagerByPlan");
+ try
+ {
+ // Get DomainApplicationManager first
+ if (! this->map_.is_plan_available (plan_uuid))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Execution_Manager_Impl::destroyManagerByPlan - "
+ "Invalid plan uuid [%s]\n", plan_uuid));
+ throw Deployment::StopError ();
+ }
+
+ Deployment::DomainApplicationManager_var
+ dam = this->map_.fetch_dam_reference (plan_uuid);
+
+ // Get the plan
+ Deployment::DeploymentPlan_var plan = dam->getPlan ();
+
+ // If any component is still running, then we return.
+ CORBA::ULong const inst_lenth = plan->instance.length ();
+ for (CORBA::ULong i = 0; i < inst_lenth; ++i)
+ {
+ if (this->is_component_running (plan->instance[i].name.in (),
+ plan_uuid))
+ return;
+ }
+
+ (void) this->map_.unbind_dam (plan->UUID.in ());
+
+ // Where does the POA deactivate happen?
+ //
+ dam->destroyManager ();
+
+#if 0
+ PortableServer::ObjectId_var oid =
+ this->poa_->reference_to_id (manager);
+
+ this->poa_->deactivate_object (oid.in ());
+#endif /*if 0*/
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::destroyManager\t\n");
+ throw Deployment::StopError ();
+ }
+ }
+
+
+ void
+ Execution_Manager_Impl::shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE("Execution_Manager::Execution_Manager_Impl::shutdown");
+ // Shutdown the ORB on which it is runing
+ this->orb_->shutdown (0);
+ }
+
+ void
+ Execution_Manager_Impl::perform_redeployment (
+ const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty,
+ ::Components::RemoveFailure))
+ {
+ CIAO_TRACE ("CIAO::Execution_Manager_Impl::perform_redeployment");
+
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Dynamic Redeployment: "
+ "invoked CIAO::Execution_Manager_Impl::perform_redeployment \n"));
+
+ Deployment::DomainApplicationManager_var dam;
+
+ if (this->map_.is_plan_available (plan.UUID.in ()))
+ {
+ dam = this->map_.fetch_dam_reference (plan.UUID.in ());
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
+ "CIAO::Execution_Manager_Impl::perform_redeployment -"
+ "Invalid plan uuid: %s\n", plan.UUID.in ()));
+ throw Deployment::PlanError (
+ "Execution_Manager_Impl::perform_redeployment",
+ "Invalid plan uuid specified.");
+ }
+
+ try
+ {
+ // Call perform_redeployment() on the DAM, which will do the
+ // actual redeployment and reconfiguration on the dommain level.
+ dam->perform_redeployment (plan);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::perform_redeployment\t\n");
+ throw;
+ }
+ }
+
+ Deployment::DeploymentPlan *
+ Execution_Manager_Impl::getPlan (const char * plan_uuid)
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+ {
+ Deployment::DomainApplicationManager_var dam;
+
+ if (this->map_.is_plan_available (plan_uuid))
+ {
+ dam = this->map_.fetch_dam_reference (plan_uuid);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
+ "CIAO::Execution_Manager_Impl::getPlan -"
+ "Invalid plan uuid: %s\n", plan_uuid));
+ throw ::CORBA::BAD_PARAM ();
+ }
+
+ try
+ {
+ return dam->getPlan ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Execution_Manager_Impl::getPlan\t\n");
+ throw;
+ }
+ }
+
+ void
+ Execution_Manager_Impl::finalize_global_binding (
+ const Component_Binding_Info & binding,
+ CORBA::Boolean add_or_remove)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Execution_Manage::finalizing global bindings.\n"));
+
+ // Find the NodeApplication hosting the component, and then call
+ // <finishLaunch> on it
+ try
+ {
+ Deployment::NodeApplication_var
+ node_app = this->find_node_application (binding);
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Execution_Manager_Impl::finalize_global_binding - "
+ "nil NodeApplication object reference.\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ node_app->finishLaunch (binding.providedReference_.in (),
+ true, // start
+ add_or_remove);
+
+ // Update the internal shared component list
+ if (add_or_remove)
+ this->add_shared_component (binding);
+ else
+ this->remove_shared_component (binding);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::finalize_global_binding\t\n");
+ throw Deployment::InvalidConnection ();
+ }
+ }
+
+ void
+ Execution_Manager_Impl::passivate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ Deployment::StartError))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Execution_Manage::passivate shared components.\n"));
+
+ // Find the NodeApplication hosting the component, and then call
+ // <finishLaunch> on it
+ try
+ {
+ Deployment::NodeApplication_var
+ node_app = this->find_node_application (binding);
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Execution_Manager_Impl::passivate_shared_components - "
+ "nil NodeApplication object reference.\n"));
+ throw Deployment::StartError ();
+ }
+
+ node_app->passivate_component (binding.name_.c_str ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::passivate_shared_components\t\n");
+ throw Deployment::StartError ();
+ }
+ }
+
+ void
+ Execution_Manager_Impl::activate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ Deployment::StartError))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Execution_Manage::activate shared components.\n"));
+
+ // Find the NodeApplication hosting the component, and then call
+ // <ciao_activate> on it
+ try
+ {
+ Deployment::NodeApplication_var
+ node_app = this->find_node_application (binding);
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Execution_Manager_Impl::activate_shared_components - "
+ "nil NodeApplication object reference.\n"));
+ throw Deployment::StartError ();
+ }
+
+ node_app->activate_component (binding.name_.c_str ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception (
+ "Execution_Manager_Impl::passivate_shared_components\t\n");
+ throw Deployment::StartError ();
+ }
+ }
+
+
+ Deployment::NodeApplication_ptr
+
+ Execution_Manager_Impl::
+ find_node_application (const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection))
+ {
+ // Find the DAM based on plan_UUID
+ Deployment::DomainApplicationManager_var dam;
+
+ if (this->map_.is_plan_available (binding.plan_uuid_))
+ {
+ dam = this->map_.fetch_dam_reference (binding.plan_uuid_);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
+ "CIAO::Execution_Manager_Impl::find_node_application -"
+ "Invalid plan uuid: %s\n", binding.plan_uuid_.c_str ()));
+ throw ::CORBA::BAD_PARAM ();
+ }
+
+ // Find the NA based on the NodeName field of the binding
+ // This is a CORBA call on the DAM
+ Deployment::NodeApplication_var
+ node_app = dam->get_node_app (binding.node_.c_str ());
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) ExecutionManager_Impl.cpp -"
+ "CIAO::Execution_Manager_Impl::find_node_application -"
+ "Invalid node name: %s!\n", binding.node_.c_str ()));
+ throw ::CORBA::BAD_PARAM ();
+ }
+
+ return node_app._retn ();
+ }
+
+ void
+ Execution_Manager_Impl::
+ add_shared_component (const Component_Binding_Info & comp)
+ {
+ this->shared_components_.insert (comp);
+ }
+
+ void
+ Execution_Manager_Impl::
+ remove_shared_component (const Component_Binding_Info & comp)
+ {
+ this->shared_components_.remove (comp);
+ }
+
+ bool
+ Execution_Manager_Impl::
+ is_component_running (const char * name, const char * plan_uuid)
+ {
+ for (ACE_Unbounded_Set<Component_Binding_Info>::iterator
+ iter = this->shared_components_.begin ();
+ iter != this->shared_components_.end ();
+ ++iter)
+ {
+ if (ACE_OS::strcmp ((*iter).name_.c_str (), name) == 0 &&
+ ACE_OS::strcmp ((*iter).plan_uuid_.c_str (), plan_uuid) == 0)
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h
new file mode 100644
index 00000000000..cf674d37fe9
--- /dev/null
+++ b/modules/CIAO/DAnCE/ExecutionManager/Execution_Manager_Impl.h
@@ -0,0 +1,175 @@
+/*=======================================================================
+ *
+ * @file Execution_Manager_Impl.h
+ *
+ * $Id$
+ *
+ * @brief This file contains implementation for
+ * Deployment::ExecutionManager interface.
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ * @auther Tao Lu <lu@dre.vanderbilt.edu>
+ *
+ *======================================================================*/
+
+#ifndef CIAO_EXECUTION_MANAGER_IMPL_H
+#define CIAO_EXECUTION_MANAGER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "Interfaces/ExecutionManagerDaemonS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "DAM_Map.h"
+#include "ace/SString.h"
+#include "ciao/Deployment_common.h"
+
+namespace CIAO
+{
+ namespace Execution_Manager
+ {
+ /**
+ *
+ * @class Execution_Manager_Impl
+ *
+ * @brief This class implements the
+ * ExecutionManger. ExecutionManager starts the execution process
+ * after the planning stage.
+ *
+ */
+ class Execution_Manager_Impl
+ : public virtual POA_CIAO::ExecutionManagerDaemon
+ {
+ public:
+ /// Constructor
+ Execution_Manager_Impl (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * init_file);
+
+ /// Template methods from ExecutionManagerDaemon, please see
+ /// $CIAO_ROOT/ciao/Deployment.idl for documentation
+ virtual Deployment::DomainApplicationManager_ptr
+ preparePlan (const Deployment::DeploymentPlan & plan,
+ CORBA::Boolean commitResources)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::PlanError,
+ Deployment::StartError));
+
+ virtual Deployment::DomainApplicationManagers *
+ getManagers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Below method is CIAO specific extension
+ virtual Deployment::DomainApplicationManager_ptr
+ getManager (const char * plan_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException, Deployment::PlanNotExist));
+
+ virtual void
+ destroyManager (Deployment::DomainApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError));
+
+ // Below method is CIAO specific extension, please see the IDL
+ // definition for more details.
+ virtual void
+ destroyManagerByPlan (const char * plan_uuid)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StopError));
+
+ virtual void shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // The input parameter is a *new_plan* which has the
+ // same UUID of the existing running plan.
+ virtual void
+ perform_redeployment (
+ const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty,
+ ::Components::RemoveFailure));
+
+ virtual Deployment::DeploymentPlan * getPlan (
+ const char * plan_uuid)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ /// ****************** C++ Methods *************************
+
+ /// If input <add_connection> is true, then it will add new
+ /// connections which are across different assemblies. Otherwise
+ /// it will remove the specified connections of this component.
+ ///
+ /// @@GD: Later we can add another method which could accept
+ /// a list of bindings and do the batch job.
+ virtual void finalize_global_binding (
+ const Component_Binding_Info & binding,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection));
+
+ virtual void passivate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void activate_shared_components (
+ const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /// Add shared component information.
+ /// This call will be made by DomainApplicationManager.
+ virtual void
+ add_shared_component (const Component_Binding_Info & binding);
+
+ /// Remove shared component
+ virtual void
+ remove_shared_component (const Component_Binding_Info & binding);
+
+ /// If the input component <name> was found in the internal
+ /// cached shared component list, and the plan_uuid also matches,
+ /// then this member function returns <true>, otherwise it
+ /// returns <false>.
+ virtual bool
+ is_component_running (const char * name, const char * plan_uuid);
+
+ protected:
+ /// Return the NodeApplication hosting the given biding
+ virtual Deployment::NodeApplication_ptr
+ find_node_application (const Component_Binding_Info & binding)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::InvalidConnection));
+
+ protected:
+ /// Destructor.
+ virtual ~Execution_Manager_Impl (void);
+
+ /// Cached ORB pointer
+ CORBA::ORB_var orb_;
+
+ /// Cached POA pointer
+ PortableServer::POA_var poa_;
+
+ /// Path to the initialization file
+ ACE_CString const init_file_;
+
+ /// A map which caches the DomainApplicationManager object ref.
+ DAM_Map map_;
+
+ /// A set of shared components and their location info.
+ ACE_Unbounded_Set<Component_Binding_Info> shared_components_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* EXECUTIONMANAGER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/Interfaces/ExecutionManagerDaemon.idl b/modules/CIAO/DAnCE/Interfaces/ExecutionManagerDaemon.idl
new file mode 100644
index 00000000000..01942fd3afa
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/ExecutionManagerDaemon.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @file ExecutionManagerDaemon.idl
+ *
+ * @brief Simple interface to control the ExecutionManager. This
+ * interface currently provides an additional method called shutdown
+ * to terminate the process cleanly.
+ */
+
+#include "ciao/Deployment_ExecutionManager.idl"
+
+module CIAO
+{
+ /**
+ * @brief CIAO Execution Manager Program
+ *
+ * This feature addition is added using inheritance mechanism currently
+ */
+ interface ExecutionManagerDaemon : Deployment::ExecutionManager
+ {
+ // Shutdown the daemon process.
+ oneway void shutdown ();
+ };
+};
diff --git a/modules/CIAO/DAnCE/Interfaces/ExecutionManager_stub_export.h b/modules/CIAO/DAnCE/Interfaces/ExecutionManager_stub_export.h
new file mode 100644
index 00000000000..f32c91c5e6e
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/ExecutionManager_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ExecutionManager_stub
+// ------------------------------
+#ifndef EXECUTIONMANAGER_STUB_EXPORT_H
+#define EXECUTIONMANAGER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EXECUTIONMANAGER_STUB_HAS_DLL)
+# define EXECUTIONMANAGER_STUB_HAS_DLL 1
+#endif /* ! EXECUTIONMANAGER_STUB_HAS_DLL */
+
+#if defined (EXECUTIONMANAGER_STUB_HAS_DLL) && (EXECUTIONMANAGER_STUB_HAS_DLL == 1)
+# if defined (EXECUTIONMANAGER_STUB_BUILD_DLL)
+# define ExecutionManager_stub_Export ACE_Proper_Export_Flag
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EXECUTIONMANAGER_STUB_BUILD_DLL */
+# define ExecutionManager_stub_Export ACE_Proper_Import_Flag
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EXECUTIONMANAGER_STUB_BUILD_DLL */
+#else /* EXECUTIONMANAGER_STUB_HAS_DLL == 1 */
+# define ExecutionManager_stub_Export
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARATION(T)
+# define EXECUTIONMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EXECUTIONMANAGER_STUB_HAS_DLL == 1 */
+
+// Set EXECUTIONMANAGER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EXECUTIONMANAGER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EXECUTIONMANAGER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EXECUTIONMANAGER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EXECUTIONMANAGER_STUB_NTRACE */
+
+#if (EXECUTIONMANAGER_STUB_NTRACE == 1)
+# define EXECUTIONMANAGER_STUB_TRACE(X)
+#else /* (EXECUTIONMANAGER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EXECUTIONMANAGER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EXECUTIONMANAGER_STUB_NTRACE == 1) */
+
+#endif /* EXECUTIONMANAGER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/Interfaces/Interfaces.mpc b/modules/CIAO/DAnCE/Interfaces/Interfaces.mpc
new file mode 100644
index 00000000000..00f5b5192d9
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/Interfaces.mpc
@@ -0,0 +1,39 @@
+// -*- MPC -*-
+// $Id$
+
+project (ExecutionManager_stub): ciao_deployment_stub {
+
+ sharedname = ExecutionManager_stub
+
+ idlflags += -Wb,stub_export_macro=ExecutionManager_stub_Export
+ idlflags += -Wb,stub_export_include=ExecutionManager_stub_export.h
+
+ dynamicflags = EXECUTIONMANAGER_STUB_BUILD_DLL
+
+ IDL_Files {
+ ExecutionManagerDaemon.idl
+ }
+
+ Source_Files {
+ ExecutionManagerDaemonC.cpp
+ }
+}
+
+project (NodeManager_stub): ciao_deployment_stub {
+ sharedname = NodeManager_stub
+
+ idlflags += -Wb,stub_export_macro=NodeManager_stub_Export
+ idlflags += -Wb,stub_export_include=NodeManager_stub_export.h
+ idlflags += -Wb,skel_export_macro=NodeManager_svnt_Export
+ idlflags += -Wb,skel_export_include=NodeManager_svnt_export.h
+
+ dynamicflags = NODEMANAGER_STUB_BUILD_DLL
+
+ IDL_Files {
+ NodeManagerDaemon.idl
+ }
+
+ Source_Files {
+ NodeManagerDaemonC.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/Interfaces/NodeManagerDaemon.idl b/modules/CIAO/DAnCE/Interfaces/NodeManagerDaemon.idl
new file mode 100644
index 00000000000..617df0f080f
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/NodeManagerDaemon.idl
@@ -0,0 +1,35 @@
+// $Id$
+
+/**
+ * @file NodeManagerDaemon.idl
+ *
+ * @brief Controling interface for managing and controling CIAO daemon.
+ */
+
+#include "ciao/Deployment_NodeManager.idl"
+#include "ciao/Deployment_NodeApplicationManager.idl"
+
+module CIAO
+{
+ /**
+ * @brief CIAO daemon process control program.
+ *
+ * @@The Inheritage might cause binary code bloating but
+ * it's an easy way of combining features. In the future we could
+ * move this definition into Deployment.idl.
+ */
+ interface NodeManagerDaemon : Deployment::NodeManager
+ {
+ // Canonical name of this daemon
+ readonly attribute string name;
+
+ // Shutdown the daemon process.
+ oneway void shutdown ();
+
+ /// RACE specific extension.
+ /// Modify the priority of a node application process.
+ long set_priority (in string plan_id,
+ in string cid,
+ in ::Deployment::Sched_Params nm_params);
+ };
+};
diff --git a/modules/CIAO/DAnCE/Interfaces/NodeManager_stub_export.h b/modules/CIAO/DAnCE/Interfaces/NodeManager_stub_export.h
new file mode 100644
index 00000000000..3e708b0ab1f
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/NodeManager_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NodeManager_stub
+// ------------------------------
+#ifndef NODEMANAGER_STUB_EXPORT_H
+#define NODEMANAGER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEMANAGER_STUB_HAS_DLL)
+# define NODEMANAGER_STUB_HAS_DLL 1
+#endif /* ! NODEMANAGER_STUB_HAS_DLL */
+
+#if defined (NODEMANAGER_STUB_HAS_DLL) && (NODEMANAGER_STUB_HAS_DLL == 1)
+# if defined (NODEMANAGER_STUB_BUILD_DLL)
+# define NodeManager_stub_Export ACE_Proper_Export_Flag
+# define NODEMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEMANAGER_STUB_BUILD_DLL */
+# define NodeManager_stub_Export ACE_Proper_Import_Flag
+# define NODEMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEMANAGER_STUB_BUILD_DLL */
+#else /* NODEMANAGER_STUB_HAS_DLL == 1 */
+# define NodeManager_stub_Export
+# define NODEMANAGER_STUB_SINGLETON_DECLARATION(T)
+# define NODEMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEMANAGER_STUB_HAS_DLL == 1 */
+
+// Set NODEMANAGER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEMANAGER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEMANAGER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEMANAGER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEMANAGER_STUB_NTRACE */
+
+#if (NODEMANAGER_STUB_NTRACE == 1)
+# define NODEMANAGER_STUB_TRACE(X)
+#else /* (NODEMANAGER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEMANAGER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEMANAGER_STUB_NTRACE == 1) */
+
+#endif /* NODEMANAGER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/Interfaces/NodeManager_svnt_export.h b/modules/CIAO/DAnCE/Interfaces/NodeManager_svnt_export.h
new file mode 100644
index 00000000000..199168ef44d
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/NodeManager_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NodeManager_svnt
+// ------------------------------
+#ifndef NODEMANAGER_SVNT_EXPORT_H
+#define NODEMANAGER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEMANAGER_SVNT_HAS_DLL)
+# define NODEMANAGER_SVNT_HAS_DLL 1
+#endif /* ! NODEMANAGER_SVNT_HAS_DLL */
+
+#if defined (NODEMANAGER_SVNT_HAS_DLL) && (NODEMANAGER_SVNT_HAS_DLL == 1)
+# if defined (NODEMANAGER_SVNT_BUILD_DLL)
+# define NodeManager_svnt_Export ACE_Proper_Export_Flag
+# define NODEMANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEMANAGER_SVNT_BUILD_DLL */
+# define NodeManager_svnt_Export ACE_Proper_Import_Flag
+# define NODEMANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEMANAGER_SVNT_BUILD_DLL */
+#else /* NODEMANAGER_SVNT_HAS_DLL == 1 */
+# define NodeManager_svnt_Export
+# define NODEMANAGER_SVNT_SINGLETON_DECLARATION(T)
+# define NODEMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEMANAGER_SVNT_HAS_DLL == 1 */
+
+// Set NODEMANAGER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEMANAGER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEMANAGER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEMANAGER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEMANAGER_SVNT_NTRACE */
+
+#if (NODEMANAGER_SVNT_NTRACE == 1)
+# define NODEMANAGER_SVNT_TRACE(X)
+#else /* (NODEMANAGER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEMANAGER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEMANAGER_SVNT_NTRACE == 1) */
+
+#endif /* NODEMANAGER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/Interfaces/README b/modules/CIAO/DAnCE/Interfaces/README
new file mode 100644
index 00000000000..0118689ad70
--- /dev/null
+++ b/modules/CIAO/DAnCE/Interfaces/README
@@ -0,0 +1,2 @@
+To resolve the MPC issue of directory dependency, we have to put some IDL
+files into a separate directory. This directory servers for this purpose.
diff --git a/modules/CIAO/DAnCE/NodeApplication/CIAO_NodeApplication_export.h b/modules/CIAO/DAnCE/NodeApplication/CIAO_NodeApplication_export.h
new file mode 100644
index 00000000000..b9ebab3d7cb
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/CIAO_NodeApplication_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NODEAPPLICATION
+// ------------------------------
+#ifndef NODEAPPLICATION_EXPORT_H
+#define NODEAPPLICATION_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEAPPLICATION_HAS_DLL)
+# define NODEAPPLICATION_HAS_DLL 1
+#endif /* ! NODEAPPLICATION_HAS_DLL */
+
+#if defined (NODEAPPLICATION_HAS_DLL) && (NODEAPPLICATION_HAS_DLL == 1)
+# if defined (NODEAPPLICATION_BUILD_DLL)
+# define NODEAPPLICATION_Export ACE_Proper_Export_Flag
+# define NODEAPPLICATION_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEAPPLICATION_BUILD_DLL */
+# define NODEAPPLICATION_Export ACE_Proper_Import_Flag
+# define NODEAPPLICATION_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEAPPLICATION_BUILD_DLL */
+#else /* NODEAPPLICATION_HAS_DLL == 1 */
+# define NODEAPPLICATION_Export
+# define NODEAPPLICATION_SINGLETON_DECLARATION(T)
+# define NODEAPPLICATION_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEAPPLICATION_HAS_DLL == 1 */
+
+// Set NODEAPPLICATION_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEAPPLICATION_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEAPPLICATION_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEAPPLICATION_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEAPPLICATION_NTRACE */
+
+#if (NODEAPPLICATION_NTRACE == 1)
+# define NODEAPPLICATION_TRACE(X)
+#else /* (NODEAPPLICATION_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEAPPLICATION_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEAPPLICATION_NTRACE == 1) */
+
+#endif /* NODEAPPLICATION_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.cpp b/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.cpp
new file mode 100644
index 00000000000..5de92094ee8
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.cpp
@@ -0,0 +1,138 @@
+// $Id$
+
+#include "Configurator_Factory.h"
+#include "NoOp_Configurator.h"
+#include "ace/Null_Mutex.h"
+#include "ciao/CIAO_common.h"
+#include "ace/Arg_Shifter.h"
+
+int
+CIAO::NodeApplication_Options::parse_args (int &argc, char *argv[])
+{
+ ACE_Arg_Shifter shifter (argc, argv);
+
+ while (shifter.is_anything_left ())
+ {
+ const char *parm = 0;
+
+ if (shifter.cur_arg_strncasecmp ("-n") == 0) // Use callback.
+ {
+ this->use_callback_ = false;
+ shifter.consume_arg ();
+ }
+ else if (shifter.cur_arg_strncasecmp ("-r") == 0)
+ {
+ this->rt_support_ = true;
+ shifter.consume_arg ();
+ }
+ else if (ACE_OS::strncmp (shifter.get_current (),
+ "-ORB",
+ ACE_OS::strlen ("-ORB")) == 0)
+ {
+ // Ignore ORB parameter
+ shifter.ignore_arg ();
+ }
+ else if (shifter.cur_arg_strncasecmp ("-o") == 0)
+ {
+ // This double checking is necessary to avoid the Arg_Shifter from
+ // mistaking any -ORBxxx flag as -o flag.
+ if ((parm = shifter.get_the_parameter ("-o")) !=0)
+ {
+ this->ior_output_filename_ = parm;
+ }
+ shifter.consume_arg ();
+ }
+ else if ((parm = shifter.get_the_parameter ("-k")) !=0)
+ {
+ this->callback_ior_ = parm;
+ shifter.consume_arg ();
+ }
+ else if (shifter.cur_arg_strncasecmp ("-h") == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-n Do not use Callback (for testing)\n"
+ "-o <ior_output_file>\n"
+ "-k <NodeApplicationManager_callback_ior>\n"
+ "-r Request RT support\n"
+ "-h Usage help"
+ "\n",
+ argv [0]),
+ -1);
+ shifter.consume_arg ();
+ }
+ else
+ {
+ shifter.ignore_arg ();
+ }
+ }
+
+ if (this->use_callback_ && 0 == this->callback_ior_.length ())
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Callback IOR to NodeApplicationManager "
+ "is required.\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+CIAO::NodeApp_Configurator *
+CIAO::NodeApplication_Options::create_nodeapp_configurator (void)
+{
+ typedef CIAO::NodeApp_Configurator * (*intelligent_designer)(void);
+ CIAO::NodeApp_Configurator* ptr = 0;
+
+ if (this->rt_support_)
+ {
+ int const retval =
+ this->config_dll_.open (
+ ACE_DLL_PREFIX ACE_TEXT ("CIAO_RTNA_Configurator"),
+ ACE_DEFAULT_SHLIB_MODE,
+ 0);
+
+ if (0 != retval)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p\n",
+ "dll.open"),
+ 0);
+ }
+
+ // Cast the void* to non-pointer type first - it's not legal to
+ // cast a pointer-to-object directly to a pointer-to-function.
+ void *void_ptr =
+ this->config_dll_.symbol (ACE_TEXT ("create_nodeapp_configurator"));
+ ptrdiff_t tmp = reinterpret_cast<ptrdiff_t> (void_ptr);
+
+ // "id" is for intelligent-designer.
+ intelligent_designer config_id =
+ reinterpret_cast<intelligent_designer> (tmp);
+
+ if (0 == config_id)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p",
+ "dll.symbol"),
+ 0);
+ }
+
+ ptr = config_id ();
+
+ if (0 == ptr)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Error creating RTNodeApp_Configurator\n"),
+ 0);
+ }
+ }
+ else
+ {
+ ACE_NEW_RETURN (ptr,
+ CIAO::NoOp_Configurator (),
+ 0);
+ }
+
+ return ptr;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.h b/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.h
new file mode 100644
index 00000000000..d80f12c3cee
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/Configurator_Factory.h
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Configurator_Factory.h
+ *
+ * $Id$
+ *
+ * Configurator Factory contains the factory method for creating concret
+ * NodeApp_Configurator object.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_CONFIGURATOR_FACTORY_H
+#define CIAO_CONFIGURATOR_FACTORY_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_NodeApplication_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/ORB_Core.h"
+#include "tao/ORB.h"
+#include "ace/Task.h"
+#include "ace/SString.h"
+#include "ace/Auto_Ptr.h"
+#include "ace/DLL.h"
+#include "NodeApp_Configurator.h"
+
+namespace CIAO
+{
+
+
+ /**
+ * @class NodeApplication_Options
+ *
+ * @brief An class for managing and extracting command line options
+ * for NodeApplication.
+ *
+ * @note We currently support loading one single external module for
+ * RT support. Perhaps how this should really be done is to allow
+ * the NodeApplication_Core to load up a list of external modules
+ * (in DLLs or otherwise) and call the corresponding init methods in
+ * sequence. This way, we open up the component server so system
+ * developers can plug in their own system configuration needs into
+ * the whole system.
+ */
+ class NODEAPPLICATION_Export NodeApplication_Options
+ {
+ public:
+ // default ctor.
+ NodeApplication_Options () : use_callback_ (true), rt_support_ (false) {}
+
+ /// extracting commandline arguments
+ int parse_args (int &argc, char *argv[]);
+
+ NodeApp_Configurator *create_nodeapp_configurator (void);
+
+ bool use_callback () {return this->use_callback_; }
+
+ bool rt_support () {return this->rt_support_; }
+
+ int write_ior_file ()
+ { return (this->ior_output_filename_.length () != 0); }
+
+ const char *ior_output_filename ()
+ { return this->ior_output_filename_.c_str (); }
+
+ const char *callback_ior ()
+ { return this->callback_ior_.c_str (); }
+
+ private:
+ /// The name of the file to write stringified IOR to.
+ ACE_CString ior_output_filename_;
+
+ /// Stringified IOR of a CIAO's callback object.
+ ACE_CString callback_ior_;
+
+ /// CIAO ComponentServer uses the callback object to pass it's
+ /// own object reference back to NodeApplicationManager.
+ bool use_callback_;
+
+ /// If we need to support RT-CORBA. Currently, this is
+ /// mandatory, but we can probably allow some sort of
+ /// "best-effort" RT support. I.e., if the platform/environment
+ /// doesn't support RT, then we will still deploy the NodeApp but
+ /// ignore the RT spec. Perhaps something in the future.
+ bool rt_support_;
+
+ // For managing dynamically loaded configurator library
+ ACE_DLL config_dll_;
+ };
+
+}
+
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIGURATOR_FACTORY_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/Container_Impl.cpp b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.cpp
new file mode 100644
index 00000000000..89cab7af662
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.cpp
@@ -0,0 +1,609 @@
+// $Id$
+
+#include "Container_Impl.h"
+#include "ciao/CCM_StandardConfiguratorC.h"
+#include "ciao/CCM_KeylessCCMHomeC.h"
+
+#include "orbsvcs/CosNamingC.h"
+
+#if !defined (__ACE_INLINE__)
+# include "Container_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+CIAO::Container_Impl::~Container_Impl ()
+{
+ // @@ remove all components and home?
+ delete this->container_;
+}
+
+PortableServer::POA_ptr
+CIAO::Container_Impl::_default_POA (void)
+{
+ CIAO_TRACE ("CIAO::Container_Impl::_default_POA");
+ return PortableServer::POA::_duplicate (this->poa_.in ());
+}
+
+ ///////////////////////////////////////////////////////////////
+
+CORBA::Long
+CIAO::Container_Impl::init (const CORBA::PolicyList *policies)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::init");
+ // @@ Initialize container and create the internal container
+ // implementation that actually interacts with installed
+ // homes/components.
+
+ // @@ We will need a container factory here later on when we support
+ // more kinds of container implementations.
+
+ // @@Jai, what is the condition to create an upgradeable container?
+ // Where is it getting created and how? Need to address that.
+
+ if (this->static_entrypts_maps_ == 0)
+ {
+ ACE_NEW_THROW_EX (this->container_,
+ CIAO::Session_Container (this->orb_.in (), this),
+ CORBA::NO_MEMORY ());
+ }
+ else
+ {
+ ACE_NEW_THROW_EX (this->container_,
+ CIAO::Session_Container (this->orb_.in (), this, 1,
+ this->static_entrypts_maps_),
+ CORBA::NO_MEMORY ());
+ }
+
+ return this->container_->init (0,
+ policies);
+}
+
+
+Deployment::ComponentInfos *
+CIAO::Container_Impl::install (
+ const ::Deployment::ContainerImplementationInfo & container_impl_info
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InstallationFailure,
+ ::Components::InvalidConfiguration))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::install");
+ Deployment::ComponentInfos_var retv;
+ try
+ {
+ ACE_NEW_THROW_EX (retv,
+ Deployment::ComponentInfos,
+ CORBA::NO_MEMORY ());
+
+ // Get the ComponentImplementationInfos from the
+ // ContainerImplementationInfo
+ // to avoid too long syntax representation
+ const ::Deployment::ComponentImplementationInfos impl_infos =
+ container_impl_info.impl_infos;
+
+ CORBA::ULong const len = impl_infos.length ();
+ retv->length (len);
+
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ // Install home
+ Components::CCMHome_var home =
+ this->install_home (impl_infos[i]);
+
+ Components::KeylessCCMHome_var kh =
+ Components::KeylessCCMHome::_narrow (home.in ());
+
+ if (CORBA::is_nil (kh.in ()))
+ throw Deployment::InstallationFailure ();
+
+ // Create component from home
+ Components::CCMObject_var comp =
+ kh->create_component ();
+
+ if (CORBA::is_nil (comp.in ()))
+ throw Deployment::InstallationFailure ();
+
+ if (this->component_map_.bind
+ (impl_infos[i].component_instance_name.in (),
+ Components::CCMObject::_duplicate (comp.in ())))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::install -"
+ "error in binding component "
+ "instance name [%s] into the component map \n",
+ impl_infos[i].component_instance_name.in ()));
+ throw Deployment::InstallationFailure ();
+ }
+
+ // Set the return value.
+ (*retv)[i].component_instance_name
+ = impl_infos[i].component_instance_name.in ();
+
+ (*retv)[i].component_ref =
+ Components::CCMObject::_duplicate (comp.in ());
+
+ // Deal with Component instance related Properties.
+ // Now I am only concerning about the COMPOENTIOR and attribute
+ // configuration initialization.
+
+ // I need to map Properties to Components::ConfigValues
+ ::Components::ConfigValues comp_attributes;
+ comp_attributes.length (0);
+
+ const CORBA::ULong clen = impl_infos[i].component_config.length ();
+ for (CORBA::ULong prop_len = 0; prop_len < clen; ++prop_len)
+ {
+ // Set up the ComponentIOR attribute
+ if (ACE_OS::strcmp
+ (impl_infos[i].component_config[prop_len].name.in (),
+ "ComponentIOR") == 0)
+ {
+ const char * path;
+ impl_infos[i].component_config[prop_len].value >>= path;
+
+ CORBA::String_var ior =
+ this->orb_->object_to_string (comp.in ());
+
+ if (CIAO::Utility::write_IOR (path, ior.in ()) != 0)
+ {
+ if (CIAO::debug_level () > 1)
+ ACE_DEBUG ((LM_DEBUG, "Failed to write the IOR.\n"));
+
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ // Set up the naming service attribute
+ if (ACE_OS::strcmp
+ (impl_infos[i].component_config[prop_len].name.in (),
+ "RegisterNaming") == 0)
+ {
+ const char * naming_context;
+ impl_infos[i].
+ component_config[prop_len].value >>= naming_context;
+
+ // Register the component with the naming service
+ ACE_DEBUG ((LM_DEBUG,
+ "Register component with naming service.\n"));
+ bool result =
+ register_with_ns (
+ naming_context,
+ this->orb_.in (),
+ Components::CCMObject::_duplicate (comp.in ())
+ );
+
+ if (!result)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Failed to register with naming service.\n"));
+ }
+ else
+ {
+ if (this->naming_map_.bind
+ (impl_infos[i].component_instance_name.in (),
+ ACE_CString (naming_context)))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::install -"
+ "error in binding component "
+ "instance name [%s] into the naming map \n",
+ impl_infos[i].component_instance_name.in ()));
+ throw Deployment::InstallationFailure ();
+ }
+ }
+
+
+ }
+
+ // Initialize attributes through StandardConfigurator interface
+ // @@Todo: Currently I have to manually map
+ // the Deployment::Properties to
+ // Components::ConfigValues, we should use a
+ // common data structure in
+ // the future. - Gan
+ CORBA::ULong cur_len = comp_attributes.length ();
+ comp_attributes.length (cur_len + 1);
+
+ Components::ConfigValue *item = new OBV_Components::ConfigValue ();
+ item->name (impl_infos[i].component_config[prop_len].name.in ());
+ CORBA::Any tmp = impl_infos[i].component_config[prop_len].value;
+ item->value (tmp);
+
+ comp_attributes[cur_len] = item;
+ }
+
+ if (comp_attributes.length () != 0)
+ {
+ //std_configurator.set_configuration
+ ::Components::StandardConfigurator_var std_configurator =
+ comp->get_standard_configurator ();
+
+ std_configurator->set_configuration (comp_attributes);
+ }
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Container_Impl::install\t\n");
+ throw;
+ }
+
+ return retv._retn ();
+}
+
+::Deployment::Properties *
+CIAO::Container_Impl::properties ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::properties");
+ ::Deployment::Properties *retval = 0;
+
+ ACE_NEW_THROW_EX (retval,
+ ::Deployment::Properties,
+ CORBA::NO_MEMORY ());
+
+ *retval = this->properties_;
+
+ return retval;
+}
+
+::Deployment::NodeApplication_ptr
+CIAO::Container_Impl::get_node_application ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::get_node_application");
+ return ::Deployment::NodeApplication::_duplicate (this->nodeapp_.in ());
+}
+
+::Components::CCMHome_ptr
+CIAO::Container_Impl::install_home (
+ const ::Deployment::ComponentImplementationInfo & impl_info)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure,
+ Components::InvalidConfiguration))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::install_home");
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::install_home -"
+ "installing home for component "
+ "instance [%s] \n",
+ impl_info.component_instance_name.in ()));
+ }
+
+ Components::CCMHome_var newhome =
+ this->container_->ciao_install_home (impl_info.executor_dll.in (),
+ impl_info.executor_entrypt.in (),
+ impl_info.servant_dll.in (),
+ impl_info.servant_entrypt.in (),
+ impl_info.component_instance_name.in ());
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::install_home -"
+ "success in installing home for component "
+ "instance [%s] \n",
+ impl_info.component_instance_name.in ()));
+ }
+
+ // We don't have to do _narrow since the generated code makes sure of
+ // the object type for us
+ // Bind the home in the map.
+ if (this->home_map_.bind (impl_info.component_instance_name.in (),
+ Components::CCMHome::_duplicate (newhome.in ())))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::install_home -"
+ "error in binding home for component "
+ "instance [%s] \n",
+ impl_info.component_instance_name.in ()));
+ ACE_THROW_RETURN (Deployment::InstallationFailure (),
+ Components::CCMHome::_nil ());
+ }
+
+ //Note: If the return value will be discarded, it must be kept in a var or
+ // release () will have to be called explicitly.
+ return newhome._retn ();
+}
+
+
+void
+CIAO::Container_Impl::remove_home (const char * comp_ins_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::remove_home");
+
+ Components::CCMHome_ptr home;
+ ACE_CString str (comp_ins_name);
+
+ if (this->home_map_.find (str, home) != 0)
+ throw CORBA::BAD_PARAM ();
+
+ // @@TODO We should remove all components created by this home as well.
+ // This is not implemented yet.
+
+ this->container_->ciao_uninstall_home (home);
+
+ // If the previous calls failed, what should we do here??
+ CORBA::release (home);
+
+ // @@ Still need to remove the home if the previous operation fails?
+ if (this->home_map_.unbind (str) == -1)
+ throw ::Components::RemoveFailure ();
+}
+
+// Remove all homes and components
+void
+CIAO::Container_Impl::remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::remove");
+
+ // Remove all components first.
+ this->remove_components ();
+
+ // Even if above operation failed we should still remove homes.
+ const Home_Iterator end = this->home_map_.end ();
+ for (Home_Iterator iter (this->home_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ this->container_->ciao_uninstall_home ( (*iter).int_id_);
+
+ CORBA::release ( (*iter).int_id_);
+ }
+
+ this->home_map_.unbind_all ();
+
+ if (CIAO::debug_level () > 3)
+ ACE_DEBUG ((LM_DEBUG,
+ "Removed all homes and components from this container!\n"));
+}
+
+////////////////////////////////////////////////////////////////////////
+// Internal helper functions.
+////////////////////////////////////////////////////////////////////////
+
+void
+CIAO::Container_Impl::remove_components ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::remove_components");
+
+ // Remove all the components in the NodeApplication/Container
+ // Release all component servant object.
+ const Component_Iterator end = this->component_map_.end ();
+ for (Component_Iterator iter (this->component_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ // Find the component home first, then call the remove_component
+ // on the home.
+ Components::CCMHome_ptr home;
+ if (this->home_map_.find ( (*iter).ext_id_, home) != 0)
+ throw CORBA::BAD_PARAM ();
+
+ // This will call ccm_passivate on the component executor.
+ home->remove_component (((*iter).int_id_).in ());
+
+ //CORBA::release (((*iter).int_id_).in ());
+ }
+
+ this->component_map_.unbind_all ();
+ // To this point the servant should have been destroyed. However,
+ // if someone is still making calls on the servant, terrible thing
+ // will happen.
+}
+
+
+// Below method is not used actually.
+void
+CIAO::Container_Impl::remove_component (const char * comp_ins_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ CIAO_TRACE ("CIAO::Container_Impl::remove_component");
+
+ Components::CCMObject_var comp;
+ Components::CCMHome_ptr home;
+
+ ACE_CString naming_context;
+
+ ACE_CString str (comp_ins_name);
+
+ if (CIAO::debug_level () > 5)
+ ACE_DEBUG ((LM_DEBUG, "CIAO::COntainer_Impl::remove_component: Removing comp_ins_name:: %s\n",
+ str.c_str ()));
+
+ /* Before we do remove component we have to inform the homeservant so
+ * Component::ccm_passivate ()
+ * constainer::uninstall_component () ->deactivate_object () will be called.
+ *
+ * ccm_remove will be called when the poa destroys the servant.
+ */
+
+ if (this->component_map_.find (str, comp) != 0)
+ throw CORBA::BAD_PARAM ();
+
+ if (this->home_map_.find (str, home) != 0)
+ throw CORBA::BAD_PARAM ();
+
+ // This will call ccm_passivate on the component executor.
+ home->remove_component (comp.in ());
+
+ // If the previous calls failed, what should we do here??
+
+ // @@ Still need to remove the home if the previous operation fails?
+ if (this->component_map_.unbind (str) == -1)
+ throw ::Components::RemoveFailure ();
+
+ if (this->naming_map_.find (str, naming_context) == 0)
+ {
+
+ bool const result =
+ unregister_with_ns (
+ naming_context.c_str (),
+ this->orb_.in ()
+ );
+
+ if (!result)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Failed to unregister with naming service.\n"));
+ }
+ else
+ {
+ if (this->naming_map_.unbind (str) == -1)
+ throw ::Components::RemoveFailure ();
+ }
+ }
+}
+
+bool
+CIAO::Container_Impl::register_with_ns (const char * s,
+ CORBA::ORB_ptr orb,
+ Components::CCMObject_ptr obj)
+{
+ CIAO_TRACE ("CIAO::Container_Impl::register_with_ns");
+
+ try
+ {
+ // Obtain the naming service
+ CORBA::Object_var naming_obj =
+ orb->resolve_initial_references ("NameService");
+
+ if (CORBA::is_nil (naming_obj.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "DAnCE: (%P|%t) Unable to get the Naming Service.\n"),
+ false);
+
+ CosNaming::NamingContextExt_var root =
+ CosNaming::NamingContextExt::_narrow (naming_obj.in ());
+
+ CosNaming::Name name (0);
+ name.length (0);
+
+ // Get the multicomponent naming context from the <naming_context>.
+ // The convention of this <naming_context> input string is that
+ // different naming context is separated by character '/', such as
+ // "create a naming context A/B/C/D".
+ ACE_CString tmp (s);
+ char * naming_string = tmp.rep ();
+ char seps[] = "/:";
+
+ char *token, *lastToken = 0;
+ token = ACE_OS::strtok (naming_string, seps);
+
+ for (CORBA::ULong i = 0; token != 0; ++i)
+ {
+ // While there still are tokens in the "naming_string"
+ name.length (name.length () + 1);
+ name[i].id = CORBA::string_dup (token);
+
+ // Get next naming context
+ lastToken = token;
+ token = ACE_OS::strtok ( 0, seps );
+ }
+
+ if (name.length() > 1)
+ {
+ // Let's create the context path first
+ name.length(name.length()-1);
+ Utility::NameUtility::CreateContextPath (root.in (), name);
+ name.length(name.length()+1);
+ name[name.length()-1].id = CORBA::string_dup(lastToken);
+ }
+
+ // Bind the actual object
+ Utility::NameUtility::BindObjectPath (root.in (), name, obj);
+
+ return true;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::register_with_ns -"
+ "NodeApplication: failed to register "
+ "with naming service.");
+ return false;
+ }
+ return true;
+}
+
+bool
+CIAO::Container_Impl::unregister_with_ns (const char * obj_name,
+ CORBA::ORB_ptr orb)
+{
+ CIAO_TRACE ("CIAO::Container_Impl::unregister_with_ns");
+
+ try
+ {
+ // Obtain the naming service
+ CORBA::Object_var naming_obj =
+ orb->resolve_initial_references ("NameService");
+
+ if (CORBA::is_nil (naming_obj.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to get the Naming Service.\n"),
+ false);
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_obj.in ());
+
+ CosNaming::Name name (0);
+ name.length (0);
+
+ // Get the multicomponent naming context from the <naming_context>.
+ // The convention of this <naming_context> input string is that
+ // different naming context is separated by character '/', such as
+ // "create a naming context A/B/C/D".
+ ACE_CString tmp (obj_name);
+ char * naming_string = tmp.rep ();
+ char seps[] = "/:";
+
+ char *token, *lastToken = 0;
+ token = ACE_OS::strtok (naming_string, seps);
+
+ for (CORBA::ULong i = 0; token != 0; ++i)
+ {
+ // While there still are tokens in the "naming_string"
+ name.length (name.length () + 1);
+ name[i].id = CORBA::string_dup (token);
+
+ // Get next naming context
+ lastToken = token;
+ token = ACE_OS::strtok ( 0, seps );
+ }
+
+ // Unregister with the Name Server
+ ACE_DEBUG ((LM_DEBUG,
+ "Unregister component with the name server : %s!\n",
+ obj_name));
+ naming_context->unbind (name);
+
+ return true;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("CIAO (%P|%t) Container_Impl.cpp -"
+ "CIAO::Container_Impl::unregister_with_ns -"
+ "NodeApplication: failed to unregister "
+ "with naming service.");
+ return false;
+ }
+ return true;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/Container_Impl.h b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.h
new file mode 100644
index 00000000000..7becc7b8e9e
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.h
@@ -0,0 +1,215 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Container_Impl.h
+ *
+ * $Id$
+ *
+ * This file contains implementation for the servant of
+ * Components::Deployment::Container interface.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ * @author Gan Deng <gan.deng@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_CONTAINER_IMPL_H
+#define CIAO_CONTAINER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_NodeApplication_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Deployment_ContainerS.h"
+#include "ciao/Deployment_NodeApplicationC.h"
+#include "ciao/Container_Base.h"
+#include "ace/SString.h"
+#include "ciao/Server_init.h" // write_IOR function & NameUtility
+#include "ciao/CIAO_common.h" // CIAO::debug_level
+
+namespace CIAO
+{
+ /**
+ * @class Container_Impl
+ *
+ * @brief Servant implementation for the interface Deployment::Container
+ *
+ * This class implements the Deployment::Container
+ * interface which is not defined by the CCM DnC specification.
+ * As the interface implies, this is actually part of the deployment
+ * interface and is used to manage the lifecycle of the installed
+ * components and homes.
+ */
+ class NODEAPPLICATION_Export Container_Impl
+ : public virtual POA_Deployment::Container
+ {
+ public:
+ /// Constructor
+ Container_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ ::Deployment::NodeApplication_ptr server,
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps =0);
+
+ /// Destructor
+ virtual ~Container_Impl (void);
+
+ /*-------------------------------------------------------------*/
+ /*-------------------- IDL operations (idl) ------------------*/
+
+ /// Initialize the container.
+ virtual CORBA::Long init (const CORBA::PolicyList *policies)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Install all homes and components
+ Deployment::ComponentInfos *
+ install (const ::Deployment::ContainerImplementationInfo & container_impl_info)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure,
+ Components::InvalidConfiguration));
+
+ /// Remove all homes and components
+ virtual void
+ remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ /// Deployment::Container interface defined attributes/operations.
+ virtual ::Deployment::Properties *
+ properties ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Deployment::NodeApplication_ptr
+ get_node_application ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /*-------------------------------------------------------------*/
+ /*------------------- C++ help methods (c++) -----------------*/
+
+ /// Get the containing POA. This operation does *not*
+ /// increase the reference count of the POA.
+ virtual PortableServer::POA_ptr _default_POA (void);
+
+
+ // Install the home of this particular component
+ virtual ::Components::CCMHome_ptr
+ install_home (const ::Deployment::ComponentImplementationInfo & impl_info)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure,
+ Components::InvalidConfiguration));
+
+ /**
+ * @@Note: I don't know how to remove a home right now.
+ * I assume that user will only call remove instead.
+ * This is true at least for DnC run time.
+ *
+ * Right now, in this implementation I assumpe that there will be
+ * same number of homes as the components even if the components
+ * are of the same type. I don't think that we have the modeling
+ * side support of this either. So bear me if you think I avoid
+ * the real thinking for easiness.
+ */
+ // Remove the home of this particular component
+ virtual void
+ remove_home (const char * comp_ins_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ bool
+ register_with_ns (const char * obj_name,
+ CORBA::ORB_ptr orb,
+ Components::CCMObject_ptr obj);
+
+ bool
+ unregister_with_ns (const char * obj_name,
+ CORBA::ORB_ptr orb);
+
+
+ // ------------------- CIAO Internal Operations ------------------------
+ // These below two are helper methods to clean up components
+ // should only be called when we are sure that there is no
+ // active connection on this component.
+ virtual void remove_components ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ virtual void remove_component (const char * comp_ins_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ /// Set the cached object reference.
+ void set_objref (Deployment::Container_ptr o);
+
+ /// Get the cached object reference. This operation will invoke
+ /// _this if there's no cached reference available. Notice that
+ /// this method does *NOT* increase the reference count of the
+ /// cached reference.
+ /// @@ Gan, caller should own memory. In this case you shoudl
+ /// return a duplicate OR add a const to the operation
+ /// signature. This is simply bad programming.
+ Deployment::Container_ptr get_objref ();
+
+protected:
+ /// Keep a pointer to the managing ORB serving this servant.
+ CORBA::ORB_var orb_;
+
+ /// Keep a pointer to the managing POA.
+ PortableServer::POA_var poa_;
+
+ /// Internal container implementation.
+ // @@ Gan/Jai, heard of auto_ptr <>?
+ CIAO::Container *container_;
+
+ /// Cached ConfigValues.
+ Deployment::Properties properties_;
+
+ /// Cached Container reference (of ourselves.)
+ Deployment::Container_var objref_;
+
+ /// Cached NodeApplication.
+ Deployment::NodeApplication_var nodeapp_;
+
+ /// To store all created CCMHome object
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Components::CCMHome_ptr,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> CCMHome_Map;
+ typedef CCMHome_Map::iterator Home_Iterator;
+ CCMHome_Map home_map_;
+
+ /// To store all created Component object.
+ // @@Gan, see how this caching is duplicated..
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Components::CCMObject_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> CCMComponent_Map;
+ typedef CCMComponent_Map::iterator Component_Iterator;
+ CCMComponent_Map component_map_;
+
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ ACE_CString,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> CCMNaming_Map;
+ CCMNaming_Map naming_map_;
+
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps_;
+ };
+}
+
+#if defined (__ACE_INLINE__)
+# include "Container_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONTAINER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/Container_Impl.inl b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.inl
new file mode 100644
index 00000000000..85c17197070
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/Container_Impl.inl
@@ -0,0 +1,37 @@
+/* -*- C++ -*- */
+// $Id$
+
+ACE_INLINE
+CIAO::Container_Impl::Container_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ ::Deployment::NodeApplication_ptr server,
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps)
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ poa_ (PortableServer::POA::_duplicate (p)),
+ nodeapp_ (::Deployment::NodeApplication::_duplicate (server)),
+ static_entrypts_maps_ (static_entrypts_maps)
+{
+}
+
+ACE_INLINE void
+CIAO::Container_Impl::set_objref (Deployment::Container_ptr o)
+{
+ CIAO_TRACE("CIAO::Container_Imp::set_objref");
+
+ if (!CORBA::is_nil (this->objref_.in ()))
+ throw CORBA::BAD_INV_ORDER ();
+
+ this->objref_ = Deployment::Container::_duplicate (o);
+}
+
+ACE_INLINE ::Deployment::Container_ptr
+CIAO::Container_Impl::get_objref ()
+{
+ CIAO_TRACE("CIAO::Container_Imp::get_objref");
+
+ if (CORBA::is_nil (this->objref_.in ()))
+ {
+ this->objref_ = this->_this ();
+ }
+ return this->objref_.in ();
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.cpp b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.cpp
new file mode 100644
index 00000000000..4ffe48cd7d2
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.cpp
@@ -0,0 +1,39 @@
+// $Id$
+
+#include "NoOp_Configurator.h"
+
+CIAO::NoOp_Configurator::~NoOp_Configurator (void)
+{
+ // Not much to do.
+}
+
+int
+CIAO::NoOp_Configurator::pre_orb_initialize ()
+{
+ return 0;
+}
+
+int
+CIAO::NoOp_Configurator::post_orb_initialize (CORBA::ORB_ptr)
+{
+ return 0;
+}
+
+int
+CIAO::NoOp_Configurator::init_resource_manager
+(const ::Deployment::Properties & /*properties*/)
+{
+ // @@ Currently do thing. We should go over the resource struct in
+ // the future and throw exceptions if there are
+ // un-recognizable/supported stuff in it.
+ return 0;
+}
+
+CORBA::PolicyList *
+CIAO::NoOp_Configurator::find_container_policies
+(const ::Deployment::Properties & /*properties*/)
+{
+ // Not much to do.
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.h b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.h
new file mode 100644
index 00000000000..6c32b83ce0d
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator.h
@@ -0,0 +1,62 @@
+/** $Id$
+ * @file NoOp_Configurator.h
+ * @brief This file contains the noop configurator.
+ */
+
+#ifndef NOOP_CONFIGURATOR_H
+#define NOOP_CONFIGURATOR_H
+
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "NodeApp_Configurator.h"
+#include "NoOp_Configurator_export.h"
+
+namespace CIAO
+{
+ /**
+ * @class NoOP_Configurator
+ *
+ * @brief The NoOp_Configurator doesn't do anything.
+ */
+ class NoOp_Configurator_Export NoOp_Configurator
+ : public NodeApp_Configurator
+ {
+ public:
+ /// Default destructor.
+ virtual ~NoOp_Configurator (void);
+
+ /**
+ * @brief "pre_orb_initialize" is called before ORB_init.
+ */
+ virtual int pre_orb_initialize (void);
+
+ /**
+ * @brief "post_orb_initialize" is called after NodeApplication
+ * get a hold at this object.
+ */
+ virtual int post_orb_initialize (CORBA::ORB_ptr o);
+
+ /**
+ * @brief "init_resource_manager" is called by NodeApplication when
+ * it receives an "install" commands.
+ */
+ virtual int
+ init_resource_manager (const ::Deployment::Properties &properties);
+
+ /**
+ * @brief get a policyset by its name.
+ */
+ virtual CORBA::PolicyList *
+ find_container_policies (const ::Deployment::Properties &properties);
+ };
+
+}
+
+#include /**/ "ace/post.h"
+#endif /* NOOP_CONFIGURATOR_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator_export.h b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator_export.h
new file mode 100644
index 00000000000..dce4b728146
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NoOp_Configurator_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NoOp_Configurator
+// ------------------------------
+#ifndef NOOP_CONFIGURATOR_EXPORT_H
+#define NOOP_CONFIGURATOR_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NOOP_CONFIGURATOR_HAS_DLL)
+# define NOOP_CONFIGURATOR_HAS_DLL 1
+#endif /* ! NOOP_CONFIGURATOR_HAS_DLL */
+
+#if defined (NOOP_CONFIGURATOR_HAS_DLL) && (NOOP_CONFIGURATOR_HAS_DLL == 1)
+# if defined (NOOP_CONFIGURATOR_BUILD_DLL)
+# define NoOp_Configurator_Export ACE_Proper_Export_Flag
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NOOP_CONFIGURATOR_BUILD_DLL */
+# define NoOp_Configurator_Export ACE_Proper_Import_Flag
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NOOP_CONFIGURATOR_BUILD_DLL */
+#else /* NOOP_CONFIGURATOR_HAS_DLL == 1 */
+# define NoOp_Configurator_Export
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARATION(T)
+# define NOOP_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NOOP_CONFIGURATOR_HAS_DLL == 1 */
+
+// Set NOOP_CONFIGURATOR_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NOOP_CONFIGURATOR_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NOOP_CONFIGURATOR_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NOOP_CONFIGURATOR_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NOOP_CONFIGURATOR_NTRACE */
+
+#if (NOOP_CONFIGURATOR_NTRACE == 1)
+# define NOOP_CONFIGURATOR_TRACE(X)
+#else /* (NOOP_CONFIGURATOR_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NOOP_CONFIGURATOR_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NOOP_CONFIGURATOR_NTRACE == 1) */
+
+#endif /* NOOP_CONFIGURATOR_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApp_Configurator.h b/modules/CIAO/DAnCE/NodeApplication/NodeApp_Configurator.h
new file mode 100644
index 00000000000..b3eb92b4482
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApp_Configurator.h
@@ -0,0 +1,90 @@
+//$Id$
+/**========================================================
+ *
+ * @file NodeApp_Configurator.h
+ *
+ * @Brief This file contains the implementation of
+ * the basic NodeApp_Configurator interface, the one
+ * that does nothing more
+ *
+ * @author Nanbor Wang <nanbor@exothermic.txcorp.com>
+ *========================================================*/
+
+#ifndef NODEAPP_CONFIGURATOR_H
+#define NODEAPP_CONFIGURATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Deployment_CoreC.h"
+
+namespace CIAO
+{
+ /**
+ *
+ * @class NodeApp_Configurator
+ *
+ * @brief This class defines and implements the default
+ * NodeApp_Configurator base class that's needed for configuring the
+ * NodeApplication process.
+ **/
+ class NodeApp_Configurator
+ {
+ public:
+ /// Default destructor.
+ virtual ~NodeApp_Configurator (void) {}
+
+ /**
+ * @brief "pre_orb_initialize" is called before ORB_init.
+ */
+ virtual int pre_orb_initialize (void) = 0;
+
+ /**
+ * @brief "post_orb_initialize" is called after NodeApplication
+ * get a hold at this object.
+ */
+ virtual int post_orb_initialize (CORBA::ORB_ptr o) = 0;
+
+ /**
+ * @brief "init_resource_manager" is called by NodeApplication when
+ * it receives an "install" commands.
+ */
+ virtual int
+ init_resource_manager (const ::Deployment::Properties &properties) = 0;
+
+ /**
+ * @brief get a policyset by its name.
+ */
+ virtual CORBA::PolicyList *
+ find_container_policies (const ::Deployment::Properties &properties) = 0;
+
+ /// @@ Perhaps we also need a finalizer method here. Perhaps we
+ /// even need to differentiate finalizer before ORB is destroyed
+ /// and the one after that.
+ };
+}
+
+/**
+ * For dynamically linkable concrete NodeApp_Configurator
+ * implementation, remember to create a factory method using "C"
+ * calling convention in the CPP file as follow:
+
+ extern "C" EXPORT_MACRO CIAO::NodeApp_Configurator *create_nodeapp_configurator (void);
+
+ CIAO::NodeApp_Configurator *
+ create_nodeapp_configurator (void)
+ {
+ concrete_NodeApp_Configurator *config;
+ ACE_NEW_RETURN (config, concrete_NodeApp_Configurator, 0);
+ return config;
+ }
+
+ */
+
+
+#include /**/ "ace/post.h"
+#endif /* NODEAPP_CONFIGURATOR_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication.cpp b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.cpp
new file mode 100644
index 00000000000..021f1e5322c
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.cpp
@@ -0,0 +1,52 @@
+// $Id$
+
+#include "NodeApplication_Core.h"
+#include "ace/Sched_Params.h"
+#include "ace/OS_NS_errno.h"
+#include "ciao/CIAO_common.h"
+
+#include <orbsvcs/Event/EC_Default_Factory.h>
+
+void print_arg (int argc, char *argv[])
+{
+ for (int i = 0; i < argc; ++i)
+ ACE_DEBUG ((LM_DEBUG, "NodeApplication ARGV[%d] = %s\n", i, argv [i]));
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ TAO_EC_Default_Factory::init_svcs ();
+
+ ACE_DEBUG ((LM_DEBUG, "*** Starting NodeApplication\n"));
+
+ CIAO::NodeApplication_Options nodeapp_options;
+
+ if (CIAO::debug_level () > 9)
+ print_arg (argc, argv);
+
+ if (nodeapp_options.parse_args (argc, argv) != 0)
+ return -1;
+
+ CIAO::NodeApplication_Core nodeapp_core (nodeapp_options);
+
+ if (nodeapp_core.startup (argc, argv) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to start up the NodeApplication_Core\n"), -1);
+
+ // Run the main event loop for the ORB.
+ nodeapp_core.run_orb ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApp::main\t\n");
+ return 1;
+ }
+
+ if (CIAO::debug_level () > 1)
+ ACE_DEBUG ((LM_DEBUG, "CIAO (%P|%t) - This NodeApplication is destroyed!\n"));
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc
new file mode 100644
index 00000000000..a801e308c5c
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication.mpc
@@ -0,0 +1,41 @@
+// -*- MPC -*-
+// $Id$
+
+project(NoOp_Configurator): ciao_deployment_stub {
+ sharedname = CIAO_NoOp_Configurator
+ dynamicflags = NOOP_CONFIGURATOR_BUILD_DLL
+
+ Source_Files {
+ NoOp_Configurator.cpp
+ }
+}
+
+project(NodeApplicationLib): ciao_server_dnc, ciao_events_dnc, ciao_noop_configurator {
+ sharedname = CIAO_NodeApplication
+ dynamicflags = NODEAPPLICATION_BUILD_DLL
+
+ Source_Files {
+ Configurator_Factory.cpp
+ Container_Impl.cpp
+ NodeApplication_Core.cpp
+ NodeApplication_Impl.cpp
+ }
+}
+
+project(NodeApplication): ciao_server_dnc, ciao_events_dnc, ciao_nodeapplication, ciao_noop_configurator {
+ exename = NodeApplication
+
+ Source_Files {
+ NodeApplication.cpp
+ }
+}
+
+project(RTNA_Configurator): ciao_deployment_stub, rt_server {
+ sharedname = CIAO_RTNA_Configurator
+ dynamicflags = CIAO_RTNA_CONFIGURATOR_BUILD_DLL
+
+ Source_Files {
+ RTNodeApp_Configurator.cpp
+ RTConfig_Manager.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.cpp b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.cpp
new file mode 100644
index 00000000000..eef577b2cfd
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.cpp
@@ -0,0 +1,252 @@
+// $Id$
+
+#include "ciao/CIAO_NodeApplication_CallBackC.h"
+#include "ace/Sched_Params.h"
+#include "NodeApplication_Impl.h"
+#include "NodeApplication_Core.h"
+#include "ace/Null_Mutex.h"
+#include "ciao/Server_init.h"
+#include "ciao/CIAO_common.h"
+
+#if !defined (__ACE_INLINE__)
+# include "NodeApplication_Core.inl"
+#endif /* __ACE_INLINE__ */
+
+const char *
+sched_policy_name (int sched_policy)
+{
+ const char *name = 0;
+
+ switch (sched_policy)
+ {
+ case ACE_SCHED_OTHER:
+ name = "SCHED_OTHER";
+ break;
+ case ACE_SCHED_RR:
+ name = "SCHED_RR";
+ break;
+ case ACE_SCHED_FIFO:
+ name = "SCHED_FIFO";
+ break;
+ }
+
+ return name;
+}
+
+
+/// The following check is taken from $(TAO_ROOT)/tests/RTCORBA/
+int
+check_supported_priorities (CORBA::ORB_ptr orb)
+{
+ CIAO_TRACE ("NodeApplication_Core::check_supported_priorities");
+
+ int const sched_policy =
+ orb->orb_core ()->orb_params ()->ace_sched_policy ();
+
+ // Check that we have sufficient priority range to run,
+ // i.e., more than 1 priority level.
+ int const max_priority =
+ ACE_Sched_Params::priority_max (sched_policy);
+ int const min_priority =
+ ACE_Sched_Params::priority_min (sched_policy);
+
+ if (max_priority == min_priority)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Not enough priority levels with the %s scheduling policy\n"
+ "on this platform to run, terminating program....\n"
+ "Check svc.conf options\n",
+ sched_policy_name (sched_policy)));
+
+ return -1;
+ }
+ return 0;
+}
+
+int
+CIAO::NodeApplication_Core::svc ()
+{
+ CIAO_TRACE ("CIAO::NodeApplication_Core::svc");
+
+ try
+ {
+ CORBA::Object_var object =
+ this->orb_->resolve_initial_references ("RootPOA");
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (object.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ poa_manager->activate ();
+
+ // ...
+ CIAO::NodeApplication_Impl *nodeapp_servant = 0;
+
+ ACE_NEW_RETURN (nodeapp_servant,
+ CIAO::NodeApplication_Impl (this->orb_.in (),
+ root_poa.in (),
+ *this->configurator_.get ()),
+ -1);
+
+ PortableServer::ServantBase_var safe_servant (nodeapp_servant);
+
+ // Configuring NodeApplication.
+ PortableServer::ObjectId_var nodeapp_oid
+ = root_poa->activate_object (nodeapp_servant);
+
+ object = root_poa->id_to_reference (nodeapp_oid.in ());
+
+ Deployment::NodeApplication_var nodeapp_obj =
+ Deployment::NodeApplication::_narrow (object.in ());
+
+ if (CORBA::is_nil (nodeapp_obj.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to activate NodeApplication object\n"),
+ -1);
+
+ /** @@ We need to call NodeApplication servant's init method.
+ * But it's not sure to me where exactly we can get the
+ * Properties needed by the init method at this moment. There are two
+ * ways to set the property of the NodeApplication:
+ * 1. call init remotely from NodeApplicationManager
+ * 2. call init locally on the servant of NodeApplication.
+ */
+ bool retval = nodeapp_servant->init ();
+
+ if (retval)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NodeApplication Failed on creating and\
+ initializing the session container!"));
+ return 1;
+ }
+
+ CORBA::String_var str = this->orb_->object_to_string (nodeapp_obj.in ());
+
+ if (this->options_.write_ior_file ())
+ CIAO::Utility::write_IOR (this->options_.ior_output_filename (),
+ str.in ());
+
+ // End Deployment part
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_INFO, "NodeApplication IOR: %s\n", str.in ()));
+
+ }
+
+ Deployment::NodeApplicationManager_var nodeapp_man;
+ Deployment::Properties_var prop = new Deployment::Properties;
+
+ if (this->options_.use_callback ())
+ {
+ object = this->orb_->string_to_object (this->options_.callback_ior ());
+
+ CIAO::NodeApplication_Callback_var nam_callback
+ = CIAO::NodeApplication_Callback::_narrow (object.in ());
+
+ Deployment::Properties_out properties_out (prop.out ());
+
+ nodeapp_man
+ = nam_callback->register_node_application (nodeapp_obj.in (),
+ properties_out);
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Running NodeApplication...\n"));
+
+ this->orb_->run ();
+
+ root_poa->destroy (1, 1);
+
+ this->orb_->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught");
+ return -1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Exiting NodeApplication...\n"));
+ return 0;
+}
+
+int
+CIAO::NodeApplication_Core::startup (int argc, char *argv[])
+{
+ CIAO_TRACE ("CIAO::NodeApplication_Core::startup");
+
+ // pre-init
+ this->configurator_.reset (this->options_.create_nodeapp_configurator ());
+
+ if (this->configurator_->pre_orb_initialize ())
+ return -1;
+
+ // Initialize orb
+ this->orb_ =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+ CIAO::Server_init (this->orb_.in ());
+
+ return this->configurator_->post_orb_initialize (this->orb_.in ());
+}
+
+int
+CIAO::NodeApplication_Core::run_orb ()
+{
+ CIAO_TRACE ("CIAO::NodeApplication_Core::run_orb");
+
+ // check supported priority before running RT
+ if (this->options_.rt_support () &&
+ check_supported_priorities (this->orb_.in ()) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR, "ERROR: DISABLE RT SUPPORT\n"), -1);
+ // this->options_.rt_support_ = 0;
+ }
+
+ if (this->options_.rt_support ()) // RT support reuqested
+ {
+
+
+ // spawn a thread
+ // Task activation flags.
+ long flags =
+ THR_NEW_LWP |
+ THR_JOINABLE |
+ this->orb_->orb_core ()->orb_params ()->thread_creation_flags ();
+
+ // Activate task.
+ int result =
+ this->activate (flags);
+ if (result == -1)
+ {
+ if (errno == EPERM)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot create thread with scheduling policy %s\n"
+ "because the user does not have the appropriate privileges, terminating program....\n"
+ "Check svc.conf options and/or run as root\n",
+ sched_policy_name (this->orb_->orb_core ()->orb_params ()->ace_sched_policy ())),
+ 2);
+ }
+ else
+ return -1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "*** Running NodeApplication in RT mode\n"));
+
+ // Wait for task to exit.
+ result =
+ this->wait ();
+ ACE_ASSERT (result != -1);
+
+ ACE_DEBUG ((LM_INFO, "*** Ending NodeApplication\n"));
+ return 0;
+
+ }
+ else
+ return this->svc ();
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.h b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.h
new file mode 100644
index 00000000000..aceef49209c
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.h
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file NodeApplication_Core.h
+ *
+ * $Id$
+ *
+ * An ACE_Task subclass that manages the NodeApplication runtime. We
+ * can run this class as a separate thread, as in the case of RT
+ * support, or as a event driven ORB.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_NODEAPPLICATION_CORE_H
+#define CIAO_NODEAPPLICATION_CORE_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_NodeApplication_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/ORB_Core.h"
+#include "tao/ORB.h"
+#include "ace/Task.h"
+#include "ace/Auto_Ptr.h"
+#include "Configurator_Factory.h"
+#include "NoOp_Configurator.h"
+
+namespace CIAO
+{
+ /**
+ * @class NodeApplication_Core
+ *
+ * @brief An ACE_Task subclass that allow the ORB thread to be run
+ * as separate thread when RT behaviors are needed.
+ */
+ class NODEAPPLICATION_Export NodeApplication_Core
+ : public virtual ACE_Task_Base
+ {
+ public:
+ NodeApplication_Core (NodeApplication_Options &opts);
+
+ virtual int svc (void);
+
+ int startup (int argc, char *argv[]);
+
+ int run_orb (void);
+
+ protected:
+ CORBA::ORB_var orb_;
+
+ NodeApplication_Options &options_;
+
+ auto_ptr<NodeApp_Configurator> configurator_;
+ };
+
+}
+
+#if defined (__ACE_INLINE__)
+# include "NodeApplication_Core.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_NODEAPPLICAITON_CORE_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.inl b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.inl
new file mode 100644
index 00000000000..f1f1e82da0c
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Core.inl
@@ -0,0 +1,9 @@
+// -*- C++ -*-
+// $Id$
+
+ACE_INLINE
+CIAO::NodeApplication_Core::NodeApplication_Core (CIAO::NodeApplication_Options &opts)
+ : options_ (opts)
+{
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp
new file mode 100644
index 00000000000..afbb5c9bcc6
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.cpp
@@ -0,0 +1,1256 @@
+// $Id$
+
+#include "NodeApplication_Impl.h"
+#include "ace/SString.h"
+#include "Container_Impl.h"
+#include "Deployment_EventsC.h"
+#include "ciaosvcs/Events/CIAO_RTEC/CIAO_RTEventC.h"
+
+#if !defined (__ACE_INLINE__)
+# include "NodeApplication_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+CIAO::NodeApplication_Impl::~NodeApplication_Impl (void)
+{
+}
+
+
+CORBA::Long
+CIAO::NodeApplication_Impl::init ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ /// @todo initialize this NodeApplication properties
+ return 0;
+}
+
+CORBA::Long
+CIAO::NodeApplication_Impl::create_all_containers (
+ const ::Deployment::ContainerImplementationInfos & container_infos
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Create all the containers here based on the input node_impl_info.
+ CORBA::ULong const len = container_infos.length ();
+
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ // The factory method <create_container> will intialize the container
+ // servant with properties, so we don't need to call <init> on the
+ // container object reference.
+ // Also, the factory method will add the container object reference
+ // to the set for us.
+ ::Deployment::Container_var cref =
+ this->create_container (container_infos[i].container_config);
+
+ // Build the Component_Container_Map
+ for (CORBA::ULong j = 0;
+ j < container_infos[i].impl_infos.length ();
+ ++j)
+ {
+ this->component_container_map_.bind (
+ container_infos[i].impl_infos[j].component_instance_name.in (),
+ ::Deployment::Container::_duplicate (cref.in ()));
+ }
+ }
+
+ return 0;
+}
+
+void
+CIAO::NodeApplication_Impl::finishLaunch (
+ const Deployment::Connections & providedReference,
+ CORBA::Boolean start,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::InvalidConnection))
+{
+ ACE_UNUSED_ARG (start);
+
+ // If parameter "add_connection" is true, then it means we want to "add"
+ // new connections, other, we remove existing connections
+ this->finishLaunch_i (providedReference, start, add_connection);
+}
+
+void
+CIAO::NodeApplication_Impl::finishLaunch_i (
+ const Deployment::Connections & connections,
+ CORBA::Boolean start,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::InvalidConnection))
+{
+ ACE_UNUSED_ARG (start);
+
+ try
+ {
+ CORBA::ULong const length = connections.length ();
+
+ // For every connection struct we finish the connection.
+ for (CORBA::ULong i = 0; i < length; ++i)
+ {
+ ACE_CString name = connections[i].instanceName.in ();
+
+ // For ES_to_Consumer connection, we simply call
+ // handle_es_consumer_connection method.
+ //if (connections[i].kind == Deployment::rtecEventConsumer)
+ if (this->_is_es_consumer_conn (connections[i]))
+ {
+ this->handle_es_consumer_connection (
+ connections[i],
+ add_connection);
+ continue;
+ }
+
+ // For other type of connections, we need to fetch the
+ // objref of the source component
+ Component_State_Info comp_state;
+
+ if (this->component_state_map_.find (name, comp_state) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::finishLaunch, "
+ "invalid port name [%s] in instance [%s] \n",
+ connections[i].portName.in (),
+ name.c_str ()));
+ throw Deployment::InvalidConnection ();
+ }
+
+ Components::EventConsumerBase_var consumer;
+
+ Components::CCMObject_var comp = comp_state.objref_;
+
+ if (CORBA::is_nil (comp.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "comp is nil\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ switch (connections[i].kind)
+ {
+ case Deployment::SimplexReceptacle:
+ case Deployment::MultiplexReceptacle:
+ this->handle_facet_receptable_connection (
+ comp.in (),
+ connections[i],
+ add_connection);
+ break;
+
+ case Deployment::EventEmitter:
+ this->handle_emitter_consumer_connection (
+ comp.in (),
+ connections[i],
+ add_connection);
+ break;
+
+ case Deployment::EventPublisher:
+ if (this->_is_publisher_es_conn (connections[i]))
+ this->handle_publisher_es_connection (
+ comp.in (),
+ connections[i],
+ add_connection);
+ else
+ this->handle_publisher_consumer_connection (
+ comp.in (),
+ connections[i],
+ add_connection);
+ break;
+
+ default:
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::finishLaunch_i: "
+ "Unsupported event port type encounted\n"));
+ throw CORBA::NO_IMPLEMENT ();
+ }
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApplication_Impl::finishLaunch\t\n");
+ throw;
+ }
+
+}
+
+void
+CIAO::NodeApplication_Impl::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ Component_Iterator end = this->component_state_map_.end ();
+ for (Component_Iterator iter (this->component_state_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ if (((*iter).int_id_).state_ == NEW_BORN)
+ {
+ ((*iter).int_id_).objref_->ciao_preactivate ();
+ }
+
+ ((*iter).int_id_).state_ = PRE_ACTIVE;
+ }
+}
+
+void
+CIAO::NodeApplication_Impl::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ Component_Iterator end = this->component_state_map_.end ();
+ for (Component_Iterator iter (this->component_state_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ if (((*iter).int_id_).state_ == PRE_ACTIVE)
+ {
+ ((*iter).int_id_).objref_->ciao_activate ();
+ }
+
+ ((*iter).int_id_).state_ = ACTIVE;
+ }
+}
+
+void
+CIAO::NodeApplication_Impl::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError))
+{
+ Component_Iterator end = this->component_state_map_.end ();
+ for (Component_Iterator iter (this->component_state_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ if (((*iter).int_id_).state_ == ACTIVE)
+ {
+ ((*iter).int_id_).objref_->ciao_postactivate ();
+
+ ((*iter).int_id_).state_ = POST_ACTIVE;
+ }
+ }
+}
+
+void
+CIAO::NodeApplication_Impl::ciao_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError))
+{
+ Component_Iterator end = this->component_state_map_.end ();
+ for (Component_Iterator iter (this->component_state_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ ((*iter).int_id_).objref_->ciao_passivate ();
+
+ ((*iter).int_id_).state_ = PASSIVE;
+ }
+ ACE_DEBUG ((LM_DEBUG, "exiting passivate\n"));
+}
+
+Deployment::ComponentInfos *
+CIAO::NodeApplication_Impl::install (
+ const ::Deployment::NodeImplementationInfo & node_impl_info)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure,
+ Components::InvalidConfiguration))
+{
+ Deployment::ComponentInfos_var retv;
+ try
+ {
+ // Extract ORB resource def here.
+ this->configurator_.init_resource_manager (node_impl_info.nodeapp_config);
+
+ const ::Deployment::ContainerImplementationInfos container_infos =
+ node_impl_info.impl_infos;
+
+ ACE_NEW_THROW_EX (retv,
+ Deployment::ComponentInfos,
+ CORBA::NO_MEMORY ());
+
+ retv->length (0UL);
+
+ // Call create_all_containers to create all the necessary containers..
+ // @@(GD): The "create_all_containers" mechanism needs to be refined, so
+ // we should always try to reuse existing containers as much as possible!
+ // We need not only factory pattern, but also finder pattern here as well.
+ if (CIAO::debug_level () > 15)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) NodeApplication_Impl.cpp -"
+ "CIAO::NodeApplication_Impl::install -"
+ "creating all the containers. \n"));
+ }
+
+ CORBA::ULong old_set_size = this->container_set_.size ();
+
+ (void) this->create_all_containers (container_infos);
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) NodeApplication_Impl.cpp -"
+ "CIAO::NodeApplication_Impl::install -"
+ "create_all_containers() called.\n"));
+ }
+
+ // For each container, invoke <install> operation, this will return
+ // the ComponentInfo for components installed in each container.
+ // Merge all the returned ComponentInfo, which will be used
+ // as the return value of this method.
+ CORBA::ULong const num_containers = container_infos.length ();
+ for (CORBA::ULong i = 0; i < num_containers; ++i)
+ {
+ Deployment::ComponentInfos_var comp_infos =
+ this->container_set_.at(i+old_set_size)->
+ install (container_infos[i]);
+
+ // Append the return sequence to the *big* return sequence
+ CORBA::ULong curr_len = retv->length ();
+ retv->length (curr_len + comp_infos->length ());
+
+ for (CORBA::ULong j = curr_len; j < retv->length (); j++)
+ retv[j] = comp_infos[j-curr_len];
+ }
+
+ // @@ Maybe we can optimize this. We can come up with a decision later.
+ // Cache a copy of the component object references for all the components
+ // installed on this NodeApplication. I know we can delegates these to the
+ // undelying containers, but in that case, we should loop
+ // all the containers to find the component object reference. - Gan
+ CORBA::ULong const comp_len = retv->length ();
+ for (CORBA::ULong len = 0;
+ len < comp_len;
+ ++len)
+ {
+ Component_State_Info tmp;
+
+ tmp.state_ = NEW_BORN;
+ tmp.objref_ =
+ Components::CCMObject::_duplicate (retv[len].component_ref.in ());
+
+ //Since we know the type ahead of time...narrow is omitted here.
+ if (this->component_state_map_.rebind (
+ retv[len].component_instance_name.in(), tmp))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) NodeApplication_Impl.cpp -"
+ "CIAO::NodeApplication_Impl::install -"
+ "error binding component instance [%s] "
+ "into the map. \n",
+ retv[len].component_instance_name.in ()));
+ throw Deployment::InstallationFailure (
+ "NodeApplication_Imp::install",
+ "Duplicate component instance name");
+ }
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("CIAO_NodeApplication::install error\t\n");
+ throw;
+ }
+
+ return retv._retn ();
+}
+
+void
+CIAO::NodeApplication_Impl::remove_component (const char * inst_name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Components::RemoveFailure))
+{
+ ACE_DEBUG ((LM_DEBUG, "NA_I: removing component %s\n",
+ inst_name));
+
+ // Fetch the container object reference from the componet_container_map
+ ::Deployment::Container_var container_ref;
+ if (this->component_container_map_.find (inst_name, container_ref) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::remove_component, "
+ "invalid instance [%s] in the component_container_map.\n",
+ inst_name));
+ throw ::Components::RemoveFailure ();
+ }
+
+ // Remove this component instance from the node application
+ ACE_CString name (inst_name);
+ this->component_container_map_.unbind (name);
+ this->component_state_map_.unbind (name);
+ container_ref->remove_component (inst_name);
+}
+
+void
+CIAO::NodeApplication_Impl::passivate_component (const char * name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Components::RemoveFailure))
+{
+ Component_State_Info comp_state;
+
+ if (this->component_state_map_.find (name, comp_state) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::passivate_component, "
+ "invalid instance [%s] \n",
+ name));
+ throw Components::RemoveFailure ();
+ }
+
+ if (CORBA::is_nil (comp_state.objref_.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "comp is nil\n"));
+ throw Components::RemoveFailure ();
+ }
+
+ comp_state.objref_->ciao_passivate ();
+}
+
+void
+CIAO::NodeApplication_Impl::activate_component (const char * name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StartError))
+{
+ Component_State_Info comp_state;
+
+ if (this->component_state_map_.find (name, comp_state) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::activate_component, "
+ "invalid instance [%s] \n",
+ name));
+ throw Deployment::StartError ();
+ }
+
+ if (CORBA::is_nil (comp_state.objref_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "comp is nil\n"));
+ throw Deployment::StartError ();
+ }
+
+ comp_state.objref_->ciao_preactivate ();
+
+ comp_state.objref_->ciao_activate ();
+
+ comp_state.objref_->ciao_postactivate ();
+}
+
+
+void
+CIAO::NodeApplication_Impl::remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // If we still have components installed, then do nothing
+
+ if (this->component_state_map_.current_size () != 0)
+ return;
+
+ // For each container, invoke <remove> operation to remove home and components.
+ CORBA::ULong const set_size = this->container_set_.size ();
+ for (CORBA::ULong i = 0; i < set_size; ++i)
+ {
+ if (CIAO::debug_level () > 5)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NA: calling remove on container %i\n"));
+ }
+
+ this->container_set_.at(i)->remove ();
+ }
+
+ // Remove all containers
+ // Maybe we should also deactivate container object reference.
+ if (CIAO::debug_level () > 5)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NA: remove all\n"));
+ }
+
+ this->container_set_.remove_all ();
+
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Removed all containers from this NodeApplication!\n"));
+ }
+
+ // For static deployment, ORB will be shutdown in the Static_NodeManager
+ if (this->static_entrypts_maps_ == 0)
+ {
+ this->orb_->shutdown (0);
+ ACE_DEBUG ((LM_DEBUG, "NA: shutdown\n"));
+ }
+}
+
+
+// Create a container interface, which will be hosted in this NodeApplication.
+::Deployment::Container_ptr
+CIAO::NodeApplication_Impl::create_container (
+ const ::Deployment::Properties &properties)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreateFailure,
+ ::Components::InvalidConfiguration))
+{
+ //if (CIAO::debug_level () > 1)
+ // ACE_DEBUG ((LM_DEBUG, "ENTERING: NodeApplication_Impl::create_container()\n"));
+
+ CORBA::PolicyList_var policies
+ = this->configurator_.find_container_policies (properties);
+
+ CIAO::Container_Impl *container_servant = 0;
+
+ ACE_NEW_THROW_EX (container_servant,
+ CIAO::Container_Impl (this->orb_.in (),
+ this->poa_.in (),
+ this->get_objref (),
+ this->static_entrypts_maps_),
+ CORBA::NO_MEMORY ());
+
+ PortableServer::ServantBase_var safe_servant (container_servant);
+
+ // @TODO: Need to decide a "component_installation" equivalent data
+ // structure to pass to the container, which will be used to
+ // suggest how to install the components. Each such data stucture
+ // should be correspond to one <process_collocation> tag in the XML
+ // file to describe the deployment plan.
+ container_servant->init (policies.ptr ());
+
+ PortableServer::ObjectId_var oid
+ = this->poa_->activate_object (container_servant);
+
+ CORBA::Object_var obj
+ = this->poa_->id_to_reference (oid.in ());
+
+ ::Deployment::Container_var ci
+ = ::Deployment::Container::_narrow (obj.in ());
+
+ // Cached the objref in its servant.
+ container_servant->set_objref (ci.in ());
+
+ {
+ ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0);
+
+ this->container_set_.add (ci.in ());
+ }
+
+ //if (CIAO::debug_level () > 1)
+ // ACE_DEBUG ((LM_DEBUG,
+ // "LEAVING: NodeApplication_Impl::create_container()\n"));
+ return ci._retn ();
+}
+
+// Remove a container interface.
+void
+CIAO::NodeApplication_Impl::remove_container (::Deployment::Container_ptr cref)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::RemoveFailure))
+{
+ ACE_DEBUG ((LM_DEBUG, "ENTERING: NodeApplication_Impl::remove_container()\n"));
+ ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->lock_);
+
+ if (this->container_set_.object_in_set (cref) == 0)
+ {
+ throw Components::RemoveFailure();
+ }
+
+ cref->remove ();
+
+ // @@ Deactivate object.
+ PortableServer::ObjectId_var oid
+ = this->poa_->reference_to_id (cref);
+
+ this->poa_->deactivate_object (oid.in ());
+
+ // Should we remove the server still, even if the previous call failed.
+ if (this->container_set_.remove (cref) == -1)
+ {
+ throw ::Components::RemoveFailure ();
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "LEAVING: NodeApplication_Impl::remove_container()\n"));
+}
+
+// Get containers
+::Deployment::Containers *
+CIAO::NodeApplication_Impl::get_containers ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return 0;
+}
+
+CIAO::CIAO_Event_Service *
+CIAO::NodeApplication_Impl::
+install_es (const ::CIAO::DAnCE::EventServiceDeploymentDescription & es_info)
+ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::InstallationFailure))
+{
+ try
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nNodeApplication_Impl::install_es() called.\n\n"));
+
+ CIAO_Event_Service_var ciao_es =
+ es_factory_.create (es_info.type, es_info.name.in ());
+
+ // Set up the event channel federations
+ if (es_info.type == CIAO::RTEC)
+ {
+ // Narrow the event service to CIAO_RT_Event_Service
+ ::CIAO::CIAO_RT_Event_Service_var ciao_rtes =
+ ::CIAO::CIAO_RT_Event_Service::_narrow (ciao_es.in ());
+
+ if (CORBA::is_nil (ciao_rtes.in ()))
+ throw ::Deployment::InstallationFailure ();
+
+ // Set up the event channel federations
+ for (CORBA::ULong j = 0; j < es_info.addr_servs.length (); ++j)
+ {
+ bool retv =
+ ciao_rtes->create_addr_serv (
+ es_info.addr_servs[j].name.in (),
+ es_info.addr_servs[j].port,
+ es_info.addr_servs[j].address);
+
+ if (retv == false)
+ {
+ ACE_DEBUG ((LM_ERROR, "RTEC failed to create addr serv object\t\n"));
+ ACE_THROW_RETURN (::Deployment::InstallationFailure (), 0);
+ }
+ }
+
+ for (CORBA::ULong j = 0; j < es_info.senders.length (); ++j)
+ {
+ bool retv =
+ ciao_rtes->create_sender (
+ es_info.senders[j].addr_serv_id.in ());
+
+ if (retv == false)
+ {
+ ACE_DEBUG ((LM_ERROR, "RTEC failed to create UDP sender object\t\n"));
+ ACE_THROW_RETURN (::Deployment::InstallationFailure (), 0);
+ }
+ }
+
+ for (CORBA::ULong j = 0; j < es_info.receivers.length (); ++j)
+ {
+ bool retv =
+ ciao_rtes->create_receiver (
+ es_info.receivers[j].addr_serv_id.in (),
+ es_info.receivers[j].is_multicast,
+ es_info.receivers[j].listen_port);
+
+ if (retv == false)
+ {
+ ACE_DEBUG ((LM_ERROR, "RTEC failed to create UDP receiver object\t\n"));
+ ACE_THROW_RETURN (::Deployment::InstallationFailure (), 0);
+ }
+ }
+ }
+ return ciao_es._retn ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApplication_Impl::finishLaunch\t\n");
+ ACE_THROW_RETURN (::Deployment::InstallationFailure (), 0);
+ }
+
+}
+
+
+ACE_CString *
+CIAO::NodeApplication_Impl::
+create_connection_key (const Deployment::Connection & connection)
+{
+ ACE_CString * retv;
+ ACE_NEW_RETURN (retv, ACE_CString, 0);
+
+ (*retv) += connection.instanceName.in ();
+ (*retv) += connection.portName.in ();
+ (*retv) += connection.endpointInstanceName.in ();
+ (*retv) += connection.endpointPortName.in ();
+
+ if (CIAO::debug_level () > 3)
+ ACE_ERROR ((LM_ERROR, "The key is: %s\n", (*retv).c_str ()));
+
+ return retv;
+}
+
+
+void
+CIAO::NodeApplication_Impl::
+handle_facet_receptable_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection))
+{
+ if (CIAO::debug_level () > 11)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::finishLaunch, "
+ "working on port name [%s] in instance [%s] \n",
+ connection.portName.in (),
+ connection.instanceName.in ()));
+ }
+
+ if (add_connection)
+ {
+ ::Components::Cookie_var cookie =
+ comp->connect (connection.portName.in (),
+ connection.endpoint.in ());
+
+ ACE_CString key = (*create_connection_key (connection));
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_ERROR ((LM_ERROR, "[BINDING KEY]: %s\n", key.c_str ()));
+ }
+ this->cookie_map_.rebind (key, cookie);
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::finishLaunch\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+ else
+ {
+ ACE_CString key = (*create_connection_key (connection));
+ ::Components::Cookie_var cookie;
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_ERROR ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ()));
+ }
+ if (this->cookie_map_.find (key, cookie) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Cookie Not Found!\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ comp->disconnect (connection.portName.in (),
+ cookie.in ());
+ this->cookie_map_.unbind (key);
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::finishLaunch\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] disconnected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+}
+
+
+void
+CIAO::NodeApplication_Impl::
+handle_emitter_consumer_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection))
+{
+ Components::EventConsumerBase_var consumer =
+ Components::EventConsumerBase::_narrow (connection.endpoint.in ());
+
+ if (CORBA::is_nil (consumer.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_emitter_consumer_connection, "
+ "for port name [%s] in instance [%s] ,"
+ "there is an invalid endPoint. \n",
+ connection.portName.in (),
+ connection.instanceName.in ()));
+ throw Deployment::InvalidConnection ();
+ }
+
+ if (CIAO::debug_level () > 11)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_emitter_consumer_connection, "
+ "working on port name [%s] in instance [%s] \n",
+ connection.portName.in (),
+ connection.instanceName.in ()));
+ }
+
+ if (add_connection)
+ {
+ comp->connect_consumer (connection.portName.in (),
+ consumer.in ());
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_emitter_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+ else
+ {
+// Operation not implemented by the CIDLC.
+// comp->disconnect_consumer (connection.portName.in (),
+// 0
+//);
+// ACE_TRY_CHECK;
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_emitter_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] disconnected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+}
+
+
+void
+CIAO::NodeApplication_Impl::
+handle_publisher_consumer_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection))
+{
+ Components::EventConsumerBase_var consumer =
+ Components::EventConsumerBase::_narrow (connection.endpoint.in ());
+
+ if (CORBA::is_nil (consumer.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_consumer_connection, "
+ "for port name [%s] in instance [%s] ,"
+ "there is an invalid endPoint. \n",
+ connection.portName.in (),
+ connection.instanceName.in ()));
+ throw Deployment::InvalidConnection ();
+ }
+
+ if (CIAO::debug_level () > 11)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_consumer_connection, "
+ "working on port name [%s] in instance [%s] \n",
+ connection.portName.in (),
+ connection.instanceName.in ()));
+ }
+
+ if (add_connection)
+ {
+ ::Components::Cookie_var cookie =
+ comp->subscribe (connection.portName.in (),
+ consumer.in ());
+
+ ACE_CString key = (*create_connection_key (connection));
+ this->cookie_map_.rebind (key, cookie);
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+ else // remove the connection
+ {
+ ACE_CString key = (*create_connection_key (connection));
+ ::Components::Cookie_var cookie;
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_ERROR ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ()));
+ }
+ if (this->cookie_map_.find (key, cookie) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Cookie Not Found!\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ comp->unsubscribe (connection.portName.in (),
+ cookie.in ());
+ this->cookie_map_.unbind (key);
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] disconnected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+}
+
+
+void
+CIAO::NodeApplication_Impl::
+handle_publisher_es_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection))
+{
+ if (! this->_is_publisher_es_conn (connection))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_es_connection: "
+ "Unsupported event connection type\n"));
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ const CIAO::CIAO_Event_Service_ptr event_service =
+ connection.event_service;
+
+ if (CORBA::is_nil (event_service))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Nil event_service\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // supplier ID
+ ACE_CString sid (connection.instanceName.in ());
+ sid += "_";
+ sid += connection.portName.in ();
+
+ if (add_connection)
+ {
+ ::Components::Cookie_var cookie =
+ comp->subscribe (connection.portName.in (),
+ event_service);
+
+ ACE_CString key = (*create_connection_key (connection));
+ this->cookie_map_.rebind (key, cookie);
+
+ // Create a supplier_config and register it to ES
+ CIAO::Supplier_Config_var supplier_config =
+ event_service->create_supplier_config ();
+
+ supplier_config->supplier_id (sid.c_str ());
+ event_service->connect_event_supplier (supplier_config.in ());
+ supplier_config->destroy ();
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_es_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+ else // remove the connection
+ {
+ ACE_CString key = (*create_connection_key (connection));
+ ::Components::Cookie_var cookie;
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_ERROR ((LM_ERROR, "[FINDING KEY]: %s\n", key.c_str ()));
+ }
+ if (this->cookie_map_.find (key, cookie) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Cookie Not Found!\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ comp->unsubscribe (connection.portName.in (),
+ cookie.in ());
+ this->cookie_map_.unbind (key);
+ event_service->disconnect_event_supplier (sid.c_str ());
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_publisher_es_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] disconnected.\n",
+ connection.instanceName.in (),
+ connection.portName.in (),
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in ()));
+ }
+ }
+}
+
+
+void
+CIAO::NodeApplication_Impl::
+handle_es_consumer_connection (
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection))
+{
+ if (! this->_is_es_consumer_conn (connection))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_es_consumer_connection: "
+ "Unsupported event connection type\n"));
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ // Get ES object
+ const CIAO::CIAO_Event_Service_ptr event_service =
+ connection.event_service;
+
+ if (CORBA::is_nil (event_service))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_es_consumer_connection: "
+ "NIL event_service\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // Get consumer object
+ Components::EventConsumerBase_var consumer =
+ Components::EventConsumerBase::_narrow (connection.endpoint.in ());
+
+ if (CORBA::is_nil (consumer.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_es_consumer_connection: "
+ "Nil consumer port object reference\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // consumer ID
+ ACE_CString cid (connection.instanceName.in ());
+ cid += "_";
+ cid += connection.portName.in ();
+ cid += "_consumer";
+
+ if (add_connection)
+ {
+ CIAO::Consumer_Config_var consumer_config =
+ event_service->create_consumer_config ();
+
+ consumer_config->consumer_id (cid.c_str ());
+ consumer_config->consumer (consumer.in ());
+
+ // Need to setup a filter, if it's specified in the descriptor
+ for (CORBA::ULong i = 0; i < connection.config.length (); ++i)
+ {
+ if (ACE_OS::strcmp (connection.config[i].name.in (),
+ "EventFilter") != 0)
+ continue;
+
+ // Extract the filter information
+ CIAO::DAnCE::EventFilter *filter = 0;
+ connection.config[i].value >>= filter;
+
+ CORBA::ULong size = (*filter).sources.length ();
+
+ if ((*filter).type == DAnCE::CONJUNCTION)
+ consumer_config->start_conjunction_group (size);
+ else if ((*filter).type == DAnCE::DISJUNCTION)
+ consumer_config->start_disjunction_group (size);
+
+ for (CORBA::ULong j = 0; j < size; ++j)
+ {
+ consumer_config->insert_source ((*filter).sources[j]);
+ }
+ }
+
+ event_service->connect_event_consumer (consumer_config.in ());
+ consumer_config->destroy ();
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_es_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] connected.\n",
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in (),
+ connection.instanceName.in (),
+ connection.portName.in ()));
+ }
+ }
+ else // remove the connection
+ {
+ event_service->disconnect_event_consumer (cid.c_str ());
+
+ if (CIAO::debug_level () > 6)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - NodeApplication_Impl.cpp, "
+ "CIAO::NodeApplication_Impl::handle_es_consumer_connection\n"
+ "[INSTANCE:PORT] : [%s:%s] --> [%s:%s] disconnected.\n",
+ connection.endpointInstanceName.in (),
+ connection.endpointPortName.in (),
+ connection.instanceName.in (),
+ connection.portName.in ()));
+ }
+ }
+}
+
+// Below code is not used at this time.
+void
+CIAO::NodeApplication_Impl::build_event_connection (
+ const Deployment::Connection & connection,
+ bool add_or_remove)
+ ACE_THROW_SPEC ((Deployment::InvalidConnection,
+ CORBA::SystemException))
+{
+ ACE_DEBUG ((LM_DEBUG, "CIAO::NodeApplication_Impl::build_connection ()!!!\n"));
+
+ ACE_DEBUG ((LM_DEBUG, "instanceName: %s\n", connection.instanceName.in ()));
+ ACE_DEBUG ((LM_DEBUG, "portName: %s\n", connection.portName.in ()));
+
+ ACE_DEBUG ((LM_DEBUG, "consumer Component Name: %s\n", connection.endpointInstanceName.in ()));
+ ACE_DEBUG ((LM_DEBUG, "consumer Port Name: %s\n", connection.endpointPortName.in ()));
+
+ ACE_DEBUG ((LM_DEBUG, "portkind: "));
+ switch (connection.kind) {
+ case Deployment::Facet: ACE_DEBUG ((LM_DEBUG, "Facet\n")); break;
+ case Deployment::SimplexReceptacle: ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n")); break;
+ case Deployment::MultiplexReceptacle: ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n")); break;
+ case Deployment::EventEmitter: ACE_DEBUG ((LM_DEBUG, "EventEmitter\n")); break;
+ case Deployment::EventPublisher: ACE_DEBUG ((LM_DEBUG, "EventPublisher\n")); break;
+ case Deployment::EventConsumer: ACE_DEBUG ((LM_DEBUG, "EventConsumer\n")); break;
+ default:
+ ACE_DEBUG ((LM_DEBUG, "Unknow\n")); break;
+ }
+
+ const CIAO::CIAO_Event_Service_ptr event_service =
+ connection.event_service;
+
+
+ // Get the consumer port object reference and put it into "consumer"
+ Components::EventConsumerBase_var consumer =
+ Components::EventConsumerBase::_narrow (connection.endpoint.in ());
+
+ if (CORBA::is_nil (consumer.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Nil consumer port object reference\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // Get the supplier component object reference.
+ ACE_CString supplier_comp_name = connection.instanceName.in ();
+
+ ACE_DEBUG ((LM_DEBUG, "source component name is: %s\n", supplier_comp_name.c_str ()));
+ Component_State_Info comp_state;
+ if (this->component_state_map_.find (supplier_comp_name, comp_state) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Nil source component object reference\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // Get the consumer component object reference.
+ ACE_CString consumer_comp_name = connection.endpointInstanceName.in ();
+
+ ACE_DEBUG ((LM_DEBUG, "consumer component name is: %s\n", consumer_comp_name.c_str ()));
+
+ if (CORBA::is_nil (event_service))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Nil event_service\n"));
+ throw Deployment::InvalidConnection ();
+ }
+
+ // supplier ID
+ ACE_CString sid (connection.instanceName.in ());
+ sid += "_";
+ sid += connection.portName.in ();
+
+ // consumer ID
+ ACE_CString cid (connection.endpointInstanceName.in ());
+ cid += "_";
+ cid += connection.endpointPortName.in ();
+ cid += "_consumer";
+
+ //ACE_DEBUG ((LM_DEBUG, "Publisher: %s\n", sid.c_str ()));
+ ACE_DEBUG ((LM_DEBUG, "Subscriber: %s\n", cid.c_str ()));
+
+
+ if (add_or_remove == true)
+ {
+ CIAO::Supplier_Config_var supplier_config =
+ event_service->create_supplier_config ();
+
+ supplier_config->supplier_id (sid.c_str ());
+ event_service->connect_event_supplier (supplier_config.in ());
+ supplier_config->destroy ();
+
+ CIAO::Consumer_Config_var consumer_config =
+ event_service->create_consumer_config ();
+
+ consumer_config->consumer_id (cid.c_str ());
+ consumer_config->consumer (consumer.in ());
+
+ event_service->connect_event_consumer (consumer_config.in ());
+
+ consumer_config->destroy ();
+ }
+ else
+ {
+ event_service->disconnect_event_supplier (sid.c_str ());
+ event_service->disconnect_event_consumer (cid.c_str ());
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "CIAO::NodeApplication_Impl::build_connection () completed!!!!\n"));
+}
+
+bool
+CIAO::NodeApplication_Impl::
+_is_es_consumer_conn (Deployment::Connection conn)
+{
+ if (conn.kind == Deployment::EventConsumer &&
+ ACE_OS::strcmp (conn.endpointPortName, "CIAO_ES") == 0)
+ return true;
+ else
+ return false;
+}
+
+bool
+CIAO::NodeApplication_Impl::
+_is_publisher_es_conn (Deployment::Connection conn)
+{
+ if (conn.kind == Deployment::EventPublisher &&
+ ACE_OS::strcmp (conn.endpointPortName, "CIAO_ES") == 0)
+ return true;
+ else
+ return false;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
new file mode 100644
index 00000000000..c412b1aa9f5
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.h
@@ -0,0 +1,371 @@
+//$Id$
+
+/**========================================================
+ *
+ * @file NodeApplication_Impl.h
+ *
+ * @Brief This file contains the implementation of
+ * the NodeApplication interface.
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ *========================================================*/
+
+#ifndef NODEAPPLICATION_IMPL_H
+#define NODEAPPLICATION_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_NodeApplication_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Synch.h"
+#include "ace/Synch_Traits.h"
+#include "ace/SString.h"
+#include "ace/Hash_Map_Manager_T.h"
+#include "tao/ORB.h"
+#include "ciao/Deployment_NodeApplicationS.h"
+#include "ciao/Server_init.h"
+#include "ciao/CIAO_common.h"
+#include "ciao/Object_Set_T.h"
+#include "ciaosvcs/Events/CIAO_EventService_Factory_impl.h"
+#include "ciaosvcs/Events/CIAO_Events_Base/CIAO_EventsS.h"
+
+#include "NodeApp_Configurator.h"
+#include "Container_Base.h"
+
+using CIAO::Utility::write_IOR;
+
+/**
+ *
+ * @class NodeApplication_Impl
+ *
+ * @brief This class implements the NodeApplication interface.
+ * This interface is semantically very simillar to container
+ * in the old DnC spec. However this class will also be used
+ * as a Server for hosting home/component. This way we reduce the
+ * complexity of the framework by omitting the componentserver layer.
+ *
+ * @@TODO add configuration capabilities. Threading is one of them.
+ *
+ * @@Assumptions:
+ * 1. Now the implementation is not thread safe.
+ * // @@Gan, the above assumption is _really_ bad. Could you please
+ * use the lock in the imeplementation to do some simple
+ * prootections.
+ **/
+
+namespace CIAO
+{
+ // @@ Gan, as we discussed before can you please wrap this
+ // implementation in a namespace Node_Application or whatever to
+ // signify that it belongs to another software piece of CIAO?
+ class NODEAPPLICATION_Export NodeApplication_Impl
+ : public virtual POA_Deployment::NodeApplication
+ {
+ public:
+ enum Component_State
+ {
+ NEW_BORN, PRE_ACTIVE, ACTIVE, POST_ACTIVE, PASSIVE, DEACTIVATED
+ };
+
+ typedef struct _component_state_info
+ {
+ Components::CCMObject_var objref_;
+ Component_State state_;
+ } Component_State_Info;
+
+ NodeApplication_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ NodeApp_Configurator &c,
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps =0);
+
+ /// Default destructor.
+ virtual ~NodeApplication_Impl (void);
+
+ /**
+ * @brief This operation dose 2 things.
+ * 1. Get the external connction (facet and Event source)
+ * and connect them to the local receptacle/event sink.
+ * 2. If the start augment is true, start the Components.
+ * @Note:
+ * The connection containes the object ref of the provided object
+ * reference (facet/event consumer) of components from other NodeApplications.
+ * However the name field stores the name of the port on the local component.
+ */
+ virtual void
+ finishLaunch (const Deployment::Connections & connections,
+ CORBA::Boolean start,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::InvalidConnection));
+
+ virtual void
+ start ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ /*------------- CIAO specific IDL operations (idl)----------
+ *
+ *-----------------------------------------------------------*/
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError));
+
+ virtual void
+ ciao_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError));
+
+ /// Initialize the NodeApplication
+ virtual CORBA::Long init ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Start install homes and components.
+ virtual ::Deployment::ComponentInfos *
+ install (const ::Deployment::NodeImplementationInfo & node_impl_info)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InstallationFailure,
+ ::Components::InvalidConfiguration));
+
+ /// Install a number of CIAO_Event_Service objects within the NA
+ virtual ::CIAO::CIAO_Event_Service *
+ install_es (const ::CIAO::DAnCE::EventServiceDeploymentDescription & es_info)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::InstallationFailure));
+
+ /// Get the object reference of the NodeApplicationManager.
+ /// This might come in handy later.
+ virtual ::CORBA::Object_ptr
+ get_node_application_manager ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Access the readonly attribute.
+ virtual ::Deployment::Properties *
+ properties ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Remove a component instance from the NodeApplication
+ virtual void remove_component (const char * inst_name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Components::RemoveFailure));
+
+ virtual void activate_component (const char * name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StartError));
+
+ virtual void passivate_component (const char * name)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Components::RemoveFailure));
+
+ /// Remove everything inside including all components and homes.
+ virtual void remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Create a container interface, which will be hosted in this NodeApplication.
+ virtual ::Deployment::Container_ptr
+ create_container (const ::Deployment::Properties &properties)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreateFailure,
+ ::Components::InvalidConfiguration));
+
+ /// Remove a container interface.
+ virtual void remove_container (::Deployment::Container_ptr cref)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::RemoveFailure));
+
+ /// Get all container object refs
+ virtual ::Deployment::Containers * get_containers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /*------------- CIAO specific helper functions (C++)---------
+ *
+ *-----------------------------------------------------------*/
+
+ /// Get the containing POA. This operation does *not*
+ /// increase the reference count of the POA.
+ virtual PortableServer::POA_ptr _default_POA (void);
+
+ /// Return the cached object reference of this NodeApplication object.
+ /// This operation does *NOT* increase the reference count.
+ ::Deployment::NodeApplication_ptr
+ get_objref ();
+
+ /*------- CIAO helper functions for pub/sub service -------
+ *
+ *--------------------------------------------------------*/
+
+ /// Set up a connection using the CIAO_Event_Service, which
+ /// is available as a field in the <Deployment::Connection>
+ /// struct type.
+ /// If <add_or_remove> input parameter is true, then we will
+ /// add the event connection, otherwise we will remove the
+ /// event connection.
+ void build_event_connection (
+ const Deployment::Connection & connection,
+ bool add_or_remove)
+ ACE_THROW_SPEC ((Deployment::InvalidConnection,
+ CORBA::SystemException));
+
+ protected:
+ /// If <add_connection> is "false", then we shall "remove"
+ /// the connections, otherwise we will add these connections.
+ virtual void
+ finishLaunch_i (const Deployment::Connections & connections,
+ CORBA::Boolean start,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::InvalidConnection));
+ virtual void
+ handle_facet_receptable_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection));
+
+ virtual void
+ handle_emitter_consumer_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection));
+
+ virtual void
+ handle_publisher_consumer_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection));
+
+ virtual bool
+ _is_es_consumer_conn (Deployment::Connection conn);
+
+ virtual bool
+ _is_publisher_es_conn (Deployment::Connection conn);
+
+ /// Register the publisher to the CIAO event service
+ /// The only fields of <connection> struct used in this method
+ /// are: <type>, <event_service>, <instanceName>, <portName>.
+ virtual void
+ handle_publisher_es_connection (
+ Components::CCMObject_ptr comp,
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection));
+
+ /// Register the consumer to the CIAO event service
+ virtual void
+ handle_es_consumer_connection (
+ const Deployment::Connection & connection,
+ CORBA::Boolean add_connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidConnection));
+
+ /// Create and initialize all the containers
+ virtual CORBA::Long create_all_containers (
+ const ::Deployment::ContainerImplementationInfos & container_infos)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Create a "key" for the connection
+ virtual ACE_CString *
+ create_connection_key (const Deployment::Connection & connection);
+
+ /// To build a map between a component instance and its container
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Deployment::Container_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Component_Container_Map;
+ typedef Component_Container_Map::iterator Component_Container_Iterator;
+ Component_Container_Map component_container_map_;
+
+
+ /// To store all created Component objects as well as their lifecycle
+ /// states..
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Component_State_Info,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> CCMComponent_Map;
+ typedef CCMComponent_Map::iterator Component_Iterator;
+ CCMComponent_Map component_state_map_;
+
+ /// A Map which stores all the connection cookies
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ ::Components::Cookie_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Cookie_Map;
+ typedef Cookie_Map::iterator Cookie_Map_Iterator;
+ Cookie_Map cookie_map_;
+
+ /// Synchronize access to the object set.
+ TAO_SYNCH_MUTEX lock_;
+
+ /// Keep a list of managed Container objects.
+ Object_Set<Deployment::Container, Deployment::Container_var> container_set_;
+
+ /// Keep a pointer to the managing ORB serving this servant.
+ CORBA::ORB_var orb_;
+
+ /// Keep a pointer to the managing POA.
+ // @@Gan/Jai, which POA is this? Same as the component POA or a
+ // different one. My sense is that its different. Could you please
+ //document it?
+ PortableServer::POA_var poa_;
+
+ // Configurator for allocating NodeApp resources and policies
+ NodeApp_Configurator &configurator_;
+
+ /// Cached properties
+ Deployment::Properties properties_;
+
+ /// And a reference to the NodeApplicationManager that created us.
+ ::CORBA::Object_var node_app_manager_;
+
+ /// Cache the object reference (of ourselves).
+ ::Deployment::NodeApplication_var objref_;
+
+ /// A factory to create CIAO event services
+ EventService_Factory_impl es_factory_;
+
+ /// Cache the (NA specific) installation info of all the
+ /// CIAO_Event_Services
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ DAnCE::EventServiceDeploymentDescriptions_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> ES_Installation_Map;
+ typedef ES_Installation_Map::iterator ES_Installation_Map_Iterator;
+ ES_Installation_Map es_info_map_;
+
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps_;
+ private:
+ /// Default constructor, noop
+ NodeApplication_Impl(void);
+ };
+}
+
+#if defined (__ACE_INLINE__)
+# include "NodeApplication_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* NODEAPPLICATION_IMPL_H */
diff --git a/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.inl b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.inl
new file mode 100644
index 00000000000..2fefdcc84d4
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/NodeApplication_Impl.inl
@@ -0,0 +1,78 @@
+/* -*- C++ -*- */
+// $Id$
+#include "Configurator_Factory.h"
+
+ACE_INLINE
+CIAO::NodeApplication_Impl::
+NodeApplication_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ NodeApp_Configurator &c,
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps)
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ poa_ (PortableServer::POA::_duplicate (p)),
+ configurator_ (c),
+ es_factory_ (o, p),
+ static_entrypts_maps_ (static_entrypts_maps)
+{
+}
+
+// Access the readonly attribute
+ACE_INLINE
+Deployment::Properties *
+CIAO::NodeApplication_Impl::properties ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ Deployment::Properties * tmp = 0;
+
+ ACE_NEW_THROW_EX (tmp,
+ Deployment::Properties (this->properties_),
+ CORBA::NO_MEMORY ());
+
+ return tmp;
+}
+
+ACE_INLINE
+PortableServer::POA_ptr
+CIAO::NodeApplication_Impl::_default_POA (void)
+{
+ return PortableServer::POA::_duplicate (this->poa_.in ());
+}
+
+
+ACE_INLINE
+CORBA::Object_ptr
+CIAO::NodeApplication_Impl::get_node_application_manager ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ::CORBA::Object::_duplicate (this->node_app_manager_.in ());
+}
+
+/*
+ACE_INLINE void
+CIAO::NodeApplication_Impl::
+set_objref (Components::Deployment::ServerActivator_ptr act,
+ const Components::ConfigValues &config,
+ Components::Deployment::ComponentServer_ptr cs)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (!CORBA::is_nil (this->node_app_manager_.in ()) ||
+ !CORBA::is_nil (this->objref_.in ()))
+ throw CORBA::BAD_INV_ORDER ();
+
+ this->config_ = new Components::ConfigValues (config);
+ this->activator_ = Components::Deployment::ServerActivator::_duplicate (act);
+ this->objref_ = Components::Deployment::ComponentServer::_duplicate (cs);
+}
+*/
+
+ACE_INLINE ::Deployment::NodeApplication_ptr
+CIAO::NodeApplication_Impl::
+get_objref ()
+{
+ if (CORBA::is_nil (this->objref_.in ()))
+ {
+ this->objref_ = this->_this ();
+ }
+
+ return this->objref_.in ();
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp
new file mode 100644
index 00000000000..b0dfb8a9ac0
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.cpp
@@ -0,0 +1,448 @@
+// $Id$
+
+#include "RTConfig_Manager.h"
+#include "ciao/CIAO_common.h"
+#include "ace/SString.h"
+
+#if !defined (__ACE_INLINE__)
+# include "RTConfig_Manager.inl"
+#endif /* __ACE_INLINE__ */
+
+void
+CIAO::RTResource_Config_Manager::init (RTCORBA::RTORB_ptr rtorb)
+{
+ this->rtorb_ = RTCORBA::RTORB::_duplicate (rtorb);
+}
+
+void
+CIAO::RTResource_Config_Manager::print_resources
+(const CIAO::DAnCE::ServerResource &server_resource)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ const CIAO::DAnCE::ORBResource &orb_resource
+ = server_resource.orb_config.orb_resources[0];
+
+ CORBA::ULong i;
+
+ // Creating and binding name with RT Threadpool
+ for (i = 0; i < orb_resource.threadpool_list.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "-RTResource_Config_Manager::print_resource threadpool: %s\n"
+ "\tStack size: %d\n"
+ "\tStatic: %d\n"
+ "\tDynamic %d\n"
+ "\tDefault Prio: %d\n"
+ "\tBuffering %s\n"
+ "\tMax Buffered: %d\n"
+ "\tBuffer Size %d\n",
+ orb_resource.threadpool_list[i].Id.in (),
+ orb_resource.threadpool_list[i].stacksize,
+ orb_resource.threadpool_list[i].static_threads,
+ orb_resource.threadpool_list[i].dynamic_threads,
+ orb_resource.threadpool_list[i].default_priority,
+ (orb_resource.threadpool_list[i].allow_request_buffering ? "Y" : "N"),
+ orb_resource.threadpool_list[i].max_buffered_requests,
+ orb_resource.threadpool_list[i].max_request_buffer_size));
+ }
+
+ for (i = 0; i < orb_resource.threadpool_with_lanes_list.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "-RTResource_Config_Manager::print_resource threadpool_with %d, lanes: %s\n",
+ orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length (),
+ orb_resource.threadpool_with_lanes_list[i].Id.in ()));
+
+ for (CORBA::ULong l = 0;
+ l < orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ();
+ ++l)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "\tLane %d:\n"
+ "\t\tPriority: %d\n"
+ "\t\tStatic: %d\n"
+ "\t\tDynamic: %d\n",
+ l,
+ orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].lane_priority,
+ orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].static_threads,
+ orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].dynamic_threads));
+ }
+ ACE_DEBUG ((LM_DEBUG,
+ "\tStack size: %d\n"
+ "\tBorrowing: %s\n"
+ "\tBuffering %s\n"
+ "\tMax Buffered: %d\n"
+ "\tBuffer Size %d\n",
+ orb_resource.threadpool_with_lanes_list[i].stacksize,
+ (orb_resource.threadpool_with_lanes_list[i].allow_borrowing ? "Y" : "N"),
+ (orb_resource.threadpool_with_lanes_list[i].allow_request_buffering ? "Y" : "N"),
+ orb_resource.threadpool_with_lanes_list[i].max_buffered_requests,
+ orb_resource.threadpool_with_lanes_list[i].max_request_buffer_size));
+ }
+
+ for (i = 0; i < orb_resource.connection_bands_list.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "-RTResource_Config_Manager::print_resource connection %d bands: %s\n",
+ orb_resource.connection_bands_list[i].bands.length (),
+ orb_resource.connection_bands_list[i].Id.in ()));
+
+ for (CORBA::ULong l = 0;
+ l < orb_resource.connection_bands_list[i].bands.length ();
+ ++l)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "\tBand %d Prio: %d -- %d\n",
+ l,
+ orb_resource.connection_bands_list[i].bands[l].low,
+ orb_resource.connection_bands_list[i].bands[l].high));
+ }
+ }
+}
+
+void
+CIAO::RTResource_Config_Manager::init_resources
+(const CIAO::DAnCE::ServerResource &server_resource)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource.\n"));
+
+ if (CORBA::is_nil (this->rtorb_.in()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "RTResource_Config_Manager has not been properly initialized.\n"));
+ throw CORBA::INTERNAL ();
+ }
+
+ this->print_resources (server_resource);
+ // return;
+
+ const CIAO::DAnCE::ORBResource &orb_resource
+ = server_resource.orb_config.orb_resources[0];
+
+ CORBA::ULong i;
+
+ // Creating and binding name with RT Threadpool
+ for (i = 0; i < orb_resource.threadpool_list.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource threadpool: %s\n",
+ orb_resource.threadpool_list[i].Id.in ()));
+ RTCORBA::ThreadpoolId thr_id =
+ this->rtorb_->create_threadpool
+ (orb_resource.threadpool_list[i].stacksize,
+ orb_resource.threadpool_list[i].static_threads,
+ orb_resource.threadpool_list[i].dynamic_threads,
+ orb_resource.threadpool_list[i].default_priority,
+ orb_resource.threadpool_list[i].allow_request_buffering,
+ orb_resource.threadpool_list[i].max_buffered_requests,
+ orb_resource.threadpool_list[i].max_request_buffer_size);
+ // Simply pass back the exception here
+ // for now. We need to have a better way
+ // to handle execption here.
+ if (this->threadpool_map_.bind (orb_resource.threadpool_list[i].Id.in (),
+ thr_id) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Error binding thread pool Id: %s to map when initializing RTNodeApplication resources.\n", orb_resource.threadpool_list[i].Id.in ()));
+ throw CORBA::INTERNAL ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource added thread pool: %s\n",
+ orb_resource.threadpool_list[i].Id.in ()));
+ }
+ }
+
+ for (i = 0; i < orb_resource.threadpool_with_lanes_list.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource threadpool_with %d, lanes: %s\n",
+ orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length (),
+ orb_resource.threadpool_with_lanes_list[i].Id.in ()));
+
+ // Duplicate RTCORBA lanes
+ RTCORBA::ThreadpoolLanes lanes
+ (orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ());
+ lanes.length (orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ());
+
+ for (CORBA::ULong l = 0;
+ l < orb_resource.threadpool_with_lanes_list[i].threadpool_lanes.length ();
+ ++l)
+ {
+ lanes[l].lane_priority
+ = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].lane_priority;
+ lanes[l].static_threads
+ = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].static_threads;
+ lanes[l].dynamic_threads
+ = orb_resource.threadpool_with_lanes_list[i].threadpool_lanes[l].dynamic_threads;
+ }
+
+ RTCORBA::ThreadpoolId thr_id =
+ this->rtorb_->create_threadpool_with_lanes
+ (orb_resource.threadpool_with_lanes_list[i].stacksize,
+ lanes,
+ orb_resource.threadpool_with_lanes_list[i].allow_borrowing,
+ orb_resource.threadpool_with_lanes_list[i].allow_request_buffering,
+ orb_resource.threadpool_with_lanes_list[i].max_buffered_requests,
+ orb_resource.threadpool_with_lanes_list[i].max_request_buffer_size);
+ // Simply pass back the exception here
+ // for now. We need to have a better way
+ // to handle execption here.
+
+ if (this->threadpool_map_.bind (orb_resource.threadpool_with_lanes_list[i].Id.in (),
+ thr_id) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error binding thread pool name: %s to map when "
+ "initializing RTNodeApplication resources.\n",
+ orb_resource.threadpool_with_lanes_list[i].Id.in ()));
+ throw CORBA::INTERNAL ();
+ }
+
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource added thread pool with lanes: %s\n",
+ orb_resource.threadpool_with_lanes_list[i].Id.in ()));
+ }
+ }
+
+ for (i = 0; i < orb_resource.connection_bands_list.length (); ++i)
+ {
+ RTCORBA::PriorityBands
+ safebands(orb_resource.connection_bands_list[i].bands.length ());
+ safebands.length (orb_resource.connection_bands_list[i].bands.length ());
+
+ for (CORBA::ULong l = 0;
+ l < orb_resource.connection_bands_list[i].bands.length ();
+ ++l)
+ {
+ safebands[l].low = orb_resource.connection_bands_list[i].bands[l].low;
+ safebands[l].high = orb_resource.connection_bands_list[i].bands[l].high;
+ }
+
+ if (this->priority_bands_map_.bind (orb_resource.connection_bands_list[i].Id.in (),
+ safebands) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error binding priority bands name: %s to map "
+ "when initializing RTNodeApplication resources.\n",
+ orb_resource.connection_bands_list[i].Id.in ()));
+ throw CORBA::INTERNAL ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource added connection bands: %s\n",
+ orb_resource.connection_bands_list[i].Id.in ()));
+ }
+ }
+
+ // now initialize the policy set part of it.
+ // server_resource.orb_config.policy_set
+ const CIAO::DAnCE::PolicySets &sets = server_resource.orb_config.policy_set;
+ for (CORBA::ULong i = 0; i < sets.length (); ++i)
+ {
+ CORBA::ULong const np = sets[i].policies.length ();
+ if (np == 0)
+ continue;
+
+ CORBA::PolicyList_var policy_list = new CORBA::PolicyList (np);
+ policy_list->length (np);
+
+ // Create a list of policies
+ for (CORBA::ULong pc = 0; pc < np; ++pc)
+ {
+ policy_list[pc] = this->create_single_policy (sets[i].policies[pc]);
+ }
+
+ // Bind the policy list to the name. The bind operation should
+ // surrender the ownership of the newly created PolicyList
+ // sequence to the map.
+ if (this->policy_map_.bind (sets[i].Id.in (),
+ policy_list) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error binding Policy_Set with name: %s\n",
+ sets[i].Id.in ()));
+ throw CORBA::INTERNAL ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::init_resource added policy set: %s\n",
+ sets[i].Id.in ()));
+ }
+ }
+}
+
+void
+CIAO::RTResource_Config_Manager::fini ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TP_MAP::ITERATOR iter = this->threadpool_map_.begin ();
+ TP_MAP::ITERATOR end = this->threadpool_map_.end ();
+
+ for (; iter != end; ++iter)
+ {
+ this->rtorb_->destroy_threadpool ((*iter).int_id_);
+ }
+
+}
+
+RTCORBA::ThreadpoolId
+CIAO::RTResource_Config_Manager::find_threadpool_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (name == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Invalid name string found in \"find_threadpool_by_name\"\n"));
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+ }
+
+
+ RTCORBA::ThreadpoolId ret_id = 0; // return id
+
+ if (this->threadpool_map_.find (name, ret_id) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to find a threadpool named %s\n",
+ name));
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+ }
+
+ return ret_id;
+}
+
+RTCORBA::PriorityBands *
+CIAO::RTResource_Config_Manager::find_priority_bands_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (name == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Invalid name string found in \"find_priority_bands_by_name\"\n"));
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+ }
+
+ PB_MAP::ENTRY *entry = 0;
+
+ if (this->priority_bands_map_.find (name, entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to find a connection bands named %s\n",
+ name));
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+ }
+
+ RTCORBA::PriorityBands_var retv = new RTCORBA::PriorityBands;
+ (*retv.ptr ()) = (*entry->int_id_.ptr ());
+ return retv._retn ();
+}
+
+CORBA::PolicyList *
+CIAO::RTResource_Config_Manager::find_policies_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (name == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Invalid name string found in \"find_policies_by_name\"\n"));
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+ }
+
+
+ ACE_DEBUG ((LM_DEBUG, "RTResource_Config_Manager::find_policies_by_name: %s\n",
+ name));
+
+ POLICY_MAP::ENTRY *entry = 0;
+
+ if (this->policy_map_.find (name, entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to find a PolicyList named %s\n",
+ name));
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+ }
+
+ // duplicate the sequence PolicyList.
+ CORBA::PolicyList_var retv =
+ new CORBA::PolicyList (entry->int_id_.in ());
+
+ ACE_DEBUG ((LM_DEBUG, "RTResource_Config_Manager::find_policies_by_name ok.\n"));
+
+ return retv._retn ();
+}
+
+CORBA::Policy_ptr
+CIAO::RTResource_Config_Manager::create_single_policy
+(const CIAO::DAnCE::PolicyDef &policy_def)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG,
+ "RTResource_Config_Manager::create_single_policy: %d\n",
+ policy_def._d ()));
+
+ CORBA::Policy_var retv;
+
+ switch (policy_def._d ())
+ {
+ case RTCORBA::PRIORITY_MODEL_POLICY_TYPE:
+ {
+ const CIAO::DAnCE::PriorityModelPolicyDef &tmp
+ = policy_def.PriorityModelDef ();
+
+ retv = this->rtorb_->create_priority_model_policy ((RTCORBA::PriorityModel) tmp.priority_model,
+ tmp.server_priority);
+
+ if (! CORBA::is_nil (retv.in ()))
+ ACE_DEBUG ((LM_DEBUG,
+ "Create PriorityModel policy: %d - %d\n",
+ tmp.priority_model, tmp.server_priority));
+ }
+ break;
+
+ case RTCORBA::THREADPOOL_POLICY_TYPE:
+ {
+ RTCORBA::ThreadpoolId tpid =
+ this->find_threadpool_by_name (policy_def.ThreadpoolDef().Id.in ());
+
+ retv = this->rtorb_->create_threadpool_policy (tpid);
+
+ if (! CORBA::is_nil (retv.in ()))
+ ACE_DEBUG ((LM_DEBUG,
+ "Create Threadpool policy: %s, TPid: %d\n",
+ policy_def.ThreadpoolDef().Id.in (), tpid));
+ }
+ break;
+
+ case RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE:
+ {
+ RTCORBA::PriorityBands_var bands =
+ this->find_priority_bands_by_name (policy_def.PriorityBandedConnectionDef().Id.in ());
+
+ retv =
+ this->rtorb_->create_priority_banded_connection_policy (bands.in ());
+
+ if (! CORBA::is_nil (retv.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Created Banded Connection policy: %s\n",
+ policy_def.PriorityBandedConnectionDef().Id.in ()));
+ }
+ }
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Invalid policy type - RTPolicy_Set_Manager::create_single_policy\n"));
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+ }
+
+ return retv._retn ();
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.h b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.h
new file mode 100644
index 00000000000..514a13cb797
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.h
@@ -0,0 +1,133 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file RTConfig_Manager.h
+ *
+ * $Id$
+ *
+ * This file contains classes that manage name to configuration
+ * mapping info in a RTComponentServer.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_RTCONFIG_MANAGER_H
+#define CIAO_RTCONFIG_MANAGER_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/RTCORBA/RTCORBA.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "ace/Null_Mutex.h"
+#include "ace/SString.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+namespace CIAO
+{
+ /**
+ * @brief RTResource_Config_Manager maintains a collection of
+ * RTCORBA related resources.
+ *
+ * This class is responsible to create and manage a list of RTCORBA
+ * related resources that are global to an RT ComponentServer. The
+ * information required to create and configure these resources are
+ * passed in via the @a info argument in the @c init method. These
+ * resources are identified by names and can be used to associate
+ * these resources with related RTPolicies. These resources are
+ * destoryed along with this class.
+ *
+ * Currently, the only resources supported (and managed) by this
+ * class are Threadpool and Threadpool_with_Lanes.
+ */
+ class RTResource_Config_Manager
+ {
+ public:
+ RTResource_Config_Manager (void);
+ ~RTResource_Config_Manager (void);
+
+ void init (RTCORBA::RTORB_ptr rtorb);
+
+ /// Initializing the RTResource_Config_Manager
+ void init_resources (const CIAO::DAnCE::ServerResource &info)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Finalizing the RTResource_Config_Manager and the resources it
+ /// manages.
+ void fini ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Query a policy set by name
+ CORBA::PolicyList *find_policies_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ void print_resources (const CIAO::DAnCE::ServerResource &info)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Query a thread pool by name.
+ RTCORBA::ThreadpoolId find_threadpool_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ /// Query a priority bands info by name.
+ RTCORBA::PriorityBands *find_priority_bands_by_name (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ /// Cached an ORB reference.
+ CORBA::ORB_var orb_;
+
+ // Cached an RTORB reference.
+ RTCORBA::RTORB_var rtorb_;
+
+ /// Hash_Map stuff.
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ RTCORBA::ThreadpoolId,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> TP_MAP;
+
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ RTCORBA::PriorityBands_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> PB_MAP;
+
+ /// Internal TP name to id map.
+ TP_MAP threadpool_map_;
+
+ /// Internal PB name to priority bands map.
+ PB_MAP priority_bands_map_;
+
+ /// create a single policy
+ CORBA::Policy_ptr create_single_policy
+ (const CIAO::DAnCE::PolicyDef &policy_def)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Hash_Map stuff.
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ CORBA::PolicyList_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> POLICY_MAP;
+
+ /// Internal TP names to id map.
+ POLICY_MAP policy_map_;
+ };
+}
+
+#if defined (__ACE_INLINE__)
+# include "RTConfig_Manager.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_RTCONFIG_MANAGER_H */
+
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.inl b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.inl
new file mode 100644
index 00000000000..9537e7569ac
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTConfig_Manager.inl
@@ -0,0 +1,13 @@
+// $Id$
+
+ACE_INLINE
+CIAO::RTResource_Config_Manager::RTResource_Config_Manager ()
+{
+}
+
+ACE_INLINE
+CIAO::RTResource_Config_Manager::~RTResource_Config_Manager ()
+{
+ this->fini ();
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTNA_Configurator_Export.h b/modules/CIAO/DAnCE/NodeApplication/RTNA_Configurator_Export.h
new file mode 100644
index 00000000000..5891c5aca0f
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTNA_Configurator_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_RTNA_Configurator
+// ------------------------------
+#ifndef CIAO_RTNA_CONFIGURATOR_EXPORT_H
+#define CIAO_RTNA_CONFIGURATOR_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_RTNA_CONFIGURATOR_HAS_DLL)
+# define CIAO_RTNA_CONFIGURATOR_HAS_DLL 1
+#endif /* ! CIAO_RTNA_CONFIGURATOR_HAS_DLL */
+
+#if defined (CIAO_RTNA_CONFIGURATOR_HAS_DLL) && (CIAO_RTNA_CONFIGURATOR_HAS_DLL == 1)
+# if defined (CIAO_RTNA_CONFIGURATOR_BUILD_DLL)
+# define CIAO_RTNA_Configurator_Export ACE_Proper_Export_Flag
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_RTNA_CONFIGURATOR_BUILD_DLL */
+# define CIAO_RTNA_Configurator_Export ACE_Proper_Import_Flag
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_RTNA_CONFIGURATOR_BUILD_DLL */
+#else /* CIAO_RTNA_CONFIGURATOR_HAS_DLL == 1 */
+# define CIAO_RTNA_Configurator_Export
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARATION(T)
+# define CIAO_RTNA_CONFIGURATOR_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_RTNA_CONFIGURATOR_HAS_DLL == 1 */
+
+// Set CIAO_RTNA_CONFIGURATOR_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_RTNA_CONFIGURATOR_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_RTNA_CONFIGURATOR_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_RTNA_CONFIGURATOR_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_RTNA_CONFIGURATOR_NTRACE */
+
+#if (CIAO_RTNA_CONFIGURATOR_NTRACE == 1)
+# define CIAO_RTNA_CONFIGURATOR_TRACE(X)
+#else /* (CIAO_RTNA_CONFIGURATOR_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_RTNA_CONFIGURATOR_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_RTNA_CONFIGURATOR_NTRACE == 1) */
+
+#endif /* CIAO_RTNA_CONFIGURATOR_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.cpp b/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.cpp
new file mode 100644
index 00000000000..741d4263188
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.cpp
@@ -0,0 +1,108 @@
+// $Id$
+
+#include "RTNodeApp_Configurator.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "tao/RTPortableServer/RTPortableServer.h"
+
+CIAO::RTNodeApp_Configurator::~RTNodeApp_Configurator ()
+{
+}
+
+int
+CIAO::RTNodeApp_Configurator::pre_orb_initialize ()
+{
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::pre_orb_init\n"));
+
+ return 0;
+}
+
+int
+CIAO::RTNodeApp_Configurator::post_orb_initialize (CORBA::ORB_ptr o)
+{
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::post_orb_init\n"));
+
+ this->orb_ = CORBA::ORB::_duplicate (o);
+
+ CORBA::Object_var object =
+ this->orb_->resolve_initial_references ("RTORB");
+
+ this->rtorb_ =
+ RTCORBA::RTORB::_narrow (object.in ());
+
+ this->config_manager_.init (this->rtorb_.in ());
+
+ return 0;
+}
+
+int
+CIAO::RTNodeApp_Configurator::init_resource_manager
+(const ::Deployment::Properties &properties)
+{
+
+ // if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::init_resource_manager\n"));
+ // @@ Should we cache the properties that we consumed here?
+
+ for (CORBA::ULong i = 0; i < properties.length (); ++i)
+ {
+ // if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::init_resource_manager processing property: %s\n",
+ properties[i].name.in ()));
+
+ if (ACE_OS::strcmp ("CIAOServerResources", properties[i].name.in ()) == 0)
+ {
+ const CIAO::DAnCE::ServerResource *svr_resource;
+ if (properties[i].value >>= svr_resource)
+ {
+ this->config_manager_.init_resources (*svr_resource);
+ // Now we have the information to initialize the manager.
+ }
+ else
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "ERROR: RTNodeApp_Configurator::init_resource_manager unable to extract CIAOServerResources\n"), -1);
+ }
+
+ // Ignore other stuff
+ }
+
+ return 0;
+}
+
+CORBA::PolicyList *
+CIAO::RTNodeApp_Configurator::find_container_policies
+(const ::Deployment::Properties &properties)
+{
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::find_container_policies\n"));
+ // @@ Should we cache the properties that we consumed here?
+
+ for (CORBA::ULong i = 0; i < properties.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RTNodeApp_Configurator::find_container_policies processing property: %s\n",
+ properties[i].name.in ()));
+
+ if (ACE_OS::strcmp ("ContainerPolicySet", properties[i].name) == 0)
+ {
+ const char *policy_name = 0;
+ if (properties[i].value >>= policy_name)
+ {
+ return this->config_manager_.find_policies_by_name (policy_name);
+ }
+ else
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "ERROR: RTNodeApp_Configurator::find_container_policies unable to extract ContainerPolicySet\n"), 0);
+ }
+ }
+
+ return 0;
+}
+
+
+extern "C" CIAO_RTNA_Configurator_Export CIAO::NodeApp_Configurator *create_nodeapp_configurator (void);
+
+CIAO::NodeApp_Configurator *
+create_nodeapp_configurator (void)
+{
+ CIAO::RTNodeApp_Configurator *config = 0;
+ ACE_NEW_RETURN (config, CIAO::RTNodeApp_Configurator, 0);
+ return config;
+}
diff --git a/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.h b/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.h
new file mode 100644
index 00000000000..fc2388b6aff
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplication/RTNodeApp_Configurator.h
@@ -0,0 +1,78 @@
+// $Id$
+/**========================================================
+ *
+ * @file RTNodeApp_Configurator.h
+ *
+ * @Brief This file contains the implementation of
+ * the RTNodeApp_Configurator, a concrete NodeApp_Configurator for
+ * setting up real-time support for NodeApplication.
+ *
+ *
+ * @author Nanbor Wang <nanbor@exothermic.txcorp.com>
+ *========================================================*/
+
+#ifndef RTNODEAPP_CONFIGURATOR_H
+#define RTNODEAPP_CONFIGURATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "NodeApp_Configurator.h"
+#include "RTNA_Configurator_Export.h"
+#include "tao/RTCORBA/RTCORBA.h"
+#include "RTConfig_Manager.h"
+
+namespace CIAO
+{
+ /**
+ * @class RTNodeApp_Configurator
+ *
+ * @brief This class implements a concrete NodeApp_Configurator for
+ * setting up the NodeApplication process for RT support.
+ **/
+ class CIAO_RTNA_Configurator_Export RTNodeApp_Configurator :
+ public NodeApp_Configurator
+ {
+ public:
+ /// Default destructor.
+ virtual ~RTNodeApp_Configurator (void);
+
+ /**
+ * @brief "pre_orb_initialize" is called before ORB_init.
+ */
+ virtual int pre_orb_initialize (void);
+
+ /**
+ * @brief "initialize" is called after NodeApplication get a hold
+ * at this object.
+ */
+ virtual int post_orb_initialize (CORBA::ORB_ptr o);
+
+ /**
+ * @brief "init_resource_manager" is called by NodeApplication when
+ * it receives an "install" commands.
+ */
+ virtual int
+ init_resource_manager (const ::Deployment::Properties &properties);
+
+ /**
+ * @brief get a policyset by its name.
+ */
+ virtual CORBA::PolicyList *
+ find_container_policies (const ::Deployment::Properties &properties);
+
+ protected:
+ CORBA::ORB_var orb_;
+
+ RTCORBA::RTORB_var rtorb_;
+
+ RTResource_Config_Manager config_manager_;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* RTNODEAPP_CONFIGURATOR_H */
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/CIAO_NAM_Export.h b/modules/CIAO/DAnCE/NodeApplicationManager/CIAO_NAM_Export.h
new file mode 100644
index 00000000000..bdeb544afc4
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/CIAO_NAM_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_NAM
+// ------------------------------
+#ifndef CIAO_NAM_EXPORT_H
+#define CIAO_NAM_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_NAM_HAS_DLL)
+# define CIAO_NAM_HAS_DLL 1
+#endif /* ! CIAO_NAM_HAS_DLL */
+
+#if defined (CIAO_NAM_HAS_DLL) && (CIAO_NAM_HAS_DLL == 1)
+# if defined (CIAO_NAM_BUILD_DLL)
+# define CIAO_NAM_Export ACE_Proper_Export_Flag
+# define CIAO_NAM_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_NAM_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_NAM_BUILD_DLL */
+# define CIAO_NAM_Export ACE_Proper_Import_Flag
+# define CIAO_NAM_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_NAM_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_NAM_BUILD_DLL */
+#else /* CIAO_NAM_HAS_DLL == 1 */
+# define CIAO_NAM_Export
+# define CIAO_NAM_SINGLETON_DECLARATION(T)
+# define CIAO_NAM_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_NAM_HAS_DLL == 1 */
+
+// Set CIAO_NAM_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_NAM_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_NAM_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_NAM_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_NAM_NTRACE */
+
+#if (CIAO_NAM_NTRACE == 1)
+# define CIAO_NAM_TRACE(X)
+#else /* (CIAO_NAM_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_NAM_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_NAM_NTRACE == 1) */
+
+#endif /* CIAO_NAM_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp b/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
new file mode 100644
index 00000000000..e31a2e6bc91
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.cpp
@@ -0,0 +1,651 @@
+// $Id$
+
+#include "Containers_Info_Map.h"
+#include "ciao/CIAO_Config.h"
+#include "ciao/CIAO_common.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+//Added for HTTP
+#include "URL_Parser.h" //for parsing the URL
+#include "tao/HTTP_Client.h" //the HTTP client class to downloading packages
+#include "ace/Message_Block.h" //for ACE_Message_Block
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_unistd.h" //for close
+#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir
+#include "ace/OS_NS_string.h" //for string functions
+#include "ace/streams.h"
+
+namespace CIAO
+{
+ Containers_Info_Map::
+ Containers_Info_Map (const Deployment::DeploymentPlan & plan,
+ const Deployment::ComponentPlans & shared_components)
+ : map_ (CIAO_DEFAULT_MAP_SIZE),
+ plan_ (plan),
+ shared_components_ (shared_components),
+ HTTP_DOWNLOAD_PATH ()
+ {
+ char* temp = ACE_OS::getenv ("CIAO_ROOT");
+ HTTP_DOWNLOAD_PATH += temp;
+
+#if defined (ACE_WIN32)
+ HTTP_DOWNLOAD_PATH += "\\";
+#else
+ HTTP_DOWNLOAD_PATH += "/";
+#endif
+
+ HTTP_DOWNLOAD_PATH += "HTTP_DOWNLOADED_LIBS";
+
+ ACE_OS::mkdir(HTTP_DOWNLOAD_PATH.c_str ());
+ //if dir already exists a -1 is returned
+ //we ignore this, just need to make sure the directory exists
+
+ this->initialize_map ();
+ this->build_map ();
+ }
+
+ Deployment::ContainerImplementationInfos *
+ Containers_Info_Map::containers_info (void)
+ {
+ // Fetch the information from the <containers_info_map_>
+ // and return the corresponding sequence
+ Deployment::ContainerImplementationInfos_var retv;
+
+ ACE_NEW_RETURN (retv,
+ Deployment::ContainerImplementationInfos,
+ 0);
+
+ Iterator end = this->map_.end ();
+ CORBA::ULong i = 0;
+
+ for (Iterator b = this->map_.begin ();
+ b != end;
+ ++b)
+ {
+ retv->length (i + 1);
+ (*retv)[i] = *((*b).int_id_);
+
+ ++i;
+ }
+ return retv._retn ();
+ }
+
+ void
+ Containers_Info_Map::
+ initialize_map (void)
+ {
+ const CORBA::ULong instance_len = this->plan_.instance.length ();
+
+ // Iterate over the instance list and look at the policy set id of each
+ // component instance. For each policy set, we create a separate container
+ // to host all the components with such policy set.
+ // NOTE: all the component instances without policies are specified should
+ // be hosted in the same container, and in our map the key is an empty string ""
+ for (CORBA::ULong i = 0; i < instance_len; ++i)
+ {
+ CORBA::String_var my_resource_id ("");
+ const char *my_policy_set_id = "";
+
+ // @@ super hack here. we are assuming RT policy set is
+ // the only thing that will be specified.
+ if (this->plan_.instance[i].deployedResource.length () != 0)
+ {
+ my_resource_id =
+ this->plan_.instance[i].deployedResource[0].resourceName.in ();
+
+ this->plan_.instance[i].deployedResource[0].property[0].value >>=
+ my_policy_set_id;
+ }
+
+ // If we find a existing policy_set_id, then do nothing.
+ if (this->map_.find (my_policy_set_id) == 0)
+ continue;
+ if (ACE_OS::strcmp (my_policy_set_id, "") == 0)
+ {
+ // no policy set id has been specified
+ Deployment::ContainerImplementationInfo * info;
+ ACE_NEW (info, Deployment::ContainerImplementationInfo);
+ this->map_.bind (my_policy_set_id, info);
+ continue;
+ }
+ else
+
+ {
+ Deployment::ContainerImplementationInfo * info;
+ ACE_NEW (info, Deployment::ContainerImplementationInfo);
+
+ // Fetch the actual policy_set_def from the infoProperty
+ // Ugly due to the IDL data structure definition! :(
+ CORBA::ULong j;
+ CORBA::ULong infoProperty_length = this->plan_.infoProperty.length ();
+ bool found = false;
+
+ for (j = 0; j < infoProperty_length; ++j)
+ {
+ if (ACE_OS::strcmp (this->plan_.infoProperty[j].name.in (),
+ "CIAOServerResources") != 0)
+ continue;
+
+ CIAO::DAnCE::ServerResource *server_resource_def = 0;
+ this->plan_.infoProperty[j].value >>= server_resource_def;
+
+ if (ACE_OS::strcmp ((*server_resource_def).Id,
+ my_resource_id.in ()) == 0)
+ {
+ // Iterate over the policy_sets
+ CORBA::ULong k;
+ CORBA::ULong policy_sets_length =
+ (*server_resource_def).orb_config.policy_set.length ();
+ for (k = 0; k < policy_sets_length; ++k)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Looking for policy set id: %s\n", my_policy_set_id));
+ ACE_DEBUG ((LM_DEBUG, "Compare against policy set id: %s\n\n",
+ (*server_resource_def).orb_config.policy_set[k].Id.in ()));
+
+ if (ACE_OS::strcmp (my_policy_set_id,
+ (*server_resource_def).orb_config.policy_set[k].Id) == 0)
+ {
+ // Foud the target policy set def
+ info->container_config.length (1);
+ info->container_config[0].name =
+ CORBA::string_dup ("ContainerPolicySet");
+ info->container_config[0].value <<=
+ my_policy_set_id;
+ // (*server_resource_def).orb_config.policy_set[k];
+
+ ACE_DEBUG ((LM_DEBUG, "Found matching rt policy set*****\n\n"));
+ found = true;
+ break;
+ }
+ }
+ if (k == policy_sets_length)
+ {
+ // No Server Resource Def found?
+ ACE_DEBUG ((LM_DEBUG,
+ "No matching policy set def found in resource def: %s!\n",
+ my_resource_id.in ()));
+ }
+ }
+
+ // if we successfully found the policy_set_id
+ if (found)
+ break;
+ } // end of for loop for fetching policy_set_def
+
+ if (j == this->plan_.infoProperty.length ())
+ {
+ // No Server Resource Def found?! Inconsistent descriptor files.
+ ACE_ERROR ((LM_ERROR, "(%P|%t) Descriptor error: "
+ "No matching server resource def found for component: %s!\n",
+ this->plan_.instance[i].name.in ()));
+ }
+ else
+ this->map_.bind (my_policy_set_id, info);
+ }
+ }
+ }
+
+ bool
+ Containers_Info_Map::
+ build_map (void)
+ {
+ const CORBA::ULong instance_len = this->plan_.instance.length ();
+
+ for (CORBA::ULong i = 0; i < instance_len; ++i)
+ {
+ const Deployment::InstanceDeploymentDescription & instance =
+ this->plan_.instance[i];
+
+ // If this component instance happens to be in the "shared components
+ // list", then we ignore it, otherwise we shall install it.
+ ACE_CString name (instance.name.in ());
+ if (this->is_shared_component (name))
+ continue;
+
+ if (! this->insert_instance_into_map (instance))
+ return false;
+ }
+
+ return true;
+ }
+
+ bool
+ Containers_Info_Map::insert_instance_into_map (
+ const Deployment::InstanceDeploymentDescription & instance)
+ {
+ Deployment::ContainerImplementationInfo container_info;
+
+ const char * policy_set_id = "";
+ if (instance.deployedResource.length () != 0)
+ {
+ instance.deployedResource[0].property[0].value >>= policy_set_id;
+ // instance.deployedResource[0].resourceValue >>= policy_set_id;
+ //ACE_ERROR ((LM_ERROR, "ERROR: RT-CCM support has been disabled until code in Containers_Info_Map is updated to reflect IDL changes."));
+ }
+
+ // Find the ContainerImplementationInfo entry from the map
+ MAP::ENTRY *entry = 0;
+ if (this->map_.find (policy_set_id, entry) != 0)
+ return false; //should never happen
+ else
+ {
+ this->insert_instance_into_container (
+ instance,
+ entry->int_id_->impl_infos);
+ }
+
+ return true;
+ }
+
+ bool
+ Containers_Info_Map::insert_instance_into_container (
+ const Deployment::InstanceDeploymentDescription & instance,
+ Deployment::ComponentImplementationInfos & impl_infos)
+ {
+ // Increase the length of the ComponentImplementationInfos by one
+ CORBA::ULong i = impl_infos.length ();
+ impl_infos.length (i + 1);
+
+ // Fill in the information about this component instance
+ // Get the component instance name.
+ impl_infos[i].component_instance_name = instance.name.in ();
+
+ const Deployment::MonolithicDeploymentDescription & impl =
+ this->plan_.implementation[instance.implementationRef];
+
+ const CORBA::ULong artifact_num = impl.artifactRef.length ();
+
+ // Copy Component instance related Properties if there is any.
+ if (instance.configProperty.length () > 0)
+ {
+ impl_infos[i].component_config = instance.configProperty;
+ }
+
+ bool svnt_found = false;
+ bool exec_found = false;
+
+ // For svnt/exec artifacts
+ for (CORBA::ULong j = 0; j < artifact_num; ++j)
+ {
+ Deployment::ArtifactDeploymentDescription arti =
+ this->plan_.artifact[ impl.artifactRef[j] ];
+
+ for (size_t loc_num = 0;
+ loc_num < arti.location.length ();
+ ++loc_num)
+ {
+ if (ACE_OS::strstr (arti.location[loc_num], "http://"))
+ {
+ ACE_CString path;
+ ACE_CString arti_name;
+ if (!this->resolve_http_reference (arti.location[loc_num],
+ arti_name,
+ path))
+ {
+ ACE_ERROR
+ ((LM_ERROR,
+ "CIAO (%P|%t) Containers_Info_Map.cpp -"
+ "Containers_Info_Map::insert_instance_into_container -"
+ "ERROR: Unable to resolve HTTP ref to location[%d] of %s\n",
+ loc_num, arti.name.in ()));
+
+ //No need to throw an exception here!
+ //Actually it is not desirable.
+ //This is handled in a different part of DAnCE
+ arti.location[loc_num] = "HTTP_failure";
+ }
+ else
+ {
+ arti.location[loc_num] = arti_name.c_str ();
+ //enque for cleanup
+ }
+ }
+ }
+
+ ACE_CString tmp = arti.name.in ();
+ ACE_CString::size_type pos;
+
+ //@@ Note: I am not checking for redundancy here. Maybe
+ // the modeling tool should make sure of
+ // uniqueness, i.e., one component implementation
+ // should have only 1 _svnt and 1 _exec libs.
+ if ((pos = tmp.find ("_stub")) != ACE_CString::npos ||
+ (pos = tmp.find ("_Stub")) != ACE_CString::npos)
+ continue; // We ignore _stub artifact since it's not used.
+
+ if (!svnt_found &&
+ ((pos = tmp.find ("_svnt")) != ACE_CString::npos ||
+ (pos = tmp.find ("_Svnt")) != ACE_CString::npos))
+ {
+ if (arti.location.length() < 1 )
+ {
+ ACE_DEBUG ((LM_DEBUG, "Servant Artifact must have a location!\n"));
+ return 0;
+ }
+
+ svnt_found = true;
+ // Copy the servant dll/so name.
+ // @@ Note: I ignore all the other locations except the first one.
+ impl_infos[i].servant_dll =
+ CORBA::string_dup (arti.location[0]);
+
+ // Get the entry point.
+ const CORBA::ULong prop_length = arti.execParameter.length ();
+
+ for (CORBA::ULong prop_num = 0;
+ prop_num < prop_length;
+ ++prop_num)
+ {
+ ACE_CString name (arti.execParameter[prop_num].name.in ());
+ if (name == ACE_CString ("entryPoint"))
+ {
+ const char * entry = 0;
+ (arti.execParameter[prop_num].value) >>= entry;
+ impl_infos[i].servant_entrypt = CORBA::string_dup (entry);
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Found unknown property in the artifact!\n"));
+ ACE_DEBUG ((LM_DEBUG, "We only support entrypoint at this point in CIAO.\n"));
+ }
+ }
+
+ continue; // continue for the next artifact
+ }
+
+ // As one can see, code is duplicated here. I will come back for this later.
+ // For exec artifact
+ if (!exec_found &&
+ ((pos = tmp.find ("_exec")) != ACE_CString::npos ||
+ (pos = tmp.find ("_Exec")) != ACE_CString::npos))
+ {
+ if (arti.location.length() < 1 )
+ {
+ ACE_DEBUG ((LM_DEBUG, "Executor Artifact must have a location!\n"));
+ return 0;
+ }
+
+ exec_found = true;
+ // Copy the servant dll/so name.
+ // @@ Note: I ignore all the other locations except the first one.
+ exec_found = true;
+ impl_infos[i].executor_dll =
+ CORBA::string_dup (arti.location[0]);
+
+ // Get the entry point.
+ const CORBA::ULong prop_length = arti.execParameter.length ();
+ for (CORBA::ULong prop_num = 0;
+ prop_num < prop_length;
+ ++prop_num)
+ {
+ ACE_CString name (arti.execParameter[prop_num].name.in ());
+ if (name == ACE_CString ("entryPoint"))
+ {
+ const char * entry = 0;
+ (arti.execParameter[prop_num].value) >>= entry;
+ impl_infos[i].executor_entrypt = CORBA::string_dup (entry);
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Found unknown property in the artifact!\n"));
+ ACE_DEBUG ((LM_DEBUG, "We only support entrypoint at this point in CIAO.\n"));
+ }
+ }
+ }
+ else
+ // We see artifact other than servant/executor and we ignore them.
+ continue;
+ }
+ return true;
+ }
+}
+
+bool
+CIAO::Containers_Info_Map::
+is_shared_component (ACE_CString & name)
+{
+ for (CORBA::ULong i = 0; i < this->shared_components_.length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->shared_components_[i].name.in (),
+ name.c_str ()) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+
+/*---------------------------------------------------------------------
+ * functions to support HTTP capabilities of the NodeApplicationManager
+ * @author Stoyan Paunov
+ *
+ * Purpose: Adding the HTTP access code which will resove
+ * any references to HTTP URLs
+ */
+
+ // This function checks if the HTTP_DOWNLOAD_PATH is
+ // in the library load path
+ void
+ CIAO::Containers_Info_Map::update_loader_path (void)
+ {
+#if defined (ACE_WIN32)
+ char* path = ACE_OS::getenv ("PATH");
+#else
+ char* path = ACE_OS::getenv ("LD_LIBRARY_PATH");
+#endif
+
+ if (ACE_OS::strstr (path, this->HTTP_DOWNLOAD_PATH.c_str ()))
+ return;
+
+#if defined (ACE_WIN32)
+ ACE_CString new_path = "PATH=";
+#else
+ ACE_CString new_path = "LD_LIBRARY_PATH=";
+#endif
+
+ new_path += this->HTTP_DOWNLOAD_PATH;
+
+#if defined (ACE_WIN32)
+ new_path += ";";
+#else
+ new_path += ":";
+#endif
+
+ new_path += path;
+
+ ACE_OS::putenv (new_path.c_str ());
+
+ }
+
+ //This function resolves any http location references
+ //in the name of the implementation artifacts
+ //It returns true on success and false on failure
+
+ bool
+ CIAO::Containers_Info_Map::resolve_http_reference (const char* location,
+ ACE_CString &arti_name,
+ ACE_CString &path)
+ {
+ // Figure out the file name.
+ char* name = const_cast<char*> (location);
+ char* p = 0;
+
+ while (true)
+ {
+ p = ACE_OS::strstr (name, "/");
+
+ if (0 == p)
+ {
+ p = ACE_OS::strstr (name, "\\");
+ }
+
+ if (0 == p)
+ {
+ break;
+ }
+ else
+ {
+ name = ++p;
+ continue;
+ }
+ }
+
+ arti_name = name;
+
+ // Get the file.
+ ACE_Message_Block* mb = 0;
+ ACE_NEW_RETURN (mb, ACE_Message_Block (0,0), false);
+
+ if (!this->retrieve_via_HTTP (location, *mb))
+ {
+ mb->release ();
+ return false;
+ }
+
+#if defined (ACE_WIN32) && defined (ACE_LD_DECORATOR_STR) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
+ ACE_TString decorator (ACE_LD_DECORATOR_STR);
+#endif
+ ACE_TString prefix (ACE_DLL_PREFIX);
+ ACE_TString suffix (ACE_DLL_SUFFIX);
+
+ ACE_CString new_name (name);
+ new_name = prefix + new_name;
+#if defined (ACE_WIN32) && defined (ACE_LD_DECORATOR_STR) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
+ new_name += decorator;
+#endif
+ new_name += suffix;
+
+ path = HTTP_DOWNLOAD_PATH;
+ path += "/";
+ path += new_name;
+
+ if (!this->write_to_disk (path.c_str (), *mb))
+ {
+ mb->release ();
+ return false;
+ }
+
+ mb->release ();
+ return true;
+ }
+
+ //function to retvieve a file via HTTP
+ //stores the file in the passed preallocated ACE_Message_Block
+ //returns 1 on success
+ // 0 on error
+
+ bool
+ CIAO::Containers_Info_Map::retrieve_via_HTTP (const char* URL,
+ ACE_Message_Block &mb)
+ {
+ ACE_CString loc (URL);
+
+ // Figure out the file name.
+ char* name_ = const_cast<char*> (URL);
+ char* p = 0;
+
+ while (true)
+ {
+ p = ACE_OS::strstr (name_, "/");
+
+ if (0 == p)
+ {
+ p = ACE_OS::strstr (name_, "\\");
+ }
+
+ if (0 == p)
+ {
+ break;
+ }
+ else
+ {
+ name_ = ++p;
+ continue;
+ }
+ }
+
+ ACE_CString name (name_);
+ loc = loc.substr (0, loc.length() - name.length ());
+
+#if defined (ACE_WIN32) && defined (ACE_LD_DECORATOR_STR) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
+ ACE_TString decorator (ACE_LD_DECORATOR_STR);
+#endif
+ ACE_TString prefix (ACE_DLL_PREFIX);
+ ACE_TString suffix (ACE_DLL_SUFFIX);
+
+ ACE_CString new_name (name);
+ new_name = prefix + new_name;
+#if defined (ACE_WIN32) && defined (ACE_LD_DECORATOR_STR) && !defined (ACE_DISABLE_DEBUG_DLL_CHECK)
+ new_name += decorator;
+#endif
+ new_name += suffix;
+
+ loc = loc + new_name;
+
+ ACE_DEBUG ((LM_INFO,
+ "Attempting to download %s\n",
+ loc.c_str ()));
+
+ URL_Parser *parser = TheURL_Parser::instance ();
+ if (!parser->parseURL (const_cast<char*> (loc.c_str ())))
+ return false;
+
+ // Create a client
+ TAO_HTTP_Client client;
+
+ // Open the client
+ if (client.open (parser->filename_,
+ parser->hostname_,
+ parser->port_) == -1)
+ {
+ client.close ();
+ return false;
+ }
+
+ // Read from it
+ if (client.read (&mb) <= 0)
+ {
+ client.close ();
+ return false;
+ }
+
+ return true;
+ }
+
+ //This function attempts to write a sequence of bytes from an
+ //ACE_Message_Block to a specified location. A 0 is returned
+ //in the case of an error and a 1 upon success
+
+ bool
+ CIAO::Containers_Info_Map::write_to_disk (const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace)
+ {
+ ACE_stat stat;
+
+ if (ACE_OS::stat(full_path, &stat) != -1 && !replace)
+ return false;
+
+ // Open a file handle to the local filesystem
+ ACE_HANDLE handle = ACE_OS::open (full_path, O_CREAT | O_TRUNC | O_WRONLY);
+ if (handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[CIAO::Containers_Info_Map::write_to_disk]"),
+ ACE_TEXT (" file creation error")),
+ false);
+
+ //write the data to the file
+ for (ACE_Message_Block * curr = &mb; curr != 0; curr = curr->cont ())
+ if (ACE_OS::write_n (handle, curr->rd_ptr(), curr->length()) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[CIAO::Containers_Info_Map::write_to_disk]"),
+ ACE_TEXT (" write error")),
+ false);
+
+ // Close the file handle
+ ACE_OS::close (handle);
+
+ return true;
+ }
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h b/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h
new file mode 100644
index 00000000000..93f6b70c5cc
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/Containers_Info_Map.h
@@ -0,0 +1,137 @@
+/**
+ *
+ * @file Containers_Info_Map.h
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ *
+ * Map of ContainerImplementationInfo sequences.
+ *
+ * $Id$
+ */
+
+#ifndef CIAO_CONTAINERS_INFO_MAP_H
+#define CIAO_CONTAINERS_INFO_MAP_H
+
+#include /**/ "ace/pre.h"
+
+#include "ace/Null_Mutex.h"
+#include "ace/Hash_Map_Manager.h"
+
+//added for the HTTP support
+#include "ace/Message_Block.h" //for ACE_Message_Block
+
+#include "ciao/Deployment_ContainerC.h"
+#include "ciao/DeploymentC.h"
+#include "ace/SString.h"
+#include "CIAO_NAM_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ /**
+ * @class Container_Infos_Map
+ * @brief Implementation of a map of ContainerImplementationInfo sequences.
+ *
+ * This is a helper class to populate the NodeImplementationInfo struct from
+ * a deployment plan..
+ */
+ class CIAO_NAM_Export Containers_Info_Map
+ {
+ public:
+
+ Containers_Info_Map (const Deployment::DeploymentPlan & plan,
+ const Deployment::ComponentPlans & shared_components);
+
+ Deployment::ContainerImplementationInfos *
+ containers_info (void);
+
+ private:
+ void initialize_map (void);
+ bool build_map (void);
+
+ bool insert_instance_into_map (
+ const Deployment::InstanceDeploymentDescription & instance);
+
+ bool insert_instance_into_container (
+ const Deployment::InstanceDeploymentDescription & instance,
+ Deployment::ComponentImplementationInfos & impl_infos);
+
+ /// Helper function to check wheather a component instance
+ /// is in the "shared components list".
+ bool is_shared_component (ACE_CString & name);
+
+ //Deployment::ContainerImplementationInfos_var containers_info_;
+
+ typedef
+ ACE_Hash_Map_Manager_Ex <ACE_CString,
+ Deployment::ContainerImplementationInfo *,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> MAP;
+
+ typedef MAP::iterator Iterator;
+ MAP map_;
+
+ const Deployment::DeploymentPlan & plan_;
+
+ /// shared components list, passed in from NodeImplementationInfoHandler
+ /// class.
+ Deployment::ComponentPlans shared_components_;
+
+ /**-------------------------------------------------------------------
+ * HTTP capability
+ * @author Stoyan Paunov
+ *
+ * Purpose: Adding the HTTP access code which will resove
+ * any references to HTTP URLs
+ */
+ protected:
+
+ // @Stoyan - Please follow ACE coding guideines when naming your
+ //member variables. In particular, please use lower case and
+ //follow the name with a trailing underscore.
+ //directory in which to download the libraries obtained via HTTP
+ ACE_CString HTTP_DOWNLOAD_PATH;
+
+ /// This function checks if the HTTP_DOWNLOAD_PATH is
+ /// in the library load path
+ void
+ update_loader_path (void);
+
+ /// This function resolves any http location references
+ /// in the name of the implementation artifacts
+ /// It returns true on success and false on failure
+ bool
+ resolve_http_reference (const char* location,
+ ACE_CString &arti_name,
+ ACE_CString &name);
+
+ /// function to retvieve a file via HTTP
+ /// stores the file in the passed preallocated ACE_Message_Block
+ /// returns 1 on success
+ /// 0 on error
+ bool
+ retrieve_via_HTTP (const char* URL,
+ ACE_Message_Block &mb);
+
+ /// function that writes out a file to a specified location on the hand disk
+ /// returns 1 on success
+ /// 0 on already exists and replace == false
+ /// 0 on error
+
+ bool
+ write_to_disk (const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace = true);
+
+ /// TODO: Fuction to remove the downloaded library to ensure
+ /// consisterncy in future runs
+
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /*CIAO_CONTAINERS_INFO_MAP_H*/
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.cpp b/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.cpp
new file mode 100644
index 00000000000..af905369dcf
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.cpp
@@ -0,0 +1,95 @@
+//$Id$
+#ifndef CIAO_IMPLEMENTATION_INFO_CPP
+#define CIAO_IMPLEMENTATION_INFO_CPP
+
+#include "ImplementationInfo.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "ace/SString.h"
+
+CIAO::NodeImplementationInfoHandler::
+NodeImplementationInfoHandler (const ::Deployment::DeploymentPlan & plan,
+ const Deployment::ComponentPlans & shared_components) :
+ plan_ (plan),
+ node_info_ (0),
+ containers_info_map_ (plan, shared_components)
+{
+ ACE_NEW (node_info_, ::Deployment::NodeImplementationInfo);
+ this->populate_server_resource_def ();
+ this->populate_container_impl_infos ();
+}
+
+Deployment::NodeImplementationInfo *
+CIAO::NodeImplementationInfoHandler::node_impl_info (void) const
+{
+ Deployment::NodeImplementationInfo_var retv;
+ ACE_NEW_RETURN (retv,
+ Deployment::NodeImplementationInfo (this->node_info_.in ()),
+ 0);
+ return retv._retn ();
+}
+
+void
+CIAO::NodeImplementationInfoHandler::populate_server_resource_def (void)
+{
+ CORBA::ULong const instance_len = plan_.instance.length ();
+ const char * target_resource_id = 0;
+
+ // Iterate over the instance list to find whether any server resource
+ // has been specified
+ // TODO: We shoud do some sanity check here, since all the component
+ // instance in this NodeApplication should have the same "server_resource_def"
+ // defined. Since currently we ignored this sanity check, then will allow
+ // users to specify some self-conflicting configuration in the descriptor.
+
+ // NW: this stuff is broken because it assumes all component
+ // instances in a node will use the same ServerResource file. This
+ // is not the case. Component instances using the same
+ // ServerResource file will be deployed in the same NA. However,
+ // those using different ServerResource files should be deployed to
+ // different NAs. Something to be fixed later.
+ for (CORBA::ULong i = 0; i < instance_len; ++i)
+ {
+ if (this->plan_.instance[i].deployedResource.length () != 0)
+ {
+ target_resource_id =
+ this->plan_.instance[i].deployedResource[0].resourceName.in ();
+
+ // Some component instance has server resource usage defined, so we
+ // set the <nodeapp_config> field of the NodeImplementationInfo struct.
+ for (CORBA::ULong j = 0; j < this->plan_.infoProperty.length (); ++j)
+ {
+ CIAO::DAnCE::ServerResource *server_resource_def = 0;
+ this->plan_.infoProperty[j].value >>= server_resource_def;
+
+ if (ACE_OS::strcmp ((*server_resource_def).Id,
+ target_resource_id) == 0)
+ {
+ // Found the target server resource def, and store it.
+ this->node_info_->nodeapp_config.length (1);
+
+ this->node_info_->nodeapp_config[0].name =
+ CORBA::string_dup ("CIAOServerResources");
+
+ this->node_info_->nodeapp_config[0].value <<=
+ *server_resource_def;
+ break;
+ }
+ }
+ }
+ }
+}
+
+void
+CIAO::NodeImplementationInfoHandler::populate_container_impl_infos (void)
+{
+ CORBA::ULong const curr_len =
+ this->containers_info_map_.containers_info ()->length ();
+
+ ACE_UNUSED_ARG (curr_len);
+
+ // assignment operation
+ this->node_info_->impl_infos =
+ *(this->containers_info_map_.containers_info ());
+}
+
+#endif /* CIAO_IMPLEMENTATION_INFO_CPP */
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.h b/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.h
new file mode 100644
index 00000000000..2b935d9d637
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/ImplementationInfo.h
@@ -0,0 +1,60 @@
+//$Id$
+/* -*- C++ -*- */
+/***************************************************************
+ * @file ImplementationInfo.h
+ *
+ * @brief This file defines some helper functions for preparing the
+ * Component ImplementationInfo and properties from
+ * the plan.
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ ***************************************************************/
+
+#ifndef IMPLEMENTATIONIFO_H
+#define IMPLEMENTATIONIFO_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Deployment_NodeApplicationC.h"
+#include "ace/SString.h"
+#include "ace/Hash_Map_Manager.h"
+#include "Containers_Info_Map.h"
+#include "CIAO_NAM_Export.h"
+
+namespace CIAO
+{
+ /// This class is a helper class to parse the local deployment plan into the
+ /// NodeImplementationInfo struct.
+ class CIAO_NAM_Export NodeImplementationInfoHandler
+ {
+ public:
+ NodeImplementationInfoHandler (
+ const ::Deployment::DeploymentPlan & plan,
+ const Deployment::ComponentPlans & shared_components);
+
+ Deployment::NodeImplementationInfo *
+ node_impl_info (void) const;
+
+ private:
+ Deployment::DeploymentPlan plan_;
+
+ Deployment::NodeImplementationInfo_var node_info_;
+
+ void populate_server_resource_def (void);
+
+ void populate_container_impl_infos (void);
+
+ /// Helper class that helps populate the container_impl_infos
+ /// field.
+ Containers_Info_Map containers_info_map_;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* IMPLEMENTATIONIFO_H */
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
new file mode 100644
index 00000000000..a145a6f09f2
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager.mpc
@@ -0,0 +1,24 @@
+// -*- MPC -*-
+// $Id$
+
+project(NodeApplicationManager): ciao_server_dnc, ciao_deployment_svnt, dance_extension_stub, ciao_nodeapplication {
+
+ sharedname = NodeApplicationManager
+ after += NodeManager_stub CIAO_TargetManager_stub
+ dynamicflags = CIAO_NAM_BUILD_DLL
+
+ Source_Files {
+ NodeApplicationManager_Impl.cpp
+ ImplementationInfo.cpp
+ Containers_Info_Map.cpp
+ URL_Parser.cpp
+ }
+
+ Header_Files {
+ NodeApplicationManager_Impl.h
+ ImplementationInfo.h
+ Containers_Info_Map.h
+ URL_Parser.h
+ CIAO_NAM_Export.h
+ }
+}
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
new file mode 100644
index 00000000000..51f6cbdb50e
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.cpp
@@ -0,0 +1,1161 @@
+// $Id$
+
+#include "NodeApplicationManager_Impl.h"
+#include "ace/Process.h"
+#include "ace/Process_Manager.h"
+#include "ace/Reactor.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/Sched_Params.h"
+#include "ace/Vector_T.h"
+#include "ciao/Container_Base.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "NodeApplication/NodeApplication_Impl.h"
+#include "ace/Reactor.h"
+
+#if !defined (__ACE_INLINE__)
+# include "NodeApplicationManager_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+
+bool
+CIAO::NodeApplicationManager_Impl_Base::
+is_shared_component (ACE_CString & name)
+{
+ for (CORBA::ULong i = 0; i < this->shared_components_.length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->shared_components_[i].name.in (),
+ name.c_str ()) == 0)
+ return true;
+ }
+
+ return false;
+}
+
+bool
+CIAO::NodeApplicationManager_Impl_Base::
+is_external_component (ACE_CString & name)
+{
+ for (CORBA::ULong i = 0; i < this->external_components_.length (); ++i)
+ {
+ if (ACE_OS::strcmp (this->external_components_[i].name.in (),
+ name.c_str ()) == 0 &&
+ ACE_OS::strcmp (this->external_components_[i].plan_uuid.in (),
+ this->plan_.UUID.in ()))
+ return true;
+ }
+
+ return false;
+}
+
+Deployment::Connections *
+CIAO::NodeApplicationManager_Impl_Base::
+create_connections ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty))
+{
+ CIAO_TRACE("CIAO::NodeApplicationManager_Impl::create_connections");
+ Deployment::Connections_var retv;
+
+ ACE_NEW_THROW_EX (retv,
+ Deployment::Connections (),
+ CORBA::NO_MEMORY ());
+
+ CORBA::ULong len = retv->length ();
+
+ const Component_Iterator end (this->component_map_.end ());
+ for (Component_Iterator iter (this->component_map_.begin ());
+ iter != end;
+ ++iter)
+ {
+ // If this component is in the "shared components list", then we
+ // should just simply fetch the port object references from the
+ // NodeManager.
+ ACE_CString comp_name ((*iter).ext_id_.c_str ());
+
+ // Get all the facets first
+ Components::FacetDescriptions_var facets;
+
+ if (this->is_shared_component (comp_name))
+ {
+ ACE_DEBUG ((LM_DEBUG, "NAMImpl::create_connections: Component %s is shared\n",
+ comp_name.c_str ()));
+ facets = this->node_manager_->get_all_facets (comp_name);
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "NAMImpl::create_connections: Component %s is not shared, getting and setting "
+ "all facets\n",
+ comp_name.c_str ()));
+ facets = ((*iter).int_id_)->get_all_facets ();
+ this->node_manager_->set_all_facets (comp_name, facets);
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::create_connections -"
+ "success getting facets for the component "
+ "instance [%s] \n",
+ comp_name.c_str ()));
+ }
+
+ // Get all the event consumers
+ Components::ConsumerDescriptions_var consumers;
+
+ if (this->is_shared_component (comp_name))
+ {
+ ACE_DEBUG ((LM_DEBUG, "NAMImpl::create_connections: Component %s is shared\n",
+ comp_name.c_str ()));
+ consumers = this->node_manager_->get_all_consumers (comp_name);
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "NAMImpl::create_connections: Component %s is not shared, getting and setting "
+ "all facets\n",
+ comp_name.c_str ()));
+ consumers =
+ ((*iter).int_id_)->get_all_consumers ();
+ this->node_manager_->set_all_consumers (comp_name, consumers);
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::create_connections -"
+ "success getting consumers for the component "
+ "instance [%s] \n",
+ comp_name.c_str ()));
+ }
+
+ CORBA::ULong const facet_len = facets->length ();
+ CORBA::ULong const consumer_len = consumers->length ();
+
+ CORBA::ULong const curr_len = retv->length ();
+ retv->length (curr_len + facet_len + consumer_len);
+
+ CORBA::ULong i = 0;
+ for (i = 0; i < facet_len; ++i)
+ {
+ Deployment::Connection & conn = retv[len];
+ conn.instanceName = (*iter).ext_id_.c_str ();
+ conn.portName = facets[i]->name ();
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::create_connections -"
+ "adding connection for facet [%s] in instance [%s] \n",
+ conn.portName.in (), conn.instanceName.in ()));
+ }
+ conn.kind = Deployment::Facet;
+ conn.endpoint = CORBA::Object::_duplicate (facets[i]->facet_ref ());
+ ++len;
+ }
+
+ for (i = 0; i < consumer_len; ++i)
+ {
+ Deployment::Connection & conn = retv[len];
+ conn.instanceName = (*iter).ext_id_.c_str ();
+ conn.portName = consumers[i]->name ();
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::create_connections -"
+ "adding connection for consumer [%s] in instance [%s] \n",
+ conn.portName.in (), conn.instanceName.in ()));
+ }
+ conn.kind = Deployment::EventConsumer;
+ conn.endpoint = CORBA::Object::_duplicate (consumers[i]->consumer ());
+ ++len;
+ }
+ }
+ return retv._retn ();
+}
+
+Deployment::Application_ptr
+CIAO::NodeApplicationManager_Impl_Base::
+startLaunch (const Deployment::Properties & configProperty,
+ Deployment::Connections_out providedReference,
+ CORBA::Boolean start)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty))
+{
+ try
+ {
+ CIAO_TRACE("CIAO::NodeApplicationManager_Impl::startLaunch");
+ ACE_UNUSED_ARG (configProperty);
+ ACE_UNUSED_ARG (start);
+
+ // In this step, we know all the "shared components" are
+ // the external components to ourself.
+ this->external_components_ = this->shared_components_;
+
+ // If no additional components need to be installed, then we simply
+ // create a NA, but doesn't install any components on it.
+ if (this->plan_.instance.length () == this->shared_components_.length ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "Prespawn a NodeApplication process without "
+ "installing any components.\n"));
+ }
+
+ /**
+ * 1. First Map properties to TAO/CIAO specific property/configurations
+ * 2. Necessary property checking (needed?)
+ * 3. Call create_nade_application to spawn new process.
+ * 4. Initialize the NodeApplication.
+ * 5. get the provided connection endpoints back and return them.
+ */
+
+ NodeImplementationInfoHandler handler (this->plan_, this->shared_components_);
+
+ Deployment::NodeImplementationInfo * node_info =
+ handler.node_impl_info ();
+
+ if (!node_info)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) NodeApplicationManager.cpp -"
+ "CIAO::NodeApplicationManager_Impl::startLaunch -"
+ "Failed to create Node Implementation Infos!\n"));
+
+ throw
+ (Deployment::StartError ("NodeApplicationManager_Imp::startLaunch",
+ "Unable to get node level infos"));
+ }
+
+ CIAO::DAnCE::ServerResource *server_resource = 0;
+ for (CORBA::ULong k = 0; k < node_info->nodeapp_config.length (); ++k)
+ {
+ if (ACE_OS::strcmp (node_info->nodeapp_config[k].name.in (),
+ "CIAOServerResources") == 0)
+ {
+ node_info->nodeapp_config[0].value >>= server_resource;
+ break; // Ignore the rest of the NodeApp_Config values
+ }
+ }
+
+ // Now spawn the NodeApplication process.
+ // @@TODO: we need to pass arguments to the nodeapplication, ie
+ // naming service endpoints, if necessary
+ // (will)
+ ACE_CString cmd_option (this->nodeapp_command_op_.in ());
+
+ if (server_resource)
+ {
+ // If command line options are specified through RTCCM descriptors,
+ // then we should honor these command line options as well.
+ for (CORBA::ULong arg_i = 0;
+ arg_i < (*server_resource).args.length ();
+ ++arg_i)
+ {
+ cmd_option += " "; // space between command line args
+ cmd_option += (*server_resource).args[arg_i];
+ }
+
+ // If service configuration file is specified through RTCCM
+ // descriptors, then we should honor it as well.
+ if (ACE_OS::strcmp ((*server_resource).svcconf.in (),
+ "") != 0)
+ {
+ cmd_option += " -ORBSvcConf ";
+ cmd_option += (*server_resource).svcconf;
+ }
+ }
+
+ Deployment::NodeApplication_var tmp =
+ create_node_application (cmd_option.c_str ());
+
+ if (CIAO::debug_level () > 9)
+ {
+ CORBA::ULong curr_len = node_info->impl_infos.length ();
+ ACE_UNUSED_ARG (curr_len);
+
+ Deployment::ComponentImplementationInfos infos =
+ ((node_info->impl_infos)[0]).impl_infos;
+
+ const CORBA::ULong info_len = infos.length ();
+ for (CORBA::ULong i = 0; i < info_len; ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "DAnCE (%P|%t) NodeApplicationManager.cpp -"
+ "CIAO::NodeApplicationManager_Impl::startLaunch -"
+ "The info for installation: "
+ "\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n",
+ infos[i].component_instance_name.in (),
+ infos[i].executor_dll.in (),
+ infos[i].executor_entrypt.in (),
+ infos[i].servant_dll.in (),
+ infos[i].servant_entrypt.in () ));
+ }
+ }
+
+ // This is what we will get back, a sequence of component object refs.
+ Deployment::ComponentInfos_var comp_info;
+
+ // This will install all homes and components.
+ comp_info = this->nodeapp_->install (*node_info);
+
+
+ // Now fill in the map we have for the "newly installed" components.
+ const CORBA::ULong comp_len = comp_info->length ();
+ for (CORBA::ULong len = 0;
+ len < comp_len;
+ ++len)
+ {
+ //Since we know the type ahead of time...narrow is omitted here.
+ if (this->component_map_.
+ bind (comp_info[len].component_instance_name.in(),
+ Components::CCMObject::_duplicate
+ (comp_info[len].component_ref.in())))
+ {
+ ACE_CString error ("Duplicate component instance name ");
+ error += comp_info[len].component_instance_name.in();
+
+ throw
+ (Deployment::StartError
+ ("NodeApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+ }
+
+ // Also, we need to fill in the map about those "shared components"
+ // For now, we could use "NIL" component object reference for these
+ // shared components since they are not used anyway.
+ CORBA::ULong shared_comp_length = this->shared_components_.length ();
+ for (CORBA::ULong j = 0; j < shared_comp_length; ++j)
+ {
+ if (this->component_map_.
+ bind (this->shared_components_[j].name.in (),
+ Components::CCMObject::_nil ()))
+ {
+ ACE_CString error ("Duplicate component instance name ");
+ error += this->shared_components_[j].name.in();
+
+ throw
+ (Deployment::StartError
+ ("NodeApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+ }
+
+
+ providedReference =
+ this->create_connections ();
+
+ if (providedReference == 0)
+ {
+ throw
+ (Deployment::StartError
+ ("NodeApplicationManager_Impl::startLaunch",
+ "Error creating connections for components during startLaunch."));
+ }
+ }
+ catch (const Deployment::UnknownImplId& e)
+ {
+ ACE_THROW_RETURN (Deployment::StartError (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+ catch (const Deployment::ImplEntryPointNotFound& e)
+ {
+ ACE_THROW_RETURN (Deployment::StartError (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+ catch (const Deployment::InstallationFailure& e)
+ {
+ ACE_THROW_RETURN (Deployment::StartError (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+
+ return Deployment::NodeApplication::_duplicate (this->nodeapp_.in ());
+}
+
+
+Deployment::Application_ptr
+CIAO::NodeApplicationManager_Impl_Base::
+perform_redeployment (const Deployment::Properties & configProperty,
+ Deployment::Connections_out providedReference,
+ CORBA::Boolean /*add_or_remove*/, // true means "add" only
+ CORBA::Boolean start)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty,
+ ::Components::RemoveFailure))
+{
+ // Prerequisite:
+ // (1) If this is an existiing old NAM, then <nodeapp_> is ready to use.
+ // We also got a copy of <plan_> as well as all the installed components
+ // in the <component_map_>.
+ // (2) Then we should call <install> operation on the NA, but in order to do this,
+ // we must pack all the to-be-added components into some appropriate
+ // data structure called "NodeImplementationInfo".
+ // (3) We should also call <remove> operation on the NA to remove those
+ // to-be-removed components, and the "comp_inst_name" could be as input.
+ // (4) We should also consider removing all the unneeded "connections", but
+ // this should be driven by the DAM, so it looks like that we need to
+ // add another operation on the NA interface which is a counterpart of
+ // <finishLaunch>, something like <finishLaunch_remove_only>.
+ //
+ //
+ //
+ // (1) If this is an brand new NAM, then only new installation is needed.
+ // (2) Then we could pretty much replicate the "startLaunch" implementation.
+ // This capability is useful to install a set of new components into
+ // some totally new nodes.
+
+ ACE_UNUSED_ARG (configProperty);
+ ACE_UNUSED_ARG (start);
+
+ CIAO_TRACE ("CIAO::NodeApplicationManager_Impl_Base::perform_redeployment");
+
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) NodeApplicationManager_Impl_Base: "
+ "invoked CIAO::NodeApplicationManager_Impl_Base::perform_redeployment \n"));
+ try
+ {
+ if (! CORBA::is_nil (this->nodeapp_.in ()))
+ {
+ // We ignored those components that are already in the <component_map_>, for
+ // the rest ones, we pack them into NodeImplementationInfo.
+ Deployment::DeploymentPlan tmp_plan = this->plan_;
+ tmp_plan.instance.length (0);
+
+ CORBA::ULong const length = this->plan_.instance.length ();
+ for (CORBA::ULong i = 0; i < length; ++i)
+ {
+ // add the new components into the tmp_plan
+ if (this->component_map_.find (this->plan_.instance[i].name.in ()) != 0)
+ {
+ CORBA::ULong cur_len = tmp_plan.instance.length ();
+ tmp_plan.instance.length (cur_len + 1);
+ tmp_plan.instance[cur_len] = this->plan_.instance[i];
+ }
+ }
+
+ // package the components
+ NodeImplementationInfoHandler handler (tmp_plan,
+ this->shared_components_);
+ Deployment::NodeImplementationInfo * node_info =
+ handler.node_impl_info ();
+
+ if (!node_info)
+ {
+ this->add_new_components ();
+ }
+
+ // Install the components
+ // This is what we will get back, a sequence of compoent object refs.
+ Deployment::ComponentInfos_var comp_info;
+ comp_info = this->nodeapp_->install (*node_info);
+
+ // Now fill in the map we have for the components.
+ const CORBA::ULong comp_len = comp_info->length ();
+ for (CORBA::ULong len = 0;
+ len < comp_len;
+ ++len)
+ {
+ //Since we know the type ahead of time...narrow is omitted here.
+ if (this->component_map_.
+ bind (comp_info[len].component_instance_name.in(),
+ Components::CCMObject::_duplicate
+ (comp_info[len].component_ref.in())))
+ {
+ ACE_CString error ("Duplicate component instance name ");
+ error += comp_info[len].component_instance_name.in();
+
+ throw
+ (Deployment::PlanError
+ ("NodeApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+ }
+
+ // NOTE: We are propogating back "all" the facets/consumers object
+ // references to the DAM, including the previous existing ones.
+ providedReference =
+ this->create_connections ();
+
+ if (providedReference == 0)
+ {
+ throw
+ (Deployment::InstallationFailure
+ ("NodeApplicationManager_Impl::startLaunch",
+ "Error creating connections during startLaunch."));
+ }
+ }
+ else // This is a new NodeApplication process, then we need to install
+ // all the components. We should try to reuse much of the above code.
+ {
+ this->startLaunch (configProperty,
+ providedReference,
+ start);
+ }
+ }
+ catch (const Deployment::UnknownImplId& e)
+ {
+ ACE_THROW_RETURN (Deployment::UnknownImplId (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+ catch (const Deployment::ImplEntryPointNotFound& e)
+ {
+ ACE_THROW_RETURN (Deployment::ImplEntryPointNotFound (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+ catch (const Deployment::InstallationFailure& e)
+ {
+ ACE_THROW_RETURN (Deployment::InstallationFailure (e.name.in (),
+ e.reason.in ()),
+ Deployment::Application::_nil());
+ }
+
+ return Deployment::NodeApplication::_duplicate (this->nodeapp_.in ());
+}
+
+
+void
+CIAO::NodeApplicationManager_Impl_Base::
+add_new_components ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty))
+{
+ try
+ {
+ // We ignored those components that are already in the <component_map_>, for
+ // the rest ones, we pack them into NodeImplementationInfo.
+ Deployment::DeploymentPlan tmp_plan = this->plan_;
+ tmp_plan.instance.length (0);
+
+ const CORBA::ULong length = this->plan_.instance.length ();
+ for (CORBA::ULong i = 0; i < length; ++i)
+ {
+ // add the new components into the tmp_plan
+ if (this->component_map_.find (this->plan_.instance[i].name.in ()) != 0)
+ {
+ CORBA::ULong cur_len = tmp_plan.instance.length ();
+ tmp_plan.instance.length (cur_len + 1);
+ tmp_plan.instance[cur_len] = this->plan_.instance[i];
+ }
+ }
+
+ // If there are no new components to be installed ...
+ if (tmp_plan.instance.length () == 0)
+ return;
+
+ // package the components
+ NodeImplementationInfoHandler handler (tmp_plan,
+ this->shared_components_);
+ Deployment::NodeImplementationInfo * node_info =
+ handler.node_impl_info ();
+
+ if (!node_info)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) NodeApplicationManager.cpp -"
+ "CIAO::NodeApplicationManager_Impl::perform_redeployment -"
+ "Failed to create Node Implementation Infos!\n"));
+
+ throw
+ (Deployment::PlanError ("NodeApplicationManager_Imp::perform_redeployment",
+ "Unable to get node level infos"));
+ }
+
+ // Install the components
+ // This is what we will get back, a sequence of component object refs.
+ Deployment::ComponentInfos_var comp_info;
+ comp_info = this->nodeapp_->install (*node_info);
+
+ // Now fill in the map we have for the components.
+ const CORBA::ULong comp_len = comp_info->length ();
+ for (CORBA::ULong len = 0;
+ len < comp_len;
+ ++len)
+ {
+ //Since we know the type ahead of time...narrow is omitted here.
+ if (this->component_map_.
+ bind (comp_info[len].component_instance_name.in(),
+ Components::CCMObject::_duplicate
+ (comp_info[len].component_ref.in())))
+ {
+ ACE_CString error ("Duplicate component instance name ");
+ error += comp_info[len].component_instance_name.in();
+
+ throw
+ (Deployment::PlanError
+ ("NodeApplicationManager_Impl::startLaunch",
+ error.c_str ()));
+ }
+ }
+ }
+ catch (const CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR, "NodeApplicationManager_Impl_Base::"
+ "add_new_components () exception caught.\n"));
+ throw;
+ }
+}
+
+
+void
+CIAO::NodeApplicationManager_Impl_Base::
+remove_existing_components ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Components::RemoveFailure))
+{
+ try
+ {
+ ACE_Vector<ACE_CString> gone_component_list;
+
+ for (Component_Iterator iter (this->component_map_.begin ());
+ iter != this->component_map_.end ();
+ ++iter)
+ {
+ ACE_CString comp_name ((*iter).ext_id_.c_str ());
+
+ // If this component is not in the new deployment plan, then we
+ // should destroy this component and unbind from the map.
+ if (this->is_to_be_removed (comp_name.c_str ()))
+ {
+ ((*iter).int_id_)->ciao_passivate ();
+ this->nodeapp_->remove_component (comp_name.c_str ());
+ gone_component_list.push_back (comp_name);
+ }
+ }
+
+ for (size_t i = 0; i < gone_component_list.size (); ++i)
+ this->component_map_.unbind (gone_component_list[i]);
+ }
+ catch (const CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR, "NodeApplicationManager_Impl_Base::"
+ "remove_existing_components () exception caught.\n"));
+ throw;
+ }
+}
+
+bool
+CIAO::NodeApplicationManager_Impl_Base::
+is_to_be_removed (const char * name)
+{
+ const CORBA::ULong length = this->plan_.instance.length ();
+ for (CORBA::ULong i = 0; i < length; ++i)
+ {
+ if (ACE_OS::strcmp (name,
+ this->plan_.instance[i].name.in ()) == 0)
+ {
+ // If we have found it in the new plan, then this component
+ // needs to be kept, and should not be removed.
+ return false;
+ }
+ }
+ return true;
+}
+
+void
+CIAO::NodeApplicationManager_Impl_Base::
+set_shared_components (const Deployment::ComponentPlans & shared)
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+{
+ this->shared_components_ = shared;
+}
+
+void
+CIAO::NodeApplicationManager_Impl_Base::
+destroyApplication (Deployment::Application_ptr app)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError))
+{
+ CIAO_TRACE("CIAO::NodeApplicationManager_Impl::destroyApplication");
+ ACE_UNUSED_ARG (app);
+
+ ACE_DEBUG ((LM_DEBUG, "NAM: entering DA\n"));
+ //ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->lock_);
+ //@@ Since we know there is only 1 nodeapp so the passed in
+ // parameter is ignored for now.
+ if (CORBA::is_nil (this->nodeapp_.in () ))
+ throw Deployment::StopError ();
+
+ // Iterate over all the components within this NAM, and if it's
+ // not a shared component, then remove it. If all the components
+ // are removed, then we shall kill the NA totally.
+ for (CORBA::ULong i = 0; i < this->plan_.instance.length (); ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NAM: first for loop: %s\n",
+ this->plan_.instance[i].name.in ()));
+ ACE_CString name = plan_.instance[i].name.in ();
+ if (this->is_shared_component (name))
+ {
+ this->component_map_.unbind (name);
+ continue;
+ }
+
+ // If this is not a shared component and is installed within
+ // this NAM, then remove it. Otherwise, we do nothing.
+ // Ideally, we should ask NM to remove this component for
+ // us even if this is not within this NAM.
+ if (! this->is_external_component (name))
+ {
+ this->nodeapp_->remove_component (name.c_str ());
+ this->component_map_.unbind (name);
+ }
+ }
+
+ // Call remove on NodeApplication, if all the components are removed,
+ // then the NodeApplication will kill itself.
+ ACE_DEBUG ((LM_DEBUG, "NAM: calling remove\n"));
+ this->nodeapp_->remove ();
+ ACE_DEBUG ((LM_DEBUG, "NAM: remove returned\n"));
+
+ return;
+}
+
+// The set priority method
+::CORBA::Long
+CIAO::NodeApplicationManager_Impl_Base::set_priority (
+ const char * cid,
+ const ::Deployment::Sched_Params & params)
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+{
+ if (CIAO::debug_level () > 20)
+ {
+ ACE_DEBUG ((LM_DEBUG , "NAM::The component Id received [%s]", cid));
+
+ ACE_DEBUG ((LM_DEBUG ,
+ "NAM::The params are policy [%d], priority [%d], "
+ "scope [%d], time [%d]\n",
+ params.policy_ ,
+ params.priority_,
+ params.scope_, params.msec_));
+ }
+
+ // First validate the values coming in ....
+ ACE_Sched_Params::Policy policy = params.policy_;
+
+ if (policy != ACE_SCHED_FIFO &&
+ policy != ACE_SCHED_RR &&
+ policy != ACE_SCHED_OTHER)
+ return -1;
+
+ ACE_Sched_Priority priority = params.priority_;
+
+ // check the scope ..
+ if (params.scope_ != ACE_SCOPE_PROCESS &&
+ params.scope_ != ACE_SCOPE_THREAD &&
+ params.scope_ != ACE_SCOPE_LWP)
+ {
+ return -1;
+ }
+
+ // Here form the ACE_Sched_Params structure and pass it on to the Process
+ // manager with the current process id.
+ // @@ TODO: Right now we are ignoring params.msec_ value since
+ // ACE_OS::sched_params fails setting errno = EINVAL if
+ // scope = ACE_PROCESS_SCOPE and quantun != ACE_Time_Value:zero.
+ ACE_Sched_Params sched_params (policy ,
+ priority,
+ params.scope_,
+ ACE_Time_Value::zero);
+
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+ if (node_app_process_manager_.set_scheduler (sched_params, process_id_) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "User is not superuser, therefore cannot modify the "
+ "priority of the component\n"));
+ }
+ else if (ACE_OS::last_error () == ESRCH)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "No process with PID: %d was found!\n",
+ process_id_));
+ }
+ else if (ACE_OS::last_error () == EINVAL)
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nGiven sched_params does not make sence "
+ "for the current scheduling policy\n"));
+ }
+ ACE_ERROR ((LM_ERROR, "NodeApplicationManager (%P|%t): sched_params "
+ "failed\n"));
+ return -1;
+ }
+ return 1;
+}
+
+
+CIAO::NodeApplicationManager_Impl::~NodeApplicationManager_Impl (void)
+{
+}
+
+CIAO::NodeApplicationManager_Impl::
+NodeApplicationManager_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p)
+ : NodeApplicationManager_Impl_Base (o, p)
+{
+}
+
+PortableServer::ObjectId
+CIAO::NodeApplicationManager_Impl::init (
+ const char *nodeapp_location,
+ const char *nodeapp_op,
+ const CORBA::ULong delay,
+ const Deployment::DeploymentPlan & plan,
+ const PortableServer::POA_ptr callback_poa,
+ NodeManager_Impl_Base * nm)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty))
+{
+ PortableServer::ObjectId_var oid;
+
+ try
+ {
+ if (nodeapp_location == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::init -"
+ "NULL NodeApplication location. \n"));
+ throw CORBA::BAD_PARAM ();
+ }
+
+ if (delay == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "DAnCE (%P|%t) NodeApplicationManager_Impl.cpp -"
+ "CIAO::NodeApplicationManager_Impl::init -"
+ "NodeManager must be started with a -d "
+ "of greter than zero.\n"));
+ throw CORBA::BAD_PARAM ();
+ }
+
+ this->nodeapp_path_.set (nodeapp_location);
+ this->spawn_delay_ = delay;
+ this->nodeapp_command_op_ = CORBA::string_dup (nodeapp_op);
+ this->node_manager_ = nm;
+
+ // Make a copy of the plan for later usage.
+ this->plan_ = plan;
+
+ // Cache the call back POA for callback object.
+ this->callback_poa_ = PortableServer::POA::_duplicate (callback_poa);
+
+ // Activate the ourself.
+ oid = this->poa_->activate_object (this);
+
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (oid.in ());
+
+ // And cache the object reference.
+ this->objref_ =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+
+ // add the signal handler to the ACE_REACTOR
+
+ /*
+ if (orb_->orb_core ()->reactor ()->
+ register_handler (SIGCHLD,
+ &child_handler_) == -1)
+
+ if (ACE_Reactor::instance ()->register_handler (SIGCHLD,
+ &child_handler_) == -1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Error in registering Handler\n\n"));
+ }
+ */
+ }
+
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApplicationManager_Impl_Base::init\t\n");
+ throw;
+ }
+
+ //return this object reference
+ return oid.in ();
+}
+
+Deployment::NodeApplication_ptr
+CIAO::NodeApplicationManager_Impl::
+create_node_application (const ACE_CString & options)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty))
+{
+ CIAO_TRACE("CIAO::NodeApplicationManager_Impl::create_node_application");
+ Deployment::NodeApplication_var retval;
+ Deployment::Properties_var prop;
+
+ ACE_NEW_THROW_EX (prop,
+ Deployment::Properties,
+ CORBA::NO_MEMORY ());
+
+ // @@ Create a new callback servant.
+ CIAO::NodeApplication_Callback_Impl * callback_servant = 0;
+ ACE_NEW_THROW_EX (callback_servant,
+ CIAO::NodeApplication_Callback_Impl (this->orb_.in (),
+ this->callback_poa_.in (),
+ this->objref_.in (),
+ prop.in ()),
+ CORBA::NO_MEMORY ());
+
+ PortableServer::ServantBase_var servant_var (callback_servant);
+ PortableServer::ObjectId_var cb_id
+ = this->callback_poa_->activate_object (callback_servant);
+
+ ACE_Process_Options p_options;
+ ACE_Process_Manager process_manager;
+
+ process_manager.open (10, ACE_Reactor::instance ());
+
+ try
+ {
+ CORBA::Object_var cb_obj =
+ this->callback_poa_->id_to_reference (cb_id.in ());
+
+ CIAO::NodeApplication_Callback_var cb =
+ CIAO::NodeApplication_Callback::_narrow (cb_obj.in ());
+
+ CORBA::String_var cb_ior =
+ this->orb_->object_to_string (cb.in ());
+
+ // spawn the new NodeApplication.
+ p_options.command_line ("%s -k %s "
+ "%s",
+ this->nodeapp_path_.c_str (),
+ cb_ior.in (),
+ options.c_str ());
+
+ p_options.avoid_zombies (0);
+
+ process_id_ = node_app_process_manager_.spawn (p_options,
+ &child_handler_);
+
+ if (process_id_ == ACE_INVALID_PID)
+ {
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Fail to spawn a NodeApplication process\n"));
+ }
+
+ throw
+ (Deployment::ResourceNotAvailable
+ ("Failed to spawn process",
+ "NodeApplication",
+ "",
+ "",
+ ""));
+ }
+
+ // wait for nodeApp to pass back its object reference. with a
+ // timeout value. using perform_work and stuff.
+ bool looping = true;
+
+ ACE_Time_Value timeout (this->spawn_delay_, 0);
+
+ while (looping)
+ {
+ this->orb_->perform_work (timeout);
+
+ retval = callback_servant->get_nodeapp_ref ();
+
+ if (timeout == ACE_Time_Value::zero || !CORBA::is_nil (retval.in ()))
+ looping = false;
+ }
+
+ if (CORBA::is_nil (retval.in ()))
+ {
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Fail to acquire the NodeApplication object\n"));
+ }
+
+ throw Deployment::ResourceNotAvailable ();
+ }
+
+ {
+ //ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 0);
+ this->nodeapp_ =
+ Deployment::NodeApplication::_duplicate (retval.in ());
+ }
+ }
+ catch (const CORBA::Exception&)
+ {
+ this->callback_poa_->deactivate_object (cb_id.in ());
+
+ throw;
+ }
+
+ this->callback_poa_->deactivate_object (cb_id.in ());
+
+ if (CIAO::debug_level () > 1)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO::NodeApplicationManager_Impl::NodeApplication spawned!\n"));
+ }
+
+ // push the component info and the process id to the
+ // NodeManager
+ push_component_info (process_id_);
+
+
+ return retval._retn ();
+}
+
+
+void
+CIAO::NodeApplicationManager_Impl::
+push_component_info (pid_t process_id)
+{
+ CIAO::NodeManager_Impl_Base::Component_Ids comp;
+
+ for (unsigned int i=0;i < plan_.instance.length ();i++)
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "The component id is [%s]",
+ plan_.instance[i].name.in ()));
+ }
+ comp.cid_seq_.insert (plan_.instance[i].name.in ());
+ }
+
+ comp.process_id_ = process_id;
+
+ node_manager_->push_component_id_info (comp);
+}
+
+
+CIAO::Static_NodeApplicationManager_Impl::~Static_NodeApplicationManager_Impl (void)
+{
+}
+
+CIAO::Static_NodeApplicationManager_Impl::
+Static_NodeApplicationManager_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps)
+ : NodeApplicationManager_Impl_Base (o, p),
+ static_config_entrypoints_maps_ (static_config_entrypoints_maps)
+{
+}
+
+PortableServer::ObjectId
+CIAO::Static_NodeApplicationManager_Impl::init (
+ const char *nodeapp_location,
+ const char *nodeapp_op,
+ const CORBA::ULong delay,
+ const Deployment::DeploymentPlan & plan,
+ const PortableServer::POA_ptr callback_poa,
+ NodeManager_Impl_Base * nm)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty))
+{
+ PortableServer::ObjectId_var oid;
+
+ ACE_UNUSED_ARG (nodeapp_location);
+ ACE_UNUSED_ARG (nodeapp_op);
+ ACE_UNUSED_ARG (delay);
+ ACE_UNUSED_ARG (callback_poa);
+
+ try
+ {
+ this->node_manager_ = nm;
+
+ // Make a copy of the plan for later usage.
+ this->plan_ = plan;
+
+ // Activate the ourself.
+ oid = this->poa_->activate_object (this);
+
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (oid.in ());
+
+ // And cache the object reference.
+ this->objref_ =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApplicationManager_Impl_Base::init\t\n");
+ throw;
+ }
+
+ //return this object reference
+ return oid.in ();
+}
+
+Deployment::NodeApplication_ptr
+CIAO::Static_NodeApplicationManager_Impl::
+create_node_application (const ACE_CString & options)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty))
+{
+ ACE_UNUSED_ARG(options);
+
+ CIAO::NodeApplication_Impl *nodeapp_servant;
+
+ ACE_DEBUG ((LM_DEBUG, "create_static_node_application\n"));
+
+ ACE_NEW_RETURN (nodeapp_servant,
+ CIAO::NodeApplication_Impl (orb_.in (),
+ poa_.in (),
+ configurator_,
+ this->static_config_entrypoints_maps_),
+ Deployment::NodeApplication::_nil ()
+ );
+ if (nodeapp_servant->init ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "NodeApplication Failed on creating and\
+ initializing the session container!"));
+ return Deployment::NodeApplication::_nil ();
+ }
+
+ // CONFIGURING NodeApplication
+ PortableServer::ObjectId_var nodeapp_oid
+ = poa_->activate_object (nodeapp_servant);
+
+ CORBA::Object_var
+ obj = poa_->id_to_reference (nodeapp_oid.in ());
+
+ Deployment::NodeApplication_var nodeapp_obj =
+ Deployment::NodeApplication::_narrow (obj.in ());
+
+ if (CORBA::is_nil (nodeapp_obj.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to activate NodeApplication object\n"));
+ return Deployment::NodeApplication::_nil ();
+ }
+
+ this->nodeapp_ = Deployment::NodeApplication::_duplicate (nodeapp_obj.in ());
+
+ return nodeapp_obj._retn ();
+}
+
+CIAO::NodeApplicationManager_Impl_Base::~NodeApplicationManager_Impl_Base (void)
+{
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
new file mode 100644
index 00000000000..5ea55596f1b
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h
@@ -0,0 +1,404 @@
+// $Id$
+
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file NodeApplicationManager_Impl.h
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ *
+ * This file contains implementation for the servant of
+ * Deployment::NodeApplicationManager.
+ */
+//=============================================================================
+
+
+#ifndef CIAO_NODEAPPLICATIONMANAGER_IMPL_H
+#define CIAO_NODEAPPLICATIONMANAGER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/SString.h"
+#include "ace/Hash_Map_Manager_T.h"
+#include "ace/OS_NS_sys_wait.h"
+#include "ace/Process_Manager.h"
+#include "ciao/NodeApp_CB_Impl.h"
+#include "ciao/Deployment_NodeApplicationManagerS.h"
+#include "ciao/CIAO_common.h"
+#include "CIAO_NAM_Export.h"
+#include "ImplementationInfo.h"
+#include "NodeManager/NodeManager_Impl.h"
+#include "NodeApplication/NodeApplication_Core.h"
+
+namespace CIAO
+{
+
+ /**
+ * @class NodeApplicationManager_Impl_Base
+ */
+ class CIAO_NAM_Export NodeApplicationManager_Impl_Base
+ : public virtual POA_Deployment::NodeApplicationManager
+ {
+ public:
+ /// Constructor
+ NodeApplicationManager_Impl_Base (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p);
+
+ /*===========================================================
+ * Below are operations from the NodeApplicationManager
+ *
+ *============================================================*/
+
+ /// The return type is NodeApplication_ptr actually.
+ /// For "external/shared" components of this child plan, they are
+ /// not actaully installed, however, the object references
+ /// of the ports of these external components are returned
+ /// through <providedReference>.
+ virtual Deployment::Application_ptr
+ startLaunch (const Deployment::Properties & configProperty,
+ Deployment::Connections_out providedReference,
+ CORBA::Boolean start)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty));
+
+ //@@ Destroy the whole applicaton.
+ virtual void destroyApplication (Deployment::Application_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError));
+
+ virtual Deployment::Application_ptr
+ perform_redeployment (const Deployment::Properties & configProperty,
+ Deployment::Connections_out providedReference,
+ CORBA::Boolean add_or_remove,
+ CORBA::Boolean start)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty,
+ ::Components::RemoveFailure));
+
+ virtual void
+ reset_plan (const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ virtual void
+ set_shared_components (const Deployment::ComponentPlans & shared)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ /**
+ * A factory operation to create NodeApplicationManager interface, and return
+ * the object reference.
+ * Initialize the NodeApplicationManager. The current implementation
+ * of CIAO_NodeApplicationManager can only activate CIAO's own
+ * NodeApplication processes. You should specify the location
+ * (pathname) of the NodeApplication and the delay.
+ * CIAO_NodeApplicationManager should wait (in second) for NodeApplication to
+ * call back.
+ *
+ * @param nodeapp_location A null-termiated char * string pointing
+ * to the pathname of a NodeApplication executable.
+ *
+ * @param nodeapp_options A null-terminated char * string
+ * containing command line options to be passed to the
+ * NodeApplication.
+ *
+ * @param delay instructs how long (in second) a CIAO_NodeApplicationManager
+ * should wait for a newly spawned NodeApplication to pass back
+ * its IOR.
+ *
+ * @param plan has all the information needed for the NodeAppManager to
+ * construct the application locally. Note, this includes the properties
+ * of the NodeApplication. For example, ORB config options etc.
+ *
+ * @param callback_poa contains child poa created for the callback interface.
+ *
+ * @para nm Pointer to the NodeManager_Impl servant object
+ *
+ * @return NodeApplicationManager_ptr.
+ **/
+ virtual PortableServer::ObjectId
+ init (const char *nodeapp_location,
+ const char *nodeapp_options,
+ const CORBA::ULong delay,
+ const Deployment::DeploymentPlan & plan,
+ const PortableServer::POA_ptr callback_poa,
+ NodeManager_Impl_Base * nm)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty))=0;
+
+ /// @note This method doesn't do duplicate.
+ Deployment::NodeApplicationManager_ptr get_nodeapp_manager (void);
+
+ /// Set the priority of the NodeApplication process which this NAM manages
+ virtual ::CORBA::Long set_priority (
+ const char * cid,
+ const ::Deployment::Sched_Params & params)
+ ACE_THROW_SPEC ((CORBA::SystemException ));
+
+ protected:
+ /// Destructor
+ virtual ~NodeApplicationManager_Impl_Base (void);
+
+ /// Add new components
+ virtual void
+ add_new_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Deployment::InstallationFailure,
+ ::Deployment::UnknownImplId,
+ ::Deployment::ImplEntryPointNotFound,
+ ::Deployment::InvalidConnection,
+ ::Deployment::InvalidProperty));
+
+ /// Remove existing components
+ virtual void
+ remove_existing_components (void)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Deployment::PlanError,
+ ::Components::RemoveFailure));
+
+ /// Determine whether a component is absent in the new_plan
+ /// Return true if absent
+ virtual bool
+ is_to_be_removed (const char * name);
+
+ /// Internal help function to create new NodeApplicationProcess
+ virtual Deployment::NodeApplication_ptr
+ create_node_application (const ACE_CString & options)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty))=0;
+
+ /// Helper function to get the connection.
+ virtual Deployment::Connections *
+ create_connections ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty));
+
+ /**
+ * Find the configurations in the plan and prepare them to pass to the
+ * NodeApplication, from command line probably.
+ */
+ void parse_config_value (ACE_CString & str)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty));
+
+ /// Helper function to check wheather a component instance
+ /// is in the "shared components list".
+ bool is_shared_component (ACE_CString & name);
+
+ /// Helper function to check wheather a component instance
+ /// is in the "shared components list".
+ bool is_external_component (ACE_CString & name);
+
+ protected:
+ /// location of the Nodeapplication
+ ACE_CString nodeapp_path_;
+
+ /// Keep a pointer to the managing ORB serving this servant.
+ CORBA::ORB_var orb_;
+
+ /// Keep a pointer to the managing POA.
+ PortableServer::POA_var poa_;
+
+ /// Pointer to the NodeManager_Impl servant object
+ /// We could do this because NodeManager and NodeApplicationManager
+ /// are always collocated in the same process, so we don't have
+ /// to pass CORBA object reference back and forth.
+ NodeManager_Impl_Base * node_manager_;
+
+ /// ObjectRef of ourself which will be needed by the callback
+ Deployment::NodeApplicationManager_var objref_;
+
+ /// Child poa that uses active object map.
+ PortableServer::POA_var callback_poa_;
+
+ /// Cache a object reference of the underlying NodeApplication
+ /// Since I have decided to have only 1 NA in NAM so no map is needed.
+ Deployment::NodeApplication_var nodeapp_;
+
+ /// Cached plan (This should be the part of the whole plan local to this node)
+ /// The plan will be initialized when init is called.
+ Deployment::DeploymentPlan plan_;
+
+ /// Specify the time in second NodeApplicationManager will wait for a
+ /// child NodeApplication to callback. Default is 5 second.
+ CORBA::ULong spawn_delay_;
+
+ /// Extracted commandline options to pass to the NodeApplication.
+ CORBA::String_var nodeapp_command_op_;
+
+ /// A list of components shared across deployment plans
+ Deployment::ComponentPlans shared_components_;
+
+ /// A list of components that are "external" to this plan
+ Deployment::ComponentPlans external_components_;
+
+ /// A map of the component created on this node.
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ Components::CCMObject_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> CCMComponent_Map;
+ typedef CCMComponent_Map::iterator Component_Iterator;
+ CCMComponent_Map component_map_;
+
+ /// Synchronize access to the object set.
+ TAO_SYNCH_MUTEX lock_;
+
+ /// The Process Manager for this NodeApplicationManager
+ ACE_Process_Manager node_app_process_manager_;
+
+ /// The process id of the NA associated with the NAM,
+ /// Each NAM will only have one NA associated with it,
+ /// so we have only one process associated with it.
+
+ // this is UNIX specific .... not portable
+ pid_t process_id_;
+ };
+
+
+ /**
+ * @class NAM_Handler
+ * @brief The signal handler class for the SIGCHLD
+ * handling to avoid zombies
+ *
+ */
+ class NAM_Handler : public ACE_Event_Handler
+ {
+ public:
+ virtual int handle_signal (int sig,
+ siginfo_t *,
+ ucontext_t *)
+ {
+ ACE_UNUSED_ARG (sig);
+
+ // @@ Note that this code is not portable to all OS platforms
+ // since it uses print statements within signal handler context.
+ //ACE_DEBUG ((LM_DEBUG,
+ // "Executed ACE signal handler for signal %S \n",
+ // sig));
+
+ ACE_exitcode status;
+ // makes a claal to the underlying os system call
+ // -1 to wait for any child process
+ // and WNOHANG so that it retuurns immediately
+ ACE_OS::waitpid (-1 ,&status, WNOHANG, 0);
+
+ return 0;
+ }
+ };
+
+
+ /**
+ * @class NodeApplicationManager_Impl
+ */
+ class CIAO_NAM_Export NodeApplicationManager_Impl
+ : public virtual NodeApplicationManager_Impl_Base
+ {
+ public:
+ /// Constructor
+ NodeApplicationManager_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p);
+
+ virtual PortableServer::ObjectId
+ init (const char *nodeapp_location,
+ const char *nodeapp_options,
+ const CORBA::ULong delay,
+ const Deployment::DeploymentPlan & plan,
+ const PortableServer::POA_ptr callback_poa,
+ NodeManager_Impl_Base * nm)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty));
+
+ protected:
+ /// Destructor
+ virtual ~NodeApplicationManager_Impl (void);
+
+ // Internal help function to create new NodeApplicationProcess
+ // Here we override it to create an in-process NodeApplication object
+ virtual Deployment::NodeApplication_ptr
+ create_node_application (const ACE_CString & options)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty));
+
+
+ /**
+ * @operation push_component_info
+ * @brief pushes component info to the NodeManager
+ *
+ * @param process_id The id of the process of NodeApplication
+ */
+ void push_component_info (pid_t process_id);
+
+ /// The signal handler
+ NAM_Handler child_handler_;
+ };
+
+
+ struct Static_Config_EntryPoints_Maps;
+
+ /**
+ * @class Static_NodeApplicationManager_Impl
+ */
+ class CIAO_NAM_Export Static_NodeApplicationManager_Impl
+ : public virtual NodeApplicationManager_Impl_Base
+ {
+ public:
+ /// Constructor
+ Static_NodeApplicationManager_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps);
+
+ virtual PortableServer::ObjectId
+ init (const char *nodeapp_location,
+ const char *nodeapp_options,
+ const CORBA::ULong delay,
+ const Deployment::DeploymentPlan & plan,
+ const PortableServer::POA_ptr callback_poa,
+ NodeManager_Impl_Base * nm)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty));
+
+ protected:
+ /// Destructor
+ virtual ~Static_NodeApplicationManager_Impl (void);
+
+ /// Internal help function to create new NodeApplicationProcess
+ /// Here we override it to create an in-process NodeApplication object
+ virtual Deployment::NodeApplication_ptr
+ create_node_application (const ACE_CString & options)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::ResourceNotAvailable,
+ Deployment::StartError,
+ Deployment::InvalidProperty));
+
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps_;
+
+ CIAO::NoOp_Configurator configurator_;
+ };
+}
+
+#if defined (__ACE_INLINE__)
+# include "NodeApplicationManager_Impl.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_NODEAPPLICATIONMANAGER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl
new file mode 100644
index 00000000000..49bdc80098e
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.inl
@@ -0,0 +1,49 @@
+/* -*- C++ -*- */
+// $Id$
+
+ACE_INLINE
+CIAO::NodeApplicationManager_Impl_Base::
+NodeApplicationManager_Impl_Base (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p)
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ poa_ (PortableServer::POA::_duplicate (p)),
+ callback_poa_ (PortableServer::POA::_nil ()),
+ nodeapp_ (Deployment::NodeApplication::_nil ()),
+ spawn_delay_ (5)
+ // @@ (OO) The default size for an ACE_Hash_Map_Mapanger is quiet
+ // large. The maximum size of an ACE_Hash_Map_Manager is
+ // also fixed, i.e. it does not grow dynamically on demand.
+ // Make sure the default size of component_map_ is
+ // appropriate for your needs. You may also want to make
+ // the size configurable at compile-time, at least.
+{
+}
+
+ACE_INLINE
+void
+CIAO::NodeApplicationManager_Impl_Base::
+parse_config_value (ACE_CString & str)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::InvalidProperty))
+{
+ // The unused arg is for future improvemnts.
+ ACE_UNUSED_ARG (str);
+
+ throw CORBA::NO_IMPLEMENT();
+}
+
+ACE_INLINE
+Deployment::NodeApplicationManager_ptr
+CIAO::NodeApplicationManager_Impl_Base::get_nodeapp_manager (void)
+{
+ return this->objref_.in ();
+}
+
+ACE_INLINE void
+CIAO::NodeApplicationManager_Impl_Base::
+reset_plan (const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+{
+ this->plan_ = plan;
+}
+
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.cpp b/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.cpp
new file mode 100644
index 00000000000..5d211603614
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.cpp
@@ -0,0 +1,115 @@
+// $Id$
+
+#include "URL_Parser.h"
+
+#include "ace/ACE.h"
+#include "ace/OS_NS_string.h"
+
+bool
+URL_Parser::parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("rwu:h:p:f:d"));
+
+ bool success = true;
+ int c;
+
+ while ((c = get_opt ()) != -1)
+ {
+ switch (c)
+ {
+ case 'd':
+ this->debug_ = 1;
+ break;
+ case 'u':
+ success = parseURL (get_opt.opt_arg ());
+ break;
+ // Usage fallthrough.
+ default:
+ success = false;
+ break;
+ }
+ }
+
+ if (this->hostname_ == 0 || this->filename_ == 0)
+ {
+ success = false;
+ }
+
+ return success;
+}
+
+URL_Parser::URL_Parser (void)
+ : hostname_ (ACE::strnew ("127.0.0.1")),
+ port_ (ACE_DEFAULT_HTTP_SERVER_PORT),
+ filename_ (0),
+ debug_ (0)
+{
+}
+
+bool URL_Parser::parseURL (char* url)
+{
+ char* ptr = ACE_OS::strstr (url, "http://");
+ bool success = true;
+
+ if (0 != ptr)
+ {
+ url += ACE_OS::strlen ("http://");
+ }
+
+ if (url[0] == '/')
+ {
+ this->filename_ = ACE_OS::strdup (url);
+ }
+ else
+ {
+ ptr = ACE_OS::strstr (url, ":");
+
+ if (0 != ptr)
+ {
+ this->port_ = ACE_OS::atoi (ptr + 1);
+ }
+ else
+ {
+ ptr = ACE_OS::strstr (url, "/");
+ }
+
+ if (0 == ptr)
+ {
+ success = false;
+ }
+ else
+ {
+ size_t host_len = ptr - url;
+ ACE::strdelete (this->hostname_);
+ ACE_NEW_RETURN (this->hostname_, char [host_len + 1], false);
+ ACE_OS::strncpy (this->hostname_, url, host_len);
+ this->hostname_ [host_len] = '\0';
+ ptr = ACE_OS::strstr (ptr, "/");
+
+ if (0 != ptr)
+ {
+ this->filename_ = ACE_OS::strdup (ptr);
+ }
+ else
+ {
+ success = false;
+ }
+ }
+ }
+
+ return success;
+}
+
+
+void URL_Parser::Error (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "./http_client -u http://hostname:port/filename [-d]\n"));
+}
+
+
+URL_Parser::~URL_Parser (void)
+{
+ delete [] this->hostname_;
+ ACE_OS::free (this->filename_);
+}
diff --git a/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.h b/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.h
new file mode 100644
index 00000000000..0aec98cec65
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeApplicationManager/URL_Parser.h
@@ -0,0 +1,67 @@
+
+/* -*- C++ -*- */
+
+//=============================================================================
+/**
+ * @file URL_Parser.h
+ *
+ * $Id$
+ *
+ * Parses a URL into its logical chunks
+ *
+ * @author Stoyan Paunov
+ */
+//=============================================================================
+
+
+#ifndef URL_PARSER_H
+#define URL_PARSER_H
+
+#include "ace/Get_Opt.h"
+#include "ace/ARGV.h"
+#include "ace/Singleton.h" //for ACE_Singleton
+#include "ace/Null_Mutex.h" //for ACE_Null_Mutex
+
+//forward declaration
+class URL_Parser;
+
+typedef ACE_Singleton <URL_Parser, ACE_Null_Mutex> TheURL_Parser;
+
+
+class URL_Parser
+{
+public:
+
+ friend class ACE_Singleton <URL_Parser, ACE_Null_Mutex>;
+
+ /// Parses commandline arguments
+ bool parse_args (int argc, ACE_TCHAR *argv[]);
+
+ // Return false on failure
+ bool parseURL (char* url);
+
+ void Error (void);
+
+ /// Hostname to connect to
+ ACE_TCHAR *hostname_;
+
+ /// Port number to use
+ u_short port_;
+
+ /// Filename to upload/download
+ ACE_TCHAR *filename_;
+
+ /// turns on verbosity
+ int debug_;
+
+ /// Destructor
+ ~URL_Parser (void);
+
+protected:
+ /// protected constructor, singleton
+ URL_Parser (void);
+};
+
+
+
+#endif /* URL_PARSER_H */
diff --git a/modules/CIAO/DAnCE/NodeManager/BaseMonitor.h b/modules/CIAO/DAnCE/NodeManager/BaseMonitor.h
new file mode 100644
index 00000000000..d05e798b523
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/BaseMonitor.h
@@ -0,0 +1,63 @@
+// $Id$
+//----------------------------------------------------------------------------------
+/// Monitor Interface
+/*
+ * @file BaseMonitor.h
+ * @brief The BaseMonitor.h file.
+ * This is an abstract class containing the interface to the Monitor plug-in
+ *
+ * @author Nilabja R <nilabjar@dre.vanderbilt.edu>
+ */
+//----------------------------------------------------------------------------------
+
+#ifndef MONITOR_BASEH
+#define MONITOR_BASEH
+#include "tao/ORB.h"
+#include "ciao/Deployment_TargetManagerC.h"
+
+namespace CIAO
+{
+
+ class MonitorBase
+ {
+ public:
+ virtual ~MonitorBase () {};
+
+ /**
+ * This function is called by the controller to initialize
+ * parameters.
+ * @param domain The Initital domain for this host
+ * @param target_manager TargetManager_ptr
+ * @param interval The time interval after which updates need to be send.
+ */
+ virtual int initialize_params (
+ ::Deployment::Domain& domain,
+ ::Deployment::TargetManager_ptr target_manager,
+ int interval
+ )=0;
+ /**
+ * This function is called by the controller
+ * to start up the monitor.
+ * @param orb The ORB pointer
+ */
+ virtual int start (CORBA::ORB_ptr orb) = 0;
+ /**
+ * This function is called by the controller
+ * to stop the monitor.
+ */
+ virtual int stop ()=0;
+ /**
+ * This function is called by the controller
+ * to get the current data.
+ * @return The current Domain data
+ */
+ virtual ::Deployment::Domain* get_current_data ()=0;
+ };
+
+ extern "C" ACE_Proper_Export_Flag CIAO::MonitorBase *
+ createMonitor (void);
+
+} // CIAO
+
+
+#endif /* MONITOR_BASEH */
diff --git a/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.cpp b/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.cpp
new file mode 100644
index 00000000000..9d9417da520
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.cpp
@@ -0,0 +1,155 @@
+// $Id$
+//==========================================================================
+/// The RSS Monitor class defination
+/**
+ * @file CIAO_Monitor.cpp
+ *
+ * @brief The Monitor class defination
+ *
+ * @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+ */
+//==========================================================================
+
+#include "CIAO_Monitor.h"
+#include "CIAO_common.h"
+#include "ace/OS_NS_stdio.h"
+
+extern "C" ACE_Proper_Export_Flag CIAO::MonitorBase * CIAO::createMonitor ()
+{
+ CIAO::CIAO_Monitor* monitor = 0;
+ ACE_NEW_RETURN (monitor, CIAO::CIAO_Monitor, 0);
+ return monitor;
+}
+
+CIAO::CIAO_Monitor::CIAO_Monitor ()
+{
+}
+
+/// The Desctructor
+CIAO::CIAO_Monitor::~CIAO_Monitor ()
+{
+}
+
+int CIAO::CIAO_Monitor::initialize_params (
+ ::Deployment::Domain& domain,
+ ::Deployment::TargetManager_ptr target_manager,
+ int interval
+ )
+{
+ current_domain_.reset (new ::Deployment::Domain (domain));
+ target_ptr_= target_manager;
+ this->interval_=interval;
+
+ return 0;
+}
+
+int CIAO::CIAO_Monitor::start (CORBA::ORB_ptr)
+{
+ return 0;
+}
+
+int CIAO::CIAO_Monitor::stop ()
+{
+ return 0;
+}
+
+::Deployment::Domain* CIAO::CIAO_Monitor::get_current_data ()
+{
+ if (CIAO::debug_level () > 9)
+ {
+ // ACE_DEBUG ((LM_DEBUG ,
+ // "CIAO_Monitor::Inside the get_current_data of[%s]\n",
+ // current_domain_->node[0].name.in ()));
+ }
+
+ CORBA::Double current_load = 0;
+
+ long user_cpu;
+ long user_cpu_low;
+ long sys_cpu;
+ long idle_time;
+
+ // get the load average value from the /proc/loadavg
+
+ FILE *load_file = 0;
+
+ load_file = ACE_OS::fopen ("/proc/stat", "r");
+
+ if (load_file == 0)
+ {
+ // load file cannot be opened ..
+ current_load = 0;
+ }
+ else
+ {
+ char buffer [99];
+
+ // read in the cpu label
+ fscanf (load_file, "%s", buffer);
+
+ //read the user_cpu
+ fscanf (load_file, "%ld", &user_cpu);
+
+ //read the user cpu low priority
+ fscanf (load_file, "%ld", &user_cpu_low);
+
+ //read the system cpu
+ fscanf (load_file, "%ld", &sys_cpu);
+
+ //read the cpu in idle time ..
+ fscanf (load_file, "%ld", &idle_time);
+
+ ACE_OS::fclose (load_file);
+
+ // Calculate the percent CPU
+ long const current_user_cpu = user_cpu - prev_user_cpu_;
+ long const total_cpu_usage = user_cpu + user_cpu_low + sys_cpu +
+ idle_time - prev_user_cpu_ - prev_idle_time_ - prev_sys_cpu_
+ - prev_user_cpu_low_;
+
+ current_load = (current_user_cpu * 100)/total_cpu_usage;
+
+ // Save the current cpu values in the previous variables
+
+ prev_user_cpu_ = user_cpu;
+
+ prev_user_cpu_low_ = user_cpu_low;
+
+ prev_sys_cpu_ = sys_cpu;
+
+ prev_idle_time_ = idle_time;
+
+ }
+
+
+ CORBA::Any any;
+ any <<= current_load;
+
+ // here insert the util value, in the right position
+
+ for (unsigned int i = 0;
+ i < current_domain_->node[0].resource.length ();
+ i++)
+ {
+ if (!ACE_OS::strcmp (current_domain_->node[0].resource[i].name, "Processor"))
+ {
+ for (unsigned int j = 0;
+ j < current_domain_->node[0].resource[i].property.length ();
+ j++)
+ {
+ if (!ACE_OS::strcmp (
+ current_domain_
+ ->node[0].resource[i].property[j].name.in (),
+ "LoadAverage"))
+ {
+ current_domain_->node[0].resource[i].property[j].kind =
+ ::Deployment::Quantity;
+ current_domain_->node[0].resource[i].property[j].value =
+ any;
+ }
+ }
+ }
+ }
+
+ return current_domain_.get ();
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.h b/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.h
new file mode 100644
index 00000000000..5a134538701
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/CIAO_Monitor.h
@@ -0,0 +1,107 @@
+// $Id$
+//==========================================================================
+/**
+ * @file CIAO_Monitor.h
+ *
+ * @brief The Monitor class.
+ *
+ * This class periodically records the loadavg value of the machine in which it
+ * loaded
+ *
+ * @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+ */
+//==========================================================================
+
+
+#ifndef CIAO_MONITORH
+#define CIAO_MONITORH
+
+#include "BaseMonitor.h"
+#include "ace/Auto_Ptr.h"
+
+/**
+ * @namespace CIAO
+ *
+ * @brief The top level CIAO namespace
+ *
+ */
+namespace CIAO
+{
+ class ReceiverThread;
+
+ /**
+ * @class CIAO_Monitor
+ *
+ * @brief The Monitor class
+ *
+ */
+ class CIAO_Monitor : public MonitorBase
+ {
+ public:
+
+ /** @function Constructor
+ */
+ CIAO_Monitor ();
+
+ /**
+ * This function is called by the controller to initialize
+ * parameters.
+ * @param domain The Initial Domain for this host
+ * @param target_manager TargetManager_ptr
+ * @param interval The time interval after whic updates need to be send.
+ */
+ virtual int initialize_params (
+ ::Deployment::Domain& domain,
+ ::Deployment::TargetManager_ptr target_manager,
+ int interval
+ );
+ /**
+ * Destructor
+ */
+ virtual ~CIAO_Monitor ();
+
+ /**
+ * This method will starts up the Monitor in this case,
+ * @param orb The orb needed for resolving.
+ * @return -1 on error
+ */
+ int start (CORBA::ORB_ptr orb);
+
+ /**
+ * This method will stop the Monitor in this case
+ * @return -1 on error
+ */
+ int stop ();
+
+ /**
+ * This function retrieves the current Domain data
+ * @return -1 on error
+ */
+ ::Deployment::Domain* get_current_data ();
+
+ protected:
+
+ /// The TargetManager Object to be sent to the RSSSubscriber ..
+ ::Deployment::TargetManager_ptr target_ptr_;
+
+ /// The interval after which update is to be returned.
+ int interval_;
+
+ /// The Domain data structure
+ auto_ptr <Deployment::Domain> current_domain_;
+
+ /// The previous user cpu
+ long prev_user_cpu_;
+
+ /// The previous user cpu low priority
+ long prev_user_cpu_low_;
+
+ /// The previous system cpu
+ long prev_sys_cpu_;
+
+ /// The previous idle time
+ long prev_idle_time_;
+ };
+
+} // CIAO
+#endif /* CIAO_MONITORH */
diff --git a/modules/CIAO/DAnCE/NodeManager/Monitor.mpc b/modules/CIAO/DAnCE/NodeManager/Monitor.mpc
new file mode 100644
index 00000000000..9ccc91f0025
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/Monitor.mpc
@@ -0,0 +1,28 @@
+// $Id$
+
+
+// MPC file for the Monitor
+
+project(*monitorlib): ciao_client_dnc, ciao_events_base_dnc {
+ after += CIAO_TargetManager_stub
+ includes += $(CIAO_ROOT)/DAnCE/TargetManager
+ sharedname = ciaomonlib
+
+ libs += TargetManager_stub CIAO_Deployment_stub NodeManager_stub
+
+ IDL_Files {
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+
+ Template_Files {
+ }
+
+ Source_Files {
+ CIAO_Monitor.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/MonitorCB.cpp b/modules/CIAO/DAnCE/NodeManager/MonitorCB.cpp
new file mode 100644
index 00000000000..56a789a76a3
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/MonitorCB.cpp
@@ -0,0 +1,59 @@
+// $Id$
+//----------------------------------------------------------------------------------
+/**
+ * @file MonitorCB.cpp
+ *
+ * @brief The Monitor Update class
+ *
+ * The class which updates the resource data
+ *
+ * @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+ */
+//----------------------------------------------------------------------------------
+
+#include "MonitorCB.h"
+#include "CIAO_common.h"
+
+
+CIAO::MonitorCB::MonitorCB (
+ CORBA::ORB_ptr orb,
+ Deployment::TargetManager_ptr target,
+ int interval) :
+ orb_ (orb),
+ target_mgr_ (target),
+ interval_ (interval)
+{
+}
+
+int CIAO::MonitorCB::update_data (::Deployment::Domain& data)
+{
+ CORBA::StringSeq elements;
+ elements.length (0);
+
+ // data to be updated ...
+ ::Deployment::DomainUpdateKind update_kind
+ = ::Deployment::UpdateAvailable;
+
+ // The copy of the domain variable
+ ::Deployment::Domain_var domain
+ = new ::Deployment::Domain (data);
+
+ try
+ {
+ if (CIAO::debug_level () > 20)
+ {
+ ACE_DEBUG ((LM_DEBUG , "CIAO::NM::MonitorCB::Making a call to update\n"));
+ }
+ target_mgr_->updateDomain (elements , domain , update_kind);
+ }
+ catch (CORBA::Exception& )
+ {
+ //ACE_DEBUG ((LM_DEBUG, "CIAO::NM::MonitorCB::Unknown Exception\n"));
+ //ex._tao_print_exception ("NM::MonitorCB::updateDomain");
+ }
+ catch (...)
+ {
+ // ignore
+ }
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/MonitorCB.h b/modules/CIAO/DAnCE/NodeManager/MonitorCB.h
new file mode 100644
index 00000000000..777625bc9e0
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/MonitorCB.h
@@ -0,0 +1,73 @@
+// $Id$
+//==============================================================
+/**
+ * @file MonitorCB.h
+ *
+ * @brief The Monitor Callback Function
+ *
+ * This class updates data back to the Target Manager
+ *
+ * @author Nilabja Roy <nilabjar.vanderbilt.edu>
+*/
+//==============================================================
+
+#ifndef MONITOR_CBH
+#define MONITOR_CBH
+
+#include "ciao/Deployment_TargetManagerC.h"
+
+/**
+ * @namespace CIAO
+ *
+ * @brief The top level CIAO namespace
+ *
+ */
+
+namespace CIAO
+{
+ /**
+ * @class MonitorCB
+ *
+ * @brief Updates data back to the TM.
+ *
+ */
+
+ class MonitorCB
+ {
+ public:
+ /**
+ * @param orb The ORB pointer
+ * @param target The TargetManager reference
+ * @param interval The time interval to sent update
+ */
+ MonitorCB (CORBA::ORB_ptr orb, Deployment::TargetManager_ptr target, int interval);
+ /**
+ * This function is called by the monitor to
+ * update Domain data, which is then sent to
+ * TM.
+ * @param data Contains the updated Domain data
+ * @return int indicates success.
+ * @todo Check return value, seems not used at this moment
+ */
+ int update_data (::Deployment::Domain& data);
+ private:
+ /// The ORB pointer
+ /// @todo Make this a _var
+ CORBA::ORB_ptr orb_;
+
+ /// The Target Manager pointer to send back the
+ /// update
+ /// @todo Make this a _var
+ ::Deployment::TargetManager_ptr target_mgr_;
+
+ /// The interval after which updates need to be send
+ int interval_;
+
+ };
+
+ /// The Callback function pointer
+ typedef int (MonitorCB::*CallBack) (::Deployment::Domain &);
+
+} // CIAO namespace
+
+#endif /* MONITOR_CBH */
diff --git a/modules/CIAO/DAnCE/NodeManager/MonitorController.cpp b/modules/CIAO/DAnCE/NodeManager/MonitorController.cpp
new file mode 100644
index 00000000000..76bd148613b
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/MonitorController.cpp
@@ -0,0 +1,234 @@
+// $Id$
+
+//----------------------------------------------------------------------------------
+/**
+ * @file MonitorController.cpp
+ *
+ * @brief The Monitor Controller implementation.
+ *
+ * This is the facade class for Monitor
+ *
+ * @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+ */
+//----------------------------------------------------------------------------------
+
+#include "MonitorController.h"
+#include "BaseMonitor.h"
+#include "MonitorCB.h"
+#include "CIAO_common.h"
+
+#include "ace/Log_Msg.h"
+#include "ace/DLL.h"
+#include "ace/SString.h"
+
+#include "NodeManager_Impl.h"
+
+namespace CIAO
+{
+ typedef MonitorBase* (*MonitorFactory) (void);
+
+ /// for the CIAO monitor
+ const char* monitor_lib_name = "ciaomonlib";
+
+ // The interval after which update will be sent.
+ // This value will sent by the EM in the later implementation
+ const int interval = 10;
+
+ static const char* factory_func = "createMonitor";
+}
+
+CIAO::MonitorController::MonitorController (
+ ::CORBA::ORB_ptr orb,
+ ::Deployment::Domain& domain,
+ ::Deployment::TargetManager_ptr target,
+ ::CIAO::NodeManager_Impl_Base* node_mgr
+ )
+ : target_facet_i_ (::Deployment::TargetManager::_duplicate (target)),
+ terminate_flag_ (0),
+ orb_ (orb),
+ initial_domain_ (domain),
+ node_mgr_ (node_mgr),
+ monitor_cpu_usage_ (false),
+ add_component_pid_ (true)
+{
+}
+
+int
+CIAO::MonitorController::svc (void)
+{
+ // @todo. Investigate whether we can't use the reactor with a timer
+ // eventhandler for this monitor controller, would safe us a thread
+ ACE_DLL dll;
+
+ // Forming the library name.
+ ACE_CString lib_name = ACE_DLL_PREFIX;
+ lib_name += monitor_lib_name;
+ int retval = dll.open (lib_name.c_str ());
+
+ if (retval != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p",
+ "dll.open"),
+ -1);
+ }
+
+ // Cast the void* to non-pointer type first - it's not legal to
+ // cast a pointer-to-object directly to a pointer-to-function.
+ void *void_ptr = dll.symbol (factory_func);
+ ptrdiff_t tmp = reinterpret_cast<ptrdiff_t> (void_ptr);
+ MonitorFactory factory = reinterpret_cast<MonitorFactory> (tmp);
+
+ if (factory == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%p",
+ "dll.symbol"),
+ -1);
+ }
+
+ {
+ ACE_TRACE ((LM_DEBUG, "Inside the init call\n"));
+
+ // Creating the monitor object.
+ monitor_.reset ((MonitorBase*) factory ());
+ monitor_->initialize_params (initial_domain_,
+ target_facet_i_.in (),
+ interval);
+
+
+ // Start the Monitor.
+ monitor_->start (orb_);
+ auto_ptr <CIAO::MonitorCB> monitor_callback (new CIAO::MonitorCB (orb_,
+ target_facet_i_.in (),
+ interval));
+
+ // check if cpu needs to be monitored or not
+ for (unsigned int i = 0;i < initial_domain_.node[0].resource.length ();i++)
+ {
+ if (!strcmp (initial_domain_.node[0].resource[i].name, "Processor"))
+ monitor_cpu_usage_ = true;
+ }
+
+ // Wait for system to stabilize itself
+ ACE_OS::sleep (interval);
+
+ // The loop in which UpdateData is called
+ while (!terminating ())
+ {
+
+ //ACE_DEBUG ((LM_DEBUG , "=The Terminate is %d\n", terminate_flag_));
+
+
+ // if monitoring of cpu is enable , monitor , else dont do
+ // anything
+ ::Deployment::Domain* domain = 0;
+
+ if (monitor_cpu_usage_)
+ domain = monitor_->get_current_data ();
+ else
+ domain = &initial_domain_;
+
+ // ****** add component data *******************
+
+ NodeManager_Impl_Base::Component_Ids cids =
+ node_mgr_->get_component_detail ();
+
+ // Here save the old resource length
+ int counter = domain->node[0].resource.length ();
+
+ // if pid is already added , dont add
+ if (add_component_pid_)
+ {
+ // then add more resource element to the
+ // domain structure
+ // ACE_DEBUG ((LM_DEBUG , "Going to add CID/PID data\n"));
+ int new_res_size = domain->node[0].resource.length () +
+ cids.cid_seq_.size ();
+
+ domain->node[0].resource.length (new_res_size);
+
+ ACE_Unbounded_Set_Iterator<ACE_CString> iter (cids.cid_seq_);
+
+ for (iter = cids.cid_seq_.begin ();
+ iter != cids.cid_seq_.end ();
+ iter++,counter++)
+ {
+ domain->node[0].resource[counter].name =
+ CORBA::string_dup ("Component");
+ domain->node[0].resource[counter].resourceType.length (0);
+
+ // Have one property for now
+ domain->node[0].resource[counter].property.length (1);
+ domain->node[0].resource[counter].property[0].name =
+ CORBA::string_dup ((*iter).c_str ());
+ domain->node[0].resource[counter].property[0].kind =
+ ::Deployment::Quantity;
+ domain->node[0].resource[counter].property[0].dynamic =
+ 0;
+ domain->node[0].resource[counter].property[0].value <<=
+ CORBA::Long (cids.process_id_);
+
+ // ACE_DEBUG ((LM_DEBUG , "The process id is [%d]\n",
+ // CORBA::Long (cids.process_id_)));
+ }
+ // set the add_component_pid_ to 0
+ add_component_pid_ = false;
+ }
+
+ //******add compoennt data
+
+ monitor_callback->update_data (*domain);
+
+ // data will be updated in intervals of 10 secs.
+ // in the latest version of spec , this value will
+ // come from Execution Manager
+ ACE_OS::sleep (interval);
+
+ }
+
+ monitor_->stop ();
+ }
+
+ // here delete the monitor object before
+ // unloading the library
+ monitor_.reset ();
+
+ // unload the library
+ dll.close ();
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "CIAO::Monitor::Terminating Monitor\n"));
+ }
+
+ return 0;
+}
+
+CIAO::MonitorController::~MonitorController ()
+{
+ terminate ();
+ wait ();
+}
+
+void
+CIAO::MonitorController::terminate ()
+{
+ // make the terminate flag false
+ ACE_GUARD (ACE_SYNCH_MUTEX,
+ guard,
+ lock_);
+
+ terminate_flag_ = true;
+}
+
+bool
+CIAO::MonitorController::terminating ()
+{
+ ACE_GUARD_RETURN (ACE_SYNCH_MUTEX,
+ guard,
+ lock_,
+ 0);
+
+ return terminate_flag_;
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/MonitorController.h b/modules/CIAO/DAnCE/NodeManager/MonitorController.h
new file mode 100644
index 00000000000..4da2dfb322f
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/MonitorController.h
@@ -0,0 +1,123 @@
+// $Id$
+
+//---------------------------------------------------------------------------------
+/**
+ * @file MonitorController.h
+ *
+ * @brief The Monitor Controller class.
+ *
+ * This class is invoked by the Nodemanager object and it
+ * in turn loads the proper Monitor which is strategised.
+ *
+ * @author Nilabja Roy
+ */
+//----------------------------------------------------------------------------------
+#ifndef MONITOR_CONTROLLER_H
+#define MONITOR_CONTROLLER_H
+
+#include "NodeManager_svnt_export.h"
+#include "Deployment_BaseC.h"
+
+#include "TargetManager/TargetManagerImplC.h"
+#include "ace/Task.h"
+#include "ace/Auto_Ptr.h"
+
+#include "ace/Synch_Traits.h"
+#include "ace/Synch.h"
+
+
+/**
+ * @namespace CIAO
+ *
+ * @brief The top level CIAO namespace
+ *
+ */
+
+namespace CIAO
+{
+
+ class MonitorBase;
+
+ class NodeManager_Impl_Base;
+
+ /**
+ * @class MonitorController
+ *
+ * @brief The Controller class
+ *
+ * Acts as a facade to the Monitor
+ * module
+ *
+ */
+ class NodeManager_svnt_Export MonitorController : public ACE_Task_Base
+ {
+ public:
+ /**
+ * @brief The main function containing the
+ * entire activity.
+ *
+ * This function runs in the context of the
+ * thread
+ * @return int The status of the function
+ */
+ int svc (void);
+ /**
+ * @brief The terminate function
+ *
+ * This function is called to terminate the
+ * thread
+ */
+ void terminate ();
+
+
+ /// The Constructor.
+ MonitorController (CORBA::ORB_ptr orb,
+ ::Deployment::Domain& domain,
+ ::Deployment::TargetManager_ptr target,
+ ::CIAO::NodeManager_Impl_Base* node_mgr
+ );
+
+ ~MonitorController ();
+ protected:
+
+ /**
+ * @brief returns the terminating flag
+ * @return bool The terminating state of the thread
+ */
+ bool terminating ();
+
+ /// The monitor object
+ auto_ptr <MonitorBase> monitor_;
+
+ /// The TargetManagerImpl object
+ CIAO::TargetManagerImpl_var target_impl_cmp_;
+
+ /// The TargetManager Facet ....
+ Deployment::TargetManager_var target_facet_i_;
+
+ /// The terminate flag_
+ bool terminate_flag_;
+
+ /// Thread Mutex for synchronizing call
+ ACE_SYNCH_MUTEX lock_;
+
+ /// the ORB pointer ..
+ /// @todo Make this a _var
+ CORBA::ORB_ptr orb_;
+
+ /// The initial domain
+ ::Deployment::Domain initial_domain_;
+
+ /// The Node Manager
+ ::CIAO::NodeManager_Impl_Base* node_mgr_;
+
+ /// Flag tells ; what to monitor
+ bool monitor_cpu_usage_;
+
+ /// To add component pid or not ..
+ bool add_component_pid_;
+ };
+
+} // CIAO
+
+#endif
diff --git a/modules/CIAO/DAnCE/NodeManager/NAM_Map.cpp b/modules/CIAO/DAnCE/NodeManager/NAM_Map.cpp
new file mode 100644
index 00000000000..f3aebb307a2
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/NAM_Map.cpp
@@ -0,0 +1,52 @@
+// $Id$
+#include "NAM_Map.h"
+#include "ciao/CIAO_Config.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ NAM_Map::NAM_Map (void)
+ : map_ (CIAO_DEFAULT_MAP_SIZE)
+ {
+ }
+
+ bool
+ NAM_Map::is_available (const ACE_CString &str) const
+ {
+ if (this->map_.find (str) == 0)
+ return true;
+
+ return false;
+ }
+
+ bool
+ NAM_Map::insert_nam (const ACE_CString &str,
+ const PortableServer::ObjectId &oid)
+ {
+ return (this->map_.bind (str, oid) == 0);
+ }
+
+ ::PortableServer::ObjectId
+ NAM_Map::get_nam (const ACE_CString &str)
+ {
+ MAP::ENTRY *entry = 0;
+
+ if (this->map_.find (str, entry) != 0)
+ return ::PortableServer::ObjectId ();
+
+ return entry->int_id_.in ();
+ }
+
+ bool
+ NAM_Map::remove_nam (const PortableServer::ObjectId &oid)
+ {
+ for (Iterator i = this->map_.begin ();
+ i != this->map_.end ();
+ ++i)
+ {
+ if ((*i).int_id_.in() == oid)
+ return this->map_.unbind ((*i).ext_id_) == 0;
+ }
+ return false;
+ }
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/NAM_Map.h b/modules/CIAO/DAnCE/NodeManager/NAM_Map.h
new file mode 100644
index 00000000000..4b398d51927
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/NAM_Map.h
@@ -0,0 +1,72 @@
+ /**
+ * @file NAM_Map.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Map of NodeApplicationManagers, inspired by the DAM_Map
+ * class.
+ *
+ * $Id$
+ */
+
+#ifndef CIAO_NAM_MAP_H
+#define CIAO_NAM_MAP_H
+
+#include /**/ "ace/pre.h"
+
+#include "tao/PortableServer/PortableServer.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Null_Mutex.h"
+#include "ace/Hash_Map_Manager.h"
+#include "ace/SString.h"
+
+namespace CIAO
+{
+ /**
+ * @class NAM_Map
+ * @brief Implementation of a map of NodeApplicationManagers.
+ *
+ * This table is used by the NodeManager to keep track of
+ * NAMs started for multiple assemblies.
+ */
+ class NAM_Map
+ {
+ public:
+ /// Constructor
+ NAM_Map (void);
+
+ /// Determine if there is a NAM associated with a UUID
+ bool is_available (const ACE_CString &str) const;
+
+ /// Insert a NAM OID into the collection
+ bool insert_nam (const ACE_CString &str,
+ const PortableServer::ObjectId &oid);
+
+ /// Get a specified NAM.
+ ::PortableServer::ObjectId
+ get_nam (const ACE_CString &str);
+
+ /// Remove a nam from the map, given its oid.
+ bool remove_nam (const PortableServer::ObjectId &oid);
+
+ private:
+ typedef
+ ACE_Hash_Map_Manager_Ex <ACE_CString,
+ ::PortableServer::ObjectId_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> MAP;
+
+ typedef MAP::iterator Iterator;
+
+ MAP map_;
+
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /*CIAO_NAM_MAP_H*/
diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc b/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc
new file mode 100644
index 00000000000..e58cc2d27d4
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/NodeManager.mpc
@@ -0,0 +1,33 @@
+// -*- MPC -*-
+// $Id$
+
+//For static D&C, the NodeManager should be available as a linkable library
+project(NodeManager_svnt): ciao_component_dnc, ciao_deployment_svnt, iortable, ifr_client, dance_extension_stub, ciao_server_dnc, ciao_nodeapplicationmanager, ciao_nodemanager_stub {
+ sharedname = NodeManager
+ dynamicflags = NODEMANAGER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ ../Interfaces/NodeManagerDaemonS.cpp
+ NodeManager_Impl.cpp
+ NAM_Map.cpp
+ MonitorController.cpp
+ MonitorCB.cpp
+ }
+}
+
+project(NodeManager): ciao_server_dnc, iortable, ifr_client, dance_extension_stub, ciao_nodeapplicationmanager, ciao_targetmanager_stub, ciao_nodemanager_stub {
+ after += NodeManager_svnt
+ libs += NodeManager
+ exename = NodeManager
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Node_Manager.cpp
+ }
+}
+
diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp
new file mode 100644
index 00000000000..5e8fea451cd
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.cpp
@@ -0,0 +1,698 @@
+// $Id$
+
+#include "NodeManager_Impl.h"
+#include "DAnCE/NodeApplicationManager/NodeApplicationManager_Impl.h"
+#include "ace/Log_Msg.h"
+
+CIAO::NodeManager_Impl_Base::NodeManager_Impl_Base (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * nodeapp_loc,
+ const char * nodeapp_options,
+ int spawn_delay)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ : orb_ (CORBA::ORB::_duplicate (orb)),
+ poa_ (PortableServer::POA::_duplicate (poa)),
+ name_ (CORBA::string_dup (name)),
+ nodeapp_location_ (CORBA::string_dup (nodeapp_loc)),
+ nodeapp_options_ (CORBA::string_dup (nodeapp_options)),
+ callback_poa_ (PortableServer::POA::_nil ()),
+ spawn_delay_ (spawn_delay)
+{
+}
+
+CIAO::NodeManager_Impl_Base::~NodeManager_Impl_Base ()
+{
+}
+
+void
+CIAO::NodeManager_Impl_Base::init ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ try
+ {
+ // Create the call back poa for NAM.
+ PortableServer::POAManager_var mgr
+ = this->poa_->the_POAManager ();
+
+ this->callback_poa_ =
+ this->poa_->create_POA ("callback_poa",
+ mgr.in (),
+ 0);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeManager_Impl::init\t\n");
+ throw;
+ }
+}
+
+PortableServer::POA_ptr
+CIAO::NodeManager_Impl_Base::_default_POA (void)
+{
+ return PortableServer::POA::_duplicate (this->poa_.in ());
+}
+
+
+char *
+CIAO::NodeManager_Impl_Base::name ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->name_.in ());
+}
+
+void
+CIAO::NodeManager_Impl_Base::shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ this->orb_->shutdown (0);
+}
+
+void
+CIAO::NodeManager_Impl_Base::joinDomain (const Deployment::Domain & domain,
+ Deployment::TargetManager_ptr target,
+ Deployment::Logger_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // ACE_THROW (CORBA::NO_IMPLEMENT ());
+ // Here start the Monitor
+ CIAO_TRACE("CIAO::NodeManager_Impl_Base::joinDomain");
+
+ ::Deployment::Domain this_domain = domain;
+
+ monitor_controller_.reset (
+ new MonitorController (orb_.in (),
+ this_domain,
+ target,
+ this));
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "Before Activate\n"));
+ }
+
+ // Activate the Monitor Controller to
+ // start the monitoring
+ monitor_controller_->activate ();
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "Monitor Activated\n"));
+ }
+}
+
+void
+CIAO::NodeManager_Impl_Base::leaveDomain ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Delete the monitor , this will also terminate the thread
+ monitor_controller_.reset ();
+}
+
+CORBA::Long
+CIAO::NodeManager_Impl_Base::set_priority (
+ const char * plan_id,
+ const char * cid,
+ const ::Deployment::Sched_Params & nm_params
+ )
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+
+{
+ ACE_CString key (plan_id);
+ key += "@";
+ key += this->name_.in ();
+
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG , "Inside the set_priority\n"));
+ ACE_DEBUG ((LM_DEBUG , "pid = [%s] , cid = [%s]\n", key.c_str () , cid));
+ }
+
+ try {
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (this->map_.get_nam (key));
+
+ Deployment::NodeApplicationManager_var nam =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+
+ return nam->set_priority (cid, nm_params);
+ }
+ catch (CORBA::Exception& ex)
+ {
+
+ ex._tao_print_exception ("(%P|%t) NodeManager_Impl::set_priority ()\t\n");
+ throw;
+ }
+}
+
+::Components::FacetDescriptions *
+CIAO::NodeManager_Impl_Base::
+get_all_facets (ACE_CString & name)
+{
+ Component_Facets_Map::ENTRY *entry = 0;
+
+ if (this->comp_facets_map_.find (name.c_str (), entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) - NodeManager_Impl_Base::get_all_facets - "
+ "No component with name [%s] was found in the NodeManager\n", name.c_str ()));
+ }
+
+ CORBA::ULong const facet_len = entry->int_id_->length ();
+
+ Components::FacetDescriptions_var retv;
+ ACE_NEW_RETURN (retv,
+ Components::FacetDescriptions,
+ 0);
+
+ retv->length (facet_len);
+
+ for (CORBA::ULong i = 0; i < facet_len; ++i)
+ {
+ retv[i] = entry->int_id_[i];
+ }
+
+ return retv._retn ();
+}
+
+::Components::ConsumerDescriptions *
+CIAO::NodeManager_Impl_Base::
+get_all_consumers (ACE_CString & name)
+{
+ Component_Consumers_Map::ENTRY *entry = 0;
+
+ if (this->comp_consumers_map_.find (name.c_str (), entry) != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) - NodeManager_Impl_Base::get_all_facets - "
+ "Component [%s] was not found in the NodeManager\n", name.c_str ()));
+ }
+
+ CORBA::ULong const consumer_len = entry->int_id_->length ();
+
+ Components::ConsumerDescriptions_var retv;
+ ACE_NEW_RETURN (retv,
+ Components::ConsumerDescriptions,
+ 0);
+
+ retv->length (consumer_len);
+
+ for (CORBA::ULong i = 0; i < consumer_len; ++i)
+ {
+ retv[i] = entry->int_id_[i];
+ }
+
+ return retv._retn ();
+}
+
+void
+CIAO::NodeManager_Impl_Base::
+set_all_facets (ACE_CString &name,
+ const ::Components::FacetDescriptions_var & facets)
+{
+ this->comp_facets_map_.rebind (name, facets);
+}
+
+void
+CIAO::NodeManager_Impl_Base::
+set_all_consumers (ACE_CString &name,
+ const ::Components::ConsumerDescriptions_var & consumers)
+{
+ this->comp_consumers_map_.rebind (name, consumers);
+}
+
+
+Deployment::NodeApplicationManager_ptr
+CIAO::NodeManager_Impl_Base::
+preparePlan (const Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::PlanError))
+{
+ CIAO_TRACE("CIAO::NodeManager_Impl::preparePlan");
+
+ if (! this->validate_plan (plan))
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) NodeManager <%s>:prepare_plan:Plan_Error.\n",
+ plan.instance[0].node.in ()));
+ ACE_ERROR ((LM_ERROR, "(%P|%t) All component instances hosted in the "
+ "same component server must have the "
+ "same \"resourceName\" defined.\n"));
+
+ ACE_THROW_RETURN (Deployment::PlanError (),
+ Deployment::NodeApplicationManager::_nil ());
+ }
+
+ // Update the reference count map based on the deployment plan input
+ for (CORBA::ULong i = 0; i < plan.instance.length (); ++i)
+ {
+ Reference_Count_Map::ENTRY *entry = 0;
+ if (this->ref_count_map_.find (plan.instance[i].name.in (), entry) != 0)
+ {
+ // Create a new entry, set the initial ref count "1", and insert to the map.
+ Ref_Count_Info new_entry;
+ new_entry.plan_uuid_ = plan.UUID.in ();
+ new_entry.count_ = 1;
+ this->ref_count_map_.bind (plan.instance[i].name.in (), new_entry);
+ }
+ else
+ {
+ // If the instance is within the same deployment plan, e.g.,
+ // when ReDaC service is used, then just do nothing since it is NOT
+ // actually a shared component at all.
+ if (ACE_OS::strcmp (plan.UUID.in (),
+ entry->int_id_.plan_uuid_.c_str ()) == 0)
+ continue;
+
+ // Otherwise, it is really a shared component, so let's increase
+ // the ref count by 1
+ this->shared_components_.insert (plan.instance[i].name.in ());
+ ++ entry->int_id_.count_;
+ }
+ }
+
+ // Create/find NodeApplicationManager and set/reset plan on it
+ try
+ {
+ if (!this->map_.is_available (plan.UUID.in ()))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NM:prepare_plan: "
+ "creating a new NAM with UUID: %s\n",
+ plan.UUID.in ()));
+ }
+
+ // Implementation undefined.
+ CIAO::NodeApplicationManager_Impl_Base *node_app_mgr =
+ this->create_node_app_manager (this->orb_.in (), this->poa_.in ());
+
+ PortableServer::ServantBase_var safe (node_app_mgr);
+
+ //@@ Note: after the init call the servant ref count would
+ // become 2. so we can leave the safeservant along and be
+ // dead. Also note that I added
+ PortableServer::ObjectId_var oid =
+ node_app_mgr->init (this->nodeapp_location_.in (),
+ this->nodeapp_options_.in (),
+ this->spawn_delay_,
+ plan,
+ this->callback_poa_.in (),
+ this // pass in a copy of ourself (servant object)
+ );
+
+ this->map_.insert_nam (plan.UUID.in (), oid.in ());
+
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (this->map_.get_nam (plan.UUID.in ()));
+
+ // We should inform NAM about "shared" components, so they
+ // won't be instantiated again
+ Deployment::NodeApplicationManager_var nam =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+
+ // Convert the ACE Set into CORBA sequence, and make the remote invocation
+ Deployment::ComponentPlans_var shared =
+ this->get_shared_components_i ();
+ nam->set_shared_components (shared.in ());
+
+ // narrow should return a nil reference if it fails.
+ return Deployment::NodeApplicationManager::_narrow (nam.in ());
+ }
+ else
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NM:prepare_plan: reusing an old NAM "
+ "with UUID: %s\n",
+ plan.UUID.in ()));
+ }
+
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (this->map_.get_nam (plan.UUID.in ()));
+
+ Deployment::NodeApplicationManager_var nam =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+
+ nam->reset_plan (plan);
+
+ // Similarly, we should inform NAM about "shared" components, so
+ // they won't be instantiated again
+ Deployment::ComponentPlans_var shared =
+ this->get_shared_components_i ();
+ nam->set_shared_components (shared.in ());
+
+ // Potentially we could reset many other configuration settings
+ // such as command line options, service configuration file, etc.
+ return nam._retn ();
+ }
+ }
+ catch (const PortableServer::POA::ObjectNotActive&)
+ {
+ ACE_THROW_RETURN (Deployment::StartError (),
+ Deployment::NodeApplicationManager::_nil ());
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("(%P|%t) NodeManager_Impl::preparePlan\t\n");
+ throw;
+ }
+
+ return Deployment::NodeApplicationManager::_nil ();
+}
+
+void
+CIAO::NodeManager_Impl_Base::destroyManager
+(Deployment::NodeApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError,
+ Deployment::InvalidReference))
+{
+ CIAO_TRACE("CIAO::NodeManager_Impl::destroyManager");
+ try
+ {
+ // Deactivate this object
+ PortableServer::ObjectId_var id =
+ this->poa_->reference_to_id (manager);
+
+ if (!this->map_.remove_nam (id.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "NodeManager_Impl::destroyManager: "
+ "Unable to remove object from map!\n"));
+ }
+
+ this->poa_->deactivate_object (id.in ());
+ }
+ catch (const PortableServer::POA::WrongAdapter&)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "NodeManager_Impl::destroyManager: EXCEPTION - "
+ "Invalid reference passed to destroyManager\n"));
+
+ throw ::Deployment::InvalidReference ();
+ }
+ catch (const PortableServer::POA::ObjectNotActive&)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "NodeManager_Impl::destroyManager: EXCEPTION - "
+ " asked to destroy an already inactive object.\n"));
+ throw ::Deployment::InvalidReference ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeManager_Impl::destroyManager\t\n");
+ throw;
+ }
+}
+
+void
+CIAO::NodeManager_Impl_Base::
+destroyPlan (const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StopError))
+{
+ // Update the reference counting map (subtract by 1 for each instance)
+ // If the ref count becomes 0, then remove this component, otherwise,
+ // we should remove the necesary bindings on this component specified
+ // in the deployment plan.
+
+ // Clean up the cached "Facets" and "Consumers" map of the components
+ // if their ref count become 0
+ CORBA::ULong const length = plan.instance.length ();
+ for (CORBA::ULong i = 0; i < length; ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NM_DP - forloop instance %s\n",
+ plan.instance[i].name.in ()));
+
+ Reference_Count_Map::ENTRY *entry = 0;
+ if (this->ref_count_map_.find (plan.instance[i].name.in (), entry) == 0)
+ {
+ --entry->int_id_.count_; // decrease ref count by 1
+
+ if (entry->int_id_.count_ == 0)
+ {
+ // Remove this component from the shared set
+ ACE_DEBUG ((LM_DEBUG, "\tremoving shared...\n"));
+ this->shared_components_.remove (plan.instance[i].name.in ());
+ ACE_DEBUG ((LM_DEBUG, "\tunbinding from the ref count map\n"));
+ // Unbind this component from the ref_count_map_
+ this->ref_count_map_.unbind (plan.instance[i].name.in ());
+
+ ACE_DEBUG ((LM_DEBUG, "\tunbinding from the facet/consumer maps\n"));
+ // Unbind this component from the facet/consumer maps
+ if (this->comp_facets_map_.unbind (
+ plan.instance[i].name.in ()) != 0 ||
+ this->comp_consumers_map_.unbind (
+ plan.instance[i].name.in ()) != 0)
+ {
+ throw
+ (Deployment::StopError ("NodeManager_Impl_Base::destroyPlan ",
+ "Unable to find component instance"));
+ }
+ }
+ }
+ }
+
+ // Find the NAM from the map and invoke the destroyPlan() operation on
+ // it, which will actuall remove components and connections in this plan.
+ // If
+ CORBA::Object_var obj =
+ this->poa_->id_to_reference (this->map_.get_nam (plan.UUID.in ()));
+
+ Deployment::NodeApplicationManager_var nam =
+ Deployment::NodeApplicationManager::_narrow (obj.in ());
+
+
+ // Reset each NAM about the shared components information
+ Deployment::ComponentPlans_var shared = this->get_shared_components_i ();
+ nam->set_shared_components (shared.in ());
+
+ nam->destroyApplication (0);
+
+ // @@ The problem is that we should NOT actually kill the NA process if
+ // there are some components that are shared by other plans.
+}
+
+Deployment::ComponentPlans *
+CIAO::NodeManager_Impl_Base::
+get_shared_components ()
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+{
+ return this->get_shared_components_i ();
+}
+
+Deployment::ComponentPlans *
+CIAO::NodeManager_Impl_Base::get_shared_components_i (void)
+{
+ Deployment::ComponentPlans_var retv;
+ ACE_NEW_RETURN (retv,
+ Deployment::ComponentPlans,
+ 0);
+ retv->length (0);
+
+ ACE_Unbounded_Set<ACE_CString>::iterator
+ end = this->shared_components_.end ();
+
+ for (ACE_Unbounded_Set<ACE_CString>::iterator
+ iter = this->shared_components_.begin ();
+ iter != end;
+ ++iter)
+ {
+ CORBA::ULong const curr_len = retv->length ();
+ retv->length (curr_len + 1);
+ (*retv)[curr_len].name = (*iter).c_str ();
+
+ // Fill in the plan_uuid information about this component, by
+ // searching in the ref_count_map_
+ Reference_Count_Map::ENTRY *entry = 0;
+ if (this->ref_count_map_.find ((*iter).c_str (), entry) == 0)
+ {
+ // Get the plan_uuid_ info and populate the field
+ (*retv)[curr_len].plan_uuid = entry->int_id_.plan_uuid_.c_str ();
+ }
+ else
+ {
+ // should never happen
+ ACE_ERROR ((LM_ERROR, "Component [%s] in the list of shared component, "
+ "was not found in the NodeManager ref count map.\n",
+ (*iter).c_str ()));
+ }
+ }
+
+ return retv._retn ();
+}
+
+
+CORBA::StringSeq *
+CIAO::NodeManager_Impl_Base::shared_components_seq (void)
+{
+ CORBA::StringSeq * retv = 0;
+ ACE_NEW_RETURN (retv, CORBA::StringSeq, 0);
+ retv->length (0);
+
+ // @todo rewrite to just set the length once and then copy the strings
+ // to reduce allocations
+
+ ACE_Unbounded_Set<ACE_CString>::iterator end = this->shared_components_.end ();
+ for (ACE_Unbounded_Set<ACE_CString>::iterator
+ iter = this->shared_components_.begin ();
+ iter != end;
+ ++iter)
+ {
+ CORBA::ULong const curr_len = retv->length ();
+ retv->length (curr_len + 1);
+ (*retv)[curr_len] = (*iter).c_str ();
+ }
+
+ return retv;
+}
+
+bool
+CIAO::NodeManager_Impl_Base::
+validate_plan (const Deployment::DeploymentPlan &plan)
+{
+ const char * resource_id = 0;
+ CORBA::ULong i = 0;
+
+ // Update the name of ourself
+ this->name_ = plan.instance[0].node.in ();
+
+ for (i = 0; i < plan.instance.length (); ++i)
+ {
+ if (plan.instance[i].deployedResource.length () != 0)
+ {
+ // Since the "name" field represents the server_resource_id, and
+ // the "resourceValue" field represents the policy_set_id, so we
+ // are checking to make sure that all component instances have
+ // the same server_resource_id.
+
+ resource_id =
+ plan.instance[i].deployedResource[0].resourceName.in ();
+ break;
+ }
+ }
+ if (i == plan.instance.length ()) // No server resource id has been set for any instance
+ return true;
+
+ for (i = 0; i < plan.instance.length (); ++i)
+ {
+ const char * my_resource_id = 0;
+ if (plan.instance[i].deployedResource.length () == 0)
+ {
+ continue;
+ }
+ else
+ {
+ my_resource_id =
+ plan.instance[i].deployedResource[0].resourceName.in ();;
+ if (ACE_OS::strcmp (resource_id, my_resource_id) != 0)
+ {
+ // Error, inconsistent server resource id found.
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+
+void CIAO::NodeManager_Impl_Base::
+push_component_id_info (Component_Ids comps)
+{
+ components_ = comps;
+}
+
+CIAO::NodeManager_Impl_Base::Component_Ids
+CIAO::NodeManager_Impl_Base::
+get_component_detail ()
+{
+ return components_;
+}
+
+CIAO::NodeManager_Impl::~NodeManager_Impl ()
+{
+}
+
+CIAO::NodeManager_Impl::
+NodeManager_Impl (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * nodeapp_loc,
+ const char * nodeapp_options,
+ int spawn_delay)
+ : NodeManager_Impl_Base (name, orb, poa, nodeapp_loc, nodeapp_options, spawn_delay)
+{}
+
+
+::CIAO::NodeApplicationManager_Impl_Base *
+CIAO::NodeManager_Impl::
+create_node_app_manager (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CIAO::NodeApplicationManager_Impl_Base *app_mgr = 0;
+ ACE_NEW_THROW_EX (app_mgr,
+ CIAO::NodeApplicationManager_Impl (orb,
+ poa),
+ CORBA::NO_MEMORY ());
+ return app_mgr;
+}
+
+CIAO::Static_NodeManager_Impl::~Static_NodeManager_Impl ()
+{
+}
+
+CIAO::Static_NodeManager_Impl::
+Static_NodeManager_Impl (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * nodeapp_loc,
+ const char * nodeapp_options,
+ int spawn_delay,
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps)
+ : NodeManager_Impl_Base (name, orb, poa, nodeapp_loc, nodeapp_options, spawn_delay),
+ static_config_entrypoints_maps_ (static_config_entrypoints_maps)
+{}
+
+::CIAO::NodeApplicationManager_Impl_Base *
+CIAO::Static_NodeManager_Impl::
+create_node_app_manager (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "creating static_node_app_manager\n"));
+ }
+
+ CIAO::NodeApplicationManager_Impl_Base *app_mgr = 0;
+ ACE_NEW_THROW_EX (app_mgr,
+ CIAO::Static_NodeApplicationManager_Impl (orb,
+ poa,
+ this->static_config_entrypoints_maps_),
+ CORBA::NO_MEMORY ());
+ return app_mgr;
+}
+
+void
+CIAO::Static_NodeManager_Impl::destroyManager
+(Deployment::NodeApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError,
+ Deployment::InvalidReference))
+{
+ CIAO_TRACE("CIAO::Static_NodeManager_Impl::destroyManager");
+ try
+ {
+ CIAO::NodeManager_Impl_Base::destroyManager (manager);
+
+ this->orb_->shutdown (0);
+
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Static_NodeManager_Impl::destroyManager\t\n");
+ throw;
+ }
+
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h
new file mode 100644
index 00000000000..cea98f0fa91
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/NodeManager_Impl.h
@@ -0,0 +1,341 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file NodeManager_Impl.h
+ *
+ * $Id$
+ *
+ * This file contains servant implementation for Deployment:NodeManager
+ * interface. In the current design of the NodeManager, each NodeManager
+ * could manage one or more NodeApplication Managers.
+ * Though, the name intuitively suggests
+ * that there be one NodeManager for every node, our design, allows
+ * the end-user to have multiple components run on the same node.
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_NODEMANAGER_IMPL_H
+#define CIAO_NODEMANAGER_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "Interfaces/NodeManagerDaemonS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if defined (_MSC_VER)
+# pragma warning(push)
+# pragma warning (disable:4250)
+#endif /* _MSC_VER */
+
+#include "NodeManager_svnt_export.h"
+#include "NAM_Map.h"
+#include "MonitorController.h"
+#include "ace/Vector_T.h"
+
+namespace CIAO
+{
+ class NodeApplicationManager_Impl_Base;
+
+ /**
+ * @class NodeManager_Impl
+ *
+ * @brief Servant implementation CIAO's daemon process control
+ * interface
+ *
+ * This class implements the CIAO:NodeManagerDaemon interface.
+ *
+ */
+ class NodeManager_svnt_Export NodeManager_Impl_Base
+ : public virtual POA_CIAO::NodeManagerDaemon
+ {
+ public:
+ /// A struct that tracks the reference count of a particular
+ /// component as well as the "child_plan_uuid" where the component is
+ /// actually installed
+ typedef struct _ref_count_info
+ {
+ ACE_CString plan_uuid_;
+ size_t count_;
+ } Ref_Count_Info;
+
+ /// Constructor
+ NodeManager_Impl_Base (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr p,
+ const char * nodeapp_loc,
+ const char* nodeapp_options,
+ int spawn_delay)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Initializes the NodeManager.
+ virtual void init ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// POA operation..
+ virtual PortableServer::POA_ptr _default_POA (void);
+
+ /// CIAO::Daemon defined attributes/operations.
+ virtual char * name ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void joinDomain (const Deployment::Domain & domain,
+ Deployment::TargetManager_ptr manager,
+ Deployment::Logger_ptr log
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void leaveDomain ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Deployment::NodeApplicationManager_ptr
+ preparePlan (const Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StartError,
+ Deployment::PlanError));
+
+ virtual void
+ destroyManager (Deployment::NodeApplicationManager_ptr appManager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError,
+ Deployment::InvalidReference));
+
+ /// CIAO specific extension, which is particularly useful for dealing with
+ /// shared components issue
+ virtual void destroyPlan (const Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((::CORBA::SystemException,
+ ::Deployment::StopError));
+
+ /// CIAO specific extension, return a set of shared components
+ virtual ::Deployment::ComponentPlans *
+ get_shared_components ()
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ /// RACE specific extension. Modify the priority of a node application
+ /// process.
+
+ virtual ::CORBA::Long
+ set_priority (
+ const char * plan_id,
+ const char * cid,
+ const ::Deployment::Sched_Params & nm_params)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ // ********* CIAO Specific Helper functions ************
+
+ virtual ::Components::FacetDescriptions *
+ get_all_facets (ACE_CString & name);
+
+ virtual ::Components::ConsumerDescriptions *
+ get_all_consumers (ACE_CString & name);
+
+ virtual void
+ set_all_facets (ACE_CString &name,
+ const ::Components::FacetDescriptions_var & facets);
+
+ virtual void
+ set_all_consumers (ACE_CString &name,
+ const ::Components::ConsumerDescriptions_var & consumers);
+
+ // ********* Function added for getting component ids...
+
+ struct Component_Ids
+ {
+ ACE_Unbounded_Set <ACE_CString> cid_seq_;
+ pid_t process_id_;
+ };
+
+ virtual void push_component_id_info (Component_Ids comps);
+
+
+ Component_Ids get_component_detail ();
+
+ private:
+ /// Validate the child deployment plan. In particular, we are
+ /// trying to verify that all the component instances within this
+ /// child deployment plan have the same "server_resource_id"
+ /// assigned.
+ bool validate_plan (const Deployment::DeploymentPlan &plan);
+
+ protected:
+ /// Since this class is reference counted, making this
+ /// destructor protected to enforce proper memory managment
+ /// through the reference counting mechanism (i.e. to
+ /// disallow calling operator delete() on an instance of
+ /// this class.
+ virtual ~NodeManager_Impl_Base (void);
+
+ virtual ::CIAO::NodeApplicationManager_Impl_Base *
+ create_node_app_manager (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException))=0;
+
+ /// Actual implementation of the @c get_shared_components IDL operation
+ virtual ::Deployment::ComponentPlans *
+ get_shared_components_i (void);
+
+ /// A helper method that convert ACE_Unbounded_Set to CORBA StringSeq
+ CORBA::StringSeq * shared_components_seq (void);
+
+ /// Keep a pointer to the managing ORB serving this servant.
+ CORBA::ORB_var orb_;
+
+ /// Keep a pointer to the managing POA.
+ PortableServer::POA_var poa_;
+
+ /// My Canonical name.
+ CORBA::String_var name_;
+
+ /// NodeApplication location
+ CORBA::String_var nodeapp_location_;
+
+ /// NodeApplication options
+ CORBA::String_var nodeapp_options_;
+
+ /// Cached callback POA.
+ PortableServer::POA_var callback_poa_;
+
+ /// Spawn delay for the NodeAppMgr
+ int spawn_delay_;
+
+ /// Cache reference of last NodeAppManager
+ /// Deployment::NodeApplicationManager_var manager_;
+ NAM_Map map_;
+
+ /// A reference count map for the components installed on this node
+ /// @@TODO We should also keep the information about *where* the
+ /// component is installed
+ typedef
+ ACE_Hash_Map_Manager_Ex <ACE_CString,
+ Ref_Count_Info,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Reference_Count_Map;
+ typedef Reference_Count_Map::iterator Ref_Count_Iterator;
+
+ Reference_Count_Map ref_count_map_;
+
+ /// A set to track the names of shared component instances
+ ACE_Unbounded_Set<ACE_CString> shared_components_;
+
+ /// Cached object references of ports (facets/consumers) of
+ /// all components. This is useful for getting the port object
+ /// references of "shared components". The key in the map
+ /// is the component instance name.
+ typedef
+ ACE_Hash_Map_Manager_Ex <ACE_CString,
+ Components::FacetDescriptions_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Component_Facets_Map;
+
+ Component_Facets_Map comp_facets_map_;
+
+ typedef
+ ACE_Hash_Map_Manager_Ex <ACE_CString,
+ Components::ConsumerDescriptions_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> Component_Consumers_Map;
+
+ Component_Consumers_Map comp_consumers_map_;
+
+ /// The MonitorController pointer
+ auto_ptr <MonitorController> monitor_controller_;
+
+ /// The set of Components
+ Component_Ids components_;
+ };
+
+
+ /**
+ * @class NodeManager_Impl
+ *
+ */
+ class NodeManager_svnt_Export NodeManager_Impl
+ : public virtual NodeManager_Impl_Base
+ {
+ public:
+
+ /// Constructor
+ NodeManager_Impl (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr p,
+ const char * nodeapp_loc,
+ const char * nodeapp_options,
+ int spawn_delay);
+
+ protected:
+ /// Since this class is reference counted, making this
+ /// destructor protected to enforce proper memory managment
+ /// through the reference counting mechanism (i.e. to
+ /// disallow calling operator delete() on an instance of
+ /// this class.
+ virtual ~NodeManager_Impl (void);
+
+ virtual ::CIAO::NodeApplicationManager_Impl_Base *
+ create_node_app_manager (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class NodeApplicationManager_Impl;
+ struct Static_Config_EntryPoints_Maps;
+
+ /**
+ * @class Static_NodeManager_Impl
+ *
+ */
+ class NodeManager_svnt_Export Static_NodeManager_Impl
+ : public virtual NodeManager_Impl_Base
+ {
+ public:
+
+ /// Constructor
+ Static_NodeManager_Impl (const char *name,
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr p,
+ const char * nodeapp_loc,
+ const char * nodeapp_options,
+ int spawn_delay,
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps
+ );
+
+ void destroyManager
+ (Deployment::NodeApplicationManager_ptr manager)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::StopError,
+ Deployment::InvalidReference));
+
+ protected:
+ /// Since this class is reference counted, making this
+ /// destructor protected to enforce proper memory managment
+ /// through the reference counting mechanism (i.e. to
+ /// disallow calling operator delete() on an instance of
+ /// this class.
+ virtual ~Static_NodeManager_Impl (void);
+
+ virtual ::CIAO::NodeApplicationManager_Impl_Base *
+ create_node_app_manager (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ Static_Config_EntryPoints_Maps* static_config_entrypoints_maps_;
+ };
+
+}
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_NODEMANAGER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/NodeManager/Node_Manager.cpp b/modules/CIAO/DAnCE/NodeManager/Node_Manager.cpp
new file mode 100644
index 00000000000..7a10e719cc0
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/Node_Manager.cpp
@@ -0,0 +1,288 @@
+// $Id$
+
+#include "NodeManager_Impl.h"
+#include "orbsvcs/CosNamingC.h"
+#include "tao/IORTable/IORTable.h"
+#include "ace/SString.h"
+#include "ace/Read_Buffer.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/os_include/os_netdb.h"
+#include "ciao/Server_init.h"
+#include "ciao/CIAO_common.h"
+
+const char *ior_file_name_ = "nodedaemon.ior";
+char *nodeapp_location_ = 0;
+const char *pid_file_name_ = 0;
+bool write_to_ior_ = false;
+bool register_with_ns_ = false;
+int nodeapp_loc_ = 0;
+int spawn_delay = 1;
+
+ACE_CString nodeapp_options_;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "o:c:m:s:d:na:p:z:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'z':
+ nodeapp_options_ += " -ORBDebugLevel ";
+ nodeapp_options_ += get_opts.opt_arg ();
+ break;
+
+ case 'o': // Get the file name to write to.
+ ior_file_name_ = get_opts.opt_arg ();
+ write_to_ior_ = true;
+ break;
+
+ case 'c': // Get the default svc.conf filename.
+ nodeapp_options_ += " -ORBSvcConf ";
+ nodeapp_options_ += get_opts.opt_arg ();
+ break;
+
+ case 's': // Get the location to spawn the NodeApplication.
+ nodeapp_location_ = get_opts.opt_arg ();
+ nodeapp_loc_ = 1;
+ break;
+
+ case 'a': // Nodeapplication arguments.
+ nodeapp_options_ = get_opts.opt_arg ();
+ break;
+
+ case 'd': // Get the spawn delay argument.
+ spawn_delay = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'n':
+ register_with_ns_ = true;
+ break;
+
+ case 'p':
+ pid_file_name_ = get_opts.opt_arg ();
+ break;
+
+ case '?': // Display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o <ior_output_file>\n"
+ "-c <svc.conf file>\n"
+ "-n <use naming service>\n"
+ "-s <NodeApplication executable path>\n"
+ "-a <arguments to NodeApplication>\n"
+ "-d <spawn delay for nodeapplication>\n"
+ "-p <pid file>\n"
+ "\n",
+ argv [0]),
+ -1);
+ break;
+ }
+ }
+
+ return 0;
+}
+
+int
+write_IOR (const char* ior)
+{
+ FILE* ior_output_file_ =
+ ACE_OS::fopen (ior_file_name_, "w");
+
+ if (ior_output_file_)
+ {
+ ACE_OS::fprintf (ior_output_file_,
+ "%s",
+ ior);
+ ACE_OS::fclose (ior_output_file_);
+ }
+
+ return 0;
+}
+
+void
+write_pid (void)
+{
+ if (pid_file_name_ == 0)
+ {
+ return;
+ }
+
+ FILE* pid_file = ACE_OS::fopen (pid_file_name_, "w");
+
+ if (pid_file)
+ {
+ ACE_OS::fprintf (pid_file,
+ "%i",
+ ACE_OS::getpid ());
+ ACE_OS::fclose (pid_file);
+ }
+}
+
+bool
+register_with_ns (const char * name_context,
+ CORBA::ORB_ptr orb,
+ CIAO::NodeManagerDaemon_ptr obj)
+{
+ // Naming Service related operations
+ CORBA::Object_var naming_context_object =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_context_object.in ());
+
+ // Initialize the Naming Sequence
+ CosNaming::Name name (1);
+ name.length (1);
+ name[0].id = name_context;
+
+ try
+ {
+ // Register the servant with the Naming Service
+ naming_context->bind (name, obj);
+ }
+ catch (CosNaming::NamingContext::AlreadyBound &)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Node_Manager.cpp: Name already bound, rebinding....\n"));
+ naming_context->rebind (name, obj);
+ }
+
+ return true;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ // @@TODO: Add error checking. There is absoluteley none.
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ CIAO::Server_init (orb.in ());
+
+ if (parse_args (argc, argv) != 0)
+ return -1;
+
+ // Check if NodeApplication executable location has been
+ // specified
+ if (! nodeapp_loc_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Use -s <NodeApplicationPath> to specify \
+ executable path\n"));
+ ACE_OS::exit (1);
+ }
+
+ // Get reference to Root POA.
+ CORBA::Object_var obj
+ = orb->resolve_initial_references ("RootPOA");
+
+ PortableServer::POA_var poa
+ = PortableServer::POA::_narrow (obj.in ());
+
+ CORBA::Object_var table_object =
+ orb->resolve_initial_references ("IORTable");
+
+ IORTable::Table_var adapter =
+ IORTable::Table::_narrow (table_object.in ());
+
+ if (CORBA::is_nil (adapter.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR, "Nil IORTable\n"), -1);
+ }
+
+ // Create and install the CIAO NodeManager servant
+ CIAO::NodeManager_Impl *node_manager_servant = 0;
+ ACE_NEW_RETURN (node_manager_servant,
+ CIAO::NodeManager_Impl("NodeManager",
+ orb.in (),
+ poa.in (),
+ nodeapp_location_,
+ nodeapp_options_.c_str (),
+ spawn_delay),
+ -1);
+
+ PortableServer::ServantBase_var safe_daemon (node_manager_servant);
+
+ node_manager_servant->init ();
+
+ // Implicit activation
+ CIAO::NodeManagerDaemon_var node_manager =
+ node_manager_servant->_this ();
+
+ CORBA::String_var str =
+ orb->object_to_string (node_manager.in ());
+
+ adapter->bind ("NodeManager",
+ str.in ());
+
+ if (write_to_ior_)
+ {
+ write_IOR (str.in ());
+ }
+ else if (register_with_ns_)
+ {
+ char name [MAXHOSTNAMELEN + 1];
+
+ if (ACE_OS::hostname (name, MAXHOSTNAMELEN + 1) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "gethostname call failed! \n"));
+ ACE_OS::exit (1);
+ }
+
+ // Register this name with the Naming Service
+ (void) register_with_ns (name,
+ orb.in (),
+ node_manager.in ());
+ }
+
+ ACE_DEBUG ((LM_INFO, "CIAO_NodeManager IOR: %s\n", str.in ()));
+
+ // Activate POA manager
+ PortableServer::POAManager_var mgr
+ = poa->the_POAManager ();
+
+ mgr->activate ();
+
+ // Here start the Monitor
+ /*
+ MonitorController* monitor_controller
+ = new MonitorController (orb);
+
+ ACE_DEBUG ((LM_DEBUG , "Before Activate"));
+ monitor_controller->activate ();
+ ACE_DEBUG ((LM_DEBUG , "After Activate"));
+ */
+
+ // Finishing Deployment part
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_NodeManager is running...\n"));
+
+ write_pid ();
+
+ // Run the main event loop for the ORB.
+ orb->run ();
+
+ poa->destroy (1, 1);
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("CIAO_NodeManager::main\t\n");
+ return 1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_NodeManager has closed\n"));
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/NodeManager/README b/modules/CIAO/DAnCE/NodeManager/README
new file mode 100644
index 00000000000..dda9201e240
--- /dev/null
+++ b/modules/CIAO/DAnCE/NodeManager/README
@@ -0,0 +1,13 @@
+/**
+
+@page NodeManager README File
+
+ CIAO's NodeManager implementation. NodeManager is the bootstraping
+mechanism to create new NodeApplication on the localhost. We
+currently depend on starting the NodeApplicationManager process on
+some port of all the hosts that have NodeApplication install to
+function properly. The port to run this daemon can be set by using the
+TAO ORB options command of -ORBEndpoint <port>. This replaces the
+earlier CIAO_Daemon implementation of CIAO as defined in the CCM
+specification.
+*/
diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp
new file mode 100644
index 00000000000..39bbb9bb434
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.cpp
@@ -0,0 +1,270 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * @file PCVisitor.cpp
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the PackageConfiguration
+ * Visitor class PCVisitor which derives from PCVisitorBase. Each
+ * Visit function focuses on the functionality necessary to process
+ * the PackageConfiguration element which is passed to it as an argument
+ * and on dispatching the next sequence of calls in the correct order!
+ *
+ * This implementation takes a PackageConfiguration and tries to modify
+ * a DeploymentPlan bases on it by expanding the latter in width and depth
+ * simultaneously. At each level of the PackageConfiguration the
+ * PCVisitor first expands the DeploymentPlan vertically at the
+ * corrsponding level and then dispatches the children of the current
+ * PackageConfiguration element. This in turn might and most probably
+ * will cause another vertical expansion of the DeploymentPlan, however
+ * for a different element. This effect is produced due to the flattened
+ * structure of the DeploymentPlan.
+ *
+ * @author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ * Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+#include "PCVisitor.h"
+
+//Constructor
+PCVisitor::PCVisitor (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc,
+ bool modify)
+ : PCVisitorBase (),
+ plan_ (plan),
+ pc_ (pc),
+ modify_ (modify),
+ last_impl_index_ (-1)
+{
+}
+
+//entry point for the protected visitor to get it do start
+//the visitation process
+int PCVisitor::Visit ()
+{
+ Accept (*this, this->pc_);
+ return last_impl_index_;
+}
+
+// A whole slew of overloaded routines for different IDL
+// data types part of the PackageConfiguration.
+
+void PCVisitor::Visit (Deployment::PackageConfiguration &pc)
+{
+ //visit the ComponentPackageDescription
+ if (pc.basePackage.length ())
+ {
+ //currently no support for that anywhere
+ //for (size_t r = 0; r = pc.selectRequirement.length (); ++r);
+
+ Accept (*this, pc.basePackage);
+ }
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[PCVisitor - PackageConfiguration] We currently "
+ "do NOT support package references, specializedConfigs",
+ "or imports!\n"));
+}
+
+//ComponentPackageDescription descendents
+
+void PCVisitor::Visit (Deployment::ComponentPackageDescription &cpd)
+{
+ Accept (*this, cpd.realizes);
+ //for (size_t impl = 0; impl < cpd.implementation.length (); ++impl)
+ Accept (*this, cpd.implementation[0]);
+}
+
+
+void PCVisitor::Visit (Deployment::ComponentInterfaceDescription &)
+{
+ //Might want to populate this too once PICML starts supporting it
+}
+
+
+void PCVisitor::Visit (Deployment::PackagedComponentImplementation &pci)
+{
+ Accept (*this, pci.referencedImplementation);
+}
+
+
+void PCVisitor::Visit (Deployment::ComponentImplementationDescription &cid)
+{
+ if (cid.assemblyImpl.length ())
+ Accept (*this, cid.assemblyImpl);
+ else
+ //;//Do nothing - monolithic component deployment not supported
+ Accept (*this, cid.monolithicImpl);
+}
+
+
+void PCVisitor::Visit (Deployment::ComponentAssemblyDescription &cad)
+{
+ //visit the SubcomponentInstantiationDescription
+ Accept (*this, cad.instance);
+ //visit the connections
+ Accept (*this, cad.connection);
+}
+
+
+void PCVisitor::Visit (Deployment::SubcomponentInstantiationDescription &sid)
+{
+ //visit the ComponentPackageDescription (again)
+ if (sid.basePackage.length ())
+ {
+ Accept (*this, sid.basePackage);
+ }
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[PCVisitor - SubcomponentInstantiationDescription] ",
+ "We currently do NOT support package references, ",
+ "specializedConfigs or imports!\n"));
+}
+
+
+void PCVisitor::Visit (Deployment::MonolithicImplementationDescription &mid)
+{
+ if (!modify_)
+ {
+ //increase the implementation length by one
+ size_t impl_len = plan_.implementation.length ();
+ last_impl_index_ = impl_len;
+ plan_.implementation.length (impl_len + 1);
+ }
+
+ //visit the NamedImplementationArtifacts
+ Accept (*this, mid.primaryArtifact);
+}
+
+
+void PCVisitor::Visit (Deployment::NamedImplementationArtifact &nia)
+{
+ if (!modify_)
+ {
+ //increase the artifact length by one
+ size_t arti_len = plan_.artifact.length ();
+ plan_.artifact.length (arti_len + 1);
+
+ //set the name
+ plan_.artifact[arti_len].name = nia.name;
+
+ //set the artifactRef of implementation
+ size_t last_mdd = plan_.implementation.length () - 1;
+ Deployment::MonolithicDeploymentDescription& mdd = plan_.implementation[last_mdd];
+ size_t ref_len = mdd.artifactRef.length ();
+ mdd.artifactRef.length (ref_len + 1);
+ mdd.artifactRef[ref_len] = arti_len;
+ }
+
+ //visit the actual ImplementationArtifactDescriptor
+ Accept (*this, nia.referencedArtifact);
+}
+
+
+void PCVisitor::Visit (Deployment::ImplementationArtifactDescription &iad)
+{
+ if (!modify_)
+ {
+ size_t last_arti = plan_.artifact.length ();
+ Deployment::ArtifactDeploymentDescription& add = plan_.artifact[last_arti - 1];
+
+ //set the location
+ size_t plan_loc_len = add.location.length ();
+ size_t num_loc = iad.location.length ();
+ for (size_t i = 0; i < num_loc; ++i)
+ {
+ add.location.length (plan_loc_len + 1);
+ add.location[plan_loc_len] = iad.location[i];
+ ++plan_loc_len;
+ }
+
+ //set the execParameter
+ update_execParameter (iad, add);
+ }
+
+ else
+ {
+ size_t num_arti = plan_.artifact.length ();
+ for (size_t i = 0; i < num_arti; ++i)
+ {
+ if (ACE_OS::strstr (iad.location[0], plan_.artifact[i].location[0]))
+ plan_.artifact[i].location[0] = iad.location[0];
+ }
+ }
+}
+
+
+//ComponentPackageReference descendents
+
+void PCVisitor::Visit (Deployment::ComponentPackageReference &)
+{
+ //not implemented
+}
+
+
+//properties
+
+void PCVisitor::Visit (Deployment::AssemblyPropertyMapping &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::Property &)
+{
+}
+
+
+//requirements & capabilities
+
+void PCVisitor::Visit (Deployment::Requirement &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::Capability &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::ImplementationRequirement &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::ImplementationDependency &)
+{
+}
+
+//ports and connections
+
+void PCVisitor::Visit (Deployment::AssemblyConnectionDescription &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::SubcomponentPortEndpoint &)
+{
+}
+
+
+void PCVisitor::Visit (Deployment::ComponentExternalPortEndpoint &)
+{
+}
+
+void PCVisitor::
+update_execParameter (Deployment::ImplementationArtifactDescription& iad,
+ Deployment::ArtifactDeploymentDescription& add)
+{
+ size_t num_execP = iad.execParameter.length ();
+ size_t execP_len = add.execParameter.length ();
+ for (size_t j = 0; j < num_execP; ++j)
+ {
+ add.execParameter.length (execP_len + 1);
+ add.execParameter[execP_len] = iad.execParameter[j];
+ ++execP_len;
+ }
+}
diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h
new file mode 100644
index 00000000000..8417bc8a630
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitor.h
@@ -0,0 +1,128 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PCVisitor.h
+ *
+ * $Id$
+ *
+ * This file contains a number of Visitor classes which are used to
+ * traverse the PackageConfiguration element defined in the
+ * PackagingData.idl
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ * Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PC_VISITOR_H
+#define PC_VISITOR_H
+
+#include /**/ "ace/pre.h"
+#include "PCVisitorBase.h" //for the base visitor
+
+//===========================================================================
+/**
+ * class PCVisitor
+ *
+ * This class is is the actual implementation for the PackageConfiguration
+ * Visitor. It derives from PCVisitorBase and overloads the functions which
+ * deal with single elements. Sequences are handled in the base class.
+ */
+//===========================================================================
+
+
+class PCVisitor : public PCVisitorBase
+{
+public:
+ /// Constructor
+ PCVisitor (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc,
+ bool modify);
+
+ /// Entry point to protected Visitor functions
+ int Visit ();
+
+protected:
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc);
+
+ //ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad);
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr);
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm);
+
+ virtual
+ void Visit (Deployment::Property &property);
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement);
+
+ virtual
+ void Visit (Deployment::Capability &capability);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe);
+
+protected:
+ void update_execParameter (Deployment::ImplementationArtifactDescription& iad,
+ Deployment::ArtifactDeploymentDescription& add);
+
+private:
+ Deployment::DeploymentPlan& plan_;
+ Deployment::PackageConfiguration& pc_;
+ bool modify_;
+ int last_impl_index_;
+};
+
+#include /**/ "ace/post.h"
+
+#endif /* PC_VISITOR_H */
diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp
new file mode 100644
index 00000000000..c8ffc983095
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.cpp
@@ -0,0 +1,28 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.cpp
+ *
+ * $Id$
+ *
+ * This file is a dummy which either includes the PCVisitorBase.inl or
+ * is ignored.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+
+PCVisitorBase::PCVisitorBase (void)
+{
+}
+
+PCVisitorBase::~PCVisitorBase (void)
+{
+}
+
+#if !defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h
new file mode 100644
index 00000000000..ac34dc4d261
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.h
@@ -0,0 +1,171 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PCVisitorBase.h
+ *
+ * $Id$
+ *
+ * This file contains the virtual base class for the PackageConfiguration
+ * Visitor which is used to traverse the PackageConfiguration element
+ * defined in the PackagingData.idl. The PackageConfiguration has a
+ * number of sequence elements. This class actually implements the
+ * operations which involve sequences and delegates the calls to
+ * the operations which handle single elements from the sequence type.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PC_VISITOR_BASE_H
+#define PC_VISITOR_BASE_H
+
+#include /**/ "ace/pre.h"
+#include "ciao/DeploymentC.h"
+
+//========================================================================
+/**
+ * class PCVisitorBase
+ *
+ * This class is a virtual base class for the PackageConfiguration Visitor
+ * The operation which deal with sequences are implemented here by means
+ * of the visit_sequence function above, in order to make the logic of
+ * derived classes easier to write. Writers of derived classes need only
+ * overload the functions which deal with single elements. Sequences are
+ * always handled here.
+ */
+//========================================================================
+
+
+class PCVisitorBase
+{
+public:
+ /// Constructor
+ PCVisitorBase (void);
+
+ /// Destructor
+ virtual ~PCVisitorBase (void);
+
+ /// Function what dispatches sequences
+ template <typename SEQ>
+ friend void visit_sequence (SEQ &seq, PCVisitorBase& v);
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc) = 0;
+ void Visit (Deployment::PackageConfigurations &pcs);
+
+ /// ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd) = 0;
+ void Visit (Deployment::ComponentPackageDescriptions &cpds);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid) = 0;
+ //void Visit (Deployment::ComponentInterfaceDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci) = 0;
+ void Visit (Deployment::PackagedComponentImplementations &pcis);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid) = 0;
+ //void Visit (Deployment::ComponentImplementationDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad) = 0;
+ void Visit (Deployment::ComponentAssemblyDescriptions &cads);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid) = 0;
+ void Visit (Deployment::SubcomponentInstantiationDescriptions &sids);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid) = 0;
+ void Visit (Deployment::MonolithicImplementationDescriptions &mids);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia) = 0;
+ void Visit (Deployment::NamedImplementationArtifacts &nias);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad) = 0;
+ //void Visit (Deployment::ImplementationArtifactDescriptions &iads);
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr) = 0;
+ void Visit (Deployment::ComponentPackageReferences &cprs);
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm) = 0;
+ void Visit (Deployment::AssemblyPropertyMappings &apms);
+
+ virtual
+ void Visit (Deployment::Property &property) = 0;
+ void Visit (Deployment::Properties &properties);
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement) = 0;
+ void Visit (Deployment::Requirements &requirements);
+
+ virtual
+ void Visit (Deployment::Capability &capability) = 0;
+ void Visit (Deployment::Capabilities &capabilities);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir) = 0;
+ void Visit (Deployment::ImplementationRequirements &irs);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id) = 0;
+ void Visit (Deployment::ImplementationDependencies &ids);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd) = 0;
+ void Visit (Deployment::AssemblyConnectionDescriptions &acds);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe) = 0;
+ void Visit (Deployment::SubcomponentPortEndpoints &spes);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe) = 0;
+ void Visit (Deployment::ComponentExternalPortEndpoints &cepes);
+};
+
+template <typename T>
+void Accept (PCVisitorBase &v, T& element_to_visit)
+{
+ v.Visit (element_to_visit);
+}
+
+/**
+ * function - visit_sequence
+ *
+ * This function is used to handle sequences of elements where each
+ * element takes the form of a Visitor Node.
+ */
+template <typename SEQ>
+void visit_sequence (SEQ &seq, PCVisitorBase& v)
+{
+ CORBA::ULong const size = seq.length ();
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ {
+ Accept(v, seq[i]);
+ }
+}
+
+#if defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+
+#endif /* PC_VISITOR_BASE_H */
diff --git a/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl
new file mode 100644
index 00000000000..955aefb7c4e
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/PCVisitorBase.inl
@@ -0,0 +1,155 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.inl
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the sequence-based
+ * PackageConfiguration Visitor functions. By implementing these
+ * we relieve developers of derived classes of the burden of handling
+ * the correct traversal of sequence-based elements. This implementation
+ * used the visit_sequence templatized function to do the heavy lifting.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+
+/// A whole slew of overloaded routines for different IDL
+/// data types part of the PackageConfiguration.
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::PackageConfigurations &pcs)
+{
+ visit_sequence (pcs, *this);
+}
+
+//ComponentPackageDescription descendents
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ComponentPackageDescriptions &cpds)
+{
+ visit_sequence (cpds, *this);
+}
+
+//NOT a member of Deployment
+
+//ACE_INLINE void PCVisitorBase::Visit
+// (Deployment::ComponentInterfaceDescriptions &cids)
+//{
+// visit_sequence (cids, *this);
+//}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::PackagedComponentImplementations &pcis)
+{
+ visit_sequence (pcis, *this);
+}
+
+//NOT a member of Deployment
+
+//ACE_INLINE void PCVisitorBase::Visit
+// (Deployment::ComponentImplementationDescriptions &cids)
+//{
+// visit_sequence (cids, *this);
+//}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ComponentAssemblyDescriptions &cads)
+{
+ visit_sequence (cads, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::SubcomponentInstantiationDescriptions &sids)
+{
+ visit_sequence (sids, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::MonolithicImplementationDescriptions &mids)
+{
+ visit_sequence (mids, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::NamedImplementationArtifacts &nias)
+{
+ visit_sequence (nias, *this);
+}
+
+//ACE_INLINE void PCVisitorBase::Visit
+// (Deployment::ImplementationArtifactDescriptions &iads)
+//{
+// visit_sequence (iads, *this);
+//}
+
+//ComponentPackageReference descendents
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ComponentPackageReferences &cprs)
+{
+ visit_sequence (cprs, *this);
+}
+
+//properties
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::AssemblyPropertyMappings &apms)
+{
+ visit_sequence (apms, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::Properties &properties)
+{
+ visit_sequence (properties, *this);
+}
+
+//requirements & capabilities
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::Requirements &requirements)
+{
+ visit_sequence (requirements, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::Capabilities &capabilities)
+{
+ visit_sequence (capabilities, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ImplementationRequirements &irs)
+{
+ visit_sequence (irs, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ImplementationDependencies &ids)
+{
+ visit_sequence (ids, *this);
+}
+
+//ports and connections
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::AssemblyConnectionDescriptions &acds)
+{
+ visit_sequence (acds, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::SubcomponentPortEndpoints &spes)
+{
+ visit_sequence (spes, *this);
+}
+
+ACE_INLINE void PCVisitorBase::Visit
+(Deployment::ComponentExternalPortEndpoints &cepes)
+{
+ visit_sequence (cepes, *this);
+}
diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc
new file mode 100644
index 00000000000..ac3026061e3
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator.mpc
@@ -0,0 +1,22 @@
+// -*- MPC -*-
+//$Id$
+
+project (Plan_Generator): ciao_component_dnc {
+ sharedname = Plan_Generator
+ after += RepositoryManager
+
+ dynamicflags = PLAN_GENERATOR_IMPL_BUILD_DLL
+
+ Source_Files {
+ Plan_Generator_Impl.cpp
+ PCVisitorBase.cpp
+ PCVisitor.cpp
+ }
+
+ Header_Files {
+ Plan_Generator_Impl.h
+ PCVisitor.h
+ PCVisitorBase.h
+ Plan_Generator_Impl_Export.h
+ }
+}
diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp
new file mode 100644
index 00000000000..a1e5831e0af
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.cpp
@@ -0,0 +1,153 @@
+/**
+ * $Id$
+ * @file Plan_Generator_Impl.cpp
+ * @author Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ */
+
+#include "Plan_Generator_Impl.h"
+#include "orbsvcs/CosNamingC.h"
+#include "PCVisitor.h"
+#include "PCVisitorBase.h"
+
+namespace CIAO
+{
+ namespace Plan_Generator
+ {
+ // @todo make this a private method
+ static CORBA::Object_ptr
+ fetch_reference_naming (CORBA::ORB_ptr orb,
+ const char *repoman_name = 0)
+ {
+ CORBA::Object_var tmp =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var pns =
+ CosNaming::NamingContext::_narrow (tmp.in ());
+
+ if (CORBA::is_nil (pns.in ()))
+ {
+ return CORBA::Object::_nil ();
+ }
+
+ CosNaming::Name name (1);
+ name.length (1);
+
+ name[0].id = CORBA::string_dup (repoman_name);
+
+ return pns->resolve (name);
+ }
+
+ Plan_Generator_i::Plan_Generator_i ()
+ : rm_ ()
+ {
+ }
+
+ bool
+ Plan_Generator_i::init (CORBA::ORB_ptr orb,
+ bool rm_use_naming,
+ const char *rm_name)
+ {
+ CORBA::Object_var obj;
+
+ if (rm_use_naming)
+ {
+ obj = fetch_reference_naming (orb, rm_name);
+ }
+ else
+ {
+ obj = orb->string_to_object (rm_name);
+ }
+
+ this->rm_ = Deployment::RepositoryManager::_narrow (obj.in ());
+
+ if (CORBA::is_nil (this->rm_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_PlanGenerator: nil Repository "
+ "Manager reference, narrow failed\n"));
+ return false;
+ }
+
+ return true;
+ }
+
+ bool
+ Plan_Generator_i::generate_plan (Deployment::DeploymentPlan &plan,
+ const char *package_uri,
+ bool use_package_name)
+ {
+ if (CORBA::is_nil (rm_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_Repoman: nil Execution\n"));
+ return false;
+ }
+
+ ::Deployment::PackageConfiguration_var pc;
+
+ ACE_TCHAR package[PACKAGE_NAME_LEN];
+
+ size_t length = ACE_OS::strlen (package_uri);
+
+ size_t pos1 = 0;
+ size_t pos2 = ACE_OS::strcspn (package_uri + pos1, "+");
+
+ while (pos1 < length)
+ {
+ ACE_OS::strsncpy (package, package_uri + pos1, pos2 + 1);
+
+ if (use_package_name)
+ {
+ pc = this->rm_->findPackageByName (package);
+
+ PCVisitor pcv (plan, *pc, true);
+ pcv.Visit ();
+ }
+ else
+ {
+ CORBA::StringSeq_var seq = this->rm_->findNamesByType (package);
+
+ for (CORBA::ULong i = 0; i < seq->length (); ++i)
+ {
+ pc = this->rm_->findPackageByName (seq[i]);
+
+ PCVisitor pcv (plan, *pc, true);
+ pcv.Visit ();
+ }
+ }
+
+ pos1 += pos2 + 1;
+ pos2 = ACE_OS::strcspn (package_uri + pos1, "+");
+ }
+
+ return true;
+ }
+
+ bool
+ Plan_Generator_i::generate_plan (Deployment::DeploymentPlan &plan,
+ const char *specific_type,
+ int &index)
+ {
+ if (CORBA::is_nil (rm_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_Repoman: nil Execution\n"));
+ return false;
+ }
+
+ ::Deployment::PackageConfiguration_var pc;
+
+ CORBA::StringSeq_var seq = rm_->findNamesByType (specific_type);
+ for (CORBA::ULong i = 0; i < seq->length (); ++i)
+ {
+ pc = rm_->findPackageByName (seq[i]);
+
+ PCVisitor pcv (plan, *pc, false);
+ index = pcv.Visit ();
+ }
+
+ return true;
+ }
+
+ }
+}
diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h
new file mode 100644
index 00000000000..3fbfef3a9c6
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl.h
@@ -0,0 +1,78 @@
+/**
+ * $Id$
+ * @file Plan_Generator_Impl.h
+ * @author Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ *
+ * Contains the Plan_Generator_i class, which can be used to generate/modify
+ * DeploymentPlans.
+ */
+
+#ifndef PLAN_GENERATOR_IMPL_H
+#define PLAN_GENERATOR_IMPL_H
+
+#include "ciao/Deployment_RepositoryManagerC.h"
+#include "Plan_Generator_Impl_Export.h"
+
+namespace CIAO
+{
+ namespace Plan_Generator
+ {
+ const size_t PACKAGE_NAME_LEN = 1024;
+
+ /**
+ * @class Plan_Generator_i
+ * @brief This class generates or modifies deployment plans.
+ */
+ class Plan_Generator_Impl_Export Plan_Generator_i
+ {
+ public:
+ Plan_Generator_i ();
+
+ /**
+ * @fn init
+ * @brief Get the proper Repoman, using naming service or ior file.
+ * @param orb
+ * @param rm_use_naming Whether use naming service or not.
+ * @param rm_name The name of the Repoman.
+ * @returns a boolean denoting if this operation is successful or not.
+ */
+ bool init (CORBA::ORB_ptr orb,
+ bool rm_use_naming = 0,
+ const char *rm_name = 0);
+
+ /**
+ * @fn generate_plan
+ * @brief Use the package name(s) or type(s) to get the PackageConfiguration
+ * provided by Repoman; and then use the PackageConfiguration to
+ * modify the location of all the artifacts in DeploymentPlan.
+ * @param plan A DeploymentPlan that need to be updated.
+ * @param package_uri The package name(s) or type(s).
+ * @param use_package_name Use package name(s) or type(s).
+ * @returns a boolean denoting if this operation is successful or not.
+ */
+ bool generate_plan (Deployment::DeploymentPlan &plan,
+ const char *package_uri,
+ bool use_package_name);
+
+ /**
+ * @fn generate_plan
+ * @brief Use the specific type of a package to get the PackageConfiguration
+ * provided by Repoman; and then use the PackageConfiguration to
+ * generate the implementation and artifact fields in DeploymentPlan.
+ * @param plan A DeploymentPlan that need to be updated.
+ * @param package_uri The package specific type.
+ * @param index The index of the newly generated implementation and artifact fields.
+ * @returns a boolean denoting if this operation is successful or not.
+ */
+ bool generate_plan (Deployment::DeploymentPlan &plan,
+ const char *specific_type,
+ int &index);
+
+ private:
+ Deployment::RepositoryManager_var rm_;
+ };
+
+ }
+}
+
+#endif /* PLAN_GENERATOR_IMPL_H */
diff --git a/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h
new file mode 100644
index 00000000000..fd120ff7b73
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Generator/Plan_Generator_Impl_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl Plan_Generator_Impl
+// ------------------------------
+#ifndef PLAN_GENERATOR_IMPL_EXPORT_H
+#define PLAN_GENERATOR_IMPL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PLAN_GENERATOR_IMPL_HAS_DLL)
+# define PLAN_GENERATOR_IMPL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PLAN_GENERATOR_IMPL_HAS_DLL */
+
+#if !defined (PLAN_GENERATOR_IMPL_HAS_DLL)
+# define PLAN_GENERATOR_IMPL_HAS_DLL 1
+#endif /* ! PLAN_GENERATOR_IMPL_HAS_DLL */
+
+#if defined (PLAN_GENERATOR_IMPL_HAS_DLL) && (PLAN_GENERATOR_IMPL_HAS_DLL == 1)
+# if defined (PLAN_GENERATOR_IMPL_BUILD_DLL)
+# define Plan_Generator_Impl_Export ACE_Proper_Export_Flag
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_GENERATOR_IMPL_BUILD_DLL */
+# define Plan_Generator_Impl_Export ACE_Proper_Import_Flag
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_GENERATOR_IMPL_BUILD_DLL */
+#else /* PLAN_GENERATOR_IMPL_HAS_DLL == 1 */
+# define Plan_Generator_Impl_Export
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARATION(T)
+# define PLAN_GENERATOR_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_GENERATOR_IMPL_HAS_DLL == 1 */
+
+// Set PLAN_GENERATOR_IMPL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_GENERATOR_IMPL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_GENERATOR_IMPL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_GENERATOR_IMPL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_GENERATOR_IMPL_NTRACE */
+
+#if (PLAN_GENERATOR_IMPL_NTRACE == 1)
+# define PLAN_GENERATOR_IMPL_TRACE(X)
+#else /* (PLAN_GENERATOR_IMPL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_GENERATOR_IMPL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_GENERATOR_IMPL_NTRACE == 1) */
+
+#endif /* PLAN_GENERATOR_IMPL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp
new file mode 100644
index 00000000000..d5233cf870c
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.cpp
@@ -0,0 +1,327 @@
+// $Id$
+
+#include "Plan_Launcher_Impl.h"
+
+#include "ace/OS.h"
+#include "ace/Get_Opt.h"
+#include <iostream>
+
+#include "DAnCE/Interfaces/ExecutionManagerDaemonC.h"
+
+namespace CIAO
+{
+ namespace Plan_Launcher
+ {
+ // deployment plan URL
+ const char* deployment_plan_url = 0;
+ bool use_package_name = true;
+ const char* package_names = 0;
+ const char* package_types = 0;
+ const char* new_deployment_plan_url = 0;
+ const char* plan_uuid = 0;
+ bool em_use_naming = false;
+ const char* em_ior_file = "file://em.ior";
+ bool rm_use_naming = false;
+ bool use_repoman = false;
+ const char* rm_ior_file = "file://rm.ior";
+ const char* repoman_name_ = "RepositoryManager";
+ const char* dap_ior_filename = 0;
+ const char* dap_ior = 0;
+
+ enum mode_type {
+ pl_mode_start,
+ pl_mode_interactive,
+ pl_mode_stop_by_dam,
+ pl_mode_stop_by_uuid,
+ pl_mode_redeployment
+ };
+
+ // default mode
+ mode_type mode = pl_mode_interactive;
+
+ static void
+ usage (const ACE_TCHAR* program)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("[(%P|%t) Executor] Usage: %s\n")
+ ACE_TEXT ("-a <PACKAGE_NAMES>\n")
+ ACE_TEXT ("-e <PACKAGE_TYPES>\n")
+ ACE_TEXT ("-p <DEPLOYMENT_PLAN_URL>\n")
+ ACE_TEXT ("-n : Use naming service to fetch EM")
+ ACE_TEXT ("-k <EXECUTION_MANAGER_IOR>")
+ ACE_TEXT (" : Default file://em.ior\n")
+ ACE_TEXT ("-l <REPOSITORY_MANAGER_IOR>")
+ ACE_TEXT (" : Default file://rm.ior\n")
+ ACE_TEXT ("-v <REPOSITORY_MANAGER_NAME>: Use naming service to fetch RM with the given name")
+ ACE_TEXT (" : Default RepositoryManager\n")
+ ACE_TEXT ("-t <PLAN_UUID>\n")
+ ACE_TEXT ("-o <DOMAIN_APPLICATION_MANAGER_IOR_OUTPUT_FILE>\n")
+ ACE_TEXT ("-i <DOMAIN_APPLICATION_MANAGER_IOR_FOR_INPUT>\n")
+ ACE_TEXT ("-r <NEW_PLAN_DESCRIPTOR_FOR_REDEPLOYMENT>\n")
+ ACE_TEXT ("-h : Show this usage information\n"),
+ program));
+ }
+
+ static bool
+ parse_args (int argc,
+ ACE_TCHAR *argv[])
+ {
+ ACE_Get_Opt get_opt (argc,
+ argv,
+ ACE_TEXT ("a:e:p:nk:l:v:t:o:i:r:h"));
+ int c;
+
+ while ((c = get_opt ()) != EOF)
+ {
+ switch (c)
+ {
+ case 'a':
+ package_names = get_opt.opt_arg ();
+ use_package_name = true;
+ break;
+ case 'e':
+ package_types = get_opt.opt_arg ();
+ use_package_name = false;
+ break;
+ case 'p':
+ deployment_plan_url = get_opt.opt_arg ();
+ break;
+ case 'n':
+ em_use_naming = true;
+ break;
+ case 'k':
+ em_ior_file = get_opt.opt_arg ();
+ break;
+ case 'l':
+ use_repoman = true;
+ rm_ior_file = get_opt.opt_arg ();
+ break;
+ case 'v':
+ use_repoman = true;
+ rm_use_naming = true;
+ repoman_name_ = get_opt.opt_arg ();
+ break;
+ case 'o':
+ dap_ior_filename = get_opt.opt_arg ();
+ mode = pl_mode_start;
+ break;
+ case 'i':
+ dap_ior = get_opt.opt_arg ();
+ mode = pl_mode_stop_by_dam;
+ break;
+ case 't':
+ plan_uuid = get_opt.opt_arg ();
+ mode = pl_mode_stop_by_uuid;
+ break;
+ case 'r':
+ new_deployment_plan_url = get_opt.opt_arg ();
+ mode = pl_mode_redeployment;
+ break;
+ case 'h':
+ default:
+ usage(argv[0]);
+ return false;
+ }
+ }
+
+ if ((mode != pl_mode_stop_by_dam) &&
+ (mode != pl_mode_stop_by_uuid) &&
+ (package_names == 0) &&
+ (package_types == 0) &&
+ (deployment_plan_url == 0) &&
+ (new_deployment_plan_url == 0))
+ {
+ usage (argv[0]);
+ return false;
+ }
+
+ return true;
+ }
+
+ static ::Deployment::DomainApplicationManager_ptr
+ read_dap_ior (CORBA::ORB_ptr orb)
+ {
+ CORBA::Object_var obj = orb->string_to_object (dap_ior);
+ return
+ Deployment::DomainApplicationManager::_narrow (obj.in ());
+ }
+
+ static int
+ write_dap_ior (CORBA::ORB_ptr orb,
+ ::Deployment::DomainApplicationManager_ptr dap)
+ {
+ CORBA::String_var ior = orb->object_to_string (dap);
+
+ FILE* ior_output_file = ACE_OS::fopen (dap_ior_filename, "w");
+
+ if (ior_output_file)
+ {
+ ACE_OS::fprintf (ior_output_file, "%s", ior.in ());
+ ACE_OS::fclose (ior_output_file);
+
+ return 0;
+ }
+
+ return -1;
+ }
+
+ static int
+ run_main_implementation (int argc, char *argv[])
+ {
+
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ if (parse_args (argc, argv) == false)
+ return -1;
+
+ Plan_Launcher_i launcher;
+
+ if (!launcher.init (em_use_naming ? 0 : em_ior_file,
+ orb.in (),
+ use_repoman,
+ rm_use_naming,
+ rm_use_naming ? repoman_name_ : rm_ior_file))
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) Plan_Launcher: Error initializing the EM.\n"));
+ return -1;
+ }
+
+ ::Deployment::DomainApplicationManager_var dapp_mgr;
+
+ if (mode == pl_mode_start || mode == pl_mode_interactive) // initial deployment
+ {
+ CORBA::String_var uuid;
+
+ if (package_names != 0)
+ uuid = launcher.launch_plan (deployment_plan_url,
+ package_names,
+ use_package_name,
+ use_repoman);
+ else
+ uuid = launcher.launch_plan (deployment_plan_url,
+ package_types,
+ use_package_name,
+ use_repoman);
+
+ if (uuid.in () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) Plan_Launcher: Error launching plan\n"));
+ return -1;
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Plan_Launcher returned UUID is %s\n", uuid.in ()));
+ dapp_mgr = launcher.get_dam (uuid.in ());
+
+ // Write out DAM ior if requested
+ if (mode == pl_mode_start)
+ {
+ write_dap_ior (orb.in (), dapp_mgr.in ());
+ }
+ else // if (pl_mode_interactive)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Press <Enter> to tear down application\n"));
+ char dummy [256];
+ std::cin.getline (dummy, 256);
+
+ // Tear down the assembly
+ ACE_DEBUG ((LM_DEBUG,
+ "Plan_Launcher: destroy the application.....\n"));
+ if (! launcher.teardown_plan (uuid))
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) CIAO_PlanLauncher:tear down assembly failed: "
+ "unkonw plan uuid.\n"));
+ }
+ }
+ else if (mode == pl_mode_redeployment && new_deployment_plan_url != 0) // do redeployment
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Plan_Launcher: reconfigure application assembly.....\n"));
+
+ CORBA::String_var uuid;
+
+ if (package_names != 0)
+ uuid = launcher.re_launch_plan (new_deployment_plan_url,
+ package_names,
+ use_package_name,
+ use_repoman);
+ else
+ uuid = launcher.re_launch_plan (new_deployment_plan_url,
+ package_types,
+ use_package_name,
+ use_repoman);
+
+ if (uuid.in () == 0)
+ {
+ ACE_ERROR ((LM_ERROR, "(%P|%t) Plan_Launcher: Error re-launching plan\n"));
+ return -1;
+ }
+ }
+ else if (mode == pl_mode_stop_by_dam) // tear down by DAM
+ {
+ dapp_mgr = read_dap_ior (orb.in ());
+
+ if (CORBA::is_nil (dapp_mgr.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) CIAO_PlanLauncher:tear down assembly failed: "
+ "nil DomainApplicationManager reference\n"));
+ return -1;
+ }
+
+ // Tear down the assembly
+ ACE_DEBUG ((LM_DEBUG,
+ "Plan_Launcher: destroy the application.....\n"));
+ launcher.teardown_plan (dapp_mgr.in ());
+ }
+ else if (mode == pl_mode_stop_by_uuid) // tear down by plan_uuid
+ {
+ // Tear down the assembly
+ ACE_DEBUG ((LM_DEBUG,
+ "Plan_Launcher: destroy the application.....\n"));
+ if (! launcher.teardown_plan (plan_uuid))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_PlanLauncher:tear down assembly failed: "
+ "unkown plan uuid.\n"));
+ }
+ }
+
+ orb->destroy ();
+ }
+ catch (const Plan_Launcher_i::Deployment_Failure&)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Deployment failed. Plan_Launcher exiting.\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("(%P|%t) Plan_Launcher: ");
+
+ return -1;
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) Plan_Launcher: Unknown exception.\n"));
+ return -1;
+ }
+
+ return 0;
+ }
+ }
+}
+
+using namespace CIAO::Plan_Launcher;
+
+int
+ACE_TMAIN (int argc,
+ ACE_TCHAR *argv[])
+{
+ return run_main_implementation (argc, argv);
+}
diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc
new file mode 100644
index 00000000000..f264738108a
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher.mpc
@@ -0,0 +1,33 @@
+// -*- MPC -*-
+// $Id$
+
+project(Plan_Launcher_Impl) : ciao_servant_dnc, ciao_config_handlers, ciao_executionmanager_stub, ciao_plan_generator {
+ sharedname = Plan_Launcher_Impl
+
+ dynamicflags = PLAN_LAUNCHER_IMPL_BUILD_DLL
+
+ Source_Files {
+ ../ExecutionManager/DAM_Map.cpp
+ Plan_Launcher_Impl.cpp
+ }
+
+ Header_Files {
+ ../ExecutionManager/DAM_Map.h
+ Plan_Launcher_Impl.h
+ Plan_Launcher_Impl_Export.h
+ }
+}
+
+project(Plan_Launcher) : ciao_server_dnc, ciao_config_handlers, ciao_executionmanager_stub, ciao_plan_generator {
+ exename = plan_launcher
+
+ after += Plan_Launcher_Impl
+ libs += Plan_Launcher_Impl
+
+ Source_Files {
+ Plan_Launcher.cpp
+ }
+
+ Header_Files {
+ }
+}
diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
new file mode 100644
index 00000000000..9afc6a69dc4
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.cpp
@@ -0,0 +1,418 @@
+// $Id$
+#include "Plan_Launcher_Impl.h"
+#include "orbsvcs/CosNamingC.h"
+#include "Config_Handlers/XML_File_Intf.h"
+#include "Config_Handlers/DnC_Dump.h"
+
+namespace CIAO
+{
+ namespace Plan_Launcher
+ {
+ // @todo make this a private method
+ static CORBA::Object_ptr
+ fetch_reference_naming (CORBA::ORB_ptr orb)
+ {
+ CORBA::Object_var tmp =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var pns =
+ CosNaming::NamingContext::_narrow (tmp.in ());
+
+ if (CORBA::is_nil (pns.in ()))
+ {
+ return CORBA::Object::_nil ();
+ }
+
+ CosNaming::Name name (1);
+ name.length (1);
+
+ name[0].id = CORBA::string_dup ("ExecutionManager");
+
+ return pns->resolve (name);
+ }
+
+ Plan_Launcher_i::Plan_Launcher_i ()
+ : em_ (), pg_ ()
+ {
+ }
+
+ bool
+ Plan_Launcher_i::init (const char *em_ior,
+ CORBA::ORB_ptr orb,
+ bool use_repoman,
+ bool rm_use_naming,
+ const char *rm_name)
+ {
+ CORBA::Object_var obj;
+
+ // EM
+ if (em_ior == 0)
+ {
+ obj = fetch_reference_naming (orb);
+ }
+ else
+ {
+ obj = orb->string_to_object (em_ior);
+ }
+
+ this->em_ = ::CIAO::ExecutionManagerDaemon::_narrow (obj.in ());
+
+ if (CORBA::is_nil (this->em_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_PlanLauncher: nil Execution"
+ " Manager reference, narrow failed\n"));
+ return false;
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) CIAO_PlanLauncher: Obtained Execution"
+ " Manager ref \n"));
+ }
+
+ if (use_repoman)
+ {
+ return pg_.init (orb, rm_use_naming, rm_name);
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+
+ const char *
+ Plan_Launcher_i::launch_plan (const char *deployment_plan_uri,
+ const char *package_uri,
+ bool use_package_name,
+ bool use_repoman)
+ ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Parsing plan...\n"));
+ }
+
+ CIAO::Config_Handlers::XML_File_Intf intf (deployment_plan_uri);
+
+ ::Deployment::DeploymentPlan_var plan =
+ intf.get_plan ();
+
+ // Use the package name(s) or type(s) to modify the location of all the
+ // artifacts in DeploymentPlan.
+ if (use_repoman)
+ {
+ // @todo check return value
+ pg_.generate_plan (plan, package_uri, use_package_name);
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Parsing complete....\n"));
+ }
+
+ return this->launch_plan (plan.in ());
+ }
+
+ const char *
+ Plan_Launcher_i::launch_plan (const ::Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure))
+ {
+ try
+ {
+ if (CORBA::is_nil (this->em_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("CIAO::Plan_Launcher_i: ")
+ ACE_TEXT ("launch_plan called witn an uninitialized EM.\n")));
+ return 0;
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("CIAO::Plan_Launcher_i: " )
+ ACE_TEXT ("about to call this->em_->preparePlan\n")));
+ }
+
+ ::Deployment::DomainApplicationManager_var dam (this->em_->preparePlan (plan, 1));
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("CIAO::Plan_Launcher_i: " )
+ ACE_TEXT ("after to call this->em_->preparePlan\n")));
+ }
+
+ if (CORBA::is_nil (dam.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) CIAO_PlanLauncher:preparePlan call failed: "
+ "nil DomainApplicationManager reference\n"));
+ return 0;
+ }
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: Obtained DAM ref \n"));
+ }
+
+ ::Deployment::Properties_var properties;
+ ACE_NEW_RETURN (properties,
+ Deployment::Properties,
+ 0);
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: start Launch application...\n"));
+ }
+
+ // Dont not start the Application immediately since it violates
+ // the semantics of component activation sequence
+ int start = 0;
+
+ dam->startLaunch (properties.in (), 0);
+
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+
+ // Call finish Launch to complete the connections
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: finish Launch application...\n"));
+ dam->finishLaunch (start, false); // is_ReDAC by default is <false>
+
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+
+ // Call start to activate components
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: start activating components...\n"));
+ dam->start ();
+
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+
+ if (CIAO::debug_level ())
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("CIAO_PlanLauncher: ")
+ ACE_TEXT ("Application Deployed successfully\n")));
+
+ map_.bind_dam_reference (plan.UUID.in (),
+ Deployment::DomainApplicationManager::_duplicate (dam.in ()));
+ }
+ catch (const Deployment::ResourceNotAvailable& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "EXCEPTION: ResourceNotAvaiable exception caught: %s,\n"
+ "Type: %s\n"
+ "Property: %s\n"
+ "Element: %s\n"
+ "Resource: %s\n",
+ ex.name.in (),
+ ex.resourceType.in (),
+ ex.propertyName.in (),
+ ex.elementName.in (),
+ ex.resourceName.in ()));
+ throw Deployment_Failure ("");
+ }
+ catch (const Deployment::StartError& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "EXCEPTION: StartError exception caught: %s, %s\n",
+ ex.name.in (),
+ ex.reason.in ()));
+ throw Deployment_Failure ("");
+ }
+ catch (const Deployment::InvalidProperty& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "EXCEPTION: InvalidProperty exception caught: %s, %s\n",
+ ex.name.in (),
+ ex.reason.in ()));
+ throw Deployment_Failure ("");
+ }
+ catch (const Deployment::InvalidConnection& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "EXCEPTION: InvalidConnection exception caught: %s, %s\n",
+ ex.name.in (),
+ ex.reason.in ()));
+ throw Deployment_Failure ("");
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CORBA EXCEPTION: %s\n",
+ ex._info().fast_rep()));
+ throw Deployment_Failure ("");
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "EXCEPTION: non-CORBA exception\n"));
+ throw Deployment_Failure ("");
+ }
+
+ return CORBA::string_dup (plan.UUID.in ());
+ }
+
+ ::Deployment::DomainApplicationManager_ptr
+ Plan_Launcher_i::get_dam (const char *uuid)
+ {
+ if (!this->map_.is_plan_available (uuid))
+ {
+ // Note: we could do an exhaustive (and expensive!) search of the DAMS
+ // on our EM at this point, if we wanted. In most cases, though, this
+ // would not produce a different result.
+ return Deployment::DomainApplicationManager::_nil ();
+ }
+ return this->map_.fetch_dam_reference (uuid);
+ }
+
+ bool
+ Plan_Launcher_i::teardown_plan (const char *uuid)
+ {
+ // Since people could always run another instance of the Plan_Launcher
+ // executable to tear down a plan, so we could NOT rely on the local
+ // DAM_Map to fetch DAM obj reference. Instead, we make a remote call
+ // on ExecutionManager to fetch it.
+ try
+ {
+ ::Deployment::DomainApplicationManager_var dapp_mgr =
+ this->em_->getManager (uuid);
+
+ if (!::CORBA::is_nil (dapp_mgr.in ()))
+ {
+ dapp_mgr->destroyApplication ();
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+ }
+
+ // Note that we should ask the DAM to tell EM whether the DAM should
+ // be destroyed
+ this->destroy_dam_by_plan (uuid);
+ }
+ }
+ catch (const CORBA::Exception&)
+ {
+ // @todo the destroy_dam_by_plan could give a stoperror exception
+ // we should handle
+ ACE_ERROR ((LM_ERROR, "Unable to find DomainApplicationManager "
+ "for plan with uuid: %s\n", uuid));
+ return false;
+ }
+
+ return true;
+ }
+
+ bool
+ Plan_Launcher_i::teardown_plan (::Deployment::DomainApplicationManager_ptr dam)
+ {
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: destroy the application.....\n"));
+ }
+
+ dam->destroyApplication ();
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+ }
+
+ this->destroy_dam (dam);
+
+ return true;
+ }
+
+ void
+ Plan_Launcher_i::destroy_dam (::Deployment::DomainApplicationManager_ptr dam)
+ {
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: destroy the manager.....\n"));
+ }
+
+ this->em_->destroyManager (dam);
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+ }
+ }
+
+ void
+ Plan_Launcher_i::destroy_dam_by_plan (const char* plan_uuid)
+ {
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: destroy the manager.....\n"));
+ }
+
+ this->em_->destroyManagerByPlan (plan_uuid);
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG, "[success]\n"));
+ }
+ }
+
+ const char *
+ Plan_Launcher_i::re_launch_plan (const char *deployment_plan_uri,
+ const char *package_uri,
+ bool use_package_name,
+ bool use_repoman)
+ ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure))
+ {
+ CIAO::Config_Handlers::XML_File_Intf intf (deployment_plan_uri);
+
+ ::Deployment::DeploymentPlan_var plan =
+ intf.get_plan ();
+
+ // Use the package name(s) or type(s) to modify the location of all the
+ // artifacts in DeploymentPlan.
+ if (use_repoman)
+ {
+ // @todo use return value
+ pg_.generate_plan (plan, package_uri, use_package_name);
+ }
+
+ return this->re_launch_plan (plan.in ());
+ }
+
+ const char *
+ Plan_Launcher_i::re_launch_plan (const ::Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((Plan_Launcher_i::Deployment_Failure))
+ {
+
+ if (CORBA::is_nil (this->em_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("CIAO::Plan_Launcher_i: ")
+ ACE_TEXT ("re_launch_plan called witn an uninitialized EM.\n")));
+ return 0;
+ }
+
+ this->em_->perform_redeployment (plan);
+
+ if (CIAO::debug_level ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO_PlanLauncher: new plan redeployed ...\n"));
+ }
+
+ return CORBA::string_dup (plan.UUID.in ());
+ }
+ }
+}
diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
new file mode 100644
index 00000000000..2212c00333f
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl.h
@@ -0,0 +1,101 @@
+/**
+ * $Id$
+ * @file Plan_Launcher_Impl.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Contains the Plan_Launcher_i class, which can be used by
+ * applications to launch component assemblies.
+ */
+#ifndef PLAN_LAUNCHER_IMPL_H
+#define PLAN_LAUNCHER_IMPL_H
+
+#include "Plan_Launcher_Impl_Export.h"
+#include "ciao/CIAO_common.h"
+#include "DAnCE/ExecutionManager/DAM_Map.h"
+#include "DAnCE/Interfaces/ExecutionManagerDaemonC.h"
+#include "DAnCE/Plan_Generator/Plan_Generator_Impl.h"
+
+namespace CIAO
+{
+ namespace Plan_Launcher
+ {
+ /**
+ * @class Plan_Launcher_i
+ * @brief This class launches and manages deployment plans.
+ */
+ class Plan_Launcher_Impl_Export Plan_Launcher_i
+ {
+ public:
+ class Deployment_Failure {
+ public:
+ Deployment_Failure (const ACE_CString &error)
+ : error_ (error)
+ {
+ }
+
+ ACE_CString error_;
+ };
+
+ Plan_Launcher_i ();
+
+
+ bool init (const char *em_ior,
+ CORBA::ORB_ptr orb,
+ bool use_repoman = false,
+ bool rm_use_naming = false,
+ const char *rm_name = 0);
+
+ /**
+ * @brief Launch a plan, given a deployment plan URI
+ * @param deployment_plan_uri A uri that points ot a valid deployment plan
+ * @returns a string containing the UUID of the plan. Null indicates failure.
+ */
+ const char * launch_plan (const char *deployment_plan_uri,
+ const char *package_uri = 0,
+ bool use_package_name = true,
+ bool use_repoman = false)
+ ACE_THROW_SPEC ((Deployment_Failure));
+
+ const char * re_launch_plan (const char *deployment_plan_uri,
+ const char *package_uri = 0,
+ bool use_package_name = true,
+ bool use_repoman = false)
+ ACE_THROW_SPEC ((Deployment_Failure));
+
+ /**
+ * @brief Launch a plan, given an IDL deployment plan
+ * @param plan A valid IDL deployment plan
+ * @returns a string containing the UUID of the plan. Null indicates failure.
+ */
+ const char * launch_plan (const ::Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((Deployment_Failure));
+
+ const char * re_launch_plan (const ::Deployment::DeploymentPlan &plan)
+ ACE_THROW_SPEC ((Deployment_Failure));
+
+ /// Returns the DAM associated with a given plan URI
+ ::Deployment::DomainApplicationManager_ptr get_dam (const char *uuid);
+
+ /// Tears down a plan given the UUID
+ bool teardown_plan (const char *uuid);
+
+ bool teardown_plan (::Deployment::DomainApplicationManager_ptr dam);
+
+ void destroy_dam (::Deployment::DomainApplicationManager_ptr dam);
+
+ void destroy_dam_by_plan (const char * plan_uuid);
+
+ private:
+ ::CIAO::ExecutionManagerDaemon_var em_;
+
+ /// Local map for DAMs, to save expensive UUID lookups.
+ Execution_Manager::DAM_Map map_;
+
+ CIAO::Plan_Generator::Plan_Generator_i pg_;
+ };
+
+ }
+}
+
+
+#endif /* PLAN_LAUNCHER_IMPL_H */
diff --git a/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h
new file mode 100644
index 00000000000..1c85d1b98c9
--- /dev/null
+++ b/modules/CIAO/DAnCE/Plan_Launcher/Plan_Launcher_Impl_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s Config_Handlers
+// ------------------------------
+#ifndef PLAN_LAUNCHER_IMPL_EXPORT_H
+#define PLAN_LAUNCHER_IMPL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PLAN_LAUNCHER_IMPL_HAS_DLL)
+# define PLAN_LAUNCHER_IMPL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PLAN_LAUNCHER_IMPL_HAS_DLL */
+
+#if !defined (PLAN_LAUNCHER_IMPL_HAS_DLL)
+# define PLAN_LAUNCHER_IMPL_HAS_DLL 1
+#endif /* ! PLAN_LAUNCHER_IMPL_HAS_DLL */
+
+#if defined (PLAN_LAUNCHER_IMPL_HAS_DLL) && (PLAN_LAUNCHER_IMPL_HAS_DLL == 1)
+# if defined (PLAN_LAUNCHER_IMPL_BUILD_DLL)
+# define Plan_Launcher_Impl_Export ACE_Proper_Export_Flag
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_LAUNCHER_IMPL_BUILD_DLL */
+# define Plan_Launcher_Impl_Export ACE_Proper_Import_Flag
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_LAUNCHER_IMPL_BUILD_DLL */
+#else /* PLAN_LAUNCHER_IMPL_HAS_DLL == 1 */
+# define Plan_Launcher_Impl_Export
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARATION(T)
+# define PLAN_LAUNCHER_IMPL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_LAUNCHER_IMPL_HAS_DLL == 1 */
+
+// Set PLAN_LAUNCHER_IMPL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_LAUNCHER_IMPL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_LAUNCHER_IMPL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_LAUNCHER_IMPL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_LAUNCHER_IMPL_NTRACE */
+
+#if (PLAN_LAUNCHER_IMPL_NTRACE == 1)
+# define PLAN_LAUNCHER_IMPL_TRACE(X)
+#else /* (PLAN_LAUNCHER_IMPL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_LAUNCHER_IMPL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_LAUNCHER_IMPL_NTRACE == 1) */
+
+#endif /* PLAN_LAUNCHER_IMPL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/RepositoryManager/Options.cpp b/modules/CIAO/DAnCE/RepositoryManager/Options.cpp
new file mode 100644
index 00000000000..a9fd5a67d3d
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/Options.cpp
@@ -0,0 +1,147 @@
+// $Id$
+
+// Options.cpp,v Stoyan
+
+#include "ace/Get_Opt.h"
+#include "ace/ARGV.h"
+#include "Options.h"
+
+
+bool
+Options::parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("ov:n:l:u:t:icfdsTNa"));
+
+ int c;
+
+ while ((c = get_opt ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ this->write_to_ior_ = true;
+ this->register_with_ns_ = false;
+ break;
+ case 'v':
+ this->write_to_ior_ = false;
+ this->register_with_ns_ = true;
+ this->repoman_name_ = get_opt.opt_arg ();
+ break;
+ case 'i':
+ this->install_ = true;
+ break;
+ case 'c':
+ this->create_ = true;
+ break;
+ case 'd':
+ this->delete_ = true;
+ break;
+ case 'f':
+ this->find_ = true;
+ break;
+ case 's':
+ this->shutdown_ = true;
+ break;
+ case 'n':
+ this->name_ = get_opt.opt_arg ();
+ break;
+ case 'l':
+ this->path_ = get_opt.opt_arg ();
+ break;
+ case 'u':
+ this->uuid_ = get_opt.opt_arg ();
+ break;
+ case 'N':
+ this->all_names_ = true;
+ break;
+ case 'T':
+ this->all_types_ = true;
+ break;
+ case 't':
+ this->names_by_type_ = true;
+ this->type_ = get_opt.opt_arg ();
+ break;
+ // Usage fallthrough.
+ default:
+ this->usage ();
+ return false;
+ }
+
+ if ((this->name_ == "")
+ && (this->shutdown_ == false)
+ && (this->uuid_ == "")
+ && (this->all_names_ == false)
+ && (this->all_types_ == false)
+ && (this->names_by_type_ == false))
+ {
+ this->usage ();
+ return false;
+ }
+ else if (this->name_ != "")
+ {
+ if (!(this->install_ || this->create_ || this->find_ || this->delete_))
+ {
+ this->usage ();
+ return false;
+ }
+ else if (this->install_ && this->path_ == "")
+ {
+ this->usage ();
+ return false;
+ }
+ else if (this->create_ && this->path_ == "")
+ {
+ this->usage ();
+ return false;
+ }
+ }
+ else if (this->uuid_ != "")
+ {
+ if (!this->find_)
+ {
+ this->usage ();
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/// @todo Exit is not nice, return -1 so that the caller can do something and
+/// we don't exit abruptly
+void Options::usage (void)
+{
+ ACE_DEBUG ((LM_INFO, "OPTIONS: \n\
+ -o <using ior file> \n\
+ -v <: name of naming service> \n\
+ -s <shutdown> \n\
+ -n <:name> \n\
+ [-i <install> -l <:path>] \n\
+ [-c <create> -l <:path>] \n\
+ [-d <delete>] \n\
+ [-f <find>] \n\
+ -u <:uuid> \n\
+ [-f <find>] \n\
+ -a <names by type> \n\
+ [-t <:type>] \n\
+ -N <all names> \n\
+ -T <all types> \n"));
+}
+
+Options::Options (void)
+ : name_ (""),
+ uuid_ (""),
+ type_ (""),
+ path_ (""),
+ delete_ (false),
+ install_ (false),
+ create_ (false),
+ find_ (false),
+ all_names_ (false),
+ all_types_ (false),
+ names_by_type_ (false),
+ shutdown_ (false),
+ register_with_ns_ (false),
+ write_to_ior_ (true),
+ repoman_name_ ("")
+{
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/Options.h b/modules/CIAO/DAnCE/RepositoryManager/Options.h
new file mode 100644
index 00000000000..845e339cedd
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/Options.h
@@ -0,0 +1,93 @@
+// $Id$
+
+/* -*- C++ -*- */
+
+//=============================================================================
+/**
+ * @file Options.h
+ *
+ * $Id$
+ *
+ * TheOptions is an Options class wrapped into an ACE_Singleton
+ * with Null_Mutex because the client is single-threaded.
+ *
+ *
+ * @author Stoyan Paunov
+ */
+//=============================================================================
+
+
+#ifndef RM_OPTIONS_H
+#define RM_OPTIONS_H
+
+#include "ace/Get_Opt.h"
+#include "ace/SString.h" //for ACE_CString
+#include "ace/Singleton.h" //for ACE_Singleton
+#include "ace/Null_Mutex.h" //for ACE_Null_Mutex
+
+//forward declaration
+class Options;
+
+typedef ACE_Singleton <Options, ACE_Null_Mutex> TheOptions;
+
+class Options
+{
+public:
+
+ ///constructor
+ Options (void);
+
+ /// parses commandline arguments
+ bool parse_args (int argc, ACE_TCHAR *argv[]);
+
+ /// Name of package
+ ACE_CString name_;
+
+ /// Name of package
+ ACE_CString uuid_;
+
+ /// Type of package
+ ACE_CString type_;
+
+ /// specifies the local path for install
+ ACE_CString path_;
+
+ /// delete the name_
+ bool delete_;
+
+ /// installs the name_
+ bool install_;
+
+ /// creates the name_
+ bool create_;
+
+ /// finds the name_
+ bool find_;
+
+ /// get all Names
+ bool all_names_;
+
+ /// get all types
+ bool all_types_;
+
+ /// find all names by type
+ bool names_by_type_;
+
+ /// shutdown the RepositoryManagerDemon
+ bool shutdown_;
+
+ // use naming service
+ bool register_with_ns_;
+
+ // use ior file
+ bool write_to_ior_;
+
+ // Name of RepoMan
+ ACE_CString repoman_name_;
+
+protected:
+ //usage function
+ void usage (void);
+};
+
+#endif /* RM_OPTIONS_H */
diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp
new file mode 100644
index 00000000000..d2ce75e8666
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.cpp
@@ -0,0 +1,256 @@
+// $Id$
+
+#include "ace/Log_Msg.h"
+#include "ciao/Deployment_DataC.h"
+#include "PC_Updater.h"
+#include "PC_Updater_T.h"
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+
+namespace
+{
+ const size_t TEMP_LEN = 1024;
+}
+
+using namespace PC_Updater_T;
+
+
+ //PATH of glory/gory to update the locations of the IADs
+ //
+ //PackageConfiguration something;
+ //ComponentPackageDescriptions basePackage;
+ //PackagedComponentImplementations implementation;
+ //ComponentImplementationDescription referencedImplementation;
+ //
+ //MONOLITHIC Component:
+ //MonolithicImplementationDescriptions monolithicImpl;
+ //NamedImplementationArtifacts primaryArtifact;
+ //ImplementationArtifactDescription referencedArtifact;
+ //::CORBA::StringSeq location;
+ //
+ //ASSEMBLY-BASED Component
+ //ComponentAssemblyDescriptions assemblyImpl;
+ //SubcomponentInstantiationDescriptions instance;
+ //ComponentPackageDescriptions package;
+ //...
+
+
+ /*
+ * PC_Updater Constructors
+ */
+
+PC_Updater::PC_Updater (const char* server_path, const char* package)
+: server_path_ (server_path),
+ file_list_ (),
+ package_ (package),
+ success_ (true)
+{
+}
+
+
+PC_Updater::PC_Updater (ACE_CString& server_path, ACE_CString& package)
+: server_path_ (server_path),
+ file_list_ (),
+ package_ (package),
+ success_ (true)
+{
+}
+
+ /*
+ * PC_Updater - Destructor
+ */
+
+PC_Updater::~PC_Updater ()
+{
+ this->clear_list ();
+}
+
+
+void PC_Updater::clear_list ()
+{
+ while (!this->file_list_.is_empty ())
+ {
+ ZIP_File_Info* inf = this->file_list_.delete_head ();
+
+ //deallocate the head of the filename list
+ delete inf;
+ }
+}
+
+
+ /*
+ * PC_Updater - Object update methods
+ */
+
+
+ // PackageConfiguration
+
+ bool PC_Updater::update (::Deployment::PackageConfiguration &pc)
+ {
+ //get the list of files in the package and figure out the names of all necessary files
+ if (!ZIP_Wrapper::file_list_info (const_cast <char*> (this->package_.c_str ()), this->file_list_))
+ return false;
+
+ update_sequence (pc.basePackage, this);
+
+ return this->success_;
+ }
+
+
+ // ComponentInterfaceDescription
+
+ void PC_Updater::update (::Deployment::ComponentInterfaceDescription &)
+ {
+ }
+
+ // Requirement
+
+ void PC_Updater::update (::Deployment::Requirement &)
+ {
+ }
+
+
+ // ComponentExternalPortEndpoint
+
+ void PC_Updater::update (::Deployment::ComponentExternalPortEndpoint &)
+ {
+ }
+
+
+
+ // ImplementationDependency
+
+ void PC_Updater::update (Deployment::ImplementationDependency &)
+ {
+ }
+
+ // ComponentPackageReference
+
+ void PC_Updater::update (::Deployment::ComponentPackageReference &)
+ {
+ }
+
+ // SubcomponentInstantiationDescription
+
+ void PC_Updater::update (::Deployment::SubcomponentInstantiationDescription &sid)
+ {
+ update_sequence (sid.basePackage, this);
+ }
+
+ // SubcomponentPortEndpoint
+
+ void PC_Updater::update (::Deployment::SubcomponentPortEndpoint& )
+ {
+ }
+
+ // AssemblyConnectionDescription
+
+ void PC_Updater::update (::Deployment::AssemblyConnectionDescription &)
+ {
+ }
+
+
+ // AssemblyPropertyMapping
+
+ void
+ PC_Updater::update (::Deployment::AssemblyPropertyMapping &)
+ {
+ }
+
+ // ComponentAssemblyDescription
+
+ void PC_Updater::update (::Deployment::ComponentAssemblyDescription& cad)
+ {
+ update_sequence (cad.instance, this);
+ }
+
+ // ImplementationArtifactDescription
+
+ void PC_Updater::update (::Deployment::ImplementationArtifactDescription &iad)
+ {
+ const char* location = CORBA::string_dup (iad.location[0]);
+
+ //create an iterator
+ ACE_Double_Linked_List_Iterator<ZIP_File_Info> iter (this->file_list_);
+
+ //find the correct path and return
+ while (!iter.done ())
+ {
+ const char* full_path = iter.next ()->name_.c_str ();
+ //weird. Need to call next to get current ?!?!
+
+ //is it an implementation artifact?
+ const char* name = ACE_OS::strstr (full_path, "implementations/");
+ if (name)
+ {
+ //now check if the name matches
+ name = ACE_OS::strstr (full_path, iad.location[0]);
+
+ if (name)
+ {
+ ACE_CString loc (this->server_path_);
+ loc += "/implementations/";
+ loc += location;
+
+ iad.location[0] = CORBA::string_dup (loc.c_str ());
+
+ //cout << "Location after update: " << iad.location[0] << endl << endl;
+ return;
+ }
+ }
+ iter++;
+ }
+
+ ACE_ERROR ((LM_ERROR,
+ "[PC_Updater::update] Unable to update: %s!\n",
+ location));
+
+ this->success_ = false;
+ }
+
+ // NamedImplementationArtifact
+
+ void PC_Updater::update (::Deployment::NamedImplementationArtifact &nia)
+ {
+ update (nia.referencedArtifact);
+ }
+
+ // ImplementationRequirement
+ void PC_Updater::update (::Deployment::ImplementationRequirement &)
+ {
+ }
+
+ // MonolithicImplementationDescription
+ void PC_Updater::update (::Deployment::MonolithicImplementationDescription &mid)
+ {
+ update_sequence (mid.primaryArtifact, this);
+ }
+
+ // Capability
+ void PC_Updater::update (::Deployment::Capability &)
+ {
+ }
+
+ // ComponentImplementationDescription
+ void PC_Updater::update (::Deployment::ComponentImplementationDescription &cid)
+ {
+ update_sequence (cid.assemblyImpl, this);
+ update_sequence (cid.monolithicImpl, this);
+ }
+
+ // PackagedComponentImplementation
+ void PC_Updater::update (::Deployment::PackagedComponentImplementation &pci)
+ {
+ PC_Updater::update (pci.referencedImplementation);
+ }
+
+ // ComponentPackageDescription
+ void PC_Updater::update (::Deployment::ComponentPackageDescription &comppkgdesc)
+ {
+ update_sequence (comppkgdesc.implementation, this);
+ }
+
+
+ // Property
+ void PC_Updater::update (Deployment::Property& )
+ {
+ }
diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h
new file mode 100644
index 00000000000..9c6d326f54d
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater.h
@@ -0,0 +1,113 @@
+
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PC_Updater.h
+ *
+ * $Id$
+ *
+ * This class is used to update the location field of the implementation
+ * artifacts in the PackageConfiguration, so that they point to the
+ * physical libraries on the collocated HTTP server
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PC_UPDATER_H
+#define PC_UPDATER_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/DeploymentC.h"
+#include "ace/SString.h" //for the ACE_CString
+
+#include "ZIP_Wrapper.h" //Wrapper around zzip
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+#include "ace/Malloc_Allocator.h" //for ACE_New_Allocator needed by the doubly link list
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/**
+ * @class PC_Updater
+ *
+ * This class defines a set of overloaded methods used to update
+ * the contents of a PackageConfiguration. More specifically the class
+ * goes through the PackageConfiguration and updates the locations of the
+ * artifacts, wrt to their location on the HTTP server.
+ */
+class PC_Updater
+{
+public:
+
+ /// Constructors
+
+ PC_Updater (const char* server_path, const char* package);
+ PC_Updater (ACE_CString& server_path, ACE_CString& package);
+
+ ~PC_Updater ();
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ bool update (::Deployment::PackageConfiguration &pc);
+
+ void update (::Deployment::Property &property);
+
+ void update (::Deployment::AssemblyConnectionDescription &acd);
+
+ void update (::Deployment::AssemblyPropertyMapping &apm);
+
+ void update (::Deployment::ComponentPackageDescription &comppkgdesc);
+
+ void update (::Deployment::MonolithicImplementationDescription &mid);
+
+ void update (::Deployment::PackagedComponentImplementation &pci);
+
+ void update (::Deployment::SubcomponentPortEndpoint &spe);
+
+ void update (::Deployment::Requirement &requirement);
+
+ void update (::Deployment::ComponentExternalPortEndpoint &cepe);
+
+ void update (::Deployment::ComponentPackageReference &cpr);
+
+ void update (::Deployment::ComponentImplementationDescription &cid);
+
+ void update (::Deployment::SubcomponentInstantiationDescription &sid);
+
+ void update (::Deployment::NamedImplementationArtifact &named_implementation);
+
+ void update (::Deployment::ComponentInterfaceDescription &cid);
+
+ void update (::Deployment::Capability &capability);
+
+ void update (::Deployment::ImplementationArtifactDescription &iad);
+
+ void update (::Deployment::ImplementationRequirement &ir);
+
+ void update (::Deployment::ImplementationDependency &id);
+
+ void update (::Deployment::ComponentAssemblyDescription& cad);
+
+protected:
+
+ void clear_list ();
+
+private:
+
+ ACE_CString server_path_;
+
+ /// create a doubly link list
+ //ACE_New_Allocator allocator_;
+ ACE_Double_Linked_List<ZIP_File_Info> file_list_;
+
+ ACE_CString package_;
+ bool success_;
+};
+
+#include /**/ "ace/post.h"
+
+#endif /* PC_UPDATER_H */
diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp
new file mode 100644
index 00000000000..a5f5ec5fb2e
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.cpp
@@ -0,0 +1,20 @@
+// $Id$
+#ifndef PC_UPDATER_T_C
+#define PC_UPDATER_T_C
+#include "PC_Updater.h"
+#include "PC_Updater_T.h"
+
+namespace PC_Updater_T
+{
+ /// Dumps a sequence
+ template <typename SEQUENCE>
+ void update_sequence (SEQUENCE &seq, PC_Updater* updater)
+ {
+ CORBA::ULong const size = seq.length ();
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ updater->update (seq[i]);
+ }
+}
+
+#endif /* PC_Updater_C */
diff --git a/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h
new file mode 100644
index 00000000000..0696c685e2b
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/PC_Updater_T.h
@@ -0,0 +1,40 @@
+
+/* -*- C++ -*- */
+
+//==================================================================
+/**
+ * file PC_Updater_T.h
+ *
+ * $Id$
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//=====================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_PC_UPDATER_T_H
+#define CIAO_CONFIG_HANDLERS_PC_UPDATER_T_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-lite.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace PC_Updater_T
+{
+ template <typename SEQUENCE>
+ static void update_sequence (SEQUENCE &seq);
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "PC_Updater_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("PC_Updater_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_HANDLERS_PC_Updater_T_H*/
diff --git a/modules/CIAO/DAnCE/RepositoryManager/README b/modules/CIAO/DAnCE/RepositoryManager/README
new file mode 100644
index 00000000000..322b00098ac
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/README
@@ -0,0 +1,46 @@
+This is the README file for the Repository Manager (RM).
+
+Building RM:
+In order to be able to compile the RM you need to have ZLIB lib because the RM
+uses it to read the contents of CCM packages. In order to compile the RM
+successfully you will need to do the following:
+1.Download the binary version of ZLIB or build it yourself
+3.Create an "include" and a "lib" subdirectory. Then copy the libraries files into
+ the "lib" subdirectory and copy zlib.h into the "include" subdirectory.
+4.Set $ZLIB_ROOT to point to the directories where you placed the libraries and
+ the include files.
+5.Turn on zzip and zlib in default.features for MPC.
+6.MPC will handle the rest.
+
+If you want to get the component package through http server:
+1.Be sure to set JAWS_DOCUMENT_ROOT to the installation path of the RepoMan, i.e., $CIAO_ROOT/DAnCE/RepositoryManager.
+2.Start JAWS: $ACE_ROOT/apps/JAWS/server/main
+
+Start RM:
+1.Using ior file:
+ RepositoryManagerDaemon -o
+2.Using Naming Service:
+ RepositoryManagerDaemon -v [NameofRM]
+
+Using RMadmin:
+1.Install component package: (use BasicSP for example)
+ Be sure you have BasicSP.cpk in the $CIAO_ROOT/DAnCE/RepositoryManager/packages
+ > RMadmin -o -n BasicSP -i -l packages/BasicSP.cpk
+ or
+ > RMadmin -o -n BasicSP -i -l http://127.0.0.1:5432/packages/BasicSP.cpk (If the JAWS is started)
+ This will create the BasicSP directory, BasicSP.cpk file and BasicSP.epc file in the
+ $CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManager/
+2.Delete component package: (use BasicSP for example)
+ > RMadmin -o -n BasicSP -d
+3.Find component package by its name: (use BasicSP for example)
+ > RMadmin -o -n BasicSP -f
+4.Stop RM:
+ > RMadmin -o -s
+ This will create the RM_record file in the $CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManager/ which record the
+ names and UUIDs of the installed component packages.
+
+
+
+
+
+
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp
new file mode 100644
index 00000000000..cd4b92669d0
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.cpp
@@ -0,0 +1,265 @@
+// $Id$
+
+#include "RM_Helper.h"
+#include "ace/Auto_Ptr.h" //for Auto_Ptr
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_unistd.h" //for close
+#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir
+#include "ace/OS_NS_string.h"
+
+
+void
+RM_Helper::pc_to_cdr (const Deployment::PackageConfiguration& pc, TAO_OutputCDR& cdr)
+{
+ cdr << pc;
+}
+
+
+void
+RM_Helper::cdr_to_pc (Deployment::PackageConfiguration& pc, TAO_InputCDR& cdr)
+{
+ cdr >> pc;
+}
+
+
+bool
+RM_Helper::externalize (const Deployment::PackageConfiguration& pc, const char* path)
+{
+ size_t bufsiz = 0;
+ TAO_OutputCDR out (bufsiz);
+
+ RM_Helper::pc_to_cdr (pc, out);
+
+ const ACE_Message_Block* mb = out.begin ();
+
+ return write_pc_to_disk (path, *(const_cast<ACE_Message_Block*> (mb)));
+}
+
+
+bool
+RM_Helper::reincarnate (Deployment::PackageConfiguration& pc, const char* path)
+{
+ size_t length = 0;
+ ACE_Auto_Ptr<ACE_Message_Block> mb (read_pc_from_disk (path, length));
+
+ if (!mb.get ())
+ return false;
+
+ TAO_InputCDR in (mb.get ());
+
+ RM_Helper::cdr_to_pc (pc, in);
+
+ return true;
+}
+
+
+/// This function attempts to copy the file from a specified location
+/// to another specified location on the hard disk.
+bool
+RM_Helper::copy_from_disk_to_disk (const char* from_path, const char* to_path)
+{
+ if (ACE_OS::strcmp (from_path, to_path) == 0)
+ return true;
+
+ // Open the files
+ ACE_HANDLE from_handle = ACE_OS::open (from_path, O_RDONLY);
+ if (from_handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::copy_from_disk_to_disk] file open error")),
+ 0);
+
+ ACE_stat file_info;
+ ACE_OS::fstat (from_handle, &file_info);
+ ACE_UINT64 file_length = file_info.st_size;
+
+ ACE_HANDLE to_handle = ACE_OS::open (to_path, O_CREAT | O_TRUNC | O_WRONLY);
+ if (to_handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::copy_from_disk_to_disk] file creation error")),
+ 0);
+
+
+ // Read the contents of the file into the buffer and write the data to another file
+ ACE_Message_Block *mb = 0;
+ size_t length;
+ size_t number = 0;
+ bool last = false;
+
+ while (true)
+ {
+ if ((file_length - BUFSIZ*number) > BUFSIZ)
+ length = BUFSIZ;
+ else
+ {
+ length = static_cast<size_t> (file_length - BUFSIZ*number);
+ last = true;
+ }
+
+ mb = new ACE_Message_Block (length);
+
+ if (ACE_OS::read_n (from_handle, mb->wr_ptr (), length) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::copy_from_disk_to_disk] file read error")),
+ 0);
+
+ ++number;
+
+ mb->length (length);
+
+ for (ACE_Message_Block *curr = mb; curr != 0; curr = curr->cont ())
+ if (ACE_OS::write_n (to_handle, curr->rd_ptr (), curr->length ()) == -1)
+ {
+ mb->release ();
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::copy_from_disk_to_disk] file write error")),
+ 0);
+ }
+
+ mb->release ();
+
+ if (last)
+ break;
+ }
+
+ // Close the files
+ ACE_OS::close (from_handle);
+ ACE_OS::close (to_handle);
+
+ return true;
+}
+
+
+/// This function attempts to write a sequence of bytes from an
+/// ACE_Message_Block to a specified location. A 0 is returned
+/// in the case of an error and a 1 upon success
+bool RM_Helper::write_to_disk (
+ const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace
+ )
+{
+ ACE_stat stat;
+
+ if (ACE_OS::stat(full_path, &stat) != -1 && !replace)
+ return false;
+
+ // Open a file handle to the local filesystem
+ ACE_HANDLE handle = ACE_OS::open (full_path, O_CREAT | O_TRUNC | O_WRONLY);
+ if (handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::write_to_disk] file creation error")),
+ false);
+
+ // Write the data to the file
+ for (ACE_Message_Block * curr = &mb; curr != 0; curr = curr->cont ())
+ if (ACE_OS::write_n (handle, curr->rd_ptr(), curr->length()) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("write error")),
+ false);
+
+ // Close the file handle
+ ACE_OS::close (handle);
+
+ return true;
+}
+
+
+/// This function attempts to write a sequence of bytes from an
+/// ACE_Message_Block to a specified location. A 0 is returned
+/// in the case of an error and a 1 upon success
+///
+/// @note This function write the contents in a way that preserves the
+/// structure of the ACE_Message_Block. It is relevant for
+/// PackageConfigurations ONLY
+bool RM_Helper::write_pc_to_disk (
+ const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace
+ )
+{
+ ACE_stat stat;
+
+ if (ACE_OS::stat(full_path, &stat) != -1 && !replace)
+ return false;
+
+ // Open a file handle to the local filesystem
+ ACE_HANDLE const handle = ACE_OS::open (full_path, O_CREAT | O_TRUNC | O_WRONLY);
+ if (handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::write_to_disk] file creation error")),
+ false);
+
+ // write the data to the file
+ for (ACE_Message_Block * curr = &mb; curr != 0; curr = curr->cont ())
+ if (ACE_OS::write_n (handle, curr->rd_ptr(), curr->length()) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("write error")),
+ 0);
+
+ // Close the file handle
+ ACE_OS::close (handle);
+
+ return true;
+}
+
+
+/// Function to read the contents of a file from disk into an ACE_Message_Block
+/// returns a pointer to an ACE_Message_Block and updates the lenght on success
+/// 0 on failure
+ACE_Message_Block*
+RM_Helper::read_pc_from_disk (
+ const char* full_path,
+ size_t &length
+ )
+{
+ length = 0;
+
+ // Open the file
+ ACE_HANDLE const handle = ACE_OS::open (full_path, O_RDONLY);
+ if (handle == ACE_INVALID_HANDLE)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::read_mb_from_disk] file open error")),
+ 0);
+
+ ACE_stat file_info;
+ ACE_OS::fstat (handle, &file_info);
+
+ // Get and check the length of the file
+ length = static_cast<size_t> (file_info.st_size);
+
+ ACE_INT64 check = length;
+ if (check != file_info.st_size)
+ {
+ length = 0;
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::read_mb_from_disk] file length error")),
+ 0);
+ }
+
+ // Read the contents of the file into the buffer
+ ACE_Message_Block* mb = 0;
+ ACE_NEW_RETURN (mb, ACE_Message_Block (length + 1), 0);
+
+ if (ACE_OS::read_n (handle, mb->wr_ptr (), length) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[RM::read_mb_from_disk] file read error")),
+ 0);
+
+ mb->length (length);
+
+ // Close the file handle
+ ACE_OS::close (handle);
+
+ return mb;
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h
new file mode 100644
index 00000000000..f76764e3b11
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RM_Helper.h
@@ -0,0 +1,81 @@
+
+/* -*- C++ -*- */
+
+//=============================================================================
+/**
+ * @file RM_Helper.h
+ *
+ * $Id$
+ *
+ * This class aggregates a number of helper functions used by the
+ * CIAO RepositoryManager
+ *
+ *
+ * @author Stoyan Paunov
+ */
+//=============================================================================
+
+#ifndef RM_HELPER_H_
+#define RM_HELPER_H_
+
+
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "tao/CDR.h"
+#include "ace/Message_Block.h"
+
+
+class RM_Helper
+{
+public:
+
+ static void pc_to_cdr (const Deployment::PackageConfiguration& pc, TAO_OutputCDR& cdr);
+
+ static void cdr_to_pc (Deployment::PackageConfiguration& pc, TAO_InputCDR& cdr);
+
+ static bool externalize (const Deployment::PackageConfiguration& pc, const char* path);
+
+ static bool reincarnate (Deployment::PackageConfiguration& pc, const char* path);
+
+ /**
+ * Function that copies the file from a specified location to another
+ * specified location on the hard disk.
+ * @retval true on success
+ * @retval false on error
+ */
+ static bool copy_from_disk_to_disk (const char* from_path, const char* to_path);
+
+ /**
+ * Function that writes out a file to a specified location on the hard disk
+ * @retval true on success
+ * @retval false on already exists and replace == false
+ * @retval false on error
+ */
+ static bool write_to_disk (const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace = true
+ );
+
+ /**
+ * Function that writes out a file to a specified location on the hard disk
+ * @retval true on success
+ * @retval false on already exists and replace == false
+ * @retval 0 on error
+ * @note This function is relevant for PackageConfigurations ONLY
+ */
+ static bool write_pc_to_disk (const char* full_path,
+ ACE_Message_Block& mb,
+ bool replace = true);
+
+ /**
+ * Function to read the contents of a file from disk into an
+ * ACE_Message_Block returns a pointer to an ACE_Message_Block and updates
+ * the lenght on success
+ * @retval 0 on failure
+ */
+
+ static ACE_Message_Block* read_pc_from_disk (const char* full_path,
+ size_t &length);
+
+};
+
+#endif
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RMadmin.cpp b/modules/CIAO/DAnCE/RepositoryManager/RMadmin.cpp
new file mode 100644
index 00000000000..f61a9f2a71e
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RMadmin.cpp
@@ -0,0 +1,249 @@
+/* -*- C++ -*- */
+
+/***
+ * file RMClient.cpp
+ *
+ * $Id$
+ *
+ * A sample client to the RepositoryManager showcasing how to use it
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ * Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ **/
+
+#include "RepositoryManagerDaemonC.h"
+#include "Options.h"
+
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_unistd.h" //for close
+#include "ace/OS_NS_sys_stat.h" //for filesize and fstat and mkdir
+#include "ace/streams.h"
+
+#include "Config_Handlers/DnC_Dump.h"
+
+#include "RM_Helper.h" //to be able to externalize/internalize a PackageConfiguration
+#include "tao/CDR.h" //for TAO CDR classes
+#include "ace/Message_Block.h" //for ACE_Message_Block
+
+#include "Package_Handlers/PCD_Handler.h"
+
+#include "orbsvcs/CosNamingC.h"
+
+
+//IOR file of the RM
+static const char *ior = "file://RepositoryManagerDaemon.ior";
+
+// Name service of the RM
+static const char *RMname_service;
+
+/// main function that provides a sample interface for RM clients
+int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv,
+ "");
+
+
+ Options* options = TheOptions::instance ();
+ if (!options->parse_args (argc, argv))
+ return -1;
+
+ CORBA::Object_var obj;
+
+ if (options->write_to_ior_)
+ {
+ obj = orb->string_to_object (ior);
+ }
+
+ else if (options->register_with_ns_)
+ {
+ if (options->repoman_name_ != "")
+ RMname_service = const_cast<char*> (options->repoman_name_.c_str ());
+
+ // Naming Service related operations
+ CORBA::Object_var naming_context_object =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_context_object.in ());
+
+ // Initialize the Naming Sequence
+ CosNaming::Name name (1);
+ name.length (1);
+
+ // String dup required for MSVC6
+ name[0].id = CORBA::string_dup (RMname_service);
+
+ // Resolve object from name
+ obj = naming_context->resolve (name);
+ }
+
+
+ CIAO::RepositoryManagerDaemon_var rm =
+ CIAO::RepositoryManagerDaemon::_narrow (obj.in ());
+
+ if (CORBA::is_nil (rm.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire RepositoryManagerDaemon's objref\n"),
+ -1);
+ }
+
+ if (options->shutdown_)
+ {
+ rm->shutdown ();
+ }
+ else if (options->all_names_)
+ {
+ try
+ {
+ CORBA::StringSeq_var seq = rm->getAllNames ();
+ cout << "Known Names:\n";
+ for (size_t i = 0;
+ i < seq->length ();
+ ++i)
+ cout << seq[i] << endl;
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException caught!" << ex << "\n";
+ return 0;
+ }
+ }
+ else if (options->all_types_)
+ {
+ try
+ {
+ CORBA::StringSeq_var seq = rm->getAllTypes ();
+ cout << "Known Component Interface Types:\n";
+ for (size_t i = 0;
+ i < seq->length ();
+ ++i)
+ cout << seq[i] << endl;
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException caught!" << ex << "\n";
+ return 0;
+ }
+ }
+ else if (options->type_ != "" && options->names_by_type_)
+ {
+ try
+ {
+ CORBA::StringSeq_var seq = rm->findNamesByType (options->type_.c_str ());
+ cout << "Known Component Interface Types:\n";
+ for (size_t i = 0;
+ i < seq->length ();
+ ++i)
+ cout << seq[i] << endl;
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException caught!" << ex << "\n";
+ return 0;
+ }
+ }
+ else if (options->install_)
+ {
+ try
+ {
+ rm->installPackage (options->name_.c_str (), options->path_.c_str (), false);
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException caught!" << ex << "\n";
+ return 0;
+ }
+
+ cout << "\nReassuring that the package in the repository ..." << endl;
+ try
+ {
+ Deployment::PackageConfiguration_var pc = rm->findPackageByName (options->name_.c_str ());
+ cout << "The package was found!" << endl;
+ cout << "Label: " << pc->label << endl;
+ cout << "UUID: " << pc->UUID << endl;
+ }
+ catch (CORBA::Exception &)
+ {
+ cout << "\nError! Package not found!" << endl;
+ }
+ }
+ else if (options->create_)
+ {
+ try
+ {
+ // Change the working dir.
+ char cwd [1024];
+ ACE_OS::getcwd (cwd, 1024);
+ ACE_CString descriptor_dir (cwd);
+ descriptor_dir += "/packageDescriptors/RACE/descriptors/";
+ ACE_OS::chdir (descriptor_dir.c_str ());
+
+ Deployment::PackageConfiguration *pc = new Deployment::PackageConfiguration ();
+
+ // Parse the PCD to make sure that there are no package errors.
+ try
+ {
+ CIAO::Config_Handlers::Packaging::PCD_Handler::package_config ("default.pcd", *pc);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((
+ LM_ERROR,
+ "(%P|%t) [RM::retrieve_PC_from_descriptors] Error parsing the PCD\n"));
+
+ throw Deployment::PackageError ();
+ }
+
+ ACE_OS::chdir (cwd);
+
+ rm->createPackage (options->name_.c_str (), *pc, options->path_.c_str (), false);
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException caught!" << ex << "\n";
+ return 0;
+ }
+ }
+ else if (options->delete_)
+ {
+ try
+ {
+ rm->deletePackage (options->name_.c_str ());
+ cout << options->name_.c_str () << " deleted" << endl;
+ }
+ catch (CORBA::Exception & ex)
+ {
+ cout << "\nException: " << ex << endl;
+ }
+
+ }
+ else if (options->find_)
+ {
+ if (options->name_ != "")
+ {
+ Deployment::PackageConfiguration_var pc = rm->findPackageByName (options->name_.c_str ());
+ cout << "The package was found!" << endl;
+ //Deployment::DnC_Dump::dump (pc);
+ }
+ else
+ {
+ Deployment::PackageConfiguration_var pc = rm->findPackageByUUID (options->uuid_.c_str ());
+ cout << "The package was found!" << endl;
+ //Deployment::DnC_Dump::dump (pc);
+ }
+ }
+
+ orb->shutdown (1);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Unknown exception \n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp
new file mode 100644
index 00000000000..10d67721cd0
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.cpp
@@ -0,0 +1,279 @@
+
+/* -*- C++ -*- */
+
+//======================================================================
+/**
+ * @file RepositoryManager.cpp
+ *
+ * $Id$
+ *
+ * Description:
+ * Main driver program for the CIAO RepositoryManager
+ * Please run as follows:
+ * RepositoryManagerDaemon [int:nthreads]
+ *
+ * @author Stoyan Paunov
+ */
+//======================================================================
+
+#include "RepositoryManager_Impl.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/streams.h"
+#include "ace/Auto_Ptr.h"
+#include "ace/Task.h"
+#include "ace/Get_Opt.h"
+#include "ace/SString.h"
+
+#include "orbsvcs/CosNamingC.h"
+
+namespace CIAO
+{
+ namespace RepositoryManager
+ {
+ /// Name of the file holding the IOR of the RM
+ const char * RMior = "RepositoryManagerDaemon.ior";
+
+ // Name of RepoMan
+ const char * repoman_name_ = "RepositoryManager";
+
+ //Name service of the RM
+ const char * RMname_service = "RepositoryManager";
+
+ /// Default number of worker threads to run in the multi-threaded RM
+ static unsigned int nthreads = 3;
+ static ACE_CString HTTPserver = "127.0.0.1:5432";
+
+ static bool register_with_ns_ = false;
+ static bool write_to_ior_ = true;
+ }
+}
+
+// Forward declaration
+bool parse_args (int argc, char *argv[]);
+
+/**
+ * @class Worker
+ *
+ * Class that implements the service routine of the worker threads
+ * of the repository manager
+ */
+class Worker : public ACE_Task_Base
+{
+public:
+ /// ctor
+ Worker (CORBA::ORB_ptr orb);
+
+ /// The thread entry point.
+ virtual int svc (void);
+
+private:
+ /// The orb
+ CORBA::ORB_var orb_;
+};
+
+bool
+write_ior_file (CORBA::ORB_ptr orb,
+ CIAO::RepositoryManagerDaemon_ptr obj)
+{
+ CORBA::String_var ior =
+ orb->object_to_string (obj);
+
+ FILE* RMior_file =
+ ACE_OS::fopen (CIAO::RepositoryManager::RMior, "w");
+
+ if (RMior_file)
+ {
+ ACE_OS::fprintf (RMior_file,
+ "%s",
+ ior.in ());
+ ACE_OS::fclose (RMior_file);
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+}
+
+bool
+register_with_ns (CORBA::ORB_ptr orb,
+ CIAO::RepositoryManagerDaemon_ptr obj)
+{
+ if (CIAO::RepositoryManager::repoman_name_ != "")
+ CIAO::RepositoryManager::RMname_service =
+ CIAO::RepositoryManager::repoman_name_;
+
+ // Naming Service related operations
+ CORBA::Object_var naming_context_object =
+ orb->resolve_initial_references ("NameService");
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_context_object.in ());
+
+ // Initialize the Naming Sequence
+ CosNaming::Name name (1);
+ name.length (1);
+
+ // String dup required for MSVC6
+ name[0].id = CORBA::string_dup (CIAO::RepositoryManager::RMname_service);
+
+ // Register the servant with the Naming Service
+ naming_context->rebind (name, obj);
+
+ return true;
+}
+
+///Main function
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ try
+ {
+ //init the ORB
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
+
+ if (!parse_args (argc, argv))
+ return -1;
+
+ // Get the root POA object
+ CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA");
+
+ // Downcast to POA type
+ PortableServer::POA_var root_poa = PortableServer::POA::_narrow (obj.in ());
+
+ //activate the POA manager
+ PortableServer::POAManager_var mgr = root_poa->the_POAManager ();
+ mgr->activate ();
+
+ // Create a servant
+ CIAO_RepositoryManagerDaemon_i* repo = 0;
+ ACE_NEW_RETURN (repo,
+ CIAO_RepositoryManagerDaemon_i (
+ orb.in (),
+ CIAO::RepositoryManager::HTTPserver.c_str (),
+ CIAO::RepositoryManager::repoman_name_),
+ 1);
+
+ //transfer ownership to the POA
+ PortableServer::ServantBase_var owner_transfer(repo);
+
+ //register and implicitly activate servant
+ CIAO::RepositoryManagerDaemon_var RepositoryManagerDaemon = repo->_this ();
+
+ bool retval = false;
+
+ if (CIAO::RepositoryManager::write_to_ior_)
+ {
+ retval =
+ write_ior_file (orb.in (),
+ RepositoryManagerDaemon.in ());
+ }
+ else if (CIAO::RepositoryManager::register_with_ns_)
+ {
+ retval =
+ register_with_ns (orb.in (),
+ RepositoryManagerDaemon.in ());
+ }
+
+ if (!retval)
+ return -1;
+
+
+ Worker worker (orb.in ());
+ if (worker.activate (THR_NEW_LWP | THR_JOINABLE,
+ CIAO::RepositoryManager::nthreads) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot activate worker threads\n"),
+ 1);
+
+ worker.thr_mgr ()->wait ();
+
+ ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
+
+ // done
+ return 0;
+
+ // todo shutdown orb
+ }
+ catch (CORBA::Exception &ex) {
+ cerr << "CORBA Exception: " << ex << endl;
+
+ return 1;
+ }
+
+
+ return 0;
+}
+
+
+// ****************************************************************
+
+///Code to parse the arguments
+
+ bool
+ parse_args (int argc, char *argv[])
+ {
+ ACE_Get_Opt get_opts (argc, argv, "ov:s:n:");
+ int c;
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ CIAO::RepositoryManager::write_to_ior_ = true;
+ CIAO::RepositoryManager::register_with_ns_ = false;
+ break;
+ case 'v':
+ CIAO::RepositoryManager::write_to_ior_ = false;
+ CIAO::RepositoryManager::register_with_ns_ = true;
+ CIAO::RepositoryManager::repoman_name_ = get_opts.opt_arg ();
+ break;
+ case 's':
+ CIAO::RepositoryManager::HTTPserver = get_opts.opt_arg ();
+ break;
+ case 'n':
+ CIAO::RepositoryManager::nthreads = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case '?': // display help for use of the server.
+ ACE_DEBUG ((LM_INFO,
+ "usage: %s\n"
+ "-o <using ior file>\n"
+ "-v <name of naming service>\n"
+ "-s <IP:PORT for HTTP server>\n"
+ "-n <number of threads>\n",
+ argv [0]));
+ return false;
+ break;
+ default:
+ ;
+ }
+
+ return true;
+ }
+
+
+
+// ****************************************************************
+
+///Constuctor for the worker class
+Worker::Worker (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+///implementation of the service routine inherited from ACE::Task_Base
+
+int Worker::svc (void)
+{
+ try
+ {
+ this->orb_->run ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ }
+ return 0;
+}
+
+
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc
new file mode 100644
index 00000000000..b20b77e2d6c
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager.mpc
@@ -0,0 +1,53 @@
+// -*- MPC -*-
+// $Id$
+
+//RepositoryManager project: implementation of a repository manager
+//compleint with the D&C spec
+
+project (RepositoryManager) : ciao_server_dnc, ciao_config_handlers, zlib {
+
+ includes += $(CIAO_ROOT)/tools/Config_Handlers $(ACE_ROOT)/contrib/minizip
+ //to circumvent an improper include resolution
+ //in the Package_Handlers/PC_Intf.h
+ exename = RepositoryManagerDaemon
+ requires += zlib
+ after += minizip
+ libs += Package_Config_Handlers minizip
+
+ IDL_Files {
+ RepositoryManagerDaemon.idl
+ }
+
+ Source_Files {
+ RepositoryManagerDaemonC.cpp
+ RepositoryManagerDaemonS.cpp
+ ZIP_Wrapper.cpp
+ RepositoryManager.cpp
+ RepositoryManager_Impl.cpp
+ RM_Helper.cpp
+ URL_Parser.cpp
+ PC_Updater_T.cpp
+ PC_Updater.cpp
+ }
+
+}
+
+
+
+// RMadmin project: a sample client for the RM.
+
+project (RMAdmin) : ciao_servant_dnc, ciao_config_handlers {
+ exename = RMadmin
+ after += RepositoryManager
+
+ IDL_Files {
+ RepositoryManagerDaemon.idl
+ }
+
+ Source_Files {
+ RMadmin.cpp
+ RepositoryManagerDaemonC.cpp
+ Options.cpp
+ RM_Helper.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl
new file mode 100644
index 00000000000..7f28e7d5683
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManagerDaemon.idl
@@ -0,0 +1,13 @@
+// $Id$
+
+#include "ciao/Deployment_RepositoryManager.idl"
+
+module CIAO
+{
+ interface RepositoryManagerDaemon : Deployment::RepositoryManager
+ {
+ // Shutdown the daemon process.
+ oneway void shutdown ();
+ };
+};
+
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
new file mode 100644
index 00000000000..91aa4e47460
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.cpp
@@ -0,0 +1,1267 @@
+// $Id$
+
+//====================================================================
+/**
+ * @file RepositoryManager_Impl.cpp
+ *
+ * $Id$
+ *
+ * Description: Actial implementation of the RepoMan
+ *
+ * @author Stoyan Paunov
+ * Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ */
+//====================================================================
+
+#include "RepositoryManager_Impl.h"
+
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_unistd.h" //for close
+#include "ace/OS_NS_sys_stat.h" //for filesize and fstat and mkdir
+#include "ace/OS_NS_string.h" //for ACE_CString
+#include "ace/OS_Memory.h" //for ACE_NEW* macros
+
+
+//to remove a file or dir from the local filesystem need remove () from stdio.h
+// ---> need to include ace/OS_NS_stdio.h which would include the correct file for any OS!
+#include "ace/OS_NS_stdio.h"
+
+#include "ZIP_Wrapper.h" //Wrapper around zzip
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+#include "ace/Malloc_Allocator.h" //for ACE_New_Allocator
+
+//for the PackageConfiguration parsing
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "Package_Handlers/PCD_Handler.h"
+
+#include "RM_Helper.h" //to be able to externalize/internalize a PackageConfiguration
+#include "ace/Message_Block.h" //for ACE_Message_Block
+
+#include "ace/Thread.h" //for obtaining the ID of the current thread
+#include "ace/OS_NS_stdlib.h" //for itoa ()
+
+#include "URL_Parser.h" //for parsing the URL
+#include "tao/HTTP_Client.h" //the HTTP client class to downloading packages
+
+#include "PC_Updater.h" //A visitor class to walk through the elements of the PC
+
+#include "ace/Configuration_Import_Export.h"
+
+namespace
+{
+ static const char* PC_EXTENSION = ".epc";
+
+ static const char *RM_RECORD_FILE = "RM_record";
+ static const char *RM_RECORD_NAME_SECTION = "Names";
+ static const char *RM_RECORD_UUID_SECTION = "UUIDs";
+}
+
+//-----------------------------------------------------------------
+//Constructor
+//
+//-----------------------------------------------------------------
+
+CIAO_RepositoryManagerDaemon_i::CIAO_RepositoryManagerDaemon_i
+ (CORBA::ORB_ptr the_orb, const char* server, const char* install_dir)
+ : the_orb_ (CORBA::ORB::_duplicate (the_orb)),
+ install_root_ (""),
+ HTTP_server_ ("http://"),
+ install_path (install_dir)
+{
+ //form the path
+ this->HTTP_server_ += server;
+ this->HTTP_server_ += "/";
+ this->HTTP_server_ += install_path;
+ this->HTTP_server_ += "/";
+
+ //create directory in which the packages will be stored
+ ACE_OS::mkdir(install_path.c_str ());
+ //if dir already exists a -1 is returned
+ //we ignore this, just need to make sure the directory exists
+
+ ACE_OS::getcwd (this->cwd_, TEMP_LEN);
+
+ this->install_root_ = this->cwd_;
+ this->install_root_ += "/";
+ this->install_root_ += install_path;
+
+ // Install the configuration files to get the names, UUIDs, & types info.
+ ACE_Configuration_Heap cfg;
+ cfg.open ();
+ ACE_Configuration_Section_Key root = cfg.root_section ();
+
+ ACE_Registry_ImpExp config_importer (cfg);
+ ACE_OS::chdir (install_path.c_str ());
+ config_importer.import_config (RM_RECORD_FILE);
+ ACE_OS::chdir (this->cwd_);
+
+ ACE_CString name;
+ ACE_Configuration::VALUETYPE type;
+ ACE_CString path;
+
+ ACE_Configuration_Section_Key NameSection;
+ cfg.open_section (root, RM_RECORD_NAME_SECTION, 1, NameSection);
+ u_int index = 0;
+ while (!cfg.enumerate_values (NameSection, index, name, type))
+ {
+ cfg.get_string_value (NameSection, name.c_str (), path);
+ this->names_.bind (name, path);
+
+ ++index;
+ }
+
+ ACE_Configuration_Section_Key UUIDSection;
+ cfg.open_section (root, RM_RECORD_UUID_SECTION, 1, UUIDSection);
+ index = 0;
+ while (!cfg.enumerate_values (UUIDSection, index, name, type))
+ {
+ cfg.get_string_value (UUIDSection, name.c_str (), path);
+ this->uuids_.bind (name, path);
+
+ ++index;
+ }
+
+ // Add types
+ index = 0;
+ for (PCMap_Iterator iter = this->names_.begin ();
+ iter != this->names_.end ();
+ ++iter, ++index)
+ {
+ PCEntry& element = *iter;
+
+ ::Deployment::PackageConfiguration_var pc = this->findPackageByName (element.ext_id_.c_str ());
+
+ if(!this->add_type (pc, element.ext_id_.c_str ()))
+ ACE_ERROR ((LM_ERROR, "Failed to add the type\n"));
+ }
+}
+
+//-----------------------------------------------------------------
+//Destructor
+//
+//-----------------------------------------------------------------
+
+CIAO_RepositoryManagerDaemon_i::~CIAO_RepositoryManagerDaemon_i (void)
+{
+ this->names_.unbind_all ();
+ this->uuids_.unbind_all ();
+ this->types_.unbind_all ();
+}
+
+//-----------------------------------------------------------------
+//shutdown
+//
+//-----------------------------------------------------------------
+
+void CIAO_RepositoryManagerDaemon_i::shutdown ()
+
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ // Save the names, UUIDs, & types info to the configuration files.
+ ACE_Configuration_Heap cfg;
+ cfg.open ();
+ ACE_Configuration_Section_Key root = cfg.root_section ();
+
+ ACE_Configuration_Section_Key NameSection;
+ cfg.open_section (root, RM_RECORD_NAME_SECTION, 1, NameSection);
+ for (PCMap_Iterator iter = this->names_.begin ();
+ iter != this->names_.end ();
+ ++iter)
+ {
+ PCEntry& element = *iter;
+ cfg.set_string_value (NameSection, element.ext_id_.c_str (), element.int_id_.c_str ());
+ }
+
+ ACE_Configuration_Section_Key UUIDSection;
+ cfg.open_section (root, RM_RECORD_UUID_SECTION, 1, UUIDSection);
+ for (PCMap_Iterator iter = this->uuids_.begin ();
+ iter != this->uuids_.end ();
+ ++iter)
+ {
+ PCEntry& element = *iter;
+ cfg.set_string_value (UUIDSection, element.ext_id_.c_str (), element.int_id_.c_str ());
+ }
+
+ ACE_Registry_ImpExp exporter (cfg);
+ ACE_OS::chdir (install_path.c_str ());
+ exporter.export_config (RM_RECORD_FILE);
+ ACE_OS::chdir (this->cwd_);
+
+ // Release resource.
+ this->names_.unbind_all ();
+ this->uuids_.unbind_all ();
+ this->types_.unbind_all ();
+
+ this->the_orb_->shutdown (0);
+}
+
+
+//-----------------------------------------------------------------
+//installPackage
+//
+//-----------------------------------------------------------------
+
+void CIAO_RepositoryManagerDaemon_i::installPackage (
+ const char * installationName,
+ const char * location,
+ ::CORBA::Boolean replace
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NameExists,
+ ::Deployment::PackageError
+ ))
+{
+
+ PCEntry *entry = 0;
+ if (this->names_.find (ACE_CString (installationName), entry) == 0)
+ {
+ if (!replace)
+ throw Deployment::NameExists ();
+ else
+ deletePackage (installationName);
+ }
+
+ //Now lets form the path for the local file
+ //NOTE: I need the absolute path because I will change to a subdirectory
+ //when I am parsing the descriptors
+
+ ACE_CString path (this->install_root_);
+ path += "/";
+ path += installationName;
+
+ ACE_CString package_path (path);
+ package_path += ".cpk"; //package extension
+
+ ACE_CString pc_path (path);
+ pc_path += PC_EXTENSION; //external PackageConfiguration extension
+
+
+ ACE_CString descriptor_dir (path);
+ descriptor_dir += "/descriptors/"; //location of the descriptor directory
+
+
+ //check if URL or local file
+ //download or load into memory
+
+ if (ACE_OS::strstr (location, "http://"))
+ {
+
+ //TODO: how can I incorporate a Auto_Ptr is explicit release is needed
+ ACE_Message_Block* mb = 0;
+ ACE_NEW_THROW_EX (mb, ACE_Message_Block (), CORBA::NO_MEMORY ());
+
+ //get the remote file
+ if (!HTTP_Get (location, *mb))
+ {
+ mb->release ();
+ throw CORBA::INTERNAL ();
+ }
+
+ // Write file to designated location on disk
+ if (!RM_Helper::write_to_disk (package_path.c_str (), *mb))
+ {
+ mb->release ();
+ throw CORBA::INTERNAL ();
+ }
+
+ mb->release ();
+ }
+ else
+ {
+ if (!RM_Helper::copy_from_disk_to_disk (location, package_path.c_str ()))
+ throw CORBA::INTERNAL ();
+ }
+
+
+ ZIP_Wrapper::uncompress (const_cast<char*> (package_path.c_str ()),
+ const_cast<char*> (this->install_root_.c_str ()),
+ false //not verbose
+ );
+
+ //Start the parsing
+
+ ACE_CString pc_name;
+
+ this->find_PC_name (const_cast<char*> (package_path.c_str ()), pc_name);
+
+ //if the PackageConfiguration name cannot be found, then there is nothing to install
+ if (pc_name == "")
+ {
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+
+ throw Deployment::PackageError ();
+ }
+
+ //TODO: move exception throwing out of this func. User boolean error handling!!!
+ //TODO: check for errors!
+ Deployment::PackageConfiguration_var pc;
+ pc = this->retrieve_PC_from_descriptors (const_cast<char*> (pc_name.c_str ()),
+ descriptor_dir.c_str ());
+
+
+ if (this->uuids_.find (ACE_CString (pc->UUID), entry) == 0)
+ {
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+
+ throw Deployment::NameExists ();
+ }
+
+ //forming the server path info
+ ACE_CString server_path (this->HTTP_server_);
+ server_path += installationName;
+
+ //NOTE: ComponentPackageReferences are currently NOT supported
+ if (!(pc->basePackage.length () > 0))
+ {
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ PC_Updater updater (server_path, package_path);
+
+ if (!updater.update (pc))
+ {
+ ACE_DEBUG ((LM_ERROR, "[RM] problem updating the PackageConfiguration!\n"));
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ throw Deployment::PackageError ();
+ }
+
+
+ //now lets externalize the PackageConfiguration, so that we can access it later on
+ //without having to do the whole parsing again.
+ //NOTE: Order here is important. Do not populate maps before the externalization!
+ RM_Helper::externalize (pc, pc_path.c_str ());
+
+ //insert the package into the database
+ if (this->names_.bind (ACE_CString (installationName), path) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM] could not bind %s.\n",
+ installationName));
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ //remove the PackageConfiguration externalization
+ remove (pc_path.c_str ());
+
+ //throw exception
+ throw CORBA::INTERNAL ();
+ }
+
+ //ALSO NEED THE UUID here
+ if (this->uuids_.bind (ACE_CString (pc->UUID), path) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM] could not bind %s.\n",
+ ACE_CString (pc->UUID).c_str ()));
+
+ //unbind the name
+ this->names_.unbind (installationName);
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ //remove the PackageConfiguration externalization
+ remove (pc_path.c_str ());
+
+ //throw exception
+ throw CORBA::INTERNAL ();
+ }
+
+ //now add the type interface
+ if(!this->add_type (pc, installationName))
+ ACE_ERROR ((LM_ERROR, "Failed to add the type\n"));
+
+ this->dump ();
+
+ ACE_DEBUG ((LM_INFO,
+ "Installed PackageConfiguration \n\tname: %s \n\tuuid: %s\n",
+ installationName, ACE_CString (pc->UUID).c_str ()));
+}
+
+
+//-----------------------------------------------------------------
+//createPackage
+//
+//-----------------------------------------------------------------
+
+void CIAO_RepositoryManagerDaemon_i::createPackage (
+ const char * installationName,
+ const ::Deployment::PackageConfiguration & package,
+ const char * baseLocation,
+ ::CORBA::Boolean replace
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NameExists,
+ ::Deployment::PackageError
+ ))
+{
+ ::Deployment::PackageConfiguration pc = package;
+
+ // Find if there is a PackageConfiguration with the same name.
+ PCEntry *entry = 0;
+ if (this->names_.find (ACE_CString (installationName), entry) == 0)
+ {
+ if (!replace)
+ throw Deployment::NameExists ();
+ else
+ deletePackage (installationName);
+ }
+
+ // Find if there is a PackageConfiguration with the same uuid.
+ if (this->uuids_.find (ACE_CString (pc.UUID), entry) == 0)
+ throw Deployment::NameExists ();
+
+ // Find if the PackageConfiguration has a basePackage.
+ // NOTE: ComponentPackageReferences are currently NOT supported.
+ if (!(pc.basePackage.length () > 0))
+ throw CORBA::NO_IMPLEMENT ();
+
+ // Form the path for the local file
+ ACE_CString path (this->install_root_);
+ path += "/";
+ path += installationName;
+
+ ACE_CString package_path (path);
+ package_path += ".cpk"; //package extension
+
+ ACE_CString pc_path (path);
+ pc_path += PC_EXTENSION; //external PackageConfiguration extension
+
+ // Check if URL or local file, download or load into memory
+ if (ACE_OS::strstr (baseLocation, "http://"))
+ {
+ //TODO: how can I incorporate a Auto_Ptr is explicit release is needed
+ ACE_Message_Block* mb;
+ ACE_NEW_THROW_EX (mb, ACE_Message_Block (), CORBA::NO_MEMORY ());
+
+ //get the remote file
+ if (!HTTP_Get (baseLocation, *mb))
+ {
+ mb->release ();
+ throw CORBA::INTERNAL ();
+ }
+
+ // Write file to designated location on disk
+ if (!RM_Helper::write_to_disk (package_path.c_str (), *mb))
+ {
+ mb->release ();
+ throw CORBA::INTERNAL ();
+ }
+
+ mb->release ();
+ }
+ else
+ {
+ if (!RM_Helper::copy_from_disk_to_disk (baseLocation, package_path.c_str ()))
+ throw CORBA::INTERNAL ();
+ }
+
+
+ ZIP_Wrapper::uncompress (const_cast<char*> (package_path.c_str ()),
+ const_cast<char*> (this->install_root_.c_str ()),
+ false //not verbose
+ );
+
+ // Form the server path info
+ ACE_CString server_path (this->HTTP_server_);
+ server_path += installationName;
+
+ // Update the newly installed package configration informantion.
+ PC_Updater updater (server_path, package_path);
+
+ if (!updater.update (pc))
+ {
+ ACE_ERROR ((LM_ERROR, "[RM] problem updating the PackageConfiguration!\n"));
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ throw Deployment::PackageError ();
+ }
+
+ // Externalize the PackageConfiguration, so that we can access it later on
+ // without having to do the whole parsing again.
+ // NOTE: Order here is important. Do not populate maps before the externalization!
+ RM_Helper::externalize (pc, pc_path.c_str ());
+
+ // Insert the name of the package.
+ if (this->names_.bind (ACE_CString (installationName), path) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM] could not bind %s.\n",
+ installationName));
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ //remove the PackageConfiguration externalization
+ remove (pc_path.c_str ());
+
+ //throw exception
+ throw CORBA::INTERNAL ();
+ }
+
+ // Insert the UUID of the package.
+ if (this->uuids_.bind (ACE_CString (pc.UUID), path) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM] could not bind %s.\n",
+ ACE_CString (pc.UUID).c_str ()));
+
+ //unbind the name
+ this->names_.unbind (installationName);
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ //remove the PackageConfiguration externalization
+ remove (pc_path.c_str ());
+
+ //throw exception
+ throw CORBA::INTERNAL ();
+ }
+
+ //now add the type interface
+ //TODO: CHECK if successful
+ if(!this->add_type (pc, installationName))
+ ACE_ERROR ((LM_ERROR, "Failed to add the type\n"));
+
+ this->dump ();
+
+ ACE_DEBUG ((LM_INFO,
+ "Created PackageConfiguration \n directory: %s \n name: %s \n uuid: %s\n",
+ path.c_str (), installationName, ACE_CString (pc.UUID).c_str ()));
+}
+
+
+//-----------------------------------------------------------------
+//findPackageByName
+//
+//-----------------------------------------------------------------
+
+::Deployment::PackageConfiguration*
+CIAO_RepositoryManagerDaemon_i::findPackageByName (const char * name)
+
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ))
+{
+ // Find out if the PackageConfiguration was installed in the repository,
+ // return it if found or throw and exception otherwise
+
+ PCEntry *entry = 0;
+
+ if (this->names_.find (ACE_CString (name), entry) != 0)
+ throw Deployment::NoSuchName ();
+ //PackageConfiguration was not found
+
+ ACE_CString pc_path (entry->int_id_.c_str ());
+ pc_path += PC_EXTENSION;
+
+ Deployment::PackageConfiguration_var pc;
+ ACE_NEW_THROW_EX (pc,
+ Deployment::PackageConfiguration (),
+ CORBA::NO_MEMORY ());
+
+
+ if(!RM_Helper::reincarnate (pc, pc_path.c_str ()))
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+
+ ACE_DEBUG ((LM_INFO, "Successfully looked up \'%s\'.\n", name));
+
+ return pc._retn ();
+}
+
+
+//-----------------------------------------------------------------
+//findPackageByUUID
+//
+//-----------------------------------------------------------------
+
+::Deployment::PackageConfiguration*
+CIAO_RepositoryManagerDaemon_i::findPackageByUUID (const char * UUID)
+
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ))
+{
+ // Find out if the PackageConfiguration was installed in the repository,
+ // return it if found or throw and exception otherwise
+
+ PCEntry *entry = 0;
+
+ if (this->uuids_.find (ACE_CString (UUID), entry) != 0)
+ throw Deployment::NoSuchName ();
+ //PackageConfiguration was not found
+
+ ACE_CString pc_path (entry->int_id_.c_str ());
+ pc_path += PC_EXTENSION;
+
+ Deployment::PackageConfiguration_var pc;
+ ACE_NEW_THROW_EX (pc,
+ Deployment::PackageConfiguration (),
+ CORBA::NO_MEMORY ());
+
+
+ if(!RM_Helper::reincarnate (pc, pc_path.c_str ()))
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+
+ ACE_DEBUG ((LM_INFO, "Successfully looked up %s.\n", UUID));
+
+ return pc._retn ();
+}
+
+//-----------------------------------------------------------------
+//findPackageByType
+//
+//-----------------------------------------------------------------
+
+::CORBA::StringSeq * CIAO_RepositoryManagerDaemon_i::findNamesByType (
+ const char * type
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ CIEntry *entry = 0;
+
+ //find the type in the interface map
+ if (this->types_.find (ACE_CString (type), entry) != 0)
+ {
+ //return an empty sequence
+ CORBA::StringSeq_var seq;
+ ACE_NEW_THROW_EX (seq, CORBA::StringSeq (0), CORBA::NO_MEMORY ());
+
+ return seq._retn ();
+ }
+ else
+ {
+ CISet ci_set = (*entry).int_id_set_;
+
+ CORBA::ULong len = ci_set.size ();
+
+ //allocate a sequence of the right length
+ CORBA::StringSeq_var seq;
+ ACE_NEW_THROW_EX (seq,
+ CORBA::StringSeq (len),
+ CORBA::NO_MEMORY ());
+ seq->length (len);
+
+ //store the elements in the string sequence
+ CISet_Iterator ci_set_iter (ci_set);
+ CORBA::ULong index = 0;
+ for (ci_set_iter = ci_set.begin ();
+ ci_set_iter != ci_set.end () && index < len;
+ ++ci_set_iter, ++index)
+ {
+ seq[index] = CORBA::string_dup ((*ci_set_iter).c_str ());
+ }
+
+ return seq._retn ();
+ }
+}
+
+
+//-----------------------------------------------------------------
+//getAllNames
+//
+//-----------------------------------------------------------------
+
+::CORBA::StringSeq*
+CIAO_RepositoryManagerDaemon_i::getAllNames ()
+
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ //Map.current_size () gives you the current number with the duplicates
+ //Map.total_size () gives you the allocated space + the empty slots
+ //Apparently the only way to figure out the number of keys is to
+ //count them with an iterator.
+
+ CORBA::ULong num_entries = 0;
+
+ for (PCMap_Iterator i = this->names_.begin ();
+ i != this->names_.end ();
+ ++i)
+ ++num_entries;
+
+ CORBA::StringSeq_var seq;
+ ACE_NEW_THROW_EX (seq, CORBA::StringSeq (num_entries), CORBA::NO_MEMORY ());
+
+
+ seq->length (num_entries);
+
+ CORBA::ULong index = 0;
+ for (PCMap_Iterator iter = this->names_.begin ();
+ iter != this->names_.end () && index < num_entries;
+ ++iter, ++index)
+ {
+ PCEntry& element = *iter;
+ seq[index] = CORBA::string_dup (element.ext_id_.c_str ());
+ }
+
+ ACE_DEBUG ((LM_INFO, "The number of packages %d\n", seq->length ()));
+
+ return seq._retn (); //release the underlying CORBA::StringSeq
+}
+
+
+//-----------------------------------------------------------------
+//getAllTypes
+//
+//-----------------------------------------------------------------
+
+::CORBA::StringSeq * CIAO_RepositoryManagerDaemon_i::getAllTypes (
+
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ))
+{
+ //Map.current_size () gives you the current number with the duplicates
+ //Map.total_size () gives you the allocated space + the empty slots
+ //Apparently the only way to figure out the number of keys is to
+ //count them with an iterator.
+
+ CORBA::ULong num_entries = 0;
+
+ for (CIMap_Iterator i = this->types_.begin ();
+ i != this->types_.end ();
+ ++i)
+ ++num_entries;
+
+ CORBA::StringSeq_var seq;
+ ACE_NEW_THROW_EX (seq,
+ CORBA::StringSeq (num_entries),
+ CORBA::NO_MEMORY ());
+
+
+ seq->length (num_entries);
+
+ CORBA::ULong index = 0;
+ for (CIMap_Iterator iter = this->types_.begin ();
+ iter != this->types_.end () && index < num_entries;
+ ++iter, ++index)
+
+ {
+ CIEntry& element = *iter;
+ seq[index] = CORBA::string_dup (element.ext_id_.c_str ());
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "The number of types: %d\n", num_entries));
+
+ return seq._retn (); //release the underlying CORBA::StringSeq
+}
+
+
+//-----------------------------------------------------------------
+//DeletePackage
+//
+//-----------------------------------------------------------------
+
+void CIAO_RepositoryManagerDaemon_i::deletePackage (
+ const char * installationName
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ))
+{
+ bool internal_err = false;
+
+ PCEntry *entry = 0;
+
+ if (this->names_.find (ACE_CString (installationName), entry) != 0)
+ throw Deployment::NoSuchName ();
+
+ //cache the package path
+ ACE_CString path (entry->int_id_.c_str ());
+
+ //remove the name association
+ if (this->names_.unbind (installationName) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to unbind %s.\n",
+ installationName));
+ internal_err = true;
+ }
+
+ //the package location
+ ACE_CString package_path (path);
+ package_path += ".cpk"; //package extension
+
+ //the PackageConfiguration externalization location
+ ACE_CString pc_path (path);
+ pc_path += PC_EXTENSION; //external PackageConfiguration extension
+
+ Deployment::PackageConfiguration_var pc;
+ ACE_NEW_THROW_EX (pc,
+ Deployment::PackageConfiguration (),
+ CORBA::NO_MEMORY ());
+
+
+ if(!RM_Helper::reincarnate (pc, pc_path.c_str ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Could not reincarnate PC\n"));
+ internal_err = true;
+ }
+
+ if (this->uuids_.unbind (ACE_CString (pc->UUID)) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Could not remove UUID\n"));
+ internal_err = true;
+ }
+
+ //remove the type from the interface map
+ if (!this->remove_type (pc, installationName))
+ {
+ ACE_ERROR ((LM_ERROR, "Could not remove type\n"));
+ internal_err = true;
+ }
+
+ //actually delete the package here!
+
+ //clean the extracted files
+ remove_extracted_package (package_path.c_str (), path.c_str ());
+ //remove the package
+ remove (package_path.c_str ());
+ //remove the PackageConfiguration externalization
+ remove (pc_path.c_str ());
+
+ this->dump ();
+
+ if (internal_err)
+ throw CORBA::INTERNAL ();
+ else
+ ACE_DEBUG ((LM_INFO, "Successfully deleted \'%s\'\n", installationName));
+
+}
+
+
+//==========================================HELPER METHODS==================================================
+
+Deployment::PackageConfiguration*
+CIAO_RepositoryManagerDaemon_i::retrieve_PC_from_package (char* package)
+{
+ char temp[128];
+ // ACE_thread_t thread_id = ACE_Thread::self ();
+ char* PID = ACE_OS::itoa (ACE_OS::getpid (), temp, 10);
+
+ ACE_OS::mkdir(PID);
+ //if dir already exists a -1 is returned
+ //we ignore this, just need to make sure the directory exists
+
+ //change the working dir
+ ACE_OS::chdir (PID);
+
+ ACE_CString pcd_name;
+ //extract the necessary descriptors
+ if (extract_descriptor_files (package,
+ pcd_name) < 0)
+ {
+ ACE_OS::chdir (this->cwd_);
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) RepositoryManager: error extracting necessary files\n"));
+ throw CORBA::INTERNAL ();
+ }
+
+ Deployment::PackageConfiguration_var pc;
+ //parse the PCD to make sure that there are no package errors
+ try
+ {
+ //CIAO::Config_Handlers::STD_PC_Intf intf (pcd_name.c_str ());
+ //pc = intf.get_PC ();
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) RepositoryManager: Error parsing the PCD\n"));
+
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+ throw Deployment::PackageError ();
+ }
+ //able to parse the PC. So lets install the package in the repo
+
+ //we no longer need the descriptors, so lets erase them!
+ remove_descriptor_files (package);
+
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+
+ //now lets erase the directory!
+ ACE_OS::rmdir (PID);
+ //the ACE_OS::rmdir does not work. Possibly because we need to delete
+ //the contents first. I will look into it more closely when I am back.
+
+ return pc._retn ();
+}
+
+
+//function to retvieve a file via HTTP
+//stores the file in the passed preallocated ACE_Message_Block
+//returns 1 on success
+// 0 on error
+
+int CIAO_RepositoryManagerDaemon_i::HTTP_Get (const char* URL, ACE_Message_Block &mb)
+{
+ URL_Parser *parser = TheURL_Parser::instance ();
+ if (!parser->parseURL (const_cast<char*> (URL)))
+ return 0;
+
+ // Create a client
+ TAO_HTTP_Client client;
+
+ // Open the client
+ if (client.open (parser->filename_,
+ parser->hostname_,
+ parser->port_) == -1)
+ {
+ client.close ();
+ return 0;
+ }
+
+ // Read from it
+ if (client.read (&mb) <= 0)
+ {
+ client.close ();
+ return 0;
+ }
+
+ return 1;
+}
+
+
+
+//function to parse and return the PackageConfiguration from the already
+//extracted descriptor files
+Deployment::PackageConfiguration*
+CIAO_RepositoryManagerDaemon_i::retrieve_PC_from_descriptors (const char* pc_name,
+ const char* descriptor_dir)
+{
+ //change the working dir
+ ACE_OS::chdir (descriptor_dir);
+
+ Deployment::PackageConfiguration_var pc = new Deployment::PackageConfiguration ();
+ //parse the PCD to make sure that there are no package errors
+ try
+ {
+ CIAO::Config_Handlers::Packaging::PCD_Handler::package_config (pc_name, *pc);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) [RM::retrieve_PC_from_descriptors] Error parsing the PCD\n"));
+
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+ throw Deployment::PackageError ();
+ }
+ //able to parse the PC. So lets install the package in the repo
+
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+
+ return pc._retn ();
+}
+
+
+//find out what the name of the PackageConfiguration file is
+void CIAO_RepositoryManagerDaemon_i::find_PC_name (char* package, ACE_CString& pcd_name)
+{
+ pcd_name = ""; //empty the contents of the ACE_CString
+
+ //create a doubly link list
+ ACE_New_Allocator allocator;
+ ACE_Double_Linked_List<ZIP_File_Info> list (&allocator);
+
+ //get the list of files in the package and figure out the names of all necessary files
+ if (!(ZIP_Wrapper::file_list_info (package, list)))
+ return;
+
+ size_t skip_len = ACE_OS::strlen ("descriptors") + 1;
+
+ while (!list.is_empty ())
+ {
+ ZIP_File_Info* inf = list.delete_head ();
+
+ if (ACE_OS::strstr (inf->name_.c_str (), "descriptors"))
+ if (ACE_OS::strstr (inf->name_.c_str (), ".pcd"))
+ pcd_name = inf->name_.c_str () + skip_len;
+
+ //deallocate the head of the filename list
+ delete inf;
+ }
+}
+
+
+//We are using Xercesc in the Config_Handlers and unfortunately its API only
+//takes a file in the local file system as an argument, thus need to
+//write out the contents of the deployent plan to a file
+//in the current directory. I use the thread id to guarrantee
+//lack of race conditions if multithreading is enabled
+
+int CIAO_RepositoryManagerDaemon_i::extract_descriptor_files (char* package, ACE_CString& pcd_name)
+{
+ //create a doubly link list
+ ACE_New_Allocator allocator;
+ ACE_Double_Linked_List<ZIP_File_Info> list (&allocator);
+
+ //get the list of files in the package and figure out the names of all necessary files
+ if (!(ZIP_Wrapper::file_list_info (package, list)))
+ return 0;
+
+ size_t skip_len = ACE_OS::strlen ("descriptors") + 1;
+
+ while (!list.is_empty ())
+ {
+ ZIP_File_Info* inf = list.delete_head ();
+ ACE_Message_Block* file = 0;
+ if (ACE_OS::strstr (inf->name_.c_str (), "descriptors"))
+ {
+ if (ACE_OS::strstr (inf->name_.c_str (), ".pcd"))
+ pcd_name = inf->name_.c_str () + skip_len;
+
+ //extract the descriptor from the package
+ ACE_NEW_RETURN (file, ACE_Message_Block (0,0), 0);
+ if (!ZIP_Wrapper::get_file(const_cast<char*> (package),
+ const_cast<char*> (inf->name_.c_str ()),
+ *file))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM::extract_descriptor_files] Unable to retrieve file!\n"));
+ //release the message block chain
+ file->release ();
+ return 0;
+ }
+
+
+ //write the file to disk
+ if(!RM_Helper::write_to_disk (inf->name_.c_str () + skip_len, *file))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM::extract_descriptor_files] Unable to write out descriptor to disk!\n"));
+ //release the message block chain
+ file->release ();
+ return 0;
+ }
+
+ //release the message block chain
+ file->release ();
+ }
+
+ //deallocate the head of the filename list
+ delete inf;
+ }
+
+ return 1;
+}
+
+int CIAO_RepositoryManagerDaemon_i::remove_descriptor_files (char* package)
+{
+ int return_code = 1;
+
+ //create a doubly link list
+ ACE_New_Allocator allocator;
+ ACE_Double_Linked_List<ZIP_File_Info> list (&allocator);
+
+ //get the list of files in the package and figure out the names of all necessary files
+ if (!(ZIP_Wrapper::file_list_info (package, list)))
+ return 0;
+
+ size_t skip_len = ACE_OS::strlen ("descriptors") + 1;
+
+ while (!list.is_empty ())
+ {
+ ZIP_File_Info* inf = list.delete_head ();
+ if (ACE_OS::strstr (inf->name_.c_str (), "descriptors"))
+ {
+ //delete disk
+ if(remove (inf->name_.c_str () + skip_len))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM::remove_descriptor_files] Unable to remove file from disk!\n"));
+ return_code = 0;
+ }
+ }
+ //deallocate the head of the filename list
+ delete inf;
+ }
+
+ return return_code;
+}
+
+//function to remove the files extracted from the package upon istallation
+//It reads the names of the files from the package. They correspond to the
+//names on disk. It deletes each file, then it deletes the directories that
+//contain them.
+//return 1 on success
+// 0 on error
+
+int CIAO_RepositoryManagerDaemon_i::remove_extracted_package
+ (const char* package_path,
+ const char* extraction_location)
+{
+ //change the working dir
+ if (ACE_OS::chdir (extraction_location) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "[RM::remove_extracted_package] Unable to chdir to doomed directory!\n"),
+ 0);
+
+ int return_code = 1;
+
+ //create a doubly link list
+ ACE_New_Allocator allocator;
+ ACE_Double_Linked_List<ZIP_File_Info> list (&allocator);
+
+ //get the list of files in the package and figure out the names of all necessary files
+ if (!(ZIP_Wrapper::file_list_info (const_cast <char*> (package_path), list)))
+ {
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+ return 0;
+ }
+
+ while (!list.is_empty ())
+ {
+ ZIP_File_Info* inf = list.delete_head ();
+
+ //delete file from disk
+ if(remove (inf->name_.c_str ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "[RM::remove_extracted files] Unable to delete %s!\n", inf->name_.c_str ()));
+ return_code = 0;
+ }
+
+ //deallocate the head of the filename list
+ delete inf;
+ }
+
+ //now remove the descriptors and implementations directories.
+ ACE_OS::rmdir ("descriptors");
+ ACE_OS::rmdir ("implementations");
+
+ //now go one directory up and delete the extraction directory
+ ACE_OS::chdir (this->install_root_.c_str ());
+ ACE_OS::rmdir (extraction_location);
+
+ //change back the the old working dir
+ ACE_OS::chdir (this->cwd_);
+
+ return return_code;
+}
+
+//function to extract the type of the component from
+//the PackageConfiguration and update the interface map
+//returns 1 on success
+// 0 on error
+
+int CIAO_RepositoryManagerDaemon_i::add_type (Deployment::PackageConfiguration& pc,
+ const char* name)
+{
+ if (pc.basePackage.length () > 0)
+ {
+ ::CORBA::StringSeq supportedTypes = pc.basePackage[0]
+ .implementation[0]
+ .referencedImplementation
+ .implements
+ .supportedType;
+
+ if (supportedTypes.length () != 0)
+ {
+ CORBA::ULong len = supportedTypes.length ();
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ this->types_.bind (ACE_CString (supportedTypes[i]), name);
+ }
+ }
+ }
+ else //ComponentPackageReference
+ {
+ //not implemented yet
+ return 0;
+ }
+
+ return 1;
+}
+
+//function to remove the interface type of the component
+//being removed from the interface map
+//returns 1 on success
+// 0 on error
+
+int CIAO_RepositoryManagerDaemon_i::remove_type (Deployment::PackageConfiguration& pc,
+ const char* name)
+{
+ if (pc.basePackage.length () > 0)
+ {
+ ::CORBA::StringSeq supportedTypes = pc.basePackage[0]
+ .implementation[0]
+ .referencedImplementation
+ .implements
+ .supportedType;
+
+ if (supportedTypes.length () != 0)
+ {
+ CORBA::ULong len = supportedTypes.length ();
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ if (this->types_.unbind (ACE_CString (supportedTypes[i]), ACE_CString (name)) != 0)
+ ACE_DEBUG ((LM_DEBUG, "Could not find type %s with package name %s!\n",
+ ACE_CString (supportedTypes[i]).c_str (),
+ name));
+ }
+ }
+ }
+ else //ComponentPackageReference
+ {
+ //not implemented yet
+ return 0;
+ }
+
+ return 1;
+}
+
+//function to dump the state of the RepositoryManager
+void CIAO_RepositoryManagerDaemon_i::dump (void)
+{
+#if defined (ACE_HAS_DUMP)
+
+ ACE_DEBUG(LM_DEBUG, "NAMES:\n");
+ this->names_.dump ();
+ ACE_DEBUG(LM_DEBUG, "UUIDs:\n");
+ this->uuids_.dump ();
+ ACE_DEBUG (LM_DEBUG, "Component Interface Types:\n");
+ this->types_.dump ();
+
+#endif /* ACE_HAS_DUMP */
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h
new file mode 100644
index 00000000000..0c371d7c758
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/RepositoryManager_Impl.h
@@ -0,0 +1,280 @@
+
+/* -*- C++ -*- */
+
+//======================================================================
+/**
+ * @file RepositoryManager_Impl.h
+ *
+ * $Id$
+ *
+ * Description:
+ * This file is the main implementation file for the RepositoryManager
+ * in CIAO. We have used a number of techniques in order to increase
+ * scalability of the RepoMan while still maintaining complience with
+ * the D&C spec
+ *
+ * @author Stoyan Paunov
+ * Shanshan Jiang <shanshan.jiang@vanderbilt.edu>
+ */
+//======================================================================
+
+#ifndef REPOSITORYMANAGERI_H_
+#define REPOSITORYMANAGERI_H_
+
+
+//-----------------------------NOTE---------------------------------
+//I need to disable all the code which has to do with interface
+//type information because we currently do not support assembly
+//interfaces which causes undesired behavior with respect to the
+//hash tables because the specificType field in assembly interfaces
+//is empty, so two unrelated intefaces appear to be related.
+
+
+#include "RepositoryManagerDaemonS.h"
+
+#include "ace/Hash_Map_Manager_T.h" //for the ACE_Hash_Map_Manager
+#include "ace/Hash_Multi_Map_Manager_T.h" //for the ACE_Hash_MultiMap_Manager
+#include "ace/Null_Mutex.h" //for ACE_Null_Mutex
+#include "ace/RW_Mutex.h" //for ACE_RW_Mutex
+#include "ace/OS_NS_string.h" //for ACE_CString
+#include "ace/SString.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace
+{
+ static const size_t TEMP_LEN = 1024;
+}
+
+class CIAO_RepositoryManagerDaemon_i :
+ public virtual POA_CIAO::RepositoryManagerDaemon
+{
+public:
+ /// Constructor
+ CIAO_RepositoryManagerDaemon_i (CORBA::ORB_ptr the_orb,
+ const char* server = "localhost:5432",
+ const char* install_dir = "RepositoryManager");
+
+ /// Destructor
+ virtual ~CIAO_RepositoryManagerDaemon_i (void);
+
+ virtual
+ void shutdown (
+
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ void installPackage (
+ const char * installationName,
+ const char * location,
+ ::CORBA::Boolean replace
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NameExists,
+ ::Deployment::PackageError
+ ));
+
+ virtual
+ void createPackage (
+ const char * installationName,
+ const ::Deployment::PackageConfiguration & package,
+ const char * baseLocation,
+ ::CORBA::Boolean replace
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NameExists,
+ ::Deployment::PackageError
+ ));
+
+ virtual
+ ::Deployment::PackageConfiguration * findPackageByName (
+ const char * name
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ));
+
+ virtual
+ ::Deployment::PackageConfiguration * findPackageByUUID (
+ const char * UUID
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ));
+
+ virtual
+ ::CORBA::StringSeq * findNamesByType (
+ const char * type
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ ::CORBA::StringSeq * getAllNames (
+
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ ::CORBA::StringSeq * getAllTypes (
+
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException
+ ));
+
+ virtual
+ void deletePackage (
+ const char * installationName
+ )
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ ::Deployment::NoSuchName
+ ));
+
+protected:
+
+ /// Function to parse and return the PackageConfiguration from a specified
+ /// package
+ Deployment::PackageConfiguration* retrieve_PC_from_package (char* package);
+
+ /// Find out what the name of the PackageConfiguration file is
+ void find_PC_name (char* package, ACE_CString& pcd_name);
+
+ /// Function to parse and return the PackageConfiguration from the already
+ /// extracted descriptor files
+ Deployment::PackageConfiguration* retrieve_PC_from_descriptors (const char* pc_name,
+ const char* descriptor_dir);
+
+
+ /// Function to retrieve a file via HTTP
+ /// stores the file in the passed preallocated ACE_Message_Block
+ /// @retval 1 success
+ /// @retval 0 error
+ int HTTP_Get (const char* URL, ACE_Message_Block &mb);
+
+ /// Function to extract all necessary files for parsing the
+ /// PackageConfiguration descriptor and populating the idl struct.
+ /// @retval 1 success
+ /// @retval 0 error
+ ///
+ /// @note ACE_CString& pcd_name is an out parameter
+ int extract_descriptor_files (char* package,
+ ACE_CString& pcd_name);
+
+
+ /// Function to remove the files extracted for parsing the PackageConfiguration
+ /// descriptor and populating the idl struct. It reads the names of the files
+ /// from the package. They correspond to the names on disk.
+ /// @retval 1 on success
+ /// @retval 0 on error
+ int remove_descriptor_files (char* package);
+
+
+ /// Function to remove the files extracted from the package upon istallation
+ /// It reads the names of the files from the package. They correspond to the
+ /// names on disk. It deletes each file, then it deletes the directories that
+ /// contain them.
+ /// @note extraction location is path/*archive_name*/
+ /// @retval 1 on success
+ /// @retval 0 on error
+ int remove_extracted_package (const char* package_path, const char* extraction_location);
+
+ /// Function to extract the type of the component from
+ /// the PackageConfiguration and update the interface map
+ /// @retval 1 on success
+ /// @retval 0 on error
+ int add_type (::Deployment::PackageConfiguration& pc,
+ const char* name);
+
+ /// Function to remove the interface type of the component
+ /// being removed from the interface map
+ /// @retval 1 on success
+ /// @retval 0 on error
+ int remove_type (::Deployment::PackageConfiguration& pc,
+ const char* name);
+
+ /// Function to dump the state of the RepositoryManager
+ void dump (void);
+
+private:
+ /// Cached information about the installed PackageConfigurations
+ /// A separate map for the installation names and their UUID's
+ /// Key: PackageConfiguration name or its UUID (CString type)
+ /// Value: The location of the local copy of the package
+
+ ///Based on the synchronization needed we can parametrize this with either
+ ///ACE_Null_Mutex or ACE_RW_Mutex
+
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ ACE_CString,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_RW_Mutex> PCMap;
+
+ typedef PCMap::ITERATOR PCMap_Iterator;
+ typedef PCMap::ENTRY PCEntry;
+
+
+ /// Cached information about the installed Component Interfaces
+ /// A map which associates Component supportedType with the
+ /// names of packages which implement this component type
+ /// Key: Component supportedType
+ /// Value: Unbounded set of the names of installed packages which
+ /// implement this component type
+
+ ///Based on the synchronization needed we can parametrize this with either
+ ///ACE_Null_Mutex or ACE_RW_Mutex
+
+ typedef ACE_Hash_Multi_Map_Manager<ACE_CString,
+ ACE_CString,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_RW_Mutex> CIMap;
+
+ typedef CIMap::ITERATOR CIMap_Iterator;
+ typedef CIMap::ENTRY CIEntry;
+ typedef CIEntry::VALUE_SET CISet;
+ typedef CIEntry::VALUE_SET_ITERATOR CISet_Iterator;
+
+ /// A hash map that associates the names of
+ /// PackageConfigurations with their location
+ PCMap names_;
+
+ /// a hash map that associates the UUIDs of
+ /// PackageConfigurations with their location
+ PCMap uuids_;
+
+ /// a hash map which associates Component Interface
+ /// UUIDs with their implementations
+ CIMap types_;
+
+ /// The ORB
+ CORBA::ORB_var the_orb_;
+
+ /// Will hold the current working directory
+ char cwd_ [TEMP_LEN];
+
+ /// Full path for the install directory
+ ACE_CString install_root_;
+
+ /// Location of the server
+ ACE_CString HTTP_server_;
+
+ /// Directory where the packages will be stored locally
+ ACE_CString install_path;
+};
+
+#endif /* REPOSITORYMANAGER_H_ */
diff --git a/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp
new file mode 100644
index 00000000000..37187ebff61
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.cpp
@@ -0,0 +1,101 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ace/ARGV.h"
+#include "URL_Parser.h"
+
+#include "ace/ACE.h"
+#include "ace/OS_NS_string.h"
+
+bool
+URL_Parser::parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("rwu:h:p:f:d"));
+
+ bool success = true;
+ int c;
+
+ while ((c = get_opt ()) != -1)
+ switch (c)
+ {
+ case 'd':
+ this->debug_ = true;
+ break;
+ case 'u':
+ success = parseURL (get_opt.opt_arg ());
+ break;
+ // Usage fallthrough.
+ default:
+ success = false;
+ }
+
+ if (this->hostname_ == 0 || this->filename_ == 0)
+ {
+ success = false;
+ }
+
+ return success;
+}
+
+URL_Parser::URL_Parser (void)
+ : hostname_ (ACE::strnew ("127.0.0.1")),
+ port_ (ACE_DEFAULT_HTTP_SERVER_PORT),
+ filename_ (0),
+ debug_ (false)
+{
+}
+
+bool URL_Parser::parseURL (char* url)
+{
+ char* ptr = 0;
+ bool success = true;
+ ptr = ACE_OS::strstr (url, "http://");
+ if (ptr)
+ url += ACE_OS::strlen ("http://");
+
+ if (url[0] == '/')
+ {
+ this->filename_ = ACE_OS::strdup (url);
+ }
+ else
+ {
+ ptr = ACE_OS::strstr (url, ":");
+ if (ptr)
+ this->port_ = ACE_OS::atoi (ptr + 1);
+ else
+ ptr = ACE_OS::strstr (url, "/");
+
+ if(!ptr)
+ success = false;
+ else
+ {
+ size_t host_len = ptr - url;
+ ACE::strdelete (this->hostname_);
+ ACE_NEW_RETURN (this->hostname_, char [host_len + 1], false);
+ ACE_OS::strncpy (this->hostname_, url, host_len);
+ this->hostname_ [host_len] = '\0';
+ ptr = ACE_OS::strstr (ptr, "/");
+ if (ptr)
+ {
+ this->filename_ = ACE_OS::strdup(ptr);
+ }
+ else
+ {
+ success = false;
+ }
+ }
+ }
+ return success;
+}
+
+
+void URL_Parser::Error (void)
+{
+ ACE_DEBUG ((LM_DEBUG, "./http_client -u http://hostname:port/filename [-d]\n"));
+}
+
+URL_Parser::~URL_Parser()
+{
+ delete [] this->hostname_;
+ ACE_OS::free (this->filename_);
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h
new file mode 100644
index 00000000000..0dfef0262ad
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/URL_Parser.h
@@ -0,0 +1,66 @@
+
+/* -*- C++ -*- */
+
+//=============================================================================
+/**
+ * @file URL_Parser.h
+ *
+ * $Id$
+ *
+ * Parses a URL into its logical chunks
+ *
+ * @author Stoyan Paunov
+ */
+//=============================================================================
+
+
+#ifndef URL_PARSER_H
+#define URL_PARSER_H
+
+#include "ace/Get_Opt.h"
+#include "ace/ARGV.h"
+#include "ace/Singleton.h" //for ACE_Singleton
+#include "ace/Null_Mutex.h" //for ACE_Null_Mutex
+
+// Forward declaration
+class URL_Parser;
+
+typedef ACE_Singleton <URL_Parser, ACE_Null_Mutex> TheURL_Parser;
+
+class URL_Parser
+{
+public:
+
+ friend class ACE_Singleton <URL_Parser, ACE_Null_Mutex>;
+
+ /// Parses commandline arguments
+ bool parse_args (int argc, ACE_TCHAR *argv[]);
+
+ /// Return false on failure
+ bool parseURL (char* url);
+
+ void Error (void);
+
+ /// Hostname to connect to
+ ACE_TCHAR *hostname_;
+
+ /// Port number to use
+ u_short port_;
+
+ /// Filename to upload/download
+ ACE_TCHAR *filename_;
+
+ /// Turns on verbosity
+ bool debug_;
+
+ /// destructor
+ ~URL_Parser (void);
+
+protected:
+ /// protected constructor, singleton
+ URL_Parser (void);
+};
+
+
+
+#endif /* URL_PARSER_H */
diff --git a/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp
new file mode 100644
index 00000000000..b318af0ad13
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.cpp
@@ -0,0 +1,375 @@
+
+//===============================================================================
+/**
+ * @file ZIP_Wrapper.cpp
+ *
+ * $Id$
+ *
+ * Purpose: implementing the ZIP_Wrapper class
+ *
+ * @author Stoyan Paunov, Vipul Singh
+ *
+ */
+//===============================================================================
+
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+#include "ace/Message_Block.h" //for ACE_Message_Block
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_unistd.h" //for close
+#include "ace/OS_NS_string.h" //for strncpy
+#include "ace/SString.h" //for ACE_CString
+#include "ace/OS_NS_sys_stat.h" //for stat
+#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir
+#include "ace/OS_Memory.h" //for ACE_NEW* macros
+
+#include <string>
+#include "unzip.h"
+#define MAXFILENAME (256)
+#define CASESENSITIVITY (0)
+#define WRITEBUFFERSIZE (8192)
+
+#include "ZIP_Wrapper.h"
+
+//ZIP_File_Info constructor
+ZIP_File_Info::ZIP_File_Info (char* name, size_t size)
+ : name_ (name),
+ size_ (size),
+ next_ (0),
+ prev_ (0)
+{
+}
+
+//ZIP_File_Info default constructor
+ZIP_File_Info::ZIP_File_Info ()
+ : name_ (""),
+ size_ (0),
+ next_ (0),
+ prev_ (0)
+{
+}
+
+
+/// Gets a list of the files in the archive.
+int ZIP_Wrapper::file_list_info (char* zip_name,
+ ACE_Double_Linked_List<ZIP_File_Info> &list)
+{
+ unzFile uf=0;
+ char filename_try[MAXFILENAME+16] = "";
+ if (zip_name!=0)
+ {
+ strncpy(filename_try, zip_name, MAXFILENAME-1);
+ /* strncpy doesnt append the trailing NULL, if the string is too long. */
+ filename_try[ MAXFILENAME ] = '\0';
+ /* open the zip file */
+ uf = unzOpen(zip_name);
+ /* if zipfile could not be opened, try appending .zip to name */
+ if (uf==0)
+ {
+ ACE_OS::strcat(filename_try, ".zip");
+ uf = unzOpen(filename_try);
+ }
+ }
+ /* If zipfile could not be opened still, return */
+ if (uf==0)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("There is some problem in opening"
+ " %s or %s.zip using unzOpen \n"), zip_name, zip_name));
+ return 1;
+ }
+ unz_global_info gi;
+ /* get information about all the files in zip file*/
+ int err = unzGetGlobalInfo(uf, &gi);
+ if (err!=UNZ_OK)
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("unzGetGlobalInfo failed while trying"
+ " to get global information about zipfile \n"), err));
+ /* gi.number_entry corresponds to the number of directory entries
+ in the zip file */
+ for (uLong i=0;i<gi.number_entry;i++)
+ {
+ char filename_inzip[256];
+ unz_file_info file_info;
+ /* get information about the current file in zip file */
+ err = unzGetCurrentFileInfo(uf, &file_info, filename_inzip,
+ sizeof(filename_inzip), 0, 0, 0, 0);
+ if (err!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("unzGetCurrentFileInfo failed"
+ " while trying to get information"
+ " about current file\n"), err));
+ break;
+ }
+ ZIP_File_Info* next = 0;
+ ACE_NEW_RETURN (next, ZIP_File_Info (filename_inzip,
+ sizeof(filename_inzip)), -1);
+ /* add information about current file to the list */
+ list.insert_tail (next);
+ if ((i+1)<gi.number_entry)
+ {
+ err = unzGoToNextFile(uf);
+ if (err!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG,ACE_TEXT(" unzGoToNextFile failed"
+ " while trying to go to next file\n"), err));
+ break;
+ }
+ }
+ }
+ unzCloseCurrentFile(uf);
+ return gi.number_entry;
+}
+
+
+//get file and store it into ACE message block.
+bool ZIP_Wrapper::get_file (char* archive_path, char* filename,
+ ACE_Message_Block &file)
+{
+ bool return_code = true;
+ unzFile uf=0;
+ uf = unzOpen(archive_path);
+ /* locate the desired file in the zip file and set it as current file*/
+ int j=unzLocateFile(uf, filename, 0);
+ if (j==UNZ_END_OF_LIST_OF_FILE)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("File not found in zip archive")));
+ return false;
+ }
+ else if (j==UNZ_OK)
+ {
+ int k=unzOpenCurrentFile(uf);
+ if (k!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("Error in opening the current"
+ " file using unzOpenCurrentFile")));
+ return false;
+ }
+ else
+ {
+ int num_read = 0;
+ ACE_Message_Block* head = &file;
+
+ //read the file into the ACE_Message_Block
+ do
+ {
+ if (head->space () == 0)
+ {
+ ACE_Message_Block* next = 0;
+ ACE_NEW_RETURN (next, ACE_Message_Block (BUFSIZ), false);
+ head->cont ();
+ head = head->cont ();
+ }
+ num_read = unzReadCurrentFile(archive_path, head->wr_ptr(),
+ head->space());
+ if (num_read > 0)
+ head->wr_ptr (num_read);
+ } while (num_read > 0);
+ if (num_read < 0)
+ return_code = false;
+ unzCloseCurrentFile(uf);
+ unzClose(uf);
+ return return_code;
+ }
+ }
+ return return_code;
+}
+
+
+/// uncompress the zip file
+/// The zip file will be uncompressed into a directory
+/// with the name of zip archive.
+/// the path is assumed to be an existing directory
+
+bool ZIP_Wrapper::uncompress (char* zip_archive, char* path, bool verbose)
+{
+ //open the zip archive
+ unzFile uf=0;
+ uf = unzOpen(zip_archive);
+ if (uf==0)
+ {
+ ACE_DEBUG((LM_DEBUG,ACE_TEXT("unzOpen failed to open the"
+ " zipfile\n")));
+ return false;
+ }
+ //get the name of the archive
+ ACE_CString arch_dir (path);
+ arch_dir += "/";
+ //get only the name of the archive; remove path info
+ char* n = ACE_OS::strstr (zip_archive, "/");
+ char* zip_name = 0;
+ while (n != 0)
+ {
+ zip_name = ++n;
+ n = ACE_OS::strstr (n, "/");
+ }
+ arch_dir += zip_name;
+ //NOTE: Assumes .zip or cpk extension
+ arch_dir = arch_dir.substring (0, arch_dir.length () - 4);
+ //create directory with the name of zip archive
+ ACE_OS::mkdir(arch_dir.c_str());
+ //if dir exists -1 is returned and ignored
+ unz_global_info gi;
+ int err = unzGetGlobalInfo(uf, &gi);
+ if (err!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("unzGetGlobalInfo failed to get global"
+ " information about zipfile \n"), err));
+ return false;
+ }
+ err =unzGoToFirstFile(uf);
+ if (err!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG,ACE_TEXT("error %d with zipfile in"
+ " unzGoToFirstFile \n"), err));
+ return false;
+ }
+ /* read each entry of zip file, create directory structure if it is
+ a non existing directory whereas if it is a file, write the file
+ at the proper path in the directory structure */
+ for (uLong i=0;i<gi.number_entry;i++)
+ {
+ char filename_inzip[256];
+ unz_file_info file_info;
+ err = unzGetCurrentFileInfo(uf, &file_info, filename_inzip,
+ sizeof(filename_inzip), 0, 0, 0, 0);
+ if (err!=UNZ_OK)
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("unzGetCurrentFileInfo failed"
+ " while trying to get information"
+ " about currentfile\n"), err));
+ break;
+ }
+ int direc = checkdir(filename_inzip);
+ /* If it is a directory, we create directory structure */
+ if (direc==1)
+ {
+ makethedir(filename_inzip, arch_dir);
+ }
+ /* If it is a file, we read its data and write the uncompressed
+ data to the file with proper path.*/
+ else if (direc==0)
+ {
+ handlethefile(filename_inzip, uf, file_info, verbose, arch_dir);
+ }
+ if ((i+1)<gi.number_entry)
+ {
+ err = unzGoToNextFile(uf);
+ if (err!=UNZ_OK)
+ {
+ ACE_ERROR((LM_ERROR,ACE_TEXT("unzGoToNextFile failed"
+ " while trying to go to"
+ " nextfile\n"), err));
+ break;
+ }
+ }
+ }
+ unzClose(uf);
+ return true;
+}
+
+
+
+///try to find if it is a directory OR file
+int ZIP_Wrapper::checkdir (char* filename_inzip)
+{
+ int direc = 0;
+ char* dircheck = ACE_OS::strstr (filename_inzip, "/");
+ /* We assume that a directory will have its entry terminating in a /
+ We also assume that the directory entries in the zip file use
+ forward slash for both unix and windows */
+ while (dircheck != 0)
+ {
+ int i = ACE_OS::strcmp(dircheck, "/");
+ if (i == 0)
+ {
+ direc = 1;
+ break;
+ }
+ ++dircheck;
+ dircheck = ACE_OS::strstr (dircheck, "/");
+ }
+ return direc;
+}
+
+///Create directory structure if entry in zipfile is a directory
+int ZIP_Wrapper::makethedir (char* filename_inzip, ACE_CString arch_dir)
+{
+//let's try to create the directory structure for the package
+ char dir_name [2048];
+ char* next = ACE_OS::strstr (filename_inzip, "/");
+ while (next != 0)
+ {
+ ACE_CString location (arch_dir);
+ ACE_OS::strncpy (dir_name, filename_inzip, next - filename_inzip
+ + 1);
+
+ dir_name[next - filename_inzip + 1] = '\0';
+ location += "/";
+ location += dir_name;
+ ACE_stat stat;
+ if (ACE_OS::stat (location.c_str (), &stat) == -1)
+ ACE_OS::mkdir (location.c_str ());
+ next++;
+ next = ACE_OS::strstr (next, "/");
+ }
+ return 0;
+}
+
+///If entry in zipfile is a file, then read the file and write the
+///uncompressed data at the proper filepath.
+int ZIP_Wrapper::handlethefile (char* filename_inzip, unzFile uf,
+ unz_file_info file_info, bool verbose,
+ ACE_CString arch_dir)
+{
+ int k = unzOpenCurrentFile(uf);
+ if (k!=UNZ_OK)
+ {
+ ACE_ERROR((LM_ERROR,ACE_TEXT("unzOpenCurrentFile failed in"
+ " opening the current file")));
+ return false;
+ }
+ else
+ {
+ size_t const file_size = file_info.uncompressed_size;
+ char* temp = 0;
+ ACE_NEW_RETURN (temp, char [file_size], false);
+ ACE_Auto_Basic_Array_Ptr<char> buffer (temp);
+ //read in the data
+ unzReadCurrentFile(uf, &(*buffer), file_size);
+ //close the zip handle
+ unzCloseCurrentFile(uf);
+ //create file name + path to open
+ std::string file_path (arch_dir.c_str ());
+ //NOTE: need the c-style char to stop at '\0'
+ file_path += "/";
+ file_path += filename_inzip;
+ //print out the file to be uncompressed
+ if (verbose)
+ {
+ ACE_OS::write(ACE_STDOUT, file_path.c_str (),
+ file_path.length () );
+ ACE_OS::write(ACE_STDOUT, "\n", 1);
+ }
+ // Open a file handle to the local filesystem
+ ACE_HANDLE handle = ACE_OS::open (file_path.c_str (),
+ O_CREAT | O_TRUNC | O_WRONLY);
+ if (handle == ACE_INVALID_HANDLE)
+ {
+ unzClose(uf);
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[uncompress] file creation error")),
+ 0);
+ }
+ //write the uncompressed data to the file
+ if (ACE_OS::write (handle, &(*buffer), file_size) == -1)
+ {
+ unzClose(uf);
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("[uncompress] file write error")),
+ 0);
+ }
+ // Close the file handle
+ ACE_OS::close (handle);
+ }
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h
new file mode 100644
index 00000000000..918a60f6352
--- /dev/null
+++ b/modules/CIAO/DAnCE/RepositoryManager/ZIP_Wrapper.h
@@ -0,0 +1,117 @@
+
+/* -*- C++ -*- */
+
+//=======================================================================
+/**
+ * @file ZIP_Wrapper.h
+ *
+ * $Id$
+ *
+ * Purpose: to provide a wrapper around minizip for easy handling of
+ * ZIP archives. This wrapper can be used as an auxiliary
+ * class that allows a program to become ZIP-aware
+ *
+ * @author Stoyan Paunov, Vipul Singh
+ *
+ *
+ */
+//=======================================================================
+
+#ifndef _ZIP_WRAPPER_H_
+#define _ZIP_WRAPPER_H_
+
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+#include "ace/Message_Block.h" //for ACE_Message_Block
+#include "ace/SString.h" //for ACE_CString
+#include "ace/Log_Msg.h"
+#include "ace/Synch.h"
+#include "ace/OS_NS_fcntl.h" //for open
+#include "ace/OS_NS_sys_stat.h" //for filesize and mkdir
+
+#include "unzip.h"
+
+
+/**
+ * @class ZIP_File_Info
+ *
+ * This class is used as a carrier of information
+ * about entities residing inside a ZIP archive
+ */
+class ZIP_File_Info
+{
+public:
+ ACE_CString name_;
+ size_t size_;
+ ZIP_File_Info* next_;
+ ZIP_File_Info* prev_;
+
+ ZIP_File_Info (char* name, size_t size);
+ ZIP_File_Info ();
+};
+
+/**
+ * @class ZIP_Wrappers
+ *
+ * This class is the actual workhorse that provides all of
+ * the necessary functionality
+ */
+class ZIP_Wrapper
+{
+public:
+
+ /// Get file and store it into an ACE_Message_Block. The function
+ /// averts subdirectory traversal problems.
+ /// NOTE: Be sure to release the message block even if the function returns
+ /// false becuase the return value might be due to unsuccessful allocation
+
+ ///archive_path is the zip archive with the path
+ ///filename is the name of the file to be looked for in the zip archive.
+ ///the file is stored in ACE message block.
+ static bool get_file (char* archive_path, char* filename,
+ ACE_Message_Block &file);
+
+ /// uncompress the zip file
+ /// The zip file will be uncompressed into a directory with the
+ ///name of zip archive.
+ /// The path is assumed to be an existing directory
+
+ ///zip_archive is the arcive to be uncompressed with full path.
+ ///path is used for creating a directory with the name of zip archive.
+ static bool uncompress (char* zip_archive, char* path = "",
+ bool verbose = true);
+
+ /// Get a list of the files in the archive
+
+ ///zip_name is the name of zipfile with fullpath.
+ ///list stores information about each entry in zip file.
+ static int file_list_info (char* zip_name,
+ ACE_Double_Linked_List<ZIP_File_Info> &list);
+
+ ///Check if an entry of a zip file is a file or directory
+ ///We assume a directoryname terminates with a forward slash
+ ///Returns 1 for directory while 0 for file.
+
+ ///filename_inzip is an entry in a zipfile
+ static int checkdir (char* filename_inzip);
+
+ ///Create directory structure if entry in zipfile is a directory
+
+ ///filename_inzip is an entry in a zipfile
+ ///arch_dir stores the name of the directory to be created
+ static int makethedir (char* filename_inzip, ACE_CString arch_dir);
+
+ ///If entry in zipfile is a file, then read the file and write
+ /// the uncompressed data at the proper filepath.
+
+ ///filename_inzip is an entry in a zipfile
+ ///uf refers to the zip archive
+ ///file_info is used to get information about current file
+ ///verbose decides if the details are to be printed or not
+ ///arch_dir is the name of file with full path where it is to be
+ ///uncompressed
+ static int handlethefile (char* filename_inzip, unzFile uf,
+ unz_file_info file_info,
+ bool verbose, ACE_CString arch_dir);
+};
+
+#endif
diff --git a/modules/CIAO/DAnCE/StaticConfigurator/README b/modules/CIAO/DAnCE/StaticConfigurator/README
new file mode 100644
index 00000000000..e42c1099cfd
--- /dev/null
+++ b/modules/CIAO/DAnCE/StaticConfigurator/README
@@ -0,0 +1,29 @@
+Please see $CIAO_ROOT/docs/static_dance.html for details.
+
+To run the static version of Hello example, do the following,
+
+1. Build ACE+TAO+CIAO statically
+2. Build $CIAO_ROOT/examples/Hello
+3. Generate the static function entrypoints (plan.h)
+ > cd $CIAO_ROOT/examples/Hello/descriptors
+ > $CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEParser -p flattened_deploymentplan_without_ns.cdp
+ > cp plan.h $CIAO_ROOT/DAnCE/StaticConfigurator/
+4. Build the static NodeManager for Hello example
+ > cd $CIAO_ROOT/DAnCE/StaticConfigurator
+ > cp StaticDAnCEApp.cpp.tmpl StaticDAnCEApp.cpp
+ > cp StaticDAnCEApp.mpc.tmpl StaticDAnCEApp.mpc
+ > $ACE_ROOT/bin/mwc.pl
+ > make
+5. Run the static node managers. Note that the ORBEndpoint values should
+ correspond to the ones in $CIAO_ROOT/examples/Hello/descriptors/TestNodeManagerMap.dat
+ > cd $CIAO_ROOT/DAnCE/StaticConfigurator
+ > ./StaticDAnCEApp -ORBEndpoint iiop://localhost:60001 &
+ > ./StaticDAnCEApp -ORBEndpoint iiop://localhost:60002 &
+6. Do the deployment. This is just the same as the non-static version of DAnCE
+ except that we have the NodeManagers already running and need not spawn node
+ managers. To accomplish this, change
+ $CIAO_ROOT/examples/Hello/descriptors/run_test_without_ns.pl
+ to *not* run the node manager daemons and do the following.
+ > cd $CIAO_ROOT/examples/Hello/descriptors
+ > ./run_test_without_ns.pl
+
diff --git a/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl
new file mode 100644
index 00000000000..985173e5720
--- /dev/null
+++ b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl
@@ -0,0 +1,119 @@
+// $Id$
+
+#include "Container_Base.h"
+#include "NodeManager/NodeManager_Impl.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+#include "tao/IORTable/IORTable.h"
+#include "tao/CDR.h"
+#include "plan.h"
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ // Initialize the ORB so that CORBA::Any will work
+ //
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+ try
+ {
+ // Get reference to Root POA.
+ CORBA::Object_var obj
+ = orb->resolve_initial_references ("RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var poa
+ = PortableServer::POA::_narrow (obj.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // Activate POA manager
+ PortableServer::POAManager_var mgr
+ = poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ mgr->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ int homes_table_size =
+ sizeof (homes_table)/sizeof(HomeAttributes);
+
+ CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map;
+ CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map;
+ CIAO::Static_Config_EntryPoints_Maps static_config_entrypoints_maps;
+ static_config_entrypoints_maps.home_creator_funcptr_map_ = &home_creator_fptr_map;
+ static_config_entrypoints_maps.home_servant_creator_funcptr_map_ = &homesvnt_creator_fptr_map;
+
+ int i=0;
+ for (i=0; i<homes_table_size; ++i)
+ {
+ home_creator_fptr_map.bind (homes_table[i].executor_entrypt_,
+ homes_table[i].executor_fptr_);
+
+ homesvnt_creator_fptr_map.bind (homes_table[i].servant_entrypt_,
+ homes_table[i].servant_fptr_);
+ }
+
+ CIAO::Static_NodeManager_Impl *static_node_manager_impl;
+ // Create and install the CIAO Daemon servant
+
+ ACE_DEBUG ((LM_DEBUG, "creating static_node_manager\n"));
+
+ static_node_manager_impl =
+ new CIAO::Static_NodeManager_Impl("NodeManager",
+ orb.in (),
+ poa.in (),
+ "", //exe location
+ "", //exe options
+ 0, //spawn delay
+ &static_config_entrypoints_maps);
+
+ static_node_manager_impl->init ();
+
+ CORBA::Object_var table_object =
+ orb->resolve_initial_references ("IORTable"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ IORTable::Table_var adapter =
+ IORTable::Table::_narrow (table_object.in () ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (adapter.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR, "Nil IORTable\n"), -1);
+
+ CIAO::NodeManagerDaemon_var manager =
+ static_node_manager_impl->_this ();
+
+ CORBA::String_var str =
+ orb->object_to_string (manager.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ adapter->bind ("NodeManager",
+ str.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // Run the main event loop for the ORB.
+ orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ catch (CORBA::Exception& ex)
+ {
+ ACE_PRINT_EXCEPTION (ex, "Caught CORBA Exception: ");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl
new file mode 100644
index 00000000000..4895dd9a045
--- /dev/null
+++ b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEApp.mpc.tmpl
@@ -0,0 +1,20 @@
+// -*- MPC -*-
+// $Id$
+
+project(StaticDAnCEApp): ciao_static_dnc_app {
+ exename = StaticDAnCEApp
+
+ libs += Hello_Base_DnC_stub
+ libs += Hello_Base_DnC_svnt
+ libs += Receiver_DnC_stub
+ libs += Receiver_DnC_svnt
+ libs += Receiver_DnC_exec
+ libs += Sender_DnC_stub
+ libs += Sender_DnC_svnt
+ libs += Sender_DnC_exec
+
+ Source_Files {
+ StaticDAnCEApp.cpp
+ }
+}
+
diff --git a/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.cpp b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.cpp
new file mode 100644
index 00000000000..caa7e0a0f61
--- /dev/null
+++ b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.cpp
@@ -0,0 +1,159 @@
+//=============================================================================
+/**
+ * @file StaticDAnCEParser.cpp
+ *
+ * $Id$
+ *
+ * This parser is used in static deployment of CIAO components. This
+ * parser parses a deployment plan and generates a header file plan.h
+ * containing information about the home and servant creation
+ * function entry points. This can be used by a Static_NodeManager to
+ * instantiate instances of homes and servants just like the regular
+ * NodeManager. For more details, see
+ * $CIAO_ROOT/DAnCE/StaticConfigurator/docs/static_dance.html
+ *
+ * @author Venkita Subramonian <venkita@cse.wustl.edu>
+ */
+//=============================================================================
+
+#include "DAnCE/NodeApplicationManager/ImplementationInfo.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+#include "tao/IORTable/IORTable.h"
+#include "tao/CDR.h"
+#include "Config_Handlers/XML_File_Intf.h"
+
+static void
+usage (const ACE_TCHAR* program)
+{
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Usage: %s -p <package URI>\n"),
+ program));
+}
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ // top level package URL
+ char* package_url = 0;
+
+ // Initialize the ORB so that CORBA::Any will work
+ //
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("p:"));
+ int c;
+
+ while ((c = get_opt ()) != EOF)
+ {
+ switch (c)
+ {
+ case 'p':
+ package_url = get_opt.opt_arg ();
+ break;
+
+ default:
+ usage(argv[0]);
+ return -1;
+ }
+ }
+
+ if (package_url == 0) {
+ usage(argv[0]);
+ return -1;
+ }
+
+ CIAO::Config_Handlers::XML_File_Intf intf (package_url);
+
+ ::Deployment::DeploymentPlan_var plan =
+ intf.get_plan ();
+
+ ::Deployment::ComponentPlans dummy;
+ dummy.length (0);
+
+ CIAO::NodeImplementationInfoHandler handler (plan, dummy);
+
+ Deployment::NodeImplementationInfo_var node_impl_info (handler.node_impl_info ());
+
+ if (node_impl_info.ptr() == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "DAnCE (%P|%t) StaticParser -"
+ "Failed to create Node Implementation Infos!\n"), 1);
+
+ }
+
+ Deployment::ContainerImplementationInfos& impl_infos = node_impl_info->impl_infos;
+
+ FILE* fp = ACE_OS::fopen ("plan.h", "w");
+
+ CORBA::ULong i,j,num_containers,num_components;
+ num_containers = impl_infos.length ();
+ for (i = 0; i < num_containers; ++i)
+ {
+ num_components = impl_infos[i].impl_infos.length ();
+ for (j = 0; j < num_components; ++j)
+ {
+ ACE_DEBUG ((LM_DEBUG, "The info for installation: \n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n",
+ impl_infos[i].impl_infos[j].component_instance_name.in (),
+ impl_infos[i].impl_infos[j].executor_dll.in (),
+ impl_infos[i].impl_infos[j].executor_entrypt.in (),
+ impl_infos[i].impl_infos[j].servant_dll.in (),
+ impl_infos[i].impl_infos[j].servant_entrypt.in () ));
+ ACE_OS::fprintf (fp,
+ "extern \"C\" ::Components::HomeExecutorBase_ptr %s (void);\n",
+ impl_infos[i].impl_infos[j].executor_entrypt.in ());
+ ACE_OS::fprintf (fp,
+ "extern \"C\" ::PortableServer::Servant %s \n",
+ impl_infos[i].impl_infos[j].servant_entrypt.in ());
+ ACE_OS::fprintf (fp,
+ "\t\t(::Components::HomeExecutorBase_ptr p,\n");
+ ACE_OS::fprintf (fp,
+ "\t\t::CIAO::Session_Container *c,\n");
+ ACE_OS::fprintf (fp,
+ "\t\tconst char*\n");
+ ACE_OS::fprintf (fp,
+ "\t\t);\n");
+ }
+ }
+
+ ACE_OS::fprintf (fp, "struct HomeAttributes\n");
+ ACE_OS::fprintf (fp, "{\n");
+ ACE_OS::fprintf (fp, " char const * component_instance_name_;\n");
+ ACE_OS::fprintf (fp, " /// Specify the entrypoint to component executor DLL.\n");
+ ACE_OS::fprintf (fp, " char const * executor_entrypt_;\n");
+ ACE_OS::fprintf (fp, " ::CIAO::HomeFactory executor_fptr_;\n");
+ ACE_OS::fprintf (fp, " /// Specify the entrypoint to component servant DLL.\n");
+ ACE_OS::fprintf (fp, " char const * servant_entrypt_;\n");
+ ACE_OS::fprintf (fp, " ::CIAO::ServantFactory servant_fptr_;\n");
+ ACE_OS::fprintf (fp, "};\n");
+ ACE_OS::fprintf (fp, "/// Homes\n");
+ ACE_OS::fprintf (fp, "HomeAttributes homes_table[]= \n");
+ ACE_OS::fprintf (fp, "{\n");
+
+ num_containers = impl_infos.length ();
+ for (i = 0; i < num_containers; ++i)
+ {
+ num_components = impl_infos[i].impl_infos.length ();
+ for (j = 0; j < num_components; ++j)
+ {
+ ACE_OS::fprintf (fp, "\t{\"%s\", \"%s\", %s, \"%s\", %s}",
+ impl_infos[i].impl_infos[j].component_instance_name.in (),
+ impl_infos[i].impl_infos[j].executor_entrypt.in (),
+ impl_infos[i].impl_infos[j].executor_entrypt.in (),
+ impl_infos[i].impl_infos[j].servant_entrypt.in (),
+ impl_infos[i].impl_infos[j].servant_entrypt.in () );
+ if (!(i == num_containers -1 && j == num_components-1))
+ ACE_OS::fprintf (fp, ",\n");
+ }
+ }
+ ACE_OS::fprintf (fp, "};\n\n");
+
+ ACE_OS::fclose (fp);
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.mpc b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
new file mode 100644
index 00000000000..1234b0a03bb
--- /dev/null
+++ b/modules/CIAO/DAnCE/StaticConfigurator/StaticDAnCEParser.mpc
@@ -0,0 +1,10 @@
+// -*- MPC -*-
+// $Id$
+
+project(StaticDAnCEParser): ciao_component_dnc, taoexe, ciao_config_handlers, ciao_domainapplicationmanager_dnc, iortable, ciao_server_dnc, ciao_nodeapplicationmanager {
+ exename = StaticDAnCEParser
+
+ Source_Files {
+ StaticDAnCEParser.cpp
+ }
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp b/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp
new file mode 100644
index 00000000000..12deaa5ac80
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/CmpClient.cpp
@@ -0,0 +1,271 @@
+// $Id$
+/**
+ * @file CmpClient.cpp
+ *
+ * @brief This file contains a client of TargetManager.
+ *
+ * It picks up the TM ior from the Targetmanager.ior file
+ * present in the current directory, and makes the calls on the
+ * TM to getAllResources and getAvailable resources
+ */
+
+#include "ciao/Deployment_DataC.h"
+#include "DAnCE/TargetManager/TargetManagerImplC.h"
+#include "ace/streams.h"
+#include "Config_Handlers/DnC_Dump.h"
+
+void write_to_file (::Deployment::Domain domain);
+
+int main (int argc, char* argv[])
+{
+ try {
+ // First initialize the ORB, that will remove some arguments...
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv,
+ "" /* the ORB name, it can be anything! */);
+
+ // There must be at least two arguments, the first is the factory
+ // name, the rest are the names of the stock symbols we want to
+ // get quotes for.
+ if (argc < 2) {
+ cerr << "Usage: " << argv[0]
+ << " Factory_IOR ..." << endl;
+ return 1;
+ }
+
+ // Use the first argument to create the factory object reference,
+ // in real applications we use the naming service, but let's do
+ // the easy part first!
+ CORBA::Object_var factory_object =
+ orb->string_to_object (argv[1]);
+
+ // Now downcast the object reference to the appropriate type
+ CIAO::TargetManagerImpl_var targetCmp =
+ CIAO::TargetManagerImpl::_narrow (factory_object.in ());
+
+ // Now get the facet reference from the target Manager Component
+ ACE_DEBUG((LM_DEBUG, "Making a Call to provide_targetMgr ()\n"));
+ Deployment::TargetManager_ptr targetI = targetCmp->provide_targetMgr ();
+
+ // Now make calls on the Target Manager facet
+
+ try
+ {
+ Deployment::Domain_var domainV = targetI->getAllResources ();
+ ACE_DEBUG ((LM_DEBUG , "\n\nGetAllResources Returned \n"));
+ ::Deployment::DnC_Dump::dump (domainV);
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:CORBA::NO_IMPLEMENT thrown\n"));
+ }
+ catch(CORBA::Exception &)
+ {
+ ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:CORBA Generic Exception \n"));
+ ACE_DEBUG((LM_DEBUG ,"Error:TargetManager:Exception in TargetManager call\n"));
+ }
+
+
+ // make a call to the commit resources .....
+
+
+ Deployment::DeploymentPlan plan;
+
+ plan.instance.length (2);
+
+ ::Deployment::InstanceDeploymentDescription instance_;
+ instance_.node = CORBA::string_dup ("foil");
+ instance_.deployedResource.length (1);
+ instance_.deployedResource[0].requirementName =
+ CORBA::string_dup ("Processor");
+ instance_.deployedResource[0].resourceName =
+ CORBA::string_dup ("CPULoad");
+
+ instance_.deployedResource[0].property.length (1);
+ instance_.deployedResource[0].property[0].name =
+ CORBA::string_dup ("LoadAverage");
+ CORBA::Long d = 20;
+ instance_.deployedResource[0].property[0].value <<= d;
+
+ plan.instance[0] = instance_;
+
+ instance_.node = CORBA::string_dup ("blade30");
+ instance_.deployedResource.length (1);
+ instance_.deployedResource[0].requirementName =
+ CORBA::string_dup ("Processor");
+ instance_.deployedResource[0].resourceName =
+ CORBA::string_dup ("CPULoad");
+
+ instance_.deployedResource[0].property.length (1);
+ instance_.deployedResource[0].property[0].name =
+ CORBA::string_dup ("LoadAverage");
+ d = 50;
+
+ instance_.deployedResource[0].property[0].value <<= d;
+
+ plan.instance[1] = instance_;
+
+ bool resource_available = true;
+
+ try
+ {
+ targetI->commitResources(plan);
+ ACE_DEBUG ((LM_DEBUG , "\n\ncommitResources Returned \n"));
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl;
+ }
+ catch (Deployment::ResourceNotAvailable & e)
+ {
+ resource_available = 0;
+ cout << "TargetManager commitResources ResourceNotAvailable Exception" <<endl;
+
+ ACE_DEBUG ((LM_DEBUG ,
+ "ResourceNotAvailable\n name=[%s]\n elementName=[%s]\n resourceName=[%s]\n \
+ resourceType= [%s]\n propertyName=[%s]\n",
+ e.name.in (),
+ e.elementName.in (),
+ e.resourceName.in (),
+ e.resourceType.in (),
+ e.propertyName.in ()));
+ }
+ catch(CORBA::Exception & ex)
+ {
+ cout << "Error:TargetManager:commitResources Exception" <<endl;
+ cout << "Error:TargetManager:CORBA Generic Exception " << endl;
+ cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl;
+ }
+
+
+ // Make a call to release resources , if resource < 0
+ try
+ {
+ if (!resource_available)
+ {
+ targetI->releaseResources(plan);
+ ACE_DEBUG ((LM_DEBUG , "\n\nreleaseResources Returned \n"));
+ }
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl;
+ }
+ catch (Deployment::ResourceNotAvailable &)
+ {
+ cout << "Error:TargetManager releaseResources ResourceNotAvailable Exception" <<endl;
+ }
+ catch(CORBA::Exception & ex)
+ {
+ cout << "Error:TargetManager:releaseResources Exception" <<endl;
+ cout << "Error:TargetManager:CORBA Generic Exception " << endl;
+ cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl;
+ }
+
+ // Here make a call on the TM with update domain and node deletion
+
+ ::Deployment::Domain updated;
+ updated.node.length (1);
+ updated.node[0].name = CORBA::string_dup (argv[2]);
+
+ ::CORBA::StringSeq elements;
+ elements.length (0);
+
+ bool Add = true;
+ Add = ACE_OS::atoi (argv[3]);
+
+ if (Add)
+ {
+ try
+ {
+ targetI->updateDomain (elements , updated, ::Deployment::Add);
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl;
+ }
+ catch(CORBA::Exception & ex)
+ {
+ cout << "Error:TargetManager:CORBA Generic Exception " << endl;
+ cerr << "Error:TargetManager:Exception in UpdateDomain call" << ex << endl;
+ }
+ }
+ else
+ {
+ try
+ {
+ targetI->updateDomain (elements , updated, ::Deployment::Delete);
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl;
+ }
+ catch(CORBA::Exception & ex)
+ {
+ cout << "Error:TargetManager:CORBA Generic Exception " << endl;
+ cerr << "Error:TargetManager:Exception in UpdateDomain call" << ex << endl;
+ }
+ }
+ // Now make a call of getAvailableResources on the TargetManager ...
+ try
+ {
+ Deployment::Domain_var domainV = targetI->getAvailableResources();
+
+ // here write things to file ...
+ write_to_file (domainV.in());
+
+ ACE_DEBUG ((LM_DEBUG , "\n\nGetAvailableResources Returned \n"));
+ ::Deployment::DnC_Dump::dump (domainV);
+ }
+ catch(CORBA::NO_IMPLEMENT &)
+ {
+ cerr << "Error:TargetManager:CORBA::NO_IMPLEMENT thrown" << endl;
+ }
+ catch(CORBA::Exception & ex)
+ {
+ cout << "Error:TargetManager:CORBA Generic Exception " << endl;
+ cerr << "Error:TargetManager:Exception in TargetManager call" << ex << endl;
+ }
+
+ // Finally destroy the ORB
+ orb->destroy ();
+ }
+ catch (CORBA::Exception & ex) {
+ cerr << "Error:TargetManager:CORBA exception raised!" << ex << endl;
+ }
+ return 0;
+}
+
+void write_to_file (::Deployment::Domain domain)
+{
+ for (size_t i = 0;i < domain.node.length ();i++)
+ {
+ std::ofstream out (domain.node[i].name.in ());
+
+
+ // write in the node usage ...
+ for (size_t j = 0;j < domain.node[i].resource.length ();j++)
+ {
+
+ if (!strcmp (domain.node[i].resource[j].name.in (), "Processor"))
+ {
+ CORBA::Double node_cpu;
+ domain.node[i].resource[j].property[0].value >>= node_cpu;
+ out << node_cpu << std::endl;
+ }
+ if (!strcmp (domain.node[i].resource[j].name.in (), "NA_Monitor"))
+ {
+ std::string file_name = "NA_";
+ file_name += domain.node[i].name.in ();
+ std::ofstream na_out (file_name.c_str ());
+ CORBA::Double na_node_cpu;
+ domain.node[i].resource[j].property[0].value >>= na_node_cpu;
+ na_out << na_node_cpu << std::endl;
+ na_out.close ();
+ }
+ }
+
+ out.close ();
+ }
+
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp
new file mode 100644
index 00000000000..da7f59a3b86
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.cpp
@@ -0,0 +1,738 @@
+// $Id$
+//===============================================================
+/**
+ * @file DomainDataManager.cpp
+ *
+ * @brief Maintains the Domain Information
+ *
+ * It contains the entire Domain information.Both the
+ * initial domain as well as the current available domain.
+ *
+ * @author Nilabja Roy nilabjar@dre.vanderbilt.edu
+ */
+//===============================================================
+#include "DomainDataManager.h"
+
+#include "Config_Handlers/DD_Handler.h"
+#include "Config_Handlers/DnC_Dump.h"
+#include "ciao/CIAO_common.h"
+
+const char * domain_file_name = "Domain.cdd";
+
+CIAO::DomainDataManager* CIAO::DomainDataManager::global_data_manager_ = 0;
+
+CIAO::DomainDataManager * CIAO::DomainDataManager::create (CORBA::ORB_ptr orb,
+ ::Deployment::TargetManager_ptr target
+ )
+{
+ if (global_data_manager_ == 0)
+ {
+ global_data_manager_ = new DomainDataManager (orb , target);
+ }
+ return global_data_manager_;
+}
+
+
+CIAO::DomainDataManager*
+CIAO::DomainDataManager::get_data_manager ()
+{
+ return global_data_manager_;
+}
+
+
+void
+CIAO::DomainDataManager::delete_data_manger ()
+{
+ if (global_data_manager_)
+ delete global_data_manager_;
+}
+
+
+
+int CIAO::DomainDataManager::update_domain (
+ const ::CORBA::StringSeq &,
+ const ::Deployment::Domain & domainSubset,
+ ::Deployment::DomainUpdateKind update_kind)
+{
+ // Update the subset of the domain which the above
+ // parameter corresponds to
+
+
+ //check the type of update ..
+
+ switch (update_kind)
+ {
+ case ::Deployment::UpdateAll:
+ case ::Deployment::UpdateAvailable:
+ break;
+ case ::Deployment::Add:
+ add_to_domain (domainSubset);
+ break;
+ case ::Deployment::Delete:
+ delete_from_domain (domainSubset);
+ break;
+ default:
+ break;
+ }
+
+ int size = current_domain_.node.length ();
+
+ int i;
+ for (i=0;i < size;i++)
+ {
+ if (!strcmp (domainSubset.node[0].name ,
+ current_domain_.node[i].name))
+ {
+ // found a match
+ // for now overwrite the entire Node info ...
+ // but later , this has to be changed to overwrite
+ // only the specific part ...
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::Changed the cpu Value\n"));
+ }
+ current_domain_.node[i] = domainSubset.node[0];
+ break; // finished job ...break
+ }
+ }
+
+ if (i == size)
+ {
+ // thus the node is new .. add it to current_domain_
+ // later change it ...
+ current_domain_.node.length (size+1);
+ current_domain_.node[size]=domainSubset.node[0];
+ }
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::Inside The update Domain of Manager\n"));
+ }
+ return 0;
+}
+
+CIAO::DomainDataManager::
+DomainDataManager (CORBA::ORB_ptr orb,
+ ::Deployment::TargetManager_ptr target)
+ : orb_ (CORBA::ORB::_duplicate (orb)),
+ deployment_config_ (orb_.in()),
+ target_mgr_ (::Deployment::TargetManager::_duplicate(target))
+{
+ // ACE_DEBUG((LM_DEBUG , "Calling DD_HANDLER\n"));
+ CIAO::Config_Handlers::DD_Handler dd (domain_file_name);
+ // ACE_DEBUG((LM_DEBUG , "After DD_HANDLER Constructor\n"));
+ ::Deployment::Domain* dmn = dd.domain_idl ();
+ // ACE_DEBUG((LM_DEBUG , "After DD_HANDLER domain_idl\n"));
+
+ if (CIAO::debug_level () > 9)
+ ::Deployment::DnC_Dump::dump (*dmn);
+
+ current_domain_ = *dmn;
+ initial_domain_ = current_domain_;
+
+ // initialize the provisioning domain
+ provisioned_data_ = initial_domain_;
+
+ update_node_status ();
+
+ call_all_node_managers ();
+}
+
+::Deployment::Domain* CIAO::DomainDataManager::get_current_domain ()
+{
+ return new ::Deployment::Domain (provisioned_data_);
+}
+
+::Deployment::Domain* CIAO::DomainDataManager::get_initial_domain ()
+{
+ return new ::Deployment::Domain (initial_domain_);
+}
+
+int CIAO::DomainDataManager::readin_domain_data ()
+{
+ // here read in Domain data ...
+ //
+ return 0;
+}
+
+int CIAO::DomainDataManager::call_all_node_managers ()
+{
+ if ( this->deployment_config_.init ("NodeDetails.dat") == -1 )
+ {
+ ACE_ERROR ((LM_ERROR,
+ "TargetM (%P|%t) DomainDataManager.cpp -"
+ "CIAO::DomainDataManager::call_all_node_managers -"
+ "ERROR while trying to initialize after reading "
+ "node details DAT file \n"));
+ return 0;
+ }
+
+ CORBA::ULong const length = initial_domain_.node.length ();
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Number of nodes in domain.cdd is : %d\n", length));
+ }
+
+ for (CORBA::ULong i=0;i < length;i++)
+ {
+
+ ::Deployment::NodeManager_var node_manager;
+
+ try
+ {
+ node_manager =
+ deployment_config_.get_node_manager
+ (initial_domain_.node[i].name.in ());
+ }
+ catch (CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR, "DANCE::TM (%P|%t) DomainDataManager.cpp: "
+ "Error trying to contact NodeManager %s\n",
+ initial_domain_.node[i].name.in ()));
+ continue;
+ }
+
+
+ if (!CORBA::is_nil (node_manager.in ()))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Trying to contact nodemanager on %s\n",
+ initial_domain_.node[i].name.in ()));
+ }
+ Deployment::Logger_ptr log =
+ Deployment::Logger::_nil ();
+ ::Deployment::Domain sub_domain;
+ sub_domain.UUID = CORBA::string_dup("Node-Level-domain");
+ sub_domain.label = CORBA::string_dup("Node-level-domain");
+ sub_domain.sharedResource.length(0);
+ sub_domain.interconnect.length(0);
+ sub_domain.bridge.length(0);
+ sub_domain.infoProperty.length(0);
+ sub_domain.node.length (1);
+ sub_domain.node[0] = initial_domain_.node[i];
+ try
+ {
+ node_manager->joinDomain (sub_domain,
+ target_mgr_.in (),
+ log);
+ }
+ catch (CORBA::Exception& ex)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::Error in calling Join Domain==\n"));
+ ex._tao_print_exception (
+ "Exception caught in ""DomainDataManager::joinDomain");
+ }
+ }
+ }
+ return 0;
+
+}
+
+CIAO::Host_NodeManager_seq * CIAO::DomainDataManager::get_node_managers ()
+{
+ ::CIAO::Host_NodeManager_seq* node_mgr_seq =
+ new ::CIAO::Host_NodeManager_seq ();
+ node_mgr_seq->length (initial_domain_.node.length ());
+ for (unsigned int i=0;i < initial_domain_.node.length ();i++)
+ {
+ (*node_mgr_seq)[i].host_ =
+ CORBA::string_dup (initial_domain_.node[i].name);
+ ::Deployment::NodeManager_var node_manager =
+ deployment_config_.get_node_manager (initial_domain_.node[i].name);
+ // if (node_manager.in () != 0)
+ {
+ (*node_mgr_seq)[i].node_mgr_ = ::CIAO::NodeManagerDaemon::_narrow (node_manager.in ());
+ }
+ }
+ return node_mgr_seq;
+}
+
+CIAO::Host_Infos* CIAO::DomainDataManager::get_cpu_info ()
+{
+ CIAO::Host_Infos* host_info_seq = new CIAO::Host_Infos ();
+ host_info_seq->length (current_domain_.node.length ());
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG , "TM:: The node length is [%d]",
+ current_domain_.node.length ()));
+
+ for (unsigned int i=0;i < current_domain_.node.length ();i++)
+ {
+ (*host_info_seq)[i].hostname =
+ CORBA::string_dup (current_domain_.node[i].name);
+ // ACE_DEBUG ((LM_DEBUG , "The resource length is [%d]",
+ // current_domain_.node[i].resource.length ()));
+
+ for (unsigned int j = 0;j < current_domain_.node[i].resource.length ();j++)
+ {
+ if (!strcmp(
+ current_domain_.node[i].resource[j].name,
+ "Processor"))
+ {
+ current_domain_.node[i].resource[j].property[0].value
+ >>= (*host_info_seq)[i].cpu_util;
+ CORBA::Double d;
+ current_domain_.node[i].resource[j].property[0].value
+ >>= d;
+ // ACE_DEBUG ((LM_DEBUG, "TM::The current cpu util is [%f]\n", d));
+ }
+ }
+ }
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG , "TM::Returning from get_cpu_info"));
+
+ return host_info_seq;
+}
+
+CORBA::Long CIAO::DomainDataManager::get_pid (ACE_CString cmp)
+{
+ CORBA::Long pid;
+
+ // This is really ineffiecient this is O(n) ; searching all the nodes
+ // all the resources for a particular component.
+ // It needs to be stored in some other data structure
+
+ for (unsigned int i=0;i < current_domain_.node.length ();i++)
+ {
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG , "TM::The resource length is [%d]",
+ current_domain_.node[i].resource.length ()));
+
+ for (unsigned int j = 0;j < current_domain_.node[i].resource.length ();j++)
+ {
+ // The resource
+ if (!ACE_OS::strcmp(
+ current_domain_.node[i].resource[j].name,
+ "Component") &&
+ ACE_CString (current_domain_.node[i].resource[j].property[0].name) ==
+ cmp)
+ {
+ current_domain_.node[i].resource[j].property[0].value
+ >>= pid;
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG,
+ "TM::getpid::The current pid is [%d]\n", pid));
+
+ }
+ } // resources
+ }// nodes
+
+ return pid;
+}
+
+void CIAO::DomainDataManager
+::commitResources (
+ const ::Deployment::DeploymentPlan & plan)
+{
+ // commit the resources
+ // parse into the plan and commit resources ...
+
+ // set the action value
+ current_action_ = commit;
+
+ // temporary created to guard against exceptions
+ ::Deployment::Domain temp_provisioned_data =
+ provisioned_data_;
+
+ for (unsigned int i = 0;i < plan.instance.length ();i++)
+ {
+ for (unsigned int j = 0;j < temp_provisioned_data.node.length ();j++)
+ {
+ if (!strcmp (plan.instance[i].node.in () ,
+ temp_provisioned_data.node[j].name.in ()))
+ {
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::commitResource::Host name matched\n"));
+ try {
+ match_requirement_resource (
+ plan.instance[i].deployedResource,
+ temp_provisioned_data.node[j].resource);
+ }
+ catch (::Deployment::ResourceNotAvailable& ex)
+ {
+ // catch the exception and add parameters
+ ex.elementName =
+ CORBA::string_dup (temp_provisioned_data.node[j].name);
+
+ throw ex;
+ }
+ }
+ }
+ }
+
+ // here commit the commitresources
+ provisioned_data_ = temp_provisioned_data;
+}
+
+
+void CIAO::DomainDataManager::
+releaseResources (
+ const ::Deployment::DeploymentPlan& plan)
+{
+ // release the resources
+
+
+ // set the action value
+ current_action_ = release;
+
+ for (unsigned int i = 0;i < plan.instance.length ();i++)
+ {
+ for (unsigned int j = 0;j < provisioned_data_.node.length ();j++)
+ {
+ if (!ACE_OS::strcmp (plan.instance[i].node.in () ,
+ provisioned_data_.node[j].name.in ()))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::commitResource::Host name matched\n"));
+ }
+
+ match_requirement_resource (
+ plan.instance[i].deployedResource,
+ provisioned_data_.node[j].resource);
+
+ }
+ }
+ }
+
+}
+
+
+void CIAO::DomainDataManager::
+match_requirement_resource (
+ ::Deployment::InstanceResourceDeploymentDescriptions deployed,
+ ::Deployment::Resources & available
+ )
+{
+ // here match the deployed to the available
+
+ for (CORBA::ULong i = 0;i < deployed.length ();i++)
+ {
+ // for each deployed resource ....search the corresponding
+ // available resource
+ for (CORBA::ULong j = 0;j < available.length ();j++)
+ {
+ if (!strcmp (deployed[i].requirementName, available[j].name))
+ {
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::commitResource::Requirement name matched\n"));
+ // search for the resourcename in the resourceType
+ for (CORBA::ULong k = 0;k < available[j].resourceType.length ();k++)
+ {
+ if (!strcmp (deployed[i].resourceName,
+ available[j].resourceType[k]))
+ {
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::commitResource::Resource name matched\n"));
+
+ try {
+ match_properties (deployed[i].property,
+ available[j].property);
+ }
+ catch (::Deployment::ResourceNotAvailable& ex)
+ {
+ // catch the exception and add parameters
+ ex.resourceType =
+ CORBA::string_dup (available[j].resourceType[k]);
+ ex.resourceName =
+ CORBA::string_dup (available[j].name);
+ throw ex;
+ }
+ }
+ }
+ }
+ }
+ }
+
+}
+
+void CIAO::DomainDataManager::
+match_properties (
+ ::Deployment::Properties deployed,
+ ::Deployment::SatisfierProperties & available)
+{
+ for (CORBA::ULong i = 0;i < deployed.length ();i++)
+ {
+ for (CORBA::ULong j = 0;j < available.length ();j++)
+ if (!ACE_OS::strcmp (deployed[i].name , available[j].name))
+ {
+ // check kind here ....and then subtract ....
+ // accordingly , ..this is complex ... better to write
+ // some specialised algo
+ // for now assuming Capacity ....
+ // and tk_double ....
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG ,
+ "TM::commitResource::Property name matched\n"));
+
+ commit_release_resource (deployed[i] , available[j]);
+
+ }
+ }
+}
+
+void CIAO::DomainDataManager::commit_release_resource (
+ ::Deployment::Property & deployed,
+ ::Deployment::SatisfierProperty & available)
+{
+ if (current_action_ == commit)
+ {
+
+ CORBA::Long required_d;
+
+ if ((deployed.value >>= required_d) == false)
+ ACE_ERROR ((LM_ERROR, "Failed to extract required amount\n"));
+
+ CORBA::Long available_d;
+
+ if ((available.value >>= available_d) == false)
+ ACE_ERROR ((LM_ERROR, "failed to extract available amount\n"));
+
+ if (available_d >= required_d)
+ {
+ available_d = available_d - required_d;
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG, "TM::The available is [%f]",
+ available_d));
+
+ available.value <<= available_d;
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Insufficient resources! Available: %d, Required %d\n",
+ available_d, required_d));
+ throw ::Deployment::ResourceNotAvailable ("",
+ "",
+ deployed.name.in (),
+ "",
+ "");
+ }
+
+
+ }
+ else
+ {
+ //must be release
+ // @todo check return value of >>=
+ CORBA::Long required_d;
+ deployed.value >>= required_d;
+ CORBA::Long available_d;
+ available.value >>= available_d;
+
+ available_d = available_d + required_d;
+
+ // Should we check for bin > 100 ??????
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG, "TM::The available is [%f]",
+ available_d));
+
+ available.value <<= available_d;
+ }
+}
+
+void CIAO::DomainDataManager::stop_monitors ()
+{
+
+ CORBA::ULong length = initial_domain_.node.length ();
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Number of nodes in domain.cdd is : %d\n", length));
+ }
+
+ for (CORBA::ULong i=0;i < length;i++)
+ {
+ ::Deployment::NodeManager_var node_manager;
+
+ try
+ {
+ node_manager =
+ deployment_config_.get_node_manager
+ (initial_domain_.node[i].name.in ());
+ }
+ catch (CORBA::Exception&)
+ {
+ ACE_ERROR ((LM_ERROR, "DANCE::TM (%P|%t) DomainDataManager.cpp: "
+ "Error in get Node Manager from Deployment Config %s\n",
+ initial_domain_.node[i].name.in ()));
+ continue;
+ }
+
+
+ if (!CORBA::is_nil (node_manager.in ()))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Trying to contact nodemanager on %s\n",
+ initial_domain_.node[i].name.in ()));
+ }
+ try
+ {
+ node_manager->leaveDomain ();
+ }
+ catch (CORBA::Exception& ex)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::Error in calling Leave Domain\n"));
+ ex._tao_print_exception (
+ "Exception caught in ""DomainDataManager::leaveDomain");
+ }
+ }
+ }
+ return;
+
+}
+
+int CIAO::DomainDataManager::add_to_domain (
+ const ::Deployment::Domain& domain)
+{
+ // here add the domain to the Domain
+ // right now use only a node
+
+ // got to take care of the fact , that a node can be added ,
+ // while it is still in the domain
+
+ //iterate through the supplied domain
+ //for each node
+ // find it in the pristine domain
+ // and copy it back to the provisioned_domain
+
+ for (CORBA::ULong i = 0;i < domain.node.length ();i++)
+ {
+ //find in the pristine domain
+ ::Deployment::Node a_node;
+
+ if (!this->find_in_initial_domain (domain.node[i].name.in (),
+ a_node))
+ continue; // dont know this node
+
+ //check if already present
+ if (!this->find_in_provisioned_domain (domain.node[i].name.in (),
+ a_node))
+ {
+ // add the node to the domain ...
+ provisioned_data_.node.length (provisioned_data_.node.length () + 1);
+ provisioned_data_.node[provisioned_data_.node.length () - 1] =
+ a_node;
+ }
+ }
+
+// ::Deployment::DnC_Dump::dump (this->provisioned_data_);
+
+ ACE_DEBUG ((LM_DEBUG, "TM::Node Up Message Processed\n"));
+
+ return 0;
+}
+
+bool CIAO::DomainDataManager::
+find_in_initial_domain (const char* node_name,
+ ::Deployment::Node& node)
+{
+ for (CORBA::ULong i =0;
+ i < this->initial_domain_.node.length ();
+ i++)
+ {
+ if (ACE_OS::strcmp (node_name, this->initial_domain_.node[i].name.in ()) == 0)
+ {
+ node = this->initial_domain_.node[i];
+ return true;
+ }
+ }
+
+ // not found the node , return a node with an empty name
+ return false;
+}
+
+
+bool CIAO::DomainDataManager::
+find_in_provisioned_domain (const char* node_name,
+ ::Deployment::Node& node)
+{
+ for (CORBA::ULong i =0;
+ i < this->provisioned_data_.node.length ();
+ i++)
+ {
+ if (ACE_OS::strcmp (node_name, this->provisioned_data_.node[i].name.in ()) == 0)
+ {
+ node = this->provisioned_data_.node[i];
+ return true;
+ }
+ }
+
+ // not found the node , return a node with an empty name
+ return false;
+}
+
+int CIAO::DomainDataManager::delete_from_domain (
+ const ::Deployment::Domain& domain)
+{
+ // validate input
+ if (domain.node.length () == 0)
+ return 1;
+
+ if (domain.node.length () >
+ this->provisioned_data_.node.length ())
+ return 0;
+
+ //algo : parse through the provisioned_data
+ // for each node , find in the deleted domain list
+ // if not found add it to the updated nodes list
+
+ ::Deployment::Nodes updated_nodes;
+ bool found = false;
+
+ for (CORBA::ULong j = 0;
+ j < this->provisioned_data_.node.length ();
+ j++)
+ {
+ found = false;
+
+ for (CORBA::ULong i = 0;i < domain.node.length ();i++)
+ {
+ if (strcmp (domain.node[i].name.in (),
+ this->provisioned_data_.node[j].name.in ()) == 0)
+ {
+ found = true;
+ break; // found the node
+ }
+ }
+ if (found)
+ continue;
+
+ // not found in the deleted list
+
+ // update the length of the list
+ updated_nodes.length (updated_nodes.length () + 1);
+
+ // copy the node info
+ updated_nodes[updated_nodes.length () - 1] =
+ this->provisioned_data_.node[j];
+
+ } // for provisioned_data
+
+ // here update the provisioned data
+ this->provisioned_data_.node = updated_nodes;
+
+ return 1;
+}
+
+int CIAO::DomainDataManager::intimate_planner (
+ const ::Deployment::Domain& domain)
+{
+ // use the connection with the planner and get a reference to the planner
+ // make a call top the planner
+ Deployment::Domain d = domain;
+ return 0;
+
+}
+
+bool CIAO::DomainDataManager::update_node_status ()
+{
+ // update the node status here ...
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h
new file mode 100644
index 00000000000..d75e314606d
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/DomainDataManager.h
@@ -0,0 +1,290 @@
+// $Id$
+//===============================================================
+/**
+ * @file DomainDataManager.h
+ *
+ * @brief Maintains the Domain Information
+ *
+ * It contains the entire Domain information. Both the
+ * initial domain as well as the current available domain.
+ *
+ * @author Nilabja Roy nilabjar@dre.vanderbilt.edu
+ */
+//===============================================================
+#ifndef DOMAIN_DATA_MGRH
+#define DOMAIN_DATA_MGRH
+
+#include "TargetManagerImplC.h"
+#include "DAnCE/DomainApplicationManager/Deployment_Configuration.h"
+
+/**
+ * @namespace CIAO
+ *
+ * @brief The main CIAO namespace
+ *
+ */
+namespace CIAO
+{
+ /**
+ * @class DomainDataManager
+ *
+ * @brief Responsible for maintaining the Domain Information
+ *
+ * It maintains both the Current Domain Information as well
+ * as the Initial domain at full capacity.
+ */
+ class DomainDataManager
+ {
+
+ public :
+ /**
+ * @brief This function is called by the other classes to update
+ * current domain data.
+ * @param elements The string sequence of elements
+ * being updated
+ * @param domainSubset The subset of the actual Domain to be updated
+ * @param updateKind Specifies the update type eg. add, delete, update
+ *
+ */
+ int update_domain (const ::CORBA::StringSeq & elements,
+ const ::Deployment::Domain & domainSubset,
+ ::Deployment::DomainUpdateKind updateKind
+ );
+ /**
+ * @brief This function is called the Executor code
+ * to get the Original Domain data.
+ * @return Domain* The Initial Domain
+ *
+ */
+ ::Deployment::Domain* get_initial_domain ();
+
+ /**
+ * @brief This function is called the Executor code
+ * to get the Current Domain data.
+ * @return Domain* The Current Domain
+ */
+ ::Deployment::Domain* get_current_domain ();
+
+
+ /**
+ * This function calls the constructor of the
+ * class Domain Data Manager
+ * @brief This function is called to create the Datamanager
+ * @param orb The orb pointer
+ * @param target The Target Manager Object Reference
+ *
+ */
+ static DomainDataManager * create (CORBA::ORB_ptr orb,
+ ::Deployment::TargetManager_ptr target
+ );
+
+ /**
+ * @brief Returns the static pointer to the
+ * data manager.
+ * @return DomainDataManager*
+ * @description The staic get_data_manger function returning
+ * the data_manager pointer
+ */
+ static DomainDataManager* get_data_manager ();
+
+ /**
+ * @brief deletes the data manager
+ */
+ static void delete_data_manger ();
+
+ /**
+ * @brief returns the sequence of node managers
+ * object reference
+ */
+ CIAO::Host_NodeManager_seq *
+ get_node_managers ();
+
+ /**
+ * @brief returns the node specific cpu utilization
+ *
+ * @return CIAO::Host_Infos*
+ */
+
+ CIAO::Host_Infos* get_cpu_info ();
+
+ /**
+ * @brief returns the pid of the component id submitted
+ * @param cmp The component id
+ *
+ * @return process id
+ */
+ CORBA::Long get_pid (ACE_CString cmp);
+
+ /**
+ * @brief commits the resources that are specified
+ * in the plan.
+ * @param plan ::Deployment::DeploymentPlan
+ * @exception ::Deployment::ResourceNotAvailable thrown
+ * when the resources mentioned in the plan exceeds
+ * the current resource.
+ * @exception ::Deployment::PlanError thrown if the plan has any
+ * error
+ *
+ */
+ void commitResources (
+ const ::Deployment::DeploymentPlan & plan);
+
+ /**
+ * @brief The function releases the resources held by a plan
+ * @param plan ::Deployment::DeploymentPlan the plan whose
+ * resources are to be released
+ */
+ void releaseResources (
+ const ::Deployment::DeploymentPlan& plan);
+
+ /**
+ * The node manager in turn stops the monitor
+ * @brief The function makes a call on the leaveDomain on the
+ * NodeManager
+ */
+ void stop_monitors ();
+
+ protected:
+
+ /**
+ * The constructor made protected so that no one can create
+ * it.
+ * @param orb The orb pointer
+ * @param target The Target Manager Object Reference
+ */
+ DomainDataManager (CORBA::ORB_ptr orb,
+ ::Deployment::TargetManager_ptr target
+ );
+
+ /**
+ * @brief It will read the initial Domain data from
+ * XML files.
+ */
+ int readin_domain_data ();
+
+ /**
+ * @brief Match the deployed resources to the
+ * available resource
+ */
+ void match_requirement_resource (
+ ::Deployment::InstanceResourceDeploymentDescriptions deployed,
+ ::Deployment::Resources& available
+ );
+
+ /**
+ * @brief Match the properties of a Requirement to the
+ * properties of available resource
+ * @param deployed The deployed Properties
+ * @param available The available Properties
+ */
+ void match_properties (
+ ::Deployment::Properties deployed,
+ ::Deployment::SatisfierProperties& available);
+
+
+ /// The different actiona that can take place
+ enum Action {commit , release};
+
+ /**
+ * @brief Either commits or releases the given resource
+ * based on the current Action set.
+ * @param deployed ::Deployment::Property is the resource
+ * to be commited/released
+ * @param available ::Deployment::SatisfierProperty is the
+ * available resource from which committed/released.
+ * @exception ::Deployment::ResourceNotAvailable thrown
+ * when the deployed resources exceeds
+ * the available resource.
+ */
+ void commit_release_resource ( ::Deployment::Property & deployed,
+ ::Deployment::SatisfierProperty & available);
+
+ /**
+ * @brief This function calls all NM and gives them
+ * the sub-domain
+ */
+ int call_all_node_managers ();
+
+ /**
+ * @brief This function add new elements to the
+ * already existing domain
+ *
+ * @param domain Deployment::Domain contians the new
+ * elements
+ */
+ int add_to_domain (const ::Deployment::Domain& domain);
+
+ /**
+ * @brief This function deletes elements from the domain
+ *
+ * @param domain ::Deployment::Domain contains the new elements
+ * in the domain
+ */
+ int delete_from_domain (const ::Deployment::Domain& domain);
+
+ /**
+ * @brief This function intimates the planner about a domain
+ * change
+ *
+ * @param domain ::Deployment::Domain contains the new elements
+ * in the domain
+ */
+ int intimate_planner (const ::Deployment::Domain& domain);
+
+ /**
+ * @brief This function finds a new node in the initial_domain
+ *
+ * @param node The name of the node which is to be searched
+ */
+
+ bool find_in_initial_domain (const char* node_name,
+ ::Deployment::Node& node);
+ /**
+ * @brief This function finds a new node in the proviosiond_domain
+ *
+ * @param node The name of the node which is to be searched
+ */
+ bool find_in_provisioned_domain (const char* node_name,
+ ::Deployment::Node& node);
+
+ /**
+ * @brief updates the node status by reading it from a file
+ */
+ bool update_node_status ();
+
+ /// The ORB pointer
+ CORBA::ORB_var orb_;
+
+ /// The Deployment Configuration
+ CIAO::Deployment_Configuration deployment_config_;
+
+ /// The Initial Domain - contains resources
+ /// at total capacity
+ ::Deployment::Domain initial_domain_;
+
+
+ /// The Current Domain - contains resources
+ /// at current capacity
+ ::Deployment::Domain current_domain_;
+
+ /// The Target Manager Context
+ ::Deployment::TargetManager_var target_mgr_;
+
+ /**
+ * The staic data manager pointer implementing
+ * singleton pattern
+ */
+ static DomainDataManager* global_data_manager_;
+
+ /**
+ * The static provisioned Domain data
+ */
+ ::Deployment::Domain provisioned_data_;
+
+ /// The current action
+ Action current_action_;
+ };
+
+} // CIAO
+
+#endif /* DOMAIN_DATA_MGRH */
diff --git a/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl b/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl
new file mode 100644
index 00000000000..4fe089a86a6
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/DomainEvents.idl
@@ -0,0 +1,25 @@
+/**
+ * @file DomainEvents.idl
+ * @brief Contains Events in the Domain
+ *
+ * @author Nilabja R <nilabjar@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+#ifndef DOMAIN_CHANGE_IDL
+#define DOMAIN_CHANGE_IDL
+
+#include "ciao/Deployment_TargetManager.idl"
+#include "ciao/CCM_Events.idl"
+
+module CIAO
+{
+ eventtype Domain_Changed_Event
+ {
+ public ::Deployment::Domain changes;
+ public ::Deployment::DomainUpdateKind change_kind;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc b/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc
new file mode 100644
index 00000000000..0a203ab1476
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TM_Client.mpc
@@ -0,0 +1,21 @@
+// $Id$
+
+// Client.mpc,v 1.6 2005/02/18 09:07:06 jwillemsen Exp
+
+project(TMClient): ciao_client_dnc,ciao_deployment_stub, ciao_config_handlers, ciao_events_dnc, ciao_targetmanager_stub {
+ IDL_Files {
+ }
+
+ Source_Files {
+ CmpClient.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+
+ Template_Files {
+ }
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager.cidl b/modules/CIAO/DAnCE/TargetManager/TargetManager.cidl
new file mode 100644
index 00000000000..6e880c069e9
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager.cidl
@@ -0,0 +1,27 @@
+// $Id$
+
+/*
+ * @file TargetManager.cidl
+ * @brief The file contains the TargetManager component
+ * defination
+ */
+
+#ifndef TARGETMANAGER_CIDL
+#define TARGETMANAGER_CIDL
+
+#include "TargetManagerImpl.idl"
+
+/*
+ * @composition TargetManager_i
+ */
+
+composition session TargetManager_i
+{
+ home executor TargetManagerHome_Exec
+ {
+ implements CIAO::TargetManagerHome;
+ manages TargetManagerImpl_Exec;
+ };
+};
+
+#endif
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc b/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc
new file mode 100644
index 00000000000..11d1bd518b9
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager.mpc
@@ -0,0 +1,62 @@
+// $Id$
+
+project(CIAO_TargetManager_stub): ciao_client_dnc, ciao_deployment_stub, ciao_nodemanager_stub {
+ sharedname = TargetManager_stub
+ idlflags += -Wb,stub_export_macro=TARGETMANAGER_STUB_Export \
+ -Wb,stub_export_include=TargetManager_stub_export.h \
+ -Wb,skel_export_macro=TARGETMANAGER_SVNT_Export \
+ -Wb,skel_export_include=TargetManager_svnt_export.h
+ dynamicflags = TARGETMANAGER_STUB_BUILD_DLL
+
+ IDL_Files {
+ TargetManagerImpl.idl
+ TargetManagerExt.idl
+ DomainEvents.idl
+ }
+
+ Source_Files {
+ TargetManagerImplC.cpp
+ TargetManagerExtC.cpp
+ DomainEventsC.cpp
+ }
+}
+
+project(CIAO_TargetManager_svnt) : ciao_servant_dnc, ciao_targetmanager_stub {
+ sharedname = TargetManager_svnt
+
+ idlflags += -Wb,export_macro=TARGETMANAGER_SVNT_Export \
+ -Wb,export_include=TargetManager_svnt_export.h
+
+ dynamicflags = TARGETMANAGER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ TargetManager.cidl
+ }
+
+ IDL_Files {
+ TargetManagerE.idl
+ }
+
+ Source_Files {
+ TargetManagerEC.cpp
+ TargetManagerImplS.cpp
+ TargetManagerExtS.cpp
+ TargetManager_svnt.cpp
+ DomainEventsS.cpp
+ }
+}
+
+
+project(CIAO_TargetManager_exec) : ciao_component_dnc, ciao_config_handlers, ciao_domainapplicationmanager_dnc, ciao_targetmanager_svnt {
+ sharedname = TargetManager_exec
+
+ dynamicflags = TARGETMANAGER_EXEC_BUILD_DLL
+
+ Source_Files {
+ DomainDataManager.cpp
+ TargetManager_exec.cpp
+ }
+
+ IDL_Files {
+ }
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl b/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl
new file mode 100644
index 00000000000..025d8188e39
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManagerExt.idl
@@ -0,0 +1,79 @@
+// $Id$
+
+/**
+ * @file TargetManagerExt.idl
+ *
+ * @brief The Extensions to the TM interface for ARMS demo
+ *
+ * @author Nilabja R <nilabjar@dre.vanderbilt.edu>
+ * @author Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+ *
+ * This file declares a interface which will be implemented as
+ * a facet by the TargetManager component
+ */
+
+/**
+ * @module CIAO
+ *
+ * @brief The CIAO module
+ */
+
+#include "DAnCE/Interfaces/NodeManagerDaemon.idl"
+
+module CIAO
+{
+ /**
+ * @struct Cpu_Info
+ * @brief Consists of individual host-cpu info
+ */
+ struct Host_Info
+ {
+ string hostname;
+ double cpu_util;
+ };
+
+ /// The sequence of CPU infos
+ typedef sequence<Host_Info> Host_Infos;
+
+ /**
+ * @struct Component_Cpu_Util
+ * @brief Contains a component CPU Util
+ */
+ struct Component_Info
+ {
+ string component_name;
+ double cpu_util;
+ };
+
+ /// The sequence of component cpu utilization
+ typedef sequence <Component_Info> Component_Infos;
+
+
+ /**
+ * @struct Host_NodeManager
+ * @brief Contains the node manager to host reference
+ */
+ struct Host_NodeManager
+ {
+ string host_;
+ ::CIAO::NodeManagerDaemon node_mgr_;
+ };
+
+ /// Sequence of NodeManager.
+ typedef sequence <Host_NodeManager> Host_NodeManager_seq;
+
+ /**
+ * @interface TargetManagerExt
+ * @brief The Target Manager Extension
+ *
+ * Contains the interface used by the RACE
+ * controller.
+ */
+ interface TargetManagerExt
+ {
+ long get_pid (in string component_uuid);
+ Host_Infos get_host_cpu ();
+ Component_Infos get_component_cpu ();
+ Host_NodeManager_seq get_all_node_managers ();
+ };
+};
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManagerImpl.idl b/modules/CIAO/DAnCE/TargetManager/TargetManagerImpl.idl
new file mode 100644
index 00000000000..705a3146a75
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManagerImpl.idl
@@ -0,0 +1,39 @@
+// $Id$
+
+/**
+ * @file TargetManagerImpl.idl
+ * @brief TargetManager interface defintion
+ *
+ * @author Nilabja R <nilabjar@dre.vanderbilt.edu>
+ */
+
+#ifndef TARGETMGR_IDL
+#define TARGETMGR_IDL
+
+#include "ciao/Components.idl"
+#include "ciao/Deployment_Target_Data.idl"
+#include "TargetManagerExt.idl"
+#include "DomainEvents.idl"
+
+/**
+ * @module CIAO
+ *
+ * @brief TargetManagenr interface defintion
+ *
+ */
+module CIAO
+{
+ component TargetManagerImpl
+ {
+ provides ::Deployment::TargetManager targetMgr;
+ provides CIAO::TargetManagerExt target_manager_ext;
+
+ publishes Domain_Changed_Event changes;
+ };
+
+ home TargetManagerHome manages TargetManagerImpl
+ {
+ };
+};
+
+#endif
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp
new file mode 100644
index 00000000000..a39446e7273
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.cpp
@@ -0,0 +1,395 @@
+// $Id$
+//===============================================================
+/**
+ * @file TargetManager_exec.cpp
+ *
+ * @brief TargetManager Executor code
+ *
+ * @author Nilabja Roy nilabjar@dre.vanderbilt.edu
+ */
+//===============================================================
+#include "TargetManager_exec.h"
+#include "ciao/CIAO_common.h"
+#include <orbsvcs/CosNamingC.h>
+#include "Config_Handlers/DD_Handler.h"
+#include "Config_Handlers/DnC_Dump.h"
+
+#include "DomainEventsC.h"
+
+namespace CIDL_TargetManager_i
+{
+ //==================================================================
+ // Facet Executor Implementation Class: TargetManager_exec_i
+ //==================================================================
+
+ TargetManager_exec_i::
+ TargetManager_exec_i (TargetManagerImpl_exec_i* exec ,
+ CORBA::ORB_ptr orb,
+ TargetManagerImpl_Context *context
+ )
+ : _exec (exec),
+ orb_ (CORBA::ORB::_duplicate (orb)),
+ context_ (context)
+ {
+ // The DomainDataManager created here ...
+
+ // get its own obj ref , then call
+
+ ACE_DEBUG ((LM_DEBUG, "TM_Exec: getting ccm object\n"));
+ CORBA::Object_var object = context_->get_CCM_object ();
+ ACE_DEBUG ((LM_DEBUG, "TM_Exec: narrowing target_impl\n"));
+ CIAO::TargetManagerImpl_var target_impl =
+ CIAO::TargetManagerImpl::_narrow (object.in ());
+ ACE_DEBUG ((LM_DEBUG, "TM_Exec: provide target manager\n"));
+ ::Deployment::TargetManager_var target =
+ target_impl->provide_targetMgr ();
+ // dataManager_.reset (new CIAO::DomainDataManager (orb, target.in ()));
+ ACE_DEBUG ((LM_DEBUG, "TM_Exec: creating domain data manager\n"));
+ CIAO::DomainDataManager::create (orb, target.in());
+ ACE_DEBUG ((LM_DEBUG, "TM_Exec: DDD created!\n"));
+ }
+
+ TargetManager_exec_i::~TargetManager_exec_i (void)
+ {
+ }
+
+ // Operations from ::Deployment::TargetManager
+
+ ::Deployment::Domain *
+ TargetManager_exec_i::getAllResources ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CIAO::DomainDataManager::
+ get_data_manager ()->get_initial_domain ();
+ }
+
+ ::Deployment::Domain *
+ TargetManager_exec_i::getAvailableResources ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CIAO::DomainDataManager::
+ get_data_manager ()->get_current_domain ();
+ }
+
+ void
+ TargetManager_exec_i::commitResources (
+ const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::ResourceNotAvailable,
+ ::Deployment::PlanError))
+ {
+ return CIAO::DomainDataManager::
+ get_data_manager ()->commitResources (plan);
+ }
+
+ void
+ TargetManager_exec_i::releaseResources (
+ const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CIAO::DomainDataManager::
+ get_data_manager ()->releaseResources (plan);
+ }
+
+ void
+ TargetManager_exec_i::updateDomain (
+ const ::CORBA::StringSeq & elements ,
+ const ::Deployment::Domain & domainSubset ,
+ ::Deployment::DomainUpdateKind updateKind)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , ".. Update Domain called ...\n"));
+ }
+
+ CIAO::DomainDataManager::
+ get_data_manager ()->update_domain (
+ elements,
+ domainSubset,
+ updateKind
+ );
+
+ // here tell the planner about the changes
+
+ // first get the node names which have failed ...
+ // assuming nodes to only fail , for now
+
+ if (updateKind == ::Deployment::Delete ||
+ updateKind == ::Deployment::Add)
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::Creating the changed event\n"));
+ }
+
+ CIAO::Domain_Changed_Event_var changed_event =
+ new OBV_CIAO::Domain_Changed_Event ();
+
+ ::Deployment::Domain_var temp_domain =
+ new ::Deployment::Domain (domainSubset);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::After getting the current domain\n"));
+ }
+
+ changed_event->changes (temp_domain);
+ changed_event->change_kind (updateKind);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::Sending the event to the Planner_Manager\n"));
+ }
+
+ context_->push_changes (changed_event);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "TM::After Sending the event to the Planner_Manager\n"));
+ }
+ }
+
+ }
+
+ //==================================================================
+ // Facet Executor Implementation Class: TargetManagerExt_exec_i
+ // required for RACE
+ //==================================================================
+
+ TargetManagerExt_exec_i::TargetManagerExt_exec_i (void)
+ {
+ }
+
+ TargetManagerExt_exec_i::~TargetManagerExt_exec_i (void)
+ {
+ }
+
+ // Operations from ::CIAO::TargetManagerExt
+
+ ::CORBA::Long
+ TargetManagerExt_exec_i::get_pid (
+ const char * component_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ ACE_DEBUG ((LM_DEBUG, "Get PID :: Skeleton Impl"));
+ return CIAO::DomainDataManager::
+ get_data_manager ()->get_pid (component_uuid);
+ }
+
+ ::CIAO::Host_Infos *
+ TargetManagerExt_exec_i::get_host_cpu ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ ACE_DEBUG ((LM_DEBUG, "Get host cpu :: Skeleton Impl entering\n"));
+ return CIAO::DomainDataManager::
+ get_data_manager ()->get_cpu_info ();
+ }
+
+ ::CIAO::Component_Infos *
+ TargetManagerExt_exec_i::get_component_cpu ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ ACE_DEBUG ((LM_DEBUG, "Get component cpu :: Skeleton Impl"));
+
+ // todo
+
+ return 0;
+ }
+
+ ::CIAO::Host_NodeManager_seq *
+ TargetManagerExt_exec_i::get_all_node_managers
+ ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CIAO::DomainDataManager::
+ get_data_manager ()->get_node_managers ();
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: TargetManagerImpl_exec_i
+ //==================================================================
+
+ TargetManagerImpl_exec_i::TargetManagerImpl_exec_i (void)
+ : exec_object_ (0)
+ {
+ }
+
+ TargetManagerImpl_exec_i::~TargetManagerImpl_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ ::Deployment::CCM_TargetManager_ptr
+ TargetManagerImpl_exec_i::get_targetMgr ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "Calling TM constructor"));
+ }
+
+ if (CORBA::is_nil (this->exec_ext_object_.in ()))
+ {
+ this->exec_object_ = new TargetManager_exec_i(this,
+ context_->_ciao_the_Container()->the_ORB(),
+ context_
+ );
+ }
+
+ return ::Deployment::CCM_TargetManager::_duplicate (this->exec_object_.in ());
+ }
+
+ ::CIAO::CCM_TargetManagerExt_ptr TargetManagerImpl_exec_i
+ ::get_target_manager_ext (
+ ) ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (CORBA::is_nil (this->exec_ext_object_.in ()))
+ {
+ this->exec_ext_object_ = new TargetManagerExt_exec_i();
+ }
+
+ return ::CIAO::CCM_TargetManagerExt::_duplicate (this->exec_ext_object_.in ());
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ TargetManagerImpl_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ TargetManagerImpl_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ TargetManagerImpl_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ TargetManagerImpl_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+
+ void
+ TargetManagerImpl_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "Inside CCM_ACTIVATE\n"));
+ }
+ this->get_targetMgr ();
+ }
+
+ void
+ TargetManagerImpl_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ TargetManagerImpl_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ ACE_DEBUG ((LM_DEBUG , "TM::ccm_remove , calling LeaveDomain\n"));
+
+ //CIAO::DomainDataManager::get_data_manager ()->stop_monitors ();
+
+ ACE_DEBUG ((LM_DEBUG , "TM::ccm_remove , After calling LeaveDomain\n"));
+ return;
+ }
+
+
+ //==================================================================
+ // Home Executor Implementation Class: TargetManagerHome_exec_i
+ //==================================================================
+
+ TargetManagerHome_exec_i::TargetManagerHome_exec_i (void)
+ {
+ }
+
+ TargetManagerHome_exec_i::~TargetManagerHome_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ TargetManagerHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ TargetManagerImpl_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" TARGETMANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_TargetManagerHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ TargetManagerHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h
new file mode 100644
index 00000000000..fe419bdab8b
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec.h
@@ -0,0 +1,218 @@
+// $Id$
+//===============================================================
+/**
+ * @file TargetManager_exec.h
+ *
+ * @brief TargetManager Executor code
+ *
+ * @author Nilabja Roy nilabjar@dre.vanderbilt.edu
+ */
+//===============================================================
+
+#ifndef CIAO_TARGETMANAGER_EXEC_H
+#define CIAO_TARGETMANAGER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "TargetManager_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "TargetManager_exec_export.h"
+#include "tao/LocalObject.h"
+#include "DomainDataManager.h"
+
+namespace CIDL_TargetManager_i
+{
+ class TargetManager_exec_i;
+
+ class TARGETMANAGER_EXEC_Export TargetManagerImpl_exec_i
+ : public virtual TargetManagerImpl_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ TargetManagerImpl_exec_i (void);
+ virtual ~TargetManagerImpl_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ virtual ::Deployment::CCM_TargetManager_ptr
+ get_targetMgr ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CIAO::CCM_TargetManagerExt_ptr
+ get_target_manager_ext (
+ )
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ /// The service context pointer
+ TargetManagerImpl_Context *context_;
+
+ /// The exec Object
+ ::Deployment::CCM_TargetManager_var exec_object_;
+
+ ::CIAO::CCM_TargetManagerExt_var exec_ext_object_;
+ };
+
+ class TARGETMANAGER_EXEC_Export TargetManagerExt_exec_i
+ : public virtual ::CIAO::CCM_TargetManagerExt,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ TargetManagerExt_exec_i (void);
+ virtual ~TargetManagerExt_exec_i (void);
+
+ // Operations from ::CIAO::TargetManagerExt
+
+ virtual ::CORBA::Long
+ get_pid (
+ const char * component_uuid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CIAO::Host_Infos *
+ get_host_cpu ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CIAO::Component_Infos *
+ get_component_cpu ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CIAO::Host_NodeManager_seq *
+ get_all_node_managers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class TARGETMANAGER_EXEC_Export TargetManager_exec_i
+ : public virtual ::Deployment::CCM_TargetManager,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ TargetManager_exec_i (TargetManagerImpl_exec_i* exec,
+ CORBA::ORB_ptr orb,
+ TargetManagerImpl_Context *context
+ );
+ virtual ~TargetManager_exec_i (void);
+
+ // Operations from ::Deployment::TargetManager
+
+ virtual ::Deployment::Domain *
+ getAllResources ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Deployment::Domain *
+ getAvailableResources ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ commitResources (
+ const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Deployment::ResourceNotAvailable,
+ ::Deployment::PlanError));
+
+ virtual void
+ releaseResources (
+ const ::Deployment::DeploymentPlan & argname)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ updateDomain (
+ const ::CORBA::StringSeq & elements,
+ const ::Deployment::Domain & domainSubset,
+ ::Deployment::DomainUpdateKind updateKind)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ TargetManagerImpl_exec_i * _exec;
+
+ ///The pointer to the Domain Manager
+ auto_ptr<CIAO::DomainDataManager> dataManager_;
+
+ /// The CORBA ORB ...
+ CORBA::ORB_var orb_;
+
+ /// The context object ...
+ TargetManagerImpl_Context *context_;
+ };
+
+
+
+ class TARGETMANAGER_EXEC_Export TargetManagerHome_exec_i
+ : public virtual TargetManagerHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ TargetManagerHome_exec_i (void);
+ virtual ~TargetManagerHome_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" TARGETMANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_TargetManagerHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_TARGETMANAGER_EXEC_H */
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_exec_export.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec_export.h
new file mode 100644
index 00000000000..690e5b6136e
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TARGETMANAGER_EXEC
+// ------------------------------
+#ifndef TARGETMANAGER_EXEC_EXPORT_H
+#define TARGETMANAGER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TARGETMANAGER_EXEC_HAS_DLL)
+# define TARGETMANAGER_EXEC_HAS_DLL 1
+#endif /* ! TARGETMANAGER_EXEC_HAS_DLL */
+
+#if defined (TARGETMANAGER_EXEC_HAS_DLL) && (TARGETMANAGER_EXEC_HAS_DLL == 1)
+# if defined (TARGETMANAGER_EXEC_BUILD_DLL)
+# define TARGETMANAGER_EXEC_Export ACE_Proper_Export_Flag
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TARGETMANAGER_EXEC_BUILD_DLL */
+# define TARGETMANAGER_EXEC_Export ACE_Proper_Import_Flag
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TARGETMANAGER_EXEC_BUILD_DLL */
+#else /* TARGETMANAGER_EXEC_HAS_DLL == 1 */
+# define TARGETMANAGER_EXEC_Export
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARATION(T)
+# define TARGETMANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TARGETMANAGER_EXEC_HAS_DLL == 1 */
+
+// Set TARGETMANAGER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TARGETMANAGER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TARGETMANAGER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TARGETMANAGER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TARGETMANAGER_EXEC_NTRACE */
+
+#if (TARGETMANAGER_EXEC_NTRACE == 1)
+# define TARGETMANAGER_EXEC_TRACE(X)
+#else /* (TARGETMANAGER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define TARGETMANAGER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (TARGETMANAGER_EXEC_NTRACE == 1) */
+
+#endif /* TARGETMANAGER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_stub_export.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_stub_export.h
new file mode 100644
index 00000000000..d362f4f4ac8
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TARGETMANAGER_STUB
+// ------------------------------
+#ifndef TARGETMANAGER_STUB_EXPORT_H
+#define TARGETMANAGER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TARGETMANAGER_STUB_HAS_DLL)
+# define TARGETMANAGER_STUB_HAS_DLL 1
+#endif /* ! TARGETMANAGER_STUB_HAS_DLL */
+
+#if defined (TARGETMANAGER_STUB_HAS_DLL) && (TARGETMANAGER_STUB_HAS_DLL == 1)
+# if defined (TARGETMANAGER_STUB_BUILD_DLL)
+# define TARGETMANAGER_STUB_Export ACE_Proper_Export_Flag
+# define TARGETMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TARGETMANAGER_STUB_BUILD_DLL */
+# define TARGETMANAGER_STUB_Export ACE_Proper_Import_Flag
+# define TARGETMANAGER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TARGETMANAGER_STUB_BUILD_DLL */
+#else /* TARGETMANAGER_STUB_HAS_DLL == 1 */
+# define TARGETMANAGER_STUB_Export
+# define TARGETMANAGER_STUB_SINGLETON_DECLARATION(T)
+# define TARGETMANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TARGETMANAGER_STUB_HAS_DLL == 1 */
+
+// Set TARGETMANAGER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TARGETMANAGER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TARGETMANAGER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TARGETMANAGER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TARGETMANAGER_STUB_NTRACE */
+
+#if (TARGETMANAGER_STUB_NTRACE == 1)
+# define TARGETMANAGER_STUB_TRACE(X)
+#else /* (TARGETMANAGER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define TARGETMANAGER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (TARGETMANAGER_STUB_NTRACE == 1) */
+
+#endif /* TARGETMANAGER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/TargetManager/TargetManager_svnt_export.h b/modules/CIAO/DAnCE/TargetManager/TargetManager_svnt_export.h
new file mode 100644
index 00000000000..f57ce799949
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/TargetManager_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TARGETMANAGER_SVNT
+// ------------------------------
+#ifndef TARGETMANAGER_SVNT_EXPORT_H
+#define TARGETMANAGER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TARGETMANAGER_SVNT_HAS_DLL)
+# define TARGETMANAGER_SVNT_HAS_DLL 1
+#endif /* ! TARGETMANAGER_SVNT_HAS_DLL */
+
+#if defined (TARGETMANAGER_SVNT_HAS_DLL) && (TARGETMANAGER_SVNT_HAS_DLL == 1)
+# if defined (TARGETMANAGER_SVNT_BUILD_DLL)
+# define TARGETMANAGER_SVNT_Export ACE_Proper_Export_Flag
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TARGETMANAGER_SVNT_BUILD_DLL */
+# define TARGETMANAGER_SVNT_Export ACE_Proper_Import_Flag
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TARGETMANAGER_SVNT_BUILD_DLL */
+#else /* TARGETMANAGER_SVNT_HAS_DLL == 1 */
+# define TARGETMANAGER_SVNT_Export
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARATION(T)
+# define TARGETMANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TARGETMANAGER_SVNT_HAS_DLL == 1 */
+
+// Set TARGETMANAGER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TARGETMANAGER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TARGETMANAGER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TARGETMANAGER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TARGETMANAGER_SVNT_NTRACE */
+
+#if (TARGETMANAGER_SVNT_NTRACE == 1)
+# define TARGETMANAGER_SVNT_TRACE(X)
+#else /* (TARGETMANAGER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define TARGETMANAGER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (TARGETMANAGER_SVNT_NTRACE == 1) */
+
+#endif /* TARGETMANAGER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/TargetManager/descriptors/Domain.cdd b/modules/CIAO/DAnCE/TargetManager/descriptors/Domain.cdd
new file mode 100644
index 00000000000..fe21a4b48f5
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/descriptors/Domain.cdd
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Deployment:domain
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+<UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+<label>Hello Domain</label>
+
+
+<node>
+ <name>TargetManagerNode_1</name>
+ <label>Sender's Node</label>
+ <resource>
+ <name>Processor</name>
+ <resourceType>CPULoad</resourceType>
+ <property>
+ <name>LoadAverage</name>
+ <kind>Quantity</kind>
+ <dynamic>true</dynamic>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value><long>99</long></value>
+ </value>
+ </property>
+ </resource>
+</node>
+<node>
+ <name>TargetManagerNode_2</name>
+ <label>Receiver's Node</label>
+ <resource>
+ <name>Processor</name>
+ <resourceType>CPULoad</resourceType>
+ <property>
+ <name>LoadAverage</name>
+ <kind>Quantity</kind>
+ <dynamic>true</dynamic>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value><long>99</long></value>
+ </value>
+ </property>
+ </resource>
+</node>
+
+
+<interconnect>
+ <name>NoBridgeInterConnect</name>
+ <connect>
+ <name>Receiver</name>
+ <resource>
+ <name>Processor</name>
+ <resourceType>CPULoad</resourceType>
+ <property>
+ <name>LoadAverage</name>
+ <kind>Quantity</kind>
+ <dynamic>true</dynamic>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value><long>99</long></value>
+ </value>
+ </property>
+ </resource>
+ </connect>
+</interconnect>
+
+
+<bridge>
+ <name>NoBridge</name>
+ <connect>
+ <name>NoBridgeInterConnect</name>
+ <connect>
+ <name>Receiver</name>
+ <resource>
+ <name>Processor</name>
+ <resourceType>CPULoad</resourceType>
+ <property>
+ <name>LoadAverage</name>
+ <kind>Quantity</kind>
+ <dynamic>true</dynamic>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value><long>99</long></value>
+ </value>
+ </property>
+ </resource>
+ </connect>
+ </connect>
+</bridge>
+
+
+</Deployment:domain>
diff --git a/modules/CIAO/DAnCE/TargetManager/descriptors/NodeDetails.dat b/modules/CIAO/DAnCE/TargetManager/descriptors/NodeDetails.dat
new file mode 100644
index 00000000000..0ca8bfefd8b
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/descriptors/NodeDetails.dat
@@ -0,0 +1,2 @@
+TargetManagerNode_1 corbaloc:iiop:localhost:40000/NodeManager
+TargetManagerNode_2 corbaloc:iiop:localhost:30000/NodeManager
diff --git a/modules/CIAO/DAnCE/TargetManager/descriptors/NodeManagerMap.dat b/modules/CIAO/DAnCE/TargetManager/descriptors/NodeManagerMap.dat
new file mode 100644
index 00000000000..0ca8bfefd8b
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/descriptors/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+TargetManagerNode_1 corbaloc:iiop:localhost:40000/NodeManager
+TargetManagerNode_2 corbaloc:iiop:localhost:30000/NodeManager
diff --git a/modules/CIAO/DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..fae71c39fa1
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,92 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false></provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="TargetManager-mdd">
+ <name>TargetManager-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>TargetManager_exec</artifact>
+ <artifact>TargetManager_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="TargetManager-idd">
+ <name>TargetManager-idd</name>
+ <node>TargetManagerNode_1</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>TargetManager-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TargetManager.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+
+ <artifact id="TargetManager_exec">
+ <name>TargetManager_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>TargetManager_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_TargetManagerHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="TargetManager_svnt">
+ <name>TargetManager_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>TargetManager_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_TargetManagerHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/DAnCE/TargetManager/descriptors/run_test_TargetManager.pl b/modules/CIAO/DAnCE/TargetManager/descriptors/run_test_TargetManager.pl
new file mode 100644
index 00000000000..a98401ef296
--- /dev/null
+++ b/modules/CIAO/DAnCE/TargetManager/descriptors/run_test_TargetManager.pl
@@ -0,0 +1,160 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DAnCE = "$ENV{'CIAO_ROOT'}/DAnCE";
+
+$daemons_running = 0;
+$em_running = 0;
+$daemons = 2;
+@ports = ( 40000, 30000 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+$status = 0;
+$dat_file = "NodeDetails.dat";
+$cdp_file = "flattened_DeploymentPlan.cdp";
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("TargetManager.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i > 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ $daemons_running = 1;
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattened_deploymentplan.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+if (PerlACE::waitforfile_timed (
+ "TargetManager.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Waiting for 15 secs then invoking client ===\n";
+sleep (15);
+
+print "Making 5 such calls \n";
+
+$call_num = 5;
+
+for ($i = 0; $i < $call_num; ++$i)
+{
+ print "Invoking the client\n";
+ $tmclient = new PerlACE::Process ("../CmpClient", "file://TargetManager.ior");
+ $result = $tmclient->SpawnWaitKill (3000);
+
+ if ($result != 0) {
+ print STDERR "ERROR: The client returned $result\n";
+ $status = 1;
+ }
+ sleep (15);
+}
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
new file mode 100644
index 00000000000..2cc04a9a18a
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest.mpc
@@ -0,0 +1,163 @@
+// $Id$
+
+project(NodeAppTest_RoundTrip_stub): ciao_client_dnc {
+ sharedname = NodeAppTest_RoundTrip_stub
+ after += CIAO_DnC_Server
+
+ idlflags += -Wb,stub_export_macro=NODEAPPTEST_ROUNDTRIP_STUB_Export \
+ -Wb,stub_export_include=RoundTrip_stub_export.h \
+ -Wb,skel_export_macro=NODEAPPTEST_ROUNDTRIP_SVNT_Export \
+ -Wb,skel_export_include=RoundTrip_svnt_export.h
+ dynamicflags = NODEAPPTEST_ROUNDTRIP_STUB_BUILD_DLL
+
+ IDL_Files {
+ NodeAppTest_RoundTrip.idl
+ }
+
+ Source_Files {
+ NodeAppTest_RoundTripC.cpp
+ }
+
+ Header_Files {
+ NodeAppTest_RoundTripC.h
+ }
+
+ Inline_Files {
+ NodeAppTest_RoundTripC.inl
+ }
+}
+
+project(NodeAppTest_RoundTrip_svnt) : ciao_servant_dnc {
+ after += NodeAppTest_RoundTrip_stub
+ sharedname = NodeAppTest_RoundTrip_svnt
+
+ libs += NodeAppTest_RoundTrip_stub
+ idlflags += -Wb,export_macro=NODEAPPTEST_ROUNDTRIP_SVNT_Export \
+ -Wb,export_include=RoundTrip_svnt_export.h
+ dynamicflags = NODEAPPTEST_ROUNDTRIP_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ NodeAppTest_RoundTrip.cidl
+ }
+
+ IDL_Files {
+ NodeAppTest_RoundTripE.idl
+ }
+
+ Source_Files {
+ NodeAppTest_RoundTripEC.cpp
+ NodeAppTest_RoundTripS.cpp
+ NodeAppTest_RoundTrip_svnt.cpp
+ }
+
+ Header_Files {
+ NodeAppTest_RoundTripEC.h
+ NodeAppTest_RoundTripS.h
+ NodeAppTest_RoundTrip_svnt.h
+ }
+
+ Inline_Files {
+ NodeAppTest_RoundTripEC.inl
+ NodeAppTest_RoundTripS.inl
+ }
+}
+
+project(NodeAppTest_RoundTrip_exec) : ciao_component_dnc, ciao_events_dnc, ciao_server_dnc {
+ after += NodeAppTest_RoundTrip_stub NodeAppTest_RoundTrip_svnt
+
+ sharedname = NodeAppTest_RoundTrip_exec
+ libs += NodeAppTest_RoundTrip_stub NodeAppTest_RoundTrip_svnt
+ idlflags += -Wb,export_macro=NODEAPPTEST_ROUNDTRIP_EXEC_Export \
+ -Wb,export_include=RoundTrip_exec_export.h
+ dynamicflags = NODEAPPTEST_ROUNDTRIP_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ RoundTrip_exec.cpp
+ }
+
+ Header_Files {
+ RoundTrip_exec.h
+ }
+
+ Inline_Files {
+ }
+}
+
+project (NodeAppTest_client_simple) : ciao_deployment_stub {
+ after += NodeAppTest_RoundTrip_stub
+ libs += NodeAppTest_RoundTrip_stub
+ exename += client_simple
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NodeApp_test_client_simple.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
+
+project (NodeAppTest_client) : ciao_deployment_stub {
+ after += NodeAppTest_RoundTrip_stub
+ libs += NodeAppTest_RoundTrip_stub
+ exename += client
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NodeApp_test_client.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
+
+project (NodeAppTest_client_ex) : ciao_deployment_stub {
+ after += NodeAppTest_RoundTrip_stub
+ libs += NodeAppTest_RoundTrip_stub
+ exename += client_ex
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NodeApp_test_client_ex.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
+
+project (NodeAppTest_client_dynamic) : ciao_deployment_stub {
+ after += NodeAppTest_RoundTrip_stub
+ libs += NodeAppTest_RoundTrip_stub
+ exename += client_dynamic
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NodeApp_test_client_dynamic.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl
new file mode 100644
index 00000000000..3063a673d5a
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.cidl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef NODEAPPTEST_ROUNDTRIP_CIDL
+#define NODEAPPTEST_ROUNDTRIP_CIDL
+
+#include "NodeAppTest_RoundTrip.idl"
+
+composition session RoundTrip_Impl
+{
+
+ home executor RoundTripHome_Exec
+ {
+ implements NodeAppTest::NodeAppTest_RoundTripHome;
+ manages RoundTrip_Exec;
+ };
+
+};
+
+#endif /* NODEAPPTEST_ROUNDTRIP_CIDL */
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl
new file mode 100644
index 00000000000..ca7397916b8
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeAppTest_RoundTrip.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file NodeAppTest_RoundTrip.idl
+ *
+ * Definition of the Component that provides the LatencyTest interface
+ *
+ */
+//=============================================================================
+#ifndef NODEAPP_ROUNDTRIP_IDL
+#define NODEAPP_ROUNDTRIP_IDL
+
+#include <Components.idl>
+
+module NodeAppTest
+{
+ interface LatencyTest
+ {
+ long cube_long (in long param);
+ };
+
+ component NodeAppTest_RoundTrip supports LatencyTest
+ {
+ provides LatencyTest facet_1;
+ provides LatencyTest facet_2;
+ };
+
+ home NodeAppTest_RoundTripHome manages NodeAppTest_RoundTrip
+ {
+ };
+
+};
+#endif /* NODEAPP_ROUNDTRIP_IDL */
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp
new file mode 100644
index 00000000000..d1ff9b8f67e
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client.cpp
@@ -0,0 +1,254 @@
+// $Id$
+
+// This test tries to install a set of components in 2 different containers, which
+// is hosted in the same NodeApplication.
+
+#include "Deployment_NodeApplicationC.h"
+#include "Client_init.h"
+#include "NodeAppTest_RoundTripC.h"
+#include "ace/Get_Opt.h"
+#include <sstream>
+#include <vector>
+#include <stdlib.h>
+#include "assert.h"
+
+const char *ior = "file://test.ior";
+int comp_number = 4;
+int counter = 0;
+
+int parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:n:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case 'n':
+ comp_number = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s \n"
+ "-k <NodeApplication ior> \n"
+ "-n <The number of component instances> \n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ std::vector<NodeAppTest::NodeAppTest_RoundTrip_var> comp_list;
+ //std::vector<NodeAppTest::NodeAppTest_RoundTrip_var>::const_iterator iter;
+
+ try
+ {
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::ULong comp_num (comp_number);
+ ACE_DEBUG ((LM_DEBUG, "CompNum: %d\n",comp_num));
+
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ CIAO::Client_init (orb.in ());
+
+ CORBA::Object_var tmp =
+ orb->string_to_object(ior);
+
+ Deployment::NodeApplication_var node_app =
+ Deployment::NodeApplication::_narrow (tmp.in ());
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil nodeapplication reference <%s>\n", ior),
+ 1);
+ }
+
+ // This is what we will send out of the ContainerImplmentationInfo for the
+ // first container
+
+ Deployment::ContainerImplementationInfo container_info_1;
+ CORBA::ULong length_1 = comp_num/2;
+ container_info_1.impl_infos.length (CORBA::ULong (length_1));
+
+ CORBA::ULong i;
+ for (i = 0; i < length_1; ++i)
+ {
+ Deployment::ComponentImplementationInfo info;
+
+ std::stringstream tmp;
+ tmp << "NodeAppTest_RoundTrip:" << counter;
+ counter = counter + 1;
+
+ // Add the names and entry points of each of the DLLs
+ info.component_instance_name =
+ CORBA::string_dup (tmp.str ().c_str ());
+ info.executor_dll = CORBA::string_dup ("NodeAppTest_RoundTrip_exec");
+ info.executor_entrypt =
+ CORBA::string_dup ("createRoundTripHome_Impl");
+ info.servant_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_svnt");
+ info.servant_entrypt =
+ CORBA::string_dup (
+ "create_NodeAppTest_NodeAppTest_RoundTripHome_Servant"
+ );
+
+ //Now add the info into the infos
+ container_info_1.impl_infos[i] = info;
+ }
+
+ // For debug purpose.
+ for (i = 0; i < comp_num/2; ++i)
+ {
+ std::stringstream tmp;
+ tmp << "NodeAppTest_RoundTrip:" << i;
+
+ // Add the names and entry points of each of the DLLs
+ ACE_DEBUG ((LM_DEBUG,
+ "The info I will send out: \n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n",
+ container_info_1.impl_infos[i].component_instance_name.in (),
+ container_info_1.impl_infos[i].executor_dll.in (),
+ container_info_1.impl_infos[i].executor_entrypt.in (),
+ container_info_1.impl_infos[i].servant_dll.in (),
+ container_info_1.impl_infos[i].servant_entrypt.in () ));
+ }
+
+ // This is what we will send out of the ContainerImplmentationInfo for the
+ // first container
+
+ Deployment::ContainerImplementationInfo container_info_2;
+ CORBA::ULong length_2 = comp_num - comp_num/2;
+ container_info_2.impl_infos.length (CORBA::ULong (length_2));
+
+ for (i = 0; i < length_2; ++i)
+ {
+ Deployment::ComponentImplementationInfo info;
+
+ std::stringstream tmp;
+ tmp << "NodeAppTest_RoundTrip:" << counter;
+ counter = counter + 1;
+
+ // Add the names and entry points of each of the DLLs
+ info.component_instance_name =
+ CORBA::string_dup (tmp.str ().c_str ());
+ info.executor_dll = CORBA::string_dup ("NodeAppTest_RoundTrip_exec");
+ info.executor_entrypt =
+ CORBA::string_dup ("createRoundTripHome_Impl");
+ info.servant_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_svnt");
+ info.servant_entrypt =
+ CORBA::string_dup (
+ "create_NodeAppTest_NodeAppTest_RoundTripHome_Servant"
+ );
+
+ //Now add the info into the infos
+ container_info_2.impl_infos[i] = info;
+ }
+
+ // For debug purpose.
+ for (i = 0; i < length_2; ++i)
+ {
+ std::stringstream tmp;
+ tmp << "NodeAppTest_RoundTrip:" << i;
+
+ // Add the names and entry points of each of the DLLs
+ ACE_DEBUG ((LM_DEBUG,
+ "The info I will send out: \n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n",
+ container_info_2.impl_infos[i].component_instance_name.in (),
+ container_info_2.impl_infos[i].executor_dll.in (),
+ container_info_2.impl_infos[i].executor_entrypt.in (),
+ container_info_2.impl_infos[i].servant_dll.in (),
+ container_info_2.impl_infos[i].servant_entrypt.in () ));
+ }
+
+ // container_info.container_config is not set for now
+
+ ACE_DEBUG ((LM_DEBUG, "Try installing Homes and Components\n"));
+
+ // Create a NodeImplementationInfo sequence
+ Deployment::NodeImplementationInfo node_info;
+ node_info.impl_infos.length (2);
+ node_info.impl_infos[0] = container_info_1;
+ node_info.impl_infos[1] = container_info_2;
+
+ // Install test component and its home on NodeApplication
+ Deployment::ComponentInfos_var comp_info =
+ node_app->install (node_info);
+
+ // store the component refs
+ for (i = 0; i < comp_num; ++i)
+ {
+ comp_list.push_back (NodeAppTest::NodeAppTest_RoundTrip::_narrow
+ (comp_info[i].component_ref.in ()));
+
+ if (CORBA::is_nil (comp_list[i].in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil RoundTripHome reference: %s \n",
+ comp_info[i].component_instance_name.in ()),
+ 1);
+ }
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Installation finished successfully.\n"));
+
+ // Before we can start we have to start.
+ node_app->start ();
+
+ // Invoke Operation on the components
+ ACE_DEBUG ((LM_DEBUG, "Try cube_long operation on the Interface \n"));
+
+ for (i = 0; i < comp_num; ++i)
+ {
+
+ CORBA::Long input = i;
+
+ CORBA::Long output =
+ (comp_list[i])->cube_long (input);
+
+ if (input*input*input == output)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Return values matched!! on Component: %d \n",
+ i));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Return values did not match: on Component: %d \n",
+ i));
+ ACE_OS::exit (1);
+ }
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Try removing everything\n"));
+ node_app->remove ();
+
+ ACE_DEBUG ((LM_DEBUG, "Homes and components removed successfully\n"));
+
+ orb->destroy ();
+
+ ACE_DEBUG ((LM_DEBUG, "Test success!!\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp
new file mode 100644
index 00000000000..0969c9ec055
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_dynamic.cpp
@@ -0,0 +1,155 @@
+// $Id$
+
+#include "Deployment_NodeApplicationC.h"
+#include "Client_init.h"
+#include "NodeAppTest_RoundTripC.h"
+#include "ace/Get_Opt.h"
+#include "assert.h"
+
+const char *ior = "file://test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s \n"
+ "-k <ComponentServer ior> \n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CIAO::Client_init (orb.in ());
+
+ CORBA::Object_var tmp =
+ orb->string_to_object(ior);
+
+ Deployment::NodeApplication_var node_app =
+ Deployment::NodeApplication::_narrow(tmp.in ());
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil nodeapplication reference <%s>\n",
+ ior),
+ 1);
+ }
+
+
+ ACE_DEBUG ((LM_DEBUG, "Try installing Home and Component\n"));
+
+ Deployment::ComponentImplementationInfo info;
+
+ // Add the names and entry points of each of the DLLs
+ info.component_instance_name =
+ CORBA::string_dup ("NodeAppTest_RoundTrip");
+ info.executor_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_exec");
+ info.executor_entrypt =
+ CORBA::string_dup ("createRoundTripHome_Impl");
+ info.servant_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_svnt");
+ info.servant_entrypt =
+ CORBA::string_dup (
+ "create_NodeAppTest_NodeAppTest_RoundTripHome_Servant"
+ );
+
+ // Create a ContainerImplementationInfo sequence
+ Deployment::ContainerImplementationInfo container_info;
+ container_info.impl_infos.length (1);
+ container_info.impl_infos[0] = info;
+
+ // Create a NodeImplementationInfo sequence
+ Deployment::NodeImplementationInfo node_info;
+ node_info.impl_infos.length (1);
+ node_info.impl_infos[0] = container_info;
+
+ // Install test component and its home on NodeApplication
+ Deployment::ComponentInfos_var comp_info =
+ node_app->install (node_info);
+
+ assert (comp_info->length () == 1); //return 1 component objeref
+
+ const CORBA::ULong i = 0;
+ Components::CCMObject_var objref = (comp_info[i]).component_ref;
+
+ NodeAppTest::NodeAppTest_RoundTrip_var roundtrip_var =
+ NodeAppTest::NodeAppTest_RoundTrip::_narrow (objref.in ());
+
+ if (CORBA::is_nil (roundtrip_var.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil RoundTrip reference\n"),
+ 1);
+ }
+
+ // Invoke Operation on the Interface
+ ACE_DEBUG ((LM_DEBUG, "Try cube_long operation on the Interface \n"));
+ CORBA::Long input = 1L;
+ CORBA::Long output =
+ roundtrip_var->cube_long (input);
+
+ if (input == output)
+ ACE_DEBUG ((LM_DEBUG, "Retrun values matched!!\n"));
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Return values did not match: failure\n"));
+ ACE_OS::exit (1);
+ }
+
+ // Install another set of components
+ ACE_DEBUG ((LM_DEBUG, "Try installing another component dynamically\n"));
+
+ // Modifying the component instance name since it must be unique
+ (node_info.impl_infos[0]).impl_infos[0].component_instance_name =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_2");
+ Deployment::ComponentInfos_var comp_info_new =
+ node_app->install (node_info);
+
+ assert (comp_info_new->length () == 1); //return 1 component objeref
+
+ ACE_DEBUG ((LM_DEBUG, "Try removing the second component and its home\n"));
+ node_app->remove_component ("NodeAppTest_RoundTrip");
+ ACE_DEBUG ((LM_DEBUG, "Component and Home removed successfully\n"));
+
+ ACE_DEBUG ((LM_DEBUG, "=====Try removing all remaining components and homes\n"));
+ node_app->remove ();
+ ACE_DEBUG ((LM_DEBUG, "=====Components and Homes removed successfully\n"));
+
+ orb->destroy ();
+ ACE_DEBUG ((LM_DEBUG, "=====Test success!!\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp
new file mode 100644
index 00000000000..484e854113d
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_ex.cpp
@@ -0,0 +1,169 @@
+// $Id$
+
+#include "ciao/Deployment_NodeApplicationC.h"
+#include "ciao/Client_init.h"
+#include "NodeAppTest_RoundTripC.h"
+#include "ace/Get_Opt.h"
+#include "assert.h"
+
+const char *ior = "file://test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s \n"
+ "-k <NodeApplication ior> \n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CIAO::Client_init (orb.in ());
+
+ CORBA::Object_var tmp =
+ orb->string_to_object(ior);
+
+ Deployment::NodeApplication_var node_app =
+ Deployment::NodeApplication::_narrow(tmp.in ());
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil NodeApplication reference <%s>\n",
+ ior),
+ 1);
+ }
+
+
+ ACE_DEBUG ((LM_DEBUG, "Try installing Home and Component\n"));
+
+ Deployment::ComponentImplementationInfo info;
+
+ // Add the names and entry points of each of the DLLs
+ info.component_instance_name =
+ CORBA::string_dup ("NodeAppTest_RoundTrip");
+ info.executor_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_exec");
+ info.executor_entrypt =
+ CORBA::string_dup ("createRoundTripHome_Impl");
+ info.servant_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_svnt");
+ info.servant_entrypt =
+ CORBA::string_dup (
+ "create_NodeAppTest_NodeAppTest_RoundTripHome_Servant"
+ );
+
+ // Create a ContainerImplementationInfo sequence
+ Deployment::ContainerImplementationInfo container_info;
+ container_info.impl_infos.length (1);
+ container_info.impl_infos[0] = info;
+
+ // Create a NodeImplementationInfo sequence
+ Deployment::NodeImplementationInfo node_info;
+ node_info.impl_infos.length (1);
+ node_info.impl_infos[0] = container_info;
+
+ // Install test component and its home on NodeApplication
+ Deployment::ComponentInfos_var comp_info =
+ node_app->install (node_info);
+
+ assert (comp_info->length () == 1); //return 1 component objeref
+
+ CORBA::ULong i = 0;
+ Components::CCMObject_var objref = (comp_info[i]).component_ref;
+
+ NodeAppTest::NodeAppTest_RoundTrip_var roundtrip_var =
+ NodeAppTest::NodeAppTest_RoundTrip::_narrow (objref.in ());
+
+ if (CORBA::is_nil (roundtrip_var.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil RoundTrip reference\n"),
+ 1);
+ }
+
+ // initialize the component
+ roundtrip_var->ciao_postactivate ();
+
+ //get the provided facets info.
+ Components::FacetDescriptions_var facets_info =
+ roundtrip_var->get_all_facets () ;
+
+ if ( facets_info->length () != 2 )
+ {
+ ACE_DEBUG((LM_DEBUG, "Didn't get 2 facet back! but only %d\n",
+ facets_info->length ()));
+ return 1;
+ }
+
+ // Invoke Operation on the Interface
+ ACE_DEBUG ((LM_DEBUG, "Try cube_long operation on the Interface \n"));
+
+ for (i = 0; i < 2; ++i )
+ {
+ NodeAppTest::LatencyTest_var latency_var
+ = NodeAppTest::LatencyTest::_narrow ( (facets_info[i]->facet_ref ()));
+ ACE_DEBUG((LM_DEBUG, "Calling on facet %s\n", (facets_info[i]->name ())));
+
+
+ if ( CORBA::is_nil (latency_var.in ()) )
+ {
+ ACE_DEBUG((LM_DEBUG, "get nil latency ref for facet%d\n", i));
+ return 1;
+ }
+
+ CORBA::Long input = 1L;
+ CORBA::Long output =
+ latency_var->cube_long (input);
+
+ if (input == output)
+ ACE_DEBUG ((LM_DEBUG, "Retrun values matched!!\n"));
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Return values did not match: failure\n"));
+ ACE_OS::exit (1);
+ }
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Try removing test component and its home\n"));
+ node_app->remove ();
+ ACE_DEBUG ((LM_DEBUG, "Component and Home removed successfully\n"));
+
+ orb->destroy ();
+ ACE_DEBUG ((LM_DEBUG, "Test success!!\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp
new file mode 100644
index 00000000000..d239a8db5c5
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/NodeApp_test_client_simple.cpp
@@ -0,0 +1,140 @@
+// $Id$
+
+#include "Deployment_NodeApplicationC.h"
+#include "Client_init.h"
+#include "NodeAppTest_RoundTripC.h"
+#include "ace/Get_Opt.h"
+#include "assert.h"
+
+const char *ior = "file://test.ior";
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s \n"
+ "-k <ComponentServer ior> \n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CIAO::Client_init (orb.in ());
+
+ CORBA::Object_var tmp =
+ orb->string_to_object(ior);
+
+ Deployment::NodeApplication_var node_app =
+ Deployment::NodeApplication::_narrow(tmp.in ());
+
+ if (CORBA::is_nil (node_app.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil nodeapplication reference <%s>\n",
+ ior),
+ 1);
+ }
+
+
+ ACE_DEBUG ((LM_DEBUG, "Try installing Home and Component\n"));
+
+ Deployment::ComponentImplementationInfo info;
+
+ // Add the names and entry points of each of the DLLs
+ info.component_instance_name =
+ CORBA::string_dup ("NodeAppTest_RoundTrip");
+ info.executor_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_exec");
+ info.executor_entrypt =
+ CORBA::string_dup ("createRoundTripHome_Impl");
+ info.servant_dll =
+ CORBA::string_dup ("NodeAppTest_RoundTrip_svnt");
+ info.servant_entrypt =
+ CORBA::string_dup (
+ "create_NodeAppTest_NodeAppTest_RoundTripHome_Servant"
+ );
+
+ // Create a ContainerImplementationInfo sequence
+ Deployment::ContainerImplementationInfo container_info;
+ container_info.impl_infos.length (1);
+ container_info.impl_infos[0] = info;
+
+ // Create a NodeImplementationInfo sequence
+ Deployment::NodeImplementationInfo node_info;
+ node_info.impl_infos.length (1);
+ node_info.impl_infos[0] = container_info;
+
+ // Install test component and its home on NodeApplication
+ Deployment::ComponentInfos_var comp_info =
+ node_app->install (node_info);
+
+ assert (comp_info->length () == 1); //return 1 component objeref
+
+ const CORBA::ULong i = 0;
+ Components::CCMObject_var objref = (comp_info[i]).component_ref;
+
+ NodeAppTest::NodeAppTest_RoundTrip_var roundtrip_var =
+ NodeAppTest::NodeAppTest_RoundTrip::_narrow (objref.in ());
+
+ if (CORBA::is_nil (roundtrip_var.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil RoundTrip reference\n"),
+ 1);
+ }
+
+ // Invoke Operation on the Interface
+ ACE_DEBUG ((LM_DEBUG, "Try cube_long operation on the Interface \n"));
+ CORBA::Long input = 1L;
+ CORBA::Long output =
+ roundtrip_var->cube_long (input);
+
+ if (input == output)
+ ACE_DEBUG ((LM_DEBUG, "Retrun values matched!!\n"));
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Return values did not match: failure\n"));
+ ACE_OS::exit (1);
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Try removing test component and its home\n"));
+ node_app->remove ();
+ ACE_DEBUG ((LM_DEBUG, "Component and Home removed successfully\n"));
+
+ orb->destroy ();
+ ACE_DEBUG ((LM_DEBUG, "Test success!!\n"));
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/README b/modules/CIAO/DAnCE/tests/NodeApplicationTest/README
new file mode 100644
index 00000000000..ea8fc438089
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/README
@@ -0,0 +1,12 @@
+$Id$
+This directory contains the basic testing program for NodeApplication.
+
+client_simple: Test the basic home installation and component creation.
+
+client: Test the installation of several homes and components.
+ In this test I use the more convenient method provided
+ by the NodeApplication to insall multiple components. Aslo
+ a remove method is called to easily remove all homes and components.
+
+client_ex: Test the get_all_facet methods provided in the servant of the
+ component.
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp
new file mode 100644
index 00000000000..8cbd9270bd0
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.cpp
@@ -0,0 +1,149 @@
+// $Id$
+
+#include "RoundTrip_exec.h"
+#include "CIAO_common.h"
+
+//-- ACE Scheduling Params
+#include "ace/OS_NS_errno.h"
+
+//=================================================================
+
+namespace CIDL_RoundTrip_Impl
+{
+ RoundTrip_exec_i::RoundTrip_exec_i ()
+ {
+
+ }
+
+ RoundTrip_exec_i::~RoundTrip_exec_i ()
+ {
+ }
+
+ NodeAppTest::CCM_LatencyTest_ptr
+ RoundTrip_exec_i::get_facet_1 ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new LatencyTest_Impl;
+ }
+
+ NodeAppTest::CCM_LatencyTest_ptr
+ RoundTrip_exec_i::get_facet_2 ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new LatencyTest_Impl;
+ }
+
+ CORBA::Long
+ RoundTrip_exec_i::cube_long (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return data * data * data;
+ }
+
+ // Operations from Components::SessionComponent
+ void
+ RoundTrip_exec_i::set_session_context (Components::SessionContext_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RoundTrip_exec_i::set_session_context\n"));
+ }
+ }
+
+ void
+ RoundTrip_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RoundTrip_exec_i::ccm_activate\n"));
+ }
+
+ }
+
+ void
+ RoundTrip_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RoundTrip_exec_i::ccm_passivate\n"));
+ }
+ }
+
+ void
+ RoundTrip_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RoundTrip_exec_i::ccm_remove\n"));
+ }
+ }
+
+ void
+ RoundTrip_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RoundTrip_exec_i::ciao_preactivate\n"));
+ }
+
+ }
+
+ void
+ RoundTrip_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RoundTrip_exec_i::ciao_postactivate\n"));
+ }
+ }
+
+ RoundTripHome_exec_i::RoundTripHome_exec_i ()
+ {
+ }
+
+ RoundTripHome_exec_i::~RoundTripHome_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ RoundTripHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ return new RoundTrip_exec_i;
+ }
+
+ // Implementation for the probided inferface.
+ CORBA::Long
+ LatencyTest_Impl::cube_long (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return data*data*data;
+ }
+
+ extern "C" NODEAPPTEST_ROUNDTRIP_EXEC_Export
+ ::Components::HomeExecutorBase_ptr
+ createRoundTripHome_Impl (void)
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Creating Round_trip impl\n"));
+ }
+
+ return new RoundTripHome_exec_i ();
+ }
+}
+
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h
new file mode 100644
index 00000000000..2df0ce868c8
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec.h
@@ -0,0 +1,149 @@
+// -*- C++ -*-
+
+//============================================================
+/**
+ * @file RoundTrip_exec.h
+ *
+ * $Id$
+ *
+ * Header file for the Executor implementation.
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//============================================================
+
+#ifndef NODEAPP_ROUNDTRIP_EXEC_H
+#define NODEAPP_ROUNDTRIP_EXEC_H
+
+#include "NodeAppTest_RoundTripEC.h"
+#include "RoundTrip_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_RoundTrip_Impl
+{
+
+ /**
+ * @class RoundTrip_exec_i
+ *
+ * RoundTrip executor implementation class.
+ */
+ class NODEAPPTEST_ROUNDTRIP_EXEC_Export RoundTrip_exec_i
+ : public virtual NodeAppTest::LatencyTest,
+ public virtual RoundTrip_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ RoundTrip_exec_i ();
+
+ /// Operation to test the data
+ virtual CORBA::Long cube_long (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /*
+ virtual ::NodeAppTest::CCM_LatencyTest*
+ get_latency ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ */
+
+ NodeAppTest::CCM_LatencyTest_ptr
+ get_facet_1()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ NodeAppTest::CCM_LatencyTest_ptr
+ get_facet_2()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by timeout_Handler
+ void pulse (void);
+
+ // CIAO defined methods
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+
+ /// Destructor.
+ /**
+ * Protected destructor to enforce proper memory management
+ * through the reference counting mechanism.
+ */
+ ~RoundTrip_exec_i ();
+
+ };
+
+ //
+ //
+ //
+ class LatencyTest_Impl : public virtual NodeAppTest::CCM_LatencyTest,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ LatencyTest_Impl ()
+ {
+ }
+
+ virtual CORBA::Long cube_long (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ /**
+ * @class RoundTripHome_exec_i
+ *
+ * RoundTrip home executor implementation class.
+ */
+ class NODEAPPTEST_ROUNDTRIP_EXEC_Export RoundTripHome_exec_i :
+ public virtual RoundTripHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ RoundTripHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+
+ /// Destructor.
+ /**
+ * Protected destructor to enforce proper memory management
+ * through the reference counting mechanism.
+ */
+ ~RoundTripHome_exec_i ();
+
+ };
+
+ extern "C" NODEAPPTEST_ROUNDTRIP_EXEC_Export
+ ::Components::HomeExecutorBase_ptr createRoundTripHome_Impl (void);
+}
+
+#endif /* NODEAPP_ROUNDTRIPGEN_EXEC_H */
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h
new file mode 100644
index 00000000000..ba26507df22
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NODEAPPTEST_ROUNDTRIP_EXEC
+// ------------------------------
+#ifndef NODEAPPTEST_ROUNDTRIP_EXEC_EXPORT_H
+#define NODEAPPTEST_ROUNDTRIP_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL 1
+#endif /* ! NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL */
+
+#if defined (NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL) && (NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL == 1)
+# if defined (NODEAPPTEST_ROUNDTRIP_EXEC_BUILD_DLL)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_Export ACE_Proper_Export_Flag
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEAPPTEST_ROUNDTRIP_EXEC_BUILD_DLL */
+# define NODEAPPTEST_ROUNDTRIP_EXEC_Export ACE_Proper_Import_Flag
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEAPPTEST_ROUNDTRIP_EXEC_BUILD_DLL */
+#else /* NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL == 1 */
+# define NODEAPPTEST_ROUNDTRIP_EXEC_Export
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEAPPTEST_ROUNDTRIP_EXEC_HAS_DLL == 1 */
+
+// Set NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE */
+
+#if (NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_EXEC_TRACE(X)
+#else /* (NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEAPPTEST_ROUNDTRIP_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEAPPTEST_ROUNDTRIP_EXEC_NTRACE == 1) */
+
+#endif /* NODEAPPTEST_ROUNDTRIP_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h
new file mode 100644
index 00000000000..d82c188c509
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NODEAPPTEST_ROUNDTRIP_STUB
+// ------------------------------
+#ifndef NODEAPPTEST_ROUNDTRIP_STUB_EXPORT_H
+#define NODEAPPTEST_ROUNDTRIP_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL)
+# define NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL 1
+#endif /* ! NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL */
+
+#if defined (NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL) && (NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL == 1)
+# if defined (NODEAPPTEST_ROUNDTRIP_STUB_BUILD_DLL)
+# define NODEAPPTEST_ROUNDTRIP_STUB_Export ACE_Proper_Export_Flag
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEAPPTEST_ROUNDTRIP_STUB_BUILD_DLL */
+# define NODEAPPTEST_ROUNDTRIP_STUB_Export ACE_Proper_Import_Flag
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEAPPTEST_ROUNDTRIP_STUB_BUILD_DLL */
+#else /* NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL == 1 */
+# define NODEAPPTEST_ROUNDTRIP_STUB_Export
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARATION(T)
+# define NODEAPPTEST_ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEAPPTEST_ROUNDTRIP_STUB_HAS_DLL == 1 */
+
+// Set NODEAPPTEST_ROUNDTRIP_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEAPPTEST_ROUNDTRIP_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEAPPTEST_ROUNDTRIP_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEAPPTEST_ROUNDTRIP_STUB_NTRACE */
+
+#if (NODEAPPTEST_ROUNDTRIP_STUB_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_STUB_TRACE(X)
+#else /* (NODEAPPTEST_ROUNDTRIP_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEAPPTEST_ROUNDTRIP_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEAPPTEST_ROUNDTRIP_STUB_NTRACE == 1) */
+
+#endif /* NODEAPPTEST_ROUNDTRIP_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h
new file mode 100644
index 00000000000..b84617f9ff0
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/RoundTrip_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NODEAPPTEST_ROUNDTRIP_SVNT
+// ------------------------------
+#ifndef NODEAPPTEST_ROUNDTRIP_SVNT_EXPORT_H
+#define NODEAPPTEST_ROUNDTRIP_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL 1
+#endif /* ! NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL */
+
+#if defined (NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL) && (NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL == 1)
+# if defined (NODEAPPTEST_ROUNDTRIP_SVNT_BUILD_DLL)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_Export ACE_Proper_Export_Flag
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NODEAPPTEST_ROUNDTRIP_SVNT_BUILD_DLL */
+# define NODEAPPTEST_ROUNDTRIP_SVNT_Export ACE_Proper_Import_Flag
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NODEAPPTEST_ROUNDTRIP_SVNT_BUILD_DLL */
+#else /* NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL == 1 */
+# define NODEAPPTEST_ROUNDTRIP_SVNT_Export
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NODEAPPTEST_ROUNDTRIP_SVNT_HAS_DLL == 1 */
+
+// Set NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE */
+
+#if (NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE == 1)
+# define NODEAPPTEST_ROUNDTRIP_SVNT_TRACE(X)
+#else /* (NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NODEAPPTEST_ROUNDTRIP_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NODEAPPTEST_ROUNDTRIP_SVNT_NTRACE == 1) */
+
+#endif /* NODEAPPTEST_ROUNDTRIP_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test.pl b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test.pl
new file mode 100755
index 00000000000..11d7801b133
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test.pl
@@ -0,0 +1,47 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile = PerlACE::LocalFile ("test.ior");
+
+for ($iter = 0; $iter <= $#ARGV; $iter++) {
+ if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+ print "Run_Test Perl script for NodeApplicationTest \n\n";
+ print "run_test \n";
+ print "\n";
+ print "-h -- prints this information\n";
+ exit 0;
+ }
+}
+
+
+unlink $iorfile;
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV = new PerlACE::Process ("../../NodeApplication/NodeApplication",
+ "-n -o $iorfile");
+
+$CL = new PerlACE::Process ("client",
+ "-k file://$iorfile -n 4");
+
+$SV->Spawn ();
+
+if (PerlACE::waitforfile_timed ($iorfile, 15) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill ();
+ exit 1;
+}
+
+$CL->SpawnWaitKill (10);
+$status = $SV->Kill (); $SV->TimedWait (1);
+
+unlink $iorfile;
+
+exit $status;
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_ex.pl b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_ex.pl
new file mode 100755
index 00000000000..0fd413091f0
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_ex.pl
@@ -0,0 +1,47 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile = PerlACE::LocalFile ("test.ior");
+
+for ($iter = 0; $iter <= $#ARGV; $iter++) {
+ if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+ print "Run_Test Perl script for NodeApplicationTest \n\n";
+ print "run_test \n";
+ print "\n";
+ print "-h -- prints this information\n";
+ exit 0;
+ }
+}
+
+
+unlink $iorfile;
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV = new PerlACE::Process ("../../NodeApplication/NodeApplication",
+ "-n -o $iorfile");
+
+$CL = new PerlACE::Process ("client_ex",
+ "-k file://$iorfile");
+
+$SV->Spawn ();
+
+if (PerlACE::waitforfile_timed ($iorfile, 15) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill ();
+ exit 1;
+}
+
+$CL->SpawnWaitKill (10);
+$status = $SV->Kill (); $SV->TimedWait (1);
+
+unlink $iorfile;
+
+exit $status;
diff --git a/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_simple.pl b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_simple.pl
new file mode 100755
index 00000000000..c1811abee9d
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/NodeApplicationTest/run_test_simple.pl
@@ -0,0 +1,47 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile = PerlACE::LocalFile ("test.ior");
+
+for ($iter = 0; $iter <= $#ARGV; $iter++) {
+ if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+ print "Run_Test Perl script for NodeApplicationTest \n\n";
+ print "run_test \n";
+ print "\n";
+ print "-h -- prints this information\n";
+ exit 0;
+ }
+}
+
+
+unlink $iorfile;
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV = new PerlACE::Process ("../../NodeApplication/NodeApplication",
+ "-n -o $iorfile");
+
+$CL = new PerlACE::Process ("client_simple",
+ "-k file://$iorfile ");
+
+$SV->Spawn ();
+
+if (PerlACE::waitforfile_timed ($iorfile, 15) == -1) {
+ print STDERR "ERROR: cannot find file <$iorfile>\n";
+ $SV->Kill ();
+ exit 1;
+}
+
+$CL->SpawnWaitKill (10);
+$status = $SV->Kill (); $SV->TimedWait (1);
+
+unlink $iorfile;
+
+exit $status;
diff --git a/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl
new file mode 100755
index 00000000000..59d86f5c9f1
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicNodeDaemon.pl
@@ -0,0 +1,62 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+$iorfile3 = PerlACE::LocalFile ("NodeApp3.ior");
+$iorfile4 = PerlACE::LocalFile ("NodeApp4.ior");
+$iorfile5 = PerlACE::LocalFile ("NodeApp5.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+unlink $iorfile3;
+unlink $iorfile4;
+unlink $iorfile5;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:10000 -s
+$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:20000 -s
+$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV3 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:30000 -s
+$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV4 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:40000 -s
+$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV5 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:50000 -s
+$CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+$SV1->Spawn ();
+$SV2->Spawn ();
+$SV3->Spawn ();
+$SV4->Spawn ();
+$SV5->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat
new file mode 100644
index 00000000000..8bd5e6a72f6
--- /dev/null
+++ b/modules/CIAO/DAnCE/tests/scripts/BasicSP/basicsp.dat
@@ -0,0 +1,3 @@
+BMClosedED corbaloc:iiop:localhost:10000/NodeManager
+EC corbaloc:iiop:localhost:20000/NodeManager
+
diff --git a/modules/CIAO/MPC/config/ciao_client_dnc.mpb b/modules/CIAO/MPC/config/ciao_client_dnc.mpb
new file mode 100644
index 00000000000..8e12607cf37
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_client_dnc.mpb
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+project : ifr_client, valuetype, pi, codecfactory {
+ after += CIAO_DnC_Client
+ includes += $(CIAO_ROOT) $(CIAO_ROOT)/ciao
+ idlflags += -I$(CIAO_ROOT) -I$(CIAO_ROOT)/ciao
+ libs += CIAO_DnC_Client
+}
diff --git a/modules/CIAO/MPC/config/ciao_component_dnc.mpb b/modules/CIAO/MPC/config/ciao_component_dnc.mpb
new file mode 100644
index 00000000000..9cabf46cf83
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_component_dnc.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : portableserver, ciao_server_dnc, ciao_events_dnc {
+ after += CIAO_DnC_Container
+ libs += CIAO_DnC_Container
+}
diff --git a/modules/CIAO/MPC/config/ciao_config_handlers.mpb b/modules/CIAO/MPC/config/ciao_config_handlers.mpb
new file mode 100644
index 00000000000..69412b873f1
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_config_handlers.mpb
@@ -0,0 +1,25 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_config_handlers_base, dynamicany, typecodefactory {
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
+ after += CIAO_XML_Utils \
+ XSC_DynAny_Handler \
+ XSC_Config_Handlers \
+ XSC_XML_Handlers \
+ RT_CCM_Config_Handlers \
+ CIAO_Events_Handlers \
+ Package_Config_Handlers \
+ XSC_Config_Handlers_Common
+
+ libs += CIAO_XML_Utils \
+ XSC_Config_Handlers \
+ RT_CCM_Config_Handlers \
+ CIAO_Events_Handlers \
+ Package_Config_Handlers \
+ XSC_XML_Handlers \
+ XSC_Config_Handlers_Common \
+ XSC_DynAny_Handler
+}
diff --git a/modules/CIAO/MPC/config/ciao_config_handlers_base.mpb b/modules/CIAO/MPC/config/ciao_config_handlers_base.mpb
new file mode 100644
index 00000000000..4b5e001febb
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_config_handlers_base.mpb
@@ -0,0 +1,13 @@
+// $Id$
+
+project : ciao_xml_utils, dynamicany, typecodefactory, exceptions, ciao_events_dnc {
+ after += XSC_XML_Handlers
+ libs += XSC_XML_Handlers
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
+
+}
diff --git a/modules/CIAO/MPC/config/ciao_container_dnc.mpb b/modules/CIAO/MPC/config/ciao_container_dnc.mpb
new file mode 100644
index 00000000000..43365e736e3
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_container_dnc.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : portableserver, ciao_client_dnc, avoids_corba_e_compact, avoids_corba_e_micro {
+ after += CIAO_DnC_Container
+ libs += CIAO_DnC_Container
+}
diff --git a/modules/CIAO/MPC/config/ciao_deployment_stub.mpb b/modules/CIAO/MPC/config/ciao_deployment_stub.mpb
new file mode 100644
index 00000000000..45e0fb77341
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_deployment_stub.mpb
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_client_dnc, ciao_events_base_dnc {
+ after += Deployment_stub
+ libs += CIAO_Deployment_stub
+ includes += $(CIAO_ROOT)/DAnCE
+ idlflags += -I$(CIAO_ROOT)/DAnCE
+}
diff --git a/modules/CIAO/MPC/config/ciao_deployment_svnt.mpb b/modules/CIAO/MPC/config/ciao_deployment_svnt.mpb
new file mode 100644
index 00000000000..644feb7f2b6
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_deployment_svnt.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub, portableserver, ciao_events_dnc {
+ after += Deployment_svnt
+ libs += CIAO_Deployment_svnt
+ idlflags += -I$(CIAO_ROOT)/DAnCE
+}
diff --git a/modules/CIAO/MPC/config/ciao_domainapplicationmanager_dnc.mpb b/modules/CIAO/MPC/config/ciao_domainapplicationmanager_dnc.mpb
new file mode 100644
index 00000000000..31731a84d5d
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_domainapplicationmanager_dnc.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_svnt {
+ includes += $(CIAO_ROOT)/DomainApplicationManager
+ libs += DomainApplicationManager
+ after += DomainApplicationManager
+}
diff --git a/modules/CIAO/MPC/config/ciao_events_base_dnc.mpb b/modules/CIAO/MPC/config/ciao_events_base_dnc.mpb
new file mode 100644
index 00000000000..de2c8d5a7b9
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_events_base_dnc.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : orbsvcslib, ciao_container_dnc, ciao_client_dnc {
+ libs += CIAO_DnC_Events_Base
+ after += CIAO_DnC_Events_Base
+}
diff --git a/modules/CIAO/MPC/config/ciao_events_dnc.mpb b/modules/CIAO/MPC/config/ciao_events_dnc.mpb
new file mode 100644
index 00000000000..50ec7aad402
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_events_dnc.mpb
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+project : ifr_client, valuetype, pi, codecfactory, ciao_container_dnc, ciao_client_dnc, ciao_rtevent_dnc, naming {
+ includes += $(CIAO_ROOT)/ciaosvcs/Events
+ idlflags += -I$(CIAO_ROOT)/ciaosvcs/Events
+ libs += CIAO_DnC_Events
+ after += CIAO_DnC_Events
+}
diff --git a/modules/CIAO/MPC/config/ciao_executionmanager_stub.mpb b/modules/CIAO/MPC/config/ciao_executionmanager_stub.mpb
new file mode 100644
index 00000000000..bea046abd2d
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_executionmanager_stub.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub {
+ includes += $(CIAO_ROOT)/DAnCE/ExecutionManager
+ libs += ExecutionManager_stub
+ after += ExecutionManager_stub
+}
diff --git a/modules/CIAO/MPC/config/ciao_nodeapplication.mpb b/modules/CIAO/MPC/config/ciao_nodeapplication.mpb
new file mode 100644
index 00000000000..7c47eb723c6
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_nodeapplication.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub, ciao_noop_configurator {
+ libs += CIAO_NodeApplication
+ after += NodeApplicationLib
+}
diff --git a/modules/CIAO/MPC/config/ciao_nodeapplicationmanager.mpb b/modules/CIAO/MPC/config/ciao_nodeapplicationmanager.mpb
new file mode 100644
index 00000000000..e7d313f0617
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_nodeapplicationmanager.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_targetmanager_stub, ciao_nodeapplication {
+ includes += $(CIAO_ROOT)/DAnCE/NodeApplicationManager
+ libs += NodeApplicationManager
+ after += NodeApplicationManager
+}
diff --git a/modules/CIAO/MPC/config/ciao_nodemanager_stub.mpb b/modules/CIAO/MPC/config/ciao_nodemanager_stub.mpb
new file mode 100644
index 00000000000..f69e5881091
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_nodemanager_stub.mpb
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub {
+ includes += $(CIAO_ROOT)/DAnCE/Interfaces
+ includes += $(CIAO_ROOT)/DAnCE/NodeManager
+ libs += NodeManager_stub
+ after += NodeManager_stub
+}
diff --git a/modules/CIAO/MPC/config/ciao_nodemanager_svnt.mpb b/modules/CIAO/MPC/config/ciao_nodemanager_svnt.mpb
new file mode 100644
index 00000000000..b3740720386
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_nodemanager_svnt.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_nodemanager_stub {
+ libs += NodeManager CIAO_NoOp_Configurator
+ after += NodeManager_svnt
+}
diff --git a/modules/CIAO/MPC/config/ciao_noop_configurator.mpb b/modules/CIAO/MPC/config/ciao_noop_configurator.mpb
new file mode 100644
index 00000000000..67b3508ee38
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_noop_configurator.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub {
+ libs += CIAO_NoOp_Configurator
+ after += NoOp_Configurator
+}
diff --git a/modules/CIAO/MPC/config/ciao_plan_generator.mpb b/modules/CIAO/MPC/config/ciao_plan_generator.mpb
new file mode 100644
index 00000000000..e234ead3e67
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_plan_generator.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_component_dnc {
+ includes += $(CIAO_ROOT)/DAnCE/Plan_Generator
+ libs += Plan_Generator
+ after += Plan_Generator
+}
diff --git a/modules/CIAO/MPC/config/ciao_race_component.mpb b/modules/CIAO/MPC/config/ciao_race_component.mpb
new file mode 100644
index 00000000000..dc78b44764f
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_race_component.mpb
@@ -0,0 +1,8 @@
+// $Id$
+
+project : ciaocidldefaults {
+ after += RACE_common_stub
+ libs += RACE_common_stub CIAO_Deployment_stub
+ includes += $(CIAO_ROOT)/RACE
+ idlflags += -I$(CIAO_ROOT)/RACE
+}
diff --git a/modules/CIAO/MPC/config/ciao_race_default.mpb b/modules/CIAO/MPC/config/ciao_race_default.mpb
new file mode 100644
index 00000000000..93b11d6f426
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_race_default.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciaocidldefaults {
+ includes += $(CIAO_ROOT)/RACE
+ idlflags += -I$(CIAO_ROOT)/RACE
+}
diff --git a/modules/CIAO/MPC/config/ciao_race_monitor.mpb b/modules/CIAO/MPC/config/ciao_race_monitor.mpb
new file mode 100644
index 00000000000..d59196c131d
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_race_monitor.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_race_default {
+ after += Local_Monitor
+ libs += Local_Monitor
+}
diff --git a/modules/CIAO/MPC/config/ciao_rtevent_dnc.mpb b/modules/CIAO/MPC/config/ciao_rtevent_dnc.mpb
new file mode 100644
index 00000000000..78fa520bb5d
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_rtevent_dnc.mpb
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+project : rtevent_serv, ciao_events_base_dnc, naming {
+ includes += $(CIAO_ROOT)/ciaosvcs/Events
+ idlflags += -I$(CIAO_ROOT)/ciaosvcs/Events
+ libs += CIAO_RTEvent
+ after += CIAO_RTEvent
+}
diff --git a/modules/CIAO/MPC/config/ciao_servant_dnc.mpb b/modules/CIAO/MPC/config/ciao_servant_dnc.mpb
new file mode 100644
index 00000000000..6bc5c8d52a0
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_servant_dnc.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_component_dnc, ciao_deployment_svnt, ciao_events_dnc, ciaocidldefaults, utils, naming {
+ after += CIAO_DnC_Server
+ libs += CIAO_DnC_Server
+}
diff --git a/modules/CIAO/MPC/config/ciao_server_dnc.mpb b/modules/CIAO/MPC/config/ciao_server_dnc.mpb
new file mode 100644
index 00000000000..c35042c2c4a
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_server_dnc.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_client_dnc, ciao_deployment_svnt, utils, naming, ciao_events_dnc, avoids_minimum_corba, avoids_corba_e_compact, avoids_corba_e_micro {
+ after += CIAO_DnC_Server
+ libs += CIAO_DnC_Server
+}
diff --git a/modules/CIAO/MPC/config/ciao_static_dnc_app.mpb b/modules/CIAO/MPC/config/ciao_static_dnc_app.mpb
new file mode 100644
index 00000000000..f6792f1f9eb
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_static_dnc_app.mpb
@@ -0,0 +1,5 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_component_dnc, iortable, ciao_nodeapplicationmanager, ciao_nodemanager_svnt {
+}
diff --git a/modules/CIAO/MPC/config/ciao_targetmanager_stub.mpb b/modules/CIAO/MPC/config/ciao_targetmanager_stub.mpb
new file mode 100644
index 00000000000..59d2a646212
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_targetmanager_stub.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_nodemanager_stub {
+ includes += $(CIAO_ROOT)/DAnCE/TargetManager
+ libs += TargetManager_stub
+ after += CIAO_TargetManager_stub
+}
diff --git a/modules/CIAO/MPC/config/ciao_targetmanager_svnt.mpb b/modules/CIAO/MPC/config/ciao_targetmanager_svnt.mpb
new file mode 100644
index 00000000000..6b6ea42cd7e
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_targetmanager_svnt.mpb
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_targetmanager_stub {
+ libs += TargetManager_svnt
+ after += CIAO_TargetManager_svnt
+}
diff --git a/modules/CIAO/MPC/config/ciao_xml_utils.mpb b/modules/CIAO/MPC/config/ciao_xml_utils.mpb
new file mode 100644
index 00000000000..1167281994f
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciao_xml_utils.mpb
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project : xerces, exceptions {
+ includes += $(CIAO_ROOT)/tools
+ after += CIAO_XML_Utils
+ libs += CIAO_XML_Utils
+}
diff --git a/modules/CIAO/MPC/config/ciaocidldefaults.mpb b/modules/CIAO/MPC/config/ciaocidldefaults.mpb
new file mode 100644
index 00000000000..3521ffebf88
--- /dev/null
+++ b/modules/CIAO/MPC/config/ciaocidldefaults.mpb
@@ -0,0 +1,24 @@
+// -*- MPC -*-
+// $Id$
+
+project {
+ // Set the cidl compiler and flags as template values
+ specific {
+ cidlc = $(CIAO_ROOT)/bin/cidlc
+ cidlc_dep = $(CIAO_ROOT)/bin/cidlc
+ cidlc_flags = -I $(CIAO_ROOT) -I$(CIAO_ROOT)/DAnCE -I$(CIAO_ROOT)/ciao -I$(TAO_ROOT) -I$(TAO_ROOT)/tao -I$(TAO_ROOT)/orbsvcs
+ }
+
+ Define_Custom(CIDL) {
+ automatic = 0
+ dependent = $(CIDLC_DEP)
+ command = $(CIDLC)
+ commandflags = $(CIDLC_FLAGS)
+ inputext = .cidl
+ source_outputext = _svnt.cpp
+ header_outputext = _svnt.h
+ generic_outputext = E.idl
+ keyword cidlflags = commandflags
+ }
+
+}
diff --git a/modules/CIAO/MPC/config/cidlc.mpb b/modules/CIAO/MPC/config/cidlc.mpb
new file mode 100644
index 00000000000..38fa6d65e0d
--- /dev/null
+++ b/modules/CIAO/MPC/config/cidlc.mpb
@@ -0,0 +1,15 @@
+// $Id$
+
+project: boost_filesystem, boost_regex, exceptions {
+ requires += cidl
+ includes += $(CIAO_ROOT) $(CIAO_ROOT)/CCF $(ACE_ROOT)/contrib/utility
+ libpaths += $(CIAO_ROOT)/CCF/CCF $(ACE_ROOT)/lib
+
+ specific(nmake, vc71, vc8) {
+ compile_flags += /wd4290 /wd4800 /wd4250 /wd4355
+ }
+
+ verbatim(gnuace, top) {
+ include $(CIAO_ROOT)/CCF/Config.rules
+ }
+}
diff --git a/modules/CIAO/MPC/config/dance_extension_stub.mpb b/modules/CIAO/MPC/config/dance_extension_stub.mpb
new file mode 100644
index 00000000000..4f5353b87bb
--- /dev/null
+++ b/modules/CIAO/MPC/config/dance_extension_stub.mpb
@@ -0,0 +1,6 @@
+// -*- MPC -*-
+// $Id$
+
+project : ciao_deployment_stub {
+ includes += $(CIAO_ROOT)/DAnCE/Interfaces
+}
diff --git a/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb b/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb
new file mode 100644
index 00000000000..58e2fb2f896
--- /dev/null
+++ b/modules/CIAO/MPC/config/taoidl3toidl2defaults.mpb
@@ -0,0 +1,23 @@
+// -*- MPC -*-
+// $Id$
+
+project {
+ // Set the idl3_to_idl2 compiler and flags as template values
+ specific {
+ tao_idl3_to_idl2 = $(ACE_ROOT)/bin/tao_idl3_to_idl2
+ tao_idl3_to_idl2_dep = $(ACE_ROOT)/bin/tao_idl3_to_idl2
+ }
+
+ Define_Custom(IDL3TOIDL2) {
+ automatic = 1
+ dependent = $(TAO_IDL3_TO_IDL2_DEP)
+ command = $(TAO_IDL3_TO_IDL2)
+ commandflags = -I$(CIAO_ROOT)/ciao -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs
+ libpath = $(ACE_ROOT)/lib
+ inputext = .idl
+ generic_outputext = _IDL2.idl
+ keyword idl3toidl2flags = commandflags
+ }
+
+ after += TAO_IDL3_TO_IDL2_EXE
+}
diff --git a/modules/CIAO/NEWS b/modules/CIAO/NEWS
new file mode 100644
index 00000000000..60bdd8b110f
--- /dev/null
+++ b/modules/CIAO/NEWS
@@ -0,0 +1,764 @@
+PLANNED MAJOR CHANGES "SOMETIME IN THE FUTURE" (i.e., exact beta not known)
+===========================================================================
+
+. Enhance Execution Manager and Domain Application Manager to make calls
+ on the Target Manager to get resource information.
+
+. Enhance Node Manager to integrate resource monitoring capacity within
+ individual Nodes.
+
+. Add assembly-wide component activation/deactivation feature.
+
+ - This should allow system deployers to specify the dependencies
+ among component instances within the assembly.
+
+ - Add support in DAnCE so DAnCE could enforce the order in which
+ components are to be activated within the assembly.
+
+. Add AMI support in DAnCE toolchain to when the DomainApplicationManager
+ contacts node-level managers to deploy components, all the node-level
+ managers could performe the deployment concurrently.
+
+. Integrate RT-CORBA 1.2 dynamic scheduling feature into CIAO, which
+ will allow the application developers to use dynamica scheduling
+ through meta-programming model.
+
+. Enhance DAnCE to support OpenCCM components.
+
+. Update DAnCE IDL data structures and interfaces to comply with the
+ 06-04-01 version of the DnC specification, and perform
+ interoperability testing with other DnC implementations. Note this
+ work may change the functionality and semantics of some proprietary
+ DAnCE extensions, notably ReDaC, Shared Compoents, and RTEC
+ integration, and may even be absent until such a time as they
+ can be implemented in such a way as to not break copliance with the DnC
+ specification.
+
+. Implement Resource Allocation and Control Engine (RACE), which is a
+ component middleware framework built atop of CIAO/DAnCE that integrates
+ multiple resource allocation/control algorithms for (re)deploying and
+ (re)configuring component applications. RACE enables (1) system
+ developers to configure algorithms depending on the characteristics of
+ applications and operating environment, and (2) swapping in and swapping
+ out multiple algorithms to make different resource allocation and control
+ decisions, without handcrafting the mechanisms needed to (1) configure
+ the algorithms and (2) deploy the decisions made by the algorithms.
+
+. Implement support for more complex type initialization with XML.
+
+. Decouple dependencies to NodeApplication from other DAnCE tools.
+ These dependencies were added to support static configurator. We
+ need to have these tools in both conventional version and static
+ configuration version.
+
+. Support tool-specific debug levels and added CIAO_DEBUG macros to
+ simplify adding debug printouts based on various tool-specific debug
+ levels.
+
+. Add support for querying for interface types to the
+ RepositoryManager.
+
+. Implement a planner to query the TargetManager and RepositoryManager
+ and generate deployment plans on the fly.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.5 and CIAO-0.5.6
+======================================================
+
+. Removed all exception environment macros except ACE_THROW_RETURN
+ and ACE_THROW_SPEC
+
+. All CIAO libraries built on UNIX systems will now have the correct library
+ version numbers. Previously they had the same version numbers as TAO
+ libraries.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.4 and CIAO-0.5.5
+======================================================
+
+. Fixed problems and added command line options to the
+ generate_component_mpc.pl Perl script. Also added an HTML
+ documentation file for this script.
+
+. All IDL has been refactored to get a smaller footprint
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.3 and CIAO-0.5.4
+======================================================
+
+. Adding support to manage multiple interconnected assemblies, which will
+ involve the work through ExternalReferenceEndPoint idea.
+
+. Seamless integration of swapping into the main line programming model,
+ so that DAnCE can actually kickstart swapping.
+
+. Integrated real-time event service into CIAO and DAnCE.
+
+. Improved syntax error checking and reporting in the CIDL compiler.
+
+. Add Null Component to be able to measure footprint in detail
+
+. Added the naming service & the implementation of createPackage function
+ to RepoMan.
+
+. Added the code to save the state of the RepoMan at exit and load the
+ state of it at start.
+
+. Reimplemented the findNamesByType () and getAllTypes () operations of
+ RepoMan, which use the newly generated ACE_Hash_MultiMap_Manager class
+ and its corresponding classes.
+
+. Added Plan_Generator project. This project is used to retrieve information
+ from Repoman and generate/modify DeploymentPlans based on different demands.
+
+. A succesfull static deployment of the Hello example has been tested on
+ VxWorks 6.3
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.2 and CIAO-0.5.3
+======================================================
+
+. Improve documentation for CoSMiC Quoter tutorial to reflect the latest update
+
+. Reimplemented the findNamesByType () and getAllTypes () operations
+ of Repository Manager, which use the newly generated
+ ACE_Hash_MultiMap_Manager class and its corresponding classes.
+
+. Added the replace argument in installPackage () and createPackage ()
+ functions to Repoman and extend the functionalities of these two
+ functions based on the latest D&C spec.
+
+. Added the Plan_Generator project. This project is used to retrieve
+ information from Repoman and generate/modify DeploymentPlans based
+ on different demands. Removed the planner project.
+
+. Added C++ keyword mangling to the CIDL compiler (bug#2427).
+
+. Fixed the CIDL compiler source code to build with Intel C++ (bug#2387).
+
+. Reimplemented the CIDL compiler command line handling to make use
+ of '--' to separate options from arguments unnecessary (bug#2426).
+
+. Added file and line number to the semantic errors printed by the CIDL
+ compiler.
+
+. Fixed a number of bugs in the CIDL compiler error handling and recovery
+ mechanisms.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.1 and CIAO-0.5.2
+======================================================
+
+. Changed CIDL compiler code generation for facet servant classes
+ to enable reuse if the same interface is used as a facet more
+ than once in a single translation unit.
+
+. Fixed code that fetches component DLL entry points to be portable
+ across all supported compilers.
+
+. Fixed bugs in the recent implementation of component servant methods
+ get_all_receptacles() and get_all_publishers().
+
+. Simplified template code in component servant and home servant
+ base classes.
+
+. Added the naming service & the implementation of createPackage function
+ to RepoMan.
+
+. Added the code to save the state of the RepoMan at exit and load the
+ state of it at start.
+
+. A new perl library has been added to the bin directory. PerlCIAO is
+ a wrapper around PerlACE with extensions to aid in scripting CIAO
+ tests.
+
+. DAnCE/Planner - a planner which contacts the RepositoryManager, gets a
+ PackageConfiguration by name, and builds a DeploymentPlan on
+ the fly. Note that the node information is currently not populated.
+
+. Added two RACE utilities, the LocationUpdater and PlanGenerator.
+ The LocationUpdater modifies the location field of artifacts in
+ flattened plans to correspond to HTTP URLs pointing at the
+ RepositoryManager. The PlanGenerator is the Planner utility
+ modified to work with RACE. Note that most RACE functionality is
+ still in development and is not included with this release.
+
+. Added support for parsing packaging descriptors to the
+ Config_Handlers, and improved support for IDL->XML serialization.
+
+. Added a Planner utility which, when given the name of a package,
+ will contact the RepositoryManager and construct a flattened
+ deployment plan on the fly. Note this utility currently does not
+ populate node assignments.
+
+. Several important bugfixes for ReDaC and shared components.
+
+. Changed Components.idl to include CCM_Component.idl instead of
+ CCM_Container.idl. This removes a dependancy on the container
+ library for stub projects.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.5.0 and CIAO-0.5.1
+======================================================
+
+. Added the support of integrating real-time event service into the
+ CIAO core framework. Enhanced DAnCE to support declaratively configure
+ and deploy real-time event channels to mediate event communication
+ among components.
+
+. Fixed a bug in detecting External connection and Internal
+ connections when components are shared across different
+ deployment plans. Earlier when removing connections attached
+ to an external/shared component, not *all* connections
+ associated with this components are purged from the
+ to-be-removed connections list.
+
+. Fixed a bug when redeploying components using the same set
+ of NodeManagers, the destroy of applications results not
+ all internal components and external/shared components
+ are unbinded from the cached map, which sometimes causes
+ duplicate instance exception thrown.
+
+. Fixed bug in detecting name clashes between names of ports of the same
+ category (facet, event sink, etc.) in the same component.
+
+. Added support for attribute exceptions in code generated for executor
+ implementation classes.
+
+. Implemented spec-defined component methods get_all_receptacles(),
+ get_all_publishers(), and disconnect_consumer().
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.10 and CIAO-0.5.0
+=======================================================
+
+. Changed MPC configuration of Config_Handlers to turn off hidden
+ visibility if applicable when compiling Config_Handlers or projects
+ that use Config_Handlers on linux.This change was to work around symbol
+ visibility inconsistencies in GNU standard C++ library when using g++
+ 4.x's symbol visibility features.
+
+. Enhanced ReDaC service to enforce the correct
+ assembly redeployment and reconfiguration order.
+
+. Some bug fixes in ReDaC about removing components.
+
+. Fixed NodeApplication to unbind a component with naming service
+ when removing it from the container.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.9 and CIAO-0.4.10
+=======================================================
+
+. Enhanced DAnCE ReDaC service to enforce the correct
+ assembly redeployment and reconfiguration order.
+
+ The order that ReDaC currently enforces:
+
+ (1) Install new components,
+ (2) Set up new connections,
+ (3) Activate new components,
+ (4) Passivate old components,
+ (5) Remove old connections
+ (6) Remove old components.
+
+. Enhanced DAnCE to create hierarchical naming context
+ path through XML descriptors.
+
+. Enhanced DAnCE to maintain a component state map in
+ the component server to manage component life cycle.
+
+. Some bug fixes in DAnCE.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.8 and CIAO-0.4.9
+======================================================
+. RTTI enabled versions of the Xerces library are no longer needed on
+ Windows platforms.
+
+. The CIDLC compiler now supports basic preprocessor directives:
+ #ifdef, #ifndef, #else, and #endif as well as the -D command-
+ line option.
+
+. The CIDLC compiler now supports incomplete struct and union
+ semantics which will appear in CORBA 3.1.
+
+. DAnCE now supports dynamically adding/removing components
+ to/from the existing running assembly without shutting down the
+ running appliation. This will allow the application developers to
+ evolve their applications on the fly without incuring service down
+ time. The service is called ReDaC (Redeployment and Reconfiguration)
+
+ Basically ReDAC provides a whole range of redeployment and
+ reconfiguration granularity level, including:
+
+ 1) Install/remove component instances of the existing component types.
+ 2) Install/remove component instances of a different type, i.e., a
+ totally new type of component.
+ 3) Install/remove component instances from an existing container.
+ 4) Install new component instances into a dynamically created brand
+ new container.
+ Move around existing components from one existing container to
+ another existing/new container.
+ 5) Install new component instances into another component server in
+ the same physical node.
+ 6) Install new component instances into another component server
+ into a remote host.
+
+ To see how to use this feature, please see the ReDaC-Usage.html
+ under the $CIAO_ROOT/examples/Hello/ directory.
+
+. Removed the Old Config Handlers, which have been deprecated for some
+ time. Please see tools/Config_Handlers for the current version.
+
+. Added a step-by-step CoSMIC tutorial for modeling CIAO components
+ using PICML($CIAO_ROOT/docs/tutorials/CoSMIC). Using a simple Stock
+ Quoter system as example, this tutorial demonstrates all the steps
+ that needed to model Component-Based applications.
+
+. DAnCE now supports making connections among components across
+ different assemblies, and allow components to be "shared"
+ across assemblies seamlessly.
+
+ Internally, DAnCE provides a reference counting mechanism when
+ deploying/destroying components, and a reference count table
+ is maintained on each NodeManager.
+
+ From a deployer's point of view, if he/she chooses to deploy
+ a new assembly of component and simultaneously wants to reuse
+ previous deployed components in an existing running assembly,
+ then in the new deployment plan descriptor, he could refer
+ to an old component instance in the <InstanceDeploymentDescriptions>
+ XML tag. The "key" to identify the old component instance is
+ through the <Component_UUID, Node> pair, if such a key is found
+ present in a previous deployed assembly, then DAnCE won't
+ install this component instance (specified by the <Component_UUID>)
+ again, but instead it will increase the reference count of this
+ component instance.
+
+ DAnCE also supports making connections from existing running
+ components to newly deployed components in another assembly, and
+ vice versa.
+
+. The RepositoryManager has been enhanced to support standards based
+ interfaces. A number of techniques have been used to ensure high
+ performance and scalability.
+
+. The RepositoryManager can now retrieve packages from remote locations via
+ HTTP.
+
+. The Target Manager is released with this CIAO release. It is an
+ infrastructure component which keeps track of resource usage in the
+ target domain. The initial domain configuration remains with the
+ Target Manager. A monitor framework has been built into Node Manager which
+ monitors the resources used within each host. This monitor reports its
+ data intermittently to the Target Manager which aggregates the data
+ received across all such hosts acroos the Target domain. The monitor
+ is implemented using a strategy pattern, thus enabling the plug-in of
+ new monitors which can monitor different resources in the domain. The
+ Target manager is a component thus it needs to be started using a
+ deployment plan. It is right now a optional component in the DAnCE
+ tool chain.
+
+. We added a skeleton implementation of the Resource Allocation and
+ Control Engine (RACE) which is a middleware framework built atop
+ CIAO/DAnCE that integrates multiple resource management algorithms for
+ (re)deploying and (re)configuring application components. We are in
+ the process of developing resource management algorithms (both
+ resource allocation and control algorithms) that will be a part of
+ future releases.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.7 and CIAO-0.4.8
+======================================================
+. The deprecated RepositoryManager implementation, under
+ DAnCE/RepositoryManager, has been removed from this release. Please
+ use the Plan_Launcher and flattened deployment plans to deploy
+ component assemblies.
+
+. The CIDL compiler frontend now supports constants, const expressions,
+ bounded strings, bounded sequences, and arrays.
+
+. The CIDL compiler frontend now supports automatic indentation of
+ function arguments (both "new line" and "same line" styles are
+ supported).
+
+. Added backend CIDL compiler support for constants, arrays, bounded
+ strings, bounded sequences, and attribute exceptions, corresponding
+ to frontend support added by Boris Kolpackov <boris@kolpackov.net>.
+
+. Updated documentation to include instructions for building
+ the CIDL compiler using MakeProjectCreator (MPC).
+
+. Fixed a bug in the CIDL compiler's determination if an IDL
+ type is of fixed or variable size type, when it is declared
+ in the scope of an interface, valuetype or home.
+
+. Changes to generate servant code to support component
+ swapping.
+
+. Added capability to pass a base class event consumer to a
+ subscribe() operation generated for a derived event type.
+
+. Added support for .cdl file extension, which was belatedly
+ standardized by the OMG.
+
+. Added documentation on using Rational Purify with CIAO and
+ DAnCE.
+
+. Added tests and documentation for the IDL3-to-IDL2 converter tool.
+
+. RepositoryManager:
+ - enhanced the implementation to use various optimization techniques
+ - added HTTP support
+ - added PackageConfiguration visitor to update the locations of the
+ implementation artifacts with relevant HTTP URLs
+ - refactored some of the code and added a number of helpers functions
+
+. The XSC based config handlers have been heavily optimized, resulting
+ in greatly reduced parsing overhead for large deployments.
+
+. The DAnCE toolchain now supports initializing attributes which have
+ enumerated types. Support for other complex types is planned for the
+ future. Please see examples/Hello/descriptors/
+ flattened_deploymentplan_without_ns.cdp for an example of how to
+ populate enumerated attributes.
+
+. Integrated Real-time QoS support into the DAnCE-based runtime and
+ deployment tools based on the new OMG Deployment and Configuration
+ (D&C) specification. Such effort allows application developers to
+ use real-time CORBA 1.0 features within their CCM appliation through
+ meta-programming (via XML metadata through DAnCE toolchain). The old
+ run-time and deployment tools based on original Packaging and Deployment
+ section of the CCM specification have been completely removed. This
+ work includes extensions to D&C schema, schema parsers, container and
+ NodeApplication.
+
+. Added functionality in XML parsing code to resolve schema in
+ $CIAO_ROOT/docs/schema instead of the local directory only. All
+ DeploymentPlans should use Deployment.xsd instead of
+ Modified_Deployment.xsd, which has been removed.
+
+. Fixed bug in CIDL code generation for some types of component and
+ home attributes.
+
+. Packaging and Deployment (P&D) tools have been completely removed
+ from this release. DAnCE is now the only supported method of
+ deploying components.
+
+. The CIAO directory structure has changed in support of the previous
+ item. The following important directory moves have been made:
+
+ * $CIAO_ROOT/DAnCE/ciao => $CIAO_ROOT/ciao
+ * $CIAO_ROOT/DAnCE/examples => $CIAO_ROOT/examples
+ * $CIAO_ROOT/DAnCE/Config_Handlers => $CIAO_ROOT/tools/Config_Handlers
+ * Various obsolete examples/tutorials/tests have been removed.
+
+. Error reporting during component deployment has been greatly
+ improved. While debugging using CIAO_DEBUG_LEVEL is still
+ available, detailed error messages are now generated and propagated
+ to the Plan_Launcher using exceptions.
+
+. generate_component_mpc.pl has been updated to generate MPC files
+ useful by the modern CIAO infrastructure. This script now also
+ automatically generates export files.
+
+. DAnCE has been enhanced to support deploying multiple assemblies
+ with the same set of ExecutionManager and NodeMangers.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.6 and CIAO-0.4.7
+======================================================
+. Added a component packaging tool to DAnCE. This tool will allow
+ component packagers to create from deployment plan archived
+ packages that wrap up all relevant component properties,
+ descriptors and implementation artifacts.The component packages
+ generated from this tool will be distributed to Repository
+ Manager.
+
+. Enhanced DAnCE to allow more than one NodeApplicationManagers within
+ a NodeManager.
+
+. Enhanced DAnCE to support configurable output of debugging information.
+ Support for debugging information will be added at the level of both the
+ DAnCE/CIAO infrastructure as well as individual component instances.
+ Support for tracing of the DAnCE/CIAO infrastructure will also be added.
+ Together, these efforts will help developers to understand the execution of
+ their component-based applications, as well as allowing customization of
+ the amount of debugging information logged
+
+. Added binding component to the Naming Service. A system deployer
+ could configure this through XML-based flattened deployment plan
+ descriptor.
+ See $CIAO_ROOT/DAnCE/examples/Hello/descriptors/flattened_deploymentplan.cdp
+ for details. Currently DAnCE only provides resolving naming service
+ reference through multicast, so be sure to initialize the naming service
+ with multicast port.
+
+. Added the first cut of the RepositoryManager implementation.
+
+. Changed scoping of code generated by the CIDL compiler to accommodate
+ cases where the composition declaration is enclosed in one or more
+ IDL modules, and/or when the composition declaration is in a different
+ scope than the associated component IDL declarations.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.5 and CIAO-0.4.6
+======================================================
+
+. Added support for handle component activation/passivation in D&C
+ assemblies.
+
+. Added a test for the tool that converts IDL3 into equivalent IDL2.
+
+. Fixed CIDL compiler bug in code generation for sequence type
+ attributes of components.
+
+. Added more examples for CIAO, including a new Quoter example that is
+ similar to the one in TAO, as well as GUI-based example.
+
+. Added support for handle component activation/passivation in D&C
+ assemblies.
+
+. Added support for deactivating facets/event consumers when component
+ is getting deactivated.
+
+. Added support for destroying the component executors, when the
+ component is getting deactivated.
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.4 and CIAO-0.4.5
+======================================================
+
+. Split the previous NodeApplication interface into NodeApplication
+ and Container interfaces to allow multi-container NodeApplication
+ support. This will be particularly useful to provide an optimized
+ CIAO container support for RT-CORBA features.
+
+. Enhanced CIAO to handle dynamic replacement of components. Please
+ see an example in $CIAO_ROOT/DAnCE/examples/Swapping
+
+. The Config Handlers have been modified to use XML parsing code
+ generated by the XML Schema Compiler (XSC). Binary releases of XSC can
+ currently be found at (http://www.dre.vanderbilt.edu/~boris/xsc), and a
+ recent snapshot of the CVS repository can be found at
+ (http://www.dre.vanderbilt.edu/~wotte/xsc.tbz2).
+
+ Please direct all XSC inquiries/bug reports to wotte at
+ dre.vanderbilt.edu
+
+. Supported initializing attribute values on Component through XML
+ tags. Please refer to the $CIAO_ROOT/DAnCE/examples/Hello for
+ details, particularly the Hello.cid descriptor file.
+
+. Supported parsing component instance names and using them to generate
+ unique component port references, so that multiple instances of the
+ same component can be deployed in a single container and the client
+ requests could be properly designated to the appropriate ports.
+
+. Enhance CIAO to support establishing connections between derived
+ type ports and base type ports. For example, application deployer
+ could set up event connections between base event sink port type and
+ derived event source port type.
+
+. Enhanced the existing set of DAnCE tools to support flattened
+ Deployment Plan based deployment. Please refer an example in
+ $CIAO_ROOT/DAnCE/examples/BasicSP/flattened_deploymentplan.cdp
+ to see how the flattened deployment plan descriptor is used to
+ deploy the BasicSP example.
+
+. Develop regression/performance tests (similar to TAO
+ regression/performance tests) that will test/evaluate the
+ performance of various features of CIAO.
+
+. Added regression test script to the nightly build for DAnCE example.
+ This will make sure DAnCE tools could be ready to use out of
+ box in various platforms.
+
+. Improved documentation pages in various places.
+
+. Some bug fixes.
+
+. Added support for reception of eventtypes of a more derived type than
+ the type of the event sink. Subscription will succeed if the passed
+ event consumer is associated with an eventtype that is an ancestor of
+ the published eventtype.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.3 and CIAO-0.4.4
+======================================================
+
+. Minor bugfixes.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.2 and CIAO-0.4.3
+======================================================
+
+. CIDLC can generate empty executor implementations for a given
+ composition, which makes it easier to write executors. This can be
+ trigerred by passing --gen-exec-impl option while invoking CIDLC.
+
+. Generated container code has been refactored into base classes,
+ thereby reducing the amount of code generated by CIDLC.
+
+. A new tool for generating equivalent IDL2 declarations from IDL3
+ declarations has been added.
+
+. Fixed a problem with DAnCE that prevented ports from getting activated
+ properly.
+
+. Added support for eventtype factories within CIDLC.
+
+. DAncE compiles clean and works with VC6 and Borland compilers.
+
+. Fixed compile errors and memory related errors on many platforms.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4.1 and CIAO-0.4.2
+======================================================
+
+. Overall
+ - Support for g++ 3.4.1.
+ - Support added for latest HP aCC compiler.
+
+. CCM Deployment and Configuration specification has largely been
+ implemented. The implementation is called "DAnCE", the Deployment
+ and Configuration Engine. For more information about DAnCE, and a
+ list of supported features, please refer to
+ $CIAO_ROOT/docs/releasenotes/dance.html.
+
+. CIDL compiler
+ . Added missing generation of servant code for operations and
+ attributes of ancestors of interfaces supported and used as ports.
+ . Added missing generation of factory operation(s) from inherited
+ home(s).
+ . Added support for "uses multiple" in generated code.
+ . Fixed bugs in generation of inherited: [Bug 1800]
+ home operations
+ attribute operations
+ port operations
+ home factory operations
+ supported operations
+ . Added automatic registration of value factories for event
+ consumers.
+ . Added support for emits-related navigation.
+ . Fixed bug with multiple facets that provide the same interface.
+ . Implemented get_all_facets() and get_all_consumers() navigation
+ methods.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.4 and CIAO-0.4.1
+====================================================
+
+CIAO
+----
+
+. Added support for statically configuring an assembly. Please see
+ $CIAO_ROOT/docs/static_toc_ciao.html for details.
+
+CIDL:
+-----
+. Fixed incorrect generation of ACE environment macros in servant glue
+ code operations.
+
+. Fixed incorrect code generation in the body of a servant operation
+ that delegates to the executor class.
+
+. Added support for attributes in facets and supported
+ interfaces.
+
+. Fixed bug in code servant glue code generation when there are
+ multiple nested modules in the IDL and/or CIDL files.
+
+. Added missing code generation of enum type names.
+
+. Fixed a bug in the generation of the scoped name of a local variable
+ which is a _var of an executor interface for a facet. These types
+ are required by the CCM spec to be generated in the same scope as
+ the interface that underlies the facet.
+
+. Fixed a bug in the generation of *S.h file includes corresponding to
+ IDL files included in the CIDL file.
+
+. Added ACE style Makefiles.
+
+. Added support for bounded strings
+
+MPC
+===
+. Removed all of the project type specific and unnecessary keywords.
+
+. Changed the defaulting rules for idl files (generated source files
+ will be automatically added even if idl files are explicitly
+ listed).
+
+. The makefiles generated by the gnuace type are now named GNUmakefile
+ instead of Makefile.
+
+. The IDL_Files section is no longer a built-in MPC type. It is a
+ custom build type defined in taoidldefaults.mpb.
+
+. Added support for Borland Makefiles that aren't tied to ACE_wrappers
+ (the bmake project type).
+
+. Added wild-cards to the default.rel file. Now, environment
+ variables that end in _ROOT are automatically considered as if they
+ were used with the -relative option.
+
+. Added an environment variable,
+ MPC_DEPENDENCY_COMBINED_STATIC_LIBRARY, to force MPC to put
+ inter-project dependencies in static vc6 and vc71 workspaces.
+
+. Added an html project type (originally by Justin Michel) to aid in
+ the debugging of mpc files.
+
+. Added a new keyword, pure_libs, that is put into a project
+ unmodified (unlike the libs and lit_libs keywords).
+
+. The behavior obtained through the use of the -hierarchy option is
+ now the default for all "make" based project types. This includes
+ borland, bmake, gnuace, make and nmake.
+
+. Added support for referencing workspace files (.mwc) from within
+ other workspaces.
+
+. Added an option, -genins, that causes MPC to generate .ins files
+ that can be used with prj_install.pl. This will help users install
+ portions of their projects into alternate directories.
+
+. Modified the gnuace workspace output to be based on directory
+ recursion instead of having inter-project dependencies built into
+ each workspace level GNUmakefile.
+
+. Added a new keyword, dependent, for use within a Define_Custom that
+ causes MPC to add a dependency to generated files upon the custom
+ command.
+
+. Assignments within a 'specific' section that are not recognized MPC
+ keywords are assumed to be template value overrides (similar to
+ using the -value_template option).
+
+. Partial support for Visual SlickEdit has been added.
+
+. Various bug fixes and optimizations have been added as well.
+
+
+USER VISIBLE CHANGES BETWEEN CIAO-0.3.6 and CIAO-0.4
+====================================================
+
+. Added Makefiles to build the ciao and tools subdirs by default.
+
+. The suport for the following IDL features have been added to the
+ CIDL since the last beta
+
+ - exception (exception declaration and raises() specification)
+ - valuetype
+ - enum
+ - const declaration
+ - const expression and literals
+ - native
+ - home finder
+ - oneway operation
+ - readonly attribute
+ - type declaration inside interfaces, valuetypes
+ - union
+
+ CIDL doesn't yet support the following features
+
+ - Complete error detection and recovery
+ - Attribute exception specification
+ - Array
+ - Bounded sequence
+ - Fixed type
+ - Floating-point and Fixed-point constant expressions & literal.
+
+ though we plan to add this support over the next several months,
+ depending on user/sponsor needs.
diff --git a/modules/CIAO/PROBLEM-REPORT-FORM b/modules/CIAO/PROBLEM-REPORT-FORM
new file mode 100644
index 00000000000..181e00f306d
--- /dev/null
+++ b/modules/CIAO/PROBLEM-REPORT-FORM
@@ -0,0 +1,95 @@
+[Please use the PRF form below to submit bug reports, problem
+ reports, etc., to the CIAO developers and interested users.
+ Send to ciao-users@cs.wustl.edu. If you are using OCI or PrismTech's
+ versions of CIAO do not send bugs to this mailing list, but
+ instead contact those companies for support. Please also send your
+ PRF as plain ASCII text, _not_ uuencoded or as an attachment.
+
+ We prefer that all bug reports be submitted through our bug tracking
+ system. See $ACE_ROOT/docs/usage-bugzilla.html for more information
+ about how to do this. If you are unsure as to whether your problem
+ is a real bug or not then please submit your question to the mailing
+ list using the following form. Not using the problem report form
+ will make it harder or impossible to identify the problem, and in
+ many cases we will be unable to help at all. Also please try to
+ browse bugzilla and the ChangeLog files to find out if your problem
+ has been solved in a more recent version of CIAO.
+
+ To ensure that you see responses, please do one of the following:
+
+ 1) Subscribe to the ciao-users mail list, by sending email with
+ contents "subscribe ciao-users" to majordomo@cs.wustl.edu.
+
+ 2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
+
+ Replace/remove all the explanatory text in brackets before mailing.
+
+ Please send this form as ASCII text only. Do _not_ send it as an
+ attachment, or as tar'ed, compressed and/or uuencoded text. And
+ limit line lengths to less than 80 characters.
+
+ PLEASE make your Subject: line as descriptive as possible.
+ Subjects like "CIAO bug" or "bug report" are not helpful!
+ Also, do _not_ include the word "help" in the Subject!]
+
+ When including your config.h and platform_macros.GNU files as requested
+ below, only include the contents if you use the recommended method of
+ including the platform-specific file in your file. If you use a link
+ to the platform-specific file, simply state which one - DO NOT include
+ an entire platform-specific configuration file in the form.
+
+8<----------8<----------8<----------8<----------8<----------8<----------8<----
+
+To: ciao-users@cs.wustl.edu
+Subject: [area]: [synopsis]
+
+ CIAO VERSION: 0.5.6
+ TAO VERSION : 1.5.6
+ ACE VERSION : 5.5.6
+
+ HOST MACHINE and OPERATING SYSTEM:
+ If on Windows based OS's, which version of WINSOCK do you
+ use?:
+
+ TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
+ COMPILER NAME AND VERSION (AND PATCHLEVEL):
+
+ THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
+ specific file, simply state which one]:
+
+ THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
+ use a link to a platform-specific file, simply state which one
+ (unless this isn't used in this case, e.g., with Microsoft Visual
+ C++)]:
+
+ CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
+ (used by MPC when you generate your own makefiles):
+
+ AREA/CLASS/EXAMPLE AFFECTED:
+[What example failed? What module failed to compile?]
+
+ DOES THE PROBLEM AFFECT:
+ COMPILATION?
+ If so, what do your $ACE_ROOT/ace/config.h and
+ $ACE_ROOT/include/makeinclude/platform_macros.GNU contain?
+ LINKING?
+ On Unix systems, did you run make realclean first?
+ EXECUTION?
+ OTHER (please specify)?
+[Please indicate whether ACE/TAO/CIAO, your application, or both are affected.]
+
+ SYNOPSIS:
+[Brief description of the problem]
+
+ DESCRIPTION:
+[Detailed description of problem. Don't just say "<blah>
+doesn't work, here's a fix," explain what your program does
+to get to the <blah> state. ]
+
+ REPEAT BY:
+[What you did to get the error; include test program or session
+transcript if at all possible. ]
+
+ SAMPLE FIX/WORKAROUND:
+[If available ]
+
diff --git a/modules/CIAO/RACE/Controller/Component/Controller.cidl b/modules/CIAO/RACE/Controller/Component/Controller.cidl
new file mode 100644
index 00000000000..0122563c69a
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller.cidl
@@ -0,0 +1,28 @@
+// $Id$
+#ifndef RACE_CONTROLLER_CIDL
+#define RACE_CONTROLLER_CIDL
+
+/*
+ * @file Controller.cidl
+ * @brief This file contains the Controller component implementation defination.
+ */
+
+#include "Controller.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session Controller_Impl
+ {
+ home executor Controller_Home_Exec
+ {
+ implements Controller_Home;
+ manages Controller_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_CONTROLLER_CIDL */
diff --git a/modules/CIAO/RACE/Controller/Component/Controller.idl b/modules/CIAO/RACE/Controller/Component/Controller.idl
new file mode 100644
index 00000000000..3d2959995df
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller.idl
@@ -0,0 +1,64 @@
+// $Id$
+
+#ifndef RACE_CONTROLLER_IDL
+#define RACE_CONTROLLER_IDL
+
+/**
+ * @file Controller.idl
+ *
+ * @brief Controller Component of RACE.
+ *
+ * This file declares a Controller of the RACE framework.
+ *
+ * @author Nishanth Shankaran <nshankar@dre.vanderbilt.edu>
+ */
+
+#include <Components.idl>
+#include "ciao/Deployment_Target_Data.idl"
+#include "DAnCE/TargetManager/TargetManagerExt.idl"
+
+/**
+ * @module CIAO
+ * @brief The CIAO module.
+ */
+module CIAO
+{
+ module RACE
+ {
+
+ /**
+ * @interface Trigger
+ * @brief This interface is used to start and stop
+ * the feedback loop of the controller.
+ */
+ interface Trigger
+ {
+ oneway void start ();
+
+ oneway void stop ();
+ };
+
+ /**
+ * @component Controller
+ * @brief The Controller component of RACE.
+ */
+
+ component Controller supports Trigger
+ {
+ uses TargetManagerExt target_mgr_ext;
+ uses ::Deployment::TargetManager targer_mgr;
+
+ /// @todo Need to integrate the receptacle for the BDC facet into
+ /// the controller.
+ // uses BDC_QoS bdc;
+
+ /// The sampling period of the controller.
+ readonly attribute double sampling_period;
+ };
+
+ home Controller_Home manages Controller
+ {
+ };
+ };
+};
+#endif /* RACE_CONTROLLER_IDL */
diff --git a/modules/CIAO/RACE/Controller/Component/Controller.mpc b/modules/CIAO/RACE/Controller/Component/Controller.mpc
new file mode 100644
index 00000000000..aa1a77e0495
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller.mpc
@@ -0,0 +1,64 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl Controller"
+
+project(Controller_stub): ciao_deployment_stub {
+
+ after += CIAO_TargetManager_stub
+ sharedname = Controller_stub
+ libs += TargetManager_stub NodeManager_stub
+ idlflags += -Wb,stub_export_macro=CONTROLLER_STUB_Export \
+ -Wb,stub_export_include=Controller_stub_export.h \
+ -Wb,skel_export_macro=CONTROLLER_SVNT_Export \
+ -Wb,skel_export_include=Controller_svnt_export.h
+ dynamicflags = CONTROLLER_STUB_BUILD_DLL
+
+ IDL_Files {
+ Controller.idl
+ }
+
+ Source_Files {
+ ControllerC.cpp
+ }
+}
+
+project(Controller_svnt) : ciao_servant_dnc {
+ after += Controller_stub CIAO_TargetManager_svnt
+ sharedname = Controller_svnt
+ libs += Controller_stub TargetManager_stub TargetManager_svnt NodeManager_stub
+
+ idlflags += -Wb,export_macro=CONTROLLER_SVNT_Export \
+ -Wb,export_include=Controller_svnt_export.h
+ dynamicflags = CONTROLLER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Controller.cidl
+ }
+
+ IDL_Files {
+ ControllerE.idl
+ }
+
+ Source_Files {
+ ControllerEC.cpp
+ ControllerS.cpp
+ Controller_svnt.cpp
+ }
+}
+
+
+project(Controller_exec) : ciao_component_dnc {
+ after += Controller_svnt
+ sharedname = Controller_exec
+ libs += Controller_stub Controller_svnt TargetManager_stub TargetManager_svnt NodeManager_stub
+
+ idlflags += -Wb,export_macro=CONTROLLER_EXEC_Export \
+ -Wb,export_include=Controller_exec_export.h
+ dynamicflags = CONTROLLER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Controller_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Controller/Component/Controller_exec.cpp b/modules/CIAO/RACE/Controller/Component/Controller_exec.cpp
new file mode 100644
index 00000000000..1606e03a867
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller_exec.cpp
@@ -0,0 +1,160 @@
+// $Id$
+#include "Controller_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Controller_Impl
+ {
+ Controller_exec_i::Controller_exec_i (void)
+ {
+ }
+
+ Controller_exec_i::~Controller_exec_i (void)
+ {
+ }
+
+ // Supported operations.
+ void
+ Controller_exec_i::start ()
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+ {}
+
+ void
+ Controller_exec_i::stop ()
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+ {}
+
+ // Attribute operations.
+
+ ::CORBA::Double
+ Controller_exec_i::sampling_period ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return 0.0;
+ }
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ void
+ Controller_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Controller_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Controller_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Controller_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Controller_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Controller_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Controller_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: Controller_Home_exec_i
+ //==================================================================
+
+ Controller_Home_exec_i::Controller_Home_exec_i (void)
+ {
+ }
+
+ Controller_Home_exec_i::~Controller_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ Controller_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Controller_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" CONTROLLER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_Controller_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Controller_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/RACE/Controller/Component/Controller_exec.h b/modules/CIAO/RACE/Controller/Component/Controller_exec.h
new file mode 100644
index 00000000000..def356fef65
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller_exec.h
@@ -0,0 +1,120 @@
+// $Id$
+#ifndef CIAO_CONTROLLER_EXEC_H
+#define CIAO_CONTROLLER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Controller_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Controller_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Controller_Impl
+ {
+ class CONTROLLER_EXEC_Export Controller_exec_i
+ : public virtual Controller_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Controller_exec_i (void);
+ virtual ~Controller_exec_i (void);
+
+ // Supported operations.
+ virtual void start ()
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ virtual void stop ()
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ // Attribute operations.
+ virtual ::CORBA::Double
+ sampling_period ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Controller_Context *context_;
+ };
+
+ class CONTROLLER_EXEC_Export Controller_Home_exec_i
+ : public virtual Controller_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Controller_Home_exec_i (void);
+ virtual ~Controller_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" CONTROLLER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_Controller_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONTROLLER_EXEC_H */
diff --git a/modules/CIAO/RACE/Controller/Component/Controller_exec_export.h b/modules/CIAO/RACE/Controller/Component/Controller_exec_export.h
new file mode 100644
index 00000000000..080ecb25a44
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CONTROLLER_EXEC
+// ------------------------------
+#ifndef CONTROLLER_EXEC_EXPORT_H
+#define CONTROLLER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CONTROLLER_EXEC_HAS_DLL)
+# define CONTROLLER_EXEC_HAS_DLL 1
+#endif /* ! CONTROLLER_EXEC_HAS_DLL */
+
+#if defined (CONTROLLER_EXEC_HAS_DLL) && (CONTROLLER_EXEC_HAS_DLL == 1)
+# if defined (CONTROLLER_EXEC_BUILD_DLL)
+# define CONTROLLER_EXEC_Export ACE_Proper_Export_Flag
+# define CONTROLLER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CONTROLLER_EXEC_BUILD_DLL */
+# define CONTROLLER_EXEC_Export ACE_Proper_Import_Flag
+# define CONTROLLER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CONTROLLER_EXEC_BUILD_DLL */
+#else /* CONTROLLER_EXEC_HAS_DLL == 1 */
+# define CONTROLLER_EXEC_Export
+# define CONTROLLER_EXEC_SINGLETON_DECLARATION(T)
+# define CONTROLLER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CONTROLLER_EXEC_HAS_DLL == 1 */
+
+// Set CONTROLLER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CONTROLLER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CONTROLLER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CONTROLLER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CONTROLLER_EXEC_NTRACE */
+
+#if (CONTROLLER_EXEC_NTRACE == 1)
+# define CONTROLLER_EXEC_TRACE(X)
+#else /* (CONTROLLER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CONTROLLER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CONTROLLER_EXEC_NTRACE == 1) */
+
+#endif /* CONTROLLER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Controller/Component/Controller_stub_export.h b/modules/CIAO/RACE/Controller/Component/Controller_stub_export.h
new file mode 100644
index 00000000000..65a430401a8
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CONTROLLER_STUB
+// ------------------------------
+#ifndef CONTROLLER_STUB_EXPORT_H
+#define CONTROLLER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CONTROLLER_STUB_HAS_DLL)
+# define CONTROLLER_STUB_HAS_DLL 1
+#endif /* ! CONTROLLER_STUB_HAS_DLL */
+
+#if defined (CONTROLLER_STUB_HAS_DLL) && (CONTROLLER_STUB_HAS_DLL == 1)
+# if defined (CONTROLLER_STUB_BUILD_DLL)
+# define CONTROLLER_STUB_Export ACE_Proper_Export_Flag
+# define CONTROLLER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CONTROLLER_STUB_BUILD_DLL */
+# define CONTROLLER_STUB_Export ACE_Proper_Import_Flag
+# define CONTROLLER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CONTROLLER_STUB_BUILD_DLL */
+#else /* CONTROLLER_STUB_HAS_DLL == 1 */
+# define CONTROLLER_STUB_Export
+# define CONTROLLER_STUB_SINGLETON_DECLARATION(T)
+# define CONTROLLER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CONTROLLER_STUB_HAS_DLL == 1 */
+
+// Set CONTROLLER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CONTROLLER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CONTROLLER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CONTROLLER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CONTROLLER_STUB_NTRACE */
+
+#if (CONTROLLER_STUB_NTRACE == 1)
+# define CONTROLLER_STUB_TRACE(X)
+#else /* (CONTROLLER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CONTROLLER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CONTROLLER_STUB_NTRACE == 1) */
+
+#endif /* CONTROLLER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Controller/Component/Controller_svnt_export.h b/modules/CIAO/RACE/Controller/Component/Controller_svnt_export.h
new file mode 100644
index 00000000000..d5e7c6aa42d
--- /dev/null
+++ b/modules/CIAO/RACE/Controller/Component/Controller_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CONTROLLER_SVNT
+// ------------------------------
+#ifndef CONTROLLER_SVNT_EXPORT_H
+#define CONTROLLER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CONTROLLER_SVNT_HAS_DLL)
+# define CONTROLLER_SVNT_HAS_DLL 1
+#endif /* ! CONTROLLER_SVNT_HAS_DLL */
+
+#if defined (CONTROLLER_SVNT_HAS_DLL) && (CONTROLLER_SVNT_HAS_DLL == 1)
+# if defined (CONTROLLER_SVNT_BUILD_DLL)
+# define CONTROLLER_SVNT_Export ACE_Proper_Export_Flag
+# define CONTROLLER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CONTROLLER_SVNT_BUILD_DLL */
+# define CONTROLLER_SVNT_Export ACE_Proper_Import_Flag
+# define CONTROLLER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CONTROLLER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CONTROLLER_SVNT_BUILD_DLL */
+#else /* CONTROLLER_SVNT_HAS_DLL == 1 */
+# define CONTROLLER_SVNT_Export
+# define CONTROLLER_SVNT_SINGLETON_DECLARATION(T)
+# define CONTROLLER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CONTROLLER_SVNT_HAS_DLL == 1 */
+
+// Set CONTROLLER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CONTROLLER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CONTROLLER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CONTROLLER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CONTROLLER_SVNT_NTRACE */
+
+#if (CONTROLLER_SVNT_NTRACE == 1)
+# define CONTROLLER_SVNT_TRACE(X)
+#else /* (CONTROLLER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CONTROLLER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CONTROLLER_SVNT_NTRACE == 1) */
+
+#endif /* CONTROLLER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.idl b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.idl
new file mode 100644
index 00000000000..b1c3f7f0ddb
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.idl
@@ -0,0 +1,21 @@
+//$Id$
+//Input_Adapter.idl
+
+#ifndef RACE_INPUT_ADAPTER_IDL
+#define RACE_INPUT_ADAPTER_IDL
+
+#include <Components.idl>
+#include "../../Plan_Analyzer/Interface/PlanIngress.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ component Input_Adapter
+ {
+ uses PlanIngress ingress;
+ };
+ };
+};
+
+#endif /* RACE_INPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.mpc b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.mpc
new file mode 100644
index 00000000000..8ef8d7bf6d8
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter.mpc
@@ -0,0 +1,59 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Input_Adapter"
+
+project(Input_Adapter_stub): ciao_deployment_stub {
+
+ after += Plan_Analyzer_Interface_stub
+ sharedname = Input_Adapter_stub
+ idlflags += -Wb,stub_export_macro=INPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=Input_Adapter_stub_export.h \
+ -Wb,skel_export_macro=INPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=Input_Adapter_svnt_export.h
+ dynamicflags = INPUT_ADAPTER_STUB_BUILD_DLL
+ libs += Plan_Analyzer_Interface_stub
+
+ IDL_Files {
+ Input_Adapter.idl
+ }
+
+ Source_Files {
+ Input_AdapterC.cpp
+ }
+
+ Header_Files {
+ Input_AdapterC.h
+ }
+
+ Inline_Files {
+ Input_AdapterC.inl
+ }
+}
+
+project(Input_Adapter_svnt) : ciao_servant_dnc {
+
+ after += Input_Adapter_stub
+ sharedname = Input_Adapter_svnt
+ libs += Input_Adapter_stub Plan_Analyzer_Interface_stub
+
+ idlflags += -Wb,stub_export_macro=INPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=Input_Adapter_stub_export.h \
+ -Wb,skel_export_macro=INPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=Input_Adapter_svnt_export.h
+ dynamicflags = INPUT_ADAPTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Input_Adapter.idl
+ }
+
+ Source_Files {
+ Input_AdapterS.cpp
+ }
+
+ Header_Files {
+ Input_AdapterS.h
+ }
+
+ Inline_Files {
+ Input_AdapterS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_stub_export.h b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_stub_export.h
new file mode 100644
index 00000000000..546b8e64659
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INPUT_ADAPTER_STUB
+// ------------------------------
+#ifndef INPUT_ADAPTER_STUB_EXPORT_H
+#define INPUT_ADAPTER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INPUT_ADAPTER_STUB_HAS_DLL)
+# define INPUT_ADAPTER_STUB_HAS_DLL 1
+#endif /* ! INPUT_ADAPTER_STUB_HAS_DLL */
+
+#if defined (INPUT_ADAPTER_STUB_HAS_DLL) && (INPUT_ADAPTER_STUB_HAS_DLL == 1)
+# if defined (INPUT_ADAPTER_STUB_BUILD_DLL)
+# define INPUT_ADAPTER_STUB_Export ACE_Proper_Export_Flag
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INPUT_ADAPTER_STUB_BUILD_DLL */
+# define INPUT_ADAPTER_STUB_Export ACE_Proper_Import_Flag
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INPUT_ADAPTER_STUB_BUILD_DLL */
+#else /* INPUT_ADAPTER_STUB_HAS_DLL == 1 */
+# define INPUT_ADAPTER_STUB_Export
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T)
+# define INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INPUT_ADAPTER_STUB_HAS_DLL == 1 */
+
+// Set INPUT_ADAPTER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INPUT_ADAPTER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INPUT_ADAPTER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INPUT_ADAPTER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INPUT_ADAPTER_STUB_NTRACE */
+
+#if (INPUT_ADAPTER_STUB_NTRACE == 1)
+# define INPUT_ADAPTER_STUB_TRACE(X)
+#else /* (INPUT_ADAPTER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INPUT_ADAPTER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INPUT_ADAPTER_STUB_NTRACE == 1) */
+
+#endif /* INPUT_ADAPTER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_svnt_export.h b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_svnt_export.h
new file mode 100644
index 00000000000..0d7bf2fc787
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Base/Input_Adapter_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INPUT_ADAPTER_SVNT
+// ------------------------------
+#ifndef INPUT_ADAPTER_SVNT_EXPORT_H
+#define INPUT_ADAPTER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INPUT_ADAPTER_SVNT_HAS_DLL)
+# define INPUT_ADAPTER_SVNT_HAS_DLL 1
+#endif /* ! INPUT_ADAPTER_SVNT_HAS_DLL */
+
+#if defined (INPUT_ADAPTER_SVNT_HAS_DLL) && (INPUT_ADAPTER_SVNT_HAS_DLL == 1)
+# if defined (INPUT_ADAPTER_SVNT_BUILD_DLL)
+# define INPUT_ADAPTER_SVNT_Export ACE_Proper_Export_Flag
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INPUT_ADAPTER_SVNT_BUILD_DLL */
+# define INPUT_ADAPTER_SVNT_Export ACE_Proper_Import_Flag
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INPUT_ADAPTER_SVNT_BUILD_DLL */
+#else /* INPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+# define INPUT_ADAPTER_SVNT_Export
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T)
+# define INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+
+// Set INPUT_ADAPTER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INPUT_ADAPTER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INPUT_ADAPTER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INPUT_ADAPTER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INPUT_ADAPTER_SVNT_NTRACE */
+
+#if (INPUT_ADAPTER_SVNT_NTRACE == 1)
+# define INPUT_ADAPTER_SVNT_TRACE(X)
+#else /* (INPUT_ADAPTER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INPUT_ADAPTER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INPUT_ADAPTER_SVNT_NTRACE == 1) */
+
+#endif /* INPUT_ADAPTER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.cidl b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.cidl
new file mode 100644
index 00000000000..2bbbe6037c6
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.cidl
@@ -0,0 +1,25 @@
+//$Id$
+//Interactive_Input_Adapter.cidl
+
+#ifndef RACE_INTERACTIVE_INPUT_ADAPTER_CIDL
+#define RACE_INTERACTIVE_INPUT_ADAPTER_CIDL
+
+#include "Interactive_Input_Adapter.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session Interactive_Input_Adapter_Impl
+ {
+ home executor Interactive_Input_Adapter_Home_Exec
+ {
+ implements RACE::Interactive_Input_Adapter_Home;
+ manages Interactive_Input_Adapter_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_INTERACTIVE_INPUT_ADAPTER_CIDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.idl b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.idl
new file mode 100644
index 00000000000..d027b608c8b
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.idl
@@ -0,0 +1,22 @@
+//$Id$
+#ifndef RACE_INTERACTIVE_INPUT_ADAPTER_IDL
+#define RACE_INTERACTIVE_INPUT_ADAPTER_IDL
+
+#include <Components.idl>
+#include "../Base/Input_Adapter.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ component Interactive_Input_Adapter : Input_Adapter
+ {
+ };
+
+ home Interactive_Input_Adapter_Home manages Interactive_Input_Adapter
+ {
+ };
+ };
+};
+
+#endif /* RACE_INTERACTIVE_INPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
new file mode 100644
index 00000000000..2df82ac4a2f
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter.mpc
@@ -0,0 +1,95 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+
+project(Interactive_Input_Adapter_stub): ciao_deployment_stub {
+ after += Input_Adapter_stub
+ sharedname = Interactive_Input_Adapter_stub
+ idlflags += -Wb,stub_export_macro=INTERACTIVE_INPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=Interactive_Input_Adapter_stub_export.h \
+ -Wb,skel_export_macro=INTERACTIVE_INPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=Interactive_Input_Adapter_svnt_export.h
+ dynamicflags = INTERACTIVE_INPUT_ADAPTER_STUB_BUILD_DLL
+ libs += Input_Adapter_stub \
+ Plan_Analyzer_Interface_stub
+
+ IDL_Files {
+ Interactive_Input_Adapter.idl
+ }
+
+ Source_Files {
+ Interactive_Input_AdapterC.cpp
+ }
+
+ Header_Files {
+ Interactive_Input_AdapterC.h
+ }
+
+ Inline_Files {
+ Interactive_Input_AdapterC.inl
+ }
+}
+
+project(Interactive_Input_Adapter_svnt) : ciao_servant_dnc {
+ after += Interactive_Input_Adapter_stub \
+ Input_Adapter_svnt
+ sharedname = Interactive_Input_Adapter_svnt
+ libs += Interactive_Input_Adapter_stub \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub
+
+ idlflags += -Wb,export_macro=INTERACTIVE_INPUT_ADAPTER_SVNT_Export \
+ -Wb,export_include=Interactive_Input_Adapter_svnt_export.h
+
+ dynamicflags = INTERACTIVE_INPUT_ADAPTER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Interactive_Input_Adapter.cidl
+ }
+
+ IDL_Files {
+ Interactive_Input_AdapterE.idl
+ }
+
+ Source_Files {
+ Interactive_Input_AdapterEC.cpp
+ Interactive_Input_AdapterS.cpp
+ Interactive_Input_Adapter_svnt.cpp
+ }
+
+ Header_Files {
+ Interactive_Input_AdapterEC.h
+ Interactive_Input_AdapterS.h
+ Interactive_Input_Adapter_svnt.h
+ }
+
+ Inline_Files {
+ Interactive_Input_AdapterEC.inl
+ Interactive_Input_AdapterS.inl
+ Interactive_Input_Adapter_svnt.inl
+ }
+}
+
+
+project(Interactive_Input_Adapter_exec) : ciao_component_dnc, ciao_config_handlers {
+ after += Interactive_Input_Adapter_svnt XSC_Config_Handlers
+ sharedname = Interactive_Input_Adapter_exec
+ libs += Interactive_Input_Adapter_stub \
+ Interactive_Input_Adapter_svnt \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub \
+ XSC_Config_Handlers
+
+ idlflags += -Wb,export_macro=INTERACTIVE_INPUT_ADAPTER_EXEC_Export \
+ -Wb,export_include=Interactive_Input_Adapter_exec_export.h
+ dynamicflags = INTERACTIVE_INPUT_ADAPTER_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ Interactive_Input_Adapter_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.cpp b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.cpp
new file mode 100644
index 00000000000..9d1603361ab
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.cpp
@@ -0,0 +1,167 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Interactive_Input_Adapter_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Interactive_Input_Adapter_Impl
+ {
+ //==================================================================
+ // Component Executor Implementation Class: Interactive_Input_Adapter_exec_i
+ //==================================================================
+
+ Interactive_Input_Adapter_exec_i::Interactive_Input_Adapter_exec_i (void)
+ {
+ }
+
+ Interactive_Input_Adapter_exec_i::~Interactive_Input_Adapter_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ void
+ Interactive_Input_Adapter_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Interactive_Input_Adapter_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Interactive_Input_Adapter_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Interactive_Input_Adapter_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Interactive_Input_Adapter_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Interactive_Input_Adapter_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Interactive_Input_Adapter_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: Interactive_Input_Adapter_Home_exec_i
+ //==================================================================
+
+ Interactive_Input_Adapter_Home_exec_i::Interactive_Input_Adapter_Home_exec_i (void)
+ {
+ }
+
+ Interactive_Input_Adapter_Home_exec_i::~Interactive_Input_Adapter_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ Interactive_Input_Adapter_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Interactive_Input_Adapter_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" INTERACTIVE_INPUT_ADAPTER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createInteractive_Input_Adapter_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Interactive_Input_Adapter_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.h b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.h
new file mode 100644
index 00000000000..d16fbb76110
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec.h
@@ -0,0 +1,132 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_INTERACTIVE_INPUT_ADAPTER_EXEC_H
+#define CIAO_INTERACTIVE_INPUT_ADAPTER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Interactive_Input_Adapter_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Interactive_Input_Adapter_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Interactive_Input_Adapter_Impl
+ {
+ class INTERACTIVE_INPUT_ADAPTER_EXEC_Export Interactive_Input_Adapter_exec_i
+ : public virtual Interactive_Input_Adapter_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Interactive_Input_Adapter_exec_i (void);
+ virtual ~Interactive_Input_Adapter_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Interactive_Input_Adapter_Context *context_;
+ };
+
+ class INTERACTIVE_INPUT_ADAPTER_EXEC_Export Interactive_Input_Adapter_Home_exec_i
+ : public virtual Interactive_Input_Adapter_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Interactive_Input_Adapter_Home_exec_i (void);
+ virtual ~Interactive_Input_Adapter_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" INTERACTIVE_INPUT_ADAPTER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createInteractive_Input_Adapter_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_INTERACTIVE_INPUT_ADAPTER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec_export.h b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec_export.h
new file mode 100644
index 00000000000..147e914cb7c
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INTERACTIVE_INPUT_ADAPTER_EXEC
+// ------------------------------
+#ifndef INTERACTIVE_INPUT_ADAPTER_EXEC_EXPORT_H
+#define INTERACTIVE_INPUT_ADAPTER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL 1
+#endif /* ! INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL */
+
+#if defined (INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL) && (INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL == 1)
+# if defined (INTERACTIVE_INPUT_ADAPTER_EXEC_BUILD_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_Export ACE_Proper_Export_Flag
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INTERACTIVE_INPUT_ADAPTER_EXEC_BUILD_DLL */
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_Export ACE_Proper_Import_Flag
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INTERACTIVE_INPUT_ADAPTER_EXEC_BUILD_DLL */
+#else /* INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL == 1 */
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_Export
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INTERACTIVE_INPUT_ADAPTER_EXEC_HAS_DLL == 1 */
+
+// Set INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE */
+
+#if (INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_TRACE(X)
+#else /* (INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INTERACTIVE_INPUT_ADAPTER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INTERACTIVE_INPUT_ADAPTER_EXEC_NTRACE == 1) */
+
+#endif /* INTERACTIVE_INPUT_ADAPTER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_stub_export.h b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_stub_export.h
new file mode 100644
index 00000000000..381f5d69197
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INTERACTIVE_INPUT_ADAPTER_STUB
+// ------------------------------
+#ifndef INTERACTIVE_INPUT_ADAPTER_STUB_EXPORT_H
+#define INTERACTIVE_INPUT_ADAPTER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL 1
+#endif /* ! INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL */
+
+#if defined (INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL) && (INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL == 1)
+# if defined (INTERACTIVE_INPUT_ADAPTER_STUB_BUILD_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_Export ACE_Proper_Export_Flag
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INTERACTIVE_INPUT_ADAPTER_STUB_BUILD_DLL */
+# define INTERACTIVE_INPUT_ADAPTER_STUB_Export ACE_Proper_Import_Flag
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INTERACTIVE_INPUT_ADAPTER_STUB_BUILD_DLL */
+#else /* INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL == 1 */
+# define INTERACTIVE_INPUT_ADAPTER_STUB_Export
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INTERACTIVE_INPUT_ADAPTER_STUB_HAS_DLL == 1 */
+
+// Set INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE */
+
+#if (INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_STUB_TRACE(X)
+#else /* (INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INTERACTIVE_INPUT_ADAPTER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INTERACTIVE_INPUT_ADAPTER_STUB_NTRACE == 1) */
+
+#endif /* INTERACTIVE_INPUT_ADAPTER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_svnt_export.h b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_svnt_export.h
new file mode 100644
index 00000000000..e50838b8e2f
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/Interactive_Input_Adapter/Interactive_Input_Adapter_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INTERACTIVE_INPUT_ADAPTER_SVNT
+// ------------------------------
+#ifndef INTERACTIVE_INPUT_ADAPTER_SVNT_EXPORT_H
+#define INTERACTIVE_INPUT_ADAPTER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL 1
+#endif /* ! INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL */
+
+#if defined (INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL) && (INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL == 1)
+# if defined (INTERACTIVE_INPUT_ADAPTER_SVNT_BUILD_DLL)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_Export ACE_Proper_Export_Flag
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INTERACTIVE_INPUT_ADAPTER_SVNT_BUILD_DLL */
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_Export ACE_Proper_Import_Flag
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INTERACTIVE_INPUT_ADAPTER_SVNT_BUILD_DLL */
+#else /* INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_Export
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INTERACTIVE_INPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+
+// Set INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE */
+
+#if (INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE == 1)
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_TRACE(X)
+#else /* (INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INTERACTIVE_INPUT_ADAPTER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INTERACTIVE_INPUT_ADAPTER_SVNT_NTRACE == 1) */
+
+#endif /* INTERACTIVE_INPUT_ADAPTER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Injector.cpp b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Injector.cpp
new file mode 100644
index 00000000000..7b22e519922
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Injector.cpp
@@ -0,0 +1,185 @@
+/**
+ * @file Injector.cpp
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+#include "Input_Adapters/LocationUpdater/LocationUpdaterC.h"
+#include "ace/OS.h"
+#include "ace/Get_Opt.h"
+#include "ace/SString.h"
+#include "orbsvcs/CosNamingC.h"
+#include "ace/Auto_Ptr.h"
+
+#include <iostream>
+using namespace std;
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace Injector
+ {
+ const char *package_uri = 0;
+ const char *plan_uri = 0;
+ const char *iia_ior_file = 0;
+ const char *iia_name = "RACE::InteractiveInput";
+
+ bool teardown = false;
+
+ static void
+ usage (const ACE_TCHAR* program)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Usage %s\n")
+ ACE_TEXT ("-d <Flatten deployment plan URI>\n")
+ ACE_TEXT ("-p <Toplevel Package URI>\n")
+ ACE_TEXT ("-t <Teardown plan>\n")
+ ACE_TEXT ("-k <Interactive_Input_Adaptor IOR, "
+ "use naming service if not present\n"),
+ program));
+ }
+
+ static bool
+ parse_args (int argc,
+ ACE_TCHAR *argv[])
+ {
+ ACE_Get_Opt get_opt (argc,
+ argv,
+ ACE_TEXT ("d:p:k:thn:"));
+ int c;
+
+ while ((c = get_opt ()) != EOF)
+ {
+ switch (c)
+ {
+ case 'd':
+ plan_uri = get_opt.opt_arg ();
+ break;
+
+ case 'p':
+ package_uri = get_opt.opt_arg ();
+ break;
+
+ case 'k':
+ iia_ior_file = get_opt.opt_arg ();
+ break;
+
+ case 't':
+ teardown = true;
+ break;
+
+ case 'n':
+ iia_name = get_opt.opt_arg ();
+
+ case 'h':
+ default:
+ usage (argv[0]);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ CORBA::Object_ptr
+ fetch_reference_naming (CORBA::ORB_ptr orb,
+ const ACE_CString &name)
+ {
+ ACE_ERROR ((LM_ERROR, "Resolving via nameservice...\n"));
+ using namespace CosNaming;
+ // Resolve naming service
+ CORBA::Object_var tmp =
+ orb->resolve_initial_references ("NameService");
+
+ NamingContext_var pns =
+ NamingContext::_narrow (tmp.in ());
+
+ Name ns_name;
+ CORBA::ULong i = 0;
+
+ ACE_Tokenizer tok ( name.rep ());
+ tok.delimiter_replace (':', 0);
+ tok.delimiter_replace ('/', 0);
+
+ char *name_element = 0;
+ while ((name_element = tok.next ()) != 0)
+ {
+ ns_name.length (ns_name.length () + 1);
+ ns_name[i].id = CORBA::string_dup (name_element);
+ ++i;
+ }
+
+
+ return pns->resolve (ns_name);
+ }
+
+ static int
+ run_main_implementation (int argc, ACE_TCHAR *argv[])
+ {
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ if (!parse_args (argc, argv))
+ return -1;
+
+
+ // Resolve our input adapter...
+ CORBA::Object_var tmp;
+
+ cout << "resolving: " << iia_ior_file << endl;
+
+ if (iia_ior_file != 0)
+ tmp = orb->string_to_object (iia_ior_file);
+ else // must be a name....
+ tmp = fetch_reference_naming (orb.in (), iia_name);
+
+ CIAO::RACE::LocationUpdater_var iia
+ = CIAO::RACE::LocationUpdater::_narrow (tmp.in ());
+
+ // Create deploy input event.
+ CIAO::RACE::Deploy_Input_var input =
+ new OBV_CIAO::RACE::Deploy_Input;
+
+ input->plan_uri (plan_uri);
+ input->package_uri (package_uri);
+
+ if (teardown)
+ {
+ input->command (::CIAO::RACE::TEARDOWN);
+ }
+ else
+ {
+ input->command (::CIAO::RACE::DEPLOY);
+ }
+
+
+
+ // Get the consumer for the IIA
+ ::CIAO::RACE::Deploy_InputConsumer_var consumer =
+ iia->get_consumer_deployment ();
+
+ // push the event
+ consumer->push_Deploy_Input (input.in ());
+
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) Injector: Unknown exception\n"));
+ return -1;
+ }
+
+ return 0;
+ }
+ }
+ }
+}
+
+int main (int argc, ACE_TCHAR **argv)
+{
+ return CIAO::RACE::Injector::run_main_implementation (argc, argv);
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp
new file mode 100644
index 00000000000..4e72dd5a6c9
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cdp
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>1D2C2C63-CE33-4088-9443-781D080D8857</UUID>
+
+ <implementation id="_73898E70-9FB1-4881-9313-A2DE181EE48E">
+ <name>RT1H_Combined.RA_ComponentImplementations.LocationUpdaterImplementation.LocationUpdaterMonolithicImpl</name>
+ <source/>
+ <artifact>__AD4B52E0-103C-49E2-BE47-29CAE978676F</artifact>
+ <artifact>__E4AF24BF-5A39-46B1-8217-6343D7D53298</artifact>
+ <artifact>__76A0CEFE-E2F7-4BF7-BB91-F309FB5AD33C</artifact>
+ </implementation>
+
+ <instance id="_2BD4D476-2F5B-41CA-A8CF-311084273028">
+ <name>RT1H_Combined.ComponentImplementations.RACE.RACE.LocationUpdater</name>
+ <node>blade36</node>
+ <source/>
+ <implementation>_73898E70-9FB1-4881-9313-A2DE181EE48E</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>LocationUpdater.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>InteractiveAdapter.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>RACE::InteractiveInput</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <artifact id="__AD4B52E0-103C-49E2-BE47-29CAE978676F">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.LocationUpdaterArtifacts.LocationUpdater_stub</name>
+ <source/>
+ <node/>
+ <location>LocationUpdater_stub</location>
+ </artifact>
+
+ <artifact id="__E4AF24BF-5A39-46B1-8217-6343D7D53298">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.LocationUpdaterArtifacts.LocationUpdater_svnt</name>
+ <source/>
+ <node/>
+ <location>LocationUpdater_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_RACE_LocationUpdater_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="__76A0CEFE-E2F7-4BF7-BB91-F309FB5AD33C">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.LocationUpdaterArtifacts.LocationUpdater_exec</name>
+ <source/>
+ <node/>
+ <location>LocationUpdater_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_RACE_LocationUpdater_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl
new file mode 100644
index 00000000000..fce16e1ac29
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.cidl
@@ -0,0 +1,27 @@
+//LOCATION_UPDATING_INPUT_ADAPTER.cidl,v 1.1 spaunov Exp
+//LocationUpdater.cidl
+//Author: Stoyan Paunov
+//$Id$
+
+#ifndef RACE_LOCATION_UPDATING_INPUT_ADAPTER_CIDL
+#define RACE_LOCATION_UPDATING_INPUT_ADAPTER_CIDL
+
+#include "LocationUpdater.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session LocationUpdater_Impl
+ {
+ home executor LocationUpdater_Home_Exec
+ {
+ implements RACE::LocationUpdater_Home;
+ manages LocationUpdater_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_LOCATION_UPDATING_INPUT_ADAPTER_CIDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl
new file mode 100644
index 00000000000..3cc0f26d215
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater.idl
@@ -0,0 +1,34 @@
+//LocationUpdater.idl,v 1.1 spaunov Exp
+//Author: Stoyan Paunov
+//$Id$
+
+#ifndef RACE_LOCATION_UPDATING_INPUT_ADAPTER_IDL
+#define RACE_LOCATION_UPDATING_INPUT_ADAPTER_IDL
+
+#include <Components.idl>
+#include "Input_Adapters/Base/Input_Adapter.idl"
+#include "common/RACE_common.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ eventtype Deploy_Input
+ {
+ public string plan_uri;
+ public string package_uri;
+ public Action command;
+ };
+
+ component LocationUpdater : Input_Adapter
+ {
+ consumes Deploy_Input deployment;
+ };
+
+ home LocationUpdater_Home manages LocationUpdater
+ {
+ };
+ };
+};
+
+#endif /* RACE_LOCATION_UPDATING_INPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat
new file mode 100644
index 00000000000..a5a465169b8
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_deployment.dat
@@ -0,0 +1 @@
+LocationUpdater corbaloc:iiop:localhost:50000/NodeManager
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp
new file mode 100644
index 00000000000..4318902bc32
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.cpp
@@ -0,0 +1,312 @@
+// $Id$
+//Author: Stoyan Paunov
+
+
+#include "LocationUpdater_exec.h"
+#include "ciao/CIAO_common.h"
+#include "Config_Handlers/XML_File_Intf.h"
+#include "Config_Handlers/Package_Handlers/PCD_Handler.h"
+#include "Config_Handlers/Common.h"
+
+#include "DAnCE/RepositoryManager/RepositoryManagerDaemonC.h"
+#include "PlanUpdater.h"
+
+#include <iostream>
+using namespace std;
+
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_LocationUpdater_Impl
+ {
+ //==================================================================
+ // Component Executor Implementation Class:
+ // LocationUpdater_exec_i
+ //==================================================================
+
+ LocationUpdater_exec_i::LocationUpdater_exec_i (void)
+ {
+ }
+
+ LocationUpdater_exec_i::~LocationUpdater_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ void
+ LocationUpdater_exec_i::push_deployment (
+ ::CIAO::RACE::Deploy_Input * ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ bool plan_exists = false;
+
+ try
+ {
+ ACE_Auto_Ptr < ::Deployment::DeploymentPlan > dp;
+ ACE_Auto_Ptr < ::Deployment::PackageConfiguration > pcd;
+
+ if (ev->plan_uri () != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Opening the plan\n"));
+
+ Config_Handlers::XML_File_Intf xfi (ev->plan_uri ());
+
+ dp.reset ( xfi.get_plan ());
+
+ plan_exists = true;
+ }
+ else
+ {
+ dp.reset ( new ::Deployment::DeploymentPlan );
+ }
+
+
+ pcd.reset (new ::Deployment::PackageConfiguration);
+
+ if ((ACE_OS::strcmp (ev->package_uri (), "") != 0))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Opening the package descriptor: :%s:\n",
+ ev->package_uri ()));
+
+ Config_Handlers::Packaging::PCD_Handler::package_config
+ (ev->package_uri (), *pcd);
+ }
+
+ //Get the IOR of the RepoMan from the naming service
+
+ //Obtain a ref to the orb
+ CORBA::ORB_ptr orb = this->context_->_ciao_the_Container ()->the_ORB ();
+
+ //form the path to the RepoMan IOR file
+ ACE_CString RepoMan_ior = ("file://");
+ RepoMan_ior += ACE_OS::getenv ("CIAO_ROOT");
+ RepoMan_ior += "/DAnCE/RepositoryManager/RepositoryManagerDeamon.ior";
+
+ cout << "RepoMan ior file: " << RepoMan_ior.c_str () << endl;
+
+ CORBA::Object_var obj =
+ orb->string_to_object (RepoMan_ior.c_str ());//RM_ior);
+
+ CIAO::RepositoryManagerDaemon_var rm =
+ CIAO::RepositoryManagerDaemon::_narrow (obj.in ());
+
+ if (CORBA::is_nil (rm.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to acquire RepositoryManagerDaemon's objref\n"));
+
+ throw CORBA::INTERNAL ();
+ }
+
+ //now obtian the corresponding PackageConfiguration from
+ //the RepositoryManager
+
+ Deployment::PackageConfiguration_var rmpc;
+
+ try
+ {
+ //retrieve the curresponding PackageConfiguration
+ //from the RepoMan
+ rmpc = rm->findPackageByUUID (pcd->UUID);
+
+ ACE_DEBUG ((LM_INFO,
+ "The package was found!\nUUID: %s\n",
+ rmpc->UUID));
+ }
+ catch (Deployment::NoSuchName &)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error! Package not found! Location update failed!\n"));
+
+ throw CORBA::INTERNAL ();
+
+ }
+ catch (CORBA::Exception &)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error! General exception! Location update failed!\n"));
+
+ throw CORBA::INTERNAL ();
+ }
+
+ //now update the plan
+ if (plan_exists)
+ {
+ cout << "Updating plan ..." << endl;
+
+ PlanUpdater updater (*dp, *rmpc);
+ if (!updater.Visit ())
+ ACE_ERROR ((LM_ERROR,
+ "Partial location update error possible!\n"));
+
+ cout << "Updating plan ... DONE!" << endl;
+
+ size_t add_len = dp->artifact.length ();
+
+ cout << "Updated location: \n";
+ for (size_t i = 0; i < add_len; ++i)
+ {
+ Deployment::ArtifactDeploymentDescription& add = dp->artifact[i];
+ if (ACE_OS::strstr (add.location[0], "http://"))
+ cout << add.location[0] << endl;
+ }
+ }
+ //Done with the location updating
+
+ //do not call the plan analyzer just yet
+ return;
+
+ //creat an action sequence and populate it
+ ::CIAO::RACE::Plan_Actions plan_action_seq;
+
+ /// Create a Plan_Action_seq structure of length 1.
+ plan_action_seq.length (1);
+
+ /// Now populate the Plan_Action_seq structure.
+ plan_action_seq [0].command = ev->command ();
+ plan_action_seq [0].plan = *dp;
+ plan_action_seq [0].package = *pcd;
+
+ /// Now invoke the plan_analyzer.
+ this->context_->get_connection_ingress ()
+ ->analyze_plan (plan_action_seq);
+ }
+ catch (CIAO::Config_Handlers::Config_Error &ex)
+ {
+ ACE_ERROR ((LM_ERROR, "Config_Error exception caught in "
+ "LocationUpdater::push_deployment: %s, %s\n",
+ ex.error_.c_str (),
+ ex.name_.c_str ()));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "Exception caught in push_deployment\n"));
+ }
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ LocationUpdater_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ LocationUpdater_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ LocationUpdater_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ LocationUpdater_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ LocationUpdater_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ LocationUpdater_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ LocationUpdater_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: LocationUpdater_Home_exec_i
+ //==================================================================
+
+ LocationUpdater_Home_exec_i::LocationUpdater_Home_exec_i (void)
+ {
+ }
+
+ LocationUpdater_Home_exec_i::~LocationUpdater_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ LocationUpdater_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ LocationUpdater_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" LOCATIONUPDATER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_LocationUpdater_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ LocationUpdater_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h
new file mode 100644
index 00000000000..e3eb2f92fb2
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec.h
@@ -0,0 +1,121 @@
+// $Id$
+//Author: Stoyan Paunov
+
+
+#ifndef CIAO_LOCATIONUPDATER_EXEC_H
+#define CIAO_LOCATIONUPDATER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "LocationUpdater_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "LocationUpdater_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_LocationUpdater_Impl
+ {
+ class LOCATIONUPDATER_EXEC_Export LocationUpdater_exec_i
+ : public virtual LocationUpdater_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ LocationUpdater_exec_i (void);
+ virtual ~LocationUpdater_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ virtual void
+ push_deployment (
+ ::CIAO::RACE::Deploy_Input *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ LocationUpdater_Context *context_;
+ };
+
+ class LOCATIONUPDATER_EXEC_Export LocationUpdater_Home_exec_i
+ : public virtual LocationUpdater_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ LocationUpdater_Home_exec_i (void);
+ virtual ~LocationUpdater_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" LOCATIONUPDATER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_LocationUpdater_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_LOCATIONUPDATER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h
new file mode 100644
index 00000000000..d24b1fc3538
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl LOCATIONUPDATER_EXEC
+// ------------------------------
+#ifndef LOCATIONUPDATER_EXEC_EXPORT_H
+#define LOCATIONUPDATER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (LOCATIONUPDATER_EXEC_HAS_DLL)
+# define LOCATIONUPDATER_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && LOCATIONUPDATER_EXEC_HAS_DLL */
+
+#if !defined (LOCATIONUPDATER_EXEC_HAS_DLL)
+# define LOCATIONUPDATER_EXEC_HAS_DLL 1
+#endif /* ! LOCATIONUPDATER_EXEC_HAS_DLL */
+
+#if defined (LOCATIONUPDATER_EXEC_HAS_DLL) && (LOCATIONUPDATER_EXEC_HAS_DLL == 1)
+# if defined (LOCATIONUPDATER_EXEC_BUILD_DLL)
+# define LOCATIONUPDATER_EXEC_Export ACE_Proper_Export_Flag
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* LOCATIONUPDATER_EXEC_BUILD_DLL */
+# define LOCATIONUPDATER_EXEC_Export ACE_Proper_Import_Flag
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* LOCATIONUPDATER_EXEC_BUILD_DLL */
+#else /* LOCATIONUPDATER_EXEC_HAS_DLL == 1 */
+# define LOCATIONUPDATER_EXEC_Export
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARATION(T)
+# define LOCATIONUPDATER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* LOCATIONUPDATER_EXEC_HAS_DLL == 1 */
+
+// Set LOCATIONUPDATER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (LOCATIONUPDATER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define LOCATIONUPDATER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define LOCATIONUPDATER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !LOCATIONUPDATER_EXEC_NTRACE */
+
+#if (LOCATIONUPDATER_EXEC_NTRACE == 1)
+# define LOCATIONUPDATER_EXEC_TRACE(X)
+#else /* (LOCATIONUPDATER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define LOCATIONUPDATER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (LOCATIONUPDATER_EXEC_NTRACE == 1) */
+
+#endif /* LOCATIONUPDATER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h
new file mode 100644
index 00000000000..a7318989a5f
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl LOCATIONUPDATER_STUB
+// ------------------------------
+#ifndef LOCATIONUPDATER_STUB_EXPORT_H
+#define LOCATIONUPDATER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (LOCATIONUPDATER_STUB_HAS_DLL)
+# define LOCATIONUPDATER_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && LOCATIONUPDATER_STUB_HAS_DLL */
+
+#if !defined (LOCATIONUPDATER_STUB_HAS_DLL)
+# define LOCATIONUPDATER_STUB_HAS_DLL 1
+#endif /* ! LOCATIONUPDATER_STUB_HAS_DLL */
+
+#if defined (LOCATIONUPDATER_STUB_HAS_DLL) && (LOCATIONUPDATER_STUB_HAS_DLL == 1)
+# if defined (LOCATIONUPDATER_STUB_BUILD_DLL)
+# define LOCATIONUPDATER_STUB_Export ACE_Proper_Export_Flag
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* LOCATIONUPDATER_STUB_BUILD_DLL */
+# define LOCATIONUPDATER_STUB_Export ACE_Proper_Import_Flag
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* LOCATIONUPDATER_STUB_BUILD_DLL */
+#else /* LOCATIONUPDATER_STUB_HAS_DLL == 1 */
+# define LOCATIONUPDATER_STUB_Export
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARATION(T)
+# define LOCATIONUPDATER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* LOCATIONUPDATER_STUB_HAS_DLL == 1 */
+
+// Set LOCATIONUPDATER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (LOCATIONUPDATER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define LOCATIONUPDATER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define LOCATIONUPDATER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !LOCATIONUPDATER_STUB_NTRACE */
+
+#if (LOCATIONUPDATER_STUB_NTRACE == 1)
+# define LOCATIONUPDATER_STUB_TRACE(X)
+#else /* (LOCATIONUPDATER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define LOCATIONUPDATER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (LOCATIONUPDATER_STUB_NTRACE == 1) */
+
+#endif /* LOCATIONUPDATER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h
new file mode 100644
index 00000000000..2bd7f8a87ca
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/LocationUpdater_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl LOCATIONUPDATER_SVNT
+// ------------------------------
+#ifndef LOCATIONUPDATER_SVNT_EXPORT_H
+#define LOCATIONUPDATER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (LOCATIONUPDATER_SVNT_HAS_DLL)
+# define LOCATIONUPDATER_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && LOCATIONUPDATER_SVNT_HAS_DLL */
+
+#if !defined (LOCATIONUPDATER_SVNT_HAS_DLL)
+# define LOCATIONUPDATER_SVNT_HAS_DLL 1
+#endif /* ! LOCATIONUPDATER_SVNT_HAS_DLL */
+
+#if defined (LOCATIONUPDATER_SVNT_HAS_DLL) && (LOCATIONUPDATER_SVNT_HAS_DLL == 1)
+# if defined (LOCATIONUPDATER_SVNT_BUILD_DLL)
+# define LOCATIONUPDATER_SVNT_Export ACE_Proper_Export_Flag
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* LOCATIONUPDATER_SVNT_BUILD_DLL */
+# define LOCATIONUPDATER_SVNT_Export ACE_Proper_Import_Flag
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* LOCATIONUPDATER_SVNT_BUILD_DLL */
+#else /* LOCATIONUPDATER_SVNT_HAS_DLL == 1 */
+# define LOCATIONUPDATER_SVNT_Export
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARATION(T)
+# define LOCATIONUPDATER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* LOCATIONUPDATER_SVNT_HAS_DLL == 1 */
+
+// Set LOCATIONUPDATER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (LOCATIONUPDATER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define LOCATIONUPDATER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define LOCATIONUPDATER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !LOCATIONUPDATER_SVNT_NTRACE */
+
+#if (LOCATIONUPDATER_SVNT_NTRACE == 1)
+# define LOCATIONUPDATER_SVNT_TRACE(X)
+#else /* (LOCATIONUPDATER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define LOCATIONUPDATER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (LOCATIONUPDATER_SVNT_NTRACE == 1) */
+
+#endif /* LOCATIONUPDATER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable
new file mode 100644
index 00000000000..7a404ce4129
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/Location_Updater.mpc.disable
@@ -0,0 +1,119 @@
+// generate_component_mpc.pl
+//LocationUpdater.mpc, spaunov Exp
+//Author: Stoyan Paunov
+// $Id$
+
+
+project(LocationUpdater_stub): ciao_deployment_stub, ciao_race_component {
+ after += Input_Adapter_stub
+ sharedname = LocationUpdater_stub
+ idlflags += -Sc \
+ -Wb,stub_export_macro=LOCATIONUPDATER_STUB_Export \
+ -Wb,stub_export_include=LocationUpdater_stub_export.h \
+ -Wb,skel_export_macro=LOCATIONUPDATER_SVNT_Export \
+ -Wb,skel_export_include=LocationUpdater_svnt_export.h
+ dynamicflags = LOCATIONUPDATER_STUB_BUILD_DLL
+ libs += Input_Adapter_stub \
+ Plan_Analyzer_Interface_stub
+
+ IDL_Files {
+ LocationUpdater.idl
+ }
+
+ Source_Files {
+ LocationUpdaterC.cpp
+ }
+
+ Header_Files {
+ LocationUpdaterC.h
+ }
+
+ Inline_Files {
+ LocationUpdaterC.inl
+ }
+}
+
+project(LocationUpdater_svnt) : ciao_servant_dnc, ciao_race_component {
+ after += LocationUpdater_stub \
+ Input_Adapter_svnt
+ sharedname = LocationUpdater_svnt
+ libs += LocationUpdater_stub \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub
+
+ idlflags += -Sc \
+ -Wb,export_macro=LOCATIONUPDATER_SVNT_Export \
+ -Wb,export_include=LocationUpdater_svnt_export.h
+
+ dynamicflags = LOCATIONUPDATER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ LocationUpdater.cidl
+ }
+
+ IDL_Files {
+ LocationUpdaterE.idl
+ }
+
+ Source_Files {
+ LocationUpdaterEC.cpp
+ LocationUpdaterS.cpp
+ LocationUpdater_svnt.cpp
+ }
+
+ Header_Files {
+ LocationUpdaterEC.h
+ LocationUpdaterS.h
+ LocationUpdater_svnt.h
+ }
+
+ Inline_Files {
+ LocationUpdaterEC.inl
+ LocationUpdaterS.inl
+ LocationUpdater_svnt.inl
+ }
+}
+
+
+project(LocationUpdater_exec) : ciao_component_dnc, ciao_config_handlers, ciao_race_component {
+ after += LocationUpdater_svnt XSC_Config_Handlers
+ sharedname = LocationUpdater_exec
+ libs += LocationUpdater_stub \
+ LocationUpdater_svnt \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub \
+
+ idlflags += -Sc \
+ -Wb,export_macro=LOCATIONUPDATER_EXEC_Export \
+ -Wb,export_include=LocationUpdater_exec_export.h
+ dynamicflags = LOCATIONUPDATER_EXEC_BUILD_DLL
+
+ requires += RepositoryManager
+ after += RepositoryManager
+ includes += $(CIAO_ROOT)/DAnCE/RepositoryManager
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ LocationUpdater_exec.cpp
+ PCVisitorBase.cpp
+ PlanUpdater.cpp
+ $(CIAO_ROOT)/DAnCE/RepositoryManager/RepositoryManagerDaemonC.cpp
+ }
+}
+
+project(LocationUpdater_Injector) : ciao_component_dnc, ciao_race_component, taoexe {
+ exename = injector
+
+ libs += LocationUpdater_stub
+
+ IDL_Files {
+ }
+ Source_Files {
+ Injector.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp
new file mode 100644
index 00000000000..040ecb9eb45
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.cpp
@@ -0,0 +1,24 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.cpp
+ *
+ * $Id$
+ *
+ * This file is a dummy which either includes the PCVisitorBase.inl or
+ * is ignored.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+
+ PCVisitorBase::PCVisitorBase (void)
+ {
+ }
+
+#if !defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h
new file mode 100644
index 00000000000..cd3cb2b8752
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.h
@@ -0,0 +1,214 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PCVisitorBase.h
+ *
+ * $Id$
+ *
+ * This file contains the virtual base class for the PackageConfiguration
+ * Visitor which is used to traverse the PackageConfiguration element
+ * defined in the PackagingData.idl. The PackageConfiguration has a
+ * number of sequence elements. This class actually implements the
+ * operations which involve sequences and delegates the calls to
+ * the operations which handle single elements from the sequence type.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PC_VISITOR_BASE_H
+#define PC_VISITOR_BASE_H
+
+#include /**/ "ace/pre.h"
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+#include "ace/SString.h" //for the ACE_CString
+#include "ace/Containers_T.h" //for ACE_Unbounded_Stack
+
+
+//forward declaration
+class PCVisitorBase;
+
+//========================================================================
+/**
+ * class PCAdapter
+ *
+ * This class is used as an Adapter around the CIAO::Depolyment elements
+ * which are part of the PackageConfiguration traversal hierarchy in
+ * order to adapt each element to exhibit 'Visitor Node'-like structure.
+ * This allows us to use the Visitor double-dispatch traversal paradigm.
+ */
+//========================================================================
+
+template <typename E>
+class PCAdapter
+{
+public:
+ PCAdapter (E& element) : element_ (element) {}
+ void Accept (PCVisitorBase &v) {v.Visit (*this);}
+ E& get () {return this-element_;}
+
+private:
+ E &element_;
+};
+
+
+template <typename T>
+void Accept (PCVisitorBase &v, T& element_to_visit)
+{
+ v.Visit (element_to_visit);
+}
+
+//========================================================================
+/**
+ * function - visit_sequence
+ *
+ * This function is used to handle sequences of elements where each
+ * element takes the form of a Visitor Node.
+ */
+//========================================================================
+
+
+/// I am using this to dispatch sequences
+template <typename SEQ>
+void visit_sequence (SEQ &seq, PCVisitorBase& v)
+{
+ const CORBA::ULong size = seq.length ();
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ {
+ Accept(v, seq[i]);
+ }
+}
+
+//========================================================================
+/**
+ * class PCVisitorBase
+ *
+ * This class is a virtual base class for the PackageConfiguration Visitor
+ * The operation which deal with sequences are implemented here by means
+ * of the visit_sequence function above, in order to make the logic of
+ * derived classes easier to write. Writers of derived classes need only
+ * overload the functions which deal with single elements. Sequences are
+ * always handled here.
+ */
+//========================================================================
+
+
+class PCVisitorBase
+{
+public:
+
+ //constructor
+ PCVisitorBase (void);
+
+ ///function what dispatches sequences
+ template <typename SEQ>
+ friend void visit_sequence (SEQ &seq, PCVisitorBase& v);
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc) = 0;
+ void Visit (Deployment::PackageConfigurations &pcs);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd) = 0;
+ void Visit (Deployment::ComponentPackageDescriptions &cpds);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid) = 0;
+ //void Visit (Deployment::ComponentInterfaceDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci) = 0;
+ void Visit (Deployment::PackagedComponentImplementations &pcis);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid) = 0;
+ //void Visit (Deployment::ComponentImplementationDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad) = 0;
+ void Visit (Deployment::ComponentAssemblyDescriptions &cads);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid) = 0;
+ void Visit (Deployment::SubcomponentInstantiationDescriptions &sids);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid) = 0;
+ void Visit (Deployment::MonolithicImplementationDescriptions &mids);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia) = 0;
+ void Visit (Deployment::NamedImplementationArtifacts &nias);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad) = 0;
+ //void Visit (Deployment::ImplementationArtifactDescriptions &iads);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr) = 0;
+ void Visit (Deployment::ComponentPackageReferences &cprs);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm) = 0;
+ void Visit (Deployment::AssemblyPropertyMappings &apms);
+
+ virtual
+ void Visit (Deployment::Property &property) = 0;
+ void Visit (Deployment::Properties &properties);
+
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement) = 0;
+ void Visit (Deployment::Requirements &requirements);
+
+ virtual
+ void Visit (Deployment::Capability &capability) = 0;
+ void Visit (Deployment::Capabilities &capabilities);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir) = 0;
+ void Visit (Deployment::ImplementationRequirements &irs);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id) = 0;
+ void Visit (Deployment::ImplementationDependencies &ids);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd) = 0;
+ void Visit (Deployment::AssemblyConnectionDescriptions &acds);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe) = 0;
+ void Visit (Deployment::SubcomponentPortEndpoints &spes);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe) = 0;
+ void Visit (Deployment::ComponentExternalPortEndpoints &cepes);
+
+};
+
+#if defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+
+#endif /* PC_VISITOR_BASE_H */
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl
new file mode 100644
index 00000000000..f6787601353
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PCVisitorBase.inl
@@ -0,0 +1,162 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.inl
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the sequence-based
+ * PackageConfiguration Visitor functions. By implementing these
+ * we relieve developers of derived classes of the burden of handling
+ * the correct traversal of sequence-based elements. This implementation
+ * used the visit_sequence templatized function to do the heavy lifting.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu
+ */
+//========================================================================
+
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::PackageConfigurations &pcs)
+ {
+ visit_sequence (pcs, *this);
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentPackageDescriptions &cpds)
+ {
+ visit_sequence (cpds, *this);
+ }
+
+ //NOT a member of Deployment
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ComponentInterfaceDescriptions &cids)
+ //{
+ // visit_sequence (cids, *this);
+ //}
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::PackagedComponentImplementations &pcis)
+ {
+ visit_sequence (pcis, *this);
+ }
+
+ //NOT a member of Deployment
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ComponentImplementationDescriptions &cids)
+ //{
+ // visit_sequence (cids, *this);
+ //}
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentAssemblyDescriptions &cads)
+ {
+ visit_sequence (cads, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::SubcomponentInstantiationDescriptions &sids)
+ {
+ visit_sequence (sids, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::MonolithicImplementationDescriptions &mids)
+ {
+ visit_sequence (mids, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::NamedImplementationArtifacts &nias)
+ {
+ visit_sequence (nias, *this);
+ }
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ImplementationArtifactDescriptions &iads)
+ //{
+ // visit_sequence (iads, *this);
+ //}
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentPackageReferences &cprs)
+ {
+ visit_sequence (cprs, *this);
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::AssemblyPropertyMappings &apms)
+ {
+ visit_sequence (apms, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Properties &properties)
+ {
+ visit_sequence (properties, *this);
+ }
+
+ //requirements & capabilities
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Requirements &requirements)
+ {
+ visit_sequence (requirements, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Capabilities &capabilities)
+ {
+ visit_sequence (capabilities, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ImplementationRequirements &irs)
+ {
+ visit_sequence (irs, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ImplementationDependencies &ids)
+ {
+ visit_sequence (ids, *this);
+ }
+
+ //ports and connections
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::AssemblyConnectionDescriptions &acds)
+ {
+ visit_sequence (acds, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::SubcomponentPortEndpoints &spes)
+ {
+ visit_sequence (spes, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentExternalPortEndpoints &cepes)
+ {
+ visit_sequence (cepes, *this);
+ }
+
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp
new file mode 100644
index 00000000000..939d015c817
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.cpp
@@ -0,0 +1,269 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PlanUpdater.cpp
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the PackageConfiguration
+ * Visitor class PlanUpdater which derives from PCVisitorBase and attempts
+ * to update the location fields in the received DeploymentPlan to reflect
+ * the locations of the implementation artifacts as outlined in the
+ * PackageConfiguration which are downloadable via HTTP. Each Visit
+ * function focuses on the functionality necessary to process the
+ * PackageConfiguration element which is passed to it as an argument
+ * and on dispatching the next sequence of calls in the correct order!
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+#include "PlanUpdater.h"
+
+#include "ace/OS_Memory.h" //for ACE_NEW* macros
+#include "ace/SString.h" //for ACE_CString
+
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+
+#include "Config_Handlers/DnC_Dump.h"
+
+//#include <iostream>
+//using namespace std;
+
+ //Constructor
+ PlanUpdater::PlanUpdater (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc)
+ : PCVisitorBase (),
+ plan_ (plan),
+ pc_ (pc),
+ status_ (true)
+ {
+ }
+
+ //entry point for the protected visitor to get it do start
+ //the visitation process
+ bool PlanUpdater::Visit ()
+ {
+ Accept (*this, this->pc_);
+
+ return this->status_;
+
+ }
+
+ // A whole slew of overloaded routines for different IDL
+ // data types part of the PackageConfiguration.
+
+
+ void PlanUpdater::Visit (Deployment::PackageConfiguration &pc)
+ {
+ //visit the ComponentPackageDescription
+ if (pc.basePackage.length ())
+ {
+ //currently no support for that anywhere
+ //for (size_t r = 0; r = pc.selectRequirement.length (); ++r);
+
+ Accept (*this, pc.basePackage);
+ }
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[PlanUpdater - PackageConfiguration] We currently "
+ "do NOT support package references, specializedConfigs",
+ "or imports!\n"));
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+
+ void PlanUpdater::Visit (Deployment::ComponentPackageDescription &cpd)
+ {
+ //do not need to visit the interface
+ //Accept (*this, cpd.realizes);
+
+ //visit the implementations
+ Accept (*this, cpd.implementation);
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ComponentInterfaceDescription &cid)
+ {
+ //Might want to populate this too once PICML starts supporting it
+ }
+
+
+ void PlanUpdater::Visit (Deployment::PackagedComponentImplementation &pci)
+ {
+ //visit the referencedImplementationArtifact
+ Accept (*this, pci.referencedImplementation);
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ComponentImplementationDescription &cid)
+ {
+ if (cid.assemblyImpl.length ())
+ //visit the component assembly
+ Accept (*this, cid.assemblyImpl);
+ else
+ //visit the monolithic component
+ Accept (*this, cid.monolithicImpl);
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ComponentAssemblyDescription &cad)
+ {
+ //visit the SubcomponentInstantiationDescription
+ Accept (*this, cad.instance);
+
+ //do not need to visit the connections
+ //Accept (*this, cad.connection);
+ }
+
+
+ void PlanUpdater::Visit (Deployment::SubcomponentInstantiationDescription &sid)
+ {
+ //visit the ComponentPackageDescription (again)
+ if (sid.basePackage.length ())
+ //visit the base package in the subcomponent
+ Accept (*this, sid.basePackage);
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[PlanUpdater - SubcomponentInstantiationDescription] ",
+ "We currently do NOT support package references, ",
+ "specializedConfigs or imports!\n"));
+ }
+
+
+ void PlanUpdater::Visit (Deployment::MonolithicImplementationDescription &mid)
+ {
+ //NOTE: There are usually 3 NamedImplementationArtifacts per
+ //MonolithicImplementationDescription *_stub, *_svnt & *_exec
+
+ //visit the NamedImplementationArtifacts
+ Accept (*this, mid.primaryArtifact);
+ }
+
+
+ void PlanUpdater::Visit (Deployment::NamedImplementationArtifact &nia)
+ {
+ //visit the actual ImplementationArtifactDescriptor
+ Accept (*this, nia.referencedArtifact);
+ }
+
+
+ //This function attempts to update the location of the artifact deployment
+ //descriptions to reflect the once in the RepositoryManager.
+ //
+ //Not sure what the input is here! I am assuming that the
+ //location came from the descriptor files, so it just holds
+ //the name of the library. If this code evolves, we will need to
+ //update the string matching mechanism with a more complicated one.
+
+
+ void PlanUpdater::Visit (Deployment::ImplementationArtifactDescription &iad)
+ {
+ //some heavy lifting here!
+ static size_t iters = 0;
+ ++iters;
+ ACE_CString iad_loc (iad.location[0]);
+
+ size_t add_len = this->plan_.artifact.length ();
+
+ for (size_t i = 0; i < add_len; ++i)
+ {
+ Deployment::ArtifactDeploymentDescription& add = this->plan_.artifact[i];
+
+ //NOTE: Right now we only populate location[0]
+ //When this evolves, check needs to evolve as well.
+ ACE_CString add_loc (add.location[0]);
+
+ //check if the add location has already been updated
+ if (ACE_OS::strstr (add_loc.c_str (), "http://"))//, add_loc.length ()))
+ continue;
+
+ //check for a match and update the location
+ if (ACE_OS::strstr (iad_loc.c_str (), add_loc.c_str ()))//, iad_loc.length ()))
+ {
+ //if there is a match substitute one for the other
+ add.location[0] = CORBA::string_dup (iad_loc.c_str ());
+
+ //ACE_OS::printf ("Matching %s with %s\n",
+ // iad_loc.c_str (),
+ // add_loc.c_str ());
+
+ }
+
+ }
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+
+ void PlanUpdater::Visit (Deployment::ComponentPackageReference &cpr)
+ {
+ //not implemented
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+
+ void PlanUpdater::Visit (Deployment::AssemblyPropertyMapping &apm)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::Property &property)
+ {
+ //not needed
+ }
+
+
+ //requirements & capabilities
+
+ void PlanUpdater::Visit (Deployment::Requirement &requirement)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::Capability &capability)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ImplementationRequirement &ir)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ImplementationDependency &id)
+ {
+ //not needed
+ }
+
+ //ports and connections
+
+ void PlanUpdater::Visit (Deployment::AssemblyConnectionDescription &acd)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::SubcomponentPortEndpoint &spe)
+ {
+ //not needed
+ }
+
+
+ void PlanUpdater::Visit (Deployment::ComponentExternalPortEndpoint &cepe)
+ {
+ //not needed
+ }
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.h b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.h
new file mode 100644
index 00000000000..298b1b92fbb
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/PlanUpdater.h
@@ -0,0 +1,158 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PlanUpdater.h
+ *
+ * $Id$
+ *
+ * This file contains a Visitor classes which are used to traverse a
+ * PackageConfiguration and update the location fields in a corresponding
+ * DeploymentPlan.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PLAN_UPDATER_H
+#define PLAN_UPDATER_H
+
+#include /**/ "ace/pre.h"
+#include "ace/SString.h" //for the ACE_CString
+
+#include "PCVisitorBase.h" //for the base visitor
+//#include "Node_T.h" //Node
+#include "ace/Containers_T.h" //for ACE_Double_Linked_List
+
+
+
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_BaseC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+
+//namespace {
+////Definition of various Node elements parametrized by
+////Deployment specific types
+// typedef Node<Deployment::Node> NNode;
+// typedef Node<Deployment::MonolithicImplementationDescription> MNode;
+//
+////Definition of various stacks used to store information
+////about the elements being parsed at various levels
+// typedef ACE_Bounded_Stack<int> INDEX_STACK;
+//
+////definition of a Node which takes an ACE_CString
+// typedef Node<ACE_CString> SNode;
+//}
+
+//===========================================================================
+/**
+ * class PlanUpdater
+ *
+ * This class takes in a Deployment Plan and a PackageConfiguration and
+ * attempts to update the location fields in the deployment plan to reflect
+ * the locations available via HTTP as outlined in the passed Package-
+ * Configuration. It derives from PCVisitorBase and overloads the functions
+ * which deal with single elements. Sequences are handled in the base class.
+ */
+//===========================================================================
+
+
+class PlanUpdater : public PCVisitorBase
+{
+public:
+
+ //constructor
+ PlanUpdater (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc);
+
+ ///Entry point to protected Visitor functions
+ bool Visit ();
+
+protected:
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm);
+
+ virtual
+ void Visit (Deployment::Property &property);
+
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement);
+
+ virtual
+ void Visit (Deployment::Capability &capability);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe);
+
+
+private:
+
+ Deployment::DeploymentPlan& plan_;
+ Deployment::PackageConfiguration& pc_;
+ bool status_;
+};
+
+#include /**/ "ace/post.h"
+
+#endif /* PLAN_UPDATER_H */
diff --git a/modules/CIAO/RACE/Input_Adapters/LocationUpdater/README.txt b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/README.txt
new file mode 100644
index 00000000000..fc35c1a633c
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/LocationUpdater/README.txt
@@ -0,0 +1,12 @@
+
+
+//Author: Stoyan Paunov
+
+This is the README for the LocationUpdater Input Adapter for RACE. This input
+adapter has similar functionality to the Interactive Input Adapter, however
+instead of using only the descriptors on disk, it uses the UUID from the
+parsed PackageConfiguration to retrieve its counterpart from the Repository
+Manager and updates the location of the implementation artifact to point to
+the HTTP server. This way the files can then be retrieved by DAnCE at
+deployment.
+
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/Injector.cpp b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/Injector.cpp
new file mode 100644
index 00000000000..a0eaa7bbb9b
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/Injector.cpp
@@ -0,0 +1,180 @@
+/**
+ * @file Injector.cpp
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ * @author Stoyan Paunov
+ *
+ * $Id$
+ */
+
+#include "Input_Adapters/PlanGenerator/PlanGeneratorC.h"
+#include "ace/OS.h"
+#include "ace/Get_Opt.h"
+#include "ace/SString.h"
+#include "orbsvcs/CosNamingC.h"
+#include "ace/Auto_Ptr.h"
+
+#include <iostream>
+using namespace std;
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace Injector
+ {
+ const char *package_name = 0;
+ const char *iia_ior_file = 0;
+ const char *iia_name = "RACE::InteractiveInput";
+
+ bool teardown = false;
+
+ static void
+ usage (const ACE_TCHAR* program)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Usage %s\n")
+ ACE_TEXT ("-p <Name of package to fetch from the RepoMan>\n")
+ ACE_TEXT ("-t <Teardown plan>\n")
+ ACE_TEXT ("-k <Interactive_Input_Adaptor IOR, "
+ "use naming service if not present\n"),
+ program));
+ }
+
+ static bool
+ parse_args (int argc,
+ ACE_TCHAR *argv[])
+ {
+ ACE_Get_Opt get_opt (argc,
+ argv,
+ ACE_TEXT ("p:k:thn:"));
+ int c;
+
+ while ((c = get_opt ()) != EOF)
+ {
+ switch (c)
+ {
+ case 'p':
+ package_name = get_opt.opt_arg ();
+ break;
+
+ case 'k':
+ iia_ior_file = get_opt.opt_arg ();
+ break;
+
+ case 't':
+ teardown = true;
+ break;
+
+ case 'n':
+ iia_name = get_opt.opt_arg ();
+
+ case 'h':
+ default:
+ usage (argv[0]);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ CORBA::Object_ptr
+ fetch_reference_naming (CORBA::ORB_ptr orb,
+ const ACE_CString &name)
+ {
+ ACE_ERROR ((LM_ERROR, "Resolving via nameservice...\n"));
+ using namespace CosNaming;
+
+ // Resolve naming service
+ CORBA::Object_var tmp =
+ orb->resolve_initial_references ("NameService");
+
+ NamingContext_var pns =
+ NamingContext::_narrow (tmp.in ());
+
+ Name ns_name;
+ CORBA::ULong i = 0;
+
+ ACE_Tokenizer tok ( name.rep ());
+ tok.delimiter_replace (':', 0);
+ tok.delimiter_replace ('/', 0);
+
+ char *name_element = 0;
+ while ((name_element = tok.next ()) != 0)
+ {
+ ns_name.length (ns_name.length () + 1);
+ ns_name[i].id = CORBA::string_dup (name_element);
+ ++i;
+ }
+
+
+ return pns->resolve (ns_name);
+ }
+
+ static int
+ run_main_implementation (int argc, ACE_TCHAR *argv[])
+ {
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ if (!parse_args (argc, argv))
+ return -1;
+
+
+ // Resolve our input adapter...
+ CORBA::Object_var tmp;
+
+ cout << "resolving: " << iia_ior_file << endl;
+
+ if (iia_ior_file != 0)
+ tmp = orb->string_to_object (iia_ior_file);
+ else // must be a name....
+ tmp = fetch_reference_naming (orb.in (), iia_name);
+
+ CIAO::RACE::PlanGenerator_var iia
+ = CIAO::RACE::PlanGenerator::_narrow (tmp.in ());
+
+ // Create deploy input event.
+ CIAO::RACE::Deploy_Input_var input =
+ new OBV_CIAO::RACE::Deploy_Input;
+
+ input->package_name (package_name);
+
+ if (teardown)
+ {
+ input->command (::CIAO::RACE::TEARDOWN);
+ }
+ else
+ {
+ input->command (::CIAO::RACE::DEPLOY);
+ }
+
+ // Get the consumer for the IIA
+ ::CIAO::RACE::Deploy_InputConsumer_var consumer =
+ iia->get_consumer_deployment ();
+
+ // push the event
+ consumer->push_Deploy_Input (input.in ());
+
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) Injector: Unknown exception\n"));
+ return -1;
+ }
+
+ return 0;
+ }
+
+ } //namespace Injector
+ } //namespace RACE
+} //Namespace CIAO
+
+int main (int argc, ACE_TCHAR **argv)
+{
+ return CIAO::RACE::Injector::run_main_implementation (argc, argv);
+}
+
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp
new file mode 100644
index 00000000000..040ecb9eb45
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.cpp
@@ -0,0 +1,24 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.cpp
+ *
+ * $Id$
+ *
+ * This file is a dummy which either includes the PCVisitorBase.inl or
+ * is ignored.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+
+ PCVisitorBase::PCVisitorBase (void)
+ {
+ }
+
+#if !defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h
new file mode 100644
index 00000000000..cd3cb2b8752
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.h
@@ -0,0 +1,214 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PCVisitorBase.h
+ *
+ * $Id$
+ *
+ * This file contains the virtual base class for the PackageConfiguration
+ * Visitor which is used to traverse the PackageConfiguration element
+ * defined in the PackagingData.idl. The PackageConfiguration has a
+ * number of sequence elements. This class actually implements the
+ * operations which involve sequences and delegates the calls to
+ * the operations which handle single elements from the sequence type.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PC_VISITOR_BASE_H
+#define PC_VISITOR_BASE_H
+
+#include /**/ "ace/pre.h"
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+#include "ace/SString.h" //for the ACE_CString
+#include "ace/Containers_T.h" //for ACE_Unbounded_Stack
+
+
+//forward declaration
+class PCVisitorBase;
+
+//========================================================================
+/**
+ * class PCAdapter
+ *
+ * This class is used as an Adapter around the CIAO::Depolyment elements
+ * which are part of the PackageConfiguration traversal hierarchy in
+ * order to adapt each element to exhibit 'Visitor Node'-like structure.
+ * This allows us to use the Visitor double-dispatch traversal paradigm.
+ */
+//========================================================================
+
+template <typename E>
+class PCAdapter
+{
+public:
+ PCAdapter (E& element) : element_ (element) {}
+ void Accept (PCVisitorBase &v) {v.Visit (*this);}
+ E& get () {return this-element_;}
+
+private:
+ E &element_;
+};
+
+
+template <typename T>
+void Accept (PCVisitorBase &v, T& element_to_visit)
+{
+ v.Visit (element_to_visit);
+}
+
+//========================================================================
+/**
+ * function - visit_sequence
+ *
+ * This function is used to handle sequences of elements where each
+ * element takes the form of a Visitor Node.
+ */
+//========================================================================
+
+
+/// I am using this to dispatch sequences
+template <typename SEQ>
+void visit_sequence (SEQ &seq, PCVisitorBase& v)
+{
+ const CORBA::ULong size = seq.length ();
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ {
+ Accept(v, seq[i]);
+ }
+}
+
+//========================================================================
+/**
+ * class PCVisitorBase
+ *
+ * This class is a virtual base class for the PackageConfiguration Visitor
+ * The operation which deal with sequences are implemented here by means
+ * of the visit_sequence function above, in order to make the logic of
+ * derived classes easier to write. Writers of derived classes need only
+ * overload the functions which deal with single elements. Sequences are
+ * always handled here.
+ */
+//========================================================================
+
+
+class PCVisitorBase
+{
+public:
+
+ //constructor
+ PCVisitorBase (void);
+
+ ///function what dispatches sequences
+ template <typename SEQ>
+ friend void visit_sequence (SEQ &seq, PCVisitorBase& v);
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc) = 0;
+ void Visit (Deployment::PackageConfigurations &pcs);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd) = 0;
+ void Visit (Deployment::ComponentPackageDescriptions &cpds);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid) = 0;
+ //void Visit (Deployment::ComponentInterfaceDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci) = 0;
+ void Visit (Deployment::PackagedComponentImplementations &pcis);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid) = 0;
+ //void Visit (Deployment::ComponentImplementationDescriptions &cids);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad) = 0;
+ void Visit (Deployment::ComponentAssemblyDescriptions &cads);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid) = 0;
+ void Visit (Deployment::SubcomponentInstantiationDescriptions &sids);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid) = 0;
+ void Visit (Deployment::MonolithicImplementationDescriptions &mids);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia) = 0;
+ void Visit (Deployment::NamedImplementationArtifacts &nias);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad) = 0;
+ //void Visit (Deployment::ImplementationArtifactDescriptions &iads);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr) = 0;
+ void Visit (Deployment::ComponentPackageReferences &cprs);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm) = 0;
+ void Visit (Deployment::AssemblyPropertyMappings &apms);
+
+ virtual
+ void Visit (Deployment::Property &property) = 0;
+ void Visit (Deployment::Properties &properties);
+
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement) = 0;
+ void Visit (Deployment::Requirements &requirements);
+
+ virtual
+ void Visit (Deployment::Capability &capability) = 0;
+ void Visit (Deployment::Capabilities &capabilities);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir) = 0;
+ void Visit (Deployment::ImplementationRequirements &irs);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id) = 0;
+ void Visit (Deployment::ImplementationDependencies &ids);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd) = 0;
+ void Visit (Deployment::AssemblyConnectionDescriptions &acds);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe) = 0;
+ void Visit (Deployment::SubcomponentPortEndpoints &spes);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe) = 0;
+ void Visit (Deployment::ComponentExternalPortEndpoints &cepes);
+
+};
+
+#if defined (__ACE_INLINE__)
+#include "PCVisitorBase.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+
+#endif /* PC_VISITOR_BASE_H */
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl
new file mode 100644
index 00000000000..f6787601353
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PCVisitorBase.inl
@@ -0,0 +1,162 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file PCVisitorBase.inl
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the sequence-based
+ * PackageConfiguration Visitor functions. By implementing these
+ * we relieve developers of derived classes of the burden of handling
+ * the correct traversal of sequence-based elements. This implementation
+ * used the visit_sequence templatized function to do the heavy lifting.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu
+ */
+//========================================================================
+
+
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::PackageConfigurations &pcs)
+ {
+ visit_sequence (pcs, *this);
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentPackageDescriptions &cpds)
+ {
+ visit_sequence (cpds, *this);
+ }
+
+ //NOT a member of Deployment
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ComponentInterfaceDescriptions &cids)
+ //{
+ // visit_sequence (cids, *this);
+ //}
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::PackagedComponentImplementations &pcis)
+ {
+ visit_sequence (pcis, *this);
+ }
+
+ //NOT a member of Deployment
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ComponentImplementationDescriptions &cids)
+ //{
+ // visit_sequence (cids, *this);
+ //}
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentAssemblyDescriptions &cads)
+ {
+ visit_sequence (cads, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::SubcomponentInstantiationDescriptions &sids)
+ {
+ visit_sequence (sids, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::MonolithicImplementationDescriptions &mids)
+ {
+ visit_sequence (mids, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::NamedImplementationArtifacts &nias)
+ {
+ visit_sequence (nias, *this);
+ }
+
+ //ACE_INLINE void PCVisitorBase::Visit
+ // (Deployment::ImplementationArtifactDescriptions &iads)
+ //{
+ // visit_sequence (iads, *this);
+ //}
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentPackageReferences &cprs)
+ {
+ visit_sequence (cprs, *this);
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::AssemblyPropertyMappings &apms)
+ {
+ visit_sequence (apms, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Properties &properties)
+ {
+ visit_sequence (properties, *this);
+ }
+
+ //requirements & capabilities
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Requirements &requirements)
+ {
+ visit_sequence (requirements, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::Capabilities &capabilities)
+ {
+ visit_sequence (capabilities, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ImplementationRequirements &irs)
+ {
+ visit_sequence (irs, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ImplementationDependencies &ids)
+ {
+ visit_sequence (ids, *this);
+ }
+
+ //ports and connections
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::AssemblyConnectionDescriptions &acds)
+ {
+ visit_sequence (acds, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::SubcomponentPortEndpoints &spes)
+ {
+ visit_sequence (spes, *this);
+ }
+
+ ACE_INLINE void PCVisitorBase::Visit
+ (Deployment::ComponentExternalPortEndpoints &cepes)
+ {
+ visit_sequence (cepes, *this);
+ }
+
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp
new file mode 100644
index 00000000000..56ab62c4cb6
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cdp
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>1D2C2C63-CE33-4088-9443-781F080D8888</UUID>
+
+ <implementation id="_73898E70-9FF1-4881-9313-A2DE181EEEEE">
+ <name>RT1H_Combined.RA_ComponentImplementations.PlanGeneratorImplementation.PlanGeneratorMonolithicImpl</name>
+ <source/>
+ <artifact>__AD4B52E0-111C-49E2-BE47-29CFF978676F</artifact>
+ <artifact>__E4AF24BF-5A39-BBB1-8217-6343D7D55598</artifact>
+ <artifact>__76A0CEFE-22F7-FFF7-BB91-F309FFFAD33C</artifact>
+ </implementation>
+
+ <instance id="_2BD4D476-2F5B-4CCC-A8CF-311084273028">
+ <name>RT1H_Combined.ComponentImplementations.RACE.RACE.PlanGenerator</name>
+ <node>PlanGenerator</node>
+ <source/>
+ <implementation>_73898E70-9FF1-4881-9313-A2DE181EEEEE</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>PlanGenerator.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>RACE::InteractiveInput</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <artifact id="__AD4B52E0-111C-49E2-BE47-29CFF978676F">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.PlanGeneratorArtifacts.PlanGenerator_stub</name>
+ <source/>
+ <node/>
+ <location>PlanGenerator_stub</location>
+ </artifact>
+
+ <artifact id="__E4AF24BF-5A39-BBB1-8217-6343D7D55598">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.PlanGeneratorArtifacts.PlanGenerator_svnt</name>
+ <source/>
+ <node/>
+ <location>PlanGenerator_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_RACE_PlanGenerator_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="__76A0CEFE-22F7-FFF7-BB91-F309FFFAD33C">
+ <name>RT1H_Combined.RA_ImplementationArtifacts.PlanGeneratorArtifacts.PlanGenerator_exec</name>
+ <source/>
+ <node/>
+ <location>PlanGenerator_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_CIAO_RACE_PlanGenerator_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl
new file mode 100644
index 00000000000..9ceb659e753
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cidl
@@ -0,0 +1,26 @@
+//PlanGenerator.cidl,v 1.1 spaunov Exp
+//Author: Stoyan Paunov
+//$Id$
+
+#ifndef RACE_PLAN_GENERATOR_INPUT_ADAPTER_CIDL
+#define RACE_PLAN_GENERATOR_INPUT_ADAPTER_CIDL
+
+#include "PlanGenerator.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session PlanGenerator_Impl
+ {
+ home executor PlanGenerator_Home_Exec
+ {
+ implements RACE::PlanGenerator_Home;
+ manages PlanGenerator_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_PLAN_GENERATOR_INPUT_ADAPTER_CIDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp
new file mode 100644
index 00000000000..eb761275c6e
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.cpp
@@ -0,0 +1,451 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/*
+ * file Plan_Generator.cpp
+ *
+ * $Id$
+ *
+ * This file contains the implementation of the PackageConfiguration
+ * Visitor class Plan_Generator which derives from PCVisitorBase. Each
+ * Visit function focuses on the functionality necessary to process
+ * the PackageConfiguration element which is passed to it as an argument
+ * and on dispatching the next sequence of calls in the correct order!
+ *
+ * This implementation takes a PackageConfiguration and tries to grow
+ * a DeploymentPlan out of it by expanding the latter in width and depth
+ * simultaneously. At each level of the PackageConfiguration the
+ * Plan_Generator first expands the DeploymentPlan vertically at the
+ * corrsponding level and then dispatches the children of the current
+ * PackageConfiguration element. This in turn might and most probably
+ * will cause another vertical expansion of the DeploymentPlan, however
+ * for a different element. This effect is produced due to the flattened
+ * structure of the DeploymentPlan.
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu
+ */
+//========================================================================
+
+#include "PCVisitorBase.h"
+#include "PlanGenerator.h"
+
+#include "ace/OS_Memory.h" //for ACE_NEW* macros
+#include "ace/SString.h" //for ACE_CString
+
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+
+#include "Config_Handlers/DnC_Dump.h"
+
+#include <iostream>
+using namespace std;
+
+ //Constructor
+ Plan_Generator::Plan_Generator (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc)
+ : PCVisitorBase (),
+ plan_ (plan),
+ pc_ (pc),
+ last_cad_ (0)
+ {
+ }
+
+ //entry point for the protected visitor to get it do start
+ //the visitation process
+ void Plan_Generator::Visit ()
+ {
+ Accept (*this, this->pc_);
+ }
+
+ // A whole slew of overloaded routines for different IDL
+ // data types part of the PackageConfiguration.
+
+
+ void Plan_Generator::Visit (Deployment::PackageConfiguration &pc)
+ {
+
+ //visit the ComponentPackageDescription
+ if (pc.basePackage.length ())
+ {
+ //currently no support for that anywhere
+ //for (size_t r = 0; r = pc.selectRequirement.length (); ++r);
+
+ Accept (*this, pc.basePackage);
+ }
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[Plan_Generator - PackageConfiguration] We currently "
+ "do NOT support package references, specializedConfigs",
+ "or imports!\n"));
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+
+ void Plan_Generator::Visit (Deployment::ComponentPackageDescription &cpd)
+ {
+ Accept (*this, cpd.realizes);
+ //for (size_t impl = 0; impl < cpd.implementation.length (); ++impl)
+ Accept (*this, cpd.implementation[0]);
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ComponentInterfaceDescription &cid)
+ {
+ //Might want to populate this too once PICML starts supporting it
+ }
+
+
+ void Plan_Generator::Visit (Deployment::PackagedComponentImplementation &pci)
+ {
+ Accept (*this, pci.referencedImplementation);
+
+ size_t plan_impl_len = plan_.implementation.length ();
+ size_t plan_inst_len = plan_.instance.length ();
+
+ //NOTE: order here matters. Need to populate the
+ //MonolithicDeploymentDescription and the
+ //InstanceDeploymentDescription first,
+ //then call the update_configProperty
+ if (plan_impl_len > 0 && plan_inst_len > 0)
+ update_configProperty (pci,
+ plan_.implementation[plan_impl_len - 1],
+ plan_.instance[plan_inst_len - 1]);
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ComponentImplementationDescription &cid)
+ {
+ if (cid.assemblyImpl.length ())
+ Accept (*this, cid.assemblyImpl);
+ else
+ //;//Do nothing - monolithic component deployment not supported
+ Accept (*this, cid.monolithicImpl);
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ComponentAssemblyDescription &cad)
+ {
+ //NOTE: order matters for these calls. We need to populate
+ //the instances before we try to polulate the connections
+
+ //set the last ComponentAssemblyDescription
+ this->last_cad_ = &cad;
+
+ //visit the SubcomponentInstantiationDescription
+ Accept (*this, cad.instance);
+ //visit the connections
+ Accept (*this, cad.connection);
+
+ //reset the last ComponentAssemblyDescription
+ this->last_cad_ = NULL;
+ }
+
+
+ void Plan_Generator::Visit (Deployment::SubcomponentInstantiationDescription &sid)
+ {
+ //visit the ComponentPackageDescription (again)
+ if (sid.basePackage.length ())
+ {
+ size_t inst_len = plan_.instance.length ();
+ plan_.instance.length (inst_len + 1);
+
+ update_configProperty (sid, plan_.instance[inst_len]);
+
+ plan_.instance[inst_len].name = sid.name;
+ size_t impl_len = plan_.implementation.length ();
+ plan_.implementation.length (impl_len + 1);
+
+ ACE_CString mdname (plan_.instance[inst_len].name);
+ mdname += "-mdd";
+ plan_.implementation[impl_len].name = mdname.c_str ();
+
+ plan_.instance[inst_len].implementationRef = impl_len;
+
+ Accept (*this, sid.basePackage);
+ }
+ else
+ ACE_DEBUG ((LM_WARNING,
+ "[Plan_Generator - SubcomponentInstantiationDescription] ",
+ "We currently do NOT support package references, ",
+ "specializedConfigs or imports!\n"));
+ }
+
+
+ void Plan_Generator::Visit (Deployment::MonolithicImplementationDescription &mid)
+ {
+ //NOTE: There are usually 3 NamedImplementationArtifacts per
+ //MonolithicImplementationDescription *_stub, *_svnt & *_exec
+
+ //visit the NamedImplementationArtifacts
+ Accept (*this, mid.primaryArtifact);
+ }
+
+
+ void Plan_Generator::Visit (Deployment::NamedImplementationArtifact &nia)
+ {
+ //increase the artifact length by one
+ size_t arti_len = plan_.artifact.length ();
+ plan_.artifact.length (arti_len + 1);
+ plan_.artifact[arti_len].name = nia.name;
+
+ //increase the artifactRef length by one and
+ //update the reference
+
+ //get the index of the last MonolithicDeploymentDescription
+ size_t last_mdd = plan_.implementation.length () - 1;
+ Deployment::MonolithicDeploymentDescription& mdd = plan_.implementation[last_mdd];
+ size_t ref_len = mdd.artifactRef.length ();
+ mdd.artifactRef.length (ref_len + 1);
+ mdd.artifactRef[ref_len] = arti_len;
+
+ //visit the actual ImplementationArtifactDescriptor
+ Accept (*this, nia.referencedArtifact);
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ImplementationArtifactDescription &iad)
+ {
+
+ size_t last_arti = plan_.artifact.length ();
+ size_t plan_loc_len = plan_.artifact[last_arti - 1].location.length ();
+ size_t num_loc = iad.location.length ();
+ for (size_t i = 0; i < num_loc; ++i)
+ {
+ Deployment::ArtifactDeploymentDescription& add = plan_.artifact[last_arti - 1];
+ add.location.length (plan_loc_len + 1);
+ add.location[plan_loc_len] = iad.location[i];
+ ++plan_loc_len;
+
+ //update execParameter
+ update_execParameter (iad, add);
+ }
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+
+ void Plan_Generator::Visit (Deployment::ComponentPackageReference &cpr)
+ {
+ //not implemented
+ }
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+
+ void Plan_Generator::Visit (Deployment::AssemblyPropertyMapping &apm)
+ {
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::Property &property)
+ {
+
+ }
+
+
+ //requirements & capabilities
+
+ void Plan_Generator::Visit (Deployment::Requirement &requirement)
+ {
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::Capability &capability)
+ {
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ImplementationRequirement &ir)
+ {
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ImplementationDependency &id)
+ {
+
+ }
+
+ //ports and connections
+
+ void Plan_Generator::Visit (Deployment::AssemblyConnectionDescription &acd)
+ {
+ if (!this->last_cad_)
+ return;
+
+ Deployment::ComponentAssemblyDescription& cad = *(this->last_cad_);
+
+ size_t plan_conn_len = plan_.connection.length ();
+ plan_.connection.length (plan_conn_len + 1);
+ plan_.connection[plan_conn_len].name = acd.name;
+
+ size_t iep_len = acd.internalEndpoint.length ();
+ size_t plan_iep_len =
+ plan_.connection[plan_conn_len].internalEndpoint.length ();
+
+ //cout << "==> " << acd.name << " has " << iep_len << " and "
+ // << acd.externalEndpoint.length () << endl << endl ;
+
+ plan_.connection[plan_conn_len].internalEndpoint.length (plan_iep_len + iep_len);
+
+ for (size_t i = 0; i < iep_len; ++i)
+ {
+ plan_.connection[plan_conn_len]
+ .internalEndpoint[plan_iep_len + i].portName =
+ acd.internalEndpoint[i].portName;
+
+ size_t inst_ref = acd.internalEndpoint[i].instanceRef;
+ const char* inst_name = cad.instance[inst_ref].name;
+ size_t plan_inst_len = plan_.instance.length ();
+
+ for (size_t j = 0; j < plan_inst_len; ++j)
+ {
+ const char* plan_inst_name = plan_.instance[j].name;
+ if (ACE_OS::strcmp (plan_inst_name, inst_name) == 0)
+ {
+ plan_.connection[plan_conn_len]
+ .internalEndpoint[plan_iep_len + i].instanceRef = j;
+ break;
+ }
+ }
+
+ //Now traverse the interface
+
+ //NOTE: move these up and refactor!
+ Deployment::SubcomponentInstantiationDescription& scid =
+ cad.instance[inst_ref];
+ Deployment::PlanSubcomponentPortEndpoint& pspe =
+ plan_.connection[plan_conn_len]
+ .internalEndpoint[plan_iep_len + i];
+
+ size_t pkg_len = scid.basePackage.length ();
+ for (size_t k = 0; k < pkg_len; ++k)
+ {
+ Deployment::ComponentPackageDescription& package = scid.basePackage[k];
+
+ //empty unfortunately
+ Deployment::ComponentInterfaceDescription cid = package.realizes;
+ //cid = package.implementation[0].referencedImplementation.implements;
+
+ size_t port_len = cid.port.length ();
+ for (size_t p = 0; p < port_len; ++p)
+ {
+ const char* cid_pname = cid.port[p].name;
+ const char* pspe_pname = pspe.portName;
+ //cout << "CMP: " << pspe_pname << " <=> " << cid_pname << endl;
+ if (ACE_OS::strcmp (cid_pname, pspe_pname) == 0)
+ {
+ pspe.kind = cid.port[p].kind;
+
+ //cout << "-->" << pspe_pname << " Port kind is "
+ // << pspe.kind << endl;
+
+ goto interface_end;
+ break; // ???
+ }
+ }
+ }
+
+interface_end:
+ //cout << endl;
+ ;
+
+ }
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::SubcomponentPortEndpoint &spe)
+ {
+
+ }
+
+
+ void Plan_Generator::Visit (Deployment::ComponentExternalPortEndpoint &cepe)
+ {
+
+ }
+
+//several helper functions
+
+ void Plan_Generator::
+ update_execParameter (Deployment::ImplementationArtifactDescription& iad,
+ Deployment::ArtifactDeploymentDescription& add)
+ {
+ //update execParameters
+ size_t num_execP = iad.execParameter.length ();
+ for (size_t j = 0; j < num_execP; ++j)
+ {
+ size_t execP_len = add.execParameter.length ();
+ add.execParameter.length (execP_len + 1);
+ add.execParameter[execP_len] = iad.execParameter[j];
+ ++execP_len;
+ }
+ }
+
+ void Plan_Generator::
+ update_configProperty (Deployment::SubcomponentInstantiationDescription &scid,
+ Deployment::InstanceDeploymentDescription &idd)
+ {
+ size_t scid_plen =
+ scid.configProperty.length ();
+
+ size_t idd_plen = idd.configProperty.length ();
+ idd.configProperty.length (idd_plen + scid_plen);
+
+ for (size_t i = 0; i < scid_plen; ++i)
+ idd.configProperty[idd_plen + i] =
+ scid.configProperty[i];
+
+ }
+
+ void Plan_Generator::
+ update_configProperty (Deployment::PackagedComponentImplementation& pcid,
+ Deployment::MonolithicDeploymentDescription& mid,
+ Deployment::InstanceDeploymentDescription& idd)
+ {
+ bool update;
+ size_t pcid_plen = pcid.referencedImplementation
+ .configProperty.length ();
+
+ size_t mid_eplen = mid.execParameter.length ();
+ mid.execParameter.length (mid_eplen + pcid_plen);
+
+ for (size_t i = 0; i < pcid_plen; ++i)
+ {
+ update = true;
+ mid.execParameter[mid_eplen + i] = pcid.referencedImplementation
+ .configProperty[i];
+
+ const char* pname = pcid.referencedImplementation
+ .configProperty[i].name;
+
+ size_t idd_plen = idd.configProperty.length ();
+
+ for (size_t j = 0; j < idd_plen; ++j)
+ {
+ const char* idd_pname = idd.configProperty[j].name;
+ if (ACE_OS::strcmp (idd_pname, pname) == 0)
+ {
+ update = false;
+ break;
+ }
+ }
+
+ if (update)
+ {
+ idd.configProperty.length (idd_plen + 1);
+ idd.configProperty[idd_plen] =
+ pcid.referencedImplementation.configProperty[i];
+ }
+ }
+ }
+
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.h
new file mode 100644
index 00000000000..3117540082c
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.h
@@ -0,0 +1,151 @@
+/* -*- C++ -*- */
+
+//========================================================================
+/**
+ * file PlanGenerator.h
+ *
+ * $Id$
+ *
+ * This file contains a number of Visitor classes which are used to
+ * traverse the PackageConfiguration element defined in the
+ * PackagingData.idl
+ *
+ * author Stoyan Paunov <spaunov@isis.vanderbilt.edu>
+ */
+//========================================================================
+
+#ifndef PLAN_GENERATOR_H
+#define PLAN_GENERATOR_H
+
+#include "PCVisitorBase.h" //for the base visitor
+
+#include /**/ "ace/pre.h"
+#include "ace/SString.h" //for the ACE_CString
+
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_BaseC.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/Packaging_DataC.h"
+
+
+//===========================================================================
+/**
+ * class Plan_Generator
+ *
+ * This class is is the actual implementation for the PackageConfiguration
+ * Visitor. It derives from PCVisitorBase and overloads the functions which
+ * deal with single elements. Sequences are handled in the base class.
+ */
+//===========================================================================
+
+
+class Plan_Generator : public PCVisitorBase
+{
+public:
+
+ //constructor
+ Plan_Generator (Deployment::DeploymentPlan &plan,
+ Deployment::PackageConfiguration &pc);
+
+ ///Entry point to protected Visitor functions
+ void Visit ();
+
+protected:
+ /// A whole slew of overloaded routines for different IDL
+ /// data types part of the PackageConfiguration.
+
+ virtual
+ void Visit (Deployment::PackageConfiguration &pc);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageDescription descendents
+ virtual
+ void Visit (Deployment::ComponentPackageDescription &cpd);
+
+ virtual
+ void Visit (Deployment::ComponentInterfaceDescription &cid);
+
+ virtual
+ void Visit (Deployment::PackagedComponentImplementation &pci);
+
+ virtual
+ void Visit (Deployment::ComponentImplementationDescription &cid);
+
+ virtual
+ void Visit (Deployment::ComponentAssemblyDescription &cad);
+
+ virtual
+ void Visit (Deployment::SubcomponentInstantiationDescription &sid);
+
+ virtual
+ void Visit (Deployment::MonolithicImplementationDescription &mid);
+
+ virtual
+ void Visit (Deployment::NamedImplementationArtifact &nia);
+
+ virtual
+ void Visit (Deployment::ImplementationArtifactDescription &iad);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //ComponentPackageReference descendents
+ virtual
+ void Visit (Deployment::ComponentPackageReference &cpr);
+
+ //!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!
+
+ //properties
+ virtual
+ void Visit (Deployment::AssemblyPropertyMapping &apm);
+
+ virtual
+ void Visit (Deployment::Property &property);
+
+
+ //requirements & capabilities
+ virtual
+ void Visit (Deployment::Requirement &requirement);
+
+ virtual
+ void Visit (Deployment::Capability &capability);
+
+ virtual
+ void Visit (Deployment::ImplementationRequirement &ir);
+
+ virtual
+ void Visit (Deployment::ImplementationDependency &id);
+
+ //ports and connections
+ virtual
+ void Visit (Deployment::AssemblyConnectionDescription &acd);
+
+ virtual
+ void Visit (Deployment::SubcomponentPortEndpoint &spe);
+
+ virtual
+ void Visit (Deployment::ComponentExternalPortEndpoint &cepe);
+
+protected:
+ ///several helper functions
+ void update_execParameter (Deployment::ImplementationArtifactDescription& iad,
+ Deployment::ArtifactDeploymentDescription& add);
+
+ void update_configProperty (Deployment::SubcomponentInstantiationDescription &scid,
+ Deployment::InstanceDeploymentDescription &idd);
+
+ void update_configProperty (Deployment::PackagedComponentImplementation& pcid,
+ Deployment::MonolithicDeploymentDescription& mid,
+ Deployment::InstanceDeploymentDescription& idd);
+
+private:
+
+ Deployment::DeploymentPlan& plan_;
+ Deployment::PackageConfiguration& pc_;
+ Deployment::ComponentAssemblyDescription* last_cad_;
+
+};
+
+#include /**/ "ace/post.h"
+
+#endif /* PLAN_GENERATOR_H */
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl
new file mode 100644
index 00000000000..3dd220b9b8b
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.idl
@@ -0,0 +1,33 @@
+//PlanGenerator.idl,v 1.1 spaunov Exp
+//Author: Stoyan Paunov
+//$Id$
+
+#ifndef RACE_PLAN_GENERATOR_INPUT_ADAPTER_IDL
+#define RACE_PLAN_GENERATOR_INPUT_ADAPTER_IDL
+
+#include <Components.idl>
+#include "Input_Adapters/Base/Input_Adapter.idl"
+#include "common/RACE_common.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ eventtype Deploy_Input
+ {
+ public string package_name;
+ public Action command;
+ };
+
+ component PlanGenerator : Input_Adapter
+ {
+ consumes Deploy_Input deployment;
+ };
+
+ home PlanGenerator_Home manages PlanGenerator
+ {
+ };
+ };
+};
+
+#endif /* RACE_PLAN_GENERATOR_INPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable
new file mode 100644
index 00000000000..fdb014ef9cc
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator.mpc.disable
@@ -0,0 +1,118 @@
+// generate_component_mpc.pl
+//Author: Stoyan Paunov
+//PlanGenerator.mpc, spaunov
+//$Id$
+
+project(PlanGenerator_stub): ciao_deployment_stub, ciao_race_component {
+ after += Input_Adapter_stub
+ sharedname = PlanGenerator_stub
+ idlflags += -Sc \
+ -Wb,stub_export_macro=PLANGENERATOR_STUB_Export \
+ -Wb,stub_export_include=PlanGenerator_stub_export.h \
+ -Wb,skel_export_macro=PLANGENERATOR_SVNT_Export \
+ -Wb,skel_export_include=PlanGenerator_svnt_export.h
+ dynamicflags = PLANGENERATOR_STUB_BUILD_DLL
+ libs += Input_Adapter_stub \
+ Plan_Analyzer_Interface_stub
+
+ IDL_Files {
+ PlanGenerator.idl
+ }
+
+ Source_Files {
+ PlanGeneratorC.cpp
+ }
+
+ Header_Files {
+ PlanGeneratorC.h
+ }
+
+ Inline_Files {
+ PlanGeneratorC.inl
+ }
+}
+
+project(PlanGenerator_svnt) : ciao_servant_dnc, ciao_race_component {
+ after += PlanGenerator_stub \
+ Input_Adapter_svnt
+ sharedname = PlanGenerator_svnt
+ libs += PlanGenerator_stub \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub
+
+ idlflags += -Sc \
+ -Wb,export_macro=PLANGENERATOR_SVNT_Export \
+ -Wb,export_include=PlanGenerator_svnt_export.h
+
+ dynamicflags = PLANGENERATOR_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ PlanGenerator.cidl
+ }
+
+ IDL_Files {
+ PlanGeneratorE.idl
+ }
+
+ Source_Files {
+ PlanGeneratorEC.cpp
+ PlanGeneratorS.cpp
+ PlanGenerator_svnt.cpp
+ }
+
+ Header_Files {
+ PlanGeneratorEC.h
+ PlanGeneratorS.h
+ PlanGenerator_svnt.h
+ }
+
+ Inline_Files {
+ PlanGeneratorEC.inl
+ PlanGeneratorS.inl
+ PlanGenerator_svnt.inl
+ }
+}
+
+
+project(PlanGenerator_exec) : ciao_component_dnc, ciao_config_handlers, ciao_race_component {
+ after += PlanGenerator_svnt XSC_Config_Handlers
+ sharedname = PlanGenerator_exec
+ libs += PlanGenerator_stub \
+ PlanGenerator_svnt \
+ Input_Adapter_stub \
+ Input_Adapter_svnt \
+ Plan_Analyzer_Interface_stub \
+
+ idlflags += -Sc \
+ -Wb,export_macro=PLANGENERATOR_EXEC_Export \
+ -Wb,export_include=PlanGenerator_exec_export.h
+ dynamicflags = PLANGENERATOR_EXEC_BUILD_DLL
+
+ requires += RepositoryManager
+ after += RepositoryManager
+ includes += $(CIAO_ROOT)/DAnCE/RepositoryManager
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ PlanGenerator_exec.cpp
+ PCVisitorBase.cpp
+ PlanGenerator.cpp
+ $(CIAO_ROOT)/DAnCE/RepositoryManager/RepositoryManagerDaemonC.cpp
+ }
+}
+
+project(PlanGenerator_Injector) : ciao_component_dnc, ciao_race_component, taoexe {
+ exename = injector
+
+ libs += PlanGenerator_stub
+
+ IDL_Files {
+ }
+ Source_Files {
+ Injector.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat
new file mode 100644
index 00000000000..3621981b2c8
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_deployment.dat
@@ -0,0 +1 @@
+PlanGenerator corbaloc:iiop:localhost:50000/NodeManager
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp
new file mode 100644
index 00000000000..dd78aafb8b5
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.cpp
@@ -0,0 +1,265 @@
+// $Id$
+// Author: Stoyan Paunov
+
+#include "PlanGenerator_exec.h"
+#include "ciao/CIAO_common.h"
+#include "Config_Handlers/XML_File_Intf.h"
+#include "Config_Handlers/Package_Handlers/PCD_Handler.h"
+#include "Config_Handlers/Common.h"
+#include "Config_Handlers/DnC_Dump.h"
+
+#include "DAnCE/RepositoryManager/RepositoryManagerDaemonC.h"
+#include "PlanGenerator.h"
+
+#include <iostream>
+using namespace std;
+
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_PlanGenerator_Impl
+ {
+ //==================================================================
+ // Component Executor Implementation Class:
+ // PlanGenerator_exec_i
+ //==================================================================
+
+ PlanGenerator_exec_i::PlanGenerator_exec_i (void)
+ {
+ }
+
+ PlanGenerator_exec_i::~PlanGenerator_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ void
+ PlanGenerator_exec_i::push_deployment (
+ ::CIAO::RACE::Deploy_Input * ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ try
+ {
+
+ //Get the IOR of the RepoMan from the naming service
+
+ //Obtain a ref to the orb
+ CORBA::ORB_ptr orb = this->context_->_ciao_the_Container ()->the_ORB ();
+
+ //form the path to the RepoMan IOR file
+ ACE_CString RepoMan_ior = ("file://");
+ RepoMan_ior += ACE_OS::getenv ("CIAO_ROOT");
+ RepoMan_ior += "/DAnCE/RepositoryManager/RepositoryManagerDeamon.ior";
+
+ cout << "RepoMan ior file: " << RepoMan_ior.c_str () << endl;
+
+ CORBA::Object_var obj =
+ orb->string_to_object (RepoMan_ior.c_str ());
+
+ CIAO::RepositoryManagerDaemon_var rm =
+ CIAO::RepositoryManagerDaemon::_narrow (obj.in ());
+
+ if (CORBA::is_nil (rm.in ()))
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unable to acquire RepositoryManagerDaemon's objref\n"));
+
+ throw CORBA::INTERNAL ();
+ }
+
+ //now obtian the corresponding PackageConfiguration from
+ //the RepositoryManager
+
+ Deployment::PackageConfiguration* rmpc;
+
+ try
+ {
+ //retrieve the curresponding PackageConfiguration
+ //from the RepoMan
+ rmpc = rm->findPackageByName (ev->package_name ());
+
+ ACE_DEBUG ((LM_INFO,
+ "The package was found!\nUUID: %s\n",
+ rmpc->UUID));
+ }
+ catch (Deployment::NoSuchName &)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error! Package not found! Location update failed!\n"));
+
+ throw CORBA::INTERNAL ();
+
+ }
+ catch (CORBA::Exception &)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Error! General exception! Location update failed!\n"));
+
+ throw CORBA::INTERNAL ();
+ }
+
+ //now create the plan
+
+ Deployment::DeploymentPlan* plan = 0;
+ ACE_NEW_THROW_EX (plan,
+ Deployment::DeploymentPlan (),
+ CORBA::INTERNAL ());
+
+ Plan_Generator pgen (*plan, *rmpc);
+
+ //start the generation
+ pgen.Visit ();
+
+ //So now what?
+ ::Deployment::DnC_Dump::dump (*plan);
+
+ //do not call the plan analyzer just yet
+ return;
+
+ //creat an action sequence and populate it
+ ::CIAO::RACE::Plan_Actions plan_action_seq;
+
+ /// Create a Plan_Action_seq structure of length 1.
+ plan_action_seq.length (1);
+
+ /// Now populate the Plan_Action_seq structure.
+ plan_action_seq [0].command = ev->command ();
+ plan_action_seq [0].plan = *plan;
+ plan_action_seq [0].package = *rmpc;
+
+ /// Now invoke the plan_analyzer.
+ this->context_->get_connection_ingress ()
+ ->analyze_plan (plan_action_seq);
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "Exception caught in push_deployment\n"));
+ }
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ PlanGenerator_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ PlanGenerator_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ PlanGenerator_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ PlanGenerator_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ PlanGenerator_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ PlanGenerator_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ PlanGenerator_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: PlanGenerator_Home_exec_i
+ //==================================================================
+
+ PlanGenerator_Home_exec_i::PlanGenerator_Home_exec_i (void)
+ {
+ }
+
+ PlanGenerator_Home_exec_i::~PlanGenerator_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ PlanGenerator_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ PlanGenerator_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" PLANGENERATOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_PlanGenerator_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ PlanGenerator_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h
new file mode 100644
index 00000000000..76fd200c58b
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec.h
@@ -0,0 +1,121 @@
+// $Id$
+//Author: Stoyan Paunov
+
+
+#ifndef CIAO_PLANGENERATOR_EXEC_H
+#define CIAO_PLANGENERATOR_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "PlanGenerator_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "PlanGenerator_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_PlanGenerator_Impl
+ {
+ class PLANGENERATOR_EXEC_Export PlanGenerator_exec_i
+ : public virtual PlanGenerator_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ PlanGenerator_exec_i (void);
+ virtual ~PlanGenerator_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ virtual void
+ push_deployment (
+ ::CIAO::RACE::Deploy_Input *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ PlanGenerator_Context *context_;
+ };
+
+ class PLANGENERATOR_EXEC_Export PlanGenerator_Home_exec_i
+ : public virtual PlanGenerator_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ PlanGenerator_Home_exec_i (void);
+ virtual ~PlanGenerator_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" PLANGENERATOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_CIAO_RACE_PlanGenerator_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_PLANGENERATOR_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h
new file mode 100644
index 00000000000..b4bb3c8e00d
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANGENERATOR_EXEC
+// ------------------------------
+#ifndef PLANGENERATOR_EXEC_EXPORT_H
+#define PLANGENERATOR_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PLANGENERATOR_EXEC_HAS_DLL)
+# define PLANGENERATOR_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PLANGENERATOR_EXEC_HAS_DLL */
+
+#if !defined (PLANGENERATOR_EXEC_HAS_DLL)
+# define PLANGENERATOR_EXEC_HAS_DLL 1
+#endif /* ! PLANGENERATOR_EXEC_HAS_DLL */
+
+#if defined (PLANGENERATOR_EXEC_HAS_DLL) && (PLANGENERATOR_EXEC_HAS_DLL == 1)
+# if defined (PLANGENERATOR_EXEC_BUILD_DLL)
+# define PLANGENERATOR_EXEC_Export ACE_Proper_Export_Flag
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANGENERATOR_EXEC_BUILD_DLL */
+# define PLANGENERATOR_EXEC_Export ACE_Proper_Import_Flag
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANGENERATOR_EXEC_BUILD_DLL */
+#else /* PLANGENERATOR_EXEC_HAS_DLL == 1 */
+# define PLANGENERATOR_EXEC_Export
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARATION(T)
+# define PLANGENERATOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANGENERATOR_EXEC_HAS_DLL == 1 */
+
+// Set PLANGENERATOR_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANGENERATOR_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANGENERATOR_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANGENERATOR_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANGENERATOR_EXEC_NTRACE */
+
+#if (PLANGENERATOR_EXEC_NTRACE == 1)
+# define PLANGENERATOR_EXEC_TRACE(X)
+#else /* (PLANGENERATOR_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANGENERATOR_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANGENERATOR_EXEC_NTRACE == 1) */
+
+#endif /* PLANGENERATOR_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h
new file mode 100644
index 00000000000..2a3f42d0fd4
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANGENERATOR_STUB
+// ------------------------------
+#ifndef PLANGENERATOR_STUB_EXPORT_H
+#define PLANGENERATOR_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PLANGENERATOR_STUB_HAS_DLL)
+# define PLANGENERATOR_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PLANGENERATOR_STUB_HAS_DLL */
+
+#if !defined (PLANGENERATOR_STUB_HAS_DLL)
+# define PLANGENERATOR_STUB_HAS_DLL 1
+#endif /* ! PLANGENERATOR_STUB_HAS_DLL */
+
+#if defined (PLANGENERATOR_STUB_HAS_DLL) && (PLANGENERATOR_STUB_HAS_DLL == 1)
+# if defined (PLANGENERATOR_STUB_BUILD_DLL)
+# define PLANGENERATOR_STUB_Export ACE_Proper_Export_Flag
+# define PLANGENERATOR_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANGENERATOR_STUB_BUILD_DLL */
+# define PLANGENERATOR_STUB_Export ACE_Proper_Import_Flag
+# define PLANGENERATOR_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANGENERATOR_STUB_BUILD_DLL */
+#else /* PLANGENERATOR_STUB_HAS_DLL == 1 */
+# define PLANGENERATOR_STUB_Export
+# define PLANGENERATOR_STUB_SINGLETON_DECLARATION(T)
+# define PLANGENERATOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANGENERATOR_STUB_HAS_DLL == 1 */
+
+// Set PLANGENERATOR_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANGENERATOR_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANGENERATOR_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANGENERATOR_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANGENERATOR_STUB_NTRACE */
+
+#if (PLANGENERATOR_STUB_NTRACE == 1)
+# define PLANGENERATOR_STUB_TRACE(X)
+#else /* (PLANGENERATOR_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANGENERATOR_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANGENERATOR_STUB_NTRACE == 1) */
+
+#endif /* PLANGENERATOR_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h
new file mode 100644
index 00000000000..212dd57a8e9
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/PlanGenerator_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANGENERATOR_SVNT
+// ------------------------------
+#ifndef PLANGENERATOR_SVNT_EXPORT_H
+#define PLANGENERATOR_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PLANGENERATOR_SVNT_HAS_DLL)
+# define PLANGENERATOR_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PLANGENERATOR_SVNT_HAS_DLL */
+
+#if !defined (PLANGENERATOR_SVNT_HAS_DLL)
+# define PLANGENERATOR_SVNT_HAS_DLL 1
+#endif /* ! PLANGENERATOR_SVNT_HAS_DLL */
+
+#if defined (PLANGENERATOR_SVNT_HAS_DLL) && (PLANGENERATOR_SVNT_HAS_DLL == 1)
+# if defined (PLANGENERATOR_SVNT_BUILD_DLL)
+# define PLANGENERATOR_SVNT_Export ACE_Proper_Export_Flag
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANGENERATOR_SVNT_BUILD_DLL */
+# define PLANGENERATOR_SVNT_Export ACE_Proper_Import_Flag
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANGENERATOR_SVNT_BUILD_DLL */
+#else /* PLANGENERATOR_SVNT_HAS_DLL == 1 */
+# define PLANGENERATOR_SVNT_Export
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARATION(T)
+# define PLANGENERATOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANGENERATOR_SVNT_HAS_DLL == 1 */
+
+// Set PLANGENERATOR_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANGENERATOR_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANGENERATOR_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANGENERATOR_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANGENERATOR_SVNT_NTRACE */
+
+#if (PLANGENERATOR_SVNT_NTRACE == 1)
+# define PLANGENERATOR_SVNT_TRACE(X)
+#else /* (PLANGENERATOR_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANGENERATOR_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANGENERATOR_SVNT_NTRACE == 1) */
+
+#endif /* PLANGENERATOR_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Input_Adapters/PlanGenerator/README.txt b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/README.txt
new file mode 100644
index 00000000000..8cbc5665f85
--- /dev/null
+++ b/modules/CIAO/RACE/Input_Adapters/PlanGenerator/README.txt
@@ -0,0 +1,15 @@
+
+
+//Author: Stoyan Paunov
+
+This is the README for the PlanGenerator Input Adapter for RACE. This input
+adapter has similar functionality to the Interactive Input Adapter, however
+instead of parsing the descriptors on disk, it takes the provided by the
+injector package name, retrieves the corresponding PackageConfiguration, and
+finally build a DeploymentPlan in memory. Due to the fact that the XML parsing
+is avoided, the operation takes a lot less time than its counterpart in the
+Interactive Input Adapter. An added benefit is that the implementation arti-
+facts in the constructed DeploymentPlan to point to the HTTP server collocated
+with the RepositoryManager.
+
+
diff --git a/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.idl b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.idl
new file mode 100644
index 00000000000..61235b33959
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.idl
@@ -0,0 +1,19 @@
+//$Id$
+#ifndef RACE_OUTPUT_ADAPTER_IDL
+#define RACE_OUTPUT_ADAPTER_IDL
+
+#include <Components.idl>
+#include "../Interface/PlanEgress.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ component Output_Adapter
+ {
+ provides PlanEgress plan_egress;
+ };
+ };
+};
+
+#endif /* RACE_OUTPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.mpc b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.mpc
new file mode 100644
index 00000000000..32368cb1845
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter.mpc
@@ -0,0 +1,60 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Planner"
+
+project(Output_Adapter_stub): ciao_deployment_stub {
+
+ after += Output_Adapter_Interface_stub
+ sharedname = Output_Adapter_stub
+ idlflags += -Wb,stub_export_macro=OUTPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=Output_Adapter_stub_export.h \
+ -Wb,skel_export_macro=OUTPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=Output_Adapter_svnt_export.h
+ dynamicflags = OUTPUT_ADAPTER_STUB_BUILD_DLL
+ libs += Output_Adapter_Interface_stub
+
+ IDL_Files {
+ Output_Adapter.idl
+ }
+
+ Source_Files {
+ Output_AdapterC.cpp
+ }
+
+ Header_Files {
+ Output_AdapterC.h
+ }
+
+ Inline_Files {
+ Output_AdapterC.inl
+ }
+}
+
+project(Output_Adapter_svnt) : ciao_servant_dnc {
+
+ after += Output_Adapter_stub Output_Adapter_Interface_svnt
+ sharedname = Output_Adapter_svnt
+ libs += Output_Adapter_stub Output_Adapter_Interface_svnt Output_Adapter_Interface_stub
+
+ idlflags += -Wb,stub_export_macro=OUTPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=Output_Adapter_stub_export.h \
+ -Wb,skel_export_macro=OUTPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=Output_Adapter_svnt_export.h
+ dynamicflags = OUTPUT_ADAPTER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Output_Adapter.idl
+ }
+
+ Source_Files {
+ Output_AdapterS.cpp
+ }
+
+ Header_Files {
+ Output_AdapterS.h
+ }
+
+ Inline_Files {
+ Output_AdapterS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_stub_export.h b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_stub_export.h
new file mode 100644
index 00000000000..2956242afb3
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl OUTPUT_ADAPTER_STUB
+// ------------------------------
+#ifndef OUTPUT_ADAPTER_STUB_EXPORT_H
+#define OUTPUT_ADAPTER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (OUTPUT_ADAPTER_STUB_HAS_DLL)
+# define OUTPUT_ADAPTER_STUB_HAS_DLL 1
+#endif /* ! OUTPUT_ADAPTER_STUB_HAS_DLL */
+
+#if defined (OUTPUT_ADAPTER_STUB_HAS_DLL) && (OUTPUT_ADAPTER_STUB_HAS_DLL == 1)
+# if defined (OUTPUT_ADAPTER_STUB_BUILD_DLL)
+# define OUTPUT_ADAPTER_STUB_Export ACE_Proper_Export_Flag
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* OUTPUT_ADAPTER_STUB_BUILD_DLL */
+# define OUTPUT_ADAPTER_STUB_Export ACE_Proper_Import_Flag
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* OUTPUT_ADAPTER_STUB_BUILD_DLL */
+#else /* OUTPUT_ADAPTER_STUB_HAS_DLL == 1 */
+# define OUTPUT_ADAPTER_STUB_Export
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T)
+# define OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* OUTPUT_ADAPTER_STUB_HAS_DLL == 1 */
+
+// Set OUTPUT_ADAPTER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (OUTPUT_ADAPTER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define OUTPUT_ADAPTER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define OUTPUT_ADAPTER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !OUTPUT_ADAPTER_STUB_NTRACE */
+
+#if (OUTPUT_ADAPTER_STUB_NTRACE == 1)
+# define OUTPUT_ADAPTER_STUB_TRACE(X)
+#else /* (OUTPUT_ADAPTER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define OUTPUT_ADAPTER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (OUTPUT_ADAPTER_STUB_NTRACE == 1) */
+
+#endif /* OUTPUT_ADAPTER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_svnt_export.h b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_svnt_export.h
new file mode 100644
index 00000000000..d64111d83d2
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Base/Output_Adapter_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl OUTPUT_ADAPTER_SVNT
+// ------------------------------
+#ifndef OUTPUT_ADAPTER_SVNT_EXPORT_H
+#define OUTPUT_ADAPTER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (OUTPUT_ADAPTER_SVNT_HAS_DLL)
+# define OUTPUT_ADAPTER_SVNT_HAS_DLL 1
+#endif /* ! OUTPUT_ADAPTER_SVNT_HAS_DLL */
+
+#if defined (OUTPUT_ADAPTER_SVNT_HAS_DLL) && (OUTPUT_ADAPTER_SVNT_HAS_DLL == 1)
+# if defined (OUTPUT_ADAPTER_SVNT_BUILD_DLL)
+# define OUTPUT_ADAPTER_SVNT_Export ACE_Proper_Export_Flag
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* OUTPUT_ADAPTER_SVNT_BUILD_DLL */
+# define OUTPUT_ADAPTER_SVNT_Export ACE_Proper_Import_Flag
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* OUTPUT_ADAPTER_SVNT_BUILD_DLL */
+#else /* OUTPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+# define OUTPUT_ADAPTER_SVNT_Export
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T)
+# define OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* OUTPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+
+// Set OUTPUT_ADAPTER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (OUTPUT_ADAPTER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define OUTPUT_ADAPTER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define OUTPUT_ADAPTER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !OUTPUT_ADAPTER_SVNT_NTRACE */
+
+#if (OUTPUT_ADAPTER_SVNT_NTRACE == 1)
+# define OUTPUT_ADAPTER_SVNT_TRACE(X)
+#else /* (OUTPUT_ADAPTER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define OUTPUT_ADAPTER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (OUTPUT_ADAPTER_SVNT_NTRACE == 1) */
+
+#endif /* OUTPUT_ADAPTER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/Component/Output_Manager.idl b/modules/CIAO/RACE/Output_Adapters/Component/Output_Manager.idl
new file mode 100644
index 00000000000..6f0199494f5
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Component/Output_Manager.idl
@@ -0,0 +1,18 @@
+//$Id$
+#ifndef RACE_OUTPUT_MANAGER_IDL
+#define RACE_OUTPUT_MANAGER_IDL
+
+#include <Components.idl>
+
+module CIAO
+{
+ module RACE
+ {
+ component Output_Manager
+ {
+ provides PlanEgress output;
+ uses multiple PlanEgress adapters;
+ };
+
+ };
+};
diff --git a/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc
new file mode 100644
index 00000000000..26d14b54196
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface.mpc
@@ -0,0 +1,58 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Output_Adapter_Interface"
+
+project(Output_Adapter_Interface_stub): ciao_deployment_stub {
+
+ sharedname = Output_Adapter_Interface_stub
+ idlflags += -Wb,stub_export_macro=OUTPUT_ADAPTER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Output_Adapter_Interface_stub_export.h \
+ -Wb,skel_export_macro=OUTPUT_ADAPTER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Output_Adapter_Interface_svnt_export.h
+ dynamicflags = OUTPUT_ADAPTER_INTERFACE_STUB_BUILD_DLL
+
+ IDL_Files {
+ PlanEgress.idl
+ }
+
+ Source_Files {
+ PlanEgressC.cpp
+ }
+
+ Header_Files {
+ PlanEgressC.h
+ }
+
+ Inline_Files {
+ PlanEgressC.inl
+ }
+}
+
+project(Output_Adapter_Interface_svnt) : ciao_servant_dnc {
+
+ after += Output_Adapter_Interface_stub
+ sharedname = Output_Adapter_Interface_svnt
+ libs += Output_Adapter_Interface_stub
+
+ idlflags += -Wb,stub_export_macro=OUTPUT_ADAPTER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Output_Adapter_Interface_stub_export.h \
+ -Wb,skel_export_macro=OUTPUT_ADAPTER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Output_Adapter_Interface_svnt_export.h
+ dynamicflags = OUTPUT_ADAPTER_INTERFACE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ PlanEgress.idl
+ }
+
+ Source_Files {
+ PlanEgressS.cpp
+ }
+
+ Header_Files {
+ PlanEgressS.h
+ }
+
+ Inline_Files {
+ PlanEgressS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_stub_export.h b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_stub_export.h
new file mode 100644
index 00000000000..3a36a07de87
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl OUTPUT_ADAPTER_INTERFACE_STUB
+// ------------------------------
+#ifndef OUTPUT_ADAPTER_INTERFACE_STUB_EXPORT_H
+#define OUTPUT_ADAPTER_INTERFACE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL 1
+#endif /* ! OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL */
+
+#if defined (OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL) && (OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL == 1)
+# if defined (OUTPUT_ADAPTER_INTERFACE_STUB_BUILD_DLL)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_Export ACE_Proper_Export_Flag
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* OUTPUT_ADAPTER_INTERFACE_STUB_BUILD_DLL */
+# define OUTPUT_ADAPTER_INTERFACE_STUB_Export ACE_Proper_Import_Flag
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* OUTPUT_ADAPTER_INTERFACE_STUB_BUILD_DLL */
+#else /* OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL == 1 */
+# define OUTPUT_ADAPTER_INTERFACE_STUB_Export
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARATION(T)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* OUTPUT_ADAPTER_INTERFACE_STUB_HAS_DLL == 1 */
+
+// Set OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE */
+
+#if (OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE == 1)
+# define OUTPUT_ADAPTER_INTERFACE_STUB_TRACE(X)
+#else /* (OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define OUTPUT_ADAPTER_INTERFACE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (OUTPUT_ADAPTER_INTERFACE_STUB_NTRACE == 1) */
+
+#endif /* OUTPUT_ADAPTER_INTERFACE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_svnt_export.h b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_svnt_export.h
new file mode 100644
index 00000000000..f180492dceb
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Interface/Output_Adapter_Interface_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl OUTPUT_ADAPTER_INTERFACE_SVNT
+// ------------------------------
+#ifndef OUTPUT_ADAPTER_INTERFACE_SVNT_EXPORT_H
+#define OUTPUT_ADAPTER_INTERFACE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL 1
+#endif /* ! OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL */
+
+#if defined (OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL) && (OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL == 1)
+# if defined (OUTPUT_ADAPTER_INTERFACE_SVNT_BUILD_DLL)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_Export ACE_Proper_Export_Flag
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* OUTPUT_ADAPTER_INTERFACE_SVNT_BUILD_DLL */
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_Export ACE_Proper_Import_Flag
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* OUTPUT_ADAPTER_INTERFACE_SVNT_BUILD_DLL */
+#else /* OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL == 1 */
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_Export
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARATION(T)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* OUTPUT_ADAPTER_INTERFACE_SVNT_HAS_DLL == 1 */
+
+// Set OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE */
+
+#if (OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE == 1)
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_TRACE(X)
+#else /* (OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define OUTPUT_ADAPTER_INTERFACE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (OUTPUT_ADAPTER_INTERFACE_SVNT_NTRACE == 1) */
+
+#endif /* OUTPUT_ADAPTER_INTERFACE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/Interface/PlanEgress.idl b/modules/CIAO/RACE/Output_Adapters/Interface/PlanEgress.idl
new file mode 100644
index 00000000000..911c9966f06
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/Interface/PlanEgress.idl
@@ -0,0 +1,22 @@
+//$Id$
+#ifndef RACE_PLAN_EGRESS_IDL
+#define RACE_PLAN_EGRESS_IDL
+
+#ifndef INCLUDED_DEPLOYMENT_DATA
+#define INCLUDED_DEPLOYMENT_DATA
+#include "Deployment_DeploymentPlan.idl"
+#endif
+
+module CIAO
+{
+
+ module RACE
+ {
+ interface PlanEgress
+ {
+ boolean output_plan (in Deployment::DeploymentPlan plan);
+ };
+ };
+};
+
+#endif /* RACE_PLAN_EGRESS_IDL */
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.cidl b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.cidl
new file mode 100644
index 00000000000..bfd889a8dd3
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.cidl
@@ -0,0 +1,25 @@
+//$Id$
+//XML_Output_Adapter.cidl
+
+#ifndef RACE_XML_OUTPUT_ADAPTER_CIDL
+#define RACE_XML_OUTPUT_ADAPTER_CIDL
+
+#include "XML_Output_Adapter.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session XML_Output_Adapter_Impl
+ {
+ home executor XML_Output_Adapter_Home_Exec
+ {
+ implements RACE::XML_Output_Adapter_Home;
+ manages XML_Output_Adapter_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_XML_OUTPUT_ADAPTER_CIDL */
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.idl b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.idl
new file mode 100644
index 00000000000..818e1626111
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.idl
@@ -0,0 +1,21 @@
+//$Id$
+#ifndef RACE_XML_OUTPUT_ADAPTER_IDL
+#define RACE_XML_OUTPUT_ADAPTER_IDL
+
+#include "../Base/Output_Adapter.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ component XML_Output_Adapter : Output_Adapter
+ {
+ };
+
+ home XML_Output_Adapter_Home manages XML_Output_Adapter
+ {
+ };
+ };
+};
+
+#endif /* RACE_XML_OUTPUT_ADAPTER_IDL */
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc
new file mode 100644
index 00000000000..fca465a75fd
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter.mpc
@@ -0,0 +1,76 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -p Output_Adapter XML_Output_Adapter"
+
+project(XML_Output_Adapter_stub): ciao_deployment_stub {
+ after += Output_Adapter_stub
+ sharedname = XML_Output_Adapter_stub
+ idlflags += -Wb,stub_export_macro=XML_OUTPUT_ADAPTER_STUB_Export \
+ -Wb,stub_export_include=XML_Output_Adapter_stub_export.h \
+ -Wb,skel_export_macro=XML_OUTPUT_ADAPTER_SVNT_Export \
+ -Wb,skel_export_include=XML_Output_Adapter_svnt_export.h
+ dynamicflags = XML_OUTPUT_ADAPTER_STUB_BUILD_DLL
+ libs += Output_Adapter_stub \
+ Output_Adapter_Interface_stub
+
+ IDL_Files {
+ XML_Output_Adapter.idl
+ }
+
+ Source_Files {
+ XML_Output_AdapterC.cpp
+ }
+}
+
+project(XML_Output_Adapter_svnt) : ciao_servant_dnc {
+ after += Output_Adapter_svnt XML_Output_Adapter_stub
+ sharedname = XML_Output_Adapter_svnt
+ libs += XML_Output_Adapter_stub \
+ Output_Adapter_stub \
+ Output_Adapter_svnt \
+ Output_Adapter_Interface_stub \
+ Output_Adapter_Interface_svnt
+
+ idlflags += -Wb,export_macro=XML_OUTPUT_ADAPTER_SVNT_Export \
+ -Wb,export_include=XML_Output_Adapter_svnt_export.h
+ dynamicflags = XML_OUTPUT_ADAPTER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ XML_Output_Adapter.cidl
+ }
+
+ IDL_Files {
+ XML_Output_AdapterE.idl
+ }
+
+ Source_Files {
+ XML_Output_AdapterEC.cpp
+ XML_Output_AdapterS.cpp
+ XML_Output_Adapter_svnt.cpp
+ }
+}
+
+
+project(XML_Output_Adapter_exec) : ciao_component_dnc {
+ after += XML_Output_Adapter_svnt
+ sharedname = XML_Output_Adapter_exec
+ libs += XML_Output_Adapter_stub \
+ XML_Output_Adapter_svnt \
+ Output_Adapter_stub \
+ Output_Adapter_svnt \
+ Output_Adapter_Interface_stub \
+ Output_Adapter_Interface_svnt
+
+ idlflags += -Wb,export_macro=XML_OUTPUT_ADAPTER_EXEC_Export \
+ -Wb,export_include=XML_Output_Adapter_exec_export.h
+ dynamicflags = XML_OUTPUT_ADAPTER_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+
+ XML_Output_Adapter_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.cpp b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.cpp
new file mode 100644
index 00000000000..26288a3b96c
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.cpp
@@ -0,0 +1,198 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "XML_Output_Adapter_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_XML_Output_Adapter_Impl
+ {
+ //==================================================================
+ // Facet Executor Implementation Class: PlanEgress_exec_i
+ //==================================================================
+
+ PlanEgress_exec_i::PlanEgress_exec_i (void)
+ {
+ }
+
+ PlanEgress_exec_i::~PlanEgress_exec_i (void)
+ {
+ }
+
+ // Operations from ::CIAO::RACE::PlanEgress
+
+ ::CORBA::Boolean
+ PlanEgress_exec_i::output_plan (
+ const ::Deployment::DeploymentPlan & /* plan */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return false;
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: XML_Output_Adapter_exec_i
+ //==================================================================
+
+ XML_Output_Adapter_exec_i::XML_Output_Adapter_exec_i (void)
+ {
+ }
+
+ XML_Output_Adapter_exec_i::~XML_Output_Adapter_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ ::CIAO::RACE::CCM_PlanEgress_ptr
+ XML_Output_Adapter_exec_i::get_plan_egress ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return ::CIAO::RACE::CCM_PlanEgress::_nil ();
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ XML_Output_Adapter_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ XML_Output_Adapter_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ XML_Output_Adapter_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ XML_Output_Adapter_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ XML_Output_Adapter_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ XML_Output_Adapter_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ XML_Output_Adapter_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: XML_Output_Adapter_Home_exec_i
+ //==================================================================
+
+ XML_Output_Adapter_Home_exec_i::XML_Output_Adapter_Home_exec_i (void)
+ {
+ }
+
+ XML_Output_Adapter_Home_exec_i::~XML_Output_Adapter_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ XML_Output_Adapter_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ XML_Output_Adapter_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" XML_OUTPUT_ADAPTER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createXML_Output_Adapter_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ XML_Output_Adapter_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.h b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.h
new file mode 100644
index 00000000000..2dc45207a3e
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec.h
@@ -0,0 +1,152 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_XML_OUTPUT_ADAPTER_EXEC_H
+#define CIAO_XML_OUTPUT_ADAPTER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "XML_Output_Adapter_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "XML_Output_Adapter_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_XML_Output_Adapter_Impl
+ {
+ class XML_OUTPUT_ADAPTER_EXEC_Export PlanEgress_exec_i
+ : public virtual ::CIAO::RACE::CCM_PlanEgress,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ PlanEgress_exec_i (void);
+ virtual ~PlanEgress_exec_i (void);
+
+ // Operations from ::CIAO::RACE::PlanEgress
+
+ virtual ::CORBA::Boolean
+ output_plan (
+ const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class XML_OUTPUT_ADAPTER_EXEC_Export XML_Output_Adapter_exec_i
+ : public virtual XML_Output_Adapter_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ XML_Output_Adapter_exec_i (void);
+ virtual ~XML_Output_Adapter_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ virtual ::CIAO::RACE::CCM_PlanEgress_ptr
+ get_plan_egress ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ XML_Output_Adapter_Context *context_;
+ };
+
+ class XML_OUTPUT_ADAPTER_EXEC_Export XML_Output_Adapter_Home_exec_i
+ : public virtual XML_Output_Adapter_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ XML_Output_Adapter_Home_exec_i (void);
+ virtual ~XML_Output_Adapter_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" XML_OUTPUT_ADAPTER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createXML_Output_Adapter_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_XML_OUTPUT_ADAPTER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec_export.h b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec_export.h
new file mode 100644
index 00000000000..6fdbd02c910
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl XML_OUTPUT_ADAPTER_EXEC
+// ------------------------------
+#ifndef XML_OUTPUT_ADAPTER_EXEC_EXPORT_H
+#define XML_OUTPUT_ADAPTER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (XML_OUTPUT_ADAPTER_EXEC_HAS_DLL)
+# define XML_OUTPUT_ADAPTER_EXEC_HAS_DLL 1
+#endif /* ! XML_OUTPUT_ADAPTER_EXEC_HAS_DLL */
+
+#if defined (XML_OUTPUT_ADAPTER_EXEC_HAS_DLL) && (XML_OUTPUT_ADAPTER_EXEC_HAS_DLL == 1)
+# if defined (XML_OUTPUT_ADAPTER_EXEC_BUILD_DLL)
+# define XML_OUTPUT_ADAPTER_EXEC_Export ACE_Proper_Export_Flag
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* XML_OUTPUT_ADAPTER_EXEC_BUILD_DLL */
+# define XML_OUTPUT_ADAPTER_EXEC_Export ACE_Proper_Import_Flag
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* XML_OUTPUT_ADAPTER_EXEC_BUILD_DLL */
+#else /* XML_OUTPUT_ADAPTER_EXEC_HAS_DLL == 1 */
+# define XML_OUTPUT_ADAPTER_EXEC_Export
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARATION(T)
+# define XML_OUTPUT_ADAPTER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* XML_OUTPUT_ADAPTER_EXEC_HAS_DLL == 1 */
+
+// Set XML_OUTPUT_ADAPTER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (XML_OUTPUT_ADAPTER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define XML_OUTPUT_ADAPTER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !XML_OUTPUT_ADAPTER_EXEC_NTRACE */
+
+#if (XML_OUTPUT_ADAPTER_EXEC_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_EXEC_TRACE(X)
+#else /* (XML_OUTPUT_ADAPTER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define XML_OUTPUT_ADAPTER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (XML_OUTPUT_ADAPTER_EXEC_NTRACE == 1) */
+
+#endif /* XML_OUTPUT_ADAPTER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_stub_export.h b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_stub_export.h
new file mode 100644
index 00000000000..40bf6add478
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl XML_OUTPUT_ADAPTER_STUB
+// ------------------------------
+#ifndef XML_OUTPUT_ADAPTER_STUB_EXPORT_H
+#define XML_OUTPUT_ADAPTER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (XML_OUTPUT_ADAPTER_STUB_HAS_DLL)
+# define XML_OUTPUT_ADAPTER_STUB_HAS_DLL 1
+#endif /* ! XML_OUTPUT_ADAPTER_STUB_HAS_DLL */
+
+#if defined (XML_OUTPUT_ADAPTER_STUB_HAS_DLL) && (XML_OUTPUT_ADAPTER_STUB_HAS_DLL == 1)
+# if defined (XML_OUTPUT_ADAPTER_STUB_BUILD_DLL)
+# define XML_OUTPUT_ADAPTER_STUB_Export ACE_Proper_Export_Flag
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* XML_OUTPUT_ADAPTER_STUB_BUILD_DLL */
+# define XML_OUTPUT_ADAPTER_STUB_Export ACE_Proper_Import_Flag
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* XML_OUTPUT_ADAPTER_STUB_BUILD_DLL */
+#else /* XML_OUTPUT_ADAPTER_STUB_HAS_DLL == 1 */
+# define XML_OUTPUT_ADAPTER_STUB_Export
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARATION(T)
+# define XML_OUTPUT_ADAPTER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* XML_OUTPUT_ADAPTER_STUB_HAS_DLL == 1 */
+
+// Set XML_OUTPUT_ADAPTER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (XML_OUTPUT_ADAPTER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define XML_OUTPUT_ADAPTER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !XML_OUTPUT_ADAPTER_STUB_NTRACE */
+
+#if (XML_OUTPUT_ADAPTER_STUB_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_STUB_TRACE(X)
+#else /* (XML_OUTPUT_ADAPTER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define XML_OUTPUT_ADAPTER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (XML_OUTPUT_ADAPTER_STUB_NTRACE == 1) */
+
+#endif /* XML_OUTPUT_ADAPTER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_svnt_export.h b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_svnt_export.h
new file mode 100644
index 00000000000..7c563fadf8a
--- /dev/null
+++ b/modules/CIAO/RACE/Output_Adapters/XML_Output_Adapter/XML_Output_Adapter_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl XML_OUTPUT_ADAPTER_SVNT
+// ------------------------------
+#ifndef XML_OUTPUT_ADAPTER_SVNT_EXPORT_H
+#define XML_OUTPUT_ADAPTER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (XML_OUTPUT_ADAPTER_SVNT_HAS_DLL)
+# define XML_OUTPUT_ADAPTER_SVNT_HAS_DLL 1
+#endif /* ! XML_OUTPUT_ADAPTER_SVNT_HAS_DLL */
+
+#if defined (XML_OUTPUT_ADAPTER_SVNT_HAS_DLL) && (XML_OUTPUT_ADAPTER_SVNT_HAS_DLL == 1)
+# if defined (XML_OUTPUT_ADAPTER_SVNT_BUILD_DLL)
+# define XML_OUTPUT_ADAPTER_SVNT_Export ACE_Proper_Export_Flag
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* XML_OUTPUT_ADAPTER_SVNT_BUILD_DLL */
+# define XML_OUTPUT_ADAPTER_SVNT_Export ACE_Proper_Import_Flag
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* XML_OUTPUT_ADAPTER_SVNT_BUILD_DLL */
+#else /* XML_OUTPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+# define XML_OUTPUT_ADAPTER_SVNT_Export
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARATION(T)
+# define XML_OUTPUT_ADAPTER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* XML_OUTPUT_ADAPTER_SVNT_HAS_DLL == 1 */
+
+// Set XML_OUTPUT_ADAPTER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (XML_OUTPUT_ADAPTER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define XML_OUTPUT_ADAPTER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !XML_OUTPUT_ADAPTER_SVNT_NTRACE */
+
+#if (XML_OUTPUT_ADAPTER_SVNT_NTRACE == 1)
+# define XML_OUTPUT_ADAPTER_SVNT_TRACE(X)
+#else /* (XML_OUTPUT_ADAPTER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define XML_OUTPUT_ADAPTER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (XML_OUTPUT_ADAPTER_SVNT_NTRACE == 1) */
+
+#endif /* XML_OUTPUT_ADAPTER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.cidl b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.cidl
new file mode 100644
index 00000000000..abb90746baa
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.cidl
@@ -0,0 +1,25 @@
+//$Id$
+//Plan_Analyzer.cidl
+
+#ifndef RACE_PLAN_ANALYZER_CIDL
+#define RACE_PLAN_ANALYZER_CIDL
+
+#include "Plan_Analyzer.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session Plan_Analyzer_Impl
+ {
+ home executor Plan_Analyzer_Home_Exec
+ {
+ implements RACE::Plan_Analyzer_Home;
+ manages Plan_Analyzer_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_PLAN_ANALYZER_CIDL */
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.idl b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.idl
new file mode 100644
index 00000000000..9f4fdd4668d
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.idl
@@ -0,0 +1,32 @@
+//$Id$
+#ifndef RACE_PLAN_ANALYZER_IDL
+#define RACE_PLAN_ANALYZER_IDL
+
+#include <Components.idl>
+#include "../Interface/PlanIngress.idl"
+#include "../../Planner_Manager/Interface/Planner_Manager_I.idl"
+
+module CIAO
+{
+
+ module RACE
+ {
+ component Plan_Analyzer
+ {
+ provides PlanIngress plan_ingress;
+ uses Planner_Manager_I planner_manager_i;
+
+ readonly attribute RACE_Classifications classes;
+
+ // provides PlannerInfo pinfo;
+ // uses multiple Analyzer plugins;
+ };
+
+ home Plan_Analyzer_Home manages Plan_Analyzer
+ {
+ };
+ };
+};
+
+
+#endif /* RACE_PLAN_ANALYZER_IDL */
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc
new file mode 100644
index 00000000000..ccf3d9dae17
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer.mpc
@@ -0,0 +1,100 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl Plan_Analyzer"
+
+project(Plan_Analyzer_stub): ciao_deployment_stub {
+ after += Plan_Analyzer_Interface_stub \
+ RACE_common_stub \
+ Planner_Manager_Interface_stub
+ sharedname = Plan_Analyzer_stub
+ idlflags += -Wb,stub_export_macro=PLAN_ANALYZER_STUB_Export \
+ -Wb,stub_export_include=Plan_Analyzer_stub_export.h \
+ -Wb,skel_export_macro=PLAN_ANALYZER_SVNT_Export \
+ -Wb,skel_export_include=Plan_Analyzer_svnt_export.h
+ dynamicflags = PLAN_ANALYZER_STUB_BUILD_DLL
+ libs += Plan_Analyzer_Interface_stub \
+ RACE_common_stub \
+ Planner_Manager_Interface_stub
+
+ IDL_Files {
+ Plan_Analyzer.idl
+ }
+
+ Source_Files {
+ Plan_AnalyzerC.cpp
+ }
+
+ Header_Files {
+ Plan_AnalyzerC.h
+ }
+
+ Inline_Files {
+ Plan_AnalyzerC.inl
+ }
+}
+
+project(Plan_Analyzer_svnt) : ciao_servant_dnc {
+ after += Plan_Analyzer_stub \
+ Plan_Analyzer_Interface_svnt
+ sharedname = Plan_Analyzer_svnt
+ libs += Plan_Analyzer_stub \
+ RACE_common_stub \
+ Plan_Analyzer_Interface_stub \
+ Plan_Analyzer_Interface_svnt \
+ Planner_Manager_Interface_stub
+
+ idlflags += -Wb,export_macro=PLAN_ANALYZER_SVNT_Export \
+ -Wb,export_include=Plan_Analyzer_svnt_export.h
+
+ dynamicflags = PLAN_ANALYZER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Plan_Analyzer.cidl
+ }
+
+ IDL_Files {
+ Plan_AnalyzerE.idl
+ }
+
+ Source_Files {
+ Plan_AnalyzerEC.cpp
+ Plan_AnalyzerS.cpp
+ Plan_Analyzer_svnt.cpp
+ }
+
+ Header_Files {
+ Plan_AnalyzerEC.h
+ Plan_AnalyzerS.h
+ Plan_Analyzer_svnt.h
+ }
+
+ Inline_Files {
+ Plan_AnalyzerEC.inl
+ Plan_AnalyzerS.inl
+ Plan_Analyzer_svnt.inl
+ }
+}
+
+
+project(Plan_Analyzer_exec) : ciao_component_dnc {
+ after += Plan_Analyzer_svnt
+ sharedname = Plan_Analyzer_exec
+ libs += Plan_Analyzer_stub \
+ Plan_Analyzer_svnt \
+ RACE_common_stub \
+ Plan_Analyzer_Interface_stub \
+ Plan_Analyzer_Interface_svnt \
+ Planner_Manager_Interface_stub
+
+ idlflags += -Wb,export_macro=PLAN_ANALYZER_EXEC_Export \
+ -Wb,export_include=Plan_Analyzer_exec_export.h
+ dynamicflags = PLAN_ANALYZER_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ Plan_Analyzer_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.cpp b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.cpp
new file mode 100644
index 00000000000..09e976afbbe
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.cpp
@@ -0,0 +1,205 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Plan_Analyzer_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Plan_Analyzer_Impl
+ {
+ //==================================================================
+ // Facet Executor Implementation Class: PlanIngress_exec_i
+ //==================================================================
+
+ PlanIngress_exec_i::PlanIngress_exec_i (void)
+ {
+ }
+
+ PlanIngress_exec_i::~PlanIngress_exec_i (void)
+ {
+ }
+
+ // Operations from ::CIAO::RACE::PlanIngress
+
+ void
+ PlanIngress_exec_i::analyze_plan (
+ const ::Deployment::DeploymentPlan & /* plan */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: Plan_Analyzer_exec_i
+ //==================================================================
+
+ Plan_Analyzer_exec_i::Plan_Analyzer_exec_i (void)
+ {
+ }
+
+ Plan_Analyzer_exec_i::~Plan_Analyzer_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ ::CIAO::RACE::RACE_Classifications *
+ Plan_Analyzer_exec_i::classes ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return 0;
+ }
+
+ // Port operations.
+
+ ::CIAO::RACE::CCM_PlanIngress_ptr
+ Plan_Analyzer_exec_i::get_plan_ingress ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return ::CIAO::RACE::CCM_PlanIngress::_nil ();
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ Plan_Analyzer_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Plan_Analyzer_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Plan_Analyzer_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Plan_Analyzer_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Plan_Analyzer_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Plan_Analyzer_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Plan_Analyzer_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: Plan_Analyzer_Home_exec_i
+ //==================================================================
+
+ Plan_Analyzer_Home_exec_i::Plan_Analyzer_Home_exec_i (void)
+ {
+ }
+
+ Plan_Analyzer_Home_exec_i::~Plan_Analyzer_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ Plan_Analyzer_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Plan_Analyzer_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" PLAN_ANALYZER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createPlan_Analyzer_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Plan_Analyzer_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.h b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.h
new file mode 100644
index 00000000000..93318713481
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec.h
@@ -0,0 +1,156 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_PLAN_ANALYZER_EXEC_H
+#define CIAO_PLAN_ANALYZER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Plan_Analyzer_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Plan_Analyzer_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Plan_Analyzer_Impl
+ {
+ class PLAN_ANALYZER_EXEC_Export PlanIngress_exec_i
+ : public virtual ::CIAO::RACE::CCM_PlanIngress,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ PlanIngress_exec_i (void);
+ virtual ~PlanIngress_exec_i (void);
+
+ // Operations from ::CIAO::RACE::PlanIngress
+
+ virtual void
+ analyze_plan (
+ const ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class PLAN_ANALYZER_EXEC_Export Plan_Analyzer_exec_i
+ : public virtual Plan_Analyzer_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Plan_Analyzer_exec_i (void);
+ virtual ~Plan_Analyzer_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ virtual ::CIAO::RACE::RACE_Classifications *
+ classes ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ virtual ::CIAO::RACE::CCM_PlanIngress_ptr
+ get_plan_ingress ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Plan_Analyzer_Context *context_;
+ };
+
+ class PLAN_ANALYZER_EXEC_Export Plan_Analyzer_Home_exec_i
+ : public virtual Plan_Analyzer_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Plan_Analyzer_Home_exec_i (void);
+ virtual ~Plan_Analyzer_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" PLAN_ANALYZER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createPlan_Analyzer_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_PLAN_ANALYZER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec_export.h b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec_export.h
new file mode 100644
index 00000000000..d2449edd9e7
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLAN_ANALYZER_EXEC
+// ------------------------------
+#ifndef PLAN_ANALYZER_EXEC_EXPORT_H
+#define PLAN_ANALYZER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLAN_ANALYZER_EXEC_HAS_DLL)
+# define PLAN_ANALYZER_EXEC_HAS_DLL 1
+#endif /* ! PLAN_ANALYZER_EXEC_HAS_DLL */
+
+#if defined (PLAN_ANALYZER_EXEC_HAS_DLL) && (PLAN_ANALYZER_EXEC_HAS_DLL == 1)
+# if defined (PLAN_ANALYZER_EXEC_BUILD_DLL)
+# define PLAN_ANALYZER_EXEC_Export ACE_Proper_Export_Flag
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_ANALYZER_EXEC_BUILD_DLL */
+# define PLAN_ANALYZER_EXEC_Export ACE_Proper_Import_Flag
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_ANALYZER_EXEC_BUILD_DLL */
+#else /* PLAN_ANALYZER_EXEC_HAS_DLL == 1 */
+# define PLAN_ANALYZER_EXEC_Export
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARATION(T)
+# define PLAN_ANALYZER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_ANALYZER_EXEC_HAS_DLL == 1 */
+
+// Set PLAN_ANALYZER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_ANALYZER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_ANALYZER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_ANALYZER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_ANALYZER_EXEC_NTRACE */
+
+#if (PLAN_ANALYZER_EXEC_NTRACE == 1)
+# define PLAN_ANALYZER_EXEC_TRACE(X)
+#else /* (PLAN_ANALYZER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_ANALYZER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_ANALYZER_EXEC_NTRACE == 1) */
+
+#endif /* PLAN_ANALYZER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_stub_export.h b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_stub_export.h
new file mode 100644
index 00000000000..90b041f89a8
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLAN_ANALYZER_STUB
+// ------------------------------
+#ifndef PLAN_ANALYZER_STUB_EXPORT_H
+#define PLAN_ANALYZER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLAN_ANALYZER_STUB_HAS_DLL)
+# define PLAN_ANALYZER_STUB_HAS_DLL 1
+#endif /* ! PLAN_ANALYZER_STUB_HAS_DLL */
+
+#if defined (PLAN_ANALYZER_STUB_HAS_DLL) && (PLAN_ANALYZER_STUB_HAS_DLL == 1)
+# if defined (PLAN_ANALYZER_STUB_BUILD_DLL)
+# define PLAN_ANALYZER_STUB_Export ACE_Proper_Export_Flag
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_ANALYZER_STUB_BUILD_DLL */
+# define PLAN_ANALYZER_STUB_Export ACE_Proper_Import_Flag
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_ANALYZER_STUB_BUILD_DLL */
+#else /* PLAN_ANALYZER_STUB_HAS_DLL == 1 */
+# define PLAN_ANALYZER_STUB_Export
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARATION(T)
+# define PLAN_ANALYZER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_ANALYZER_STUB_HAS_DLL == 1 */
+
+// Set PLAN_ANALYZER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_ANALYZER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_ANALYZER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_ANALYZER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_ANALYZER_STUB_NTRACE */
+
+#if (PLAN_ANALYZER_STUB_NTRACE == 1)
+# define PLAN_ANALYZER_STUB_TRACE(X)
+#else /* (PLAN_ANALYZER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_ANALYZER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_ANALYZER_STUB_NTRACE == 1) */
+
+#endif /* PLAN_ANALYZER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_svnt_export.h b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_svnt_export.h
new file mode 100644
index 00000000000..13f0c025860
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Component/Plan_Analyzer_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLAN_ANALYZER_SVNT
+// ------------------------------
+#ifndef PLAN_ANALYZER_SVNT_EXPORT_H
+#define PLAN_ANALYZER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLAN_ANALYZER_SVNT_HAS_DLL)
+# define PLAN_ANALYZER_SVNT_HAS_DLL 1
+#endif /* ! PLAN_ANALYZER_SVNT_HAS_DLL */
+
+#if defined (PLAN_ANALYZER_SVNT_HAS_DLL) && (PLAN_ANALYZER_SVNT_HAS_DLL == 1)
+# if defined (PLAN_ANALYZER_SVNT_BUILD_DLL)
+# define PLAN_ANALYZER_SVNT_Export ACE_Proper_Export_Flag
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_ANALYZER_SVNT_BUILD_DLL */
+# define PLAN_ANALYZER_SVNT_Export ACE_Proper_Import_Flag
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_ANALYZER_SVNT_BUILD_DLL */
+#else /* PLAN_ANALYZER_SVNT_HAS_DLL == 1 */
+# define PLAN_ANALYZER_SVNT_Export
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARATION(T)
+# define PLAN_ANALYZER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_ANALYZER_SVNT_HAS_DLL == 1 */
+
+// Set PLAN_ANALYZER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_ANALYZER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_ANALYZER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_ANALYZER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_ANALYZER_SVNT_NTRACE */
+
+#if (PLAN_ANALYZER_SVNT_NTRACE == 1)
+# define PLAN_ANALYZER_SVNT_TRACE(X)
+#else /* (PLAN_ANALYZER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_ANALYZER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_ANALYZER_SVNT_NTRACE == 1) */
+
+#endif /* PLAN_ANALYZER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Interface/PlanIngress.idl b/modules/CIAO/RACE/Plan_Analyzer/Interface/PlanIngress.idl
new file mode 100644
index 00000000000..1074b4f4da3
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Interface/PlanIngress.idl
@@ -0,0 +1,22 @@
+//$Id$
+#ifndef RACE_PLAN_INGRESS_IDL
+#define RACE_PLAN_INGRESS_IDL
+
+#ifndef INCLUDED_DEPLOYMENT_DATA
+#define INCLUDED_DEPLOYMENT_DATA
+#include "Deployment_DeploymentPlan.idl"
+#endif
+
+module CIAO
+{
+ module RACE
+ {
+ interface PlanIngress
+ {
+ void analyze_plan (in Deployment::DeploymentPlan plan);
+ };
+ };
+};
+
+
+#endif /* RACE_PLAN_INGRESS_IDL */
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc
new file mode 100644
index 00000000000..0b7e6b2bfc9
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface.mpc
@@ -0,0 +1,58 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Planner_Manager_Interface"
+
+project(Plan_Analyzer_Interface_stub): ciao_deployment_stub {
+
+ sharedname = Plan_Analyzer_Interface_stub
+ idlflags += -Wb,stub_export_macro=PLAN_ANALYZER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Plan_Analyzer_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLAN_ANALYZER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Plan_Analyzer_Interface_svnt_export.h
+ dynamicflags = PLAN_ANALYZER_INTERFACE_STUB_BUILD_DLL
+
+ IDL_Files {
+ PlanIngress.idl
+ }
+
+ Source_Files {
+ PlanIngressC.cpp
+ }
+
+ Header_Files {
+ PlanIngressC.h
+ }
+
+ Inline_Files {
+ PlanIngressC.inl
+ }
+}
+
+project(Plan_Analyzer_Interface_svnt) : ciao_servant_dnc {
+
+ after += Plan_Analyzer_Interface_stub
+ sharedname = Plan_Analyzer_Interface_svnt
+ libs += Plan_Analyzer_Interface_stub
+
+ idlflags += -Wb,stub_export_macro=PLAN_ANALYZER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Plan_Analyzer_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLAN_ANALYZER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Plan_Analyzer_Interface_svnt_export.h
+ dynamicflags = PLAN_ANALYZER_INTERFACE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ PlanIngress.idl
+ }
+
+ Source_Files {
+ PlanIngressS.cpp
+ }
+
+ Header_Files {
+ PlanIngressS.h
+ }
+
+ Inline_Files {
+ PlanIngressS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_stub_export.h b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_stub_export.h
new file mode 100644
index 00000000000..7cbca0251fc
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLAN_ANALYZER_INTERFACE_STUB
+// ------------------------------
+#ifndef PLAN_ANALYZER_INTERFACE_STUB_EXPORT_H
+#define PLAN_ANALYZER_INTERFACE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL)
+# define PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL 1
+#endif /* ! PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL */
+
+#if defined (PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL) && (PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL == 1)
+# if defined (PLAN_ANALYZER_INTERFACE_STUB_BUILD_DLL)
+# define PLAN_ANALYZER_INTERFACE_STUB_Export ACE_Proper_Export_Flag
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_ANALYZER_INTERFACE_STUB_BUILD_DLL */
+# define PLAN_ANALYZER_INTERFACE_STUB_Export ACE_Proper_Import_Flag
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_ANALYZER_INTERFACE_STUB_BUILD_DLL */
+#else /* PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL == 1 */
+# define PLAN_ANALYZER_INTERFACE_STUB_Export
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARATION(T)
+# define PLAN_ANALYZER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_ANALYZER_INTERFACE_STUB_HAS_DLL == 1 */
+
+// Set PLAN_ANALYZER_INTERFACE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_ANALYZER_INTERFACE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_ANALYZER_INTERFACE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_ANALYZER_INTERFACE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_ANALYZER_INTERFACE_STUB_NTRACE */
+
+#if (PLAN_ANALYZER_INTERFACE_STUB_NTRACE == 1)
+# define PLAN_ANALYZER_INTERFACE_STUB_TRACE(X)
+#else /* (PLAN_ANALYZER_INTERFACE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_ANALYZER_INTERFACE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_ANALYZER_INTERFACE_STUB_NTRACE == 1) */
+
+#endif /* PLAN_ANALYZER_INTERFACE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_svnt_export.h b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_svnt_export.h
new file mode 100644
index 00000000000..ceb90e37efb
--- /dev/null
+++ b/modules/CIAO/RACE/Plan_Analyzer/Interface/Plan_Analyzer_Interface_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLAN_ANALYZER_INTERFACE_SVNT
+// ------------------------------
+#ifndef PLAN_ANALYZER_INTERFACE_SVNT_EXPORT_H
+#define PLAN_ANALYZER_INTERFACE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL)
+# define PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL 1
+#endif /* ! PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL */
+
+#if defined (PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL) && (PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL == 1)
+# if defined (PLAN_ANALYZER_INTERFACE_SVNT_BUILD_DLL)
+# define PLAN_ANALYZER_INTERFACE_SVNT_Export ACE_Proper_Export_Flag
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLAN_ANALYZER_INTERFACE_SVNT_BUILD_DLL */
+# define PLAN_ANALYZER_INTERFACE_SVNT_Export ACE_Proper_Import_Flag
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLAN_ANALYZER_INTERFACE_SVNT_BUILD_DLL */
+#else /* PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL == 1 */
+# define PLAN_ANALYZER_INTERFACE_SVNT_Export
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARATION(T)
+# define PLAN_ANALYZER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLAN_ANALYZER_INTERFACE_SVNT_HAS_DLL == 1 */
+
+// Set PLAN_ANALYZER_INTERFACE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLAN_ANALYZER_INTERFACE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLAN_ANALYZER_INTERFACE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLAN_ANALYZER_INTERFACE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLAN_ANALYZER_INTERFACE_SVNT_NTRACE */
+
+#if (PLAN_ANALYZER_INTERFACE_SVNT_NTRACE == 1)
+# define PLAN_ANALYZER_INTERFACE_SVNT_TRACE(X)
+#else /* (PLAN_ANALYZER_INTERFACE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLAN_ANALYZER_INTERFACE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLAN_ANALYZER_INTERFACE_SVNT_NTRACE == 1) */
+
+#endif /* PLAN_ANALYZER_INTERFACE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.cidl b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.cidl
new file mode 100644
index 00000000000..dcf42d8218c
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.cidl
@@ -0,0 +1,28 @@
+//$Id$
+//Planner_Manager.cidl
+
+#ifndef RACE_PLANNER_MANAGER_CIDL
+#define RACE_PLANNER_MANAGER_CIDL
+
+#include "Planner_Manager.idl"
+
+#include "../../Planners/Interface/Planner_I.idl"
+#include "../../Output_Adapters/Interface/PlanEgress.idl"
+
+module CIAO
+{
+ module RACE
+ {
+
+ composition session Planner_Manager_Impl
+ {
+ home executor Planner_Manager_Home_Exec
+ {
+ implements RACE::Planner_Manager_Home;
+ manages Planner_Manager_Exec;
+ };
+ };
+ };
+};
+
+#endif /* RACE_PLANNER_MANAGER_CIDL */
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.idl b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.idl
new file mode 100644
index 00000000000..24bc92644f5
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.idl
@@ -0,0 +1,32 @@
+//$Id$
+#ifndef RACE_PLANNER_MANAGER_IDL
+#define RACE_PLANNER_MANAGER_IDL
+
+#include <Components.idl>
+#include "../Interface/Planner_Manager_I.idl"
+
+#include "../../Planners/Interface/Planner_I.idl"
+#include "../../Output_Adapters/Interface/PlanEgress.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ interface Planner_I;
+ interface PlanEgress;
+
+ component Planner_Manager
+ {
+ provides Planner_Manager_I planner_manager_i;
+ uses multiple Planner_I planners;
+ uses multiple PlanEgress outputs;
+ readonly attribute RACE_Classifications classes;
+ };
+
+ home Planner_Manager_Home manages Planner_Manager
+ {
+ };
+ };
+};
+
+#endif /* RACE_PLANNER_MANAGER_IDL */
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.mpc b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.mpc
new file mode 100644
index 00000000000..25f925c196a
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager.mpc
@@ -0,0 +1,103 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl Planner_Manager"
+
+project(Planner_Manager_stub): ciao_deployment_stub {
+ after += Planner_Manager_Interface_stub \
+ Planner_Interface_stub \
+ Output_Adapter_Interface_stub
+ sharedname = Planner_Manager_stub
+ idlflags += -Wb,stub_export_macro=PLANNER_MANAGER_STUB_Export \
+ -Wb,stub_export_include=Planner_Manager_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_MANAGER_SVNT_Export \
+ -Wb,skel_export_include=Planner_Manager_svnt_export.h
+ dynamicflags = PLANNER_MANAGER_STUB_BUILD_DLL
+ libs += RACE_common_stub \
+ Planner_Manager_Interface_stub \
+ Planner_Interface_stub \
+ Output_Adapter_Interface_stub
+
+ IDL_Files {
+ Planner_Manager.idl
+ }
+
+ Source_Files {
+ Planner_ManagerC.cpp
+ }
+
+ Header_Files {
+ Planner_ManagerC.h
+ }
+
+ Inline_Files {
+ Planner_ManagerC.inl
+ }
+}
+
+project(Planner_Manager_svnt) : ciao_servant_dnc {
+ after += Planner_Manager_stub \
+ Planner_Manager_Interface_svnt
+ sharedname = Planner_Manager_svnt
+ libs += Planner_Manager_stub \
+ RACE_common_stub \
+ Planner_Manager_Interface_stub \
+ Planner_Manager_Interface_svnt \
+ Planner_Interface_stub \
+ Output_Adapter_Interface_stub
+ idlflags += -Wb,export_macro=PLANNER_MANAGER_SVNT_Export \
+ -Wb,export_include=Planner_Manager_svnt_export.h
+
+ dynamicflags = PLANNER_MANAGER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Planner_Manager.cidl
+ }
+
+ IDL_Files {
+ Planner_ManagerE.idl
+ }
+
+ Source_Files {
+ Planner_ManagerEC.cpp
+ Planner_ManagerS.cpp
+ Planner_Manager_svnt.cpp
+ }
+
+ Header_Files {
+ Planner_ManagerEC.h
+ Planner_ManagerS.h
+ Planner_Manager_svnt.h
+ }
+
+ Inline_Files {
+ Planner_ManagerEC.inl
+ Planner_ManagerS.inl
+ Planner_Manager_svnt.inl
+ }
+}
+
+
+project(Planner_Manager_exec) : ciao_component_dnc {
+ after += Planner_Manager_svnt Planner_stub
+ sharedname = Planner_Manager_exec
+ libs += Planner_Manager_stub \
+ Planner_Manager_svnt \
+ RACE_common_stub \
+ Planner_Manager_Interface_stub \
+ Planner_Manager_Interface_svnt \
+ Planner_Interface_stub \
+ Planner_stub \
+ Output_Adapter_Interface_stub
+
+ idlflags += -Wb,export_macro=PLANNER_MANAGER_EXEC_Export \
+ -Wb,export_include=Planner_Manager_exec_export.h
+ dynamicflags = PLANNER_MANAGER_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ Planner_Manager_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.cpp b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.cpp
new file mode 100644
index 00000000000..a149a785ce6
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.cpp
@@ -0,0 +1,206 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Planner_Manager_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Planner_Manager_Impl
+ {
+ //==================================================================
+ // Facet Executor Implementation Class: Planner_Manager_I_exec_i
+ //==================================================================
+
+ Planner_Manager_I_exec_i::Planner_Manager_I_exec_i (void)
+ {
+ }
+
+ Planner_Manager_I_exec_i::~Planner_Manager_I_exec_i (void)
+ {
+ }
+
+ // Operations from ::CIAO::RACE::Planner_Manager_I
+
+ void
+ Planner_Manager_I_exec_i::execute_planners (
+ const ::Deployment::DeploymentPlan & /* plan */,
+ const ::CIAO::RACE::PlannerFlow & /* flow */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: Planner_Manager_exec_i
+ //==================================================================
+
+ Planner_Manager_exec_i::Planner_Manager_exec_i (void)
+ {
+ }
+
+ Planner_Manager_exec_i::~Planner_Manager_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ ::CIAO::RACE::RACE_Classifications *
+ Planner_Manager_exec_i::classes ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return 0;
+ }
+
+ // Port operations.
+
+ ::CIAO::RACE::CCM_Planner_Manager_I_ptr
+ Planner_Manager_exec_i::get_planner_manager_i ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return ::CIAO::RACE::CCM_Planner_Manager_I::_nil ();
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ Planner_Manager_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Planner_Manager_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Planner_Manager_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Planner_Manager_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Planner_Manager_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Planner_Manager_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Planner_Manager_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: Planner_Manager_Home_exec_i
+ //==================================================================
+
+ Planner_Manager_Home_exec_i::Planner_Manager_Home_exec_i (void)
+ {
+ }
+
+ Planner_Manager_Home_exec_i::~Planner_Manager_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ Planner_Manager_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Planner_Manager_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" PLANNER_MANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createPlanner_Manager_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Planner_Manager_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.h b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.h
new file mode 100644
index 00000000000..1ca6114e850
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec.h
@@ -0,0 +1,157 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_PLANNER_MANAGER_EXEC_H
+#define CIAO_PLANNER_MANAGER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Planner_Manager_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Planner_Manager_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_Planner_Manager_Impl
+ {
+ class PLANNER_MANAGER_EXEC_Export Planner_Manager_I_exec_i
+ : public virtual ::CIAO::RACE::CCM_Planner_Manager_I,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Planner_Manager_I_exec_i (void);
+ virtual ~Planner_Manager_I_exec_i (void);
+
+ // Operations from ::CIAO::RACE::Planner_Manager_I
+
+ virtual void
+ execute_planners (
+ const ::Deployment::DeploymentPlan & plan,
+ const ::CIAO::RACE::PlannerFlow & flow)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class PLANNER_MANAGER_EXEC_Export Planner_Manager_exec_i
+ : public virtual Planner_Manager_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Planner_Manager_exec_i (void);
+ virtual ~Planner_Manager_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ virtual ::CIAO::RACE::RACE_Classifications *
+ classes ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ virtual ::CIAO::RACE::CCM_Planner_Manager_I_ptr
+ get_planner_manager_i ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Planner_Manager_Context *context_;
+ };
+
+ class PLANNER_MANAGER_EXEC_Export Planner_Manager_Home_exec_i
+ : public virtual Planner_Manager_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Planner_Manager_Home_exec_i (void);
+ virtual ~Planner_Manager_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" PLANNER_MANAGER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createPlanner_Manager_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_PLANNER_MANAGER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec_export.h b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec_export.h
new file mode 100644
index 00000000000..776022c36d3
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_MANAGER_EXEC
+// ------------------------------
+#ifndef PLANNER_MANAGER_EXEC_EXPORT_H
+#define PLANNER_MANAGER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_MANAGER_EXEC_HAS_DLL)
+# define PLANNER_MANAGER_EXEC_HAS_DLL 1
+#endif /* ! PLANNER_MANAGER_EXEC_HAS_DLL */
+
+#if defined (PLANNER_MANAGER_EXEC_HAS_DLL) && (PLANNER_MANAGER_EXEC_HAS_DLL == 1)
+# if defined (PLANNER_MANAGER_EXEC_BUILD_DLL)
+# define PLANNER_MANAGER_EXEC_Export ACE_Proper_Export_Flag
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_MANAGER_EXEC_BUILD_DLL */
+# define PLANNER_MANAGER_EXEC_Export ACE_Proper_Import_Flag
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_MANAGER_EXEC_BUILD_DLL */
+#else /* PLANNER_MANAGER_EXEC_HAS_DLL == 1 */
+# define PLANNER_MANAGER_EXEC_Export
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARATION(T)
+# define PLANNER_MANAGER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_MANAGER_EXEC_HAS_DLL == 1 */
+
+// Set PLANNER_MANAGER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_MANAGER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_MANAGER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_MANAGER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_MANAGER_EXEC_NTRACE */
+
+#if (PLANNER_MANAGER_EXEC_NTRACE == 1)
+# define PLANNER_MANAGER_EXEC_TRACE(X)
+#else /* (PLANNER_MANAGER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_MANAGER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_MANAGER_EXEC_NTRACE == 1) */
+
+#endif /* PLANNER_MANAGER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_stub_export.h b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_stub_export.h
new file mode 100644
index 00000000000..17a15f1cf30
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_MANAGER_STUB
+// ------------------------------
+#ifndef PLANNER_MANAGER_STUB_EXPORT_H
+#define PLANNER_MANAGER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_MANAGER_STUB_HAS_DLL)
+# define PLANNER_MANAGER_STUB_HAS_DLL 1
+#endif /* ! PLANNER_MANAGER_STUB_HAS_DLL */
+
+#if defined (PLANNER_MANAGER_STUB_HAS_DLL) && (PLANNER_MANAGER_STUB_HAS_DLL == 1)
+# if defined (PLANNER_MANAGER_STUB_BUILD_DLL)
+# define PLANNER_MANAGER_STUB_Export ACE_Proper_Export_Flag
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_MANAGER_STUB_BUILD_DLL */
+# define PLANNER_MANAGER_STUB_Export ACE_Proper_Import_Flag
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_MANAGER_STUB_BUILD_DLL */
+#else /* PLANNER_MANAGER_STUB_HAS_DLL == 1 */
+# define PLANNER_MANAGER_STUB_Export
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARATION(T)
+# define PLANNER_MANAGER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_MANAGER_STUB_HAS_DLL == 1 */
+
+// Set PLANNER_MANAGER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_MANAGER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_MANAGER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_MANAGER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_MANAGER_STUB_NTRACE */
+
+#if (PLANNER_MANAGER_STUB_NTRACE == 1)
+# define PLANNER_MANAGER_STUB_TRACE(X)
+#else /* (PLANNER_MANAGER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_MANAGER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_MANAGER_STUB_NTRACE == 1) */
+
+#endif /* PLANNER_MANAGER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_svnt_export.h b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_svnt_export.h
new file mode 100644
index 00000000000..bdc3cfac970
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Component/Planner_Manager_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_MANAGER_SVNT
+// ------------------------------
+#ifndef PLANNER_MANAGER_SVNT_EXPORT_H
+#define PLANNER_MANAGER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_MANAGER_SVNT_HAS_DLL)
+# define PLANNER_MANAGER_SVNT_HAS_DLL 1
+#endif /* ! PLANNER_MANAGER_SVNT_HAS_DLL */
+
+#if defined (PLANNER_MANAGER_SVNT_HAS_DLL) && (PLANNER_MANAGER_SVNT_HAS_DLL == 1)
+# if defined (PLANNER_MANAGER_SVNT_BUILD_DLL)
+# define PLANNER_MANAGER_SVNT_Export ACE_Proper_Export_Flag
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_MANAGER_SVNT_BUILD_DLL */
+# define PLANNER_MANAGER_SVNT_Export ACE_Proper_Import_Flag
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_MANAGER_SVNT_BUILD_DLL */
+#else /* PLANNER_MANAGER_SVNT_HAS_DLL == 1 */
+# define PLANNER_MANAGER_SVNT_Export
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARATION(T)
+# define PLANNER_MANAGER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_MANAGER_SVNT_HAS_DLL == 1 */
+
+// Set PLANNER_MANAGER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_MANAGER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_MANAGER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_MANAGER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_MANAGER_SVNT_NTRACE */
+
+#if (PLANNER_MANAGER_SVNT_NTRACE == 1)
+# define PLANNER_MANAGER_SVNT_TRACE(X)
+#else /* (PLANNER_MANAGER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_MANAGER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_MANAGER_SVNT_NTRACE == 1) */
+
+#endif /* PLANNER_MANAGER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_I.idl b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_I.idl
new file mode 100644
index 00000000000..7ad88444a52
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_I.idl
@@ -0,0 +1,24 @@
+//$Id$
+#ifndef RACE_PLANNER_MANAGER_I_IDL
+#define RACE_PLANNER_MANAGER_I_IDL
+
+#ifndef INCLUDED_DEPLOYMENT_DATA
+#define INCLUDED_DEPLOYMENT_DATA
+#include "Deployment_DeploymentPlan.idl"
+#endif
+
+#include "../../common/RACE_common.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ interface Planner_Manager_I
+ {
+ void execute_planners (in Deployment::DeploymentPlan plan,
+ in PlannerFlow flow);
+ };
+ };
+};
+
+#endif /* RACE_PLANNER_MANAGER_I_IDL */
diff --git a/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc
new file mode 100644
index 00000000000..fb145b6fc6d
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface.mpc
@@ -0,0 +1,60 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Planner_Manager_Interface"
+
+project(Planner_Manager_Interface_stub): ciao_deployment_stub, anytypecode {
+
+ sharedname = Planner_Manager_Interface_stub
+ after += RACE_common_stub
+ idlflags += -Wb,stub_export_macro=PLANNER_MANAGER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Planner_Manager_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_MANAGER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Planner_Manager_Interface_svnt_export.h
+ dynamicflags = PLANNER_MANAGER_INTERFACE_STUB_BUILD_DLL
+ libs += RACE_common_stub
+
+ IDL_Files {
+ Planner_Manager_I.idl
+ }
+
+ Source_Files {
+ Planner_Manager_IC.cpp
+ }
+
+ Header_Files {
+ Planner_Manager_IC.h
+ }
+
+ Inline_Files {
+ Planner_Manager_IC.inl
+ }
+}
+
+project(Planner_Manager_Interface_svnt) : ciao_servant_dnc {
+
+ after += Planner_Manager_Interface_stub
+ sharedname = Planner_Manager_Interface_svnt
+ libs += Planner_Manager_Interface_stub RACE_common_stub
+
+ idlflags += -Wb,stub_export_macro=PLANNER_MANAGER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Planner_Manager_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_MANAGER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Planner_Manager_Interface_svnt_export.h
+ dynamicflags = PLANNER_MANAGER_INTERFACE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Planner_Manager_I.idl
+ }
+
+ Source_Files {
+ Planner_Manager_IS.cpp
+ }
+
+ Header_Files {
+ Planner_Manager_IS.h
+ }
+
+ Inline_Files {
+ Planner_Manager_IS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_stub_export.h b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_stub_export.h
new file mode 100644
index 00000000000..32a583b5346
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_MANAGER_INTERFACE_STUB
+// ------------------------------
+#ifndef PLANNER_MANAGER_INTERFACE_STUB_EXPORT_H
+#define PLANNER_MANAGER_INTERFACE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL)
+# define PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL 1
+#endif /* ! PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL */
+
+#if defined (PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL) && (PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL == 1)
+# if defined (PLANNER_MANAGER_INTERFACE_STUB_BUILD_DLL)
+# define PLANNER_MANAGER_INTERFACE_STUB_Export ACE_Proper_Export_Flag
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_MANAGER_INTERFACE_STUB_BUILD_DLL */
+# define PLANNER_MANAGER_INTERFACE_STUB_Export ACE_Proper_Import_Flag
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_MANAGER_INTERFACE_STUB_BUILD_DLL */
+#else /* PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL == 1 */
+# define PLANNER_MANAGER_INTERFACE_STUB_Export
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARATION(T)
+# define PLANNER_MANAGER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_MANAGER_INTERFACE_STUB_HAS_DLL == 1 */
+
+// Set PLANNER_MANAGER_INTERFACE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_MANAGER_INTERFACE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_MANAGER_INTERFACE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_MANAGER_INTERFACE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_MANAGER_INTERFACE_STUB_NTRACE */
+
+#if (PLANNER_MANAGER_INTERFACE_STUB_NTRACE == 1)
+# define PLANNER_MANAGER_INTERFACE_STUB_TRACE(X)
+#else /* (PLANNER_MANAGER_INTERFACE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_MANAGER_INTERFACE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_MANAGER_INTERFACE_STUB_NTRACE == 1) */
+
+#endif /* PLANNER_MANAGER_INTERFACE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_svnt_export.h b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_svnt_export.h
new file mode 100644
index 00000000000..6e554a1d5ed
--- /dev/null
+++ b/modules/CIAO/RACE/Planner_Manager/Interface/Planner_Manager_Interface_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_MANAGER_INTERFACE_SVNT
+// ------------------------------
+#ifndef PLANNER_MANAGER_INTERFACE_SVNT_EXPORT_H
+#define PLANNER_MANAGER_INTERFACE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL)
+# define PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL 1
+#endif /* ! PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL */
+
+#if defined (PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL) && (PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL == 1)
+# if defined (PLANNER_MANAGER_INTERFACE_SVNT_BUILD_DLL)
+# define PLANNER_MANAGER_INTERFACE_SVNT_Export ACE_Proper_Export_Flag
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_MANAGER_INTERFACE_SVNT_BUILD_DLL */
+# define PLANNER_MANAGER_INTERFACE_SVNT_Export ACE_Proper_Import_Flag
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_MANAGER_INTERFACE_SVNT_BUILD_DLL */
+#else /* PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL == 1 */
+# define PLANNER_MANAGER_INTERFACE_SVNT_Export
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARATION(T)
+# define PLANNER_MANAGER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_MANAGER_INTERFACE_SVNT_HAS_DLL == 1 */
+
+// Set PLANNER_MANAGER_INTERFACE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_MANAGER_INTERFACE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_MANAGER_INTERFACE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_MANAGER_INTERFACE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_MANAGER_INTERFACE_SVNT_NTRACE */
+
+#if (PLANNER_MANAGER_INTERFACE_SVNT_NTRACE == 1)
+# define PLANNER_MANAGER_INTERFACE_SVNT_TRACE(X)
+#else /* (PLANNER_MANAGER_INTERFACE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_MANAGER_INTERFACE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_MANAGER_INTERFACE_SVNT_NTRACE == 1) */
+
+#endif /* PLANNER_MANAGER_INTERFACE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/Base/Planner.idl b/modules/CIAO/RACE/Planners/Base/Planner.idl
new file mode 100644
index 00000000000..ae81074d5e7
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Base/Planner.idl
@@ -0,0 +1,24 @@
+// $Id$
+#ifndef RACE_PLANNER_IDL
+#define RACE_PLANNER_IDL
+
+#include <Components.idl>
+#include "../Interface/Planner_I.idl"
+#include "../../common/RACE_common.idl"
+
+module CIAO
+{
+
+ module RACE
+ {
+ component Planner
+ {
+ provides Planner_I planner_i;
+ attribute string name;
+ attribute RACE_Classification type;
+ };
+ };
+
+};
+
+#endif /* RACE_PLANNER_IDL */
diff --git a/modules/CIAO/RACE/Planners/Base/Planner.mpc b/modules/CIAO/RACE/Planners/Base/Planner.mpc
new file mode 100644
index 00000000000..698cb689cb5
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Base/Planner.mpc
@@ -0,0 +1,60 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Planner"
+
+project(Planner_stub): ciao_deployment_stub {
+
+ after += Planner_Interface_stub RACE_common_stub
+ sharedname = Planner_stub
+ idlflags += -Wb,stub_export_macro=PLANNER_STUB_Export \
+ -Wb,stub_export_include=Planner_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_SVNT_Export \
+ -Wb,skel_export_include=Planner_svnt_export.h
+ dynamicflags = PLANNER_STUB_BUILD_DLL
+ libs += Planner_Interface_stub RACE_common_stub
+
+ IDL_Files {
+ Planner.idl
+ }
+
+ Source_Files {
+ PlannerC.cpp
+ }
+
+ Header_Files {
+ PlannerC.h
+ }
+
+ Inline_Files {
+ PlannerC.inl
+ }
+}
+
+project(Planner_svnt) : ciao_servant_dnc {
+
+ after += Planner_Interface_svnt Planner_stub
+ sharedname = Planner_svnt
+ libs += Planner_Interface_stub Planner_Interface_svnt Planner_stub RACE_common_stub
+
+ idlflags += -Wb,stub_export_macro=PLANNER_STUB_Export \
+ -Wb,stub_export_include=Planner_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_SVNT_Export \
+ -Wb,skel_export_include=Planner_svnt_export.h
+ dynamicflags = PLANNER_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Planner.idl
+ }
+
+ Source_Files {
+ PlannerS.cpp
+ }
+
+ Header_Files {
+ PlannerS.h
+ }
+
+ Inline_Files {
+ PlannerS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Planners/Base/Planner_stub_export.h b/modules/CIAO/RACE/Planners/Base/Planner_stub_export.h
new file mode 100644
index 00000000000..d9c9c352052
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Base/Planner_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_STUB
+// ------------------------------
+#ifndef PLANNER_STUB_EXPORT_H
+#define PLANNER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_STUB_HAS_DLL)
+# define PLANNER_STUB_HAS_DLL 1
+#endif /* ! PLANNER_STUB_HAS_DLL */
+
+#if defined (PLANNER_STUB_HAS_DLL) && (PLANNER_STUB_HAS_DLL == 1)
+# if defined (PLANNER_STUB_BUILD_DLL)
+# define PLANNER_STUB_Export ACE_Proper_Export_Flag
+# define PLANNER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_STUB_BUILD_DLL */
+# define PLANNER_STUB_Export ACE_Proper_Import_Flag
+# define PLANNER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_STUB_BUILD_DLL */
+#else /* PLANNER_STUB_HAS_DLL == 1 */
+# define PLANNER_STUB_Export
+# define PLANNER_STUB_SINGLETON_DECLARATION(T)
+# define PLANNER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_STUB_HAS_DLL == 1 */
+
+// Set PLANNER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_STUB_NTRACE */
+
+#if (PLANNER_STUB_NTRACE == 1)
+# define PLANNER_STUB_TRACE(X)
+#else /* (PLANNER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_STUB_NTRACE == 1) */
+
+#endif /* PLANNER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/Base/Planner_svnt_export.h b/modules/CIAO/RACE/Planners/Base/Planner_svnt_export.h
new file mode 100644
index 00000000000..1773748e72b
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Base/Planner_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_SVNT
+// ------------------------------
+#ifndef PLANNER_SVNT_EXPORT_H
+#define PLANNER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_SVNT_HAS_DLL)
+# define PLANNER_SVNT_HAS_DLL 1
+#endif /* ! PLANNER_SVNT_HAS_DLL */
+
+#if defined (PLANNER_SVNT_HAS_DLL) && (PLANNER_SVNT_HAS_DLL == 1)
+# if defined (PLANNER_SVNT_BUILD_DLL)
+# define PLANNER_SVNT_Export ACE_Proper_Export_Flag
+# define PLANNER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_SVNT_BUILD_DLL */
+# define PLANNER_SVNT_Export ACE_Proper_Import_Flag
+# define PLANNER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_SVNT_BUILD_DLL */
+#else /* PLANNER_SVNT_HAS_DLL == 1 */
+# define PLANNER_SVNT_Export
+# define PLANNER_SVNT_SINGLETON_DECLARATION(T)
+# define PLANNER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_SVNT_HAS_DLL == 1 */
+
+// Set PLANNER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_SVNT_NTRACE */
+
+#if (PLANNER_SVNT_NTRACE == 1)
+# define PLANNER_SVNT_TRACE(X)
+#else /* (PLANNER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_SVNT_NTRACE == 1) */
+
+#endif /* PLANNER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/Interface/Planner_I.idl b/modules/CIAO/RACE/Planners/Interface/Planner_I.idl
new file mode 100644
index 00000000000..954a61f5269
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Interface/Planner_I.idl
@@ -0,0 +1,22 @@
+// $Id$
+#ifndef RACE_PLANNER_I_IDL
+#define RACE_PLANNER_I_IDL
+
+#ifndef INCLUDED_DEPLOYMENT_DATA
+#define INCLUDED_DEPLOYMENT_DATA
+#include "Deployment_DeploymentPlan.idl"
+#endif
+
+module CIAO
+{
+
+ module RACE
+ {
+ interface Planner_I
+ {
+ boolean process_plan (inout Deployment::DeploymentPlan plan);
+ };
+ };
+};
+
+#endif /* RACE_PLANNER_I_IDL */
diff --git a/modules/CIAO/RACE/Planners/Interface/Planner_Interface.mpc b/modules/CIAO/RACE/Planners/Interface/Planner_Interface.mpc
new file mode 100644
index 00000000000..3549de0fa64
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Interface/Planner_Interface.mpc
@@ -0,0 +1,58 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n Planner_I"
+
+project(Planner_Interface_stub): ciao_deployment_stub {
+
+ sharedname = Planner_Interface_stub
+ idlflags += -Wb,stub_export_macro=PLANNER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Planner_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Planner_Interface_svnt_export.h
+ dynamicflags = PLANNER_INTERFACE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Planner_I.idl
+ }
+
+ Source_Files {
+ Planner_IC.cpp
+ }
+
+ Header_Files {
+ Planner_IC.h
+ }
+
+ Inline_Files {
+ Planner_IC.inl
+ }
+}
+
+project(Planner_Interface_svnt) : ciao_servant_dnc {
+
+ after += Planner_Interface_stub
+ sharedname = Planner_Interface_svnt
+ libs += Planner_Interface_stub
+
+ idlflags += -Wb,stub_export_macro=PLANNER_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Planner_Interface_stub_export.h \
+ -Wb,skel_export_macro=PLANNER_INTERFACE_SVNT_Export \
+ -Wb,skel_export_include=Planner_Interface_svnt_export.h
+ dynamicflags = PLANNER_INTERFACE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Planner_I.idl
+ }
+
+ Source_Files {
+ Planner_IS.cpp
+ }
+
+ Header_Files {
+ Planner_IS.h
+ }
+
+ Inline_Files {
+ Planner_IS.inl
+ }
+}
diff --git a/modules/CIAO/RACE/Planners/Interface/Planner_Interface_stub_export.h b/modules/CIAO/RACE/Planners/Interface/Planner_Interface_stub_export.h
new file mode 100644
index 00000000000..70e6da56ba0
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Interface/Planner_Interface_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_INTERFACE_STUB
+// ------------------------------
+#ifndef PLANNER_INTERFACE_STUB_EXPORT_H
+#define PLANNER_INTERFACE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_INTERFACE_STUB_HAS_DLL)
+# define PLANNER_INTERFACE_STUB_HAS_DLL 1
+#endif /* ! PLANNER_INTERFACE_STUB_HAS_DLL */
+
+#if defined (PLANNER_INTERFACE_STUB_HAS_DLL) && (PLANNER_INTERFACE_STUB_HAS_DLL == 1)
+# if defined (PLANNER_INTERFACE_STUB_BUILD_DLL)
+# define PLANNER_INTERFACE_STUB_Export ACE_Proper_Export_Flag
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_INTERFACE_STUB_BUILD_DLL */
+# define PLANNER_INTERFACE_STUB_Export ACE_Proper_Import_Flag
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_INTERFACE_STUB_BUILD_DLL */
+#else /* PLANNER_INTERFACE_STUB_HAS_DLL == 1 */
+# define PLANNER_INTERFACE_STUB_Export
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARATION(T)
+# define PLANNER_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_INTERFACE_STUB_HAS_DLL == 1 */
+
+// Set PLANNER_INTERFACE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_INTERFACE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_INTERFACE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_INTERFACE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_INTERFACE_STUB_NTRACE */
+
+#if (PLANNER_INTERFACE_STUB_NTRACE == 1)
+# define PLANNER_INTERFACE_STUB_TRACE(X)
+#else /* (PLANNER_INTERFACE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_INTERFACE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_INTERFACE_STUB_NTRACE == 1) */
+
+#endif /* PLANNER_INTERFACE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/Interface/Planner_Interface_svnt_export.h b/modules/CIAO/RACE/Planners/Interface/Planner_Interface_svnt_export.h
new file mode 100644
index 00000000000..5ff8283551c
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/Interface/Planner_Interface_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PLANNER_INTERFACE_SVNT
+// ------------------------------
+#ifndef PLANNER_INTERFACE_SVNT_EXPORT_H
+#define PLANNER_INTERFACE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PLANNER_INTERFACE_SVNT_HAS_DLL)
+# define PLANNER_INTERFACE_SVNT_HAS_DLL 1
+#endif /* ! PLANNER_INTERFACE_SVNT_HAS_DLL */
+
+#if defined (PLANNER_INTERFACE_SVNT_HAS_DLL) && (PLANNER_INTERFACE_SVNT_HAS_DLL == 1)
+# if defined (PLANNER_INTERFACE_SVNT_BUILD_DLL)
+# define PLANNER_INTERFACE_SVNT_Export ACE_Proper_Export_Flag
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PLANNER_INTERFACE_SVNT_BUILD_DLL */
+# define PLANNER_INTERFACE_SVNT_Export ACE_Proper_Import_Flag
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PLANNER_INTERFACE_SVNT_BUILD_DLL */
+#else /* PLANNER_INTERFACE_SVNT_HAS_DLL == 1 */
+# define PLANNER_INTERFACE_SVNT_Export
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARATION(T)
+# define PLANNER_INTERFACE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PLANNER_INTERFACE_SVNT_HAS_DLL == 1 */
+
+// Set PLANNER_INTERFACE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PLANNER_INTERFACE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PLANNER_INTERFACE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PLANNER_INTERFACE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PLANNER_INTERFACE_SVNT_NTRACE */
+
+#if (PLANNER_INTERFACE_SVNT_NTRACE == 1)
+# define PLANNER_INTERFACE_SVNT_TRACE(X)
+#else /* (PLANNER_INTERFACE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PLANNER_INTERFACE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PLANNER_INTERFACE_SVNT_NTRACE == 1) */
+
+#endif /* PLANNER_INTERFACE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.cidl b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.cidl
new file mode 100644
index 00000000000..a3ddd75b824
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.cidl
@@ -0,0 +1,25 @@
+//SimpleBinPacker.cidl
+// $Id$
+
+#ifndef RACE_SIMPLE_BIN_PACKER_CIDL
+#define RACE_SIMPLE_BIN_PACKER_CIDL
+
+#include "SimpleBinPacker.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ composition session SimpleBinPacker_Impl
+ {
+ home executor SimpleBinPacker_Home_Exec
+ {
+ implements RACE::SimpleBinPacker_Home;
+ manages SimpleBinPacker_Exec;
+ };
+ };
+ };
+};
+
+
+#endif /* RACE_SIMPLE_BIN_PACKER_CIDL */
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.idl b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.idl
new file mode 100644
index 00000000000..bb1a67e4a79
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.idl
@@ -0,0 +1,23 @@
+//$Id$
+
+#ifndef RACE_SIMPLE_BIN_PACKER_IDL
+#define RACE_SIMPLE_BIN_PACKER_IDL
+
+#include <Components.idl>
+#include "../Base/Planner.idl"
+
+module CIAO
+{
+ module RACE
+ {
+ component SimpleBinPacker : Planner
+ {
+ };
+
+ home SimpleBinPacker_Home manages SimpleBinPacker
+ {
+ };
+ };
+};
+
+#endif /* RACE_SIMPLE_BIN_PACKER_IDL */
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc
new file mode 100644
index 00000000000..149f735b073
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker.mpc
@@ -0,0 +1,100 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -p Planner_Interface SimpleBinPacker"
+
+project(SimpleBinPacker_stub): ciao_deployment_stub {
+ avoids += ace_for_tao
+ after += Planner_Interface_stub Planner_stub
+ sharedname = SimpleBinPacker_stub
+ idlflags += -Wb,stub_export_macro=SIMPLEBINPACKER_STUB_Export \
+ -Wb,stub_export_include=SimpleBinPacker_stub_export.h \
+ -Wb,skel_export_macro=SIMPLEBINPACKER_SVNT_Export \
+ -Wb,skel_export_include=SimpleBinPacker_svnt_export.h
+ dynamicflags = SIMPLEBINPACKER_STUB_BUILD_DLL
+ libs += Planner_Interface_stub Planner_stub RACE_common_stub
+
+ IDL_Files {
+ SimpleBinPacker.idl
+ }
+
+ Source_Files {
+ SimpleBinPackerC.cpp
+ }
+
+ Header_Files {
+ SimpleBinPackerC.h
+ }
+
+ Inline_Files {
+ SimpleBinPackerC.inl
+ }
+}
+
+project(SimpleBinPacker_svnt) : ciao_servant_dnc {
+ after += Planner_Interface_svnt \
+ SimpleBinPacker_stub \
+ Planner_svnt
+ sharedname = SimpleBinPacker_svnt
+ libs += SimpleBinPacker_stub \
+ Planner_Interface_stub \
+ Planner_Interface_svnt \
+ Planner_stub \
+ Planner_svnt \
+ RACE_common_stub
+ idlflags += -Wb,export_macro=SIMPLEBINPACKER_SVNT_Export \
+ -Wb,export_include=SimpleBinPacker_svnt_export.h
+
+ dynamicflags = SIMPLEBINPACKER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ SimpleBinPacker.cidl
+ }
+
+ IDL_Files {
+ SimpleBinPackerE.idl
+ }
+
+ Source_Files {
+ SimpleBinPackerEC.cpp
+ SimpleBinPackerS.cpp
+ SimpleBinPacker_svnt.cpp
+ }
+
+ Header_Files {
+ SimpleBinPackerEC.h
+ SimpleBinPackerS.h
+ SimpleBinPacker_svnt.h
+ }
+
+ Inline_Files {
+ SimpleBinPackerEC.inl
+ SimpleBinPackerS.inl
+ SimpleBinPacker_svnt.inl
+ }
+}
+
+
+project(SimpleBinPacker_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += SimpleBinPacker_svnt
+ sharedname = SimpleBinPacker_exec
+ libs += SimpleBinPacker_stub \
+ SimpleBinPacker_svnt \
+ Planner_Interface_stub \
+ Planner_Interface_svnt \
+ Planner_stub \
+ Planner_svnt \
+ RACE_common_stub
+
+ idlflags += -Wb,export_macro=SIMPLEBINPACKER_EXEC_Export \
+ -Wb,export_include=SimpleBinPacker_exec_export.h
+ dynamicflags = SIMPLEBINPACKER_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+ SimpleBinPacker_exec.cpp
+ }
+}
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.cpp b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.cpp
new file mode 100644
index 00000000000..ad3370c4366
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.cpp
@@ -0,0 +1,230 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "SimpleBinPacker_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_SimpleBinPacker_Impl
+ {
+ //==================================================================
+ // Facet Executor Implementation Class: Planner_I_exec_i
+ //==================================================================
+
+ Planner_I_exec_i::Planner_I_exec_i (void)
+ {
+ }
+
+ Planner_I_exec_i::~Planner_I_exec_i (void)
+ {
+ }
+
+ // Operations from ::CIAO::RACE::Planner_I
+
+ ::CORBA::Boolean
+ Planner_I_exec_i::process_plan (
+ ::Deployment::DeploymentPlan & /* plan */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return false;
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: SimpleBinPacker_exec_i
+ //==================================================================
+
+ SimpleBinPacker_exec_i::SimpleBinPacker_exec_i (void)
+ {
+ }
+
+ SimpleBinPacker_exec_i::~SimpleBinPacker_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ char *
+ SimpleBinPacker_exec_i::name ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return 0;
+ }
+
+ void
+ SimpleBinPacker_exec_i::name (
+ const char * /* name */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ char *
+ SimpleBinPacker_exec_i::type ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return 0;
+ }
+
+ void
+ SimpleBinPacker_exec_i::type (
+ const char * /* type */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ // Port operations.
+
+ ::CIAO::RACE::CCM_Planner_I_ptr
+ SimpleBinPacker_exec_i::get_planner_i ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return ::CIAO::RACE::CCM_Planner_I::_nil ();
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ SimpleBinPacker_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ SimpleBinPacker_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ SimpleBinPacker_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ SimpleBinPacker_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ SimpleBinPacker_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ SimpleBinPacker_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ SimpleBinPacker_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: SimpleBinPacker_Home_exec_i
+ //==================================================================
+
+ SimpleBinPacker_Home_exec_i::SimpleBinPacker_Home_exec_i (void)
+ {
+ }
+
+ SimpleBinPacker_Home_exec_i::~SimpleBinPacker_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ SimpleBinPacker_Home_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ SimpleBinPacker_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" SIMPLEBINPACKER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSimpleBinPacker_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ SimpleBinPacker_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.h b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.h
new file mode 100644
index 00000000000..b0b70703c79
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec.h
@@ -0,0 +1,170 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_SIMPLEBINPACKER_EXEC_H
+#define CIAO_SIMPLEBINPACKER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "SimpleBinPacker_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "SimpleBinPacker_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIAO
+{
+ namespace RACE
+ {
+ namespace CIDL_SimpleBinPacker_Impl
+ {
+ class SIMPLEBINPACKER_EXEC_Export Planner_I_exec_i
+ : public virtual ::CIAO::RACE::CCM_Planner_I,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Planner_I_exec_i (void);
+ virtual ~Planner_I_exec_i (void);
+
+ // Operations from ::CIAO::RACE::Planner_I
+
+ virtual ::CORBA::Boolean
+ process_plan (
+ ::Deployment::DeploymentPlan & plan)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class SIMPLEBINPACKER_EXEC_Export SimpleBinPacker_exec_i
+ : public virtual SimpleBinPacker_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ SimpleBinPacker_exec_i (void);
+ virtual ~SimpleBinPacker_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ virtual char *
+ name ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ name (
+ const char *)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual char *
+ type ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ type (
+ const char *)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ virtual ::CIAO::RACE::CCM_Planner_I_ptr
+ get_planner_i ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ SimpleBinPacker_Context *context_;
+ };
+
+ class SIMPLEBINPACKER_EXEC_Export SimpleBinPacker_Home_exec_i
+ : public virtual SimpleBinPacker_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ SimpleBinPacker_Home_exec_i (void);
+ virtual ~SimpleBinPacker_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" SIMPLEBINPACKER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSimpleBinPacker_Home_Impl (void);
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SIMPLEBINPACKER_EXEC_H */
+
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec_export.h b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec_export.h
new file mode 100644
index 00000000000..48c6c1ee4d3
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLEBINPACKER_EXEC
+// ------------------------------
+#ifndef SIMPLEBINPACKER_EXEC_EXPORT_H
+#define SIMPLEBINPACKER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLEBINPACKER_EXEC_HAS_DLL)
+# define SIMPLEBINPACKER_EXEC_HAS_DLL 1
+#endif /* ! SIMPLEBINPACKER_EXEC_HAS_DLL */
+
+#if defined (SIMPLEBINPACKER_EXEC_HAS_DLL) && (SIMPLEBINPACKER_EXEC_HAS_DLL == 1)
+# if defined (SIMPLEBINPACKER_EXEC_BUILD_DLL)
+# define SIMPLEBINPACKER_EXEC_Export ACE_Proper_Export_Flag
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLEBINPACKER_EXEC_BUILD_DLL */
+# define SIMPLEBINPACKER_EXEC_Export ACE_Proper_Import_Flag
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLEBINPACKER_EXEC_BUILD_DLL */
+#else /* SIMPLEBINPACKER_EXEC_HAS_DLL == 1 */
+# define SIMPLEBINPACKER_EXEC_Export
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARATION(T)
+# define SIMPLEBINPACKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLEBINPACKER_EXEC_HAS_DLL == 1 */
+
+// Set SIMPLEBINPACKER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLEBINPACKER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLEBINPACKER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLEBINPACKER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLEBINPACKER_EXEC_NTRACE */
+
+#if (SIMPLEBINPACKER_EXEC_NTRACE == 1)
+# define SIMPLEBINPACKER_EXEC_TRACE(X)
+#else /* (SIMPLEBINPACKER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLEBINPACKER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLEBINPACKER_EXEC_NTRACE == 1) */
+
+#endif /* SIMPLEBINPACKER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_stub_export.h b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_stub_export.h
new file mode 100644
index 00000000000..eae6bd3e06b
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLEBINPACKER_STUB
+// ------------------------------
+#ifndef SIMPLEBINPACKER_STUB_EXPORT_H
+#define SIMPLEBINPACKER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLEBINPACKER_STUB_HAS_DLL)
+# define SIMPLEBINPACKER_STUB_HAS_DLL 1
+#endif /* ! SIMPLEBINPACKER_STUB_HAS_DLL */
+
+#if defined (SIMPLEBINPACKER_STUB_HAS_DLL) && (SIMPLEBINPACKER_STUB_HAS_DLL == 1)
+# if defined (SIMPLEBINPACKER_STUB_BUILD_DLL)
+# define SIMPLEBINPACKER_STUB_Export ACE_Proper_Export_Flag
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLEBINPACKER_STUB_BUILD_DLL */
+# define SIMPLEBINPACKER_STUB_Export ACE_Proper_Import_Flag
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLEBINPACKER_STUB_BUILD_DLL */
+#else /* SIMPLEBINPACKER_STUB_HAS_DLL == 1 */
+# define SIMPLEBINPACKER_STUB_Export
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARATION(T)
+# define SIMPLEBINPACKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLEBINPACKER_STUB_HAS_DLL == 1 */
+
+// Set SIMPLEBINPACKER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLEBINPACKER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLEBINPACKER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLEBINPACKER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLEBINPACKER_STUB_NTRACE */
+
+#if (SIMPLEBINPACKER_STUB_NTRACE == 1)
+# define SIMPLEBINPACKER_STUB_TRACE(X)
+#else /* (SIMPLEBINPACKER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLEBINPACKER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLEBINPACKER_STUB_NTRACE == 1) */
+
+#endif /* SIMPLEBINPACKER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_svnt_export.h b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_svnt_export.h
new file mode 100644
index 00000000000..1b97afc372e
--- /dev/null
+++ b/modules/CIAO/RACE/Planners/SimpleBinPacker/SimpleBinPacker_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLEBINPACKER_SVNT
+// ------------------------------
+#ifndef SIMPLEBINPACKER_SVNT_EXPORT_H
+#define SIMPLEBINPACKER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLEBINPACKER_SVNT_HAS_DLL)
+# define SIMPLEBINPACKER_SVNT_HAS_DLL 1
+#endif /* ! SIMPLEBINPACKER_SVNT_HAS_DLL */
+
+#if defined (SIMPLEBINPACKER_SVNT_HAS_DLL) && (SIMPLEBINPACKER_SVNT_HAS_DLL == 1)
+# if defined (SIMPLEBINPACKER_SVNT_BUILD_DLL)
+# define SIMPLEBINPACKER_SVNT_Export ACE_Proper_Export_Flag
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLEBINPACKER_SVNT_BUILD_DLL */
+# define SIMPLEBINPACKER_SVNT_Export ACE_Proper_Import_Flag
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLEBINPACKER_SVNT_BUILD_DLL */
+#else /* SIMPLEBINPACKER_SVNT_HAS_DLL == 1 */
+# define SIMPLEBINPACKER_SVNT_Export
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARATION(T)
+# define SIMPLEBINPACKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLEBINPACKER_SVNT_HAS_DLL == 1 */
+
+// Set SIMPLEBINPACKER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLEBINPACKER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLEBINPACKER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLEBINPACKER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLEBINPACKER_SVNT_NTRACE */
+
+#if (SIMPLEBINPACKER_SVNT_NTRACE == 1)
+# define SIMPLEBINPACKER_SVNT_TRACE(X)
+#else /* (SIMPLEBINPACKER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLEBINPACKER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLEBINPACKER_SVNT_NTRACE == 1) */
+
+#endif /* SIMPLEBINPACKER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/common/RACE_common.idl b/modules/CIAO/RACE/common/RACE_common.idl
new file mode 100644
index 00000000000..ec712c402e9
--- /dev/null
+++ b/modules/CIAO/RACE/common/RACE_common.idl
@@ -0,0 +1,17 @@
+//$Id$
+#ifndef RACE_COMMON_IDL
+#define RACE_COMMON_IDL
+
+#include "tao/StringSeq.pidl"
+
+module CIAO
+{
+ module RACE
+ {
+ typedef string RACE_Classification;
+ typedef sequence <RACE_Classification> RACE_Classifications;
+ typedef CORBA::StringSeq PlannerFlow;
+ };
+};
+
+#endif /* RACE_COMMON_IDL */
diff --git a/modules/CIAO/RACE/common/RACE_common.mpc b/modules/CIAO/RACE/common/RACE_common.mpc
new file mode 100644
index 00000000000..38253d218d7
--- /dev/null
+++ b/modules/CIAO/RACE/common/RACE_common.mpc
@@ -0,0 +1,58 @@
+// generate_component_mpc.pl,v 1.9 2003/12/22 21:56:27 boris Exp
+//$Id$
+// This file is generated with "generate_component_mpc.pl -n RACE_common"
+
+project(RACE_common_stub): taolib_with_idl, anytypecode {
+
+ sharedname = RACE_common_stub
+ idlflags += -Wb,stub_export_macro=RACE_COMMON_STUB_Export \
+ -Wb,stub_export_include=RACE_common_stub_export.h
+// -Wb,skel_export_macro=RACE_COMMON_SVNT_Export \
+// -Wb,skel_export_include=RACE_common_svnt_export.h
+ dynamicflags = RACE_COMMON_STUB_BUILD_DLL
+
+ IDL_Files {
+ RACE_common.idl
+ }
+
+ Source_Files {
+ RACE_commonC.cpp
+ }
+
+ Header_Files {
+ RACE_commonC.h
+ }
+
+ Inline_Files {
+ RACE_commonC.inl
+ }
+}
+
+// project(RACE_common_svnt) : ciao_servant_dnc {
+
+// after += RACE_common_stub
+// sharedname = RACE_common_svnt
+// libs += RACE_common_stub
+
+// idlflags += -Wb,stub_export_macro=RACE_COMMON_STUB_Export \
+// -Wb,stub_export_include=RACE_common_stub_export.h \
+// -Wb,skel_export_macro=RACE_COMMON_SVNT_Export \
+// -Wb,skel_export_include=RACE_common_svnt_export.h
+// dynamicflags = RACE_COMMON_SVNT_BUILD_DLL
+
+// IDL_Files {
+// RACE_common.idl
+// }
+
+// Source_Files {
+// RACE_commonS.cpp
+// }
+
+// Header_Files {
+// RACE_commonS.h
+// }
+
+// Inline_Files {
+// RACE_commonS.inl
+// }
+// }
diff --git a/modules/CIAO/RACE/common/RACE_common_stub_export.h b/modules/CIAO/RACE/common/RACE_common_stub_export.h
new file mode 100644
index 00000000000..d6c33fc61f6
--- /dev/null
+++ b/modules/CIAO/RACE/common/RACE_common_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RACE_COMMON_STUB
+// ------------------------------
+#ifndef RACE_COMMON_STUB_EXPORT_H
+#define RACE_COMMON_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RACE_COMMON_STUB_HAS_DLL)
+# define RACE_COMMON_STUB_HAS_DLL 1
+#endif /* ! RACE_COMMON_STUB_HAS_DLL */
+
+#if defined (RACE_COMMON_STUB_HAS_DLL) && (RACE_COMMON_STUB_HAS_DLL == 1)
+# if defined (RACE_COMMON_STUB_BUILD_DLL)
+# define RACE_COMMON_STUB_Export ACE_Proper_Export_Flag
+# define RACE_COMMON_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RACE_COMMON_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RACE_COMMON_STUB_BUILD_DLL */
+# define RACE_COMMON_STUB_Export ACE_Proper_Import_Flag
+# define RACE_COMMON_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RACE_COMMON_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RACE_COMMON_STUB_BUILD_DLL */
+#else /* RACE_COMMON_STUB_HAS_DLL == 1 */
+# define RACE_COMMON_STUB_Export
+# define RACE_COMMON_STUB_SINGLETON_DECLARATION(T)
+# define RACE_COMMON_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RACE_COMMON_STUB_HAS_DLL == 1 */
+
+// Set RACE_COMMON_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RACE_COMMON_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RACE_COMMON_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RACE_COMMON_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RACE_COMMON_STUB_NTRACE */
+
+#if (RACE_COMMON_STUB_NTRACE == 1)
+# define RACE_COMMON_STUB_TRACE(X)
+#else /* (RACE_COMMON_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RACE_COMMON_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RACE_COMMON_STUB_NTRACE == 1) */
+
+#endif /* RACE_COMMON_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/common/RACE_common_svnt_export.h b/modules/CIAO/RACE/common/RACE_common_svnt_export.h
new file mode 100644
index 00000000000..96790b41c7d
--- /dev/null
+++ b/modules/CIAO/RACE/common/RACE_common_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RACE_COMMON_SVNT
+// ------------------------------
+#ifndef RACE_COMMON_SVNT_EXPORT_H
+#define RACE_COMMON_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RACE_COMMON_SVNT_HAS_DLL)
+# define RACE_COMMON_SVNT_HAS_DLL 1
+#endif /* ! RACE_COMMON_SVNT_HAS_DLL */
+
+#if defined (RACE_COMMON_SVNT_HAS_DLL) && (RACE_COMMON_SVNT_HAS_DLL == 1)
+# if defined (RACE_COMMON_SVNT_BUILD_DLL)
+# define RACE_COMMON_SVNT_Export ACE_Proper_Export_Flag
+# define RACE_COMMON_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RACE_COMMON_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RACE_COMMON_SVNT_BUILD_DLL */
+# define RACE_COMMON_SVNT_Export ACE_Proper_Import_Flag
+# define RACE_COMMON_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RACE_COMMON_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RACE_COMMON_SVNT_BUILD_DLL */
+#else /* RACE_COMMON_SVNT_HAS_DLL == 1 */
+# define RACE_COMMON_SVNT_Export
+# define RACE_COMMON_SVNT_SINGLETON_DECLARATION(T)
+# define RACE_COMMON_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RACE_COMMON_SVNT_HAS_DLL == 1 */
+
+// Set RACE_COMMON_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RACE_COMMON_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RACE_COMMON_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RACE_COMMON_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RACE_COMMON_SVNT_NTRACE */
+
+#if (RACE_COMMON_SVNT_NTRACE == 1)
+# define RACE_COMMON_SVNT_TRACE(X)
+#else /* (RACE_COMMON_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RACE_COMMON_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RACE_COMMON_SVNT_NTRACE == 1) */
+
+#endif /* RACE_COMMON_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/RACE/descriptors/Deployment.xsd b/modules/CIAO/RACE/descriptors/Deployment.xsd
new file mode 100644
index 00000000000..c8a6399730b
--- /dev/null
+++ b/modules/CIAO/RACE/descriptors/Deployment.xsd
@@ -0,0 +1,776 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:import namespace="http://www.omg.org/XMI" schemaLocation="XMI.xsd" />
+
+
+ <xsd:complexType name="Any">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Any" type="Deployment:Any"/>
+ <xsd:complexType name="DataType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+ <xsd:element name="enum" type="Deployment:EnumType"/>
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DataType" type="Deployment:DataType"/>
+ <xsd:complexType name="DataValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <xsd:element name="opaque" type="xsd:base64Binary"/>
+ <xsd:element name="objref" type="xsd:string"/>
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <xsd:element name="fixed" type="xsd:string"/>
+ <xsd:element name="any" type="Deployment:Any"/>
+ <xsd:element name="typecode" type="Deployment:DataType"/>
+ <xsd:element name="element" type="Deployment:DataValue"/>
+ <xsd:element name="discriminator" type="Deployment:DataValue"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element name="boxedValue" type="Deployment:DataValue"/>
+ <xsd:element name="member" type="Deployment:NamedValue"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DataValue" type="Deployment:DataValue"/>
+
+
+ <xsd:complexType name="EnumType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="EnumType" type="Deployment:EnumType"/>
+ <xsd:complexType name="ObjrefType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+
+
+ <xsd:element name="ObjrefType" type="Deployment:ObjrefType"/>
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="BoundedStringType" type="Deployment:BoundedStringType"/>
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="FixedType" type="Deployment:FixedType"/>
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ArrayType" type="Deployment:ArrayType"/>
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SequenceType" type="Deployment:SequenceType"/>
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AliasType" type="Deployment:AliasType"/>
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="StructType" type="Deployment:StructType"/>
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="StructMemberType" type="Deployment:StructMemberType"/>
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ValueType" type="Deployment:ValueType"/>
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ValueMemberType" type="Deployment:ValueMemberType"/>
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="UnionType" type="Deployment:UnionType"/>
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="UnionMemberType" type="Deployment:UnionMemberType"/>
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="NamedValue" type="Deployment:NamedValue"/>
+ <xsd:complexType name="Bridge">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connect" type="Deployment:Interconnect"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Bridge" type="Deployment:Bridge"/>
+ <xsd:complexType name="Interconnect">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Bridge"/>
+ <xsd:element name="connect" type="Deployment:Node"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Interconnect" type="Deployment:Interconnect"/>
+ <xsd:complexType name="Node">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Interconnect"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Node" type="Deployment:Node"/>
+ <xsd:complexType name="Resource">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Resource" type="Deployment:Resource"/>
+ <xsd:complexType name="SharedResource">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SharedResource" type="Deployment:SharedResource"/>
+ <xsd:complexType name="Domain">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="interconnect" type="Deployment:Interconnect"/>
+ <xsd:element name="bridge" type="Deployment:Bridge"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Domain" type="Deployment:Domain"/>
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanPropertyMapping" type="Deployment:PlanPropertyMapping"/>
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanSubcomponentPropertyReference" type="Deployment:PlanSubcomponentPropertyReference"/>
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanSubcomponentPortEndpoint" type="Deployment:PlanSubcomponentPortEndpoint"/>
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanConnectionDescription" type="Deployment:PlanConnectionDescription"/>
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="InstanceDeploymentDescription" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="MonolithicDeploymentDescription" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="location" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ArtifactDeploymentDescription" type="Deployment:ArtifactDeploymentDescription"/>
+
+
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription"/>
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DeploymentPlan" type="Deployment:DeploymentPlan"/>
+
+
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ResourceDeploymentDescription" type="Deployment:ResourceDeploymentDescription"/>
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="InstanceResourceDeploymentDescription" type="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ConnectionResourceDeploymentDescription" type="Deployment:ConnectionResourceDeploymentDescription"/>
+ <xsd:complexType name="Capability">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Capability" type="Deployment:Capability"/>
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPropertyDescription" type="Deployment:ComponentPropertyDescription"/>
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="exclusiveProvider" type="xsd:string"/>
+ <xsd:element name="exclusiveUser" type="xsd:string"/>
+ <xsd:element name="optional" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPortDescription" type="Deployment:ComponentPortDescription"/>
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="idlFile" type="xsd:string"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="location" type="xsd:string"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationArtifactDescription" type="Deployment:ImplementationArtifactDescription"/>
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="MonolithicImplementationDescription" type="Deployment:MonolithicImplementationDescription"/>
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AssemblyPropertyMapping" type="Deployment:AssemblyPropertyMapping"/>
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentPropertyReference" type="Deployment:SubcomponentPropertyReference"/>
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentPortEndpoint" type="Deployment:SubcomponentPortEndpoint"/>
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AssemblyConnectionDescription" type="Deployment:AssemblyConnectionDescription"/>
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="package" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentInstantiationDescription" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription"/>
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentAssemblyDescription" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:complexType name="ComponentImplementationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="capability" type="Deployment:Capability"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requiredUUID" type="xsd:string"/>
+ <xsd:element name="requiredName" type="xsd:string"/>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPackageReference" type="Deployment:ComponentPackageReference"/>
+ <xsd:complexType name="ComponentPackageDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PackageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PackagedComponentImplementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="NamedImplementationArtifact" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="resourcePort" type="xsd:string"/>
+ <xsd:element name="componentPort" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationRequirement" type="Deployment:ImplementationRequirement"/>
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="RequirementSatisfier" type="Deployment:RequirementSatisfier"/>
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SatisfierProperty" type="Deployment:SatisfierProperty"/>
+ <xsd:complexType name="Requirement">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Requirement" type="Deployment:Requirement"/>
+ <xsd:complexType name="Property">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Property" type="Deployment:Property"/>
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="location" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ExternalReferenceEndpoint" type="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentExternalPortEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationDependency" type="Deployment:ImplementationDependency"/>
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="package" type="Deployment:PackageConfiguration"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="TopLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/modules/CIAO/RACE/descriptors/Modified_Deployment.xsd b/modules/CIAO/RACE/descriptors/Modified_Deployment.xsd
new file mode 100644
index 00000000000..b73077b0980
--- /dev/null
+++ b/modules/CIAO/RACE/descriptors/Modified_Deployment.xsd
@@ -0,0 +1,790 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="DataType">
+ <xsd:choice>
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+<!--
+@@ not used, what for?
+
+ <xsd:element name="enum" type="Deployment:EnumType"/>
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DataValue">
+ <xsd:choice>
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <!-- xsd:element name="opaque" type="xsd:base64Binary"/ -->
+ <xsd:element name="objref" type="xsd:string"/>
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <xsd:element name="fixed" type="xsd:string"/>
+
+<!--
+@@ recursive
+ <xsd:element name="any" type="Deployment:Any"/>
+-->
+
+ <xsd:element name="typecode" type="Deployment:DataType"/>
+
+<!--
+@@ recursive
+ <xsd:element name="element" type="Deployment:DataValue"/>
+ <xsd:element name="discriminator" type="Deployment:DataValue"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element name="boxedValue" type="Deployment:DataValue"/>
+ <xsd:element name="member" type="Deployment:NamedValue"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Any">
+ <xsd:sequence>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Property">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- End of base definitions. -->
+
+ <xsd:complexType name="Node">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="connection" type="Deployment:Interconnect"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+-->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Resource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SharedResource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Domain">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource" minOccurs="0"/>
+ <xsd:element name="node" type="Deployment:Node" maxOccurs="unbounded"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="interconnect" type="Deployment:Interconnect"/>
+ <xsd:element name="bridge" type="Deployment:Bridge"/>
+-->
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Requirement">
+ <xsd:sequence>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Deployment -->
+
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="artifact" type="xsd:IDREF" maxOccurs="unbounded"/> <!-- ArtifactDeploymentDescription -->
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="xsd:IDREF"/> <!-- MonolithicDeploymentDescription -->
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="exclusiveProvider" type="xsd:string"/>
+ <xsd:element name="exclusiveUser" type="xsd:string"/>
+ <xsd:element name="optional" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="idlFile" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- InstanceDeploymentDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:sequence>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription" maxOccurs="unbounded" />
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- potentially recursive, not used
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ -->
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+
+
+<!-- Implementation -->
+
+
+ <xsd:complexType name="Capability">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive NIA->IAD->NIA -->
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+
+ <!-- @@ There probably should be only one location? -->
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="resourcePort" type="xsd:string"/>
+ <xsd:element name="componentPort" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:sequence>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact" maxOccurs="unbounded"/>
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive CPD->PCI->CID->CAD->SID->CPD -->
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageDescription">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:sequence>
+ <xsd:element name="requiredUUID" type="xsd:string"/>
+ <xsd:element name="requiredName" type="xsd:string"/>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="package" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- SubcomponentInstantiationDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:sequence>
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:sequence>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription" maxOccurs="unbounded"/>
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentImplementationDescription">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ </xsd:choice>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="capability" type="Deployment:Capability" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+<!-- Package -->
+
+
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration"/>
+-->
+
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:sequence>
+ <xsd:element name="package" type="Deployment:PackageConfiguration" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Top-level elements. -->
+
+
+ <xsd:element name="domain" type="Deployment:Domain"/>
+ <xsd:element name="deploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:element name="implementationArtifactDescription" type="Deployment:ImplementationArtifactDescription" />
+ <xsd:element name="componentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="componentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element name="componentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="packageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="topLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+
+
+
+<!-- VAULT
+
+Place for strange things. Nobody knows what they are for...
+
+-->
+
+<!--
+
+ <xsd:complexType name="EnumType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ObjrefType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Bridge">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connect" type="Deployment:Interconnect"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Interconnect">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Bridge"/>
+ <xsd:element name="connect" type="Deployment:Node"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+<!--
+
+ This type is not referenced anywhere.
+
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+</xsd:schema>
diff --git a/modules/CIAO/RACE/descriptors/XMI.xsd b/modules/CIAO/RACE/descriptors/XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/RACE/descriptors/XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/RACE/descriptors/deployment.dat b/modules/CIAO/RACE/descriptors/deployment.dat
new file mode 100644
index 00000000000..d0aec354bad
--- /dev/null
+++ b/modules/CIAO/RACE/descriptors/deployment.dat
@@ -0,0 +1 @@
+SoleNode corbaloc:iiop:localhost:30000/NodeManager
diff --git a/modules/CIAO/RACE/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/RACE/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..0648c10eab8
--- /dev/null
+++ b/modules/CIAO/RACE/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,361 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+ <label>DeploymentManager-DeploymentPlan</label>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>deployment_stage_port</name>
+ <specificType>IDL:RACE/deployment_stage:1.0</specificType>
+ <supportedType>IDL:RACE/deployment_stage:1.0</supportedType>
+ <provider>false></provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="RACE-Interactive_Input_Adapter-mdd">
+ <name>RACE-Interactive_Input_Adapter-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>RACE-Interactive_Input_Adapter_exec</artifact>
+ <artifact>RACE-Interactive_Input_Adapter_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="RACE-Plan_Analyzer-mdd">
+ <name>RACE-Plan_Analyzer-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>RACE-Plan_Analyzer_exec</artifact>
+ <artifact>RACE-Plan_Analyzer_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="RACE-Planner_Manager-mdd">
+ <name>RACE-Planner_Manager-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>RACE-Planner_Manager_exec</artifact>
+ <artifact>RACE-Planner_Manager_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="RACE-SimpleBinPacker-mdd">
+ <name>RACE-SimpleBinPacker-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>RACE-SimpleBinPacker_exec</artifact>
+ <artifact>RACE-SimpleBinPacker_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="RACE-XML_Output_Adapter-mdd">
+ <name>RACE-XML_Output_Adapter-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>RACE-XML_Output_Adapter_exec</artifact>
+ <artifact>RACE-XML_Output_Adapter_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="RACE-Interactive_Input_Adapter-idd">
+ <name>RACE-Interactive_Input_Adapter-idd</name>
+ <node>SoleNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>RACE-Interactive_Input_Adapter-mdd</implementation>
+ </instance>
+
+ <instance id="RACE-Plan_Analyzer-idd">
+ <name>RACE-Plan_Analyzer-idd</name>
+ <node>SoleNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>RACE-Plan_Analyzer-mdd</implementation>
+ </instance>
+
+ <instance id="RACE-Planner_Manager-idd">
+ <name>RACE-Planner_Manager-idd</name>
+ <node>SoleNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>RACE-Planner_Manager-mdd</implementation>
+ </instance>
+
+ <instance id="RACE-SimpleBinPacker-idd">
+ <name>RACE-SimpleBinPacker-idd</name>
+ <node>SoleNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>RACE-SimpleBinPacker-mdd</implementation>
+ </instance>
+
+ <instance id="RACE-XML_Output_Adapter-idd">
+ <name>RACE-XML_Output_Adapter-idd</name>
+ <node>SoleNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>RACE-XML_Output_Adapter-mdd</implementation>
+ </instance>
+
+ <!-- BEGIN Connections -->
+
+ <connection>
+ <name>forward_Plan_Analyzer</name>
+ <internalEndpoint>
+ <portName>plan_ingress</portName>
+ <kind>Facet</kind>
+ <instance>RACE-Plan_Analyzer-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>ingress</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>RACE-Interactive_Input_Adapter-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>forward_Planner_Manager</name>
+ <internalEndpoint>
+ <portName>planner_manager_i</portName>
+ <kind>Facet</kind>
+ <instance>RACE-Planner_Manager-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>planner_manager_i</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>RACE-Plan_Analyzer-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>access_SimpleBinPacker</name>
+ <internalEndpoint>
+ <portName>planner_i</portName>
+ <kind>Facet</kind>
+ <instance>RACE-SimpleBinPacker-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>planners</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>RACE-Planner_Manager-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>forward_XML_Output_Adapter</name>
+ <internalEndpoint>
+ <portName>plan_egress</portName>
+ <kind>Facet</kind>
+ <instance>RACE-XML_Output_Adapter-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>outputs</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>RACE-Planner_Manager-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- END Connections -->
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="RACE-Interactive_Input_Adapter_exec">
+ <name>Interactive_Input_Adapter_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Interactive_Input_Adapter_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createInteractive_Input_Adapter_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="RACE-Interactive_Input_Adapter_svnt">
+ <name>Interactive_Input_Adapter_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Interactive_Input_Adapter_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createInteractive_Input_Adapter_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="RACE-Plan_Analyzer_exec">
+ <name>Plan_Analyzer_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Plan_Analyzer_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createPlan_Analyzer_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="RACE-Plan_Analyzer_svnt">
+ <name>Plan_Analyzer_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Plan_Analyzer_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createPlan_Analyzer_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="RACE-Planner_Manager_exec">
+ <name>Planner_Manager_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Planner_Manager_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createPlanner_Manager_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="RACE-Planner_Manager_svnt">
+ <name>Planner_Manager_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Planner_Manager_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createPlanner_Manager_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="RACE-SimpleBinPacker_exec">
+ <name>SimpleBinPacker_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>SimpleBinPacker_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSimpleBinPacker_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="RACE-SimpleBinPacker_svnt">
+ <name>SimpleBinPacker_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>SimpleBinPacker_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSimpleBinPacker_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="RACE-XML_Output_Adapter_exec">
+ <name>XML_Output_Adapter_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>XML_Output_Adapter_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createXML_Output_Adapter_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="RACE-XML_Output_Adapter_svnt">
+ <name>XML_Output_Adapter_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>XML_Output_Adapter_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createXML_Output_Adapter_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/README b/modules/CIAO/README
new file mode 100644
index 00000000000..22504fb64af
--- /dev/null
+++ b/modules/CIAO/README
@@ -0,0 +1,152 @@
+
+BUILDING CIAO
+========================
+
+* Supported platform:
+
+ We have tried CIAO examples on Win32 using MSVC 7.1 and above and on
+ Linux.
+
+* Documentation:
+
+ Various documents are available under $(CIAO_ROOT)/docs/
+ Commments and suggestions for improving these documents are
+ extremely welcome.
+
+* Preparation - Compiling ACE and TAO:
+
+ *************************************************
+
+ There has been some big changes in MPC and
+ a few "problems" are being sorted out before
+ ACE/TAO switched to use MPC generated Makefile
+ projects files exclusively. CIAO only uses
+ MPC. MPC, however, assumes a slightly different
+ directory structure than the stock, old ACE
+ Makefile/project files. Therefore, it is
+ a bit adventurous to compile CIAO at this time
+ of transition. Here are some hints that you
+ can try to make this work a bit easier.
+
+ 1. Make sure to add $ACE_ROOT/lib into your
+ PATH, or LD_LIBRARY_PATH (before
+ $ACE_ROOT/bin)
+
+ 2. Make sure you don't have old CIAO libraries
+ DLL and so files) hanging around.
+
+ 3. If prefered, you can re-generate the Makefile,
+ project files for all/core ACE/TAO libraries.
+ (e.g., using $ACE_ROOT/TAO/TAOACE.mwc.)
+
+ *************************************************
+
+ CIAO depends on many CORBA features to function properly so you need
+ to compile them first. Here is a non-exhaustive list:
+
+ ACEXML_Parser,
+
+ Valuetype
+ IORInterceptor
+ ObjRefTemplate
+ Security
+ PortableServer
+ IFR_Client
+
+ RTPortableServer
+ RTCORBA
+
+and also the libraries they depends on.
+
+ - On Linux, try defining these in the platform_macros.GNU
+
+ exceptions=1
+ interface_repo=1
+ ssl=1
+
+* Compiling CIAO core libraries and tools:
+
+ Assuming CIAO_ROOT = ACE_wrappers/TAO/CIAO/
+
+ Compile the following directories:
+
+
+ $CIAO_ROOT/ciao/
+
+ $CIAO_ROOT/tools/XML_Helpers
+ $CIAO_ROOT/tools/ComponentServer
+ $CIAO_ROOT/tools/ServerActivator
+ $CIAO_ROOT/tools/Assembly_Deployer
+ $CIAO_ROOT/tools/Daemon
+
+ You need to creating the Makefile of your choice..
+ For example, for unix makefile:
+
+ $ cd $CIAO_ROOT/ciao/
+ $ $(ACE_ROOT)/bin/mwc.pl
+ $ make
+
+ To regenerate VC7.1.NET project files, do:
+
+ > cd $CIAO_ROOT/ciao
+ > $(ACE_ROOT)/bin/mwc.pl -type vc71
+
+* You also need to build the CIDL compiler before trying out any
+ examples. The CIDL compiler, CIDLC, compiles your component
+ implementation definition and generates the necessary glue code for
+ developing and deploying components. Pleas see
+ $CIAO_ROOT/CIDLC/README.html for instructions on how to build and
+ use CIDLC.
+
+* Now you can play with the examples:
+
+ - $CIAO_ROOT/examples/Hello
+
+ This is a single component example. Check out run_test.pl to see
+ how you can instantiate a single component using CIAO.
+
+ - $CIAO_ROOT/examples/OEP/Display
+
+ This is a multiple-component example. RateGen component
+ subdirectory contains a run_test.pl that you can use to
+ instantiate a component instance, like you would do with the
+ Hello example. The other components require collaboration with
+ other components and I don't have client programs to test them
+ out individually.
+
+ This example also lets you compose all the components into a
+ distributed application using the Assembly_Deployer. Change
+ directory to
+
+ $CIAO_ROOT/examples/OEP/Display/descriptors
+
+ and take a look at the file: NOTE.txt. This file describes the
+ steps to compose the application using various different
+ configurations and composition specs.
+
+ - $CIAO_ROOT/examples/OEP/BasicSP
+
+ This is a new multi-component example. It has the similar
+ struture as the Dsiplay example above.
+
+
+* If you can not find the
+ Makefiles for unix platform you are using, you can use mwc to create
+ them. For examples, to compile the multi-component example, use the
+ following:
+
+ $ cd $CIAO_ROOT/examples/Display
+ $ $(ACE_ROOT)/bin/mwc.pl
+ $ make
+
+ To regenerate VC6 dsp files, do:
+
+ > cd $CIAO_ROOT/examples/Display
+ > $(ACE_ROOT)/bin/mwc.pl -type vc6
+
+ Likewise, to regenerate VC7.NET project files, do:
+
+ > cd $CIAO_ROOT/examples/Display
+ > $(ACE_ROOT)/bin/mwc.pl -type vc7
+
+
diff --git a/modules/CIAO/Release b/modules/CIAO/Release
new file mode 100644
index 00000000000..2198eab5e2a
--- /dev/null
+++ b/modules/CIAO/Release
@@ -0,0 +1,53 @@
+#----------------------------------------------------------------------------
+# $Id$
+#
+# Top-level Makefile for the CIAO
+#----------------------------------------------------------------------------
+
+#### The "release" targets can be used to create the ACE+TAO+CIAO kit. By
+#### default, it creates a new beta release. To create a new minor or
+#### major release, add "REL=minor" or "REL=major", respectively, to
+#### the make invocation.
+
+CONTROLLED_FILES = CIAO
+
+RELEASE_FILES = $(addprefix ACE_wrappers/TAO/,$(CONTROLLED_FILES))
+
+.PHONY: CIAO tag
+
+REL = beta
+MAKE = make -f Release
+CHECK =
+APPLY_NEW_TAG = tag
+
+#### The call to make_release below doesn't actually create the kit.
+allsources: $(APPLY_NEW_TAG)
+ @cd $(ACE_ROOT) && $(MAKE) -s ciaosources
+
+tag:
+ @$(ACE_ROOT)/bin/make_release $(CHECK) -k ciao -v $(REL) -u
+
+######################################################################
+#### The following target is to create a CIAO distribution
+#### It just delegates to our well known target
+#####################################################################
+CIAO: $(allsources)
+
+
+.PHONY: show_controlled_files show_release_files show_release_lib_files
+
+show_controlled_files:
+ @echo $(CONTROLLED_FILES)
+
+show_release_files:
+ @echo $(RELEASE_FILES)
+
+show_release_lib_files:
+ @echo ""
+
+show_release_tag_files:
+ @echo ""
+
+CIAO-INSTALL: CIAO-INSTALL.html
+ @lynx -dump $< > CIAO-INSTALL
+
diff --git a/modules/CIAO/VERSION b/modules/CIAO/VERSION
new file mode 100644
index 00000000000..c4fce05941d
--- /dev/null
+++ b/modules/CIAO/VERSION
@@ -0,0 +1,12 @@
+This is CIAO version 0.5.6, released Sun Jan 28 19:59:14 2007.
+
+If you have any problems with or questions about CIAO, please send
+e-mail to the CIAO mailing list (ciao-users@cs.wustl.edu), using the
+form found in the file CIAO/PROBLEM-REPORT-FORM. To ensure that you
+see responses, please do one of the following:
+
+ 1) Subscribe to the ciao-users mail list, by sending email with
+ contents "subscribe ciao-users" to majordomo@cs.wustl.edu.
+
+ 2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
+
diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils.base b/modules/CIAO/bin/PerlCIAO/TestUtils.base
new file mode 100644
index 00000000000..7e68a521d2f
--- /dev/null
+++ b/modules/CIAO/bin/PerlCIAO/TestUtils.base
@@ -0,0 +1,3 @@
+processes
+files
+wd
diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils.pm b/modules/CIAO/bin/PerlCIAO/TestUtils.pm
new file mode 100644
index 00000000000..6cb4ca22fe7
--- /dev/null
+++ b/modules/CIAO/bin/PerlCIAO/TestUtils.pm
@@ -0,0 +1,323 @@
+
+#------------------------------------------------------------------------
+# class: TestUtils
+# Author: Stoyan Paunov
+#
+# Description: This is a class to help us write better and more manage-
+# able test utilities. Usually when creating a test in
+# CIAO it has to do with deploying a number of managers
+# and failure to deploy any process means failure of the
+# test. This test utility class takes care of the error
+# handling and clean-up and side of testing and allows
+# the test writer to concentrate on the core logic.
+# These are the main advantages of the TestUtils class:
+# --> Semi-Automatic error handling
+# --> Automatic process shutdown and clean-up
+# --> Semi-Automatic file (IOR) deletion
+# --> Location independent tests
+# --> Clean and concise code base
+# --> Manageable test utility suites
+#------------------------------------------------------------------------
+
+# class TestUtils
+sub new;
+sub DESTROY;
+sub cleanup;
+sub goto_dir;
+sub spawn;
+sub terminate;
+sub required_file;
+sub required_files;
+sub mark_file;
+sub mark_files;
+sub remove_file;
+sub remove_files;
+sub cleanup_files;
+sub cleanup_processes;
+
+package TestUtils;
+use PerlCIAO::TestUtils_Base;
+use strict;
+our @ISA = qw(TestUtils_Base); # inherits from TestUtils_Base
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+use Cwd;
+
+#------------------------------------------------------------------------
+# Constructor
+#------------------------------------------------------------------------
+sub new {
+ my $class = shift;
+
+ #call the constructor of the parent class, TestUtils_Base.
+ my $self = $class->SUPER::new();
+
+ $self->{_wd} = getcwd;
+
+ bless $self, $class;
+ return $self;
+}
+
+#------------------------------------------------------------------------
+# Destructor: performs clean-up
+#------------------------------------------------------------------------
+
+sub DESTROY {
+ my $self = shift;
+
+ #$self->cleanup (); check the CLEAN-UP description for explanation
+}
+
+#------------------------------------------------------------------------
+# Cleanup: This fuction kills the spawned processes and deletes the
+# marked files. Optionally, once the cleanup is done it will
+# cause the program to exit, iff an exit code is specified.
+#
+#
+# NOTE: You need to call the cleanup () although it is called
+# in the destructor because this class is a wrapper around
+# PerlACE::Run_Test which also keep some internal state
+# and tries to do some clean-up. However its destructor
+# is called before this one, and this results in some
+# errors.
+#------------------------------------------------------------------------
+
+sub cleanup {
+ my $self = shift;
+ my $exit_code = shift;
+
+ print "Performing clean-up ...\n";
+
+ $self->cleanup_files ();
+ $self->cleanup_processes ();
+
+ print "Cleanup = DONE\n";
+
+ chdir $self->wd ();
+
+ if (defined ($exit_code)) {
+ exit ($exit_code);
+ }
+}
+
+#------------------------------------------------------------------------
+# Goto_dir: This function allows you to change the current working
+# directory. Note that the class returns to the original
+# working directory upon exit.
+#------------------------------------------------------------------------
+
+#TODO: might want to push the dir to some stack
+sub goto_dir {
+ my $self = shift;
+ my $dir = shift;
+
+ if (! (chdir $dir)) {
+ print STDERR "Failed to change directory to: $dir";
+ $self->cleanup ();
+ }
+
+}
+
+#------------------------------------------------------------------------
+# Spawn: This function is used to spawn a process. It takes a descriptive
+# name under which it stores the process, the command line and the
+# arguments needed by the command. Optionally, you could specify
+# a timeout based on which the process would be spawned and if
+# it has not terminated after timeout seconds it will be killed.
+# If a failure occurs the function will perform clean-up and
+# terminate the program.
+#------------------------------------------------------------------------
+
+sub spawn {
+ my $self = shift;
+ my $name = shift;
+ my $cmd = shift;
+ my $args = shift;
+ my $timeout = shift;
+
+ if (!defined ($self->processes ())) {
+ $self->{_processes} = {};
+ }
+
+ my $process = new PerlACE::Process ($cmd, $args);
+
+ if (defined ($timeout)) {
+ if ((my $ret = $process->SpawnWaitKill ($timeout)) == -1) {
+ print STDERR "ERROR: Process $name returned $ret.\n";
+ $self->cleanup (1);
+ }
+ }
+ else {
+ if ($process->Spawn () == -1) {
+ $process->Kill ();
+ #just in case, lets add it to the process list
+ $self->processes->{$name} = $process;
+ print STDERR "ERROR: Failure to spawn $name.\n";
+ $self->cleanup (1);
+ }
+ }
+
+ $self->processes->{$name} = $process;
+ return $process;
+}
+
+#------------------------------------------------------------------------
+# Terminate: This function takes in the descriptive process name passed
+# to Spawn, looks up the process corresponding to it and
+# kills it.
+#------------------------------------------------------------------------
+
+sub terminate {
+ my $self = shift;
+ my $pname = shift;
+
+ $self->processes ()->{$pname}->Kill ();
+ $self->processes ()->{$pname}->TimedWait (1);
+
+ print STDERR "$pname teminated!\n";
+}
+
+#------------------------------------------------------------------------
+# Required_file: This function checks if a required file is present in
+# the current working directory. If the file is missing
+# it performs cleanup and causes the program to exit.
+#------------------------------------------------------------------------
+
+sub required_file {
+ my $self = shift;
+ my $file = shift;
+
+ if (PerlACE::waitforfile_timed
+ ($file, $PerlACE::wait_interval_for_process_creation) == -1) {
+
+ print STDERR
+ "ERROR: Required file $file could not be found.\n";
+
+ $self->cleanup (1);
+ }
+ return 1;
+}
+
+#------------------------------------------------------------------------
+# Required_filez: This function does the same as required_file above
+# except that it works on a reference (REF) to a list
+# of required files.
+#------------------------------------------------------------------------
+
+sub required_files {
+ my $self = shift;
+ my $files = shift;
+ my $pname = shift;
+
+ foreach my $file (@{$files}) {
+
+ if (PerlACE::waitforfile_timed
+ ($file, $PerlACE::wait_interval_for_process_creation) == -1) {
+
+ print STDERR
+ "ERROR: Required file $file could not be found.\n";
+
+ $self->cleanup (1);
+ }
+ }
+ return 1;
+}
+
+#------------------------------------------------------------------------
+# Mark_file: This function marks a file from the current working
+# directory for deletion. Once the file is marked it will be
+# deleted upon program termination. If the file cannot be
+# found, it is ignored.
+#------------------------------------------------------------------------
+
+sub mark_file {
+ my $self = shift;
+ my $file = shift;
+
+ if (!defined $self->files ()) {
+ $self->{_files} = [];
+ }
+
+ push @{$self->files ()}, $file;
+}
+
+#------------------------------------------------------------------------
+# Mark_filez: This function does the same as mark_file above except
+# that it works on a reference (REF) to an array/list of
+# required files.
+#------------------------------------------------------------------------
+
+sub mark_files {
+ my $self = shift;
+ my $files = shift;
+
+ if (!defined $self->files ()) {
+ $self->{_files} = [];
+ }
+
+ foreach my $file (@{$files}) {
+ push @{$self->files ()}, $file;
+ }
+}
+
+#------------------------------------------------------------------------
+# Remove_file: This fuction removes a file from the current working
+# directory. If the file is not there, it is ignored.
+#------------------------------------------------------------------------
+
+sub remove_file {
+ my $self = shift;
+ my $file = shift;
+
+ my $path = PerlACE::LocalFile ($file);
+ unlink $path;
+}
+
+#------------------------------------------------------------------------
+# Remove_filez: This fuction removes a list of file from the current
+# working directory. It takes a REF of a list of files
+# and ignores files which are not found.
+#------------------------------------------------------------------------
+
+sub remove_files {
+ my $self = shift;
+ my $files = shift;
+
+ foreach my $file (@{$files}) {
+ my $path = PerlACE::LocalFile ($file);
+ unlink $path;
+ }
+}
+
+#------------------------------------------------------------------------
+# Cleanup_files: clean us the files :)
+#------------------------------------------------------------------------
+
+sub cleanup_files {
+ my $self = shift;
+
+ if (defined ($self->files ())) {
+ foreach my $file (@{$self->files ()}) {
+ $self->remove_file ($file);
+ }
+ }
+}
+
+#------------------------------------------------------------------------
+# Cleanup_processes: clean us the processes :)
+#------------------------------------------------------------------------
+
+sub cleanup_processes {
+ my $self = shift;
+
+ if (defined ($self->processes ())) {
+ foreach my $pname ( keys %{$self->processes ()}) {
+ $self->terminate ($pname);
+ delete ($self->processes ()->{$pname});
+ }
+ }
+}
+
+#return value of the class
+1; \ No newline at end of file
diff --git a/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm b/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm
new file mode 100644
index 00000000000..be0726946c9
--- /dev/null
+++ b/modules/CIAO/bin/PerlCIAO/TestUtils_Base.pm
@@ -0,0 +1,78 @@
+#File generated by C:\ACE_wrappers_devel\ACE_wrappers\TAO\CIAO\bin\PerlCIAO\generate_container.pl.
+#Input file: TestUtils.base.
+#Code generator author: Stoyan Paunov
+#
+
+#class TestUtils_Base
+package TestUtils_Base;
+use strict;
+
+#Class constructor :)
+sub new {
+ my ($class) = @_;
+
+ #Create a reference to an anonymous hash
+ my $self = {
+ _processes => undef,
+ _files => undef,
+ _wd => undef
+ };
+
+ #Bless the hash.
+ bless $self, $class;
+ return $self;
+}
+
+#accessor/mutator method for processes
+sub processes {
+ my ( $self, $processes ) = @_;
+
+ $self->{_processes} = $processes
+ if defined ($processes);
+
+ return $self->{_processes};
+}
+
+#accessor/mutator method for files
+sub files {
+ my ( $self, $files ) = @_;
+
+ $self->{_files} = $files
+ if defined ($files);
+
+ return $self->{_files};
+}
+
+#accessor/mutator method for wd
+sub wd {
+ my ( $self, $wd ) = @_;
+
+ $self->{_wd} = $wd
+ if defined ($wd);
+
+ return $self->{_wd};
+}
+
+#print method for the class
+sub print {
+ my ($self) = @_;
+
+ my $f;
+
+ $f = defined ($self->{_processes})
+ ? $self->{_processes} : "not defined";
+ printf ("processes: %s\n", $f);
+
+ $f = defined ($self->{_files})
+ ? $self->{_files} : "not defined";
+ printf ("files: %s\n", $f);
+
+ $f = defined ($self->{_wd})
+ ? $self->{_wd} : "not defined";
+ printf ("wd: %s\n", $f);
+
+}
+
+#class return value
+1;
+
diff --git a/modules/CIAO/bin/PerlCIAO/generate_container.pl b/modules/CIAO/bin/PerlCIAO/generate_container.pl
new file mode 100644
index 00000000000..c56c03ea300
--- /dev/null
+++ b/modules/CIAO/bin/PerlCIAO/generate_container.pl
@@ -0,0 +1,126 @@
+#!/usr/bin/perl
+#
+# $Id$
+#
+# The above line is for compatibility /w Linux. Windows uses the .pl extension.
+# Author: Stoyan Paunov
+# Purpose: Generate a container class with mutator/accessor methods
+# The idea is to use this class as a base class in the
+# inheritance hierarchy. This way we can evolve the base
+# container independently from the rest of the code!
+#
+
+use strict;
+
+die "Usage: $0 <module name> <field description file>\n"
+ if not defined $ARGV[0];
+
+die "Usage: $0 <module name> <field description file>\n"
+ if not defined $ARGV[1];
+
+my $module_name = $ARGV[0];
+my $fields = $ARGV[1];
+
+open (FIELDS, $fields) or die "Failed opening $fields\n";
+
+my @fields = <FIELDS>;
+close FIELDS;
+
+my $field;
+
+print "\#File generated by $0.\n";
+print "\#Input file: $fields.\n";
+print "\#Code generator author: Stoyan Paunov\n\#\n\n";
+
+print "\#class $module_name\n";
+print "package $module_name;\n";
+print "use strict;\n\n";
+print "\#Class constructor :)\n";
+print "sub new {\n";
+print " my (\$class) = \@_;\n\n";
+print " \#Create a reference to an anonymous hash\n";
+print " my \$self = {\n";
+
+my $count = 0;
+my $end = $#fields;
+
+#generate initialization code
+foreach $field (@fields)
+{
+ if ($field =~ /^$/ ) # empty line
+ {
+ next;
+ }
+
+ chomp ($field);
+
+ if ($count == $end)
+ {
+ printf (" _\%-14s => undef\n", $field);
+ next;
+ }
+ printf (" _\%-14s => undef,\n", $field);
+
+
+ $count++
+}
+
+print " };\n\n";
+print " \#Bless the hash.\n";
+print " bless \$self, \$class;\n";
+print " return \$self;\n";
+print "}\n\n";
+
+#Code to generate the accessor and mutator
+
+foreach $field (@fields)
+{
+ if ($field =~ /^$/ ) # empty line
+ {
+ next;
+ }
+
+ chomp ($field);
+
+ print "\#accessor/mutator method for $field\n";
+ print "sub $field {\n";
+ print " my ( \$self, \$$field ) = \@_;\n\n";
+ print " \$self->{_$field} = \$$field\n";
+ print " if defined (\$$field);\n\n";
+ print " return \$self->{_$field};\n";
+ print "}\n\n";
+
+}
+
+
+print "\#print method for the class\n";
+print "sub print {\n";
+print " my (\$self) = \@_;\n\n";
+
+print " my \$f;\n\n";
+
+#Code to generate a print method which dumps the object state
+foreach $field (@fields)
+{
+ if ($field =~ /^$/ ) # empty line
+ {
+ next;
+ }
+
+ chomp ($field);
+ print " \$f = defined (\$self->{_$field}) \n";
+ print " ? \$self->{_$field} : \"not defined\";\n";
+ print " printf (\"$field: %s\\n\", \$f);\n\n";
+
+}
+
+
+
+print "}\n\n";
+
+print "\#class return value \n1;\n\n";
+
+
+
+
+
diff --git a/modules/CIAO/bin/PerlCIAO/perlciao.mpc b/modules/CIAO/bin/PerlCIAO/perlciao.mpc
new file mode 100644
index 00000000000..f596034eab3
--- /dev/null
+++ b/modules/CIAO/bin/PerlCIAO/perlciao.mpc
@@ -0,0 +1,9 @@
+
+// $Id$
+
+project(PerlCIAO) : script {
+ Script_Files {
+ TestUtils.pm
+ TestUtils_Base.pm
+ }
+}
diff --git a/modules/CIAO/bin/generate_component_mpc.pl b/modules/CIAO/bin/generate_component_mpc.pl
new file mode 100755
index 00000000000..f4a6ec7246b
--- /dev/null
+++ b/modules/CIAO/bin/generate_component_mpc.pl
@@ -0,0 +1,263 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# Create a MPC file content for a single component implementation.
+
+use Getopt::Std;
+
+##############################################################################
+# Grab the options
+
+$flags = join (" ", @ARGV);
+
+if (!getopts ('decnip:l:u:h') || $opt_h) {
+ print "generate_component_mpc.pl [-d] [-h] component_name\n";
+ print "\n";
+ print " -d Turn on debug mode\n";
+ print " -e Eventtype declaration in IDL\n";
+ print " -p Dependent component name\n";
+ print " -l Dependent component path\n";
+ print " -i Use an executor definition IDL file\n";
+ print " -n Suppress component make/project\n";
+ print " -c Create a client makefile\n";
+ print " -u Unique project name prefix (if not defined, name for -p flag will be used. \n";
+ print "\n";
+ print "generate_component_mpc creates and save a minimum mpc file\n";
+ print "called $com_name.mpc that is needed for a single component implementation\n";
+ exit (1);
+}
+
+if (defined $opt_d) {
+ print "Debugging Turned on\n";
+
+ if (defined $opt_f) {
+ print "Dependency to $opt_f\n";
+ }
+}
+
+if ($#ARGV < 0) {
+ print STDERR "No component_name specified, use -h for help\n";
+ exit (1);
+}
+
+$com_name = shift @ARGV;
+$UCOM_NAME = uc $com_name;
+
+##############################################################################
+# Prologue
+
+if (defined $opt_n) {
+ $svr_suffix = "_skel";
+}
+else {
+ $svr_suffix = "_svnt";
+}
+
+$USVR_SUFFIX = uc $svr_suffix;
+
+if (defined $opt_p) {
+ $stub_depend = "after += $opt_p".'_stub';
+ $svnt_depend = "$opt_p".'_skel';
+ $lib_depend = "$opt_p".'_stub '."$opt_p".'_skel';
+ $client_depend = "$com_name".'_stub '."$opt_p"."_stub";
+}
+else {
+ $client_depend = "$com_name".'_stub';
+}
+
+$unique_prefix = "";
+
+if (defined $opt_u) {
+ $unique_prefix = "$opt_u" . "_";
+}
+elsif (defined $opt_p) {
+ $unique_prefix = "$opt_p" . "_";
+}
+
+if (defined $opt_l) {
+ $lib_paths = "libpaths += $opt_l";
+}
+
+if (defined $opt_c) {
+ $client_def =
+'
+project ('."$unique_prefix"."$com_name".'_client) : ciao_client_dnc {
+ exename = client
+ after += '."$client_depend
+ $lib_paths".'
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+';
+}
+
+if (defined $opt_i) {
+ $exec_impl_idl = "$com_name".'EI.idl';
+ $exec_impl_cpp = "$com_name".'EIC.cpp';
+ $exec_idlflags =
+'
+ idlflags += -SS -St \
+ -Wb,export_macro='."$UCOM_NAME".'_EXEC_Export \
+ -Wb,export_include='."$com_name".'_exec_export.h
+';
+}
+
+
+if (! defined $opt_n) {
+ $component_def =
+'
+project('."$unique_prefix"."$com_name".'_exec) : ciao_component_dnc {
+ after += '."$unique_prefix"."$com_name"."$svr_suffix".'
+ sharedname = '."$com_name".'_exec
+ libs += '."$com_name".'_stub '."$com_name"."$svr_suffix $lib_depend
+ $lib_paths $exec_idlflags".'
+ dynamicflags = '."$UCOM_NAME".'_EXEC_BUILD_DLL
+
+ IDL_Files {'."
+ $exec_impl_idl".'
+ }
+
+ Source_Files {'."
+ $exec_impl_cpp
+ $com_name".'_exec.cpp
+ }
+}
+';
+}
+
+$no_skel = "-SS";
+$no_anys = "-St";
+$no_tie = "idlflags -= -GT";
+
+if (defined $opt_e) {
+ $no_anys = "";
+
+ if (defined $opt_n) {
+ $no_tie = "";
+ }
+}
+
+$cli_idlflags ='
+ '."$no_tie".'
+ idlflags += '."$no_anys".' \
+ -Wb,stub_export_macro='."$UCOM_NAME".'_STUB_Export \
+ -Wb,stub_export_include='."$com_name".'_stub_export.h \
+ -Wb,skel_export_macro='."$UCOM_NAME"."$USVR_SUFFIX".'_Export \
+ -Wb,skel_export_include='."$com_name"."$svr_suffix".'_export.h
+';
+
+$cli_base = "ciao_client_dnc";
+$svr_base = "ciao_servant_dnc";
+
+if (defined $opt_n) {
+ $svr_idlflags = $cli_idlflags;
+ $svr_idl = "$com_name".'.idl';
+
+ $svr_src =
+'
+ '."$com_name".'S.cpp
+';
+
+ if (! defined $opt_e) {
+ $cli_base = "taolib_with_idl";
+ $svr_base = "portableserver";
+ }
+}
+else {
+ $svr_idlflags ='
+ '."$no_tie".'
+ idlflags += '."$no_anys"." $no_skel".' \
+ -Wb,export_macro='."$UCOM_NAME"."$USVR_SUFFIX".'_Export \
+ -Wb,export_include='."$com_name"."$svr_suffix".'_export.h
+';
+
+ $cidl_block =
+'
+ CIDL_Files {
+ '."$com_name".'.cidl
+ }
+';
+
+ $svr_idl = "$com_name".'E.idl';
+
+ $svr_src =
+'
+ '."$com_name".'EC.cpp
+ '."$com_name".'S.cpp
+ '."$com_name".'_svnt.cpp
+';
+}
+
+
+
+$mpc_template = '// $Id$
+// This file is generated with "'."generate_component_mpc.pl $flags".'"
+
+project('."$unique_prefix"."$com_name".'_stub): '."$cli_base".' {'."
+ $stub_depend".'
+ sharedname = '."$com_name".'_stub
+ '."$cli_idlflags".'
+ dynamicflags = '."$UCOM_NAME".'_STUB_BUILD_DLL
+
+ IDL_Files {
+ '."$com_name".'.idl
+ }
+
+ Source_Files {
+ '."$com_name".'C.cpp
+ }
+}
+
+project('."$unique_prefix"."$com_name"."$svr_suffix".') : '."$svr_base".' {
+ after += '."$svnt_depend "."$unique_prefix"."$com_name".'_stub
+ sharedname = '."$com_name"."$svr_suffix".'
+ libs += '."$com_name".'_stub'." $lib_depend
+ $lib_paths $svr_idlflags".'
+ dynamicflags = '."$UCOM_NAME"."$USVR_SUFFIX".'_BUILD_DLL
+ '."$cidl_block".'
+ IDL_Files {
+ '."$svr_idl".'
+ }
+
+ Source_Files {'."$svr_src".' }
+}
+'."$component_def
+
+$client_def
+";
+
+##############################################################################
+# Static Stuff
+
+##############################################################################
+# Print the stuff out
+
+
+# MPC files
+open (MPCFILE, ">", "$com_name".".mpc");
+print MPCFILE $mpc_template;
+
+$ACE_ROOT= "$ENV{'ACE_ROOT'}";
+
+print "The following commands have been executed:\n\n";
+
+$command = "generate_export_file.pl $UCOM_NAME".'_STUB > '."$com_name".'_stub_export.h';
+print "\t$command"."\n";
+system ("$ACE_ROOT".'/bin/'."$command");
+
+$command = "generate_export_file.pl $UCOM_NAME"."$USVR_SUFFIX".' > '."$com_name"."$svr_suffix".'_export.h';
+print "\t$command"."\n";
+system ("$ACE_ROOT".'/bin/'."$command");
+
+if (! defined $opt_n) {
+ $command = "generate_export_file.pl $UCOM_NAME".'_EXEC > '."$com_name".'_exec_export.h';
+ print "\t$command"."\n";
+ system ("$ACE_ROOT".'/bin/'."$command");
+}
diff --git a/modules/CIAO/bin/replace_dummy_with_dummylabel.sh b/modules/CIAO/bin/replace_dummy_with_dummylabel.sh
new file mode 100755
index 00000000000..3f699576154
--- /dev/null
+++ b/modules/CIAO/bin/replace_dummy_with_dummylabel.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+find . -name "*.mpc" > mpc_files
+for i in `cat mpc_files`
+do
+ sed -e 's/requires += dummy$/requires += dummy_label/g' $i > tmp
+ cat tmp > $i
+done
+
+rm -f mpc_files
+rm -f tmp
diff --git a/modules/CIAO/bin/valgrind_nodedaemon.py b/modules/CIAO/bin/valgrind_nodedaemon.py
new file mode 100755
index 00000000000..a0845864370
--- /dev/null
+++ b/modules/CIAO/bin/valgrind_nodedaemon.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+# $Id$
+#
+# Runs a NodeManager (optionally) under valgrind with the NodeApplication (optionally) under valgrind.
+
+from optparse import OptionParser
+from os import system
+from os import environ
+
+def parse_args ():
+
+ parser = OptionParser (usage="usage: valgrind_nodemanager [options] <port_number>")
+
+ parser.add_option ("-v", "--verbose", dest="verbose", action="store_true",
+ help="Output the command that is to be executed.",
+ default=False)
+ parser.add_option ("-l","--log", dest="log_file", action="store",
+ help="Log all output to a given file.",
+ default="")
+ parser.add_option ("-t", "--tool", dest="valgrind_tool", action="store",
+ help="Specify the valgrind tool to run",
+ default="memcheck")
+ parser.add_option ("--nm", dest="node_manager", action="store_true",
+ help="Run valgrind on the NodeManager",
+ default=False)
+ parser.add_option ("--na", dest="node_application", action="store_true",
+ help="Run valgrind on the NodeApplication",
+ default=False)
+ parser.add_option ("--valgrind_args", dest="valgrind_args", action="store",
+ help="Additional arguments to pass to valgrind",
+ default="")
+ parser.add_option ("-g", dest="gen_supp", action="store_true",
+ help="Generate suppression lines",
+ default=False)
+ parser.add_option ("-s", dest="supp_file", action="store",
+ help="Suppression file for Valgrind to use",
+ default="")
+ parser.add_option ("--lc", dest="leak_check", action="store_true",
+ help="Perform a full leak check",
+ default=False)
+
+ return parser.parse_args ()
+
+import os
+
+def main ():
+ (option, args) = parse_args ()
+
+ ciao_root = environ['CIAO_ROOT']
+
+ # Build the valgrind command
+ valgrind_command = "valgrind --tool=" + option.valgrind_tool + ' ' +\
+ option.valgrind_args + ' '
+
+ if option.gen_supp:
+ valgrind_command += "--gen-suppressions=all "
+
+ if option.supp_file != "":
+ valgrind_command += "--suppressions=\"" + options.supp_file + '" '
+
+ if option.leak_check:
+ valgrind_command += "--leak-check=full "
+
+ # Build the actual command
+ command = ""
+
+ if option.node_manager:
+ command += valgrind_command
+
+ command += ciao_root + "/DAnCE/NodeManager/NodeManager " +\
+ "-ORBEndpoint iiop://localhost:" + args[0] + ' '
+
+ if option.node_application:
+ command += "-d 60 -s\"" + valgrind_command
+ else:
+ command += " -s \""
+
+ command += ciao_root + "/DAnCE/NodeApplication/NodeApplication" + '"'
+
+ print command
+
+ system (command)
+
+if __name__ == "__main__":
+ main ()
+
+
diff --git a/modules/CIAO/ciao/CCM_Base.idl b/modules/CIAO/ciao/CCM_Base.idl
new file mode 100644
index 00000000000..40d6b308668
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Base.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -I W:/ACE_wrappers/TAO Component_Base.idl
+ * tao_idl -I ../.. \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Base.idl
+ */
+
+#if !defined (CCM_BASE_IDL)
+#define CCM_BASE_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ exception InvalidConnection {};
+ exception AlreadyConnected {};
+ exception NoConnection {};
+};
+#endif /* CCM_BASE_IDL */
diff --git a/modules/CIAO/ciao/CCM_CCM2Context.idl b/modules/CIAO/ciao/CCM_CCM2Context.idl
new file mode 100644
index 00000000000..9b29d8b7d3b
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_CCM2Context.idl
@@ -0,0 +1,45 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+#if !defined (CCM_2CONTEXT_IDL)
+#define CCM_2CONTEXT_IDL
+
+#include "ciao/CCM_Container.idl"
+#include "ciao/CCM_HomeRegistration.idl"
+#include <CosPersistentState.idl>
+
+// *************** Extended Container Interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ typedef CosPersistentState::CatalogBase CatalogBase;
+ typedef CosPersistentState::_TypeId _TypeId;
+
+ exception PolicyMismatch {};
+ exception PersistenceNotAvailable {};
+
+ local interface CCM2Context : CCMContext
+ {
+ HomeRegistration get_home_registration ();
+
+ void req_passivate ()
+ raises (PolicyMismatch);
+
+ CatalogBase get_persistence (in _TypeId catalog_type_id)
+ raises (PersistenceNotAvailable);
+ };
+
+};
+#endif /* CCM_2CONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_CCMException.idl b/modules/CIAO/ciao/CCM_CCMException.idl
new file mode 100644
index 00000000000..850de8f6d48
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_CCMException.idl
@@ -0,0 +1,41 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+#if !defined (CCM_CCMEXCEPTION_IDL)
+#define CCM_CCMEXCEPTION_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ enum CCMExceptionReason
+ {
+ SYSTEM_ERROR,
+ CREATE_ERROR,
+ REMOVE_ERROR,
+ DUPLICATE_KEY,
+ FIND_ERROR,
+ OBJECT_NOT_FOUND,
+ NO_SUCH_ENTITY
+ /* extended by QoS4CCM
+ QOS_ERROR,
+ REGISTRATION_ERROR,
+ SERVICE_INSTALLATION_ERROR */
+ };
+
+ exception CCMException
+ {
+ CCMExceptionReason reason;
+ };
+};
+#endif /* CCM_CCMEXCEPTION_IDL */
diff --git a/modules/CIAO/ciao/CCM_ClientContainerInterceptor.idl b/modules/CIAO/ciao/CCM_ClientContainerInterceptor.idl
new file mode 100644
index 00000000000..27a5fdc8929
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ClientContainerInterceptor.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+#if !defined (CCM_CLIENTCONTAINERINTERCEPTOR_IDL)
+#define CCM_CLIENTCONTAINERINTERCEPTOR_IDL
+
+#include "ciao/CCM_ContainerInterceptor.idl"
+#include "ciao/CCM_ContainerClientRequestInfo.idl"
+#include "tao/PI/PIForwardRequest.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ClientContainerInterceptor : ContainerInterceptor
+ {
+ void send_request (in ContainerClientRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ void send_poll (in ContainerClientRequestInfo info);
+ void receive_reply (in ContainerClientRequestInfo info);
+ void receive_exception (in ContainerClientRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ void receive_other (in ContainerClientRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ };
+ };
+};
+#endif /* CCM_CLIENTCONTAINERINTERCEPTOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_ClientContainerInterceptorRegistration.idl b/modules/CIAO/ciao/CCM_ClientContainerInterceptorRegistration.idl
new file mode 100644
index 00000000000..031f06f1a0f
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ClientContainerInterceptorRegistration.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+#if !defined (CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL)
+#define CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL
+
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_InvalidRegistration.idl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ClientContainerInterceptor;
+
+ local interface ClientContainerInterceptorRegistration
+ {
+ Components::Cookie register_client_interceptor (in ClientContainerInterceptor ci);
+ ClientContainerInterceptor unregister_client_interceptor (in Components::Cookie cookie)
+ raises(InvalidRegistration);
+ };
+ };
+};
+
+#endif /* CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_Component.idl b/modules/CIAO/ciao/CCM_Component.idl
new file mode 100644
index 00000000000..8a604edf085
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Component.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_COMPONENT_IDL)
+#define CCM_COMPONENT_IDL
+
+#include "ciao/CCM_Events.idl"
+#include "ciao/CCM_Home.idl"
+#include "ciao/CCM_Object.idl"
+#include "ciao/CCM_Enumeration.idl"
+
+#endif /* CCM_COMPONENT_IDL */
diff --git a/modules/CIAO/ciao/CCM_ComponentId.idl b/modules/CIAO/ciao/CCM_ComponentId.idl
new file mode 100644
index 00000000000..299515d0978
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ComponentId.idl
@@ -0,0 +1,47 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_COMPONENTID_IDL)
+#define CCM_COMPONENTID_IDL
+
+#include "ciao/CCM_StateIdFactory.idl"
+
+// *************** Extended Container Interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface ComponentId
+ {
+ FacetId get_target_facet();
+
+ SegmentId get_target_segment();
+
+ StateIdValue get_target_state_id (in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+
+ StateIdValue get_segment_state_id (in SegmentId seg,
+ in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+
+ ComponentId create_with_new_target (in FacetId new_target_facet,
+ in SegmentId new_target_segment);
+
+ SegmentDescrSeq get_segment_descrs (in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+ };
+};
+#endif /* CCM_COMPONENTID_IDL */
diff --git a/modules/CIAO/ciao/CCM_Configurator.idl b/modules/CIAO/ciao/CCM_Configurator.idl
new file mode 100644
index 00000000000..0d48f8e65cb
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Configurator.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_CONFIGURATOR_IDL)
+#define CCM_CONFIGURATOR_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ exception WrongComponentType {};
+
+ interface CCMObject;
+
+ interface Configurator
+ {
+ void configure (in CCMObject comp)
+ raises (WrongComponentType);
+ };
+};
+#endif /* CCM_CONFIGURATOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_Container.idl b/modules/CIAO/ciao/CCM_Container.idl
new file mode 100644
index 00000000000..d6555e16170
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Container.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_CONTAINER_IDL)
+#define CCM_CONTAINER_IDL
+
+#include "ciao/CCM_Component.idl"
+#include "ciao/CCM_CCMException.idl"
+#include "ciao/CCM_HomeExecutorBase.idl"
+#include "ciao/CCM_SessionContext.idl"
+#include "ciao/CCM_SessionComponent.idl"
+
+#endif /* CCM_CONTAINER_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerClientRequestInfo.idl b/modules/CIAO/ciao/CCM_ContainerClientRequestInfo.idl
new file mode 100644
index 00000000000..b44dac880b8
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerClientRequestInfo.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERCLIENTREQUESTINFO_IDL)
+#define CCM_CONTAINERCLIENTREQUESTINFO_IDL
+
+#include "ciao/CCM_ContainerRequestInfo.idl"
+#include "tao/PI/ClientRequestInfo.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ContainerClientRequestInfo : ContainerRequestInfo
+ {
+ PortableInterceptor::ClientRequestInfo request_info();
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERCLIENTREQUESTINFO_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerInterceptor.idl b/modules/CIAO/ciao/CCM_ContainerInterceptor.idl
new file mode 100644
index 00000000000..b5ccdf52fae
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerInterceptor.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERPORTABLEINTERCEPTOR_IDL)
+#define CCM_CONTAINERPORTABLEINTERCEPTOR_IDL
+
+#include "tao/PI_Forward.pidl"
+
+module Components {
+
+ module ContainerPortableInterceptor {
+
+ local interface ContainerInterceptor
+ {
+ readonly attribute string name;
+ void destroy ();
+ void set_slot_id(in PortableInterceptor::SlotId slot_id);
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERPORTABLEINTERCEPTOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerRequestInfo.idl b/modules/CIAO/ciao/CCM_ContainerRequestInfo.idl
new file mode 100644
index 00000000000..3fb590acc16
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerRequestInfo.idl
@@ -0,0 +1,22 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERREQUESTINFO_IDL)
+#define CCM_CONTAINERREQUESTINFO_IDL
+
+#include "ciao/CCM_Navigation.idl"
+#include "tao/OctetSeq.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ContainerRequestInfo
+ {
+ readonly attribute CORBA::OctetSeq origin_id;
+ readonly attribute CORBA::OctetSeq target_id;
+ readonly attribute FeatureName name;
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERREQUESTINFO_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerServantRequestInfo.idl b/modules/CIAO/ciao/CCM_ContainerServantRequestInfo.idl
new file mode 100644
index 00000000000..0a3348b8f7e
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerServantRequestInfo.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERSERVANTREQUESTINFO_IDL)
+#define CCM_CONTAINERSERVANTREQUESTINFO_IDL
+
+#include "ciao/CCM_ContainerRequestInfo.idl"
+#include "ciao/CCM_EnterpriseComponent.idl"
+#include "tao/AnyTypeCode/Dynamic.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ContainerServantRequestInfo : ContainerRequestInfo
+ {
+ attribute Dynamic::ParameterList arguments;
+ readonly attribute string operation;
+ attribute any result;
+ attribute Components::EnterpriseComponent target;
+ attribute any the_exception;
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERSERVANTREQUESTINFO_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerServerRequestInfo.idl b/modules/CIAO/ciao/CCM_ContainerServerRequestInfo.idl
new file mode 100644
index 00000000000..4868e6a2e8d
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerServerRequestInfo.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERSERVERREQUESTINFO_IDL)
+#define CCM_CONTAINERSERVERREQUESTINFO_IDL
+
+#include "ciao/CCM_ContainerRequestInfo.idl"
+#include "tao/PI_Server/ServerRequestInfo.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ContainerServerRequestInfo : ContainerRequestInfo
+ {
+ PortableInterceptor::ServerRequestInfo request_info();
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERSERVERREQUESTINFO_IDL */
diff --git a/modules/CIAO/ciao/CCM_ContainerStubRequestInfo.idl b/modules/CIAO/ciao/CCM_ContainerStubRequestInfo.idl
new file mode 100644
index 00000000000..da14afa9e08
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ContainerStubRequestInfo.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+#if !defined (CCM_CONTAINERSTUBREQUESTINFO_IDL)
+#define CCM_CONTAINERSTUBREQUESTINFO_IDL
+
+#include "ciao/CCM_ContainerRequestInfo.idl"
+#include "tao/AnyTypeCode/Dynamic.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ContainerStubRequestInfo : ContainerRequestInfo
+ {
+ attribute Dynamic::ParameterList arguments;
+ readonly attribute string operation;
+ attribute any result;
+ attribute Object target;
+ attribute any the_exception;
+ };
+ };
+};
+
+#endif /* CCM_CONTAINERSTUBREQUESTINFO_IDL */
diff --git a/modules/CIAO/ciao/CCM_Container_Ex.idl b/modules/CIAO/ciao/CCM_Container_Ex.idl
new file mode 100644
index 00000000000..c2161d56c94
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Container_Ex.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_CONTAINER_EX_IDL)
+#define CCM_CONTAINER_EX_IDL
+
+#include "ciao/CCM_Container.idl"
+#include "ciao/CCM_Session2Context.idl"
+#include "ciao/CCM_EntityContext.idl"
+
+#endif /* CCM_CONTAINER_EX_IDL */
diff --git a/modules/CIAO/ciao/CCM_Context.idl b/modules/CIAO/ciao/CCM_Context.idl
new file mode 100644
index 00000000000..52efd23bad0
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Context.idl
@@ -0,0 +1,44 @@
+// $Id$
+
+#if !defined (CCM_CONTEXT_IDL)
+#define CCM_CONTEXT_IDL
+
+#include "ciao/Security.idl"
+#include "ciao/CCM_Transaction.idl"
+#include "ciao/CCM_Home.idl"
+
+// *************** Basic Container interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ typedef SecurityLevel2::Credentials Principal;
+
+ exception IllegalState {};
+
+ local interface CCMContext
+ {
+ Principal get_caller_principal();
+
+ CCMHome get_CCM_home();
+
+ boolean get_rollback_only()
+ raises (IllegalState);
+
+ Transaction::UserTransaction get_user_transaction()
+ raises (IllegalState);
+
+ boolean is_caller_in_role (in string role);
+
+ void set_rollback_only()
+ raises (IllegalState);
+
+ /**
+ * @todo Add for QoS4CCM
+ * Object resolve_service_reference(in string service_id)
+ * raises (CCMException);
+ */
+ };
+};
+#endif /* CCM_CONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_Cookie.idl b/modules/CIAO/ciao/CCM_Cookie.idl
new file mode 100644
index 00000000000..f815d9f1ef9
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Cookie.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -I W:/ACE_wrappers/TAO Component_Base.idl
+ * tao_idl -I ../.. \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Base.idl
+ */
+
+#if !defined (CCM_COOKIE_IDL)
+#define CCM_COOKIE_IDL
+
+#include "tao/OctetSeq.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ valuetype Cookie
+ {
+ private CORBA::OctetSeq cookieValue;
+ };
+};
+#endif /* CCM_COOKIE_IDL */
diff --git a/modules/CIAO/ciao/CCM_Core.mpc b/modules/CIAO/ciao/CCM_Core.mpc
new file mode 100644
index 00000000000..5bd4fa487ba
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Core.mpc
@@ -0,0 +1,322 @@
+// $Id$
+
+project (CIAO_DnC_Client) : taolib_with_idl, valuetype, ifr_client {
+ sharedname = CIAO_DnC_Client
+ idlflags += -Wb,stub_export_include=CIAO_Client_Export.h
+ idlflags += -Wb,stub_export_macro=CIAO_CLIENT_Export
+ idlflags += -Wb,skel_export_include=CIAO_Container_Export.h
+ idlflags += -Wb,skel_export_macro=CIAO_CONTAINER_Export
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ dynamicflags = CIAO_CLIENT_BUILD_DLL
+
+ IDL_Files {
+ idlflags += -SS -Sci
+ CCM_Base.idl
+ CCM_Component.idl
+ }
+
+ IDL_Files {
+ idlflags += -SS
+ CCM_Cookie.idl
+ CCM_Enumeration.idl
+ }
+
+ IDL_Files {
+ idlflags += -Ssi -Sci
+ Components.idl
+ }
+
+ IDL_Files {
+ CCM_HomeConfiguration.idl
+ CCM_StandardConfigurator.idl
+ CCM_Home.idl
+ CCM_Object.idl
+ CCM_PrimaryKeyBase.idl
+ }
+
+ IDL_Files {
+ idlflags += -Ssi
+ CCM_HomeFinder.idl
+ CCM_Configurator.idl
+ CCM_KeylessCCMHome.idl
+ CCM_Navigation.idl
+ CCM_Receptacle.idl
+ }
+
+ IDL_Files {
+ CCM_Events.idl
+ CCM_EventBase.idl
+ CCM_EventConsumerBase.idl
+ }
+
+ Source_Files {
+ CCM_BaseC.cpp
+ CCM_EventsC.cpp
+ CCM_EventBaseC.cpp
+ CCM_EventConsumerBaseC.cpp
+ CCM_ComponentC.cpp
+ CCM_EnumerationC.cpp
+ CCM_HomeC.cpp
+ CCM_ConfiguratorC.cpp
+ CCM_HomeConfigurationC.cpp
+ CCM_KeylessCCMHomeC.cpp
+ CCM_StandardConfiguratorC.cpp
+ CCM_HomeFinderC.cpp
+ CCM_NavigationC.cpp
+ CCM_ReceptacleC.cpp
+ CCM_CookieC.cpp
+ CCM_ObjectC.cpp
+ CCM_PrimaryKeyBaseC.cpp
+ Client_init.cpp
+ ComponentsC.cpp
+ }
+
+ Header_Files {
+ CIAO_Client_Export.h
+ CIAO_common.h
+ }
+}
+
+project (CIAO_DnC_Container) : orbsvcslib, portableserver, valuetype, ifr_client, codecfactory, pi, ciao_client_dnc, avoids_corba_e_compact, avoids_corba_e_micro {
+ sharedname = CIAO_DnC_Container
+ idlflags += -Wb,export_include=CIAO_Container_Export.h
+ idlflags += -Wb,export_macro=CIAO_CONTAINER_Export
+ dynamicflags = CIAO_CONTAINER_BUILD_DLL
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ IDL_Files {
+ idlflags += -SS -Sci \
+ -Wb,versioning_begin=TAO_BEGIN_VERSIONED_NAMESPACE_DECL \
+ -Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL
+ Security.idl
+ }
+
+ IDL_Files {
+ idlflags += -SS -Sci
+ CCM_Context.idl
+ CCM_CCMException.idl
+ CCM_EntityComponent.idl
+ CCM_EntityContext.idl
+ CIAO_SwapExec.idl
+ CIAO_UpgradeableContext.idl
+ }
+
+ IDL_Files {
+ idlflags += -SS
+ CCM_CCM2Context.idl
+ CCM_ProxyHomeRegistration.idl
+ CCM_Session2Context.idl
+ CCM_Transaction.idl
+ CosPersistentState.idl
+ CCM_Container.idl
+ CCM_SessionContext.idl
+ CCM_SessionComponent.idl
+ CCM_Container_Ex.idl
+ CCM_StateIdFactory.idl
+ CCM_Entity2Context.idl
+ CCM_ComponentId.idl
+ CCM_ExecutorLocator.idl
+ CCM_EnterpriseComponent.idl
+ CCM_SessionSynchronization.idl
+ CCM_HomeRegistration.idl
+ CCM_HomeExecutorBase.idl
+ }
+
+ Source_Files {
+ CCM_TransactionC.cpp
+ CosPersistentStateC.cpp
+ CCM_ContainerC.cpp
+ CCM_SessionContextC.cpp
+ CCM_SessionComponentC.cpp
+ CCM_EnterpriseComponentC.cpp
+ CCM_SessionSynchronizationC.cpp
+ CCM_CCMExceptionC.cpp
+ CCM_ContextC.cpp
+ SecurityC.cpp
+ CCM_Container_ExC.cpp
+ CCM_StateIdFactoryC.cpp
+ CCM_ComponentIdC.cpp
+ CCM_Entity2ContextC.cpp
+ CCM_ExecutorLocatorC.cpp
+ CCM_ProxyHomeRegistrationC.cpp
+ CCM_Session2ContextC.cpp
+ CCM_CCM2ContextC.cpp
+ CCM_HomeRegistrationC.cpp
+ CCM_HomeExecutorBaseC.cpp
+ CCM_EntityContextC.cpp
+ CCM_EntityComponentC.cpp
+ CCM_EventsS.cpp
+ CCM_EventConsumerBaseS.cpp
+ CCM_EventBaseS.cpp
+ CCM_ConfiguratorS.cpp
+ CCM_HomeConfigurationS.cpp
+ CCM_KeylessCCMHomeS.cpp
+ CCM_StandardConfiguratorS.cpp
+ CCM_HomeS.cpp
+ CCM_ObjectS.cpp
+ CCM_PrimaryKeyBaseS.cpp
+ CCM_HomeFinderS.cpp
+ CCM_NavigationS.cpp
+ CCM_ReceptacleS.cpp
+ CIAO_SwapExecC.cpp
+ CIAO_UpgradeableContextC.cpp
+ Cookies.cpp
+ ComponentsS.cpp
+ }
+
+}
+
+// Valuetype library must be linked for this project.
+// Please don't remove.
+project(Deployment_stub) : taolib_with_idl, valuetype, ifr_client, ciao_events_base_dnc, ciao_client_dnc {
+ sharedname = CIAO_Deployment_stub
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ idlflags += -Wb,stub_export_macro=Deployment_stub_Export
+ idlflags += -Wb,stub_export_include=Deployment_stub_export.h
+ idlflags += -Wb,skel_export_macro=Deployment_svnt_Export
+ idlflags += -Wb,skel_export_include=Deployment_svnt_export.h
+
+ dynamicflags = DEPLOYMENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ idlflags += -SS -Sci
+ Deployment_Packaging_Data.idl
+ Deployment_Target_Data.idl
+ }
+
+ IDL_Files {
+ idlflags += -SS
+ Deployment_Base.idl
+ Deployment_Connection.idl
+ Deployment_Data.idl
+ Deployment_DeploymentPlan.idl
+ Deployment_TargetData.idl
+ Deployment_Events.idl
+ CIAO_ServerResources.idl
+ }
+
+ IDL_Files {
+ Deployment_TargetManager.idl
+ CIAO_NodeApplication_CallBack.idl
+ Deployment_Core.idl
+ Deployment_NodeApplication.idl
+ Deployment_Application.idl
+ Deployment_Container.idl
+ Deployment.idl
+ Deployment_NodeManager.idl
+ Deployment_ApplicationManager.idl
+ Deployment_NodeApplicationManager.idl
+ Deployment_DomainApplicationManager.idl
+ Deployment_ExecutionManager.idl
+ Deployment_RepositoryManager.idl
+ }
+
+ Source_Files {
+ Deployment_CoreC.cpp
+ Deployment_BaseC.cpp
+ Deployment_ConnectionC.cpp
+ Deployment_DataC.cpp
+ Deployment_DeploymentPlanC.cpp
+ Deployment_TargetDataC.cpp
+ Deployment_NodeApplicationC.cpp
+ Deployment_ApplicationC.cpp
+ Deployment_ContainerC.cpp
+ Deployment_Packaging_DataC.cpp
+ Deployment_Target_DataC.cpp
+ DeploymentC.cpp
+ Deployment_TargetManagerC.cpp
+ Deployment_NodeManagerC.cpp
+ Deployment_NodeApplicationManagerC.cpp
+ Deployment_ApplicationManagerC.cpp
+ Deployment_DomainApplicationManagerC.cpp
+ Deployment_ExecutionManagerC.cpp
+ Deployment_RepositoryManagerC.cpp
+ CIAO_NodeApplication_CallBackC.cpp
+ CIAO_ServerResourcesC.cpp
+ Deployment_EventsC.cpp
+ }
+}
+
+// CIAO_DnC_Client library must be linked for this project.
+// Please don't remove.
+project(Deployment_svnt) : taolib_with_idl, portableserver, valuetype, ifr_client, ciao_deployment_stub, ciao_events_dnc, ciao_client_dnc, naming {
+ sharedname = CIAO_Deployment_svnt
+ dynamicflags = DEPLOYMENT_SVNT_BUILD_DLL
+ idlflags += -Wb,stub_export_macro=Deployment_stub_Export
+ idlflags += -Wb,stub_export_include=Deployment_stub_export.h
+ idlflags += -Wb,skel_export_macro=Deployment_svnt_Export
+ idlflags += -Wb,skel_export_include=Deployment_svnt_export.h
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Deployment_CoreS.cpp
+ Deployment_ApplicationS.cpp
+ Deployment_NodeApplicationS.cpp
+ Deployment_ContainerS.cpp
+ DeploymentS.cpp
+ Deployment_RepositoryManagerS.cpp
+ Deployment_NodeManagerS.cpp
+ Deployment_NodeApplicationManagerS.cpp
+ Deployment_ApplicationManagerS.cpp
+ Deployment_DomainApplicationManagerS.cpp
+ Deployment_ExecutionManagerS.cpp
+ NodeApp_CB_Impl.cpp
+ Deployment_TargetManagerS.cpp
+ CIAO_NodeApplication_CallBackS.cpp
+ }
+
+}
+
+project (CIAO_DnC_Server) : orbsvcslib, portableserver, valuetype, naming, ifr_client, utils, ciao_container_dnc, ciao_client_dnc, ciao_deployment_svnt, avoids_minimum_corba, avoids_corba_e_compact, avoids_corba_e_micro {
+ includes += $(CIAO_ROOT)
+ sharedname = CIAO_DnC_Server
+ idlflags += -Wb,export_include=CIAO_Server_Export.h -Wb,export_macro=CIAO_SERVER_Export
+ dynamicflags = CIAO_SERVER_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Container_Base.cpp
+ Swapping_Container.cpp
+ Context_Impl_Base.cpp
+ Home_Servant_Impl_Base.cpp
+ Servant_Impl_Base.cpp
+ Swapping_Servant_Home_Impl_Base.cpp
+ Server_init.cpp
+ Servant_Activator.cpp
+ Dynamic_Component_Activator.cpp
+ Dynamic_Component_Servant_Base.cpp
+ Port_Activator.cpp
+ StandardConfigurator_Impl.cpp
+ }
+
+ Header_Files {
+ CIAO_Server_Export.h
+ CIAO_common.h
+ }
+
+ Template_Files {
+ Context_Impl_T.cpp
+ Upgradeable_Context_Impl_T.cpp
+ Home_Servant_Impl_T.cpp
+ Swapping_Servant_Home_Impl_T.cpp
+ Dynamic_Component_Servant_T.cpp
+ Servant_Impl_T.cpp
+ Servant_Impl_Utils_T.cpp
+ Servant_Activator_T.cpp
+ }
+}
diff --git a/modules/CIAO/ciao/CCM_EnterpriseComponent.idl b/modules/CIAO/ciao/CCM_EnterpriseComponent.idl
new file mode 100644
index 00000000000..b3f3d1b9432
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_EnterpriseComponent.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_ENTERPRISECOMPONENT_IDL)
+#define CCM_ENTERPRISECOMPONENT_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface EnterpriseComponent {};
+};
+#endif /* CCM_CONTAINER_IDL */
diff --git a/modules/CIAO/ciao/CCM_Entity2Context.idl b/modules/CIAO/ciao/CCM_Entity2Context.idl
new file mode 100644
index 00000000000..4ed01244408
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Entity2Context.idl
@@ -0,0 +1,48 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_ENTITY2CONTEXT_IDL)
+#define CCM_ENTITY2CONTEXT_IDL
+
+#include "ciao/CCM_Session2Context.idl"
+#include "ciao/CCM_EntityContext.idl"
+#include "ciao/CCM_ComponentId.idl"
+
+// *************** Extended Container Interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface Entity2Context : EntityContext, CCM2Context
+ {
+ ComponentId get_component_id ()
+ raises (IllegalState);
+
+ ComponentId create_component_id (in FacetId target_facet,
+ in SegmentId target_segment,
+ in SegmentDescrSeq seq_descrs);
+
+ ComponentId create_monolithic_component_id (in FacetId target_facet,
+ in StateIdValue sid);
+
+ Object create_ref_from_cid (in CORBA::RepositoryId repid,
+ in ComponentId cid);
+
+ ComponentId get_cid_from_ref (in Object objref)
+ raises (BadComponentReference);
+ };
+};
+#endif /* CCM_ENTITY2CONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_EntityComponent.idl b/modules/CIAO/ciao/CCM_EntityComponent.idl
new file mode 100644
index 00000000000..0b04ad7131a
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_EntityComponent.idl
@@ -0,0 +1,51 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_ENTITYCOMPONENT_IDL)
+#define CCM_ENTITYCOMPONENT_IDL
+
+#include "ciao/CCM_CCMException.idl"
+#include "ciao/CCM_EnterpriseComponent.idl"
+#include "ciao/CCM_EntityContext.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface EntityComponent : EnterpriseComponent
+ {
+ void set_entity_context (in EntityContext ctx)
+ raises (CCMException);
+
+ void unset_entity_context ()
+ raises (CCMException);
+
+ void ccm_activate ()
+ raises (CCMException);
+
+ void ccm_load ()
+ raises (CCMException);
+
+ void ccm_store ()
+ raises (CCMException);
+
+ void ccm_passivate ()
+ raises (CCMException);
+
+ void ccm_remove ()
+ raises (CCMException);
+ };
+};
+#endif /* CCM_ENTITYCOMPONENT_IDL */
diff --git a/modules/CIAO/ciao/CCM_EntityContext.idl b/modules/CIAO/ciao/CCM_EntityContext.idl
new file mode 100644
index 00000000000..ee02b728afb
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_EntityContext.idl
@@ -0,0 +1,35 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_ENTITYCONTEXT_IDL)
+#define CCM_ENTITYCONTEXT_IDL
+
+#include "ciao/CCM_Context.idl"
+#include "ciao/CCM_Object.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface EntityContext : CCMContext
+ {
+ Object get_CCM_object ()
+ raises (IllegalState);
+
+ PrimaryKeyBase get_primary_key ()
+ raises (IllegalState);
+ };
+};
+#endif /* CCM_ENTITYCONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_Enumeration.idl b/modules/CIAO/ciao/CCM_Enumeration.idl
new file mode 100644
index 00000000000..55d64b68e07
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Enumeration.idl
@@ -0,0 +1,38 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_ENUMERATION_IDL)
+#define CCM_ENUMERATION_IDL
+
+#include "ciao/CCM_Object.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ /// @@ Enumeration and DefaultEnumeration are only for EJB to CCM
+ /// mapping? At any rate, we should be able to skip them for now.
+ abstract valuetype Enumeration
+ {
+ boolean has_more_elements();
+ CCMObject next_element();
+ };
+
+ typedef sequence<CCMObject> CCMObjectSeq;
+
+ valuetype DefaultEnumeration : Enumeration
+ {
+ private CCMObjectSeq objects;
+ };
+};
+#endif /* CCM_ENUMERATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_EventBase.idl b/modules/CIAO/ciao/CCM_EventBase.idl
new file mode 100644
index 00000000000..e97a474802a
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_EventBase.idl
@@ -0,0 +1,25 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Event.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_EVENTBASE_IDL)
+#define CCM_EVENTBASE_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ abstract valuetype EventBase {};
+};
+#endif /* CCM_EVENTBASE_IDL */
diff --git a/modules/CIAO/ciao/CCM_EventConsumerBase.idl b/modules/CIAO/ciao/CCM_EventConsumerBase.idl
new file mode 100644
index 00000000000..0e1facf5940
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_EventConsumerBase.idl
@@ -0,0 +1,50 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Event.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_EVENTCONSUMERBASE_IDL)
+#define CCM_EVENTCONSUMERBASE_IDL
+
+#include "ciao/CCM_EventBase.idl"
+#include "tao/Typecode_types.pidl"
+#include "tao/orb_types.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ exception BadEventType
+ {
+ CORBA::RepositoryId expected_event_type;
+ };
+
+ interface EventConsumerBase
+ {
+ void push_event (in EventBase evt) raises (BadEventType);
+
+ // CIAO-specific operation to treat event service as regular event
+ // sink port. The source_id needs to be passed in to identify the
+ // source of the publisher port to support event filtering mechanism.
+ void ciao_push_event (in EventBase evt,
+ in string source_id,
+ in CORBA::TypeCode tc)
+ raises (BadEventType);
+
+ // CIAO-specific operation to help support the capability
+ // to subscribe to eventtypes more derived than the type
+ // consumed.
+ boolean ciao_is_substitutable (in string event_repo_id);
+ };
+};
+#endif /* CCM_EVENTCONSUMERBASE_IDL */
diff --git a/modules/CIAO/ciao/CCM_Events.idl b/modules/CIAO/ciao/CCM_Events.idl
new file mode 100644
index 00000000000..4abc6ca4115
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Events.idl
@@ -0,0 +1,102 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Event.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_EVENTS_IDL)
+#define CCM_EVENTS_IDL
+
+#include "ciao/CCM_Base.idl"
+#include "ciao/CCM_Navigation.idl"
+#include "ciao/CCM_Receptacle.idl"
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_EventBase.idl"
+#include "ciao/CCM_EventConsumerBase.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ valuetype ConsumerDescription : PortDescription
+ {
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<ConsumerDescription> ConsumerDescriptions;
+
+ valuetype EmitterDescription : PortDescription
+ {
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<EmitterDescription> EmitterDescriptions;
+
+ valuetype SubscriberDescription
+ {
+ public Cookie ck;
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<SubscriberDescription> SubscriberDescriptions;
+
+ valuetype PublisherDescription : PortDescription
+ {
+ public SubscriberDescriptions consumer;
+ };
+ typedef sequence<PublisherDescription> PublisherDescriptions;
+
+ interface Events
+ {
+ EventConsumerBase get_consumer (in FeatureName sink_name)
+ raises (InvalidName);
+
+ /**
+ * @todo Mismatch with 06-04-01, AlreadyConnected is not listed in the
+ * spec with this operation.
+ */
+ Cookie subscribe (in FeatureName publisher_name,
+ in EventConsumerBase subscriber)
+ raises (InvalidName,
+ AlreadyConnected,
+ InvalidConnection,
+ ExceededConnectionLimit);
+
+ EventConsumerBase unsubscribe (in FeatureName publisher_name,
+ in Cookie ck)
+ raises (InvalidName,
+ InvalidConnection);
+
+ void connect_consumer (in FeatureName emitter_name,
+ in EventConsumerBase consumer)
+ raises (InvalidName,
+ AlreadyConnected,
+ InvalidConnection);
+
+ EventConsumerBase disconnect_consumer (in FeatureName source_name)
+ raises (InvalidName,
+ NoConnection);
+
+ ConsumerDescriptions get_all_consumers ();
+
+ ConsumerDescriptions get_named_consumers (in NameList names)
+ raises (InvalidName);
+
+ EmitterDescriptions get_all_emitters ();
+
+ EmitterDescriptions get_named_emitters (in NameList names)
+ raises (InvalidName);
+
+ PublisherDescriptions get_all_publishers ();
+
+ PublisherDescriptions get_named_publishers (in NameList names)
+ raises (InvalidName);
+ };
+};
+#endif /* CCM_EVENT_IDL */
diff --git a/modules/CIAO/ciao/CCM_ExecutorLocator.idl b/modules/CIAO/ciao/CCM_ExecutorLocator.idl
new file mode 100644
index 00000000000..a764225af7c
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ExecutorLocator.idl
@@ -0,0 +1,39 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+#if !defined (CCM_EXECUTORLOCATOR_IDL)
+#define CCM_EXECUTORLOCATOR_IDL
+
+#include "ciao/CCM_EnterpriseComponent.idl"
+#include "ciao/CCM_CCMException.idl"
+#include "ciao/CCM_Object.idl"
+
+// *************** Extended Container Interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface ExecutorLocator : EnterpriseComponent
+ {
+ Object obtain_executor (in string name)
+ raises (CCMException);
+
+ void release_executor (in Object exc)
+ raises (CCMException);
+
+ void configuration_complete()
+ raises (InvalidConfiguration);
+ };
+};
+#endif /* CCM_EXECUTORLOCATOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_ExtensionComponent.idl b/modules/CIAO/ciao/CCM_ExtensionComponent.idl
new file mode 100644
index 00000000000..585e5e85f64
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ExtensionComponent.idl
@@ -0,0 +1,20 @@
+// $Id$
+
+#if !defined (CCM_EXTENSIONCOMPONENT_IDL)
+#define CCM_EXTENSIONCOMPONENT_IDL
+
+#include "ciao/CCM_EnterpriseComponent.idl"
+#include "ciao/CCM_ExtensionContext.idl"
+
+module Components
+{
+ local interface ExtensionComponent : EnterpriseComponent
+ {
+ void set_extension_context (in ExtensionContext ctx)
+ raises (CCMException);
+ void ccm_remove ()
+ raises (CCMException);
+ };
+};
+
+#endif /* CCM_EXTENSIONCOMPONENT_IDL */
diff --git a/modules/CIAO/ciao/CCM_ExtensionContext.idl b/modules/CIAO/ciao/CCM_ExtensionContext.idl
new file mode 100644
index 00000000000..33fa969b436
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ExtensionContext.idl
@@ -0,0 +1,37 @@
+// $Id$
+
+#if !defined (CCM_EXTENSIONCONTEXT_IDL)
+#define CCM_EXTENSIONCONTEXT_IDL
+
+#include "ciao/CCM_Context.idl"
+#include "ciao/CCM_ClientContainerInterceptorRegistration.idl"
+#include "ciao/CCM_ServerContainerInterceptorRegistration.idl"
+#include "ciao/CCM_StubContainerInterceptorRegistration.idl"
+#include "ciao/CCM_ServantContainerInterceptorRegistration.idl"
+#include "ciao/CCM_CCMException.idl"
+
+module Components
+{
+ local interface ExtensionContext : CCMContext
+ {
+ Components::ContainerPortableInterceptor::ClientContainerInterceptorRegistration
+ get_client_interceptor_registration ()
+ raises (CCMException);
+ Components::ContainerPortableInterceptor::ServerContainerInterceptorRegistration
+ get_server_interceptor_registration ()
+ raises (CCMException);
+ Components::ContainerPortableInterceptor::StubContainerInterceptorRegistration
+ get_stub_interceptor_registration()
+ raises (CCMException);
+ Components::ContainerPortableInterceptor::ServantContainerInterceptorRegistration
+ get_servant_interceptor_registration()
+ raises (CCMException);
+
+ Cookie install_service_reference(in string service_id, in Object objref)
+ raises (CCMException);
+ Object uninstall_service_reference(in Cookie ck)
+ raises (CCMException);
+ };
+};
+
+#endif /* CCM_EXTENSIONCONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_Home.idl b/modules/CIAO/ciao/CCM_Home.idl
new file mode 100644
index 00000000000..192188dda3d
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Home.idl
@@ -0,0 +1,52 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_HOME_IDL)
+#define CCM_HOME_IDL
+
+#include "tao/IFR_Client/IFR_Base.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ typedef unsigned long FailureReason;
+
+ exception CreateFailure {
+ FailureReason reason;
+ };
+ exception FinderFailure
+ {
+ FailureReason reason;
+ };
+ exception RemoveFailure
+ {
+ FailureReason reason;
+ };
+
+ exception DuplicateKeyValue {};
+ exception InvalidKey {};
+ exception UnknownKeyValue {};
+
+ interface CCMObject;
+
+ interface CCMHome
+ {
+ CORBA::IRObject get_component_def ();
+ CORBA::IRObject get_home_def ();
+ void remove_component ( in CCMObject comp)
+ raises (RemoveFailure);
+ };
+};
+
+#endif /* CCM_HOME_IDL */
diff --git a/modules/CIAO/ciao/CCM_HomeConfiguration.idl b/modules/CIAO/ciao/CCM_HomeConfiguration.idl
new file mode 100644
index 00000000000..d3d488ae11b
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_HomeConfiguration.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_HOMECONFIGURATION_IDL)
+#define CCM_HOMECONFIGURATION_IDL
+
+#include "ciao/CCM_Configurator.idl"
+#include "ciao/CCM_StandardConfigurator.idl"
+#include "ciao/CCM_Home.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ interface HomeConfiguration : CCMHome
+ {
+ void set_configurator (in Configurator cfg);
+ void set_configuration_values (in ConfigValues config);
+ void complete_component_configuration (in boolean b);
+ void disable_home_configuration();
+ };
+};
+#endif /* CCM_HOMECONFIGURATOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_HomeExecutorBase.idl b/modules/CIAO/ciao/CCM_HomeExecutorBase.idl
new file mode 100644
index 00000000000..e1db55b9afc
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_HomeExecutorBase.idl
@@ -0,0 +1,27 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_HOMEEXECUTORBASE_IDL)
+#define CCM_HOMEEXECUTORBASE_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface HomeExecutorBase
+ {
+ };
+};
+#endif /* CCM_HOMEEXECUTORBASE_IDL */
diff --git a/modules/CIAO/ciao/CCM_HomeFinder.idl b/modules/CIAO/ciao/CCM_HomeFinder.idl
new file mode 100644
index 00000000000..f5ffca44442
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_HomeFinder.idl
@@ -0,0 +1,39 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_HomeFinder.idl
+ */
+
+#if !defined (CCM_HOMEFINDER_IDL)
+#define CCM_HOMEFINDER_IDL
+
+#include "tao/orb_types.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ exception HomeNotFound {};
+
+ interface CCMHome;
+
+ interface HomeFinder
+ {
+ CCMHome find_home_by_component_type (in CORBA::RepositoryId comp_repid)
+ raises (HomeNotFound);
+
+ CCMHome find_home_by_home_type (in CORBA::RepositoryId home_repid)
+ raises (HomeNotFound);
+
+ CCMHome find_home_by_name (in string home_name)
+ raises (HomeNotFound);
+ };
+};
+#endif /* CCM_HOMEFINDER_IDL */
diff --git a/modules/CIAO/ciao/CCM_HomeRegistration.idl b/modules/CIAO/ciao/CCM_HomeRegistration.idl
new file mode 100644
index 00000000000..e7ee299e11c
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_HomeRegistration.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_HOMEREGISTRATION_IDL)
+#define CCM_HOMEREGISTRATION_IDL
+
+#include "ciao/CCM_Home.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface HomeRegistration
+ {
+ void register_home (in CCMHome home_ref,
+ in string home_name);
+
+ void unregister_home (in CCMHome home_ref);
+ };
+
+};
+#endif /* CCM_HOMEREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_InvalidRegistration.idl b/modules/CIAO/ciao/CCM_InvalidRegistration.idl
new file mode 100644
index 00000000000..a5dc36c640e
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_InvalidRegistration.idl
@@ -0,0 +1,14 @@
+// $Id$
+
+#if !defined (CCM_INVALIDREGISTRATION_IDL)
+#define CCM_INVALIDREGISTRATION_IDL
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ exception InvalidRegistration { };
+ };
+};
+
+#endif /* CCM_INVALIDREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_KeylessCCMHome.idl b/modules/CIAO/ciao/CCM_KeylessCCMHome.idl
new file mode 100644
index 00000000000..747c45a5117
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_KeylessCCMHome.idl
@@ -0,0 +1,30 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_KEYLESSCCMHOME_IDL)
+#define CCM_KEYLESSCCMHOME_IDL
+
+#include "ciao/CCM_Home.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ interface KeylessCCMHome
+ {
+ CCMObject create_component()
+ raises (CreateFailure);
+ };
+
+};
+#endif /* CCM_KEYLESSCCMHOME_IDL */
diff --git a/modules/CIAO/ciao/CCM_Navigation.idl b/modules/CIAO/ciao/CCM_Navigation.idl
new file mode 100644
index 00000000000..53b74e2a10c
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Navigation.idl
@@ -0,0 +1,54 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -I W:/ACE_wrappers/TAO Component_Base.idl
+ * tao_idl -I ../.. \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Navigation.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_NAVIGATION_IDL)
+#define CCM_NAVIGATION_IDL
+
+#include "tao/orb_types.pidl"
+#include "tao/StringSeq.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ typedef string FeatureName;
+ typedef sequence<FeatureName> NameList;
+
+ valuetype PortDescription
+ {
+ public FeatureName name;
+ public CORBA::RepositoryId type_id;
+ };
+
+ valuetype FacetDescription : PortDescription
+ {
+ public Object facet_ref;
+ };
+
+ typedef sequence<FacetDescription> FacetDescriptions;
+
+ exception InvalidName {};
+ interface Navigation
+ {
+ Object provide_facet (in FeatureName name)
+ raises (InvalidName);
+ FacetDescriptions get_all_facets();
+ FacetDescriptions get_named_facets (in NameList names)
+ raises (InvalidName);
+ boolean same_component (in Object object_ref);
+ };
+};
+#endif /* CCM_NAVIGATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_Object.idl b/modules/CIAO/ciao/CCM_Object.idl
new file mode 100644
index 00000000000..fc869afa97c
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Object.idl
@@ -0,0 +1,106 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_OBJECT_IDL)
+#define CCM_OBJECT_IDL
+
+#include "ciao/CCM_Events.idl"
+#include "ciao/CCM_Navigation.idl"
+#include "ciao/CCM_Home.idl"
+#include "ciao/CCM_PrimaryKeyBase.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ /// This typedef and consts shouldn't be here but are here because of CIAO
+ /// specific additions
+ typedef FailureReason InvalidConfigurationReason;
+ const InvalidConfigurationReason UnknownConfigValueName = 0;
+ const InvalidConfigurationReason InvalidConfigValueType = 1;
+ const InvalidConfigurationReason ConfigValueRequired = 2;
+ const InvalidConfigurationReason ConfigValueNotExpected = 3;
+
+ /// Shouldn't be here but is now here because of CIAO additions
+ exception InvalidConfiguration
+ {
+ InvalidConfigurationReason reason;
+ FeatureName name;
+ };
+
+ valuetype ComponentPortDescription
+ {
+ public FacetDescriptions facets;
+ public ReceptacleDescriptions receptacles;
+ public ConsumerDescriptions consumers;
+ public EmitterDescriptions emitters;
+ public PublisherDescriptions publishers;
+ };
+
+ /// CIAO specific forward declaration, shouldn't be here
+ interface StandardConfigurator;
+
+ exception NoKeyAvailable {};
+
+ interface CCMObject : Navigation, Receptacles, Events
+ {
+ CORBA::IRObject get_component_def ( );
+ CCMHome get_ccm_home( );
+ PrimaryKeyBase get_primary_key( )
+ raises (NoKeyAvailable);
+ void configuration_complete ()
+ raises (InvalidConfiguration);
+ void remove()
+ raises (RemoveFailure);
+ ComponentPortDescription get_all_ports ();
+
+ /// Factory method to return a StandardConfigurator interface.
+ /// CIAO specific
+ StandardConfigurator get_standard_configurator ( );
+
+ /// CIAO specific operations to have some control on when and how
+ /// to activate components.
+ /**
+ * This is all from our work on ARMS where we needed to know whether
+ * every component has been configured, say for example to use
+ * logging in the assembly which could in turn be provided by a
+ * component. To get around all this we are adding some methods on
+ * this till we think of some standard way to do this. The problem
+ * is that the deployer should be able to call this as opposed to
+ * the home calling it as soon as the component is created.
+ *
+ * All these operations are called in the order mentioned, ie. the
+ * deployer calls ciao_preactivate () on all components, then
+ * ciao_activate and then ciao_postactivate (). The speciality is
+ * that these operations would be invoked on every target object
+ * before the next call is made. It is similar to the way
+ * portable interceptors work, trying to get everything onto the
+ * flow stack, but differ in the intention.
+ */
+ void ciao_preactivate ()
+ raises (InvalidConfiguration);
+
+ /// CIAO specific
+ void ciao_activate ()
+ raises (InvalidConfiguration);
+
+ /// CIAO specific
+ void ciao_postactivate ()
+ raises (InvalidConfiguration);
+
+ /// CIAO specific
+ void ciao_passivate ()
+ raises (InvalidConfiguration);
+ };
+};
+#endif /* CCM_OBJECT_IDL */
diff --git a/modules/CIAO/ciao/CCM_PrimaryKeyBase.idl b/modules/CIAO/ciao/CCM_PrimaryKeyBase.idl
new file mode 100644
index 00000000000..4730208b2f9
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_PrimaryKeyBase.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_PRIMARYKEYBASE_IDL)
+#define CCM_PRIMARYKEYBASE_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ abstract valuetype PrimaryKeyBase {};
+
+};
+#endif /* CCM_PRIMARYKEYBASE_IDL */
diff --git a/modules/CIAO/ciao/CCM_ProxyHomeRegistration.idl b/modules/CIAO/ciao/CCM_ProxyHomeRegistration.idl
new file mode 100644
index 00000000000..084b113a50d
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ProxyHomeRegistration.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_PROXYHOMEREGISTRATION_IDL)
+#define CCM_PROXYHOMEREGISTRATION_IDL
+
+#include "ciao/CCM_HomeRegistration.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ exception UnknownActualHome {};
+ exception ProxyHomeNotSupported {};
+
+ local interface ProxyHomeRegistration : HomeRegistration
+ {
+ void register_proxy_home (in CCMHome rhome,
+ in CCMHome ahome)
+ raises (UnknownActualHome,
+ ProxyHomeNotSupported);
+ };
+};
+#endif /* CCM_PROXYHOMEREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_QoS.idl b/modules/CIAO/ciao/CCM_QoS.idl
new file mode 100644
index 00000000000..f78f98d3665
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_QoS.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+#if !defined (CCM_QOS_IDL)
+#define CCM_QOS_IDL
+
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_CCMException.idl"
+
+module Components
+{
+ module QoS {
+ struct QoSInstance {
+ string dimension;
+ any value;
+ };
+ typedef sequence<QoSInstance> QoSInstances;
+ struct QoSConstraint {
+ string characteristic;
+ QoSInstances instances;
+ };
+ typedef sequence<QoSConstraint> QoSConstraints;
+ interface Negotiation
+ {
+ Components::Cookie require_qos(in QoSConstraint requirements, in string client_id)
+ raises (CCMException);
+ void release_qos (in Components::Cookie ck);
+ };
+ };
+};
+
+#endif /* CCM_QOS_IDL */
diff --git a/modules/CIAO/ciao/CCM_Receptacle.idl b/modules/CIAO/ciao/CCM_Receptacle.idl
new file mode 100644
index 00000000000..2ed7863b349
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Receptacle.idl
@@ -0,0 +1,68 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -I W:/ACE_wrappers/TAO Component_Base.idl
+ * tao_idl -I ../.. \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Base.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_RECEPTACLE_IDL)
+#define CCM_RECEPTACLE_IDL
+
+#include "ciao/CCM_Base.idl"
+#include "ciao/CCM_Navigation.idl"
+#include "ciao/CCM_Cookie.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ valuetype ConnectionDescription
+ {
+ public Cookie ck;
+ public Object objref;
+ };
+ typedef sequence<ConnectionDescription> ConnectionDescriptions;
+
+ valuetype ReceptacleDescription : PortDescription
+ {
+ public boolean is_multiple;
+ public ConnectionDescriptions connections;
+ };
+ typedef sequence<ReceptacleDescription> ReceptacleDescriptions;
+
+ exception ExceededConnectionLimit {};
+ exception CookieRequired {};
+
+ interface Receptacles
+ {
+ Cookie connect (in FeatureName name, in Object connection )
+ raises (InvalidName,
+ InvalidConnection,
+ AlreadyConnected,
+ ExceededConnectionLimit);
+
+ Object disconnect (in FeatureName name, in Cookie ck)
+ raises (InvalidName,
+ InvalidConnection,
+ CookieRequired,
+ NoConnection);
+
+ ConnectionDescriptions get_connections (in FeatureName name)
+ raises (InvalidName);
+
+ ReceptacleDescriptions get_all_receptacles ();
+
+ ReceptacleDescriptions get_named_receptacles (in NameList names)
+ raises (InvalidName);
+ };
+};
+#endif /* CCM_RECEPTACLE_IDL */
diff --git a/modules/CIAO/ciao/CCM_ServantContainerInterceptor.idl b/modules/CIAO/ciao/CCM_ServantContainerInterceptor.idl
new file mode 100644
index 00000000000..884a1af2599
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ServantContainerInterceptor.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+#if !defined (CCM_SERVANTCONTAINERINTERCEPTOR_IDL)
+#define CCM_SERVANTCONTAINERINTERCEPTOR_IDL
+
+#include "ciao/CCM_ContainerInterceptor.idl"
+#include "ciao/CCM_ContainerServantRequestInfo.idl"
+#include "tao/PI/PIForwardRequest.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ServantContainerInterceptor : ContainerInterceptor
+ {
+ void servant_receive_request (in ContainerServantRequestInfo info, out boolean proceed_call)
+ raises (PortableInterceptor::ForwardRequest);
+ void servant_send_reply (in ContainerServantRequestInfo info, out boolean proceed_call);
+ void servant_send_exception (in ContainerServantRequestInfo info, out boolean proceed_call)
+ raises (PortableInterceptor::ForwardRequest);
+ void servant_send_other (in ContainerServantRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ };
+ };
+};
+#endif /* CCM_SERVANTCONTAINERINTERCEPTOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_ServantContainerInterceptorRegistration.idl b/modules/CIAO/ciao/CCM_ServantContainerInterceptorRegistration.idl
new file mode 100644
index 00000000000..39448de9a58
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ServantContainerInterceptorRegistration.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+#if !defined (CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL)
+#define CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL
+
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_InvalidRegistration.idl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ServantContainerInterceptor;
+
+ local interface ServantContainerInterceptorRegistration
+ {
+ Components::Cookie register_servant_interceptor (in ServantContainerInterceptor ci);
+ ServantContainerInterceptor unregister_servant_interceptor (in Components::Cookie cookie)
+ raises(InvalidRegistration);
+ };
+ };
+};
+
+#endif /* CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_ServerContainerInterceptor.idl b/modules/CIAO/ciao/CCM_ServerContainerInterceptor.idl
new file mode 100644
index 00000000000..58ce5cc69a7
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ServerContainerInterceptor.idl
@@ -0,0 +1,28 @@
+// $Id$
+
+#if !defined (CCM_SERVERCONTAINERINTERCEPTOR_IDL)
+#define CCM_SERVERCONTAINERINTERCEPTOR_IDL
+
+#include "ciao/CCM_ContainerInterceptor.idl"
+#include "ciao/CCM_ContainerServerRequestInfo.idl"
+#include "tao/PI/PIForwardRequest.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ServerContainerInterceptor : ContainerInterceptor
+ {
+ void receive_request_service_contexts (in ContainerServerRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ void receive_request (in ContainerServerRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ void send_reply (in ContainerServerRequestInfo info);
+ void send_exception (in ContainerServerRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ void send_other (in ContainerServerRequestInfo info)
+ raises (PortableInterceptor::ForwardRequest);
+ };
+ };
+};
+#endif /* CCM_SERVERCONTAINERINTERCEPTOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_ServerContainerInterceptorRegistration.idl b/modules/CIAO/ciao/CCM_ServerContainerInterceptorRegistration.idl
new file mode 100644
index 00000000000..b4a3dafac26
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_ServerContainerInterceptorRegistration.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+#if !defined (CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL)
+#define CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL
+
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_InvalidRegistration.idl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface ServerContainerInterceptor;
+
+ local interface ServerContainerInterceptorRegistration
+ {
+ Components::Cookie register_server_interceptor (in ServerContainerInterceptor ci);
+ ServerContainerInterceptor unregister_client_interceptor (in Components::Cookie cookie)
+ raises(InvalidRegistration);
+ };
+ };
+};
+
+#endif /* CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_Session2Context.idl b/modules/CIAO/ciao/CCM_Session2Context.idl
new file mode 100644
index 00000000000..8fec0e9441c
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Session2Context.idl
@@ -0,0 +1,50 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_SESSION2CONTEXT_IDL)
+#define CCM_SESSION2CONTEXT_IDL
+
+#include "ciao/CCM_CCM2Context.idl"
+
+// *************** Extended Container Interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ enum BadComponentReferenceReason
+ {
+ NON_LOCAL_REFERENCE,
+ NON_COMPONENT_REFERENCE,
+ WRONG_CONTAINER
+ };
+ exception BadComponentReference
+ {
+ BadComponentReferenceReason reason;
+ };
+
+ local interface Session2Context : SessionContext, CCM2Context
+ {
+ Object create_ref (in CORBA::RepositoryId repid);
+
+ Object create_ref_from_oid (in CORBA::OctetSeq oid,
+ in CORBA::RepositoryId repid);
+
+ CORBA::OctetSeq get_oid_from_ref (in Object objref)
+ raises (IllegalState,
+ BadComponentReference);
+ };
+};
+#endif /* CCM_SESSION2CONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_SessionComponent.idl b/modules/CIAO/ciao/CCM_SessionComponent.idl
new file mode 100644
index 00000000000..c4d72fffa05
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_SessionComponent.idl
@@ -0,0 +1,62 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_SESSIONCOMPONENT_IDL)
+#define CCM_SESSIONCOMPONENT_IDL
+
+#include "ciao/CCM_SessionContext.idl"
+#include "ciao/CCM_CCMException.idl"
+#include "ciao/CCM_EnterpriseComponent.idl"
+
+// *************** Basic Container interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface SessionComponent : EnterpriseComponent
+ {
+ void set_session_context ( in SessionContext ctx)
+ raises (CCMException);
+
+ void ccm_activate()
+ raises (CCMException);
+
+ void ccm_passivate()
+ raises (CCMException);
+
+ void ccm_remove ()
+ raises (CCMException);
+
+ /**
+ * This method is invoked before ccm_activate () is called. All
+ * components in the assembly get this callback before the
+ * ccm_activate () is called.
+ * @note CIAO specific
+ */
+ void ciao_preactivate ()
+ raises (CCMException);
+
+ /**
+ * This method is invoked after ccm_activate () is called. All
+ * components in the assembly get this callback after the
+ * ccm_activate () is called.
+ * @note CIAO specific
+ */
+ void ciao_postactivate ()
+ raises (CCMException);
+ };
+};
+#endif /* CCM_SESSIONCOMPONENT_IDL */
diff --git a/modules/CIAO/ciao/CCM_SessionContext.idl b/modules/CIAO/ciao/CCM_SessionContext.idl
new file mode 100644
index 00000000000..24820fb5cce
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_SessionContext.idl
@@ -0,0 +1,31 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_SESSIONCONTEXT_IDL)
+#define CCM_SESSIONCONTEXT_IDL
+
+#include "ciao/CCM_Context.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface SessionContext : CCMContext
+ {
+ Object get_CCM_object()
+ raises (IllegalState);
+ };
+};
+#endif /* CCM_SESSIONCONTEXT_IDL */
diff --git a/modules/CIAO/ciao/CCM_SessionSynchronization.idl b/modules/CIAO/ciao/CCM_SessionSynchronization.idl
new file mode 100644
index 00000000000..27614d3e14e
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_SessionSynchronization.idl
@@ -0,0 +1,39 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_SESSIONSYNCHRONIZATION_IDL)
+#define CCM_SESSIONSYNCHRONIZATION_IDL
+
+#include "ciao/CCM_CCMException.idl"
+
+// *************** Basic Container interfaces ***************
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ local interface SessionSynchronization
+ {
+ void after_begin ()
+ raises (CCMException);
+
+ void before_completion ()
+ raises (CCMException);
+
+ void after_completion (in boolean committed)
+ raises (CCMException);
+ };
+};
+#endif /* CCM_SESSIONSYNCHRONIZATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_StandardConfigurator.idl b/modules/CIAO/ciao/CCM_StandardConfigurator.idl
new file mode 100644
index 00000000000..e883c72ad64
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_StandardConfigurator.idl
@@ -0,0 +1,38 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_STANDARDCONFIGURATOR_IDL)
+#define CCM_STANDARDCONFIGURATOR_IDL
+
+#include "ciao/CCM_Configurator.idl"
+#include "ciao/CCM_Navigation.idl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ valuetype ConfigValue
+ {
+ public FeatureName name;
+ public any value;
+ };
+
+ typedef sequence<ConfigValue> ConfigValues;
+
+ interface StandardConfigurator : Configurator
+ {
+ void set_configuration (in ConfigValues descr);
+ };
+
+};
+#endif /* CCM_STANDARDCONFIGURATOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_StateIdFactory.idl b/modules/CIAO/ciao/CCM_StateIdFactory.idl
new file mode 100644
index 00000000000..de6b3b51b13
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_StateIdFactory.idl
@@ -0,0 +1,72 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Container_Ex.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_STATEIDFACTORY)
+#define CCM_STATEIDFACTORY
+
+#include <CosPersistentState.idl>
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ typedef short SegmentId;
+ const SegmentId COMPONENT_SEGMENT = 0;
+
+ typedef short FacetId;
+ const FacetId COMPONENT_FACET = 0;
+
+ typedef sequence<octet> IdData;
+ typedef CosPersistentState::Pid PersistentId;
+
+ exception InvalidStateIdData {};
+
+ typedef short StateIdType;
+ const StateIdType PERSISTENT_ID = 0;
+
+ abstract valuetype StateIdValue
+ {
+ StateIdType get_sid_type();
+ IdData get_sid_data();
+ };
+
+ local interface StateIdFactory
+ {
+ StateIdValue create (in IdData data)
+ raises (InvalidStateIdData);
+ };
+
+ valuetype PersistentIdValue : StateIdValue
+ {
+ private PersistentId pid;
+ PersistentId get_pid();
+ factory init (in PersistentId pid);
+ };
+
+ valuetype SegmentDescr
+ {
+ private StateIdValue sid;
+ private SegmentId seg;
+
+ StateIdValue get_sid();
+ SegmentId get_seg_id();
+ factory init (in StateIdValue sid,
+ in SegmentId seg);
+ };
+
+ typedef sequence<SegmentDescr> SegmentDescrSeq;
+
+};
+#endif /* CCM_STATEIDFACTORY */
diff --git a/modules/CIAO/ciao/CCM_StubContainerInterceptor.idl b/modules/CIAO/ciao/CCM_StubContainerInterceptor.idl
new file mode 100644
index 00000000000..c183801af86
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_StubContainerInterceptor.idl
@@ -0,0 +1,26 @@
+// $Id$
+
+#if !defined (CCM_STUBCONTAINERINTERCEPTOR_IDL)
+#define CCM_STUBCONTAINERINTERCEPTOR_IDL
+
+#include "ciao/CCM_ContainerInterceptor.idl"
+#include "ciao/CCM_ContainerStubRequestInfo.idl"
+#include "tao/PI/PIForwardRequest.pidl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface StubContainerInterceptor : ContainerInterceptor
+ {
+ void stub_send_request (in ContainerStubRequestInfo info, out boolean con)
+ raises (PortableInterceptor::ForwardRequest);
+ void stub_receive_reply (in ContainerStubRequestInfo info, out boolean con);
+ void stub_receive_exception (in ContainerStubRequestInfo info, out boolean con)
+ raises(PortableInterceptor::ForwardRequest);
+ void stub_receive_other (in ContainerStubRequestInfo info)
+ raises(PortableInterceptor::ForwardRequest);
+ };
+ };
+};
+#endif /* CCM_STUBCONTAINERINTERCEPTOR_IDL */
diff --git a/modules/CIAO/ciao/CCM_StubContainerInterceptorRegistration.idl b/modules/CIAO/ciao/CCM_StubContainerInterceptorRegistration.idl
new file mode 100644
index 00000000000..61ae62f51fa
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_StubContainerInterceptorRegistration.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+#if !defined (CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL)
+#define CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL
+
+#include "ciao/CCM_Cookie.idl"
+#include "ciao/CCM_InvalidRegistration.idl"
+
+module Components
+{
+ module ContainerPortableInterceptor
+ {
+ local interface StubContainerInterceptor;
+
+ local interface StubContainerInterceptorRegistration
+ {
+ Components::Cookie register_stub_interceptor (in StubContainerInterceptor ci);
+ StubContainerInterceptor unregister_stub_interceptor (in Components::Cookie cookie)
+ raises(InvalidRegistration);
+ };
+ };
+};
+
+#endif /* CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL */
diff --git a/modules/CIAO/ciao/CCM_Transaction.idl b/modules/CIAO/ciao/CCM_Transaction.idl
new file mode 100644
index 00000000000..c0c8cdc2c1d
--- /dev/null
+++ b/modules/CIAO/ciao/CCM_Transaction.idl
@@ -0,0 +1,89 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Transaction.idl
+ */
+
+//#define CIAO_HAS_IMPORT_KEYWORD
+
+#if !defined (CCM_TRANSACTION_IDL)
+#define CCM_TRANSACTION_IDL
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ // @@ Components::Transaction is still there.
+ module Transaction
+ {
+
+ typedef sequence<octet> TranToken;
+
+ exception NoTransaction {};
+ exception NotSupported {};
+ exception SystemError {};
+ exception RollbackError {};
+ exception HeuristicMixed {};
+ exception HeuristicRollback {};
+ exception Security {};
+ exception InvalidToken {};
+
+ enum Status
+ {
+ ACTIVE,
+ MARKED_ROLLBACK,
+ PREPARED,
+ COMMITTED,
+ ROLLED_BACK,
+ NO_TRANSACTION,
+ PREPARING,
+ COMMITTING,
+ ROLLING_BACK
+ };
+
+ local interface UserTransaction {
+ void begin ()
+ raises (NotSupported,
+ SystemError);
+
+ void commit ()
+ raises (RollbackError,
+ NoTransaction,
+ HeuristicMixed,
+ HeuristicRollback,
+ Security,
+ SystemError);
+
+ void rollback ()
+ raises (NoTransaction,
+ Security,
+ SystemError);
+
+ void set_rollback_only ()
+ raises (NoTransaction,
+ SystemError);
+
+ Status get_status()
+ raises (SystemError);
+
+ void set_timeout (in long to)
+ raises (SystemError);
+
+ TranToken suspend ()
+ raises (NoTransaction,
+ SystemError);
+
+ void resume (in TranToken txtoken)
+ raises (InvalidToken,
+ SystemError);
+ };
+ };
+};
+#endif /* CCM_TRANSACTION_IDL */
diff --git a/modules/CIAO/ciao/CIAO_Client_Export.h b/modules/CIAO/ciao/CIAO_Client_Export.h
new file mode 100644
index 00000000000..a566e94b0c2
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_Client_Export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_CLIENT
+// ------------------------------
+#ifndef CIAO_CLIENT_EXPORT_H
+#define CIAO_CLIENT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_CLIENT_HAS_DLL)
+# define CIAO_CLIENT_HAS_DLL 1
+#endif /* ! CIAO_CLIENT_HAS_DLL */
+
+#if defined (CIAO_CLIENT_HAS_DLL) && (CIAO_CLIENT_HAS_DLL == 1)
+# if defined (CIAO_CLIENT_BUILD_DLL)
+# define CIAO_CLIENT_Export ACE_Proper_Export_Flag
+# define CIAO_CLIENT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_CLIENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_CLIENT_BUILD_DLL */
+# define CIAO_CLIENT_Export ACE_Proper_Import_Flag
+# define CIAO_CLIENT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_CLIENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_CLIENT_BUILD_DLL */
+#else /* CIAO_CLIENT_HAS_DLL == 1 */
+# define CIAO_CLIENT_Export
+# define CIAO_CLIENT_SINGLETON_DECLARATION(T)
+# define CIAO_CLIENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_CLIENT_HAS_DLL == 1 */
+
+// Set CIAO_CLIENT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_CLIENT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_CLIENT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_CLIENT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_CLIENT_NTRACE */
+
+#if (CIAO_CLIENT_NTRACE == 1)
+# define CIAO_CLIENT_TRACE(X)
+#else /* (CIAO_CLIENT_NTRACE == 1) */
+# define CIAO_CLIENT_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (CIAO_CLIENT_NTRACE == 1) */
+
+#endif /* CIAO_CLIENT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciao/CIAO_Config.h b/modules/CIAO/ciao/CIAO_Config.h
new file mode 100644
index 00000000000..42b04622520
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_Config.h
@@ -0,0 +1,20 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file CIAO_Config.h
+ *
+ * $Id$
+ *
+ * CIAO compile time configuration file.
+ *
+ * @author Bala Natarajan <bala @ dre.vanderbilt.edu>
+ */
+//=============================================================================
+#ifndef CIAO_CONFIG_H
+#define CIAO_CONFIG_H
+
+#if !defined (CIAO_DEFAULT_MAP_SIZE)
+# define CIAO_DEFAULT_MAP_SIZE 64
+#endif /* CIAO_DEFAULT_MAP_SIZE */
+
+#endif /*CIAO_CONFIG_H*/
diff --git a/modules/CIAO/ciao/CIAO_Container_Export.h b/modules/CIAO/ciao/CIAO_Container_Export.h
new file mode 100644
index 00000000000..74ba838721d
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_Container_Export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_CONTAINER
+// ------------------------------
+#ifndef CIAO_CONTAINER_EXPORT_H
+#define CIAO_CONTAINER_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_CONTAINER_HAS_DLL)
+# define CIAO_CONTAINER_HAS_DLL 1
+#endif /* ! CIAO_CONTAINER_HAS_DLL */
+
+#if defined (CIAO_CONTAINER_HAS_DLL) && (CIAO_CONTAINER_HAS_DLL == 1)
+# if defined (CIAO_CONTAINER_BUILD_DLL)
+# define CIAO_CONTAINER_Export ACE_Proper_Export_Flag
+# define CIAO_CONTAINER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_CONTAINER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_CONTAINER_BUILD_DLL */
+# define CIAO_CONTAINER_Export ACE_Proper_Import_Flag
+# define CIAO_CONTAINER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_CONTAINER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_CONTAINER_BUILD_DLL */
+#else /* CIAO_CONTAINER_HAS_DLL == 1 */
+# define CIAO_CONTAINER_Export
+# define CIAO_CONTAINER_SINGLETON_DECLARATION(T)
+# define CIAO_CONTAINER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_CONTAINER_HAS_DLL == 1 */
+
+// Set CIAO_CONTAINER_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_CONTAINER_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_CONTAINER_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_CONTAINER_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_CONTAINER_NTRACE */
+
+#if (CIAO_CONTAINER_NTRACE == 1)
+# define CIAO_CONTAINER_TRACE(X)
+#else /* (CIAO_CONTAINER_NTRACE == 1) */
+# define CIAO_CONTAINER_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (CIAO_CONTAINER_NTRACE == 1) */
+
+#endif /* CIAO_CONTAINER_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciao/CIAO_NodeApplication_CallBack.idl b/modules/CIAO/ciao/CIAO_NodeApplication_CallBack.idl
new file mode 100644
index 00000000000..35cf8afabdd
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_NodeApplication_CallBack.idl
@@ -0,0 +1,23 @@
+// $Id$
+
+/**
+ * This IDL file is used to combine the NodeApplication
+ * interface with the NodeApplicationManager interface.
+ *
+ * NodeApplicationManager will be spawn NodeApplication.
+ * The call back object will be used to get the objectref of
+ * NodeApplication.
+ */
+
+#include "ciao/Deployment_NodeApplication.idl"
+#include "ciao/Deployment_NodeApplicationManager.idl"
+
+module CIAO
+{
+ interface NodeApplication_Callback
+ {
+ Deployment::NodeApplicationManager
+ register_node_application (in Deployment::NodeApplication na,
+ out Deployment::Properties properties);
+ };
+};
diff --git a/modules/CIAO/ciao/CIAO_ServerResources.idl b/modules/CIAO/ciao/CIAO_ServerResources.idl
new file mode 100644
index 00000000000..de14402f835
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_ServerResources.idl
@@ -0,0 +1,237 @@
+// $Id$
+
+/**
+ * @file CIAO_ServerResources.idl
+ *
+ * @brief A collection of IDL data types for
+ *
+ * @author Nanbor Wang
+ */
+
+#if !defined (CIAO_SERVERRESOURCES_IDL)
+#define CIAO_SERVERRESOURCES_IDL
+
+#include <orb.idl>
+
+module CIAO
+{
+ module DAnCE
+ {
+ /**
+ * @brief A single command line argument corresponds to a string as
+ * in the case of "argv".
+ */
+ typedef string CommandlineArg;
+ /**
+ * @brief A list of command line arguments which a
+ * NodeApplicationManager will use to start up the NodeApplication
+ * this list is associated to. The command line arguments will be
+ * appended to the command line in order.
+ */
+ typedef sequence<CommandlineArg> CommandlineArgs;
+
+ /**
+ * @brief A string containing the filename of the svc.conf file the
+ * NodeApplication uses. The current approach of specifying
+ * svc.conf filename directly some harder problems such as
+ * distribution of svc.conf files and the relative/absolute path to
+ * the svc.conf file (the ServerResrouces xml document will have to
+ * assume the svc.conf file will be available at specific location.)
+ */
+ typedef string SvcconfURI;
+
+ /**
+ * @brief enumeration of ORB Resource Types (ORT) supported in RT
+ * extension.
+ */
+ enum ORBResourceType
+ {
+ ORT_THREADPOOL,
+ ORT_THREADPOOLWITHLANES,
+ ORT_CONNECTIONBANDS
+ };
+
+ typedef short Priority;
+
+ /**
+ * @brief Define a threadpool resource that an ORB must provide
+ */
+ struct ORS_Threadpool
+ {
+ string Id;
+ unsigned long stacksize;
+ unsigned long static_threads;
+ unsigned long dynamic_threads;
+ Priority default_priority;
+ boolean allow_request_buffering;
+ unsigned long max_buffered_requests;
+ unsigned long max_request_buffer_size;
+ };
+
+ typedef sequence<ORS_Threadpool> ORS_ThreadpoolSeq;
+
+ /**
+ * @brief Defines the configuration of a threadpool lane. We need
+ * to redefine it here to avoid dependency to RTCORBA library.
+ */
+ struct ORS_ThreadpoolLane
+ {
+ Priority lane_priority;
+ unsigned long static_threads;
+ unsigned long dynamic_threads;
+ };
+
+ /**
+ * @brief Defines a set of threadpool lanes. We need
+ * to redefine it here to avoid dependency to RTCORBA library.
+ */
+ typedef sequence<ORS_ThreadpoolLane> ORS_ThreadpoolLanes;
+
+ /**
+ * @brief Defines a Threadpool with Lanes resource that an ORB
+ * must provide.
+ */
+ struct ORS_ThreadpoolWithLanes
+ {
+ string Id;
+ unsigned long stacksize;
+ ORS_ThreadpoolLanes threadpool_lanes;
+ boolean allow_borrowing;
+ boolean allow_request_buffering;
+ unsigned long max_buffered_requests;
+ unsigned long max_request_buffer_size;
+ };
+
+ typedef sequence<ORS_ThreadpoolWithLanes> ORS_ThreadpoolWithLanesSeq;
+
+ /**
+ * @brief Define a priority band for BandedConnection policies.
+ */
+ struct ORS_PriorityBand
+ {
+ Priority low;
+ Priority high;
+ };
+ /**
+ * @brief Define a list of priority bands for BandedConnection
+ * policies.
+ */
+ typedef sequence<ORS_PriorityBand> ORS_PriorityBands;
+
+ /**
+ * @brief Define the information needed to create a
+ * BandedConnection policy. This info can be referred to via its
+ * name (Id).
+ */
+ struct ORS_ConnectionBands
+ {
+ string Id;
+ ORS_PriorityBands bands;
+ };
+
+ typedef sequence<ORS_ConnectionBands> ORS_ConnectionBandsSeq;
+
+ /**
+ * @brief Collection of resources managed by the NodeApplication
+ * ORB.
+ */
+ struct ORBResource
+ {
+ ORS_ThreadpoolSeq threadpool_list;
+
+ ORS_ThreadpoolWithLanesSeq threadpool_with_lanes_list;
+
+ ORS_ConnectionBandsSeq connection_bands_list;
+ };
+
+ typedef sequence<ORBResource, 1> ORBResources;
+
+ // =================================================================
+
+ /**
+ * @brief PolicyType supported by DAnCE extension. Again, we are
+ * redefining these value to avoid dependencies to various ORB
+ * modules such as RTCORBA.
+ */
+ const CORBA::PolicyType PRIORITY_MODEL_POLICY_TYPE = 40;
+ const CORBA::PolicyType THREADPOOL_POLICY_TYPE = 41;
+ const CORBA::PolicyType PRIORITY_BANDED_CONNECTION_POLICY_TYPE = 45;
+
+ enum PriorityModel
+ {
+ CLIENT_PROPAGATED,
+ SERVER_DECLARED
+ };
+
+ /**
+ * @brief Defines data required for creating a PriorityModel Policy
+ */
+ struct PriorityModelPolicyDef
+ {
+ PriorityModel priority_model;
+ Priority server_priority;
+ };
+
+ /**
+ * @brief Define data required for creating a Threadpool policy
+ */
+ struct ThreadpoolPolicyDef
+ {
+ string Id; // Threadpool name defined in
+ // ORBResource
+ };
+
+ /**
+ * @brief Define data required for creating a PriorityBandedConnection
+ * policy
+ */
+ struct PriorityBandedConnectionPolicyDef
+ {
+ string Id; // PriorityBands name defined in
+ // ORBResource
+ };
+
+ union PolicyDef switch (CORBA::PolicyType)
+ {
+ case 40: PriorityModelPolicyDef PriorityModelDef;
+ case 41: ThreadpoolPolicyDef ThreadpoolDef;
+ case 45: PriorityBandedConnectionPolicyDef PriorityBandedConnectionDef;
+ };
+
+ /**
+ * @brief Define a set of policy definitions.
+ */
+ typedef sequence<PolicyDef> PolicyDefs;
+
+ /**
+ * @brief A policy set is named.
+ */
+ struct PolicySet
+ {
+ string Id; // Name of this policy set
+ PolicyDefs policies;
+ };
+
+ /**
+ * @brief A list of all policy sets.
+ */
+ typedef sequence<PolicySet> PolicySets;
+
+ struct ORBConfigs
+ {
+ ORBResources orb_resources;
+ PolicySets policy_set;
+ };
+
+ struct ServerResource
+ {
+ string Id;
+
+ CommandlineArgs args;
+ SvcconfURI svcconf;
+ ORBConfigs orb_config;
+ };
+ };
+};
+
+#endif /* CIAO_SERVERRESOURCES_IDL */
diff --git a/modules/CIAO/ciao/CIAO_Server_Export.h b/modules/CIAO/ciao/CIAO_Server_Export.h
new file mode 100644
index 00000000000..2f0145331e9
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_Server_Export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_SERVER
+// ------------------------------
+#ifndef CIAO_SERVER_EXPORT_H
+#define CIAO_SERVER_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_SERVER_HAS_DLL)
+# define CIAO_SERVER_HAS_DLL 1
+#endif /* ! CIAO_SERVER_HAS_DLL */
+
+#if defined (CIAO_SERVER_HAS_DLL) && (CIAO_SERVER_HAS_DLL == 1)
+# if defined (CIAO_SERVER_BUILD_DLL)
+# define CIAO_SERVER_Export ACE_Proper_Export_Flag
+# define CIAO_SERVER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_SERVER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_SERVER_BUILD_DLL */
+# define CIAO_SERVER_Export ACE_Proper_Import_Flag
+# define CIAO_SERVER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_SERVER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_SERVER_BUILD_DLL */
+#else /* CIAO_SERVER_HAS_DLL == 1 */
+# define CIAO_SERVER_Export
+# define CIAO_SERVER_SINGLETON_DECLARATION(T)
+# define CIAO_SERVER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_SERVER_HAS_DLL == 1 */
+
+// Set CIAO_SERVER_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_SERVER_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_SERVER_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_SERVER_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_SERVER_NTRACE */
+
+#if (CIAO_SERVER_NTRACE == 1)
+# define CIAO_SERVER_TRACE(X)
+#else /* (CIAO_SERVER_NTRACE == 1) */
+# define CIAO_SERVER_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (CIAO_SERVER_NTRACE == 1) */
+
+#endif /* CIAO_SERVER_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciao/CIAO_SwapExec.idl b/modules/CIAO/ciao/CIAO_SwapExec.idl
new file mode 100644
index 00000000000..2349988f46d
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_SwapExec.idl
@@ -0,0 +1,12 @@
+// $Id$
+
+#include "ciao/CCM_EnterpriseComponent.idl"
+
+module CIAO
+{
+ local interface Swap_Exec : ::Components::EnterpriseComponent
+ {
+ Components::EnterpriseComponent incarnate ();
+ Components::EnterpriseComponent etherealize ();
+ };
+};
diff --git a/modules/CIAO/ciao/CIAO_UpgradeableContext.idl b/modules/CIAO/ciao/CIAO_UpgradeableContext.idl
new file mode 100644
index 00000000000..6d4b315ae85
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_UpgradeableContext.idl
@@ -0,0 +1,17 @@
+// $Id$
+
+#include "ciao/CCM_Container.idl"
+#include "tao/PortableServer/PortableServer_include.pidl"
+
+module CIAO
+{
+ local interface UpgradeableContext : ::Components::SessionContext
+ {
+ ::Components::ConsumerDescriptions get_registered_consumers
+ (in ::Components::FeatureName publisher_name)
+ raises (::Components::InvalidName, ::Components::InvalidConnection);
+ void deactivate_facet (in PortableServer::ObjectId oid);
+ void update_port_activator (in PortableServer::ObjectId oid);
+ void remove_facet (in Object reference);
+ };
+};
diff --git a/modules/CIAO/ciao/CIAO_common.h b/modules/CIAO/ciao/CIAO_common.h
new file mode 100644
index 00000000000..cd6caa908ba
--- /dev/null
+++ b/modules/CIAO/ciao/CIAO_common.h
@@ -0,0 +1,80 @@
+// $Id$
+
+/**
+ * @file CIAO_common.h
+ *
+ * This file collects common CIAO macro definitions.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef CIAO_COMMON_H
+#define CIAO_COMMON_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined ACE_LACKS_PRAGMA_ONCE
+# pragma once
+#endif /* ! ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Client_Export.h"
+
+#define CIAO_REGISTER_VALUE_FACTORY(ORB,FACTORY,VALUETYPE) {\
+ CORBA::ValueFactory factory = new FACTORY; \
+ CORBA::ValueFactory prev_factory = \
+ ORB->register_value_factory \
+ (VALUETYPE::_tao_obv_static_repository_id (), \
+ factory); \
+ if (prev_factory) prev_factory->_remove_ref (); \
+ factory->_remove_ref (); }
+
+// By default tracing is turned off.
+#if !defined (CIAO_NTRACE)
+# if !defined (ACE_NTRACE)
+# define CIAO_NTRACE 1
+# else
+# define CIAO_NTRACE ACE_NTRACE
+# endif
+#endif /* CIAO_NTRACE */
+
+#if (CIAO_NTRACE == 1)
+# if !defined (ACE_NTRACE)
+# define CIAO_TRACE(X)
+# else
+# if (ACE_NTRACE == 0)
+# error CIAO_TRACE cannot be disabled if ACE_TRACE is enabled
+# else
+# define CIAO_TRACE(X)
+# endif
+# endif
+#else
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* CIAO_NTRACE */
+
+namespace CIAO
+{
+ /**
+ * Return the debug level. The debug level of CIAO is control by
+ * an environment variable "CIAO_DEBUG_LEVEL". It should be an int
+ * value. If it is not defined, the default debug level is 0. The
+ * value of debug value is evaluated on its first use and the value
+ * is then cached. The actual implementation of this function is in
+ * Client_init.cpp.
+ *
+ * Some recommendation for using the debug_level
+ *
+ * > 0 : For component users. Component developers are encouraged
+ * to develop their own
+ * > 10 : For CIAO tools
+ * > 20 : For CIAO core.
+ */
+ CIAO_CLIENT_Export int debug_level (void);
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_COMMON_H */
diff --git a/modules/CIAO/ciao/Client_init.cpp b/modules/CIAO/ciao/Client_init.cpp
new file mode 100644
index 00000000000..15325cf7a4e
--- /dev/null
+++ b/modules/CIAO/ciao/Client_init.cpp
@@ -0,0 +1,56 @@
+// $Id$
+
+#include "Client_init.h"
+#include "CIAO_common.h"
+#include "CCM_ComponentC.h"
+#include "CCM_StandardConfiguratorC.h"
+#include "ace/Env_Value_T.h"
+
+int
+CIAO::Client_init (CORBA::ORB_ptr o)
+{
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::Cookie_init,
+ Components::Cookie);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::PortDescription_init,
+ Components::PortDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::FacetDescription_init,
+ Components::FacetDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConnectionDescription_init,
+ Components::ConnectionDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ReceptacleDescription_init,
+ Components::ReceptacleDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConsumerDescription_init,
+ Components::ConsumerDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::EmitterDescription_init,
+ Components::EmitterDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::SubscriberDescription_init,
+ Components::SubscriberDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::PublisherDescription_init,
+ Components::PublisherDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConfigValue_init,
+ Components::ConfigValue);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ComponentPortDescription_init,
+ Components::ComponentPortDescription);
+ return 0;
+}
+
+/// This should really be an anonymous namespace, but some compilers
+/// still don't support this features. Therefore, just use a long
+/// namespace name here.
+namespace ciao_anonymous_namespace
+{
+ int debug_level = -1;
+}
+
+int
+CIAO::debug_level (void)
+{
+ if (ciao_anonymous_namespace::debug_level == -1)
+ {
+ // Initialize the thing.
+ ACE_Env_Value<int> envar ("CIAO_DEBUG_LEVEL", 1);
+ ciao_anonymous_namespace::debug_level = envar;
+ }
+
+ return ciao_anonymous_namespace::debug_level;
+}
diff --git a/modules/CIAO/ciao/Client_init.h b/modules/CIAO/ciao/Client_init.h
new file mode 100644
index 00000000000..9c86e386778
--- /dev/null
+++ b/modules/CIAO/ciao/Client_init.h
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// $Id$
+
+/**
+ * @file Client_init.h
+ *
+ * Initializing CIAO client side ORB, if they need to.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef CIAO_CLIENT_INIT_H
+#define CIAO_CLIENT_INIT_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_Client_Export.h"
+
+#if !defined ACE_LACKS_PRAGMA_ONCE
+#pragma once
+#endif /* ! ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/orbconf.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+namespace CORBA
+{
+ class ORB;
+ typedef ORB *ORB_ptr;
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ /**
+ * The initialize routine for any clients that need to access
+ * component. This routine now simply registers various valuetype
+ * factories defined in CIAO_Component.pidl. Currently, this method
+ * should be call right after ORB initialization but we should try
+ * to register these stuff automatically.
+ */
+ CIAO_CLIENT_Export int Client_init (CORBA::ORB_ptr o);
+}
+
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CLIENT_INIT_H */
diff --git a/modules/CIAO/ciao/Components.idl b/modules/CIAO/ciao/Components.idl
new file mode 100644
index 00000000000..f58740eae6a
--- /dev/null
+++ b/modules/CIAO/ciao/Components.idl
@@ -0,0 +1,18 @@
+// $Id$
+
+/**
+ * @@ This file is included in the generated executor
+ * mapping IDL file, and for now just includes
+ * CCM_Container.idl.
+ */
+
+#if !defined (CIAO_COMPONENTS_IDL)
+#define CIAO_COMPONENTS_IDL
+
+#include "ciao/CCM_Component.idl"
+#include "ciao/CCM_KeylessCCMHome.idl"
+#include "ciao/CCM_Home.idl"
+#include "ciao/CCM_Object.idl"
+
+#endif /* CIAO_COMPONENTS_IDL */
+
diff --git a/modules/CIAO/ciao/Container_Base.cpp b/modules/CIAO/ciao/Container_Base.cpp
new file mode 100644
index 00000000000..63507fede32
--- /dev/null
+++ b/modules/CIAO/ciao/Container_Base.cpp
@@ -0,0 +1,617 @@
+// $Id$
+
+#include "Container_Base.h"
+#include "CIAO_common.h"
+#include "ace/DLL.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+#include "ace/OS_NS_stdio.h"
+#include "Servant_Activator.h"
+
+#if !defined (__ACE_INLINE__)
+# include "Container_Base.inl"
+#endif /* __ACE_INLINE__ */
+
+namespace CIAO
+{
+ ////////////////////////////////////////////////////////////////
+
+ Container::Container (CORBA::ORB_ptr o)
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ container_impl_ (0)
+ {
+ }
+
+ Container::Container (CORBA::ORB_ptr o, Container_Impl *container_impl)
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ container_impl_ (container_impl)
+ {
+ }
+
+ Container::~Container (void)
+ {
+ }
+
+ PortableServer::POA_ptr
+ Container::the_POA (void) const
+ {
+ return this->component_poa_.in ();
+ }
+
+ PortableServer::POA_ptr
+ Container::the_facet_cons_POA (void) const
+ {
+ return this->facet_cons_poa_.in ();
+ }
+
+ CORBA::ORB_ptr
+ Container::the_ORB (void) const
+ {
+ return this->orb_.in ();
+ }
+
+ ///////////////////////////////////////////////////////////////
+
+ ACE_Atomic_Op <ACE_SYNCH_MUTEX, unsigned long>
+ Session_Container::serial_number_ (0);
+
+ Session_Container::Session_Container (CORBA::ORB_ptr o,
+ Container_Impl *container_impl,
+ bool static_config_flag,
+ const Static_Config_EntryPoints_Maps* maps)
+ : Container (o, container_impl),
+ number_ (0),
+ static_config_flag_ (static_config_flag),
+ static_entrypts_maps_ (maps),
+ sa_ (0)
+ {
+ }
+
+ Session_Container::~Session_Container (void)
+ {
+ if (! CORBA::is_nil (this->component_poa_.in ()))
+ {
+ this->component_poa_->destroy (1, 1);
+ }
+
+ if (! CORBA::is_nil (this->facet_cons_poa_.in ()))
+ {
+ this->facet_cons_poa_->destroy (1, 1);
+ }
+
+ if (! CORBA::is_nil (this->home_servant_poa_.in ()))
+ {
+ this->home_servant_poa_->destroy (1, 1);
+ }
+
+ delete this->sa_;
+ }
+
+ int
+ Session_Container::init (const char *name,
+ const CORBA::PolicyList *more_policies)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::init");
+
+ char buffer[MAXPATHLEN];
+
+ if (name == 0)
+ {
+ this->number_ = ++Session_Container::serial_number_;
+ ACE_OS::sprintf (buffer,
+ "CIAO::Session_Container-%ld",
+ this->number_);
+ name = buffer;
+ }
+
+ CORBA::Object_var poa_object =
+ this->orb_->resolve_initial_references("RootPOA");
+
+ if (CORBA::is_nil (poa_object.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ -1);
+ }
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ());
+
+ this->create_component_POA (name,
+ more_policies,
+ root_poa.in ());
+
+ ACE_CString port_poa_name (name);
+ port_poa_name += ":Port_POA";
+ this->create_facet_consumer_POA (port_poa_name.c_str (),
+ more_policies,
+ root_poa.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ poa_manager->activate ();
+
+ return 0;
+ }
+
+ void
+ Session_Container::create_component_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root)
+ {
+ CIAO_TRACE ("Session_Container::create_component_POA");
+
+ // Set up proper poa policies here. Default policies seems to be
+ // fine for session container. If you add some other default
+ // policies here, then you need to "add" more_policies below
+ // instead of simply assigning more_policies to the init policy
+ // list.
+ CORBA::PolicyList policies (0);
+
+ if (p != 0)
+ {
+ policies = *p;
+ }
+
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager ();
+
+ this->component_poa_ =
+ root->create_POA (name,
+ poa_manager.in (),
+ policies);
+ }
+
+ void
+ Session_Container::create_facet_consumer_POA (
+ const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root)
+ {
+ CIAO_TRACE ("Session_Container::create_facet_consumer_POA");
+
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager ();
+
+ CORBA::ULong p_length = 0;
+ if (p != 0)
+ {
+ p_length = p->length ();
+ }
+
+ TAO::Utils::PolicyList_Destroyer policies (p_length + 3);
+ policies.length (p_length + 3);
+
+ policies[0] =
+ root->create_id_assignment_policy (PortableServer::USER_ID);
+
+ // Servant Manager Policy
+ policies[1] =
+ root->create_request_processing_policy
+ (PortableServer::USE_SERVANT_MANAGER);
+
+ // Servant Retention Policy
+ policies[2] =
+ root->create_servant_retention_policy (PortableServer::RETAIN);
+
+ for (CORBA::ULong i = 0; i < p_length; ++i)
+ {
+ policies[i+3] = (*p)[i];
+ }
+
+ this->facet_cons_poa_ =
+ root->create_POA (name,
+ poa_manager.in (),
+ policies);
+
+ ACE_NEW_THROW_EX (this->sa_,
+ Servant_Activator (this->orb_.in ()),
+ CORBA::NO_MEMORY ());
+
+ this->facet_cons_poa_->set_servant_manager (
+ this->sa_
+ );
+ }
+
+ CORBA::Object_ptr
+ Session_Container::install_servant (PortableServer::Servant p,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::install_servant");
+
+ PortableServer::POA_ptr tmp = 0;
+
+ if (t == Container::Component)
+ {
+ tmp = this->component_poa_.in ();
+ }
+ else
+ {
+ tmp = this->facet_cons_poa_.in ();
+ }
+
+ PortableServer::ObjectId_var oid =
+ tmp->activate_object (p);
+
+ CORBA::Object_var objref =
+ tmp->id_to_reference (oid.in ());
+
+ return objref._retn ();
+ }
+
+ CORBA::Object_ptr
+ Session_Container::install_component (PortableServer::Servant p,
+ PortableServer::ObjectId_out oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::install_component");
+ PortableServer::ObjectId_var id =
+ this->component_poa_->activate_object (p);
+
+ CORBA::Object_var objref =
+ this->component_poa_->id_to_reference (id.in ());
+
+ oid = id._retn ();
+
+ return objref._retn ();
+ }
+
+
+ //@@ Apparently we need to be cautious when handling the exception
+ // thrown here. We should make sure that new DnC interfaces
+ // NodeApplication/NodeApplicationManager etc will cache the new
+ // exceptions--> rethrow of new exceptions is needed.
+ // --Tao
+ Components::CCMHome_ptr
+ Session_Container::ciao_install_home (const char *exe_dll_name,
+ const char *exe_entrypt,
+ const char *sv_dll_name,
+ const char *sv_entrypt,
+ const char *ins_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure))
+ {
+ CIAO_TRACE ("Session_Container::ciao_install_home");
+
+ HomeFactory hcreator = 0;
+ ServantFactory screator = 0;
+
+ if (this->static_config_flag_ == false)
+ {
+ ACE_DLL executor_dll, servant_dll;
+
+ if (exe_dll_name == 0 || sv_dll_name == 0)
+ {
+ ACE_CString exception;
+
+ if (exe_dll_name == 0)
+ {
+ exception = "Null component executor DLL name";
+ }
+
+ if (sv_dll_name == 0)
+ {
+ exception = "Null component servant DLL name";
+ }
+
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Base.cpp -"
+ "Session_Container::ciao_install_home -"
+ "ERROR: %s\n",
+ exception.c_str ()));
+
+ ACE_THROW_RETURN
+ (Deployment::UnknownImplId (
+ "Session_Container::ciao_install_home",
+ exception.c_str ()),
+ Components::CCMHome::_nil ());
+ }
+
+ if (executor_dll.open (exe_dll_name,
+ ACE_DEFAULT_SHLIB_MODE,
+ 0) != 0)
+ {
+ ACE_CString error ("Failed to open executor DLL: ");
+ error += exe_dll_name;
+
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Base.cpp -"
+ "Session_Container::ciao_install_home -"
+ "ERROR in opening the executor DLL [%s] \n",
+ exe_dll_name));
+
+ ACE_THROW_RETURN
+ (Deployment::UnknownImplId
+ ("Session_Container::ciao_install_home",
+ error.c_str ()), Components::CCMHome::_nil ());
+ }
+
+ if (servant_dll.open (sv_dll_name,
+ ACE_DEFAULT_SHLIB_MODE,
+ 0) != 0)
+ {
+ ACE_CString error ("Failed to open executor DLL: ");
+ error += sv_dll_name;
+
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Base.cpp -"
+ "Session_Container::ciao_install_home -"
+ "ERROR in opening the servant DLL [%s] \n",
+ sv_dll_name));
+
+ ACE_THROW_RETURN
+ (Deployment::UnknownImplId
+ ("Session_Container::ciao_install_home",
+ error.c_str ()), Components::CCMHome::_nil ());
+ }
+
+ if (exe_entrypt == 0 || sv_entrypt == 0)
+ {
+ ACE_CString error ("Entry point is null for ");
+
+ if (exe_entrypt == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Base.cpp -"
+ "Session_Container::ciao_install_home -"
+ "ERROR in opening the executor entry point "
+ "for executor DLL [%s] \n",
+ exe_dll_name));
+ error += exe_dll_name;
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) Container_Base.cpp -"
+ "Session_Container::ciao_install_home -"
+ "ERROR in opening the servant entry point "
+ "for servant DLL [%s] \n",
+ sv_dll_name));
+ error += sv_dll_name;
+ }
+
+ ACE_THROW_RETURN
+ (Deployment::ImplEntryPointNotFound
+ ("Session_Container::ciao_install_home",
+ error.c_str ()), Components::CCMHome::_nil ());
+ }
+
+ // We have to do this casting in two steps because the C++
+ // standard forbids casting a pointer-to-object (including
+ // void*) directly to a pointer-to-function.
+ void *void_ptr = executor_dll.symbol (exe_entrypt);
+ ptrdiff_t tmp_ptr = reinterpret_cast<ptrdiff_t> (void_ptr);
+ hcreator = reinterpret_cast<HomeFactory> (tmp_ptr);
+
+ void_ptr = servant_dll.symbol (sv_entrypt);
+ tmp_ptr = reinterpret_cast<ptrdiff_t> (void_ptr);
+ screator = reinterpret_cast<ServantFactory> (tmp_ptr);
+ }
+ else
+ {
+ if (static_entrypts_maps_ == 0
+ || static_entrypts_maps_->home_creator_funcptr_map_ == 0
+ || static_entrypts_maps_->home_servant_creator_funcptr_map_ == 0)
+ {
+ ACE_THROW_RETURN (Deployment::ImplEntryPointNotFound (),
+ Components::CCMHome::_nil ());
+ }
+
+ ACE_CString exe_entrypt_str (exe_entrypt);
+ static_entrypts_maps_->home_creator_funcptr_map_->find (
+ exe_entrypt_str,
+ hcreator
+ );
+
+ ACE_CString sv_entrypt_str (sv_entrypt);
+ static_entrypts_maps_->home_servant_creator_funcptr_map_->find (
+ sv_entrypt_str,
+ screator
+ );
+ }
+
+ if (hcreator == 0 || screator == 0)
+ {
+ ACE_CString error ("Entry point ");
+
+ if (hcreator == 0)
+ {
+ error += exe_entrypt;
+ error += " invalid in dll ";
+ error += exe_dll_name;
+ }
+ else
+ {
+ error += sv_entrypt;
+ error += " invalid in dll ";
+ error += sv_dll_name;
+ }
+
+ ACE_THROW_RETURN
+ (Deployment::ImplEntryPointNotFound
+ ("SessionContainer::ciao_install_home",
+ error.c_str ()), Components::CCMHome::_nil ());
+ }
+
+ Components::HomeExecutorBase_var home_executor = hcreator ();
+
+ if (CORBA::is_nil (home_executor.in ()))
+ {
+ ACE_THROW_RETURN
+ (Deployment::InstallationFailure
+ ("SessionContainer::ciao_install_home",
+ "Executor entrypoint failed to create a home."),
+ Components::CCMHome::_nil ());
+ }
+
+ PortableServer::Servant home_servant = screator (home_executor.in (),
+ this,
+ ins_name);
+
+ if (home_servant == 0)
+ {
+ ACE_THROW_RETURN
+ (Deployment::InstallationFailure
+ ("SessionContainer::ciao_install_home",
+ "Servant entrypoing failed to create a home."),
+ Components::CCMHome::_nil ());
+ }
+
+ PortableServer::ServantBase_var safe (home_servant);
+
+ CORBA::Object_var objref =
+ this->install_servant (home_servant,
+ Container::Component);
+
+ Components::CCMHome_var homeref =
+ Components::CCMHome::_narrow (objref.in ());
+
+ return homeref._retn ();
+ }
+
+ void
+ Session_Container::ciao_uninstall_home (Components::CCMHome_ptr homeref)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::ciao_uninstall_home");
+
+ this->uninstall (homeref,
+ Container::Component);
+ }
+
+ void
+ Session_Container::uninstall (CORBA::Object_ptr objref,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::uninstall");
+
+ PortableServer::POA_ptr tmp = 0;
+
+ if (t == Container::Component)
+ {
+ tmp = this->component_poa_.in ();
+ }
+ else
+ {
+ tmp = this->facet_cons_poa_.in ();
+ }
+
+ PortableServer::ObjectId_var oid =
+ tmp->reference_to_id (objref);
+
+ tmp->deactivate_object (oid.in ());
+ }
+
+ void
+ Session_Container::uninstall (PortableServer::Servant svt,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::uninstall");
+ PortableServer::POA_ptr tmp = 0;
+
+ if (t == Container::Component)
+ {
+ tmp = this->component_poa_.in ();
+ }
+ else
+ {
+ tmp = this->facet_cons_poa_.in ();
+ }
+
+ PortableServer::ObjectId_var oid
+ = tmp->servant_to_id (svt);
+
+ tmp->deactivate_object (oid.in ());
+ }
+
+ void
+ Session_Container::uninstall_component (Components::CCMObject_ptr objref,
+ PortableServer::ObjectId_out oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::uninstall_component");
+
+ PortableServer::ObjectId_var id =
+ this->component_poa_->reference_to_id (objref);
+
+ this->component_poa_->deactivate_object (id.in ());
+
+ oid = id._retn ();
+ }
+
+ void
+ Session_Container::add_servant_map (
+ PortableServer::ObjectId &,
+ Dynamic_Component_Servant_Base*
+ )
+ {
+ CIAO_TRACE ("Session_Container::add_servant_map");
+ }
+
+ void
+ Session_Container::deactivate_facet (const PortableServer::ObjectId &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::deactivate_facet");
+ }
+
+ void
+ Session_Container::delete_servant_map (
+ PortableServer::ObjectId &
+ )
+ {
+ CIAO_TRACE ("Session_Container::delete_servant_map");
+ }
+
+ CORBA::Object_ptr
+ Session_Container::get_home_objref (PortableServer::Servant)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Session_Container::get_home_objref");
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ CORBA::Object_ptr
+ Session_Container::generate_reference (const char *obj_id,
+ const char *repo_id,
+ Container::OA_Type t)
+ {
+ CIAO_TRACE ("Session_Container::generate_reference");
+
+ PortableServer::POA_ptr tmp = 0;
+
+ if (t == Container::Component)
+ {
+ tmp = this->component_poa_.in ();
+ }
+ else
+ {
+ tmp = this->facet_cons_poa_.in ();
+ }
+
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (obj_id);
+
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid.in ());
+
+ if (t == Container::Facet_Consumer)
+ {
+ //if (CIAO::debug_level () > 9)
+ // ACE_DEBUG ((LM_DEBUG, "STRING in container is %s\n",
+ // str.in ()));
+ }
+
+ CORBA::Object_var objref =
+ tmp->create_reference_with_id (oid.in (),
+ repo_id);
+
+ return objref._retn ();
+ }
+}
diff --git a/modules/CIAO/ciao/Container_Base.h b/modules/CIAO/ciao/Container_Base.h
new file mode 100644
index 00000000000..551a1670d5b
--- /dev/null
+++ b/modules/CIAO/ciao/Container_Base.h
@@ -0,0 +1,333 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Container_Base.h
+ *
+ * $Id$
+ *
+ * Header file for CIAO's container implementations
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_CONTAINER_BASE_H
+#define CIAO_CONTAINER_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/CCM_ContainerC.h"
+#include "ciao/Deployment_CoreC.h"
+#include "ciao/CIAO_Server_Export.h"
+
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/PortableServer/Servant_Base.h"
+
+#include "tao/ORB.h"
+
+#include "ace/Hash_Map_Manager_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ class Servant_Activator;
+ class Dynamic_Component_Servant_Base;
+ class Container_Impl;
+
+ /**
+ * @class Container
+ *
+ * @brief Common container interface definition.
+ *
+ * Perhaps we can use local interface to define these interfaces as
+ * we will also get reference counting automatically.
+ */
+ class CIAO_SERVER_Export Container
+ {
+ public:
+ enum OA_Type
+ {
+ Component,
+ Facet_Consumer
+ };
+
+ Container (CORBA::ORB_ptr o);
+ Container (CORBA::ORB_ptr o, Container_Impl *container_impl);
+
+ virtual ~Container (void) = 0;
+
+ /// Get component's POA.
+ /**
+ * This operation does *NOT* increase the reference count of the
+ * POA. Look at the const qualifier in the method.
+ */
+ PortableServer::POA_ptr the_POA (void) const;
+ PortableServer::POA_ptr the_facet_cons_POA (void) const;
+
+ /// Get a reference to the underlying ORB.
+ CORBA::ORB_ptr the_ORB (void) const;
+
+ /// Initialize the container with a name.
+ virtual int init (const char *name = 0,
+ const CORBA::PolicyList *more_policies = 0)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ /// Install a new home
+ virtual Components::CCMHome_ptr ciao_install_home (
+ const char *exe_dll_name,
+ const char *exe_entrypt,
+ const char *sv_dll_name,
+ const char *sv_entrypt,
+ const char *ins_name
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure)) = 0;
+
+ // Uninstall a servant for component or home.
+ virtual void ciao_uninstall_home (Components::CCMHome_ptr homeref)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ // Uninstall a servant for component.
+ virtual void uninstall_component (::Components::CCMObject_ptr objref,
+ PortableServer::ObjectId_out oid)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ // @@Jai, please see the Session Container class for comments.
+ // @@ Jai, do you really need the environment variable?
+ virtual void add_servant_map (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant) = 0;
+
+ virtual void delete_servant_map (PortableServer::ObjectId &oid) = 0;
+
+ virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ protected:
+ /// Reference to the ORB
+ CORBA::ORB_var orb_;
+
+ /// POA within which all the components in this container will be
+ /// activated.
+ PortableServer::POA_var component_poa_;
+
+ /// POA within which all the facets and receptacles will be
+ /// activated.
+ /**
+ * Having two POA's allows us to associate different policies that
+ * are distinct from the component.
+ */
+ PortableServer::POA_var facet_cons_poa_;
+
+ PortableServer::POA_var home_servant_poa_;
+ Container_Impl *container_impl_;
+ private:
+ /// Not allowed to be used
+ Container (void);
+ };
+
+ class Session_Container;
+
+ typedef ::Components::HomeExecutorBase_ptr (*HomeFactory) (void);
+ typedef ::PortableServer::Servant (*ServantFactory)
+ (::Components::HomeExecutorBase_ptr p,
+ ::CIAO::Session_Container *c,
+ const char *ins_name
+#if !defined (TAO_HAS_EXCEPTIONS) || defined (ACE_ENV_BKWD_COMPAT)
+ , CORBA::Environment &
+#endif
+ );
+
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ HomeFactory,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> HOMECREATOR_FUNCPTR_MAP;
+
+ typedef ACE_Hash_Map_Manager_Ex<ACE_CString,
+ ServantFactory,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> HOMESERVANTCREATOR_FUNCPTR_MAP;
+
+ struct Static_Config_EntryPoints_Maps
+ {
+ /// Map of home creator entry point name and func ptr
+ HOMECREATOR_FUNCPTR_MAP* home_creator_funcptr_map_;
+
+ /// Map of home servant creator entry point name and func ptr
+ HOMESERVANTCREATOR_FUNCPTR_MAP* home_servant_creator_funcptr_map_;
+ };
+
+ class CIAO_SERVER_Export Session_Container : public Container
+ {
+ public:
+ Session_Container (CORBA::ORB_ptr o,
+ Container_Impl *container_impl,
+ bool static_config_flag = false,
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps =0);
+
+ virtual ~Session_Container (void);
+
+ /// Initialize the container with a name.
+ virtual int init (const char *name = 0,
+ const CORBA::PolicyList *more_policies = 0)
+
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /**
+ * @brief Simply installing a home executor into the component.
+ *
+ * This operation install a home executor into the component. It
+ * requires the name of the DLLs to executor and the servant glue
+ * code, and the entry points to the respective DLLs. Currently,
+ * we don't try to manage the lifetime of DLL objects, but we
+ * should at some later point.
+ *
+ * @retval Home objref of the installed home.
+ */
+ virtual Components::CCMHome_ptr ciao_install_home (
+ const char *exe_dll_name,
+ const char *exe_entrypt,
+ const char *sv_dll_name,
+ const char *sv_entrypt,
+ const char *ins_name
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Deployment::UnknownImplId,
+ Deployment::ImplEntryPointNotFound,
+ Deployment::InstallationFailure));
+
+ /// Uninstall a servant for component or home.
+ virtual void ciao_uninstall_home (Components::CCMHome_ptr homeref)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Uninstall a servant for component.
+ virtual void uninstall_component (::Components::CCMObject_ptr objref,
+ PortableServer::ObjectId_out oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Install a servant for component or home.
+ virtual CORBA::Object_ptr install_servant (PortableServer::Servant p,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Install a component servant.
+ CORBA::Object_ptr install_component (PortableServer::Servant p,
+ PortableServer::ObjectId_out oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Get an object reference to a component or home from the servant.
+ virtual CORBA::Object_ptr get_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Uninstall a servant for component or home.
+ void uninstall (CORBA::Object_ptr objref,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Uninstall a servant for component or home.
+ void uninstall (PortableServer::Servant svt,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // @@Jai, please consider naming this method as
+ // "add_servant_to_map ()" to be more descriptive.
+ virtual void add_servant_map (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant);
+
+ // @@Jai, please consider naming this method as
+ // "delete_servant_from_map ()" to be more descriptive.
+ virtual void delete_servant_map (PortableServer::ObjectId &oid);
+
+ // @@Jai, could yo please add documentation?
+ /*
+ * @@Jai, you may want to consider moving these away from the
+ * container interface. I know what you are going to say
+ * :-). Consider using dynamic_cast <> to access
+ * add_servant_to_map, delete_servant_from_map and
+ * deactivate_facet from the Swapping_Conatiner's interface. It
+ * would make the base container interface much cleaner.
+ */
+ virtual void deactivate_facet (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Analog of the POA method that creates an object reference from
+ /// an object id string.
+ CORBA::Object_ptr generate_reference (const char *obj_id,
+ const char *repo_id,
+ Container::OA_Type t);
+
+ /// Return the servant activator factory that activates the
+ /// servants for facets and consumers.
+ Servant_Activator *ports_servant_activator (void) const;
+
+ private:
+
+ /// Create POA for the component.
+ /**
+ * This is the POA that is returned to the component applications
+ * if they need one.
+ */
+ void create_component_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root);
+
+ /// Create POA for the facets and consumers alone.
+ void create_facet_consumer_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root);
+
+ /// Not allowed to be
+ Session_Container (void);
+
+ protected:
+ unsigned long number_;
+
+ /// Static variable to store the highest number we have given out until
+ /// now
+ static ACE_Atomic_Op <ACE_SYNCH_MUTEX, unsigned long> serial_number_;
+
+ const bool static_config_flag_;
+ const Static_Config_EntryPoints_Maps* static_entrypts_maps_;
+
+ /// The servant activator factory used to activate facets and
+ /// consumer servants.
+ Servant_Activator *sa_;
+ };
+}
+
+// Macro for registration of an OBV factory in the generated
+// servant class. Similar to the macro for TAO in
+// tao/ValueType/ValueFactory.h but here we take advantage of
+// the fact that we have access to the current ORB indirectly
+// through the context and container.
+#define CIAO_REGISTER_OBV_FACTORY(FACTORY, VALUETYPE) \
+ { \
+ CORBA::ValueFactory factory = new FACTORY; \
+ CORBA::ORB_ptr orb = \
+ this->context_->_ciao_the_Container ()->the_ORB (); \
+ CORBA::ValueFactory prev_factory = \
+ orb->register_value_factory ( \
+ VALUETYPE::_tao_obv_static_repository_id (), \
+ factory); \
+ CORBA::remove_ref (prev_factory); \
+ CORBA::add_ref (factory); \
+ }
+
+#if defined (__ACE_INLINE__)
+# include "Container_Base.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONTAINER_BASE_H */
diff --git a/modules/CIAO/ciao/Container_Base.inl b/modules/CIAO/ciao/Container_Base.inl
new file mode 100644
index 00000000000..5d178c2024c
--- /dev/null
+++ b/modules/CIAO/ciao/Container_Base.inl
@@ -0,0 +1,14 @@
+// $Id$ -*- C++ -*-
+
+ACE_INLINE CORBA::Object_ptr
+CIAO::Session_Container::get_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->the_POA ()->servant_to_reference (p);
+}
+
+ACE_INLINE CIAO::Servant_Activator *
+CIAO::Session_Container::ports_servant_activator (void) const
+{
+ return this->sa_;
+}
diff --git a/modules/CIAO/ciao/Context_Impl_Base.cpp b/modules/CIAO/ciao/Context_Impl_Base.cpp
new file mode 100644
index 00000000000..9c377124e60
--- /dev/null
+++ b/modules/CIAO/ciao/Context_Impl_Base.cpp
@@ -0,0 +1,98 @@
+// $Id$
+
+#include "Context_Impl_Base.h"
+
+namespace CIAO
+{
+ Context_Impl_Base::Context_Impl_Base (void)
+ {
+ ACE_ASSERT (0);
+ }
+
+ Context_Impl_Base::Context_Impl_Base (Components::CCMHome_ptr home,
+ Session_Container * c)
+ : home_ (Components::CCMHome::_duplicate (home)),
+ container_ (c)
+ {
+ }
+
+ Context_Impl_Base::~Context_Impl_Base (void)
+ {
+ }
+
+ // Operations from ::Components::CCMContext.
+
+ Components::Principal_ptr
+ Context_Impl_Base::get_caller_principal (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ Components::Principal::_nil ());
+ }
+
+ Components::CCMHome_ptr
+ Context_Impl_Base::get_CCM_home (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return Components::CCMHome::_duplicate (this->home_.in ());
+ }
+
+ CORBA::Boolean
+ Context_Impl_Base::get_rollback_only (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), false);
+ }
+
+ Components::Transaction::UserTransaction_ptr
+ Context_Impl_Base::get_user_transaction (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ Components::Transaction::UserTransaction::_nil ());
+ }
+
+ CORBA::Boolean
+ Context_Impl_Base::is_caller_in_role (
+ const char * /* role */
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), false);
+ }
+
+ void
+ Context_Impl_Base::set_rollback_only (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+ {
+ throw CORBA::NO_IMPLEMENT ();
+ }
+
+ // CIAO-specific.
+
+ CIAO::Session_Container *
+ Context_Impl_Base::_ciao_the_Container (void) const
+ {
+ return this->container_;
+ }
+
+ const char *
+ Context_Impl_Base::_ciao_instance_id (void) const
+ {
+ return this->ciao_instance_id_.in ();
+ }
+
+ void
+ Context_Impl_Base::_ciao_instance_id (const char *instance_id)
+ {
+ this->ciao_instance_id_ = instance_id;
+ }
+}
diff --git a/modules/CIAO/ciao/Context_Impl_Base.h b/modules/CIAO/ciao/Context_Impl_Base.h
new file mode 100644
index 00000000000..189a9f3aba2
--- /dev/null
+++ b/modules/CIAO/ciao/Context_Impl_Base.h
@@ -0,0 +1,116 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Context_Impl_Base.h
+ *
+ * $Id$
+ *
+ * This file contains the non-template declaration of a base class for
+ * the template mixin for the generated context class.
+ *
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_CONTEXT_IMPL_BASE_H
+#define CIAO_CONTEXT_IMPL_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "CIAO_Server_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/CCM_ContainerC.h"
+#include "tao/Objref_VarOut_T.h"
+
+namespace Components
+{
+ class CCMHome;
+ typedef CCMHome *CCMHome_ptr;
+
+ typedef
+ TAO_Objref_Var_T<
+ CCMHome
+ >
+ CCMHome_var;
+}
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Context_Impl_Base
+ *
+ * @brief Non-template base class for Context_Impl.
+ *
+ * Holds the non-template parts of its child class
+ * Context_Impl.
+ */
+ class CIAO_SERVER_Export Context_Impl_Base
+ : public virtual Components::CCMContext
+ {
+ public:
+ /// @todo This constructor should be declarated private but it seems
+ /// the compilers want it, have to sort this out in detail.
+ Context_Impl_Base (void);
+
+ Context_Impl_Base (Components::CCMHome_ptr home,
+ Session_Container * c);
+
+ virtual ~Context_Impl_Base (void);
+
+ // Operations from ::Components::CCMContext.
+
+ virtual Components::Principal_ptr
+ get_caller_principal ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual Components::CCMHome_ptr
+ get_CCM_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean
+ get_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ virtual Components::Transaction::UserTransaction_ptr
+ get_user_transaction ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ virtual CORBA::Boolean
+ is_caller_in_role (const char *role)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ set_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ // CIAO-specific.
+
+ CIAO::Session_Container *_ciao_the_Container (void) const;
+
+ // Accessors for the private member.
+ const char *_ciao_instance_id (void) const;
+ void _ciao_instance_id (const char *instance_id);
+
+ protected:
+ Components::CCMHome_var home_;
+ Session_Container *container_;
+
+ private:
+ CORBA::String_var ciao_instance_id_;
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONTEXT_IMPL_BASE_H */
diff --git a/modules/CIAO/ciao/Context_Impl_T.cpp b/modules/CIAO/ciao/Context_Impl_T.cpp
new file mode 100644
index 00000000000..94bc0ac65eb
--- /dev/null
+++ b/modules/CIAO/ciao/Context_Impl_T.cpp
@@ -0,0 +1,72 @@
+// $Id$
+
+#ifndef CIAO_CONTEXT_IMPL_T_C
+#define CIAO_CONTEXT_IMPL_T_C
+
+#include "Context_Impl_T.h"
+
+namespace CIAO
+{
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::Context_Impl (
+ Components::CCMHome_ptr home,
+ Session_Container *c,
+ SVNT *sv)
+ : Context_Impl_Base (home, c),
+ servant_ (sv)
+ {
+ }
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::~Context_Impl (void)
+ {
+ }
+
+ // Operations from ::Components::SessionContext.
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ CORBA::Object_ptr
+ Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::get_CCM_object (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+ {
+ if (CORBA::is_nil (this->component_.in ()))
+ {
+ CORBA::Object_var obj;
+
+ try
+ {
+ obj =
+ this->container_->get_objref (this->servant_);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Caught Exception \n");
+ return CORBA::Object::_nil ();
+ }
+
+
+ this->component_ = COMP::_narrow (obj.in ());
+
+ if (CORBA::is_nil (this->component_.in ()))
+ {
+ ACE_THROW_RETURN (CORBA::INTERNAL (),
+ CORBA::Object::_nil ());
+ }
+ }
+
+ return COMP::_duplicate (this->component_.in ());
+ }
+}
+
+#endif /* CIAO_CONTEXT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Context_Impl_T.h b/modules/CIAO/ciao/Context_Impl_T.h
new file mode 100644
index 00000000000..a9918af0d36
--- /dev/null
+++ b/modules/CIAO/ciao/Context_Impl_T.h
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Context_Impl_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated context class.
+ *
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_CONTEXT_IMPL_T_H
+#define CIAO_CONTEXT_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "Context_Impl_Base.h"
+#include "tao/LocalObject.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+namespace CORBA
+{
+ class SystemException;
+}
+
+namespace SecurityLevel2
+{
+ class Credentials;
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+namespace Components
+{
+ typedef SecurityLevel2::Credentials Principal;
+ typedef Principal *Principal_ptr;
+
+ class IllegalState;
+
+ namespace Transaction
+ {
+ class UserTransaction;
+ typedef UserTransaction *UserTransaction_ptr;
+ }
+}
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Context_Impl
+ *
+ * @brief Mixin base class for generated context.
+ *
+ * This class implements operations and contains parameterized
+ * members common to all generated servants.
+ */
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ class Context_Impl : public virtual BASE_CTX,
+ public virtual Context_Impl_Base,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Context_Impl (Components::CCMHome_ptr home,
+ Session_Container *c,
+ SVNT *sv);
+
+ virtual ~Context_Impl (void);
+
+ // Operations from ::Components::SessionContext.
+
+ virtual CORBA::Object_ptr
+ get_CCM_object ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ protected:
+ SVNT *servant_;
+ COMP_VAR component_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Context_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Context_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONTEXT_IMPL_T_H */
diff --git a/modules/CIAO/ciao/Cookies.cpp b/modules/CIAO/ciao/Cookies.cpp
new file mode 100644
index 00000000000..74d02a3cd18
--- /dev/null
+++ b/modules/CIAO/ciao/Cookies.cpp
@@ -0,0 +1,72 @@
+// $Id$
+#include "Cookies.h"
+
+#if !defined (__ACE_INLINE__)
+#include "Cookies.inl"
+#endif /* !defined INLINE */
+
+ACE_RCSID (ciao,
+ Cookies,
+ "$Id$")
+
+namespace CIAO
+{
+ Map_Key_Cookie::Map_Key_Cookie (const ACE_Active_Map_Manager_Key &key)
+ {
+ this->cookieValue ().length (ACE_Active_Map_Manager_Key::size ());
+ key.encode (this->cookieValue ().get_buffer (0));
+ }
+
+ Map_Key_Cookie::~Map_Key_Cookie (void)
+ {
+ }
+
+ bool
+ Map_Key_Cookie::insert (ACE_Active_Map_Manager_Key &key)
+ {
+ this->cookieValue ().length (ACE_Active_Map_Manager_Key::size ());
+ key.encode (this->cookieValue ().get_buffer (0));
+ return true;
+ }
+
+ bool
+ Map_Key_Cookie::extract (::Components::Cookie *ck,
+ ACE_Active_Map_Manager_Key &key)
+ {
+ Map_Key_Cookie *c =
+ dynamic_cast <Map_Key_Cookie *> (ck);
+
+ if (c == 0)
+ return false;
+
+ ::CORBA::OctetSeq *x = c->get_cookie ();
+
+ if (x->length () != ACE_Active_Map_Manager_Key::size ())
+ return false;
+
+ key.decode (x->get_buffer ());
+
+ return true;
+ }
+
+ ::CORBA::OctetSeq *
+ Map_Key_Cookie::get_cookie (void)
+ {
+ return &this->cookieValue ();
+ }
+
+ //========================================================
+ CORBA::ValueBase *
+ Map_Key_Cookie_init::create_for_unmarshal ()
+ {
+ CORBA::ValueBase *ret_val = 0;
+
+ ACE_NEW_THROW_EX (ret_val,
+ CIAO::Map_Key_Cookie,
+ CORBA::NO_MEMORY ());
+
+ return ret_val;
+ }
+
+
+}
diff --git a/modules/CIAO/ciao/Cookies.h b/modules/CIAO/ciao/Cookies.h
new file mode 100644
index 00000000000..72cad6f5744
--- /dev/null
+++ b/modules/CIAO/ciao/Cookies.h
@@ -0,0 +1,73 @@
+// $Id$
+
+/**
+ * @file Cookies.h
+ *
+ * A CIAO implementation of Cookie valuetype.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef CIAO_COOKIES_H
+#define CIAO_COOKIES_H
+#include /**/ "ace/pre.h"
+
+#include "CCM_CookieC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Container_Export.h"
+#include "ace/Active_Map_Manager.h"
+
+namespace CIAO
+{
+ /**
+ * @class Map_Key_Cookie
+ *
+ * @brief A internal cookie valuetype implementation.
+ */
+ class CIAO_CONTAINER_Export Map_Key_Cookie
+ : public virtual OBV_Components::Cookie
+ {
+ public:
+ Map_Key_Cookie (void);
+
+ virtual ~Map_Key_Cookie (void);
+
+ /// Initialize a @c Cookie with an @c ACE_Active_Map_Manager_Key
+ Map_Key_Cookie (const ACE_Active_Map_Manager_Key &key);
+
+ /// Insert the @c ACE_Active_Map_Manager_Key
+ bool insert (ACE_Active_Map_Manager_Key &key);
+
+ /// Operation on the valuetype
+ CORBA::OctetSeq * get_cookie (void);
+
+ /// Extract the @c ACE_Active_Map_Manager_Key
+ static bool extract (::Components::Cookie *c,
+ ACE_Active_Map_Manager_Key &key);
+ };
+
+ /**
+ * @class Map_Key_Cookie_init
+ *
+ * @brief Valuefactory implementation for Cookies.
+ */
+ class CIAO_CONTAINER_Export Map_Key_Cookie_init :
+ public virtual ::Components::Cookie_init
+ {
+ public:
+ virtual ~Map_Key_Cookie_init (void);
+
+ virtual CORBA::ValueBase *create_for_unmarshal ();
+ };
+}
+
+#if defined (__ACE_INLINE__)
+#include "Cookies.inl"
+#endif /* !defined INLINE */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_COOKIES_H */
diff --git a/modules/CIAO/ciao/Cookies.inl b/modules/CIAO/ciao/Cookies.inl
new file mode 100644
index 00000000000..e4d89f595c7
--- /dev/null
+++ b/modules/CIAO/ciao/Cookies.inl
@@ -0,0 +1,16 @@
+/* -*- C++ -*- */
+// $Id$
+
+namespace CIAO
+{
+ ACE_INLINE
+ Map_Key_Cookie::Map_Key_Cookie (void)
+ {
+ }
+
+ // ========================================
+ ACE_INLINE
+ Map_Key_Cookie_init::~Map_Key_Cookie_init ()
+ {
+ }
+}
diff --git a/modules/CIAO/ciao/CosPersistentState.idl b/modules/CIAO/ciao/CosPersistentState.idl
new file mode 100644
index 00000000000..a5211d071aa
--- /dev/null
+++ b/modules/CIAO/ciao/CosPersistentState.idl
@@ -0,0 +1,24 @@
+// $Id$
+
+/**
+ * @@ This is just a temporary file. Since TAO does not have
+ * CosPersistentState at all, we use this file to define
+ * types necessary to get ComponentBase.idl to compile.
+ *
+ * Compile with
+ * tao_idl -Gv CosPersistentState.idl
+ */
+
+#if !defined (CIAO_COSPERSISTENTSTATE_PIDL)
+#define CIAO_COSPERSISTENTSTATE_PIDL
+
+module CosPersistentState {
+
+ local interface CatalogBase
+ {
+ };
+
+ typedef sequence<octet> _TypeId;
+ typedef string Pid;
+};
+#endif /* CIAO_COSPERSISTENTSTATE_PIDL */
diff --git a/modules/CIAO/ciao/Deployment.idl b/modules/CIAO/ciao/Deployment.idl
new file mode 100644
index 00000000000..793c44fc853
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment.idl
@@ -0,0 +1,36 @@
+// $Id$
+
+#ifndef DEPLOYMENT_IDL
+#define DEPLOYMENT_IDL
+
+#include "ciao/Deployment_Packaging_Data.idl"
+#include "ciao/Deployment_Target_Data.idl"
+
+module Deployment {
+
+ exception InvalidProperty {
+ string name;
+ string reason;
+ };
+
+ exception NoSuchName {
+ };
+
+ exception InvalidReference {
+ };
+
+ /// Below exception types are CIAO specific
+ exception PlanNotExist {
+ };
+
+ /// CIAO specific struct type used for shared component management
+ /// mapping the name of component to its plan_uuid
+ struct ComponentPlan
+ {
+ string name;
+ string plan_uuid;
+ };
+ typedef sequence < ComponentPlan > ComponentPlans;
+};
+
+#endif /* DEPLOYMENT_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Application.idl b/modules/CIAO/ciao/Deployment_Application.idl
new file mode 100644
index 00000000000..df03887cf7d
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Application.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+#if !defined (DEPLOYMENT_APPLICATION_IDL)
+#define DEPLOYMENT_APPLICATION_IDL
+
+#include "ciao/Deployment_Connection.idl"
+
+module Deployment
+{
+ exception StartError
+ {
+ string name;
+ string reason;
+ };
+
+ exception InvalidConnection
+ {
+ string name;
+ string reason;
+ };
+
+ interface Application
+ {
+ void finishLaunch (in Connections providedReference,
+ in boolean start,
+ in boolean is_ReDAC)
+ raises (StartError, InvalidConnection);
+ void start ()
+ raises (StartError);
+ };
+ typedef sequence < Application > Applications;
+};
+
+#endif /* DEPLOYMENT_APPLICATION_IDL */
diff --git a/modules/CIAO/ciao/Deployment_ApplicationManager.idl b/modules/CIAO/ciao/Deployment_ApplicationManager.idl
new file mode 100644
index 00000000000..98fe247f2f9
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_ApplicationManager.idl
@@ -0,0 +1,28 @@
+// $Id$
+#ifndef DEPLOYMENT_APPLICATIONMANAGER_IDL
+#define DEPLOYMENT_APPLICATIONMANAGER_IDL
+
+#include "ciao/Deployment_Core.idl"
+#include "ciao/Deployment.idl"
+
+module Deployment {
+ exception ResourceNotAvailable {
+ string name;
+ string resourceType;
+ string propertyName;
+ string elementName;
+ string resourceName;
+ };
+
+ interface ApplicationManager {
+ /// @todo Spec mentions another few exceptions in the raises cluase
+ Application startLaunch (in Properties configProperty,
+ out Connections providedReference,
+ in boolean start)
+ raises (ResourceNotAvailable, StartError, InvalidProperty);
+ void destroyApplication (in Application app)
+ raises (StopError);
+ };
+};
+
+#endif /* DEPLOYMENT_APPLICATIONMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Base.idl b/modules/CIAO/ciao/Deployment_Base.idl
new file mode 100644
index 00000000000..cb98f5d05b6
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Base.idl
@@ -0,0 +1,40 @@
+//$Id$
+
+#ifndef DEPLOYMENT_BASE_IDL
+#define DEPLOYMENT_BASE_IDL
+
+module Deployment {
+
+ struct Property
+ {
+ string name;
+ any value;
+ };
+ typedef sequence < Property > Properties;
+
+ struct Requirement {
+ string resourceType;
+ string name;
+ Properties property;
+ };
+ typedef sequence < Requirement > Requirements;
+
+ enum SatisfierPropertyKind {
+ Quantity,
+ Capacity,
+ Minimum,
+ Maximum,
+ _Attribute,
+ Selection
+ };
+
+ struct SatisfierProperty {
+ string name;
+ SatisfierPropertyKind kind;
+ boolean dynamic;
+ any value;
+ };
+ typedef sequence < SatisfierProperty > SatisfierProperties;
+};
+
+#endif /* DEPLOYMENT_BASE_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Connection.idl b/modules/CIAO/ciao/Deployment_Connection.idl
new file mode 100644
index 00000000000..769c331a748
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Connection.idl
@@ -0,0 +1,43 @@
+// $Id$
+
+#if !defined (DEPLOYMENT_CONNECTION_IDL)
+#define DEPLOYMENT_CONNECTION_IDL
+
+#include "ciao/Deployment_DeploymentPlan.idl"
+#include <ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl>
+
+// *************** Packaging and Deployment ***************
+module Deployment
+{
+ typedef sequence < Object > Endpoints;
+ //typedef Object Endpoint;
+
+ // CIAO's specific <Connection> type defition.
+ // To avoid the connection info in the plan being passed to the
+ // local node and to make the implementation not very cumbersome
+ // I changed the connection struct to include some extra informations.
+ struct Connection
+ {
+ string instanceName;
+ string portName;
+ CCMComponentPortKind kind;
+
+ string endpointInstanceName; // CIAO specific extension
+ string endpointPortName; // CIAO specific extension
+
+ // the endpoints member is change to endpoint.
+ // Since we will not have more than 1 objref in there.
+ Object endpoint;
+
+ // A wrapper facade interface to provision different event
+ // communication mechanisms, including RTEC, etc.
+ CIAO::CIAO_Event_Service event_service;
+
+ // The properties of this connection, particularly useful
+ // to speicfy QoS properties of pub/sub service connections.
+ Properties config;
+ };
+
+ typedef sequence < Connection > Connections;
+};
+#endif /* DEPLOYMENT_CONNECTION_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Container.idl b/modules/CIAO/ciao/Deployment_Container.idl
new file mode 100644
index 00000000000..55ac0c7dfdd
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Container.idl
@@ -0,0 +1,93 @@
+// $Id$
+
+#if !defined (DEPLOYMENT_CONTAINER_IDL)
+#define DEPLOYMENT_CONTAINER_IDL
+
+#include "ciao/Deployment_Application.idl"
+#include "ciao/Deployment_Core.idl"
+
+// *************** Packaging and Deployment ***************
+module Deployment
+{
+ interface NodeApplication; // Forward decl.
+
+ /// CIAO specific
+ struct Component_Info
+ {
+ string component_instance_name;
+ Components::CCMObject component_ref;
+ };
+
+ /// CIAO specific
+ typedef sequence < Component_Info > ComponentInfos;
+
+ /// CIAO specific
+ struct ComponentImplementationInfo
+ {
+ string component_instance_name;
+ string executor_dll;
+ string executor_entrypt;
+ string servant_dll;
+ string servant_entrypt;
+ Properties component_config;
+ // Properties home_config; //ignored for now.
+ };
+
+ /// CIAO specific
+ typedef sequence <ComponentImplementationInfo> ComponentImplementationInfos;
+
+ // ContainerImplementationInfo contains a list of components to be installed and
+ // policy configuration for the container which hosts these components
+ /// CIAO specific
+ struct ContainerImplementationInfo
+ {
+ ComponentImplementationInfos impl_infos;
+ Properties container_config;
+ };
+
+ /// CIAO specific
+ typedef sequence <ContainerImplementationInfo> ContainerImplementationInfos;
+
+ /// CIAO specific interface, which could deal with installing multiple
+ /// containers into a single NodeApplication.
+ interface Container
+ {
+ readonly attribute ::Deployment::Properties properties;
+
+ /// Get the NodeApplication which created us
+ NodeApplication get_node_application ();
+
+ /// Initialize the container with policies
+ // long init (in ::CORBA::PolicyList policies);
+
+ // NW: The following should be component specific info because the
+ // container has already been created and initialized at this
+ // time. So there's not much container configuration to be done
+ // at this stage.
+ //@@ The container_impl_info will contain
+ //1 component instance name as the key.
+ //2 dll/so name of the exec
+ //3 entry point of the exec
+ //4 dll/so name of the svnt
+ //5 entry point of the svnt
+ //6 Poosible other configuration for container/home/component
+
+ /// Install all homes and components
+ Deployment::ComponentInfos install (in ContainerImplementationInfo container_impl_info)
+ raises (UnknownImplId,
+ ImplEntryPointNotFound,
+ InstallationFailure,
+ ::Components::InvalidConfiguration);
+
+ /// Remove all homes and components
+ void remove ()
+ raises (::Components::RemoveFailure);
+
+ /// Remove a component instance
+ void remove_component (in string inst_name)
+ raises (::Components::RemoveFailure);
+ };
+
+ typedef sequence<Container> Containers;
+};
+#endif /* DEPLOYMENT_CONTAINER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Core.idl b/modules/CIAO/ciao/Deployment_Core.idl
new file mode 100644
index 00000000000..fbaa5ea18c6
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Core.idl
@@ -0,0 +1,49 @@
+// $Id$
+
+#if !defined (DEPLOYMENT_CORE_IDL)
+#define DEPLOYMENT_CORE_IDL
+
+#include "ciao/CCM_Component.idl"
+#include "ciao/Deployment_TargetData.idl"
+#include "ciao/Deployment_Data.idl"
+#include "ciao/Deployment_Application.idl"
+
+// *************** Packaging and Deployment ***************
+module Deployment
+{
+ // Typeprefix Components "omg.org";
+ // OMG threw these things away, didn't it.
+
+ /// CIAO specific
+ exception UnknownImplId
+ {
+ string name;
+ string reason;
+ };
+
+ /// CIAO specific
+ exception InstallationFailure
+ {
+ string name;
+ string reason;
+ };
+
+ /// CIAO specific
+ exception ImplEntryPointNotFound
+ {
+ string name;
+ string reason;
+ };
+
+ /**
+ * The StopError exception is raised if a problem occurred while terminating
+ * an application, either during the terminate operation of the
+ * ApplicationManager or during the destroyManager operation of the
+ * ExecutionManager.
+ */
+ exception StopError {
+ string name;
+ string reason;
+ };
+};
+#endif /* DEPLOYMENT_CORE_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Data.idl b/modules/CIAO/ciao/Deployment_Data.idl
new file mode 100644
index 00000000000..0c296a815ba
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Data.idl
@@ -0,0 +1,40 @@
+// $Id$
+
+#ifndef DEPLOYMENT_DATA_IDL
+#define DEPLOYMENT_DATA_IDL
+
+#include "ciao/Deployment_DeploymentPlan.idl"
+
+module Deployment {
+
+ struct ComponentPackageReference {
+ string requiredUUID;
+ string requiredName;
+ string requiredType;
+ };
+
+ typedef sequence < ComponentPackageReference > ComponentPackageReferences;
+
+ typedef sequence < ResourceUsageKind > ResourceUsageKinds;
+
+ struct ImplementationRequirement {
+ ResourceUsageKinds resourceUsage;
+ string resourcePort;
+ string componentPort;
+ string resourceType;
+ string name;
+ Properties property;
+ };
+
+ typedef sequence < ImplementationRequirement > ImplementationRequirements;
+
+ struct Capability {
+ string name;
+ ::CORBA::StringSeq resourceType;
+ SatisfierProperties property;
+ };
+
+ typedef sequence < Capability > Capabilities;
+};
+
+#endif /* DEPLOYMENT_DATA_IDL */
diff --git a/modules/CIAO/ciao/Deployment_DeploymentPlan.idl b/modules/CIAO/ciao/Deployment_DeploymentPlan.idl
new file mode 100644
index 00000000000..e8dbde8ae2b
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_DeploymentPlan.idl
@@ -0,0 +1,192 @@
+// $Id$
+
+#ifndef DEPLOYMENT_DEPLOYMENTPLAN_IDL
+#define DEPLOYMENT_DEPLOYMENTPLAN_IDL
+
+#include "ciao/Deployment_Base.idl"
+#include "tao/StringSeq.pidl"
+#include "tao/ULongSeq.pidl"
+#include "tao/Typecode_types.pidl"
+
+module Deployment {
+
+ enum CCMComponentPortKind
+ {
+ Facet,
+ SimplexReceptacle,
+ MultiplexReceptacle,
+ EventEmitter,
+ EventPublisher,
+ EventConsumer
+ };
+
+ struct ComponentPortDescription {
+ string name;
+ string specificType;
+ ::CORBA::StringSeq supportedType;
+ boolean provider;
+ boolean exclusiveProvider;
+ boolean exclusiveUser;
+ boolean optional;
+ CCMComponentPortKind kind;
+ };
+
+ typedef sequence < ComponentPortDescription > ComponentPortDescriptions;
+
+ struct ComponentPropertyDescription {
+ string name;
+ CORBA::TypeCode type;
+ };
+
+ typedef sequence < ComponentPropertyDescription > ComponentPropertyDescriptions;
+
+ struct ComponentInterfaceDescription {
+ string label;
+ string UUID;
+ string specificType;
+ ::CORBA::StringSeq supportedType;
+ ::CORBA::StringSeq idlFile;
+ Properties configProperty;
+ ComponentPortDescriptions port;
+ ComponentPropertyDescriptions property;
+ Properties infoProperty;
+ };
+
+ struct MonolithicDeploymentDescription {
+ string name;
+ ::CORBA::StringSeq source;
+ ::CORBA::ULongSeq artifactRef;
+ Properties execParameter;
+ Requirements deployRequirement;
+ };
+
+ typedef sequence < MonolithicDeploymentDescription > MonolithicDeploymentDescriptions;
+
+ enum ResourceUsageKind {
+ None,
+ InstanceUsesResource,
+ ResourceUsesInstance,
+ PortUsesResource,
+ ResourceUsesPort
+ };
+
+ struct InstanceResourceDeploymentDescription {
+ ResourceUsageKind resourceUsage;
+ string requirementName;
+ string resourceName;
+ Properties property;
+ };
+
+ typedef sequence < InstanceResourceDeploymentDescription > InstanceResourceDeploymentDescriptions;
+
+ struct InstanceDeploymentDescription {
+ string name;
+ string node;
+ ::CORBA::StringSeq source;
+ unsigned long implementationRef;
+ Properties configProperty;
+ InstanceResourceDeploymentDescriptions deployedResource;
+ InstanceResourceDeploymentDescriptions deployedSharedResource;
+ };
+
+ typedef sequence < InstanceDeploymentDescription > InstanceDeploymentDescriptions;
+
+ struct ComponentExternalPortEndpoint {
+ string portName;
+ };
+
+ typedef sequence < ComponentExternalPortEndpoint > ComponentExternalPortEndpoints;
+
+ struct PlanSubcomponentPortEndpoint {
+ string portName;
+ boolean provider;
+ CCMComponentPortKind kind;
+ unsigned long instanceRef;
+ };
+
+ typedef sequence < PlanSubcomponentPortEndpoint > PlanSubcomponentPortEndpoints;
+
+ struct ExternalReferenceEndpoint {
+ string location;
+ };
+
+ typedef sequence < ExternalReferenceEndpoint > ExternalReferenceEndpoints;
+
+ struct ConnectionResourceDeploymentDescription {
+ string targetName;
+ string requirementName;
+ string resourceName;
+ Properties property;
+ };
+
+ typedef sequence < ConnectionResourceDeploymentDescription > ConnectionResourceDeploymentDescriptions;
+
+ struct PlanConnectionDescription {
+ string name;
+ ::CORBA::StringSeq source;
+ Requirements deployRequirement;
+ ComponentExternalPortEndpoints externalEndpoint;
+ PlanSubcomponentPortEndpoints internalEndpoint;
+ ExternalReferenceEndpoints externalReference;
+ ConnectionResourceDeploymentDescriptions deployedResource;
+ };
+
+ typedef sequence < PlanConnectionDescription > PlanConnectionDescriptions;
+
+ struct PlanSubcomponentPropertyReference {
+ string propertyName;
+ unsigned long instanceRef;
+ };
+
+ typedef sequence < PlanSubcomponentPropertyReference > PlanSubcomponentPropertyReferences;
+
+ struct PlanPropertyMapping {
+ string name;
+ ::CORBA::StringSeq source;
+ string externalName;
+ PlanSubcomponentPropertyReferences delegatesTo;
+ };
+
+ typedef sequence < PlanPropertyMapping > PlanPropertyMappings;
+
+ struct ImplementationDependency {
+ string requiredType;
+ };
+
+ typedef sequence < ImplementationDependency > ImplementationDependencies;
+
+ struct ResourceDeploymentDescription {
+ string requirementName;
+ string resourceName;
+ Properties property;
+ };
+
+ typedef sequence < ResourceDeploymentDescription > ResourceDeploymentDescriptions;
+
+ struct ArtifactDeploymentDescription {
+ string name;
+ ::CORBA::StringSeq location;
+ string node;
+ ::CORBA::StringSeq source;
+ Properties execParameter;
+ Requirements deployRequirement;
+ ResourceDeploymentDescriptions deployedResource;
+ };
+
+ typedef sequence < ArtifactDeploymentDescription > ArtifactDeploymentDescriptions;
+
+ struct DeploymentPlan {
+ string label;
+ string UUID;
+ ComponentInterfaceDescription realizes;
+ MonolithicDeploymentDescriptions implementation;
+ InstanceDeploymentDescriptions instance;
+ PlanConnectionDescriptions connection;
+ PlanPropertyMappings externalProperty;
+ ImplementationDependencies dependsOn;
+ ArtifactDeploymentDescriptions artifact;
+ Properties infoProperty;
+ };
+};
+
+#endif /* DEPLOYMENT_DATA_IDL */
diff --git a/modules/CIAO/ciao/Deployment_DomainApplicationManager.idl b/modules/CIAO/ciao/Deployment_DomainApplicationManager.idl
new file mode 100644
index 00000000000..65b7523959e
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_DomainApplicationManager.idl
@@ -0,0 +1,65 @@
+// $Id$
+#ifndef DOMAINAPPLICATIONMANAGER_IDL
+#define DOMAINAPPLICATIONMANAGER_IDL
+
+#include "ciao/Deployment.idl"
+#include "ciao/Deployment_NodeApplication.idl"
+#include "ciao/Deployment_ApplicationManager.idl"
+
+module Deployment {
+ /// CIAO 's DomainApplicationManager interface differs spec-defined interface
+ /// in the same that it also integrates the spec-defined interface for
+ /// DomainApplication into itself
+ /// This should be derived from ApplicationManager
+ interface DomainApplicationManager
+ {
+ DeploymentPlan getPlan ();
+
+ /// This method is missing from CIAO but in the spec
+ /// Applications getApplications ();
+
+ /// CIAO specific version of startLaunch implementation, this one
+ /// differs with spec-defined operation in the sense that it doesn't
+ /// return DomainApplication object reference.
+ void startLaunch (in Properties configProperty, in boolean start)
+ raises (ResourceNotAvailable, StartError, InvalidProperty);
+
+ /// This method has CIAO specific arguments and is not spec compliant
+ void finishLaunch (in boolean start,
+ in boolean is_ReDAC)
+ raises (StartError, InvalidConnection);
+
+ /// CIAO specific extension
+ void start ()
+ raises (StartError);
+
+ /// CIAO specific extention
+ /// Fetch NodeApplication based on the given node name
+ NodeApplication get_node_app (in string node_name)
+ raises (NoSuchName);
+
+ /// CIAO specific extension, it differs with the spec defined one
+ /// for no input parameter.
+ void destroyApplication ()
+ raises (StopError);
+
+ /// CIAO specific extension to destroy NodeApplicationManager
+ void destroyManager ()
+ raises (StopError);
+
+ /// CIAO specific extension
+ /// Perform the actual redeployment and reconfiguration on the dommain level.
+ void perform_redeployment (in DeploymentPlan new_plan)
+ raises (PlanError,
+ InstallationFailure,
+ UnknownImplId,
+ ImplEntryPointNotFound,
+ InvalidConnection,
+ InvalidProperty,
+ ::Components::RemoveFailure);
+ };
+
+ typedef sequence < DomainApplicationManager > DomainApplicationManagers;
+};
+
+#endif /* DOMAINAPPLICATIONMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Events.idl b/modules/CIAO/ciao/Deployment_Events.idl
new file mode 100644
index 00000000000..b0559dfe164
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Events.idl
@@ -0,0 +1,95 @@
+// $Id$
+
+/**
+ * @file Deployment_Events.idl
+ *
+ * @brief A collection of IDL data types for CIAO pub/sub services deployment.
+ *
+ * @author Gan Deng
+ */
+
+#if !defined (CIAO_DEPLOYMENT_EVENT_SERVICES_IDL)
+#define CIAO_DEPLOYMENT_EVENT_SERVICES_IDL
+
+#include "tao/StringSeq.pidl"
+
+// EventServiceType definition
+#include <ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl>
+
+module CIAO
+{
+ module DAnCE
+ {
+ /// Each element in the EventSourceSet denotes a event source id
+ typedef string EventSourceId;
+
+ typedef sequence<EventSourceId> EventSourceSet;
+
+ /// Event Filters
+ enum FilterType
+ {
+ CONJUNCTION,
+ DISJUNCTION,
+ LOGICAL_AND,
+ NEGATE
+ };
+
+ struct EventFilter
+ {
+ string name;
+ FilterType type;
+ EventSourceSet sources;
+ };
+ typedef sequence<EventFilter> EventFilters;
+
+ struct AddrServer
+ {
+ string name;
+ unsigned short port;
+ string address;
+ };
+ typedef sequence<AddrServer> AddrServers;
+
+ struct UDPSender
+ {
+ string name;
+ string addr_serv_id;
+ };
+ typedef sequence<UDPSender> UDPSenders;
+
+ struct UPDReceiver
+ {
+ string name;
+ string addr_serv_id;
+ boolean is_multicast;
+ unsigned short listen_port;
+ };
+ typedef sequence<UPDReceiver> UPDReceivers;
+/*
+ struct EventHandler
+ {
+ string name;
+ boolean is_multicast;
+ };
+ typedef sequence<EventHandler> EventHandlers;
+ */
+
+ /// CIAO specific extension to describe pub/sub services in the deployment
+ struct EventServiceDeploymentDescription
+ {
+ string name;
+ string node;
+ EventServiceType type;
+ string svc_cfg_file;
+
+ EventFilters filters;
+ AddrServers addr_servs;
+ UDPSenders senders;
+ UPDReceivers receivers;
+ };
+ typedef sequence < EventServiceDeploymentDescription >
+ EventServiceDeploymentDescriptions;
+ };
+};
+
+#endif /* CIAO_DEPLOYMENT_EVENT_SERVICES_IDL */
diff --git a/modules/CIAO/ciao/Deployment_ExecutionManager.idl b/modules/CIAO/ciao/Deployment_ExecutionManager.idl
new file mode 100644
index 00000000000..39c2ba6053b
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_ExecutionManager.idl
@@ -0,0 +1,52 @@
+// $Id$
+#ifndef EXECUTIONMANAGER_IDL
+#define EXECUTIONMANAGER_IDL
+
+#include "ciao/Deployment.idl"
+#include "ciao/Deployment_DomainApplicationManager.idl"
+
+module Deployment {
+ interface ExecutionManager {
+ /// @todo ResourceCommitmentManger is missing
+ DomainApplicationManager preparePlan (in DeploymentPlan plan,
+ in boolean commitResources)
+ raises (ResourceNotAvailable, PlanError, StartError);
+
+ DomainApplicationManagers getManagers ();
+
+ void destroyManager (in DomainApplicationManager manager)
+ raises (StopError);
+
+ /// CIAO Specific extension
+ DomainApplicationManager getManager (in string plan_uuid)
+ raises (PlanNotExist);
+
+ /// CIAO specific extention
+ /// Destroy ApplicationManagers by plan_uuid, the unique semantics of this
+ /// operation lies in the fact that if some components are
+ /// still up and running, then the ApplicationManagers won't be destroyed.
+ void destroyManagerByPlan (in string plan_uuid)
+ raises (StopError);
+
+ /// CIAO specific extention
+ /// "Get" operation, return the DeploymentPlan
+ DeploymentPlan getPlan (in string plan_uuid);
+
+ /// CIAO specific operation to handle dynamic system redeployment
+ /// and reconfiguration
+ /// This operation could handle dynamic redeployment, and this
+ /// is the operation exposed to clients directly. Other
+ /// "perform_redeployment" operation defined on DAM and NA
+ /// are implementaion details within DAnCE.
+ void perform_redeployment (in DeploymentPlan new_plan)
+ raises (PlanError,
+ InstallationFailure,
+ UnknownImplId,
+ ImplEntryPointNotFound,
+ InvalidConnection,
+ InvalidProperty,
+ ::Components::RemoveFailure);
+ };
+};
+
+#endif /* EXECUTIONMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_NodeApplication.idl b/modules/CIAO/ciao/Deployment_NodeApplication.idl
new file mode 100644
index 00000000000..7c0a0db93b7
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_NodeApplication.idl
@@ -0,0 +1,122 @@
+// $Id$
+
+#if !defined (DEPLOYMENT_NODEAPPLICATION_IDL)
+#define DEPLOYMENT_NODEAPPLICATION_IDL
+
+#include "Deployment_Application.idl"
+#include "Deployment_Core.idl"
+#include "Deployment_Container.idl"
+#include "Deployment_Events.idl"
+
+// *************** Packaging and Deployment ***************
+module Deployment
+{
+ /// CIAO specific extension
+ /// This struct captures the installation information of a particular
+ /// CIAO_Event_Service, as defined in <ciaosvcs/Events/CIAO_Events.idl>
+ struct ESInstallationInfo
+ {
+ string id;
+ CIAO::EventServiceType type;
+ string svcconf;
+ //Properties es_config;
+ };
+
+ /// CIAO specific
+ struct NodeImplementationInfo
+ {
+ ContainerImplementationInfos impl_infos;
+ Properties nodeapp_config;
+ };
+
+ /// CIAO specific
+ typedef sequence<CIAO::CIAO_Event_Service> CIAO_Event_Services;
+
+ /// CIAO specific extension
+ typedef sequence<ESInstallationInfo> ESInstallationInfos;
+
+ interface NodeApplication : Application
+ {
+ /// CIAO specific extensions
+ readonly attribute ::Deployment::Properties properties;
+
+ /// CIAO specific operation to handle dynamic system redeployment
+ /// and reconfiguration
+ /// @@ Initialize the nodeapplication, so it will know what
+ /// components it will create and home many of them are
+ /// there. However the real create action will take place when
+ /// start launch is called on NodeApplicationManager.
+ long init ();
+
+ /// @@ This operation will be called by NodeApplicationManager
+ /// client to really start to create homes and components.
+ /// CIAO specific extensions
+ ComponentInfos install (in NodeImplementationInfo node_impl_info)
+ raises (UnknownImplId,
+ ImplEntryPointNotFound,
+ InstallationFailure,
+ ::Components::InvalidConfiguration,
+ ::Components::RemoveFailure);
+
+ /// CIAO specific extension
+ /// This operation will create one or more CIAO_Event_Service objects
+ /// within the NodeApplication, which will be used to mediate the
+ /// communication of CCM events
+ CIAO::CIAO_Event_Service install_es (
+ in CIAO::DAnCE::EventServiceDeploymentDescription es_info)
+ raises (InstallationFailure);
+
+ /// CIAO specific extensions
+ ///@@ We know that Deployment::NodeApplicationManager will be returned,
+ /// however to avoid the size of the shared object of CIAO_Server.
+ /// we return an Object.
+ Object get_node_application_manager ();
+
+ /// CIAO specific extension
+ Container create_container (in ::Deployment::Properties properties)
+ raises (::Components::CreateFailure,
+ ::Components::InvalidConfiguration);
+
+ /// CIAO specific extension
+ void remove_container (in Container cref)
+ raises (::Components::RemoveFailure);
+
+ /// CIAO specific extension
+ Containers get_containers ();
+
+ /// CIAO specific extension
+ /// Remove a component instance from the NodeApplication
+ void remove_component (in string inst_name)
+ raises (::Components::RemoveFailure);
+
+ /// CIAO specific extensions
+ /// Activate a component instance from the NodeApplication
+ void activate_component (in string inst_name)
+ raises (::Deployment::StartError);
+
+ /// CIAO specific extensions
+ /// Passivate a component instance from the NodeApplication
+ void passivate_component (in string inst_name)
+ raises (::Components::RemoveFailure);
+
+ /// Remove all containers, components and component homes.
+ /// Shuts down the ORB of the NodeApplication to terminate the process.
+ oneway void remove ();
+
+ /// CIAO specific extension. This will enforce the component to
+ /// be activated (preactivate, activate, postactivated) before the assembly
+ /// is established
+ void ciao_preactivate ()
+ raises (StartError);
+
+ /// CIAO specific extension
+ void ciao_postactivate ()
+ raises (StartError);
+
+ /// CIAO specific extension
+ void ciao_passivate ()
+ raises (StopError);
+ };
+
+};
+#endif /* DEPLOYMENT_CORE_IDL */
diff --git a/modules/CIAO/ciao/Deployment_NodeApplicationManager.idl b/modules/CIAO/ciao/Deployment_NodeApplicationManager.idl
new file mode 100644
index 00000000000..32f3f0d21f9
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_NodeApplicationManager.idl
@@ -0,0 +1,58 @@
+// $Id$
+#ifndef NODEAPPLICATIONMANAGER_IDL
+#define NODEAPPLICATIONMANAGER_IDL
+
+#include "Deployment_Core.idl"
+#include "Deployment_ApplicationManager.idl"
+#include "Deployment.idl"
+
+module Deployment {
+ /**
+ * CIAO specific structure to carry the scheduling params
+ * to set the process, required by RACE
+ * @struct Sched_Params
+ * @brief Carries Scheduling Params
+ */
+ struct Sched_Params
+ {
+ long policy_;
+ long priority_;
+ long scope_;
+ long msec_;
+ };
+
+
+ interface NodeApplicationManager :
+ ApplicationManager
+ {
+ /// CIAO specific operation to handle dynamic system redeployment
+ /// and reconfiguration
+ /// This operation could handle dynamic redeployment for
+ /// a node-level deployment plan within a node
+ /// @param add_or_remove If true, we add new components only, vice vesa.
+ Application perform_redeployment (in Properties configProperty,
+ out Connections providedReference,
+ in boolean add_or_remove,
+ in boolean start)
+ raises (PlanError,
+ InstallationFailure,
+ UnknownImplId,
+ ImplEntryPointNotFound,
+ InvalidConnection,
+ InvalidProperty,
+ ::Components::RemoveFailure);
+
+ /// CIAO specific operation to reset deployment plan
+ void reset_plan (in DeploymentPlan plan);
+
+ /// CIAO specific operation to set the information of
+ /// "shared components" (through NodeManager)
+ void set_shared_components (in ComponentPlans components);
+
+ /// CIAO specific function to set priority
+ /// of component, required by RACE
+ long set_priority (in string cid , in Sched_Params params);
+ };
+};
+
+#endif /* NODEAPPLICATIONMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_NodeManager.idl b/modules/CIAO/ciao/Deployment_NodeManager.idl
new file mode 100644
index 00000000000..e6672764115
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_NodeManager.idl
@@ -0,0 +1,58 @@
+// $Id$
+#ifndef NODEMANAGER_IDL
+#define NODEMANAGER_IDL
+
+#include "ciao/Deployment.idl"
+#include "ciao/Deployment_Core.idl"
+#include "ciao/Deployment_TargetManager.idl"
+
+module Deployment {
+
+ interface Logger {
+ };
+
+ interface NodeApplicationManager;
+
+ interface NodeManager {
+ /*
+ * @todo 06-02-01 mentions a 4th argument:in long updateInterval
+ */
+ void joinDomain (in Domain ciao_domain,
+ in TargetManager manager,
+ in Logger log);
+
+ void leaveDomain ();
+
+ /*
+ * @todo According to 06-02-01 there should also be a ResourceCommitmentManager
+ * as second argument
+ */
+ NodeApplicationManager preparePlan (in DeploymentPlan plan)
+ raises (StartError, PlanError);
+
+ /*
+ * @todo According to 06-02-01 InvalidReference shouldn't be here
+ */
+ void destroyManager (in NodeApplicationManager appManager)
+ raises (StopError, InvalidReference);
+
+ /// CIAO specific extension
+ /// Destroy the NAM and all the associated NAs with this child_plan
+ /// We can guarantee that the input DeploymentPlan is valid, since it
+ /// is fetched from the cached DeploymentPlan of DAM, which has been
+ /// validated before.
+ void destroyPlan (in DeploymentPlan plan)
+ raises (StopError);
+
+ /// CIAO specific extension
+ /// Get all the shared components installed in this node
+ ComponentPlans get_shared_components ();
+
+ /*
+ * @todo According to 06-02-01 missing is:
+ * Resources getDynamicResources ();
+ */
+ };
+};
+
+#endif /* NODEMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Packaging_Data.idl b/modules/CIAO/ciao/Deployment_Packaging_Data.idl
new file mode 100644
index 00000000000..ed3d0feecb2
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Packaging_Data.idl
@@ -0,0 +1,160 @@
+// $Id$
+
+#ifndef PACKAGING_DATA_IDL
+#define PACKAGING_DATA_IDL
+
+#include "ciao/Deployment_Data.idl"
+
+module Deployment
+{
+ struct ComponentPackageImport {
+ ::CORBA::StringSeq location;
+ };
+
+ typedef sequence < ComponentPackageImport > ComponentPackageImports;
+
+ struct SubcomponentPropertyReference {
+ string propertyName;
+ unsigned long instanceRef;
+ };
+
+ struct SubcomponentPortEndpoint {
+ string portName;
+ unsigned long instanceRef;
+ };
+
+ typedef sequence < SubcomponentPortEndpoint > SubcomponentPortEndpoints;
+
+ typedef sequence < SubcomponentPropertyReference > SubcomponentPropertyReferences;
+
+ struct AssemblyPropertyMapping {
+ string name;
+ string externalName;
+ SubcomponentPropertyReferences delegatesTo;
+ };
+
+ typedef sequence < AssemblyPropertyMapping > AssemblyPropertyMappings;
+
+#ifndef AVOID_IFR_CRASH
+ struct NamedImplementationArtifact;
+
+ typedef sequence < NamedImplementationArtifact > NamedImplementationArtifacts;
+#endif /* AVOID_IFR_CRASH */
+
+ struct ImplementationArtifactDescription {
+ string label;
+ string UUID;
+ ::CORBA::StringSeq location;
+ Properties execParameter;
+ Requirements deployRequirement;
+#ifndef AVOID_IFR_CRASH
+ NamedImplementationArtifacts dependsOn;
+#endif /* AVOID_IFR_CRASH */
+ Properties infoProperty;
+ };
+
+ struct NamedImplementationArtifact {
+ string name;
+ ImplementationArtifactDescription referencedArtifact;
+ };
+
+ struct MonolithicImplementationDescription {
+ Properties nodeExecParameter;
+ Properties componentExecParameter;
+#ifndef AVOID_IFR_CRASH
+ NamedImplementationArtifacts primaryArtifact;
+#endif /* AVOID_IFR_CRASH */
+ ImplementationRequirements deployRequirement;
+ };
+
+ typedef sequence < MonolithicImplementationDescription > MonolithicImplementationDescriptions;
+
+#ifndef AVOID_IFR_CRASH
+ struct PackageConfiguration;
+
+ typedef sequence < PackageConfiguration > PackageConfigurations;
+
+ struct ComponentPackageDescription;
+
+ typedef sequence < ComponentPackageDescription > ComponentPackageDescriptions;
+#endif /* AVOID_IFR_CRASH */
+
+ struct SubcomponentInstantiationDescription {
+ string name;
+#ifndef AVOID_IFR_CRASH
+ ComponentPackageDescriptions basePackage;
+ PackageConfigurations specializedConfig;
+#endif /* AVOID_IFR_CRASH */
+ Requirements selectRequirement;
+ Properties configProperty;
+ ComponentPackageReferences referencedPackage;
+ ComponentPackageImports importedPackage;
+ };
+
+ typedef sequence < SubcomponentInstantiationDescription > SubcomponentInstantiationDescriptions;
+
+ struct AssemblyConnectionDescription {
+ string name;
+ Requirements deployRequirement;
+ ComponentExternalPortEndpoints externalEndpoint;
+ SubcomponentPortEndpoints internalEndpoint;
+ ExternalReferenceEndpoints externalReference;
+ };
+
+ typedef sequence < AssemblyConnectionDescription > AssemblyConnectionDescriptions;
+
+ struct ComponentAssemblyDescription {
+ SubcomponentInstantiationDescriptions instance;
+ AssemblyConnectionDescriptions connection;
+ AssemblyPropertyMappings externalProperty;
+ };
+
+ typedef sequence < ComponentAssemblyDescription > ComponentAssemblyDescriptions;
+
+ struct ComponentImplementationDescription {
+ string label;
+ string UUID;
+ ComponentInterfaceDescription implements;
+ ComponentAssemblyDescriptions assemblyImpl;
+ MonolithicImplementationDescriptions monolithicImpl;
+ Properties configProperty;
+ Capabilities capability;
+ ImplementationDependencies dependsOn;
+ Properties infoProperty;
+ };
+
+
+ struct PackagedComponentImplementation {
+ string name;
+ ComponentImplementationDescription referencedImplementation;
+ };
+
+
+ typedef sequence < PackagedComponentImplementation > PackagedComponentImplementations;
+
+ struct ComponentPackageDescription {
+ string label;
+ string UUID;
+ ComponentInterfaceDescription realizes;
+ Properties configProperty;
+ PackagedComponentImplementations implementation;
+ Properties infoProperty;
+ };
+
+
+ struct PackageConfiguration {
+ string label;
+ string UUID;
+#ifndef AVOID_IFR_CRASH
+ PackageConfigurations specializedConfig;
+ ComponentPackageDescriptions basePackage;
+#endif /* AVOID_IFR_CRASH */
+ ComponentPackageReferences reference;
+ Requirements selectRequirement;
+ Properties configProperty;
+ };
+
+
+};
+
+#endif /* PACKAGING_DATA_IDL */
diff --git a/modules/CIAO/ciao/Deployment_RepositoryManager.idl b/modules/CIAO/ciao/Deployment_RepositoryManager.idl
new file mode 100644
index 00000000000..539d2954416
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_RepositoryManager.idl
@@ -0,0 +1,40 @@
+// $Id$
+#ifndef REPOSITORY_MANAGER_IDL
+#define REPOSITORY_MANAGER_IDL
+
+#include "ciao/Deployment_Packaging_Data.idl"
+#include "ciao/Deployment.idl"
+
+module Deployment {
+
+ exception NameExists {
+ };
+
+ exception PackageError {
+ string source;
+ string reason;
+ };
+
+ interface RepositoryManager {
+ void installPackage (in string installationName,
+ in string location,
+ in boolean replace)
+ raises (NameExists, PackageError);
+ void createPackage (in string installationName,
+ in PackageConfiguration package,
+ in string baseLocation,
+ in boolean replace)
+ raises (NameExists, PackageError);
+ PackageConfiguration findPackageByName (in string name)
+ raises (NoSuchName);
+ PackageConfiguration findPackageByUUID (in string UUID)
+ raises (NoSuchName);
+ ::CORBA::StringSeq findNamesByType (in string type);
+ ::CORBA::StringSeq getAllNames ();
+ ::CORBA::StringSeq getAllTypes ();
+ void deletePackage (in string installationName)
+ raises (NoSuchName);
+ };
+};
+
+#endif /* REPOSITOR_MANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_TargetData.idl b/modules/CIAO/ciao/Deployment_TargetData.idl
new file mode 100644
index 00000000000..82cff14ca83
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_TargetData.idl
@@ -0,0 +1,64 @@
+//$Id$
+
+#ifndef DEPLOYMENT_TARGETDATA_IDL
+#define DEPLOYMENT_TARGETDATA_IDL
+
+#include "ciao/Deployment_Base.idl"
+#include "tao/StringSeq.pidl"
+#include "tao/ULongSeq.pidl"
+
+module Deployment {
+
+ struct Resource {
+ string name;
+ ::CORBA::StringSeq resourceType;
+ SatisfierProperties property;
+ };
+ typedef sequence < Resource > Resources;
+
+ struct SharedResource {
+ string name;
+ ::CORBA::StringSeq resourceType;
+ ::CORBA::ULongSeq nodeRef;
+ SatisfierProperties property;
+ };
+ typedef sequence < SharedResource > SharedResources;
+
+ struct Node {
+ string name;
+ string label;
+ ::CORBA::ULongSeq sharedResourceRef;
+ ::CORBA::ULongSeq connectionRef;
+ Resources resource;
+ };
+ typedef sequence < Node > Nodes;
+
+ struct Interconnect {
+ string name;
+ string label;
+ ::CORBA::ULongSeq connectionRef;
+ ::CORBA::ULongSeq connectRef;
+ Resources resource;
+ };
+ typedef sequence < Interconnect > Interconnects;
+
+ struct Bridge {
+ string name;
+ string label;
+ ::CORBA::ULongSeq connectRef;
+ Resources resource;
+ };
+ typedef sequence < Bridge > Bridges;
+
+ struct Domain {
+ string UUID;
+ string label;
+ SharedResources sharedResource;
+ Nodes node;
+ Interconnects interconnect;
+ Bridges bridge;
+ Properties infoProperty;
+ };
+};
+
+#endif /* DEPLOYMENT_TARGETDATA_IDL */
diff --git a/modules/CIAO/ciao/Deployment_TargetManager.idl b/modules/CIAO/ciao/Deployment_TargetManager.idl
new file mode 100644
index 00000000000..78723ab3b3d
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_TargetManager.idl
@@ -0,0 +1,40 @@
+// $Id$
+
+#ifndef TARGETMANAGER_IDL
+#define TARGETMANAGER_IDL
+
+#include "ciao/Deployment_Target_Data.idl"
+#include "ciao/Deployment_TargetData.idl"
+#include "ciao/Deployment_DeploymentPlan.idl"
+// Only needed for ResourceNotAvailable but that should go, so this include also
+#include "ciao/Deployment_ApplicationManager.idl"
+
+module Deployment {
+
+ /// @todo, UpdateAvailable is not in the spec, must be UpdateDynamic
+ enum DomainUpdateKind {
+ Add,
+ Delete,
+ UpdateAll,
+ UpdateAvailable
+ };
+
+ /**
+ * @todo The ResourceCommitmentManager is part of 06-04-01 and this is not
+ * part of the Target Manager yet
+ */
+ interface TargetManager {
+ Domain getAllResources ();
+ Domain getAvailableResources ();
+ /// @todo 06-04-01 specifies this differently
+ void commitResources (in DeploymentPlan plan)
+ raises (ResourceNotAvailable, PlanError);
+ /// @todo This is not part of 06-04-01
+ void releaseResources (in DeploymentPlan argname);
+ void updateDomain (in ::CORBA::StringSeq elements,
+ in Domain domainSubset,
+ in DomainUpdateKind updateKind);
+ };
+};
+
+#endif /* TARGETMANAGER_IDL */
diff --git a/modules/CIAO/ciao/Deployment_Target_Data.idl b/modules/CIAO/ciao/Deployment_Target_Data.idl
new file mode 100644
index 00000000000..0e08248972a
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_Target_Data.idl
@@ -0,0 +1,14 @@
+// $Id$
+
+#ifndef TARGET_DATA_IDL
+#define TARGET_DATA_IDL
+
+module Deployment {
+
+ exception PlanError {
+ string name;
+ string reason;
+ };
+};
+
+#endif /* TARGET_DATA_IDL */
diff --git a/modules/CIAO/ciao/Deployment_common.h b/modules/CIAO/ciao/Deployment_common.h
new file mode 100644
index 00000000000..725b6afd953
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_common.h
@@ -0,0 +1,54 @@
+// $Id$
+
+/**
+ * @file Deployment_common.h
+ *
+ * This file collects common type definitions used across different
+ * objects of DAnCE toolchain.
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+
+#ifndef DANCE_COMMON_H
+#define DANCE_COMMON_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined ACE_LACKS_PRAGMA_ONCE
+#pragma once
+#endif /* ! ACE_LACKS_PRAGMA_ONCE */
+
+/// A struct which captures the binding information about a component
+
+namespace CIAO
+{
+ /// A struct which captures the compnent binding information, which
+ /// is useful for inter-assembly connection setup
+ typedef struct _component_binding
+ {
+ _component_binding ()
+ {
+ providedReference_ = 0;
+ }
+
+ ACE_CString name_;
+ ACE_CString plan_uuid_;
+ ACE_CString node_;
+
+ Deployment::Connections_var providedReference_;
+
+ bool operator==(const struct _component_binding & comp)
+ {
+ if (this->name_ == comp.name_ &&
+ this->plan_uuid_ == comp.plan_uuid_ &&
+ this->node_ == comp.node_)
+ return true;
+ else
+ return false;
+ }
+ } Component_Binding_Info;
+}
+
+#include /**/ "ace/post.h"
+#endif /* DANCE_COMMON_H */
diff --git a/modules/CIAO/ciao/Deployment_stub_export.h b/modules/CIAO/ciao/Deployment_stub_export.h
new file mode 100644
index 00000000000..12985a68b5b
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s Deployment_stub
+// ------------------------------
+#ifndef DEPLOYMENT_STUB_EXPORT_H
+#define DEPLOYMENT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DEPLOYMENT_STUB_HAS_DLL)
+# define DEPLOYMENT_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DEPLOYMENT_STUB_HAS_DLL */
+
+#if !defined (DEPLOYMENT_STUB_HAS_DLL)
+# define DEPLOYMENT_STUB_HAS_DLL 1
+#endif /* ! DEPLOYMENT_STUB_HAS_DLL */
+
+#if defined (DEPLOYMENT_STUB_HAS_DLL) && (DEPLOYMENT_STUB_HAS_DLL == 1)
+# if defined (DEPLOYMENT_STUB_BUILD_DLL)
+# define Deployment_stub_Export ACE_Proper_Export_Flag
+# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DEPLOYMENT_STUB_BUILD_DLL */
+# define Deployment_stub_Export ACE_Proper_Import_Flag
+# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DEPLOYMENT_STUB_BUILD_DLL */
+#else /* DEPLOYMENT_STUB_HAS_DLL == 1 */
+# define Deployment_stub_Export
+# define DEPLOYMENT_STUB_SINGLETON_DECLARATION(T)
+# define DEPLOYMENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DEPLOYMENT_STUB_HAS_DLL == 1 */
+
+// Set DEPLOYMENT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DEPLOYMENT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DEPLOYMENT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DEPLOYMENT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DEPLOYMENT_STUB_NTRACE */
+
+#if (DEPLOYMENT_STUB_NTRACE == 1)
+# define DEPLOYMENT_STUB_TRACE(X)
+#else /* (DEPLOYMENT_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DEPLOYMENT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DEPLOYMENT_STUB_NTRACE == 1) */
+
+#endif /* DEPLOYMENT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciao/Deployment_svnt_export.h b/modules/CIAO/ciao/Deployment_svnt_export.h
new file mode 100644
index 00000000000..e403dbf0c41
--- /dev/null
+++ b/modules/CIAO/ciao/Deployment_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s Deployment_svnt
+// ------------------------------
+#ifndef DEPLOYMENT_SVNT_EXPORT_H
+#define DEPLOYMENT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DEPLOYMENT_SVNT_HAS_DLL)
+# define DEPLOYMENT_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DEPLOYMENT_SVNT_HAS_DLL */
+
+#if !defined (DEPLOYMENT_SVNT_HAS_DLL)
+# define DEPLOYMENT_SVNT_HAS_DLL 1
+#endif /* ! DEPLOYMENT_SVNT_HAS_DLL */
+
+#if defined (DEPLOYMENT_SVNT_HAS_DLL) && (DEPLOYMENT_SVNT_HAS_DLL == 1)
+# if defined (DEPLOYMENT_SVNT_BUILD_DLL)
+# define Deployment_svnt_Export ACE_Proper_Export_Flag
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DEPLOYMENT_SVNT_BUILD_DLL */
+# define Deployment_svnt_Export ACE_Proper_Import_Flag
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DEPLOYMENT_SVNT_BUILD_DLL */
+#else /* DEPLOYMENT_SVNT_HAS_DLL == 1 */
+# define Deployment_svnt_Export
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARATION(T)
+# define DEPLOYMENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DEPLOYMENT_SVNT_HAS_DLL == 1 */
+
+// Set DEPLOYMENT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DEPLOYMENT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DEPLOYMENT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DEPLOYMENT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DEPLOYMENT_SVNT_NTRACE */
+
+#if (DEPLOYMENT_SVNT_NTRACE == 1)
+# define DEPLOYMENT_SVNT_TRACE(X)
+#else /* (DEPLOYMENT_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DEPLOYMENT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DEPLOYMENT_SVNT_NTRACE == 1) */
+
+#endif /* DEPLOYMENT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciao/Dynamic_Component_Activator.cpp b/modules/CIAO/ciao/Dynamic_Component_Activator.cpp
new file mode 100644
index 00000000000..cdce36fb96f
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Activator.cpp
@@ -0,0 +1,66 @@
+#include "ciao/Dynamic_Component_Activator.h"
+#include "ciao/Dynamic_Component_Servant_Base.h"
+#include "ciao/CIAO_common.h"
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_string.h"
+
+ACE_RCSID (ciao,
+ Dynamic_Component_Activator,
+ "$Id$")
+
+namespace CIAO
+{
+ Dynamic_Component_Activator::Dynamic_Component_Activator (CORBA::ORB_ptr o)
+ : orb_ (CORBA::ORB::_duplicate (o))
+ {
+ }
+
+ Dynamic_Component_Activator::~Dynamic_Component_Activator (void)
+ {
+ }
+
+ PortableServer::Servant
+ Dynamic_Component_Activator::incarnate (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest))
+ {
+ Dynamic_Component_Servant_Base* servant = 0;
+ PortableServer::ObjectId new_oid (oid);
+
+ if (this->servant_map_.find (oid, servant) == 0)
+ {
+ return servant->create (new_oid);
+ }
+
+ return 0;
+ }
+
+ void
+ Dynamic_Component_Activator::etherealize (
+ const PortableServer::ObjectId &,
+ PortableServer::POA_ptr ,
+ PortableServer::Servant ,
+ CORBA::Boolean ,
+ CORBA::Boolean)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ }
+
+ void Dynamic_Component_Activator::add_servant_map
+ (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant)
+ {
+ this->servant_map_.bind (oid, servant);
+ }
+
+ void Dynamic_Component_Activator::delete_servant_map
+ (PortableServer::ObjectId &oid)
+ {
+ Dynamic_Component_Servant_Base* servant = 0;
+ if (this->servant_map_.unbind (oid, servant) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Invalid object reference\n"));
+ }
+ }
+}
diff --git a/modules/CIAO/ciao/Dynamic_Component_Activator.h b/modules/CIAO/ciao/Dynamic_Component_Activator.h
new file mode 100644
index 00000000000..aec2aaf79f5
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Activator.h
@@ -0,0 +1,102 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Component_Activator.h
+ *
+ * $Id$
+ *
+ * @authors Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+ * Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_DYNAMIC_COMPONENT_ACTIVATOR_H
+#define CIAO_DYNAMIC_COMPONENT_ACTIVATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/CIAO_Server_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/CCM_ContainerC.h"
+#include "ciao/Deployment_CoreC.h"
+
+#include "tao/PortableServer/Key_Adapters.h"
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/LocalObject.h"
+#include "tao/PortableServer/ServantActivatorC.h"
+
+#include "ace/Hash_Map_Manager_T.h"
+#include "ace/Array_Base.h"
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+namespace CIAO
+{
+
+ class Dynamic_Component_Servant_Base;
+ /**
+ * @class Dynamic_Component_Activator
+ *
+ * @brief Activator that is registered with the POA for facet and
+ * consumer servants.
+ *
+ */
+ class CIAO_SERVER_Export Dynamic_Component_Activator
+ : public virtual PortableServer::ServantActivator
+ , public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Dynamic_Component_Activator (CORBA::ORB_ptr o);
+
+ virtual ~Dynamic_Component_Activator (void);
+
+ /// Template methods overridden to get callbacks.
+ /**
+ * If you would like to know the details of the following two
+ * methods, please PortableServer documentation. This is probably
+ * not the place to document what these mean.
+ */
+ PortableServer::Servant incarnate (
+ const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest));
+
+ void etherealize (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr adapter,
+ PortableServer::Servant servant,
+ CORBA::Boolean cleanup_in_progress,
+ CORBA::Boolean remaining_activations)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void add_servant_map (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant);
+
+ void delete_servant_map (PortableServer::ObjectId &oid);
+
+ private:
+ /// Pointer to our ORB
+ CORBA::ORB_var orb_;
+
+ ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ Dynamic_Component_Servant_Base *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ servant_map_;
+ };
+}
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_DYNAMIC_COMPONENT_ACTIVATOR_H */
diff --git a/modules/CIAO/ciao/Dynamic_Component_Servant_Base.cpp b/modules/CIAO/ciao/Dynamic_Component_Servant_Base.cpp
new file mode 100644
index 00000000000..773004e6741
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Servant_Base.cpp
@@ -0,0 +1,27 @@
+#include "ciao/CIAO_common.h"
+#include "ciao/Dynamic_Component_Servant_Base.h"
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_string.h"
+
+ACE_RCSID (ciao,
+ Dynamic_Component_Servant_Base,
+ "$Id$")
+
+namespace CIAO
+{
+ Dynamic_Component_Servant_Base::Dynamic_Component_Servant_Base (void)
+ : container_ (0)
+ {
+ ACE_ASSERT (0);
+ }
+
+ Dynamic_Component_Servant_Base::Dynamic_Component_Servant_Base
+ (Session_Container * c)
+ : container_ (c)
+ {
+ }
+
+ Dynamic_Component_Servant_Base::~Dynamic_Component_Servant_Base (void)
+ {
+ }
+}
diff --git a/modules/CIAO/ciao/Dynamic_Component_Servant_Base.h b/modules/CIAO/ciao/Dynamic_Component_Servant_Base.h
new file mode 100644
index 00000000000..ac849ad9e53
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Servant_Base.h
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Component_Servant_Base.h
+ *
+ * $Id$
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_DYNAMIC_COMPONENT_SERVANT_BASE__H
+#define CIAO_DYNAMIC_COMPONENT_SERVANT_BASE__H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/CIAO_Server_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/PortableServer.h"
+
+namespace CIAO
+{
+ class Session_Container;
+ class CIAO_SERVER_Export Dynamic_Component_Servant_Base
+ {
+ public:
+ /// @todo Not to be used, no idea why this should be public, have to check this
+ Dynamic_Component_Servant_Base (void);
+
+ explicit Dynamic_Component_Servant_Base (Session_Container *c);
+
+ virtual ~Dynamic_Component_Servant_Base (void);
+
+ virtual PortableServer::Servant
+ create (PortableServer::ObjectId &oid) = 0;
+
+ virtual void destroy (PortableServer::ObjectId &oid) = 0;
+
+ virtual void update_destroy_count () = 0;
+
+ protected:
+ Session_Container *container_;
+ };
+
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_DYNAMIC_COMPONENT_SERVANT_BASE__H */
diff --git a/modules/CIAO/ciao/Dynamic_Component_Servant_T.cpp b/modules/CIAO/ciao/Dynamic_Component_Servant_T.cpp
new file mode 100644
index 00000000000..a69d568264a
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Servant_T.cpp
@@ -0,0 +1,90 @@
+// $Id$
+
+#ifndef CIAO_DYNAMIC_COMPONENT_SERVANT_T_C
+#define CIAO_DYNAMIC_COMPONENT_SERVANT_T_C
+
+#include "Dynamic_Component_Servant_T.h"
+
+namespace CIAO
+{
+ template <typename COMP_SVNT>
+ Dynamic_Component_Servant<COMP_SVNT>::Dynamic_Component_Servant (
+ Components::EnterpriseComponent_ptr ec,
+ Components::CCMHome_ptr home,
+ const char* ins_name,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container *c)
+ : Dynamic_Component_Servant_Base (c)
+ , executor_ (Components::EnterpriseComponent::_duplicate (ec))
+ , ins_name_ (ins_name)
+ , home_servant_ (home_servant)
+ , home_ (Components::CCMHome::_duplicate (home))
+ , component_removed_ (false)
+ {
+ }
+
+ template <typename COMP_SVNT>
+ void Dynamic_Component_Servant<COMP_SVNT>::update_destroy_count (void)
+ {
+ component_removed_ = true;
+ }
+
+ template <typename COMP_SVNT>
+ Dynamic_Component_Servant<COMP_SVNT>::~Dynamic_Component_Servant (void)
+ {
+ }
+
+ template <typename COMP_SVNT>
+ void Dynamic_Component_Servant<COMP_SVNT>::destroy (
+ PortableServer::ObjectId &oid)
+ {
+ // @@Jai, here is a logical problem. You find a servant from a map
+ // having a list of servants and you turn on a bit. What is the
+ // granularity of the bit? Looks like its too coarse. Do you see
+ // what I am saying?
+ COMP_SVNT *servant = 0;
+
+ if (0 == this->servant_map_.find (oid, servant))
+ {
+ servant->remove ();
+ component_removed_ = true;
+ }
+ }
+
+ template <typename COMP_SVNT>
+ PortableServer::Servant Dynamic_Component_Servant<COMP_SVNT>::create (
+ PortableServer::ObjectId &oid)
+ {
+ CIAO::Swap_Exec_var swap_exec =
+ CIAO::Swap_Exec::_narrow (this->executor_.in ());
+
+ ::Components::EnterpriseComponent_var ciao_ec =
+ swap_exec->incarnate ();
+
+ typedef typename COMP_SVNT::_exec_type exec_type;
+ typename COMP_SVNT::_exec_type::_var_type ciao_comp =
+ exec_type::_narrow (ciao_ec.in ());
+
+ /// @@ Jai, should you be using ACE_NEW_THROW_EX here?
+ COMP_SVNT *svt = new COMP_SVNT (ciao_comp.in (),
+ this->home_.in (),
+ this->ins_name_.in (),
+ this->home_servant_,
+ this->container_);
+
+ // @@Jai, see the problem with a coarse grained stuff here.
+ if (component_removed_ == true)
+ {
+ // svt->ciao_preactivate ();
+ // svt->ciao_activate ();
+ // svt->ciao_postactivate ();
+ component_removed_ = false;
+ }
+
+ PortableServer::ServantBase_var safe (svt);
+ this->servant_map_.bind (oid, svt);
+ return safe._retn ();
+ }
+}
+
+#endif /* CIAO_DYNAMIC_COMPONENT_SERVANT_T_C */
diff --git a/modules/CIAO/ciao/Dynamic_Component_Servant_T.h b/modules/CIAO/ciao/Dynamic_Component_Servant_T.h
new file mode 100644
index 00000000000..6d38bf85399
--- /dev/null
+++ b/modules/CIAO/ciao/Dynamic_Component_Servant_T.h
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Component_Servant_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated home servant class.
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_DYNAMIC_COMPONENT_SERVANT_T_H
+#define CIAO_DYNAMIC_COMPONENT_SERVANT_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "Dynamic_Component_Servant_Base.h"
+#include "CIAO_SwapExecC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+namespace CIAO
+{
+ template <typename COMP_SVNT>
+ class Dynamic_Component_Servant
+ : public virtual Dynamic_Component_Servant_Base
+ {
+ public:
+ // @@Jai, please add documentation for these methods.
+ Dynamic_Component_Servant (Components::EnterpriseComponent_ptr ec,
+ Components::CCMHome_ptr home,
+ const char* ins_name,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container *c);
+
+ virtual ~Dynamic_Component_Servant (void);
+
+ virtual PortableServer::Servant
+ create (PortableServer::ObjectId &oid);
+
+ virtual void destroy (PortableServer::ObjectId &oid);
+
+ virtual void update_destroy_count (void);
+
+ protected:
+ Components::EnterpriseComponent_var executor_;
+
+ CORBA::String_var ins_name_;
+
+ Home_Servant_Impl_Base *home_servant_;
+
+ Components::CCMHome_var home_;
+
+ // @@ Jai, please document why this is there.
+ ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ COMP_SVNT *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ servant_map_;
+
+ // @@ Jai, please explain what this flag means?
+ bool component_removed_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Dynamic_Component_Servant_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Dynamic_Component_Servant_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_DYNAMIC_COMPONENT_SERVANT_T_H */
diff --git a/modules/CIAO/ciao/Home_Servant_Impl_Base.cpp b/modules/CIAO/ciao/Home_Servant_Impl_Base.cpp
new file mode 100644
index 00000000000..f96c2ac684d
--- /dev/null
+++ b/modules/CIAO/ciao/Home_Servant_Impl_Base.cpp
@@ -0,0 +1,36 @@
+// $Id$
+
+#include "Home_Servant_Impl_Base.h"
+
+namespace CIAO
+{
+ Home_Servant_Impl_Base::Home_Servant_Impl_Base (Session_Container * c)
+ : container_ (c)
+ {
+ }
+
+ Home_Servant_Impl_Base::~Home_Servant_Impl_Base (void)
+ {
+ }
+
+ // Operations for CCMHome interface.
+
+ CORBA::IRObject_ptr
+ Home_Servant_Impl_Base::get_component_def (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+ CORBA::IRObject_ptr
+ Home_Servant_Impl_Base::get_home_def (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+}
diff --git a/modules/CIAO/ciao/Home_Servant_Impl_Base.h b/modules/CIAO/ciao/Home_Servant_Impl_Base.h
new file mode 100644
index 00000000000..f7744ea6b48
--- /dev/null
+++ b/modules/CIAO/ciao/Home_Servant_Impl_Base.h
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Home_Servant_Impl_Base.h
+ *
+ * $Id$
+ *
+ * This file contains the non-template declaration of a base class for
+ * the template mixin for the generated home servant class.
+ *
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_HOME_SERVANT_IMPL_BASE_H
+#define CIAO_HOME_SERVANT_IMPL_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "CCM_HomeS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Server_Export.h"
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Home_Servant_Impl_Base
+ *
+ * @brief Non-template base class for Home_Servant_Impl.
+ *
+ * Holds the non-template parts of its child class
+ * Home_Servant_Impl.
+ */
+ class CIAO_SERVER_Export Home_Servant_Impl_Base
+ : public virtual POA_Components::CCMHome
+ {
+ public:
+ Home_Servant_Impl_Base (Session_Container * c);
+
+ virtual ~Home_Servant_Impl_Base (void);
+
+ // Operations for CCMHome interface.
+
+ virtual ::CORBA::IRObject_ptr
+ get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CORBA::IRObject_ptr
+ get_home_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ update_component_map (PortableServer::ObjectId &oid) = 0;
+
+ protected:
+ Session_Container *container_;
+ private:
+ /// Not to be used
+ Home_Servant_Impl_Base (void);
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_HOME_SERVANT_IMPL_BASE_H */
diff --git a/modules/CIAO/ciao/Home_Servant_Impl_T.cpp b/modules/CIAO/ciao/Home_Servant_Impl_T.cpp
new file mode 100644
index 00000000000..5dc7e68243b
--- /dev/null
+++ b/modules/CIAO/ciao/Home_Servant_Impl_T.cpp
@@ -0,0 +1,230 @@
+// $Id$
+
+#ifndef CIAO_HOME_SERVANT_IMPL_T_C
+#define CIAO_HOME_SERVANT_IMPL_T_C
+
+#include "Home_Servant_Impl_T.h"
+#include "CIAO_common.h"
+
+namespace CIAO
+{
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::Home_Servant_Impl (
+ typename EXEC::_ptr_type exe,
+ Session_Container * c,
+ const char *ins_name
+ )
+ : Home_Servant_Impl_Base (c),
+ ins_name_ (ins_name),
+ executor_ (EXEC::_duplicate (exe))
+ {
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::~Home_Servant_Impl (void)
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::destructor");
+
+ const OBJ_ITERATOR end = this->objref_map_.end ();
+
+ for (OBJ_ITERATOR iter = this->objref_map_.begin ();
+ iter != end;
+ ++iter)
+ {
+ this->remove_component (((*iter).int_id_).in ());
+ }
+ }
+
+ // Operations for CCMHome interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::remove_component (
+ ::Components::CCMObject_ptr comp
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::remove_component");
+
+ PortableServer::ObjectId_var oid =
+ this->container_->the_POA ()->reference_to_id (comp);
+
+ Components::CCMObject_var ccm_obj_var = Components::CCMObject::_nil ();
+ if (objref_map_.find (oid.in (), ccm_obj_var) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Invalid component object reference\n"));
+ return;
+ }
+
+ typedef typename COMP_SVNT::_stub_type stub_type;
+ typename COMP_SVNT::_stub_var_type _ciao_comp =
+ stub_type::_narrow (ccm_obj_var.in ());
+
+ if (CORBA::is_nil (_ciao_comp.in ()))
+ {
+ throw Components::RemoveFailure ();
+ }
+
+ _ciao_comp->remove ();
+
+ if (CIAO::debug_level () > 3)
+ {
+ ACE_DEBUG ((LM_DEBUG, "removed the component\n"));
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::update_component_map (
+ PortableServer::ObjectId &oid)
+ {
+ CIAO_TRACE ("update_component_map");
+
+ Components::CCMObject_var ccm_obj_ptr;
+ if (objref_map_.unbind (oid, ccm_obj_ptr) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Invalid component object reference\n"));
+ return;
+ }
+
+ return;
+ }
+
+ // Operations for keyless home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Components::CCMObject_ptr
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::create_component (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::create_component");
+
+ return this->create ();
+ }
+
+ // Operations for implicit home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ typename COMP_SVNT::_stub_ptr_type
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::create (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::create");
+
+ if (this->executor_.in () == 0)
+ {
+ ACE_THROW_RETURN (CORBA::INTERNAL (),
+ COMP_SVNT::_stub_type::_nil ());
+ }
+
+ ::Components::EnterpriseComponent_var _ciao_ec =
+ this->executor_->create ();
+
+ typedef typename COMP_SVNT::_exec_type exec_type;
+ typename COMP_SVNT::_exec_type::_var_type _ciao_comp =
+ exec_type::_narrow (_ciao_ec.in ());
+
+ return this->_ciao_activate_component (_ciao_comp.in ());
+ }
+
+ // CIAO-specific operations.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ typename COMP_SVNT::_stub_ptr_type
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::_ciao_activate_component (
+ typename COMP_SVNT::_exec_type::_ptr_type exe
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::_ciao_activate_component");
+
+ CORBA::Object_var hobj =
+ this->container_->get_objref (this);
+
+ Components::CCMHome_var home =
+ Components::CCMHome::_narrow (hobj.in ());
+
+ typedef typename COMP_SVNT::_stub_type stub_type;
+ COMP_SVNT *svt = 0;
+ ACE_NEW_RETURN (svt,
+ COMP_SVNT (exe,
+ home.in (),
+ this->ins_name_,
+ this,
+ this->container_),
+ stub_type::_nil ());
+
+ PortableServer::ServantBase_var safe (svt);
+ PortableServer::ObjectId_var oid;
+
+ CORBA::Object_var objref =
+ this->container_->install_component (svt,
+ oid.out ());
+
+ typedef typename COMP_SVNT::_stub_type stub_type;
+ typename COMP_SVNT::_stub_var_type ho =
+ stub_type::_narrow (objref.in ());
+
+ Components::CCMObject_var ccmobjref =
+ Components::CCMObject::_narrow (objref.in ());
+
+ this->objref_map_.bind (
+ oid.in (),
+ Components::CCMObject::_duplicate (ccmobjref.in ()));
+
+ return ho._retn ();
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::_ciao_passivate_component (
+ typename COMP_SVNT::_stub_ptr_type comp
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CIAO_TRACE ("Home_Servant_Impl<>::_ciao_passivate_component");
+
+ PortableServer::ObjectId_var oid;
+ this->container_->uninstall_component (comp,
+ oid.out ());
+ }
+}
+
+#endif /* CIAO_HOME_SERVANT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Home_Servant_Impl_T.h b/modules/CIAO/ciao/Home_Servant_Impl_T.h
new file mode 100644
index 00000000000..c29ba00615a
--- /dev/null
+++ b/modules/CIAO/ciao/Home_Servant_Impl_T.h
@@ -0,0 +1,119 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Home_Servant_Impl_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated home servant class.
+ *
+ * @authors Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_HOME_SERVANT_IMPL_T_H
+#define CIAO_HOME_SERVANT_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "Home_Servant_Impl_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Hash_Map_Manager_T.h"
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Home_Servant_Impl
+ *
+ * @brief Mixin base class for generated home servant.
+ *
+ * This class implements operations
+ * common to all generated home servants.
+ */
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ class Home_Servant_Impl
+ : public virtual BASE_SKEL,
+ public virtual Home_Servant_Impl_Base
+ {
+ public:
+ Home_Servant_Impl (typename EXEC::_ptr_type exe,
+ Session_Container * c,
+ const char *ins_name);
+
+ virtual ~Home_Servant_Impl (void);
+
+ // Operations for CCMHome interface.
+
+ virtual void
+ remove_component (Components::CCMObject_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ // Operations for keyless home interface.
+
+ virtual ::Components::CCMObject_ptr
+ create_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ // Operations for implicit home interface.
+
+ virtual typename COMP_SVNT::_stub_ptr_type
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ virtual void
+ update_component_map (PortableServer::ObjectId &oid);
+
+ protected:
+ // CIAO-specific operations.
+
+ typename COMP_SVNT::_stub_ptr_type
+ _ciao_activate_component (typename COMP_SVNT::_exec_type::_ptr_type exe)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ _ciao_passivate_component (typename COMP_SVNT::_stub_ptr_type comp)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ const char *ins_name_;
+ typename EXEC::_var_type executor_;
+
+ typedef ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ Components::CCMObject_var,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ OBJREF_MAP;
+
+ typedef OBJREF_MAP::iterator OBJ_ITERATOR;
+
+ OBJREF_MAP objref_map_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Home_Servant_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Home_Servant_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_HOME_SERVANT_IMPL_T_H */
diff --git a/modules/CIAO/ciao/NodeApp_CB_Impl.cpp b/modules/CIAO/ciao/NodeApp_CB_Impl.cpp
new file mode 100644
index 00000000000..c87e80f9333
--- /dev/null
+++ b/modules/CIAO/ciao/NodeApp_CB_Impl.cpp
@@ -0,0 +1,64 @@
+// $Id$
+#include "NodeApp_CB_Impl.h"
+
+CIAO::NodeApplication_Callback_Impl::
+NodeApplication_Callback_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ Deployment::NodeApplicationManager_ptr s,
+ const Deployment::Properties &properties)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ : orb_ (CORBA::ORB::_duplicate (o)),
+ poa_ (PortableServer::POA::_duplicate (p)),
+ nam_ (Deployment::NodeApplicationManager::_duplicate (s))
+{
+ try
+ {
+ //@@ Note: this properties is useless unless
+ // we have some specific properties for the callback obj.
+ Deployment::Properties * tmp = 0;
+ ACE_NEW_THROW_EX (tmp,
+ Deployment::Properties (properties),
+ CORBA::NO_MEMORY ());
+ this->properties_ = tmp;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("NodeApp_CB_Impl::Constructor\t\n");
+ throw;
+ }
+}
+
+CIAO::NodeApplication_Callback_Impl::~NodeApplication_Callback_Impl ()
+{
+}
+
+PortableServer::POA_ptr
+CIAO::NodeApplication_Callback_Impl::_default_POA (void)
+{
+ return PortableServer::POA::_duplicate (this->poa_.in ());
+}
+
+Deployment::NodeApplicationManager_ptr
+CIAO::NodeApplication_Callback_Impl::register_node_application (
+ Deployment::NodeApplication_ptr na,
+ Deployment::Properties_out properties)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ properties = this->properties_._retn ();
+
+ this->nodeapp_ = Deployment::NodeApplication::_duplicate (na);
+ return Deployment::NodeApplicationManager::_duplicate (this->nam_.in ());
+}
+
+Deployment::NodeApplication_ptr
+CIAO::NodeApplication_Callback_Impl::get_nodeapp_ref (void)
+{
+ // @@ (OO) How are you relinquishing ownership here? Since you're
+ // duplicating the reference you actually maintain
+ // ownership. Is the below comment wrong, or is the code
+ // wrong?
+
+ // Relinquish the ownership of the nodeapplication reference.
+ //This method should only be called from the NodeApplicationManager.
+ return Deployment::NodeApplication::_duplicate (this->nodeapp_.in ());
+}
diff --git a/modules/CIAO/ciao/NodeApp_CB_Impl.h b/modules/CIAO/ciao/NodeApp_CB_Impl.h
new file mode 100644
index 00000000000..bd5c5fd7711
--- /dev/null
+++ b/modules/CIAO/ciao/NodeApp_CB_Impl.h
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+// $Id$
+//=============================================================================
+/**
+ * @file NodeApp_CB_Impl.h
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ * Tao Lu <lu@dre.vanderbilt.edu>
+ *
+ //===========================================================================*/
+
+
+#ifndef NODEAPPLICATION_CALLBACK_IMPL_H
+#define NODEAPPLICATION_CALLBACK_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_NodeApplication_CallBackS.h"
+
+namespace CIAO
+{
+ /**
+ * @class NodeApplication_Callback_Impl
+ *
+ * @brief A call back interface for NodeApplication
+ * @Note Here is no need to be thread safe since for every nodeapplication
+ * we will have an unique callback object. --Tao
+ */
+ class Deployment_svnt_Export NodeApplication_Callback_Impl
+ : public virtual POA_CIAO::NodeApplication_Callback
+ {
+ public:
+ friend class NodeApplicationManager_Impl;
+
+ /// Constructor.
+ NodeApplication_Callback_Impl (CORBA::ORB_ptr o,
+ PortableServer::POA_ptr p,
+ Deployment::NodeApplicationManager_ptr s,
+ const Deployment::Properties &properties)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Get the containing POA. This operation does *not* increase
+ /// the reference count of the POA.
+ virtual PortableServer::POA_ptr _default_POA (void);
+
+ /// Record the NodeApplication reference returned by the newly
+ /// spawned NodeApplication and give it back a reference to
+ /// NodeApplicationManager
+ Deployment::NodeApplicationManager_ptr
+ register_node_application (Deployment::NodeApplication_ptr na,
+ Deployment::Properties_out properties)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ Deployment::NodeApplication_ptr get_nodeapp_ref (void);
+
+ protected:
+ /// Destructor.
+ ~NodeApplication_Callback_Impl ();
+
+ CORBA::ORB_var orb_;
+
+ PortableServer::POA_var poa_;
+
+ Deployment::NodeApplicationManager_var nam_;
+
+ Deployment::NodeApplication_var nodeapp_;
+
+ Deployment::Properties_var properties_;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* NODEAPPLICATION_CALLBACK_IMPL_H */
diff --git a/modules/CIAO/ciao/Object_Set_T.cpp b/modules/CIAO/ciao/Object_Set_T.cpp
new file mode 100644
index 00000000000..5a70d6e0922
--- /dev/null
+++ b/modules/CIAO/ciao/Object_Set_T.cpp
@@ -0,0 +1,133 @@
+// $Id$
+
+#ifndef CIAO_OBJECT_SET_T_C
+#define CIAO_OBJECT_SET_T_C
+
+#include "Object_Set_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if !defined (__ACE_INLINE__)
+#include "Object_Set_T.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID(ciao, Object_Set_T, "$Id$")
+
+template <class T, class T_var>
+CIAO::Object_Set<T, T_var>::Object_Set (CORBA::ULong init_capacity,
+ CORBA::ULong step)
+ : capacity_ (init_capacity),
+ size_ (0),
+ step_ (step)
+{
+ this->buffer_ = new T_var [this->capacity_];
+}
+
+template <class T, class T_var>
+CIAO::Object_Set<T, T_var>::~Object_Set ()
+{
+ delete[] this->buffer_;
+}
+
+template <class T, class T_var> void
+CIAO::Object_Set<T, T_var>::release ()
+{
+ CORBA::ULong i = 0;
+
+ for (; i < this->size_; ++i)
+ {
+ this->buffer_[i] = T::_nil ();
+ }
+}
+
+template <class T, class T_var> CORBA::Long
+CIAO::Object_Set<T, T_var>::add (T *objref)
+{
+ if (this->size_ == this->capacity_)
+ this->grow ();
+
+ this->buffer_[this->size_] = T::_duplicate (objref);
+ return this->size_++;
+}
+
+template<class T, class T_var> CORBA::Long
+CIAO::Object_Set<T, T_var>::remove (T *objref)
+{
+ if (CORBA::is_nil (objref))
+ return -1;
+
+ CORBA::ULong i = 0;
+
+ for (; i < this->size_; ++i)
+ if (objref->_is_equivalent (this->buffer_[i].in ())) // _is_equivalent could be unreliable?
+ {
+ --this->size_;
+ if (i != this->size_)
+ this->buffer_[i] = this->buffer_[this->size_];
+
+ this->buffer_[this->size_] = T::_nil ();
+ return 0;
+ }
+ return -1; // not found.
+}
+
+template<class T, class T_var> CORBA::Long
+CIAO::Object_Set<T, T_var>::remove_all (void)
+{
+ for (CORBA::ULong i = 0; i < this->size_; ++i)
+ this->buffer_[i] = T::_nil ();
+
+ this->size_ = 0;
+ return 0;
+}
+
+template <class T, class T_var> void
+CIAO::Object_Set<T, T_var>::grow (void)
+{
+ this->capacity_ += this->step_;
+
+ T_var *newbuf = new T_var [this->capacity_];
+
+ CORBA::ULong i = 0;
+ for (; i < this->size_; ++i)
+ newbuf[i] = this->buffer_[i]; // this will hijack the object ownership
+
+ delete[] this->buffer_;
+
+ this->buffer_ = newbuf;
+}
+
+template <class T, class T_var> CORBA::ULong
+CIAO::Object_Set<T, T_var>::copy (CORBA::ULong len,
+ T **buf)
+{
+ if (buf == 0)
+ return 0;
+
+ if (len > this->size_)
+ len = this->size_;
+
+ CORBA::ULong i = 0;
+ for (; i < len; ++i)
+ buf[i] = T::_duplicate (this->buffer_[i].in ());
+
+ return len;
+}
+
+template <class T, class T_var> int
+CIAO::Object_Set<T, T_var>::object_in_set (T *objref)
+{
+ if (CORBA::is_nil (objref)) // Don't count nil objref
+ return 0;
+
+ CORBA::ULong i = 0;
+
+ for (; i < this->size_; ++i)
+ if (objref->_is_equivalent (this->buffer_[i].in ())) // _is_equivalent could be unreliable?
+ return -1;
+
+ return 0;
+}
+#endif /* CIAO_OBJECT_SET_T_C */
diff --git a/modules/CIAO/ciao/Object_Set_T.h b/modules/CIAO/ciao/Object_Set_T.h
new file mode 100644
index 00000000000..b11632a5e1b
--- /dev/null
+++ b/modules/CIAO/ciao/Object_Set_T.h
@@ -0,0 +1,130 @@
+// $Id$
+
+/**
+ * @file Object_Set_T.h
+ *
+ * Helper template classes for maintaining and managing object
+ * reference sets.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef CIAO_OBJECT_SET_T_H
+#define CIAO_OBJECT_SET_T_H
+#include /**/ "ace/pre.h"
+
+#include "tao/ORB_Constants.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ /**
+ * @class Object_Set
+ *
+ * @brief A helper template class for maintaining and managing a set
+ * of object reference.
+ *
+ * This class provides a naive implementation of an object reference
+ * set. It is naive because it simply keeps object references in an
+ * objref_var array without checking for duplication. More
+ * importantly, it takes O(n) to to look for an object reference and
+ * return it. What we really need is a thread-safe hash_set<> like
+ * class here. Since this is mostly used only during setup/assemble
+ * time for a CIAO application, i.e., not on critical path, this
+ * class serves as a place holder for later, more efficient
+ * implementation.
+ */
+ template <class T, class T_var>
+ class Object_Set
+ {
+ public:
+ /**
+ * Default contructor that also allows initializing the initial
+ * capacity of the set and the increment step.
+ */
+ Object_Set (CORBA::ULong init_capacity = 10,
+ CORBA::ULong step = 10);
+
+ /// Default destructor.
+ ~Object_Set (void);
+
+ /// Adding a new object reference to the set. Return -1 if error
+ /// occurred.
+ CORBA::Long add (T *objref);
+
+ /// Removing an object from the set. Return -1 if error occurred.
+ CORBA::Long remove (T *objref);
+
+ /// Removing all objects from the set. Return -1 if error occurred.
+ CORBA::Long remove_all (void);
+
+ /// Access the underlying T_var array directly. This is added to
+ /// get around a bug in TAO's sequence of object C++ mapping.
+ T_var &at (CORBA::ULong index);
+
+ /**
+ * Get a copy of the object reference set into the incoming array
+ * @c buffer with capacity of @c size. @c buffer is usually
+ * allocated using a sequence's @c allocbuf method. Notice that
+ * caller is responsible to release the object references in
+ * buffer.
+ *
+ * @retval actual number of objrefs copied into @c buffer.
+ */
+ CORBA::ULong copy (CORBA::ULong size,
+ T **buffer);
+
+ /**
+ * Check if an object is in the set. Return 0 if false.
+ */
+ int object_in_set (T *objref);
+
+ /// Query the current size the set contains.
+ CORBA::ULong size (void) const;
+
+ /// Query the current capacity the set.
+ CORBA::ULong capacity (void) const;
+
+ /**
+ * Release all object references.
+ */
+ void release (void);
+
+ protected:
+ /// Grow the internal array holding the object references.
+ void grow (void);
+
+ /// Pointer to the dynamically allocated buffer that holds the
+ /// object references.
+ T_var *buffer_;
+
+ /// Maximun capacity of this->buffer_;
+ CORBA::ULong capacity_;
+
+ /// Current size in the set.
+ CORBA::ULong size_;
+
+ /// How many more slots to add each time we expand the capacity of
+ /// this set.
+ CORBA::ULong step_;
+ };
+
+}
+
+#if defined (__ACE_INLINE__)
+#include "Object_Set_T.inl"
+#endif /* !defined INLINE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Object_Set_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Object_Set_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_OBJECT_SET_T_H */
diff --git a/modules/CIAO/ciao/Object_Set_T.inl b/modules/CIAO/ciao/Object_Set_T.inl
new file mode 100644
index 00000000000..cd9b8e1ab45
--- /dev/null
+++ b/modules/CIAO/ciao/Object_Set_T.inl
@@ -0,0 +1,20 @@
+/* -*- C++ -*- */
+// $Id$
+
+template <class T, class T_var> ACE_INLINE CORBA::ULong
+CIAO::Object_Set<T, T_var>::size (void) const
+{
+ return this->size_;
+}
+
+template <class T, class T_var> ACE_INLINE CORBA::ULong
+CIAO::Object_Set<T, T_var>::capacity (void) const
+{
+ return this->capacity_;
+}
+
+template <class T, class T_var> ACE_INLINE T_var &
+CIAO::Object_Set<T, T_var>::at (CORBA::ULong index)
+{
+ return this->buffer_[index];
+}
diff --git a/modules/CIAO/ciao/Port_Activator.cpp b/modules/CIAO/ciao/Port_Activator.cpp
new file mode 100644
index 00000000000..3a16c75b0d0
--- /dev/null
+++ b/modules/CIAO/ciao/Port_Activator.cpp
@@ -0,0 +1,41 @@
+#include "Port_Activator.h"
+
+ACE_RCSID (ciao,
+ Servant_Activator,
+ "$Id$")
+
+namespace CIAO
+{
+ Port_Activator::Port_Activator (const char *oid,
+ const char *name,
+ Type t)
+ : oid_ (oid)
+ , name_ (name)
+ , t_ (t)
+ {
+ }
+
+ Port_Activator::~Port_Activator (void)
+ {
+ }
+
+ const char*
+ Port_Activator::oid (void) const
+ {
+ // @@ TODO, need to be inlined.
+ return this->oid_.in ();
+ }
+
+ void
+ Port_Activator::oid (const char* oid)
+ {
+ this->oid_ = oid;
+ }
+
+ const char*
+ Port_Activator::name (void) const
+ {
+ // @@ TODO, need to be inlined.
+ return this->name_.in ();
+ }
+}
diff --git a/modules/CIAO/ciao/Port_Activator.h b/modules/CIAO/ciao/Port_Activator.h
new file mode 100644
index 00000000000..f3914d7d786
--- /dev/null
+++ b/modules/CIAO/ciao/Port_Activator.h
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+//=============================================================================
+/**
+ * @file Port_Activator.h
+ *
+ * $Id$
+ *
+ * @authors Bala Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_PORT_ACTIVATOR_H
+#define CIAO_PORT_ACTIVATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-lite.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/CIAO_Server_Export.h"
+
+#include "tao/PortableServer/PortableServer.h"
+
+namespace CIAO
+{
+ /**
+ * @class Port_Activator
+ *
+ * @brief Base class for port activations
+ *
+ * This is a ABC for the Port_Activator_T <> template class where
+ * the bulk of the work is done. This class is simply a place holder
+ * so that we could use the pointer to this class to achieve
+ * polymorphism for facet and consumer servant activations.
+ *
+ */
+ class CIAO_SERVER_Export Port_Activator
+ {
+ public:
+ enum Type
+ {
+ Facet,
+ Sink
+ };
+
+ Port_Activator (const char *oid,
+ const char *name,
+ Type t);
+
+ virtual ~Port_Activator (void);
+
+ /// Return the oid of port that this activator encapulates.
+ const char* oid (void) const;
+
+ /// Set the oid
+ void oid (const char* oid);
+
+ /// Return the oid of port that this activator encapulates.
+ const char* name (void) const;
+
+ /// Activate the servant reponsible for this port.
+ /**
+ * There are intentionally no throw specifications. It is the
+ * caller's responsibility to handle CORBA and C++
+ * specifications.
+ */
+ virtual PortableServer::Servant activate (
+ const PortableServer::ObjectId &oid) = 0;
+
+ virtual void deactivate (
+ const PortableServer::Servant servant) = 0;
+
+ protected:
+ /// The object ID that is used to activate the servant within the
+ /// POA.
+ CORBA::String_var oid_;
+
+ /// Name of the port
+ CORBA::String_var name_;
+
+ /// What type of port is it, a consumer or facet.
+ Type const t_;
+ };
+}
+
+
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_PORT_ACTIVATOR_H*/
diff --git a/modules/CIAO/ciao/Port_Activator_T.cpp b/modules/CIAO/ciao/Port_Activator_T.cpp
new file mode 100644
index 00000000000..b6bc950a642
--- /dev/null
+++ b/modules/CIAO/ciao/Port_Activator_T.cpp
@@ -0,0 +1,83 @@
+// $Id$
+
+#ifndef CIAO_PORT_ACTIVATOR_T_CPP
+#define CIAO_PORT_ACTIVATOR_T_CPP
+
+#include "Port_Activator_T.h"
+#include "tao/CORBA_String.h"
+
+#include "ace/OS_NS_string.h"
+
+
+namespace CIAO
+{
+ template <typename SERV,
+ typename EXEC,
+ typename CONTEXT,
+ typename COMP_SERV>
+ Port_Activator_T<SERV, EXEC, CONTEXT, COMP_SERV>::Port_Activator_T (
+ const char *oid,
+ const char *name,
+ Port_Activator::Type t,
+ EXEC *e,
+ CONTEXT *c,
+ COMP_SERV *cc)
+ : Port_Activator (oid, name, t)
+ , executor_ (e)
+ , context_ (c)
+ , comp_serv_ (cc)
+ {
+ }
+
+ template <typename SERV,
+ typename EXEC,
+ typename CONTEXT,
+ typename COMP_SERV>
+ void
+ Port_Activator_T<SERV, EXEC, CONTEXT, COMP_SERV>::deactivate (
+ const PortableServer::Servant servant)
+ {
+ SERVANT *s = dynamic_cast<SERVANT *> (servant);
+ s->_remove_ref ();
+ }
+
+ template <typename SERV,
+ typename EXEC,
+ typename CONTEXT,
+ typename COMP_SERV>
+ PortableServer::Servant
+ Port_Activator_T<SERV, EXEC, CONTEXT, COMP_SERV>::activate (
+ const PortableServer::ObjectId &oid)
+ {
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid);
+
+ // An additional check, may not be necessary. Being on the safe
+ // side.
+ if (ACE_OS::strcmp (this->oid_.in (),
+ str.in ()) == 0)
+ {
+ if (this->executor_ == 0 &&
+ this->t_ == Port_Activator::Facet)
+ {
+ CORBA::Object_var tmp =
+ this->comp_serv_->get_facet_executor (this->name_.in ());
+
+ this->executor_ = EXEC::_narrow (tmp.in ());
+ }
+
+ SERVANT *s = 0;
+
+ ACE_NEW_THROW_EX (s,
+ SERVANT (this->executor_,
+ this->context_),
+ CORBA::NO_MEMORY ());
+ return s;
+ }
+
+ ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
+ 0);
+ }
+}
+
+#endif /*SERVANT_ACTIVATOR_T_CPP*/
diff --git a/modules/CIAO/ciao/Port_Activator_T.h b/modules/CIAO/ciao/Port_Activator_T.h
new file mode 100644
index 00000000000..bf159c89b4e
--- /dev/null
+++ b/modules/CIAO/ciao/Port_Activator_T.h
@@ -0,0 +1,82 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Port_Activator_T.h
+ *
+ * $Id$
+ *
+ * @authors Bala Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_PORT_ACTIVATOR_T_H
+#define CIAO_PORT_ACTIVATOR_T_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/Port_Activator.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO
+{
+ /**
+ * @class Port_Activator_T
+ *
+ * @brief Concrete class that implements the strategy for creating
+ * the right type of servant for the ports in question.
+ *
+ * This class is parametrized by the servant type for the port, the
+ * executor type for the port, the context for the component and the
+ * component servant which instantiated this class within the
+ * container.
+ */
+ template <typename SERV,
+ typename EXEC,
+ typename CONTEXT,
+ typename COMP_SERV>
+ class Port_Activator_T : public virtual Port_Activator
+ {
+ public:
+ typedef SERV SERVANT;
+
+ Port_Activator_T (const char *oid,
+ const char *name,
+ Port_Activator::Type t,
+ EXEC *e,
+ CONTEXT *c,
+ COMP_SERV *cs);
+
+ /// Template method from the base class, please see the base class
+ /// documentation for details.
+ PortableServer::Servant activate (
+ const PortableServer::ObjectId &oid);
+
+ void deactivate (
+ const PortableServer::Servant servant);
+
+ private:
+ /// The executor
+ EXEC *executor_;
+
+ /// Context classes
+ CONTEXT *context_;
+
+ /// COmponent servant which created <this>
+ COMP_SERV *comp_serv_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Port_Activator_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Port_Activator_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_SERVANT_ACTIVATOR_T_H*/
diff --git a/modules/CIAO/ciao/Security.idl b/modules/CIAO/ciao/Security.idl
new file mode 100644
index 00000000000..199ae210c31
--- /dev/null
+++ b/modules/CIAO/ciao/Security.idl
@@ -0,0 +1,23 @@
+/**
+ * @@ This is just a temporary file. CIAO doesn't sue the security
+ * service in its implementation but just using this local
+ * interface below from the real security service pulls in
+ * 250Kb of footprint
+ *
+ * $Id$
+ */
+
+#if !defined (CIAO_SECURITY_IDL)
+#define CIAO_SECURITY_IDL
+
+#pragma prefix "omg.org"
+
+module SecurityLevel2 {
+
+# pragma version SecurityLevel2 1.8
+
+ local interface Credentials
+ {
+ };
+};
+#endif /* CIAO_SECURITY_IDL */
diff --git a/modules/CIAO/ciao/Servant_Activator.cpp b/modules/CIAO/ciao/Servant_Activator.cpp
new file mode 100644
index 00000000000..c0e1bc93d9d
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Activator.cpp
@@ -0,0 +1,191 @@
+#include "Servant_Activator.h"
+#include "CIAO_common.h"
+#include "Port_Activator.h"
+#include "ace/Log_Msg.h"
+#include "ace/OS_NS_string.h"
+
+ACE_RCSID (ciao,
+ Servant_Activator,
+ "$Id$")
+
+namespace CIAO
+{
+ Servant_Activator::Servant_Activator (CORBA::ORB_ptr o)
+ : orb_ (CORBA::ORB::_duplicate (o))
+ // @@ TODO, avoid this magic number
+ , pa_ (64)
+ , slot_index_ (0)
+ {
+ }
+
+ Servant_Activator::~Servant_Activator (void)
+ {
+ {
+ ACE_GUARD (TAO_SYNCH_MUTEX,
+ guard,
+ this->mutex_);
+
+ size_t const sz = this->slot_index_;
+
+ for (size_t t = 0; t != sz; ++t)
+ {
+ Port_Activator *&tmp = this->pa_[t];
+
+ delete tmp;
+ }
+ }
+ }
+
+ bool
+ Servant_Activator::update_port_activator (
+ const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid);
+ {
+ ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ guard,
+ this->mutex_,
+ 0);
+ size_t const sz = this->slot_index_;
+ for (size_t t = 0; t != sz; ++t)
+ {
+ Port_Activator *&tmp = this->pa_[t];
+ if (ACE_OS::strcmp (tmp->oid (), str.in ()) == 0)
+ {
+ tmp->oid ("dummy");
+ //delete tmp;
+ //--this->slot_index_;
+ }
+ }
+ }
+ return true;
+ }
+
+ PortableServer::Servant
+ Servant_Activator::incarnate (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest))
+ {
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid);
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - Servant_Activator::incarnate, "
+ "activating port name [%s] \n",
+ str.in ()));
+
+ {
+ ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ guard,
+ this->mutex_,
+ 0);
+
+ size_t const sz = this->slot_index_;
+
+ Port_Activator *tmp = 0;
+
+ for (size_t t = 0; t != sz; ++t)
+ {
+ if (this->pa_.get (tmp, t) == -1)
+ ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
+ 0);
+
+ if (tmp == 0)
+ {
+ if (CIAO::debug_level () > 9)
+ ACE_ERROR ((LM_ERROR,
+ "CIAO (%P|%t) - Servant_Activator::incarnate (),"
+ " value from the array is null \n"));
+ continue;
+ }
+ if (ACE_OS::strcmp (tmp->oid (),
+ str.in ()) == 0)
+ {
+ // We should try avoiding making outbound calls with the
+ // lock held. Oh well, let us get some sense of sanity in
+ // CIAO to do think about these.
+ if (CIAO::debug_level () > 5)
+ ACE_DEBUG ((LM_DEBUG, "Activating Port %s\n",
+ str.in ()));
+
+ return this->pa_[t]->activate (oid);
+ }
+ }
+ }
+ ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (),
+ 0);
+ }
+
+ void
+ Servant_Activator::etherealize (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr ,
+ PortableServer::Servant servant,
+ CORBA::Boolean ,
+ CORBA::Boolean)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CORBA::String_var str =
+ PortableServer::ObjectId_to_string (oid);
+
+ size_t const sz = this->slot_index_;
+
+ Port_Activator *tmp = 0;
+
+ for (size_t t = 0; t != sz; ++t)
+ {
+ if (this->pa_.get (tmp, t) == -1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Could not get Port Activator\n"));
+ continue;
+ }
+
+ if (tmp == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Port Activator is NULL\n"));
+ continue;
+ }
+ if (ACE_OS::strcmp (tmp->oid (),
+ str.in ()) == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Deactivating Port %s\n",
+ str.in ()));
+ this->pa_[t]->deactivate (servant);
+ }
+ }
+ }
+
+ bool
+ Servant_Activator::register_port_activator (Port_Activator *pa)
+ {
+ ACE_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ guard,
+ this->mutex_,
+ false);
+
+ // @@ TODO, need to implement a better algorithm here.
+ //
+ if (this->slot_index_ >= this->pa_.size ())
+ this->pa_.size ((this->slot_index_ + 1));
+
+ if (this->pa_.set (pa, this->slot_index_) == 0)
+ {
+ ++this->slot_index_;
+
+ if (CIAO::debug_level () > 9)
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - Servant_Activator::register_port_activator"
+ " with port name [%s],"
+ " the slot_index_ is [%d] \n",
+ pa->name (),
+ this->slot_index_));
+
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/modules/CIAO/ciao/Servant_Activator.h b/modules/CIAO/ciao/Servant_Activator.h
new file mode 100644
index 00000000000..9a3cfc58644
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Activator.h
@@ -0,0 +1,109 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Servant_Activator.h
+ *
+ * $Id$
+ *
+ * @authors Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_SERVANT_ACTIVATOR_H
+#define CIAO_SERVANT_ACTIVATOR_H
+#include /**/ "ace/pre.h"
+
+#include "ace/Array_Base.h"
+#include "ciao/CIAO_Server_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/PortableServer/ServantActivatorC.h"
+#include "tao/PortableServer/ForwardRequestC.h"
+#include "tao/LocalObject.h"
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+namespace CIAO
+{
+ class Port_Activator;
+
+ /**
+ * @class Servant_Activator
+ *
+ * @brief Activator that is registered with the POA for facet and
+ * consumer servants.
+ *
+ * This class acts like a factory in some sense. This factory is
+ * registered with the POA with RETAIN policy. When the factory gets
+ * a call back as part of the upcall, this factory looks at the
+ * list of port activators registered, uses the OID to pick the
+ * right one (yes a linear algorithm is used), calls activate () on
+ * it which returns the servant for *that* port.
+ */
+ class CIAO_SERVER_Export Servant_Activator
+ : public virtual PortableServer::ServantActivator
+ , public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Servant_Activator (CORBA::ORB_ptr o);
+
+ virtual ~Servant_Activator (void);
+
+ bool update_port_activator (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Template methods overridden to get callbacks.
+ /**
+ * If you would like to know the details of the following two
+ * methods, please PortableServer documentation. This is probably
+ * not the place to document what these mean.
+ */
+ PortableServer::Servant incarnate (
+ const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr poa)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableServer::ForwardRequest));
+
+ void etherealize (const PortableServer::ObjectId &oid,
+ PortableServer::POA_ptr adapter,
+ PortableServer::Servant servant,
+ CORBA::Boolean cleanup_in_progress,
+ CORBA::Boolean remaining_activations)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Local helper methods
+ bool register_port_activator (Port_Activator *pa);
+
+ private:
+ /// Pointer to our ORB
+ CORBA::ORB_var orb_;
+
+ /// @@ This should be changed at some point of time so that we
+ /// don't land up with a linear algorithm
+ typedef ACE_Array_Base<Port_Activator *> Port_Activators;
+
+ /// Array of port activators
+ Port_Activators pa_;
+
+ /// Running index of the slot that has been just filled in.
+ size_t slot_index_;
+
+ /// Mutex that synchronizes access to the array.
+ ACE_SYNCH_MUTEX mutex_;
+ };
+}
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_SERVANT_ACTIVATOR_H*/
diff --git a/modules/CIAO/ciao/Servant_Impl_Base.cpp b/modules/CIAO/ciao/Servant_Impl_Base.cpp
new file mode 100644
index 00000000000..7ea606c2c7b
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Impl_Base.cpp
@@ -0,0 +1,659 @@
+// $Id$
+
+#include "Servant_Impl_Base.h"
+#include "StandardConfigurator_Impl.h"
+#include "Container_Base.h"
+
+namespace CIAO
+{
+ Servant_Impl_Base::Servant_Impl_Base (Components::CCMHome_ptr home,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container * c)
+ : home_ (Components::CCMHome::_duplicate (home)),
+ home_servant_ (home_servant),
+ container_ (c)
+ {
+ }
+
+ Servant_Impl_Base::~Servant_Impl_Base (void)
+ {
+ }
+
+ // Operations for CCMObject interface.
+
+ ::Components::PrimaryKeyBase *
+ Servant_Impl_Base::get_primary_key (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoKeyAvailable))
+ {
+ ACE_THROW_RETURN (::Components::NoKeyAvailable (), 0);
+ }
+
+ CORBA::IRObject_ptr
+ Servant_Impl_Base::get_component_def (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+ void
+ Servant_Impl_Base::configuration_complete (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidConfiguration))
+ {
+ // CIAO to-do
+ }
+
+ void
+ Servant_Impl_Base::remove (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+ {
+ try
+ {
+ // Removing Facets
+ Components::FacetDescriptions_var facets =
+ this->get_all_facets ();
+
+ CORBA::ULong const facet_len = facets->length ();
+ for (CORBA::ULong i = 0; i < facet_len; ++i)
+ {
+ PortableServer::ObjectId_var facet_id =
+ this->container_->the_facet_cons_POA ()->reference_to_id
+ (facets[i]->facet_ref ());
+
+ CIAO::Servant_Activator *sa =
+ this->container_->ports_servant_activator ();
+
+ sa->update_port_activator (facet_id.in ());
+
+ this->container_->the_facet_cons_POA ()->deactivate_object
+ (facet_id);
+ }
+
+ // Removed Facets
+
+ // Removing Consumers
+ Components::ConsumerDescriptions_var consumers =
+ this->get_all_consumers ();
+
+ CORBA::ULong const consumer_len = consumers->length ();
+ for (CORBA::ULong j = 0; j < consumer_len; ++j)
+ {
+ PortableServer::ObjectId_var cons_id =
+ this->container_->the_facet_cons_POA ()->reference_to_id
+ (consumers[j]->consumer ());
+
+ CIAO::Servant_Activator *sa =
+ this->container_->ports_servant_activator ();
+ sa->update_port_activator (cons_id.in ());
+
+ this->container_->the_facet_cons_POA ()->deactivate_object
+ (cons_id);
+ }
+
+ Components::SessionComponent_var temp = this->get_executor ();
+ temp->ccm_remove ();
+
+ CORBA::Object_var objref =
+ this->container_->get_objref (this);
+
+ Components::CCMObject_var ccmobjref =
+ Components::CCMObject::_narrow (objref.in ());
+
+ PortableServer::ObjectId_var oid;
+
+ this->container_->uninstall_component (ccmobjref.in (),
+ oid.out ());
+
+ this->home_servant_->update_component_map (oid);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Port not active\n");
+ }
+ }
+
+ ::Components::ConnectionDescriptions *
+ Servant_Impl_Base::get_connections (
+ const char * /* name */
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ ::Components::ComponentPortDescription *
+ Servant_Impl_Base::get_all_ports (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ OBV_Components::ComponentPortDescription *cps = 0;
+ ACE_NEW_RETURN (cps,
+ OBV_Components::ComponentPortDescription,
+ 0);
+ ::Components::ComponentPortDescription_var retv = cps;
+
+ ::Components::FacetDescriptions_var facets_desc =
+ this->get_all_facets ();
+
+ ::Components::ReceptacleDescriptions_var receptacle_desc =
+ this->get_all_receptacles ();
+
+ ::Components::ConsumerDescriptions_var consumer_desc =
+ this->get_all_consumers ();
+
+ ::Components::EmitterDescriptions_var emitter_desc =
+ this->get_all_emitters ();
+
+ ::Components::PublisherDescriptions_var publisher_desc =
+ this->get_all_publishers ();
+
+ retv->facets (facets_desc.in ());
+ retv->receptacles (receptacle_desc.in ());
+ retv->consumers (consumer_desc.in ());
+ retv->emitters (emitter_desc.in ());
+ retv->publishers (publisher_desc.in ());
+
+ return retv._retn ();
+ }
+
+ CORBA::Object_ptr
+ Servant_Impl_Base::provide_facet (
+ const char *name
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ if (0 == name)
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ CORBA::Object::_nil ());
+ }
+
+ CORBA::Object_ptr retval = this->lookup_facet (name);
+
+ if (CORBA::is_nil (retval))
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ CORBA::Object::_nil ());
+ }
+
+ return retval;
+ }
+
+ Components::FacetDescriptions *
+ Servant_Impl_Base::get_named_facets (
+ const ::Components::NameList & names
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ Components::FacetDescriptions *retval = 0;
+ ACE_NEW_RETURN (retval,
+ ::Components::FacetDescriptions,
+ 0);
+ Components::FacetDescriptions_var safe_retval = retval;
+ CORBA::ULong const len = names.length ();
+ safe_retval->length (len);
+
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ ::Components::FacetDescription *tmp =
+ this->lookup_facet_description (names[i]);
+
+ if (0 == tmp)
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ 0);
+ }
+
+ safe_retval[i] = tmp;
+ }
+
+ return safe_retval._retn ();
+ }
+
+ ::Components::FacetDescriptions *
+ Servant_Impl_Base::get_all_facets (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::FacetDescriptions *tmp = 0;
+ ACE_NEW_RETURN (tmp,
+ ::Components::FacetDescriptions,
+ 0);
+
+ ::Components::FacetDescriptions_var retval = tmp;
+
+ retval->length (this->facet_table_.size ());
+ CORBA::ULong i = 0;
+
+ for (FacetTable::const_iterator iter = this->facet_table_.begin ();
+ iter != this->facet_table_.end ();
+ ++iter, ++i)
+ {
+ FacetTable::const_reference entry = *iter;
+ retval[i] = entry.second;
+ }
+
+ return retval._retn ();
+ }
+
+
+ ::Components::ConsumerDescriptions *
+ Servant_Impl_Base::get_all_consumers (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::ConsumerDescriptions *tmp = 0;
+ ACE_NEW_THROW_EX (tmp,
+ ::Components::ConsumerDescriptions (
+ this->consumer_table_.size ()),
+ CORBA::NO_MEMORY ());
+
+ ::Components::ConsumerDescriptions_var retval = tmp;
+
+ retval->length (this->consumer_table_.size ());
+ CORBA::ULong i = 0;
+
+ for (ConsumerTable::const_iterator iter = this->consumer_table_.begin ();
+ iter != this->consumer_table_.end ();
+ ++iter, ++i)
+ {
+ ConsumerTable::const_reference entry = *iter;
+ retval[i] = entry.second;
+ }
+
+ return retval._retn ();
+ }
+
+
+ ::Components::EventConsumerBase_ptr
+ Servant_Impl_Base::get_consumer (
+ const char *sink_name
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ if (0 == sink_name)
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ Components::EventConsumerBase::_nil ());
+ }
+
+ Components::EventConsumerBase_ptr retval =
+ this->lookup_consumer (sink_name);
+
+ if (CORBA::is_nil (retval))
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ Components::EventConsumerBase::_nil ());
+ }
+
+ return retval;
+ }
+
+ ::Components::ConsumerDescriptions *
+ Servant_Impl_Base::get_named_consumers (
+ const ::Components::NameList & names
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ Components::ConsumerDescriptions *retval = 0;
+ ACE_NEW_RETURN (retval,
+ ::Components::ConsumerDescriptions,
+ 0);
+ Components::ConsumerDescriptions_var safe_retval = retval;
+ CORBA::ULong const len = names.length ();
+ safe_retval->length (len);
+
+ for (CORBA::ULong i = 0; i < len; ++i)
+ {
+ ::Components::ConsumerDescription *tmp =
+ this->lookup_consumer_description (names[i]);
+
+ if (0 == tmp)
+ {
+ ACE_THROW_RETURN (Components::InvalidName (),
+ 0);
+ }
+
+ safe_retval[i] = tmp;
+ }
+
+ return safe_retval._retn ();
+ }
+
+ ::Components::EmitterDescriptions *
+ Servant_Impl_Base::get_named_emitters (
+ const ::Components::NameList & /* names */
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ ::Components::ReceptacleDescriptions *
+
+ Servant_Impl_Base::get_all_receptacles (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "In Servant_Impl_Base::get_all_receptacles\n"));
+
+ ::Components::ReceptacleDescriptions *tmp = 0;
+ ACE_NEW_RETURN (tmp,
+ ::Components::ReceptacleDescriptions,
+ 0);
+
+ ::Components::ReceptacleDescriptions_var retval = tmp;
+
+ retval->length (this->receptacle_table_.current_size ());
+ CORBA::ULong i = 0;
+
+ ACE_DEBUG ((LM_DEBUG, "Building sequence of length %d\n", retval->length()));
+
+ for (ReceptacleTable::iterator iter = this->receptacle_table_.begin ();
+ iter != this->receptacle_table_.end ();
+ ++iter, ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Starting loop iteration...\n", retval->length()));
+
+ ReceptacleTable::ENTRY & entry = *iter;
+ retval[i] = entry.int_id_;
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Escaped loop.\n"));
+ return retval._retn ();
+ }
+
+ ::Components::ReceptacleDescriptions *
+ Servant_Impl_Base::get_named_receptacles (
+ const ::Components::NameList & /* names */
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ ACE_THROW_RETURN (::CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ ::Components::PublisherDescriptions *
+ Servant_Impl_Base::get_named_publishers (
+ const ::Components::NameList & /* names */
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+ {
+ ACE_THROW_RETURN (::CORBA::NO_IMPLEMENT (), 0);
+ }
+
+ /// Protected operations.
+ void
+ Servant_Impl_Base::add_facet (const char *port_name,
+ ::CORBA::Object_ptr port_ref)
+ ACE_THROW_SPEC (( ::CORBA::SystemException))
+ {
+ if (0 == port_name || ::CORBA::is_nil (port_ref))
+ {
+ throw ::CORBA::BAD_PARAM ();
+ return;
+ }
+
+ ::Components::FacetDescription *fd = 0;
+ ACE_NEW (fd,
+ ::OBV_Components::FacetDescription (
+ port_name,
+ port_ref->_interface_repository_id (),
+ port_ref));
+ ::Components::FacetDescription_var safe = fd;
+
+ FacetTable::value_type entry;
+ entry.first = port_name;
+ entry.second = safe._retn ();
+
+ {
+ ACE_WRITE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_);
+
+ (void) this->facet_table_.insert (entry);
+ }
+ }
+
+ CORBA::Object_ptr
+ Servant_Impl_Base::lookup_facet (const char *port_name)
+ {
+ if (0 == port_name)
+ {
+ return CORBA::Object::_nil ();
+ }
+
+ ACE_READ_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ mon,
+ this->lock_,
+ CORBA::Object::_nil ());
+
+ FacetTable::const_iterator iter =
+ this->facet_table_.find (port_name);
+
+ if (iter == this->facet_table_.end ())
+ {
+ return CORBA::Object::_nil ();
+ }
+
+ return CORBA::Object::_duplicate (iter->second->facet_ref ());
+ }
+
+ ::Components::FacetDescription *
+ Servant_Impl_Base::lookup_facet_description (const char *port_name)
+ {
+ if (0 == port_name)
+ {
+ /// Calling function will throw InvalidName after getting this.
+ return 0;
+ }
+
+ ::Components::FacetDescription_var fd;
+
+ {
+ ACE_READ_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ mon,
+ this->lock_,
+ 0);
+ FacetTable::const_iterator iter =
+ this->facet_table_.find (port_name);
+
+ if (iter != this->facet_table_.end ())
+ {
+ fd = iter->second;
+ }
+ }
+
+ return fd._retn ();
+ }
+
+ void
+ Servant_Impl_Base::add_receptacle (const char *receptacle_name,
+ CORBA::Object_ptr recept_ref,
+ ::Components::Cookie * cookie)
+ {
+ ACE_DEBUG ((LM_DEBUG, "In Servant_Impl_Base::add_receptacle (%s)\n", receptacle_name));
+
+ ::Components::ReceptacleDescription_var safe;
+ ::Components::ReceptacleDescription *rd = 0;
+
+ if (this->receptacle_table_.find (receptacle_name,
+ safe) == -1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Found no receptacle named (%s)\n", receptacle_name));
+
+ ACE_NEW (rd,
+ OBV_Components::ReceptacleDescription);
+ safe = rd;
+
+ rd->name (receptacle_name);
+ rd->type_id ();
+ // The receptacle is a multiplex receptacle if and only if a
+ // cookie was given.
+ rd->is_multiple (cookie != 0);
+
+ ::Components::ConnectionDescription *cd = 0;
+ ACE_NEW (cd,
+ OBV_Components::ConnectionDescription (
+ cookie,
+ recept_ref));
+ ::Components::ConnectionDescription_var cd_safe = cd;
+ ::Components::ConnectionDescriptions cds (1);
+
+ cds.length (1);
+ cds[0] = cd_safe;
+ rd->connections (cds);
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Found a receptacle named (%s)\n", receptacle_name));
+ rd = safe.inout ();
+
+ ::Components::ConnectionDescription *cd = 0;
+ ACE_NEW (cd,
+ OBV_Components::ConnectionDescription (
+ cookie,
+ recept_ref));
+ ::Components::ConnectionDescription_var cd_safe = cd;
+ ::Components::ConnectionDescriptions & cds = rd->connections ();
+ CORBA::ULong old_length = cds.length ();
+ ACE_DEBUG ((LM_DEBUG, "Old length was %d\n", old_length));
+ cds.length (old_length + 1);
+ ACE_DEBUG ((LM_DEBUG, "New length %d\n", cds.length ()));
+ cds [old_length] = cd_safe;
+ ACE_DEBUG ((LM_DEBUG, "Added new connection to receptacle named (%s)\n", receptacle_name));
+ }
+
+ if (this->receptacle_table_.bind (receptacle_name, safe) == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Successfully added new receptacle named (%s)\n", receptacle_name));
+ }
+ }
+
+ void
+ Servant_Impl_Base::add_consumer (
+ const char *port_name,
+ ::Components::EventConsumerBase_ptr port_ref
+ )
+ ACE_THROW_SPEC (( ::CORBA::SystemException))
+ {
+ if (0 == port_name || ::CORBA::is_nil (port_ref))
+ {
+ throw ::CORBA::BAD_PARAM ();
+ return;
+ }
+
+ ::Components::ConsumerDescription *cd = 0;
+ ACE_NEW (cd,
+ ::OBV_Components::ConsumerDescription);
+ ::Components::ConsumerDescription_var safe = cd;
+
+ cd->name (port_name);
+ cd->type_id (port_ref->_interface_repository_id ());
+ cd->consumer (port_ref);
+
+ ConsumerTable::value_type entry;
+ entry.first = port_name;
+ entry.second = safe._retn ();
+
+ ACE_WRITE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_);
+
+ (void) this->consumer_table_.insert (entry);
+ }
+
+ ::Components::EventConsumerBase_ptr
+ Servant_Impl_Base::lookup_consumer (const char *port_name)
+ {
+ if (0 == port_name)
+ {
+ return ::Components::EventConsumerBase::_nil ();
+ }
+
+ ACE_READ_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ mon,
+ this->lock_,
+ ::Components::EventConsumerBase::_nil ());
+
+ ConsumerTable::const_iterator iter =
+ this->consumer_table_.find (port_name);
+
+ if (iter == this->consumer_table_.end ())
+ {
+ return ::Components::EventConsumerBase::_nil ();
+ }
+
+ return
+ ::Components::EventConsumerBase::_duplicate (
+ iter->second->consumer ()
+ );
+ }
+
+ ::Components::ConsumerDescription *
+ Servant_Impl_Base::lookup_consumer_description (
+ const char *port_name
+ )
+ {
+ if (0 == port_name)
+ {
+ /// Calling function will throw InvalidName after getting this.
+ return 0;
+ }
+
+ ::Components::ConsumerDescription_var cd;
+ ConsumerTable::const_iterator iter;
+
+ {
+ ACE_READ_GUARD_RETURN (TAO_SYNCH_MUTEX,
+ mon,
+ this->lock_,
+ 0);
+
+ iter = this->consumer_table_.find (port_name);
+
+ if (iter != this->consumer_table_.end ())
+ {
+ cd = iter->second;
+ }
+ }
+
+ return cd._retn ();
+ }
+
+ ::Components::StandardConfigurator_ptr
+ Servant_Impl_Base::get_standard_configurator ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Create the configurator servant.
+ StandardConfigurator_Impl *config_impl = 0;
+
+ ACE_NEW_THROW_EX (config_impl,
+ StandardConfigurator_Impl (this),
+ CORBA::NO_MEMORY ());
+
+
+ Components::StandardConfigurator_var configurator =
+ config_impl->_this ();
+
+ return configurator._retn ();
+ }
+
+ PortableServer::POA_ptr
+ Servant_Impl_Base::_default_POA ()
+ {
+ return
+ PortableServer::POA::_duplicate (container_->the_POA ());
+ }
+}
+
diff --git a/modules/CIAO/ciao/Servant_Impl_Base.h b/modules/CIAO/ciao/Servant_Impl_Base.h
new file mode 100644
index 00000000000..89e5293264f
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Impl_Base.h
@@ -0,0 +1,266 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Servant_Impl_Base.h
+ *
+ * $Id$
+ *
+ * This file contains the non-template declaration of a base class for
+ * the template mixin for the generated servant class.
+ *
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SERVANT_IMPL_BASE_H
+#define CIAO_SERVANT_IMPL_BASE_H
+
+#include /**/ "ace/pre.h"
+#include "ace/Hash_Map_Manager_T.h"
+#include "ace/Array_Map.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Active_Map_Manager_T.h"
+#include "ace/Thread_Mutex.h"
+
+#include "CCM_EventsC.h"
+#include "CIAO_Server_Export.h"
+#include "CCM_ContainerC.h"
+#include "CCM_ObjectS.h"
+#include "CCM_StandardConfiguratorC.h"
+#include "Home_Servant_Impl_Base.h"
+#include "Servant_Activator.h"
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Servant_Impl_Base
+ *
+ * @brief Non-template base class for Servant_Impl.
+ *
+ * Holds the non-template parts of its child class
+ * Servant_Impl.
+ */
+ class CIAO_SERVER_Export Servant_Impl_Base
+ : public virtual POA_Components::CCMObject
+ {
+ public:
+ Servant_Impl_Base (Components::CCMHome_ptr home,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container * c);
+
+ virtual ~Servant_Impl_Base (void);
+
+ /// Operations for CCMObject interface.
+
+ virtual ::Components::PrimaryKeyBase *
+ get_primary_key ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::NoKeyAvailable));
+
+ virtual CORBA::IRObject_ptr
+ get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual Components::SessionComponent_ptr
+ get_executor ()
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ virtual void
+ configuration_complete ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidConfiguration));
+
+ virtual void
+ remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ virtual ::Components::ConnectionDescriptions *
+ get_connections (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::ComponentPortDescription *
+ get_all_ports ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr
+ provide_facet (const char *name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::FacetDescriptions *
+ get_named_facets (const ::Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::FacetDescriptions *
+ get_all_facets ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ virtual ::Components::ConsumerDescriptions *
+ get_all_consumers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ virtual ::Components::EventConsumerBase_ptr
+ get_consumer (const char *sink_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::ConsumerDescriptions *
+ get_named_consumers (const ::Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::EmitterDescriptions *
+ get_named_emitters (const ::Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::ReceptacleDescriptions *
+ get_named_receptacles (const ::Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::ReceptacleDescriptions *
+ get_all_receptacles ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::PublisherDescriptions *
+ get_named_publishers (const ::Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ /// Operation to set attributes on the component.
+ virtual void set_attributes (const Components::ConfigValues &descr) = 0;
+
+ // Creates and returns the StandardConfigurator for the component.
+ virtual ::Components::StandardConfigurator_ptr
+ get_standard_configurator ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Override that returns the (passed-in) default POA of our member
+ /// component's container, to ensure that we get registered
+ /// to that POA when _this() is called.
+ virtual PortableServer::POA_ptr _default_POA (
+ );
+
+ protected:
+ void add_facet (const char *port_name,
+ ::CORBA::Object_ptr port_ref)
+ ACE_THROW_SPEC (( ::CORBA::SystemException));
+
+ CORBA::Object_ptr lookup_facet (const char *port_name);
+
+ ::Components::FacetDescription *lookup_facet_description (
+ const char *port_name
+ );
+
+ void add_receptacle (const char *receptacle_name,
+ CORBA::Object_ptr recept_ref,
+ ::Components::Cookie * cookie);
+
+ void add_consumer (const char *port_name,
+ ::Components::EventConsumerBase_ptr port_ref)
+ ACE_THROW_SPEC (( ::CORBA::SystemException));
+
+ ::Components::EventConsumerBase_ptr lookup_consumer (
+ const char *port_name
+ );
+
+ ::Components::ConsumerDescription *lookup_consumer_description (
+ const char *port_name
+ );
+
+ /// Called from generated servant class to help with
+ /// get_all_*() methods.
+
+ template<typename T_var>
+ static void describe_simplex_receptacle (
+ const char *port_name,
+ const char *port_type_repo_id,
+ T_var &connection,
+ ::Components::ReceptacleDescriptions_var &descriptions,
+ CORBA::ULong slot
+ );
+
+ template<typename T_var>
+ static void describe_multiplex_receptacle (
+ const char *port_name,
+ const char *port_type_repo_id,
+ ACE_Active_Map_Manager<T_var> &objrefs,
+ ::Components::ReceptacleDescriptions_var &descriptions,
+ CORBA::ULong slot
+ );
+
+ template<typename T_var>
+ static void describe_pub_event_source (
+ const char *port_name,
+ const char *port_type_repo_id,
+ ACE_Active_Map_Manager<T_var> &consumers,
+ ::Components::PublisherDescriptions_var &descriptions,
+ CORBA::ULong slot
+ );
+
+ template<typename T_var>
+ static void describe_emit_event_source (
+ const char *port_name,
+ const char *port_type_repo_id,
+ T_var &consumer_ref,
+ ::Components::EmitterDescriptions_var &descriptions,
+ CORBA::ULong slot
+ );
+
+ protected:
+ typedef ACE_Array_Map<ACE_CString,
+ ::Components::FacetDescription_var>
+ FacetTable;
+
+ typedef ACE_Array_Map<ACE_CString,
+ ::Components::ConsumerDescription_var>
+ ConsumerTable;
+
+ typedef ACE_Hash_Map_Manager_Ex<const char *,
+ ::Components::ReceptacleDescription_var,
+ ACE_Hash<const char *>,
+ ACE_Equal_To<const char *>,
+ ACE_Null_Mutex>
+ ReceptacleTable;
+
+ FacetTable facet_table_;
+ ConsumerTable consumer_table_;
+ ReceptacleTable receptacle_table_;
+ Components::CCMHome_var home_;
+ Home_Servant_Impl_Base *home_servant_;
+ Session_Container * container_;
+ private:
+ /// Not allowed to be used
+ Servant_Impl_Base (void);
+
+ private:
+ /// For internal locking of table reads and writes.
+ TAO_SYNCH_MUTEX lock_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Servant_Impl_Utils_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Servant_Impl_Utils_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SERVANT_IMPL_T_H */
diff --git a/modules/CIAO/ciao/Servant_Impl_T.cpp b/modules/CIAO/ciao/Servant_Impl_T.cpp
new file mode 100644
index 00000000000..8925ce3b213
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Impl_T.cpp
@@ -0,0 +1,262 @@
+// $Id$
+
+#ifndef CIAO_SERVANT_IMPL_T_C
+#define CIAO_SERVANT_IMPL_T_C
+
+#include "Servant_Impl_T.h"
+#include "CCM_EntityContextC.h"
+
+namespace CIAO
+{
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::Servant_Impl (
+ EXEC * exe,
+ Components::CCMHome_ptr home,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container * c
+ )
+ : Servant_Impl_Base (home, home_servant, c),
+ activated_ (false),
+ pre_activated_ (false),
+ post_activated_ (false),
+ executor_ (EXEC::_duplicate (exe))
+ {
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::~Servant_Impl (void)
+ {
+ // **********************************************************************
+ /*
+ try
+ {
+ ::Components::SessionComponent_var scom =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+
+ if (! ::CORBA::is_nil (scom.in ()))
+ {
+ scom->ccm_remove ();
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ }
+ */
+ // *********************************************************************
+
+ this->context_->_remove_ref ();
+ }
+
+ // Operations for CCMObject interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ CORBA::Boolean
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::same_component (
+ CORBA::Object_ptr object_ref
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (::CORBA::is_nil (object_ref))
+ {
+ ACE_THROW_RETURN (::CORBA::BAD_PARAM (), 0);
+ }
+
+ ::CORBA::Object_var the_other =
+ object_ref->_get_component ();
+
+ ::CORBA::Object_var me =
+ this->context_->get_CCM_object ();
+
+ return me->_is_equivalent (the_other.in ());
+
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ ::Components::CCMHome_ptr
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::get_ccm_home (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->context_->get_CCM_home ();
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ Components::SessionComponent_ptr
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::get_executor (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+ return temp._retn ();
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ CORBA::Object_ptr
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::_get_component (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::SessionContext_var sc =
+ ::Components::SessionContext::_narrow (
+ this->context_
+ );
+
+ if (! ::CORBA::is_nil (sc.in ()))
+ {
+ return sc->get_CCM_object ();
+ }
+
+ ::Components::EntityContext_var ec =
+ ::Components::EntityContext::_narrow (
+ this->context_
+ );
+
+ if (! ::CORBA::is_nil (ec.in ()))
+ {
+ return ec->get_CCM_object ();
+ }
+
+ ACE_THROW_RETURN (CORBA::INTERNAL (),
+ ::CORBA::Object::_nil ());
+ }
+
+ // CIAO-specific operations.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ void
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::activate_component (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (this->is_activated () == 0)
+ {
+ this->ciao_preactivate ();
+
+ this->ciao_activate ();
+
+ this->ciao_postactivate ();
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ void
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::ciao_preactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+
+ if (! ::CORBA::is_nil (temp.in ()))
+ {
+ if (this->pre_activated_ == 0)
+ {
+ this->pre_activated_ = 1;
+ temp->ciao_preactivate ();
+ }
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ void
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::ciao_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+
+ if (! ::CORBA::is_nil (temp.in ()))
+ {
+ if (this->activated_ == 0)
+ {
+ this->activated_ = 1;
+ temp->ccm_activate ();
+ }
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ void
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::ciao_postactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+
+ if (! ::CORBA::is_nil (temp.in ()))
+ {
+ if (this->post_activated_ == 0)
+ {
+ this->post_activated_ = 1;
+ temp->ciao_postactivate ();
+ }
+ }
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ CORBA::Boolean
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::is_activated (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->pre_activated_;
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ void
+ Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::ciao_passivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // @@ Jai, could you please see why this is required?
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (
+ this->executor_.in ()
+ );
+
+ if (! ::CORBA::is_nil (temp.in ()))
+ temp->ccm_passivate ();
+
+ this->pre_activated_ = 0;
+ this->activated_ = 0;
+ this->post_activated_ = 0;
+ }
+}
+
+#endif /* CIAO_SERVANT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Servant_Impl_T.h b/modules/CIAO/ciao/Servant_Impl_T.h
new file mode 100644
index 00000000000..5fb7f7c3cf3
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Impl_T.h
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Servant_Impl_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated servant class.
+ *
+ * @authors Boris Kolpackov <boris@dre.vanderbilt.edu>
+ * Jeff Parsons <j.parsons@vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SERVANT_IMPL_T_H
+#define CIAO_SERVANT_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "Servant_Impl_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Servant_Impl
+ *
+ * @brief Mixin base class for generated servant.
+ *
+ * This class implements navigation and other operations
+ * common to all generated servants.
+ */
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename CONTEXT>
+ class Servant_Impl : public virtual BASE_SKEL,
+ public virtual Servant_Impl_Base
+ {
+ public:
+ Servant_Impl (EXEC * exe,
+ Components::CCMHome_ptr home,
+ Home_Servant_Impl_Base *home_servant,
+ Session_Container * c);
+
+ virtual ~Servant_Impl (void);
+
+ // Operations for CCMObject interface.
+
+ virtual CORBA::Boolean
+ same_component (CORBA::Object_ptr object_ref)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::CCMHome_ptr
+ get_ccm_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr
+ _get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual Components::SessionComponent_ptr
+ get_executor ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // CIAO-specific operations.
+
+ void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ ciao_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// @@NOTE: The busted operation.
+ void
+ ciao_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::Boolean
+ is_activated ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ activate_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+
+ CORBA::Boolean activated_;
+ CORBA::Boolean pre_activated_;
+ CORBA::Boolean post_activated_;
+
+ /// Initialized in this constructor.
+ typename EXEC::_var_type executor_;
+
+ /// Initialized in the derived, generated servant constructor.
+ CONTEXT * context_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Servant_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Servant_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SERVANT_IMPL_T_H */
diff --git a/modules/CIAO/ciao/Servant_Impl_Utils_T.cpp b/modules/CIAO/ciao/Servant_Impl_Utils_T.cpp
new file mode 100644
index 00000000000..ba292da07ea
--- /dev/null
+++ b/modules/CIAO/ciao/Servant_Impl_Utils_T.cpp
@@ -0,0 +1,164 @@
+// $Id$
+
+#ifndef CIAO_SERVANT_IMPL_UTILS_T_C
+#define CIAO_SERVANT_IMPL_UTILS_T_C
+
+#include "Servant_Impl_Base.h"
+#include "ciao/Cookies.h"
+
+namespace CIAO
+{
+ template<typename T_var>
+ void
+ Servant_Impl_Base::describe_simplex_receptacle (
+ const char *port_name,
+ const char *port_type_repo_id,
+ T_var &connection,
+ ::Components::ReceptacleDescriptions_var &descriptions,
+ CORBA::ULong slot
+ )
+ {
+ ::Components::ReceptacleDescription *elem = 0;
+ ACE_NEW (elem,
+ ::OBV_Components::ReceptacleDescription);
+ ::Components::ReceptacleDescription_var safe_elem = elem;
+
+ elem->name (port_name);
+ elem->type_id (port_type_repo_id);
+ elem->is_multiple (false);
+ elem->connections ().length (1UL);
+
+ ::Components::ConnectionDescription *conn = 0;
+ ACE_NEW (conn, ::OBV_Components::ConnectionDescription);
+ ::Components::ConnectionDescription_var safe_conn = conn;
+
+ conn->ck (0);
+ conn->objref (connection.in ());
+
+ elem->connections ()[0UL] = safe_conn._retn ();
+ descriptions[slot] = safe_elem._retn ();
+ }
+
+ template<typename T_var>
+ void
+ Servant_Impl_Base::describe_multiplex_receptacle (
+ const char *port_name,
+ const char *port_type_repo_id,
+ ACE_Active_Map_Manager<T_var> &objrefs,
+ ::Components::ReceptacleDescriptions_var &descriptions,
+ CORBA::ULong slot
+ )
+ {
+ ::Components::ReceptacleDescription *elem = 0;
+ ACE_NEW (elem,
+ ::OBV_Components::ReceptacleDescription);
+ ::Components::ReceptacleDescription_var safe_elem = elem;
+
+ elem->name (port_name);
+ elem->type_id (port_type_repo_id);
+ elem->is_multiple (true);
+ elem->connections ().length (objrefs.current_size ());
+
+ CORBA::ULong map_slot = 0UL;
+ ::Components::ConnectionDescription *conn = 0;
+
+ for (typename ACE_Active_Map_Manager<T_var>::CONST_ITERATOR iter (
+ objrefs
+ );
+ 0 == iter.done ();
+ iter.advance (), ++map_slot)
+ {
+ ACE_NEW (conn,
+ ::OBV_Components::ConnectionDescription);
+ ::Components::ConnectionDescription_var safe_conn = conn;
+
+ ::Components::Cookie *cookie_from_key = 0;
+ ACE_NEW (cookie_from_key,
+ ::CIAO::Map_Key_Cookie ((*iter).ext_id_));
+
+ // Valuetype member set operation calls add_ref.
+ conn->ck (cookie_from_key);
+ CORBA::remove_ref (cookie_from_key);
+
+ conn->objref ((*iter).int_id_.in ());
+
+ elem->connections ()[map_slot] = safe_conn._retn ();
+ }
+
+ descriptions[slot] = safe_elem._retn ();
+ }
+
+ template<typename T_var>
+ void
+ Servant_Impl_Base::describe_pub_event_source (
+ const char *port_name,
+ const char *port_type_repo_id,
+ ACE_Active_Map_Manager<T_var> &consumers,
+ ::Components::PublisherDescriptions_var &descriptions,
+ CORBA::ULong slot
+ )
+ {
+ ::Components::PublisherDescription *elem = 0;
+ ACE_NEW (elem,
+ ::OBV_Components::PublisherDescription);
+ ::Components::PublisherDescription_var safe_elem = elem;
+
+ elem->name (port_name);
+ elem->type_id (port_type_repo_id);
+ elem->consumer ().length (consumers.current_size ());
+
+ CORBA::ULong map_slot = 0UL;
+ ::Components::SubscriberDescription *sub = 0;
+
+ for (typename ACE_Active_Map_Manager<T_var>::CONST_ITERATOR iter (
+ consumers
+ );
+ 0 == iter.done ();
+ iter.advance (), ++map_slot)
+ {
+ ACE_NEW (sub,
+ ::OBV_Components::SubscriberDescription);
+ ::Components::SubscriberDescription_var safe_sub = sub;
+
+ ::Components::Cookie *cookie_from_key = 0;
+ ACE_NEW (cookie_from_key,
+ ::CIAO::Map_Key_Cookie ((*iter).ext_id_));
+
+ // Valuetype member set operation calls add_ref.
+ sub->ck (cookie_from_key);
+ CORBA::remove_ref (cookie_from_key);
+
+ sub->consumer ((*iter).int_id_.in ());
+
+ elem->consumer ()[map_slot] = safe_sub._retn ();
+ }
+
+ descriptions[slot] = safe_elem._retn ();
+ }
+
+ template<typename T_var>
+ void
+ Servant_Impl_Base::describe_emit_event_source (
+ const char *port_name,
+ const char *port_type_repo_id,
+ T_var &consumer_ref,
+ ::Components::EmitterDescriptions_var &descriptions,
+ CORBA::ULong slot
+ )
+ {
+ ::Components::EmitterDescription *elem = 0;
+ ACE_NEW (elem,
+ ::OBV_Components::EmitterDescription);
+ ::Components::EmitterDescription_var safe_elem = elem;
+
+ elem->name (port_name);
+ elem->type_id (port_type_repo_id);
+
+ // Valuetype 'set' call increments the reference count.
+ elem->consumer (consumer_ref.in ());
+
+ descriptions[slot] = safe_elem._retn ();
+ }
+}
+
+#endif /* CIAO_SERVANT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Server_init.cpp b/modules/CIAO/ciao/Server_init.cpp
new file mode 100644
index 00000000000..790b3b7b963
--- /dev/null
+++ b/modules/CIAO/ciao/Server_init.cpp
@@ -0,0 +1,234 @@
+// $Id$
+
+#include "Server_init.h"
+#include "CIAO_common.h"
+#include "CCM_ComponentC.h"
+#include "CCM_StandardConfiguratorC.h"
+#include "Cookies.h"
+
+#include "ace/OS_NS_stdio.h"
+namespace CIAO
+{
+ int
+ Server_init (CORBA::ORB_ptr o)
+ {
+ CIAO_REGISTER_VALUE_FACTORY (o, CIAO::Map_Key_Cookie_init,
+ Components::Cookie);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::PortDescription_init,
+ Components::PortDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::FacetDescription_init,
+ Components::FacetDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConnectionDescription_init,
+ Components::ConnectionDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ReceptacleDescription_init,
+ Components::ReceptacleDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConsumerDescription_init,
+ Components::ConsumerDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::EmitterDescription_init,
+ Components::EmitterDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::SubscriberDescription_init,
+ Components::SubscriberDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::PublisherDescription_init,
+ Components::PublisherDescription);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ConfigValue_init,
+ Components::ConfigValue);
+ CIAO_REGISTER_VALUE_FACTORY (o, Components::ComponentPortDescription_init,
+ Components::ComponentPortDescription);
+ return 0;
+ }
+
+ namespace Utility
+ {
+ int write_IOR (const char *pathname, const char *ior)
+ {
+ FILE* ior_output_file_ = ACE_OS::fopen (pathname, "w");
+
+ if (ior_output_file_)
+ {
+ ACE_OS::fprintf (ior_output_file_,
+ "%s",
+ ior);
+ ACE_OS::fclose (ior_output_file_);
+ return 0;
+ }
+
+ return -1;
+ }
+
+ // --------------------------------------------------------------
+ // Implementation of NameUtility class
+ // --------------------------------------------------------------
+
+ void NameUtility::CreateContextPath (const CosNaming::NamingContextExt_ptr nc,
+ const CosNaming::Name& name)
+ {
+ bool isNotFound = false;
+ CORBA::ULong lengthMissing = 0;
+ CORBA::ULong OriginalLength = name.length();
+ CosNaming::Name tmpName;
+ CosNaming::NamingContext_var tmpCtxVar;
+
+ try
+ {
+ tmpCtxVar = nc->bind_new_context(name);
+ ACE_DEBUG ((LM_DEBUG, "Bound Context.\n\n"));
+ }
+ catch (const CosNaming::NamingContext::AlreadyBound&)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Context Already Bound.\n\n"));
+ }
+ catch (const CosNaming::NamingContext::NotFound& nf)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Context not found.\n\n"));
+ isNotFound = true;
+ lengthMissing = nf.rest_of_name.length();
+ }
+
+ if (lengthMissing == name.length())
+ {
+ ACE_ERROR ((LM_ERROR, "Null name length.\n\n"));
+ }
+
+ if (isNotFound)
+ {
+ for (CORBA::ULong l = OriginalLength-lengthMissing;
+ l < OriginalLength;
+ l++)
+ {
+ tmpName.length(l+1);
+ for (CORBA::ULong i=0; i <= l; i++)
+ {
+ tmpName[i] = name[i];
+
+ CORBA::String_var newSCName = nc->to_string(tmpName);
+ ACE_DEBUG ((LM_DEBUG, "What's left of the name:%s\n",
+ newSCName.in ()));
+ }
+
+ tmpCtxVar = nc->bind_new_context(tmpName);
+ ACE_DEBUG ((LM_DEBUG, "Bound New Context.\n"));
+ }
+ }
+ }
+
+ //---------------------------------------------------------------------------------------------
+ void NameUtility::BindObjectPath (const CosNaming::NamingContextExt_ptr nc,
+ const CosNaming::Name& name,
+ const CORBA::Object_var obj)
+ {
+ CosNaming::Name tmpName;
+ CORBA::String_var newSCName = nc->to_string(name);
+ ACE_DEBUG ((LM_DEBUG, "The name is: %s\n", newSCName.in ()));
+
+ try
+ {
+ nc->rebind(name, obj);
+ }
+
+ catch (const CosNaming::NamingContext::NotFound&)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Name not found, doing new bind.\n"));
+ nc->bind(name, obj);
+ }
+ }
+
+ //---------------------------------------------------------------------------------------------
+ CosNaming::BindingList *
+ NameUtility::listBindings (const CosNaming::NamingContext_ptr nc,
+ const CosNaming::Name& name,
+ CORBA::ULong max_list_size)
+ {
+ CosNaming::BindingList_var basicListV;
+ CosNaming::BindingIterator_var bIterV;
+
+ CORBA::Object_var objV;
+ CosNaming::NamingContext_var tmpContextV;
+
+ if (name.length() == 0)
+ {
+ tmpContextV = CosNaming::NamingContext::_duplicate(nc);
+ }
+ else
+ {
+ objV = nc->resolve(name);
+ tmpContextV = CosNaming::NamingContext::_narrow(objV.in ());
+ }
+ if (CORBA::is_nil (tmpContextV.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "listBindings: Nil context.\n"));
+ return 0;
+ }
+
+ tmpContextV->list(max_list_size, basicListV.out(), bIterV.out());
+
+ CORBA::Long max_remaining = max_list_size - basicListV->length();
+ CORBA::Boolean moreBindings = !CORBA::is_nil(bIterV.in ());
+
+ if (moreBindings)
+ {
+ while (moreBindings && (max_remaining > 0) )
+ {
+ CosNaming::BindingList_var tmpListV;
+
+ moreBindings = bIterV->next_n(max_remaining, tmpListV.out());
+
+ //Append 'tmpListV' to 'basicListV'
+ CORBA::ULong basicListLen = basicListV->length();
+ basicListV->length(basicListLen+tmpListV->length());
+ for (CORBA::ULong i=0; i < tmpListV->length(); i++)
+ {
+ (*basicListV)[i+basicListLen] = (*tmpListV)[i];
+ }
+
+ //Re-calculate 'max_remaining'
+ max_remaining = max_list_size - basicListV->length();
+ }
+ bIterV->destroy();
+ }
+
+ return basicListV._retn();
+ }
+
+ //---------------------------------------------------------------------------------------------
+ void
+ NameUtility::recursiveUnbind (const CosNaming::NamingContext_ptr nc,
+ const CosNaming::Name& name)
+ {
+ CORBA::Object_var objV;
+ CosNaming::NamingContext_var tmpContextV;
+
+ objV = nc->resolve(name);
+ tmpContextV = CosNaming::NamingContext::_narrow(objV.in ());
+ if (CORBA::is_nil(tmpContextV.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "recursiveUnbind: Nil context reference.\n"));
+ return;
+ }
+
+ CosNaming::BindingList_var blV;
+ CosNaming::Name tmpName;
+ tmpName.length(0);
+
+ blV = NameUtility::listBindings(tmpContextV.in(),
+ tmpName,
+ 10000); // 'max_list_size'
+
+ for (CORBA::ULong i=0; i<blV->length(); i++)
+ {
+ tmpName = (*blV)[i].binding_name;
+
+ if ((*blV)[i].binding_type==CosNaming::nobject)
+ {
+ tmpContextV->unbind(tmpName);
+ }
+ else if ( (*blV)[i].binding_type==CosNaming::ncontext)
+ {
+ NameUtility::recursiveUnbind(tmpContextV.in(), tmpName);
+ }
+ }
+ nc->unbind(name);
+ tmpContextV->destroy();
+ }
+
+ } /* namespace Utility */
+} /* namespace CIAO */
diff --git a/modules/CIAO/ciao/Server_init.h b/modules/CIAO/ciao/Server_init.h
new file mode 100644
index 00000000000..c5fe53ed77d
--- /dev/null
+++ b/modules/CIAO/ciao/Server_init.h
@@ -0,0 +1,91 @@
+// $Id$
+
+/**
+ * @file Server_init.h
+ *
+ * Initializing CIAO Server side ORB, if they need to.
+ * I'm also puting some utilities functions here.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+
+#ifndef CIAO_SERVER_INIT_H
+#define CIAO_SERVER_INIT_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_Server_Export.h"
+#include "tao/Versioned_Namespace.h"
+#include <orbsvcs/CosNamingC.h>
+
+#if !defined ACE_LACKS_PRAGMA_ONCE
+#pragma once
+#endif /* ! ACE_LACKS_PRAGMA_ONCE */
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+namespace CORBA
+{
+ class ORB;
+ typedef ORB *ORB_ptr;
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ /**
+ * The initialize routine for any server that need to access
+ * component. This routine now simply registers various valuetype
+ * factories defined in CIAO_Component.pidl. Currently, this method
+ * should be call right after ORB initialization but we should try
+ * to register these stuff automatically.
+ */
+ CIAO_SERVER_Export int Server_init (CORBA::ORB_ptr o);
+
+ namespace Utility
+ {
+ /// Write a string (usually a stringified IOR) to a file
+ /// designated by the @c pathname. The file named will always get
+ /// overwritten.
+ CIAO_SERVER_Export int write_IOR (const char *pathname,
+ const char *IOR);
+
+ class CIAO_SERVER_Export NameUtility
+ {
+ /**
+ * A utility class to bind naming context. This class is contributed by
+ * Dipa Suri <dipa.suri@lmco.com>.
+ *
+ * The concept/code are derived from
+ * http://www.informit.com/articles/article.asp?p=23266&seqNum=6
+ */
+
+ public:
+ /// For each 'NameComponent' in 'name', create a corresponding 'NamingContext'.
+ static void CreateContextPath (const CosNaming::NamingContextExt_ptr,
+ const CosNaming::Name &);
+
+ /// For the first [0, length-2] NameComponents of 'name', create a
+ /// corresponding 'NamingContext'.
+ /// For the length-1 NameComponent of 'name', bind it to the object
+ /// reference 'obj'.
+ static void BindObjectPath (const CosNaming::NamingContextExt_ptr,
+ const CosNaming::Name&,
+ const CORBA::Object_var);
+
+ /// Get a list of all bindings under the given context, up to
+ /// max_list_size.
+ static CosNaming::BindingList * listBindings (const CosNaming::NamingContext_ptr,
+ const CosNaming::Name&,
+ CORBA::ULong);
+
+ /// Recursively unbind all objects and contexts below the given name
+ /// context, given the initial context nc.
+ /// Assumes a tree shape to service (not cyclic)
+ static void recursiveUnbind (const CosNaming::NamingContext_ptr,
+ const CosNaming::Name&);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_SERVER_INIT_H */
diff --git a/modules/CIAO/ciao/StandardConfigurator_Impl.cpp b/modules/CIAO/ciao/StandardConfigurator_Impl.cpp
new file mode 100644
index 00000000000..b1ca2033d21
--- /dev/null
+++ b/modules/CIAO/ciao/StandardConfigurator_Impl.cpp
@@ -0,0 +1,39 @@
+// StandardConfigurator.cpp,v 1.0 2004/14/04 08:47:46 white Exp
+
+#include "StandardConfigurator_Impl.h"
+#include "Servant_Impl_Base.h"
+
+ACE_RCSID (ciao,
+ StandardConfigurator_Impl,
+ "$Id$")
+
+
+namespace CIAO
+{
+ StandardConfigurator_Impl::StandardConfigurator_Impl (
+ Servant_Impl_Base* servant)
+ : component_ (servant)
+ {
+ }
+
+ StandardConfigurator_Impl::~StandardConfigurator_Impl ()
+ {
+ }
+
+ void
+ StandardConfigurator_Impl::set_configuration (
+ const Components::ConfigValues &descr)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->component_->set_attributes (descr);
+ }
+
+ void
+ StandardConfigurator_Impl::configure (
+ Components::CCMObject_ptr)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::WrongComponentType))
+ {
+
+ }
+}
diff --git a/modules/CIAO/ciao/StandardConfigurator_Impl.h b/modules/CIAO/ciao/StandardConfigurator_Impl.h
new file mode 100644
index 00000000000..1c1f800d6c2
--- /dev/null
+++ b/modules/CIAO/ciao/StandardConfigurator_Impl.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file StandardConfigurator_Impl.h
+ *
+ * $Id$
+ *
+ * This file contains implementation for the servant of
+ * Components::StandardConfigurator interface.
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_STANDARDCONFIGURATOR_IMPL_H
+#define CIAO_STANDARDCONFIGURATOR_IMPL_H
+# include /**/ "ace/pre.h"
+
+#include "CCM_StandardConfiguratorS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Server_Export.h"
+#include "Servant_Impl_Base.h"
+
+namespace CIAO
+{
+
+
+ /**
+ * @class StandardConfigurator_Impl
+ *
+ * @brief Servant implementation for Components::StandardConfigurator
+ *
+ * This class implements the Components::StandardConfigurator
+ * interface as defined by the CCM spcification. This class aids
+ * in setting the initial values of component attributes that are
+ * defined in the meta data.
+ */
+ class CIAO_SERVER_Export StandardConfigurator_Impl
+ : public virtual POA_Components::StandardConfigurator
+ {
+ public:
+ /// Constructor
+ StandardConfigurator_Impl (Servant_Impl_Base* toconfigure);
+
+ /// Destructor
+ virtual ~StandardConfigurator_Impl (void);
+
+ /// This method will call set_attributes on the component that is
+ /// being configured, i.e, the template method from
+ /// StandardConfigurator interface.
+ virtual void set_configuration (
+ const Components::ConfigValues & descr)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void configure (
+ Components::CCMObject_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::WrongComponentType));
+
+ private:
+ /// The component whose attributes are going to be configured via
+ /// set_attributes
+ Servant_Impl_Base* component_;
+ };
+
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_STANDARDCONFIGURATOR_IMPL_H */
diff --git a/modules/CIAO/ciao/Swapping_Container.cpp b/modules/CIAO/ciao/Swapping_Container.cpp
new file mode 100644
index 00000000000..aff7ab93113
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Container.cpp
@@ -0,0 +1,247 @@
+// $Id$
+
+#include "Container_Base.h"
+#include "Swapping_Container.h"
+#include "ace/DLL.h"
+#include "tao/Utils/PolicyList_Destroyer.h"
+#include "ace/OS_NS_stdio.h"
+
+#if !defined (__ACE_INLINE__)
+# include "Swapping_Container.inl"
+#endif /* __ACE_INLINE__ */
+
+namespace CIAO
+{
+
+ ACE_Atomic_Op <ACE_SYNCH_MUTEX, unsigned long>
+ Swapping_Container::serial_number_ (0);
+
+ Swapping_Container::Swapping_Container (CORBA::ORB_ptr o,
+ Container_Impl *container_impl)
+ : Session_Container (o, container_impl),
+ number_ (0)
+ {
+ }
+
+ Swapping_Container::~Swapping_Container ()
+ {
+ }
+
+ PortableServer::POA_ptr
+ Swapping_Container::the_home_servant_POA (void) const
+ {
+ return this->home_servant_poa_.in ();
+ }
+
+ CORBA::Object_ptr
+ Swapping_Container::get_home_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->the_home_servant_POA ()->servant_to_reference (p);
+ }
+
+ void
+ Swapping_Container::deactivate_facet (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->the_facet_cons_POA ()->deactivate_object (oid);
+ }
+
+ int
+ Swapping_Container::init (const char *name,
+ const CORBA::PolicyList *more_policies)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ char buffer[MAXPATHLEN];
+
+ if (name == 0)
+ {
+ this->number_ = ++Swapping_Container::serial_number_;
+ ACE_OS::sprintf (buffer, "CIAO::Swapping_Container-%ld",
+ this->number_);
+ name = buffer;
+ }
+
+ CORBA::Object_var poa_object =
+ this->orb_->resolve_initial_references("RootPOA");
+
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ -1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ());
+
+
+ this->create_servant_POA (name,
+ more_policies,
+ root_poa.in ());
+
+
+
+ this->create_home_servant_POA ("home servant POA",
+ more_policies,
+ root_poa.in ());
+
+ this->create_connections_POA (root_poa.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ poa_manager->activate ();
+
+ return 0;
+ }
+
+ void
+ Swapping_Container::add_servant_map
+ (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant)
+ {
+ this->dsa_->add_servant_map (oid, servant);
+ }
+
+ void
+ Swapping_Container::delete_servant_map
+ (PortableServer::ObjectId &oid)
+ {
+ this->dsa_->delete_servant_map (oid);
+ }
+
+ void
+ Swapping_Container::create_home_servant_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root)
+ {
+ CORBA::PolicyList policies (0);
+
+ if (p != 0)
+ policies = *p;
+
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager ();
+
+
+ this->home_servant_poa_ =
+ root->create_POA (name,
+ poa_manager.in (),
+ policies);
+ }
+
+ void
+ Swapping_Container::create_connections_POA (
+ PortableServer::POA_ptr root)
+ {
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager ();
+
+ TAO::Utils::PolicyList_Destroyer policies (3);
+ policies.length (3);
+
+ policies[0] =
+ root->create_id_assignment_policy (PortableServer::USER_ID);
+
+ policies[1] =
+ root->create_request_processing_policy
+ (PortableServer::USE_SERVANT_MANAGER);
+
+
+ // Servant Retention Policy
+ policies[2] =
+ root->create_servant_retention_policy (PortableServer::RETAIN);
+
+ this->facet_cons_poa_ =
+ root->create_POA ("facet_consumer_poa",
+ poa_manager.in (),
+ policies);
+
+ ACE_NEW_THROW_EX (this->sa_,
+ Servant_Activator (this->orb_.in ()),
+ CORBA::NO_MEMORY ());
+
+ this->facet_cons_poa_->set_servant_manager (
+ this->sa_);
+
+ }
+
+ void
+ Swapping_Container::create_servant_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root)
+ {
+ // @@ Jai, see how this method more or less does things (like
+ // setting policies) like create_connections_POA (). Could you
+ // please refactor them into a seperate method?
+ CORBA::PolicyList policies (0);
+
+ if (p != 0)
+ policies = *p;
+
+ PortableServer::POAManager_var poa_manager =
+ root->the_POAManager ();
+
+ CORBA::ULong policy_length = policies.length ();
+ policies.length (policy_length + 1);
+ policies[policy_length] =
+ root->create_id_assignment_policy (PortableServer::USER_ID);
+
+ policy_length = policies.length ();
+ policies.length (policy_length + 1);
+ policies[policy_length] =
+ root->create_request_processing_policy (
+ PortableServer::USE_SERVANT_MANAGER);
+
+ policy_length = policies.length ();
+ policies.length (policy_length + 1);
+ policies[policy_length] =
+ root->create_servant_retention_policy (PortableServer::RETAIN);
+
+ this->component_poa_ =
+ root->create_POA (name,
+ poa_manager.in (),
+ policies);
+
+ ACE_NEW_THROW_EX (this->dsa_,
+ Dynamic_Component_Activator (this->orb_.in ()),
+ CORBA::NO_MEMORY ());
+
+ this->component_poa_->set_servant_manager (
+ this->dsa_);
+
+ }
+
+ void
+ Swapping_Container::ciao_uninstall_home (Components::CCMHome_ptr homeref)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ PortableServer::POA_ptr tmp = this->home_servant_poa_.in ();
+ PortableServer::ObjectId_var oid =
+ tmp->reference_to_id (homeref);
+
+ tmp->deactivate_object (oid.in ());
+ }
+
+ CORBA::Object_ptr
+ Swapping_Container::install_servant (PortableServer::Servant p,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ PortableServer::POA_ptr tmp = 0;
+
+ if (t == Container::Component)
+ {
+ tmp = this->home_servant_poa_.in ();
+ }
+ else
+ tmp = this->facet_cons_poa_.in ();
+
+ PortableServer::ObjectId_var oid
+ = tmp->activate_object (p);
+
+ CORBA::Object_var objref
+ = tmp->id_to_reference (oid.in ());
+
+ return objref._retn ();
+ }
+}
diff --git a/modules/CIAO/ciao/Swapping_Container.h b/modules/CIAO/ciao/Swapping_Container.h
new file mode 100644
index 00000000000..98231eef33c
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Container.h
@@ -0,0 +1,125 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Container.h
+ *
+ * $Id$
+ *
+ * Header file for CIAO's Dynamic Swapping container implementations
+ *
+ * @author Jaiganesh Balasubramanian <jai@dre.vanderbilt.edu>
+ * Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_CONTAINER_H
+#define CIAO_SWAPPING_CONTAINER_H
+#include /**/ "ace/pre.h"
+
+// @@ Jai, are all these inclusions necessary? Please cut down on them
+// to a minimum
+#include "tao/ORB.h"
+#include "tao/PortableServer/PortableServer.h"
+#include "tao/PortableServer/Servant_Base.h"
+#include "ciao/CCM_ContainerC.h"
+#include "ciao/Container_Base.h"
+#include "ciao/Deployment_CoreC.h"
+#include "ciao/Dynamic_Component_Activator.h"
+#include "ciao/CIAO_Server_Export.h"
+#include "ciao/Servant_Activator.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ class Dynamic_Component_Servant_Base;
+
+ class CIAO_SERVER_Export Swapping_Container : public Session_Container
+ {
+ public:
+
+ Swapping_Container (CORBA::ORB_ptr o, Container_Impl *container_impl);
+
+ virtual ~Swapping_Container (void);
+
+ /// Initialize the container with a name.
+ virtual int init (const char *name = 0,
+ const CORBA::PolicyList *more_policies = 0)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr install_servant (PortableServer::Servant p,
+ Container::OA_Type t)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr get_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void ciao_uninstall_home (Components::CCMHome_ptr homeref)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void add_servant_map (PortableServer::ObjectId &oid,
+ Dynamic_Component_Servant_Base* servant);
+
+ virtual void delete_servant_map (PortableServer::ObjectId &oid);
+
+ virtual void deactivate_facet (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ PortableServer::POA_ptr the_home_servant_POA (void) const;
+
+ private:
+
+ /// Create POA for the component.
+ void create_servant_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root);
+
+ void create_home_servant_POA (const char *name,
+ const CORBA::PolicyList *p,
+ PortableServer::POA_ptr root);
+
+ void create_connections_POA (PortableServer::POA_ptr root);
+ protected:
+ unsigned long number_;
+
+ /// Static variable to store the highest number we have given out until
+ /// now
+ static ACE_Atomic_Op <ACE_SYNCH_MUTEX, unsigned long> serial_number_;
+
+ Dynamic_Component_Activator *dsa_;
+
+ };
+}
+
+// Macro for registration of an OBV factory in the generated
+// servant class. Similar to the macro for TAO in
+// tao/ValueType/ValueFactory.h but here we take advantage of
+// the fact that we have access to the current ORB indirectly
+// through the context and container.
+// @@Jai, is this macro required here?
+#define CIAO_REGISTER_OBV_FACTORY(FACTORY, VALUETYPE) \
+ { \
+ CORBA::ValueFactory factory = new FACTORY; \
+ CORBA::ORB_ptr orb = \
+ this->context_->_ciao_the_Container ()->the_ORB (); \
+ CORBA::ValueFactory prev_factory = \
+ orb->register_value_factory ( \
+ VALUETYPE::_tao_obv_static_repository_id (), \
+ factory); \
+ CORBA::remove_ref (prev_factory); \
+ CORBA::add_ref (factory); \
+ }
+
+#if defined (__ACE_INLINE__)
+# include "Swapping_Container.inl"
+#endif /* __ACE_INLINE__ */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_SWAPPING_CONTAINER_H */
diff --git a/modules/CIAO/ciao/Swapping_Container.inl b/modules/CIAO/ciao/Swapping_Container.inl
new file mode 100644
index 00000000000..079569724d7
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Container.inl
@@ -0,0 +1,8 @@
+// $Id$
+
+ACE_INLINE CORBA::Object_ptr
+CIAO::Swapping_Container::get_objref (PortableServer::Servant p)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->the_POA ()->servant_to_reference (p);
+}
diff --git a/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.cpp b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.cpp
new file mode 100644
index 00000000000..7b357c1a882
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.cpp
@@ -0,0 +1,35 @@
+// $Id$
+
+#include "Swapping_Servant_Home_Impl_Base.h"
+
+namespace CIAO
+{
+ Swapping_Home_Servant_Impl_Base::Swapping_Home_Servant_Impl_Base
+ (Swapping_Container * c)
+ : container_ (c)
+ {
+ }
+
+ Swapping_Home_Servant_Impl_Base::~Swapping_Home_Servant_Impl_Base (void)
+ {
+ }
+
+ // Operations for CCMHome interface.
+
+ CORBA::IRObject_ptr
+ Swapping_Home_Servant_Impl_Base::get_component_def (void)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+ CORBA::IRObject_ptr
+ Swapping_Home_Servant_Impl_Base::get_home_def (void)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (),
+ CORBA::IRObject::_nil ());
+ }
+
+}
diff --git a/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.h b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.h
new file mode 100644
index 00000000000..d9e86e81e7d
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_Base.h
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Servant_Home_Impl_Base.h
+ *
+ * $Id$
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_SERVANT_HOME_IMPL_BASE_H
+#define CIAO_SWAPPING_SERVANT_HOME_IMPL_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "CCM_HomeS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/CIAO_Server_Export.h"
+
+namespace CIAO
+{
+ class Swapping_Container;
+
+ /**
+ * @class Swapping_Home_Servant_Impl_Base
+ *
+ */
+ // @@ Jai, why are you inheriting from "home" here? What is the
+ // point?
+ // @@ JAI, probably my class naming convention was the problem.
+ // This is a home implementation and that is why inheriting from
+ // "home".
+ //
+ class CIAO_SERVER_Export Swapping_Home_Servant_Impl_Base
+ : public virtual POA_Components::CCMHome
+ {
+ public:
+ Swapping_Home_Servant_Impl_Base (Swapping_Container * c);
+
+ virtual ~Swapping_Home_Servant_Impl_Base (void);
+
+ // Operations for CCMHome interface.
+ virtual ::CORBA::IRObject_ptr get_component_def (void)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CORBA::IRObject_ptr get_home_def (void)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ Swapping_Container *container_;
+ private:
+ /// Not to be used
+ Swapping_Home_Servant_Impl_Base (void);
+ };
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SWAPPING_SERVANT_HOME_IMPL_BASE_H */
diff --git a/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.cpp b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.cpp
new file mode 100644
index 00000000000..a349718949e
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.cpp
@@ -0,0 +1,222 @@
+// $Id$
+
+#ifndef CIAO_SWAPPING_SERVANT_IMPL_T_C
+#define CIAO_SWAPPING_SERVANT_IMPL_T_C
+
+#include "ciao/Swapping_Servant_Home_Impl_T.h"
+#include "ciao/Dynamic_Component_Servant_T.h"
+
+namespace CIAO
+{
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::Swapping_Home_Servant_Impl (
+ typename EXEC::_ptr_type exe,
+ Session_Container * c,
+ const char* ins_name,
+ const char* obj_id,
+ const char* repo_id)
+ : Home_Servant_Impl_Base (c),
+ executor_ (EXEC::_duplicate (exe)),
+ ins_name_ (ins_name),
+ obj_id_ (obj_id),
+ repo_id_ (repo_id)
+ {
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::~Swapping_Home_Servant_Impl ()
+ {
+ const DYNAMIC_SERVANT_MAP_ITERATOR end =
+ this->dynamic_servant_map_.end ();
+
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (this->obj_id_);
+
+ try
+ {
+ this->container_->delete_servant_map (oid);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("~Swapping_Home_Servant_Impl\t\n");
+ }
+
+ for (DYNAMIC_SERVANT_MAP_ITERATOR iter =
+ this->dynamic_servant_map_.begin ();
+ iter != end; ++iter)
+ {
+ (*iter).int_id_->destroy (oid);
+ }
+ }
+
+ // Operations for CCMHome interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::remove_component (
+ ::Components::CCMObject_ptr
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+ {
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (this->obj_id_);
+
+ Dynamic_Component_Servant_Base *servant = 0;
+
+ if (this->dynamic_servant_map_.find (oid.in (), servant) == 0)
+ {
+ servant->destroy (oid);
+ }
+ }
+
+ // Operations for keyless home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ Components::CCMObject_ptr
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::create_component (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ return this->create ();
+ }
+
+ // Operations for implicit home interface.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ typename COMP_SVNT::_stub_ptr_type
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::create (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+ {
+ if (this->executor_.in () == 0)
+ {
+ ACE_THROW_RETURN (CORBA::INTERNAL (),
+ COMP_SVNT::_stub_type::_nil ());
+ }
+
+
+ ::Components::EnterpriseComponent_var _ciao_ec =
+ this->executor_->create ();
+
+ return this->_ciao_activate_component (_ciao_ec.in ());
+ }
+
+ // CIAO-specific operations.
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ typename COMP_SVNT::_stub_ptr_type
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::_ciao_activate_component (
+ ::Components::EnterpriseComponent_ptr ec
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ CORBA::Object_var hobj =
+ this->container_->get_home_objref (this);
+
+ Components::CCMHome_var home =
+ Components::CCMHome::_narrow (hobj.in ());
+
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (this->obj_id_);
+
+ CORBA::Object_var objref =
+ this->container_->generate_reference (
+ this->obj_id_,
+ this->repo_id_,
+ Container::Component);
+
+ Dynamic_Component_Servant_Base *svt =
+ new Dynamic_Component_Servant<COMP_SVNT> (ec,
+ home.in (),
+ this->ins_name_,
+ this,
+ this->container_);
+
+ this->container_->add_servant_map (oid, svt);
+
+ this->dynamic_servant_map_.bind (oid.in (), svt);
+
+ typedef typename COMP_SVNT::_stub_type stub_type;
+ typename COMP_SVNT::_stub_var_type ho =
+ stub_type::_narrow (objref.in ());
+
+ return ho._retn ();
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::update_component_map (
+ PortableServer::ObjectId &oid)
+ {
+ Dynamic_Component_Servant_Base *servant = 0;
+
+ if (this->dynamic_servant_map_.find (oid, servant) == 0)
+ {
+ servant->update_destroy_count ();
+ this->dynamic_servant_map_.unbind (oid);
+ }
+
+ return;
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ void
+ Swapping_Home_Servant_Impl<BASE_SKEL,
+ EXEC,
+ COMP_SVNT>::_ciao_passivate_component (
+ typename COMP_SVNT::_stub_ptr_type comp
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ PortableServer::ObjectId_var oid;
+
+ this->container_->uninstall_component (comp,
+ oid.out ());
+
+ COMP_SVNT *servant = 0;
+
+ if (this->component_map_.find (oid.in (), servant) == 0)
+ {
+ PortableServer::ServantBase_var safe (servant);
+
+ servant->ciao_passivate ();
+
+ this->component_map_.unbind (oid.in ());
+ }
+ }
+}
+
+#endif /* CIAO_SWAPPING_SERVANT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.h b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.h
new file mode 100644
index 00000000000..db85bbce784
--- /dev/null
+++ b/modules/CIAO/ciao/Swapping_Servant_Home_Impl_T.h
@@ -0,0 +1,129 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Swapping_Servant_Home_Impl_T.h
+ *
+ * $Id$
+ *
+ * This file contains the declaration of a mixin base class for
+ * the generated home servant class.
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_SWAPPING_SERVANT_HOME_IMPL_T_H
+#define CIAO_SWAPPING_SERVANT_HOME_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/Home_Servant_Impl_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Hash_Map_Manager_T.h"
+#include "ciao/Dynamic_Component_Servant_Base.h"
+
+namespace CIAO
+{
+ class Session_Container;
+
+ /**
+ * @class Swapping_Servant_Impl
+ *
+ * @brief Mixin base class for generated home servant.
+ *
+ * This class implements operations
+ * common to all generated home servants.
+ */
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename COMP_SVNT>
+ class Swapping_Home_Servant_Impl
+ : public virtual BASE_SKEL,
+ public virtual Home_Servant_Impl_Base
+ {
+ public:
+ Swapping_Home_Servant_Impl (typename EXEC::_ptr_type exe,
+ Session_Container * c,
+ const char* ins_name,
+ const char* obj_id,
+ const char* repo_id);
+
+ virtual ~Swapping_Home_Servant_Impl (void);
+
+ // Operations for CCMHome interface.
+
+ virtual void
+ remove_component (Components::CCMObject_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ // Operations for keyless home interface.
+
+ virtual ::Components::CCMObject_ptr
+ create_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ // Operations for implicit home interface.
+
+ virtual typename COMP_SVNT::_stub_ptr_type
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ virtual void
+ update_component_map (PortableServer::ObjectId &oid);
+
+ protected:
+ // CIAO-specific operations.
+
+ typename COMP_SVNT::_stub_ptr_type
+ _ciao_activate_component (::Components::EnterpriseComponent_ptr ec)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ _ciao_passivate_component (typename COMP_SVNT::_stub_ptr_type comp)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ typename EXEC::_var_type executor_;
+
+ ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ COMP_SVNT *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX>
+ component_map_;
+
+ typedef ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId,
+ Dynamic_Component_Servant_Base *,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX> DYNAMIC_SERVANT_MAP;
+
+ typedef DYNAMIC_SERVANT_MAP::iterator DYNAMIC_SERVANT_MAP_ITERATOR;
+ DYNAMIC_SERVANT_MAP dynamic_servant_map_;
+
+ const char* ins_name_;
+ const char* obj_id_;
+ const char* repo_id_;
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Swapping_Servant_Home_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Swapping_Servant_Home_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SWAPPING_SERVANT_HOME_IMPL_T_H */
diff --git a/modules/CIAO/ciao/Upgradeable_Context_Impl_T.cpp b/modules/CIAO/ciao/Upgradeable_Context_Impl_T.cpp
new file mode 100644
index 00000000000..33c3621dd48
--- /dev/null
+++ b/modules/CIAO/ciao/Upgradeable_Context_Impl_T.cpp
@@ -0,0 +1,88 @@
+// $Id$
+
+#ifndef CIAO_UPGRADEABLE_CONTEXT_IMPL_T_C
+#define CIAO_UPGRADEABLE_CONTEXT_IMPL_T_C
+
+#include "Upgradeable_Context_Impl_T.h"
+
+namespace CIAO
+{
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ Upgradeable_Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::
+ Upgradeable_Context_Impl (
+ Components::CCMHome_ptr home,
+ Session_Container *c,
+ SVNT *sv)
+ : session_context (home, c, sv),
+ servant_ (sv)
+ {
+ }
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ Upgradeable_Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::
+ ~Upgradeable_Context_Impl (void)
+ {
+ }
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ void
+ Upgradeable_Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::deactivate_facet (
+ const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ /*
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (obj_id);
+ */
+
+ this->container_->deactivate_facet (oid);
+ }
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ void
+ Upgradeable_Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::
+ remove_facet (CORBA::Object_ptr reference)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ PortableServer::ObjectId_var oid =
+ this->container_->the_facet_cons_POA ()->reference_to_id (reference);
+
+ this->update_port_activator (oid.in ());
+
+ this->deactivate_facet (oid.in ());
+ }
+
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ void
+ Upgradeable_Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR>::
+ update_port_activator (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ /*
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (obj_id);
+ */
+
+ CIAO::Servant_Activator *sa =
+ this->container_->ports_servant_activator ();
+ sa->update_port_activator (oid);
+ }
+
+}
+
+#endif /* CIAO_UPGRADEABLE_CONTEXT_IMPL_T_C */
diff --git a/modules/CIAO/ciao/Upgradeable_Context_Impl_T.h b/modules/CIAO/ciao/Upgradeable_Context_Impl_T.h
new file mode 100644
index 00000000000..53e171b8eda
--- /dev/null
+++ b/modules/CIAO/ciao/Upgradeable_Context_Impl_T.h
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Upgradeable_Context_Impl_T.h
+ *
+ * $Id$
+ *
+ */
+//=============================================================================
+
+
+#ifndef CIAO_UPGRADEABLE_CONTEXT_IMPL_T_H
+#define CIAO_UPGRADEABLE_CONTEXT_IMPL_T_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/CIAO_UpgradeableContextC.h"
+#include "ciao/Context_Impl_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+namespace CORBA
+{
+ class SystemException;
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ template <typename BASE_CTX,
+ typename SVNT,
+ typename COMP,
+ typename COMP_VAR>
+ class Upgradeable_Context_Impl : public virtual Context_Impl<
+ BASE_CTX, SVNT, COMP, COMP_VAR>
+ {
+ public:
+ Upgradeable_Context_Impl (Components::CCMHome_ptr home,
+ Session_Container *c,
+ SVNT *sv);
+
+ virtual ~Upgradeable_Context_Impl (void);
+
+ virtual void
+ deactivate_facet (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ update_port_activator (const PortableServer::ObjectId &oid)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ remove_facet (CORBA::Object_ptr reference)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::ConsumerDescriptions *
+ get_registered_consumers (const char *publisher_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection)) = 0;
+
+ protected:
+ SVNT *servant_;
+ COMP_VAR component_;
+ typedef Context_Impl<BASE_CTX, SVNT, COMP, COMP_VAR> session_context;
+ private:
+ /// Not to be used
+ Upgradeable_Context_Impl (void);
+ };
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "Upgradeable_Context_Impl_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Upgradeable_Context_Impl_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_UPGRADEABLE_CONTEXT_IMPL_T_H */
diff --git a/modules/CIAO/ciao/Version.h b/modules/CIAO/ciao/Version.h
new file mode 100644
index 00000000000..0e6c663ed5d
--- /dev/null
+++ b/modules/CIAO/ciao/Version.h
@@ -0,0 +1,9 @@
+// -*- C++ -*-
+// $Id$
+
+// This is file was automatically generated by $ACE_ROOT/bin/make_release.
+
+#define CIAO_MAJOR_VERSION 0
+#define CIAO_MINOR_VERSION 5
+#define CIAO_BETA_VERSION 6
+#define CIAO_VERSION "0.5.6"
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp b/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp
new file mode 100644
index 00000000000..47f6370cf26
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.cpp
@@ -0,0 +1,100 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file CIAO_EventService_Factory_impl.cpp
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ */
+//=============================================================================
+
+#include "CIAO_EventService_Factory_impl.h"
+#include "ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h"
+
+namespace CIAO
+{
+ EventService_Factory_impl::EventService_Factory_impl (void)
+ {
+ }
+
+ EventService_Factory_impl::EventService_Factory_impl (
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa) :
+ orb_ (CORBA::ORB::_duplicate (orb)),
+ poa_ (PortableServer::POA::_duplicate (poa))
+ {
+ }
+
+ EventService_Factory_impl::~EventService_Factory_impl (void)
+ {
+ }
+
+ CIAO_Event_Service_ptr
+ EventService_Factory_impl::create (EventServiceType type,
+ const char * ec_name)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::EventService_Factory_impl::create_event_service\n"));
+
+ EventServiceBase * event_service = 0;
+
+ switch (type)
+ {
+ case RTEC:
+ ACE_NEW_RETURN (event_service,
+ RTEventService (this->orb_.in (),
+ this->poa_.in (),
+ ec_name),
+ 0);
+ break;
+
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR, "CIAO::EventService_Factory_impl::"
+ "create_event_service: unsupported type.\n"),
+ 0);
+
+ }
+
+ // Activate the servant
+ PortableServer::ObjectId_var oid =
+ this->poa_->activate_object (event_service);
+
+ CORBA::Object_var obj = poa_->id_to_reference (oid.in());
+
+ CIAO_Event_Service_var service =
+ CIAO_Event_Service::_narrow (obj.in ());
+
+ //CIAO_Event_Service_var service = event_service->_this ();
+ return service._retn ();
+ }
+
+ int
+ EventService_Factory_impl::Initializer (void)
+ {
+ return
+ ACE_Service_Config::process_directive (
+ ace_svc_desc_EventService_Factory_impl
+ );
+ }
+
+ void EventService_Factory_impl::initialize (
+ CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
+ {
+ this->orb_ = CORBA::ORB::_duplicate (orb);
+ this->poa_ = PortableServer::POA::_duplicate (poa);
+ }
+
+ACE_STATIC_SVC_DEFINE (
+ EventService_Factory_impl,
+ ACE_TEXT ("CIAO_EventService_Factory"),
+ ACE_SVC_OBJ_T,
+ &ACE_SVC_NAME (EventService_Factory_impl),
+ ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
+ 0
+ )
+
+ACE_FACTORY_DEFINE (CIAO_EVENTS, EventService_Factory_impl)
+
+} // namespace CIAO
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.h b/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.h
new file mode 100644
index 00000000000..7ba36ac9a0d
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_EventService_Factory_impl.h
@@ -0,0 +1,82 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file CIAO_EventService_Factory_impl.h
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_EVENTSERVICE_FACTORY_IMPL_H
+#define CIAO_EVENTSERVICE_FACTORY_IMPL_H
+#include /**/ "ace/pre.h"
+
+#include "tao/PortableServer/PortableServer.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_Events_Export.h"
+#include "ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h"
+
+namespace CIAO
+{
+ class CIAO_EVENTS_Export EventService_Factory_impl :
+ public ACE_Service_Object
+ {
+ public:
+ EventService_Factory_impl (void);
+
+ EventService_Factory_impl (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa);
+
+ //void init (CORBA::ORB_ptr orb,
+ // PortableServer::POA_ptr poa);
+
+ virtual ~EventService_Factory_impl (void);
+
+ /// A factory method which creates an CIAO_Event_Service object
+ virtual CIAO_Event_Service_ptr create (EventServiceType type,
+ const char * ec_name);
+
+ virtual void initialize (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa);
+
+ /// Used to force the initialization.
+ static int Initializer (void);
+
+ private:
+ /// Reference to the ORB
+ CORBA::ORB_var orb_;
+
+ /// Reference to the Root POA
+ PortableServer::POA_var poa_;
+ };
+
+ACE_STATIC_SVC_DECLARE (EventService_Factory_impl)
+ACE_FACTORY_DECLARE (CIAO_EVENTS, EventService_Factory_impl)
+
+}
+
+#if defined (ACE_HAS_BROKEN_STATIC_CONSTRUCTORS)
+
+typedef int (*CIAO_Module_Initializer) (void);
+
+static CIAO_Module_Initializer
+CIAO_Requires_EventService_Initializer =
+ &CIAO::EventService_Factory_impl::Initializer;
+
+#else
+
+static int
+CIAO_Requires_EventService_Initializer =
+ CIAO::EventService_Factory_impl::Initializer ();
+
+#endif /* ACE_HAS_BROKEN_STATIC_CONSTRUCTORS */
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_EVENTSERVICE_FACTORY_IMPL_H */
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events.mpc b/modules/CIAO/ciaosvcs/Events/CIAO_Events.mpc
new file mode 100644
index 00000000000..a5a1417673e
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events.mpc
@@ -0,0 +1,20 @@
+// -*- MPC -*-
+// $Id$
+
+project (CIAO_DnC_Events) : orbsvcslib, ciao_rtevent_dnc {
+
+ sharedname = CIAO_DnC_Events
+ idlflags += -Wb,export_include=CIAO_Events_Export.h -Wb,export_macro=CIAO_EVENTS_Export
+ dynamicflags = CIAO_EVENTS_BUILD_DLL
+
+ Source_Files {
+ CIAO_EventService_Factory_impl.cpp
+ }
+
+ Header_Files {
+ CIAO_EventService_Factory_impl.h
+ }
+
+ IDL_Files {
+ }
+}
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp
new file mode 100644
index 00000000000..9f6729ea0ef
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.cpp
@@ -0,0 +1,37 @@
+//=============================================================================
+/**
+ * @file CIAO_EventServiceBase.cpp
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#include "CIAO_EventServiceBase.h"
+
+namespace CIAO
+{
+ EventServiceBase::
+ EventServiceBase (void)
+ {
+ }
+
+ EventServiceBase::~EventServiceBase (void)
+ {
+ }
+
+ void
+ EventServiceBase::ciao_push_event (
+ ::Components::EventBase * evt,
+ const char * source_id,
+ ::CORBA::TypeCode_ptr tc)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::BadEventType))
+ {
+ ACE_UNUSED_ARG (evt);
+ ACE_UNUSED_ARG (source_id);
+ ACE_UNUSED_ARG (tc);
+ }
+}
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h
new file mode 100644
index 00000000000..be9e8f68e36
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h
@@ -0,0 +1,142 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file CIAO_EventServiceBase.h
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_EVENTSERVICEBASE_H
+#define CIAO_EVENTSERVICEBASE_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_EventsS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ /**
+ * @class EventServiceBase
+ *
+ * An abstract base servant class to implement the CIAO_Event_Service
+ * interface. The derived classes will provide appropriate
+ * implementations of the connect, disconnect, and push methods depending on
+ * the event mechanism used.
+ */
+ class CIAO_EVENTS_Export EventServiceBase :
+ public virtual POA_CIAO::CIAO_Event_Service
+ {
+ public:
+ EventServiceBase (void);
+
+ virtual ~EventServiceBase (void);
+
+ /// A factory method for Supplier_Config objects
+ virtual Supplier_Config_ptr
+ create_supplier_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ /// A factory method for Consumer_Config objects
+ virtual Consumer_Config_ptr
+ create_consumer_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
+
+ /**
+ * @fn void connect_event_supplier (Supplier_Config_ptr supplier_config)
+ *
+ * Connects an event supplier using the options specified by
+ * @c supplier_config.
+ */
+ virtual void connect_event_supplier (
+ Supplier_Config_ptr supplier_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException)) = 0;
+
+ /**
+ * @fn void connect_event_consumer (Consumer_Config_ptr consumer_config)
+ *
+ * Connects an event consumer using the options specified by
+ * @c consumer_config.
+ */
+ virtual void connect_event_consumer (
+ Consumer_Config_ptr consumer_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException)) = 0;
+
+ /**
+ * @fn void disconnect_event_supplier ()
+ *
+ * Disconnects the event supplier associated with this object.
+ */
+ virtual void disconnect_event_supplier (
+ const char * consumer_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection)) = 0;
+
+ /**
+ * @fn void disconnect_event_consumer (CONNECTION_ID consumer_id)
+ *
+ * Disconnects the event consumer with UUID @c consumer_id.
+ */
+ virtual void disconnect_event_consumer (
+ const char * consumer_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection)) = 0;
+
+ /**
+ * @fn void push_event (Components::EventBase * ev)
+ *
+ * Pushes event @c ev to all consumers.
+ */
+ virtual void push_event (
+ Components::EventBase * ev)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException)) = 0;
+
+ /**
+ * Pushes event @c ev to all consumers. The source id of the
+ * supplier is specified through @c source_id.
+ */
+ virtual void ciao_push_event (
+ ::Components::EventBase * evt,
+ const char * source_id,
+ ::CORBA::TypeCode_ptr tc)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::BadEventType));
+ };
+
+ class Event_Consumer_Config_Base :
+ public virtual POA_CIAO::Consumer_Config
+ {
+ public:
+ virtual void start_conjunction_group (
+ ::CORBA::Long size)
+ ACE_THROW_SPEC ((::CORBA::SystemException)) = 0;
+
+ virtual void start_disjunction_group (
+ ::CORBA::Long size)
+ ACE_THROW_SPEC ((::CORBA::SystemException)) = 0;
+
+ virtual void insert_source (
+ const char * source_id)
+ ACE_THROW_SPEC ((::CORBA::SystemException)) = 0;
+
+ virtual void insert_type (
+ ::CORBA::Long event_type)
+ ACE_THROW_SPEC ((::CORBA::SystemException)) = 0;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_EVENTSERVICEBASE_H */
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl
new file mode 100644
index 00000000000..266f8b472e9
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl
@@ -0,0 +1,79 @@
+// $Id$
+
+/**
+ * @file CIAO_Events.idl
+ *
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ *
+ * @brief Interfaces for configuring CIAO's event mechanism.
+ */
+
+#if !defined (CIAO_EVENTS_IDL)
+#define CIAO_EVENTS_IDL
+
+#include "ciao/CCM_EventConsumerBase.idl"
+#include "ciao/CCM_Base.idl"
+
+module CIAO
+{
+ /// A component's UUID + port name.
+ typedef string CONNECTION_ID;
+
+ enum EventServiceType
+ {
+ EC,
+ RTEC,
+ NOTIFY,
+ RTNOTIFY
+ };
+
+ interface Supplier_Config
+ {
+ attribute CONNECTION_ID supplier_id;
+
+ readonly attribute EventServiceType service_type;
+
+ void destroy ();
+ };
+
+ interface Consumer_Config
+ {
+ attribute CONNECTION_ID consumer_id;
+
+ readonly attribute EventServiceType service_type;
+
+ attribute Components::EventConsumerBase consumer;
+
+ void start_conjunction_group (in long size);
+
+ void start_disjunction_group (in long size);
+
+ void insert_source (in CONNECTION_ID source_id);
+
+ void insert_type (in long event_type);
+
+ void destroy ();
+ };
+
+ interface CIAO_Event_Service : Components::EventConsumerBase
+ {
+ Supplier_Config create_supplier_config ();
+
+ Consumer_Config create_consumer_config ();
+
+ void connect_event_supplier (in Supplier_Config supplier_conf);
+
+ void connect_event_consumer (in Consumer_Config consumer_conf);
+
+ void disconnect_event_supplier (in CONNECTION_ID conn_id)
+ raises (Components::InvalidConnection);
+
+ void disconnect_event_consumer (in CONNECTION_ID conn_id)
+ raises (Components::InvalidConnection);
+
+ //void push_event (in Components::EventBase ev);
+ };
+};
+
+#endif /* CIAO_EVENTS_IDL */
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc
new file mode 100644
index 00000000000..ef9688d0d5b
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Base.mpc
@@ -0,0 +1,26 @@
+// -*- MPC -*-
+// $Id$
+
+
+project (CIAO_DnC_Events_Base) : orbsvcslib, ciao_client_dnc, ciao_container_dnc {
+
+ sharedname = CIAO_DnC_Events_Base
+ idlflags += -Wb,export_include=CIAO_Events_Export.h -Wb,export_macro=CIAO_EVENTS_Export
+ dynamicflags = CIAO_EVENTS_BUILD_DLL
+
+ IDL_Files {
+ CIAO_Events.idl
+ }
+
+ Source_Files {
+ CIAO_EventServiceBase.cpp
+ CIAO_EventsC.cpp
+ CIAO_EventsS.cpp
+ }
+
+ Header_Files {
+ CIAO_EventsC.h
+ CIAO_EventsS.h
+ CIAO_EventServiceBase.h
+ }
+}
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h
new file mode 100644
index 00000000000..6678cef4bcc
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Base/CIAO_Events_Export.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_EVENTS
+// ------------------------------
+#ifndef CIAO_EVENTS_EXPORT_H
+#define CIAO_EVENTS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_EVENTS_HAS_DLL)
+# define CIAO_EVENTS_HAS_DLL 1
+#endif /* ! CIAO_EVENTS_HAS_DLL */
+
+#if defined (CIAO_EVENTS_HAS_DLL) && (CIAO_EVENTS_HAS_DLL == 1)
+# if defined (CIAO_EVENTS_BUILD_DLL)
+# define CIAO_EVENTS_Export ACE_Proper_Export_Flag
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_EVENTS_BUILD_DLL */
+# define CIAO_EVENTS_Export ACE_Proper_Import_Flag
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_EVENTS_BUILD_DLL */
+#else /* CIAO_EVENTS_HAS_DLL == 1 */
+# define CIAO_EVENTS_Export
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_EVENTS_HAS_DLL == 1 */
+
+// Set CIAO_EVENTS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_EVENTS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_EVENTS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_EVENTS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_EVENTS_NTRACE */
+
+#if (CIAO_EVENTS_NTRACE == 1)
+# define CIAO_EVENTS_TRACE(X)
+#else /* (CIAO_EVENTS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_EVENTS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_EVENTS_NTRACE == 1) */
+
+#endif /* CIAO_EVENTS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_Events_Export.h b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Export.h
new file mode 100644
index 00000000000..6678cef4bcc
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_Events_Export.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_EVENTS
+// ------------------------------
+#ifndef CIAO_EVENTS_EXPORT_H
+#define CIAO_EVENTS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_EVENTS_HAS_DLL)
+# define CIAO_EVENTS_HAS_DLL 1
+#endif /* ! CIAO_EVENTS_HAS_DLL */
+
+#if defined (CIAO_EVENTS_HAS_DLL) && (CIAO_EVENTS_HAS_DLL == 1)
+# if defined (CIAO_EVENTS_BUILD_DLL)
+# define CIAO_EVENTS_Export ACE_Proper_Export_Flag
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_EVENTS_BUILD_DLL */
+# define CIAO_EVENTS_Export ACE_Proper_Import_Flag
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_EVENTS_BUILD_DLL */
+#else /* CIAO_EVENTS_HAS_DLL == 1 */
+# define CIAO_EVENTS_Export
+# define CIAO_EVENTS_SINGLETON_DECLARATION(T)
+# define CIAO_EVENTS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_EVENTS_HAS_DLL == 1 */
+
+// Set CIAO_EVENTS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_EVENTS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_EVENTS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_EVENTS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_EVENTS_NTRACE */
+
+#if (CIAO_EVENTS_NTRACE == 1)
+# define CIAO_EVENTS_TRACE(X)
+#else /* (CIAO_EVENTS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_EVENTS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_EVENTS_NTRACE == 1) */
+
+#endif /* CIAO_EVENTS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h
new file mode 100644
index 00000000000..d79e4a4581f
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEVENT_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_RTEVENT
+// ------------------------------
+#ifndef CIAO_RTEVENT_EXPORT_H
+#define CIAO_RTEVENT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CIAO_RTEVENT_HAS_DLL)
+# define CIAO_RTEVENT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CIAO_RTEVENT_HAS_DLL */
+
+#if !defined (CIAO_RTEVENT_HAS_DLL)
+# define CIAO_RTEVENT_HAS_DLL 1
+#endif /* ! CIAO_RTEVENT_HAS_DLL */
+
+#if defined (CIAO_RTEVENT_HAS_DLL) && (CIAO_RTEVENT_HAS_DLL == 1)
+# if defined (CIAO_RTEVENT_BUILD_DLL)
+# define CIAO_RTEVENT_Export ACE_Proper_Export_Flag
+# define CIAO_RTEVENT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_RTEVENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_RTEVENT_BUILD_DLL */
+# define CIAO_RTEVENT_Export ACE_Proper_Import_Flag
+# define CIAO_RTEVENT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_RTEVENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_RTEVENT_BUILD_DLL */
+#else /* CIAO_RTEVENT_HAS_DLL == 1 */
+# define CIAO_RTEVENT_Export
+# define CIAO_RTEVENT_SINGLETON_DECLARATION(T)
+# define CIAO_RTEVENT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_RTEVENT_HAS_DLL == 1 */
+
+// Set CIAO_RTEVENT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_RTEVENT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_RTEVENT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_RTEVENT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_RTEVENT_NTRACE */
+
+#if (CIAO_RTEVENT_NTRACE == 1)
+# define CIAO_RTEVENT_TRACE(X)
+#else /* (CIAO_RTEVENT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_RTEVENT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_RTEVENT_NTRACE == 1) */
+
+#endif /* CIAO_RTEVENT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp
new file mode 100644
index 00000000000..1ef5b1ad889
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.cpp
@@ -0,0 +1,833 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file CIAO_RTEvent.cpp
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ */
+//=============================================================================
+
+#include "CIAO_RTEvent.h"
+#include "ciao/CIAO_common.h"
+#include "SimpleAddressServer.h"
+#include "tao/ORB_Core.h"
+#include "tao/AnyTypeCode/Any_Unknown_IDL_Type.h"
+#include "orbsvcs/CosNamingC.h"
+
+#include <sstream>
+
+namespace CIAO
+{
+
+
+ RTEventService::RTEventService (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * ec_name) :
+ orb_ (CORBA::ORB::_duplicate (orb)),
+ root_poa_ (PortableServer::POA::_duplicate (poa))
+ {
+ this->create_rt_event_channel (ec_name);
+ }
+
+
+ RTEventService::~RTEventService (void)
+ {
+ }
+
+
+ Supplier_Config_ptr
+ RTEventService::create_supplier_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ RTEvent_Supplier_Config_impl * supplier_config = 0;
+ ACE_NEW_RETURN (supplier_config,
+ RTEvent_Supplier_Config_impl (this->root_poa_.in ()),
+ Supplier_Config::_nil ());
+ RTEvent_Supplier_Config_var return_rtec =
+ supplier_config->_this ();
+ return return_rtec._retn ();
+ }
+
+
+ Consumer_Config_ptr
+ RTEventService::create_consumer_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ RTEvent_Consumer_Config_impl * consumer_config = 0;
+ ACE_NEW_RETURN (consumer_config,
+ RTEvent_Consumer_Config_impl (this->root_poa_.in ()),
+ Consumer_Config::_nil ());
+ RTEvent_Consumer_Config_var return_rtec =
+ consumer_config->_this ();
+ return return_rtec._retn ();
+ }
+
+
+ // @@TODO: We might want to maintain a map for managing multiple proxy consumers
+ // to multiple event suppliers.
+ void
+ RTEventService::connect_event_supplier (
+ Supplier_Config_ptr supplier_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::RTEventService::connect_event_supplier\n"));
+ }
+
+ RTEvent_Supplier_Config_ptr rt_config =
+ RTEvent_Supplier_Config::_narrow (supplier_config);
+
+ if (CORBA::is_nil (rt_config))
+ {
+ throw CORBA::BAD_PARAM ();
+ }
+
+ // Get a proxy push consumer from the EventChannel.
+ RtecEventChannelAdmin::SupplierAdmin_var supplier_admin =
+ this->rt_event_channel_->for_suppliers ();
+
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy_push_consumer =
+ supplier_admin->obtain_push_consumer();
+
+ // Create and register supplier servant
+ RTEventServiceSupplier_impl * supplier_servant = 0;
+ ACE_NEW (supplier_servant,
+ RTEventServiceSupplier_impl (root_poa_.in ()));
+ RtecEventComm::PushSupplier_var push_supplier =
+ supplier_servant->_this ();
+
+ RtecEventChannelAdmin::SupplierQOS_var qos =
+ rt_config->rt_event_qos ();
+
+ ACE_SupplierQOS_Factory supplier_qos;
+ supplier_qos.insert (ACE_ES_EVENT_SOURCE_ANY, ACE_ES_EVENT_ANY, 0, 1);
+
+ supplier_qos.insert (ACE_ES_EVENT_SOURCE_ANY,
+ ACE_ES_EVENT_ANY,
+ 0, // handle to the rt_info structure
+ 1);
+
+ proxy_push_consumer->connect_push_supplier (push_supplier.in (),
+ supplier_qos.get_SupplierQOS ());
+
+
+ this->proxy_consumer_map_.bind (
+ supplier_config->supplier_id (),
+ proxy_push_consumer._retn ());
+ }
+
+ void
+ RTEventService::connect_event_consumer (
+ Consumer_Config_ptr consumer_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::RTEventService::connect_event_consumer\n"));
+ }
+
+ RTEvent_Consumer_Config_ptr rt_config =
+ RTEvent_Consumer_Config::_narrow (consumer_config);
+
+ if (CORBA::is_nil (rt_config))
+ {
+ throw CORBA::BAD_PARAM ();
+ }
+
+ Components::EventConsumerBase_var consumer =
+ consumer_config->consumer ();
+
+ if (CORBA::is_nil (consumer.in ()))
+ ACE_DEBUG ((LM_DEBUG, "nil event consumer\n"));
+
+ RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin =
+ this->rt_event_channel_->for_consumers ();
+
+ RtecEventChannelAdmin::ProxyPushSupplier_var proxy_supplier =
+ consumer_admin->obtain_push_supplier ();
+
+ // Create and register consumer servant
+ RTEventServiceConsumer_impl * consumer_servant = 0;
+ ACE_NEW (consumer_servant,
+ RTEventServiceConsumer_impl (
+ root_poa_.in (),
+ consumer.in ()));
+ RtecEventComm::PushConsumer_var push_consumer =
+ consumer_servant->_this ();
+
+ RtecEventChannelAdmin::ConsumerQOS_var qos =
+ rt_config->rt_event_qos ();
+
+ ACE_DEBUG ((LM_DEBUG, "\n======== ConsumerQoS length is: %d\n\n",
+ qos->dependencies.length ()));
+
+ if (qos->dependencies.length () == 0)
+ {
+ qos->dependencies.length (1);
+ qos->dependencies[0].event.header.type = ACE_ES_EVENT_ANY;
+ qos->dependencies[0].event.header.source = ACE_ES_EVENT_SOURCE_ANY;
+ qos->dependencies[0].rt_info = 0;
+
+ ACE_DEBUG ((LM_DEBUG, "\n======== Normalized ConsumerQoS length is: %d\n\n",
+ qos->dependencies.length ()));
+ }
+
+ proxy_supplier->connect_push_consumer (push_consumer.in (),
+ qos.in ()
+ //qos_factory.get_ConsumerQOS ()
+ );
+
+ ACE_CString consumer_id =
+ consumer_config->consumer_id ();
+
+ this->proxy_supplier_map_.bind (consumer_id.c_str (), proxy_supplier._retn ());
+ }
+
+ void
+ RTEventService::disconnect_event_supplier (
+ const char * connection_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection))
+ {
+ ACE_UNUSED_ARG (connection_id);
+
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy_consumer;
+
+ this->proxy_consumer_map_.unbind (connection_id, proxy_consumer);
+
+ proxy_consumer->disconnect_push_consumer ();
+ }
+
+ void
+ RTEventService::disconnect_event_consumer (
+ const char * connection_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection))
+ {
+ RtecEventChannelAdmin::ProxyPushSupplier_var proxy_supplier;
+
+ this->proxy_supplier_map_.unbind (connection_id, proxy_supplier);
+
+ proxy_supplier->disconnect_push_supplier ();
+ }
+
+ void
+ RTEventService::push_event (
+ Components::EventBase * ev)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ ACE_UNUSED_ARG (ev);
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "------CIAO::RTEventService::push_event------\n"));
+ }
+ }
+
+ void
+ RTEventService::ciao_push_event (
+ Components::EventBase * ev,
+ const char * source_id,
+ CORBA::TypeCode_ptr tc)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::BadEventType))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "------CIAO::RTEventService::ciao_push_event------\n"));
+ }
+ RtecEventComm::EventSet events (1);
+ events.length (1);
+
+ ACE_Hash<ACE_CString> hasher;
+
+ events[0].header.source = hasher (source_id);
+ events[0].header.type = ACE_ES_EVENT_ANY;
+ events[0].header.ttl = 10;
+
+ // We can't use the Any insert operator here, since it will put the
+ // EventBase typecode into the Any, and the actual eventtype's fields
+ // (if any) will get truncated when the Any is demarshaled. So the
+ // signature of this method has been changed to pass in the derived
+ // typecode, and TAO-specific methods are used to assign it as the
+ // Any's typecode and encode the value. This incurs an extra
+ // encoding, which we may want to try to optimize someday.
+ TAO_OutputCDR out;
+ out << ev;
+ TAO_InputCDR in (out);
+ TAO::Unknown_IDL_Type *unk = 0;
+ ACE_NEW (unk,
+ TAO::Unknown_IDL_Type (tc, in));
+ events[0].data.any_value.replace (unk);
+
+ ACE_DEBUG ((LM_DEBUG, "******* push event for source string: %s\n", source_id));
+ ACE_DEBUG ((LM_DEBUG, "******* push event for source id: %i\n", events[0].header.source));
+
+ RtecEventChannelAdmin::ProxyPushConsumer_var proxy_consumer;
+
+ if (this->proxy_consumer_map_.find (source_id, proxy_consumer) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "CIAO (%P|%t) - RTEventService::ciao_push_event, "
+ "Error in finding the proxy consumer object.\n"));
+ throw Components::BadEventType ();
+ }
+
+ proxy_consumer->push (events);
+ }
+
+ void
+ RTEventService::create_rt_event_channel (const char * ec_name)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::EventService_Factory_impl::create_rt_event_channel\n"));
+ }
+
+ TAO_EC_Default_Factory::init_svcs ();
+
+ TAO_EC_Event_Channel_Attributes attributes (this->root_poa_.in (),
+ this->root_poa_.in ());
+ TAO_EC_Event_Channel * ec_servant = 0;
+ ACE_NEW (ec_servant, TAO_EC_Event_Channel (attributes));
+ ec_servant->activate ();
+ this->rt_event_channel_ = ec_servant->_this ();
+
+ if (false)
+ {
+ // Find the Naming Service.
+ CORBA::Object_var obj = orb_->resolve_initial_references("NameService");
+ CosNaming::NamingContextExt_var root_context = CosNaming::NamingContextExt::_narrow(obj.in());
+
+ // Bind the Event Channel using Naming Services
+ CosNaming::Name_var name = root_context->to_name (ec_name);
+ ACE_DEBUG ((LM_DEBUG, "\nRegister naming: %s\n", ec_name));
+ root_context->rebind (name.in(), rt_event_channel_.in());
+ }
+ }
+
+ ::CORBA::Boolean
+ RTEventService::create_addr_serv (
+ const char * name,
+ ::CORBA::UShort port,
+ const char * address)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_ERROR, "Create an address server using port [%d]\n", port));
+
+ // Initialize the address server with the desired address.
+ // This will be used by the sender object and the multicast
+ // receiver.
+ ACE_INET_Addr send_addr (port, address);
+
+ SimpleAddressServer * addr_srv_impl = new SimpleAddressServer (send_addr);
+
+ PortableServer::ObjectId_var addr_srv_oid =
+ this->root_poa_->activate_object (addr_srv_impl);
+ CORBA::Object_var addr_srv_obj =
+ this->root_poa_->id_to_reference (addr_srv_oid.in());
+ RtecUDPAdmin::AddrServer_var addr_srv =
+ RtecUDPAdmin::AddrServer::_narrow (addr_srv_obj.in());
+
+/*
+ // First we convert the string into an INET address, then we
+ // convert that into the right IDL structure:
+ ACE_INET_Addr udp_addr (address);
+ ACE_DEBUG ((LM_DEBUG,
+ "udp mcast address is: %s\n",
+ address));
+ RtecUDPAdmin::UDP_Addr addr;
+ addr.ipaddr = udp_addr.get_ip_address ();
+ addr.port = udp_addr.get_port_number ();
+
+ // Now we create and activate the servant
+ SimpleAddressServer as_impl (addr);
+ RtecUDPAdmin::AddrServer_var addr_srv =
+ as_impl._this ();
+*/
+
+ this->addr_serv_map_.bind (
+ name,
+ RtecUDPAdmin::AddrServer::_duplicate (addr_srv.in ()));
+
+
+ return true;
+ }
+
+ ::CORBA::Boolean
+ RTEventService::create_sender (
+ const char * addr_serv_id)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Create a Sender object with addr_serv_id: %s\n",addr_serv_id ));
+
+ // We need a local socket to send the data, open it and check
+ // that everything is OK:
+ TAO_ECG_Refcounted_Endpoint endpoint(new TAO_ECG_UDP_Out_Endpoint);
+ if (endpoint->dgram ().open (ACE_Addr::sap_any) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR, "Cannot open send endpoint\n"),
+ 1);
+ }
+
+ RtecUDPAdmin::AddrServer_var addr_srv;
+ if (this->addr_serv_map_.find (addr_serv_id, addr_srv) != 0)
+ return false;
+
+ // Now we setup the sender:
+ TAO_EC_Servant_Var<TAO_ECG_UDP_Sender> sender = TAO_ECG_UDP_Sender::create();
+ sender->init (this->rt_event_channel_.in (),
+ addr_srv.in (),
+ endpoint);
+
+ // Setup the subscription and connect to the EC
+ ACE_ConsumerQOS_Factory cons_qos_fact;
+ cons_qos_fact.start_disjunction_group ();
+ cons_qos_fact.insert (ACE_ES_EVENT_SOURCE_ANY, ACE_ES_EVENT_ANY, 0);
+ RtecEventChannelAdmin::ConsumerQOS sub = cons_qos_fact.get_ConsumerQOS ();
+ sub.is_gateway = 1;
+ sender->connect (sub);
+
+ return true;
+ }
+
+ ::CORBA::Boolean
+ RTEventService::create_receiver (
+ const char * addr_serv_id,
+ ::CORBA::Boolean is_multicast,
+ ::CORBA::UShort listen_port)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Create a receiver object with addr_serv_id: %s\n",addr_serv_id ));
+
+ // Create and initialize the receiver
+ TAO_EC_Servant_Var<TAO_ECG_UDP_Receiver> receiver =
+ TAO_ECG_UDP_Receiver::create();
+
+ // AddressServer is necessary when "multicast" is enabled, but not for "udp"
+ if (is_multicast)
+ {
+ TAO_ECG_UDP_Out_Endpoint endpoint;
+ if (endpoint.dgram ().open (ACE_Addr::sap_any) == -1)
+ {
+ ACE_DEBUG ((LM_ERROR, "Cannot open send endpoint\n"));
+ return false;
+ }
+
+ // TAO_ECG_UDP_Receiver::init() takes a TAO_ECG_Refcounted_Endpoint.
+ // If we don't clone our endpoint and pass &endpoint, the receiver will
+ // attempt to delete endpoint during shutdown.
+ TAO_ECG_UDP_Out_Endpoint* clone;
+ ACE_NEW_RETURN (clone,
+ TAO_ECG_UDP_Out_Endpoint (endpoint),
+ false);
+
+ RtecUDPAdmin::AddrServer_var addr_srv;
+
+ if (this->addr_serv_map_.find (addr_serv_id, addr_srv) != 0)
+ return false;
+
+ receiver->init (this->rt_event_channel_.in (),
+ clone,
+ addr_srv.in ());
+ }
+ else
+ {
+ receiver->init (this->rt_event_channel_.in (), 0, 0);
+ }
+
+ // Setup the registration and connect to the event channel
+ ACE_SupplierQOS_Factory supp_qos_fact;
+ supp_qos_fact.insert (ACE_ES_EVENT_SOURCE_ANY, ACE_ES_EVENT_ANY, 0, 1);
+ RtecEventChannelAdmin::SupplierQOS pub = supp_qos_fact.get_SupplierQOS ();
+ receiver->connect (pub);
+
+ // Create the appropriate event handler and register it with the reactor
+
+ if (is_multicast)
+ {
+ auto_ptr<TAO_ECG_Mcast_EH> mcast_eh (new TAO_ECG_Mcast_EH (receiver.in()));
+ mcast_eh->reactor (this->orb_->orb_core ()->reactor ());
+ mcast_eh->open (this->rt_event_channel_.in());
+ mcast_eh.release();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nUDP Event Handler Port [%d]\n", listen_port));
+
+ //auto_ptr<TAO_ECG_UDP_EH> udp_eh (new TAO_ECG_UDP_EH (receiver.in()));
+ TAO_ECG_UDP_EH * udp_eh = new TAO_ECG_UDP_EH (receiver.in());
+
+ udp_eh->reactor (this->orb_->orb_core ()->reactor ());
+
+ ACE_INET_Addr local_addr (listen_port);
+ if (udp_eh->open (local_addr) == -1)
+ {
+ ACE_DEBUG ((LM_ERROR, "Cannot open event handler on port [%d]\n", listen_port));
+ return false;
+ }
+ //udp_eh.release ();
+ }
+
+ return true;
+ }
+
+
+ ::RtecEventChannelAdmin::EventChannel_ptr
+ RTEventService::tao_rt_event_channel ()
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+ {
+ return this->rt_event_channel_.in ();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ /// Supplier Servant Implementation
+ //////////////////////////////////////////////////////////////////////
+
+ RTEventServiceSupplier_impl::RTEventServiceSupplier_impl (
+ PortableServer::POA_ptr poa) :
+ poa_ (PortableServer::POA::_duplicate (poa))
+ {
+ }
+
+ void
+ RTEventServiceSupplier_impl::disconnect_push_supplier (void)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
+ this->poa_->deactivate_object (oid);
+ this->_remove_ref ();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ /// Consumer Servant Implementation
+ //////////////////////////////////////////////////////////////////////
+
+ RTEventServiceConsumer_impl::RTEventServiceConsumer_impl (
+ PortableServer::POA_ptr poa,
+ Components::EventConsumerBase_ptr consumer) :
+ poa_ (PortableServer::POA::_duplicate (poa)),
+ event_consumer_ (Components::EventConsumerBase::_duplicate (consumer))
+ {
+ }
+
+ void
+ RTEventServiceConsumer_impl::push (const RtecEventComm::EventSet& events)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::RTEventServiceConsumer_impl::push\n"));
+ }
+
+ for (size_t i = 0; i < events.length (); ++i)
+ {
+ std::ostringstream out;
+ out << "Received event,"
+ << " type: " << events[i].header.type
+ << " source: " << events[i].header.source;
+
+ ACE_OS::printf("%s\n", out.str().c_str()); // printf is synchronized
+
+ Components::EventBase * ev = 0;
+ try
+ {
+ TAO::Unknown_IDL_Type *unk =
+ dynamic_cast<TAO::Unknown_IDL_Type *> (events[i].data.any_value.impl ());
+ TAO_InputCDR for_reading (unk->_tao_get_cdr ());
+
+ if (for_reading >> ev)
+ {
+ ev->_add_ref ();
+ this->event_consumer_->push_event (ev);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "CIAO::RTEventServiceConsumer_impl::push(), "
+ "failed to extract event\n"));
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "CORBA EXCEPTION caught\n"));
+ ex._tao_print_exception ("RTEventServiceConsumer_impl::push()\n");
+ }
+ }
+
+ }
+
+ void
+ RTEventServiceConsumer_impl::disconnect_push_consumer (void)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "CIAO::RTEventServiceConsumer_impl::disconnect_push_consumer\n"));
+ }
+
+ PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
+ this->poa_->deactivate_object (oid);
+ this->_remove_ref ();
+ }
+
+
+ //////////////////////////////////////////////////////////////////////
+ /// Supplier Config Implementation
+ //////////////////////////////////////////////////////////////////////
+
+ RTEvent_Supplier_Config_impl::RTEvent_Supplier_Config_impl (PortableServer::POA_ptr poa) :
+ service_type_ (RTEC),
+ poa_ (PortableServer::POA::_duplicate (poa))
+ {
+ }
+
+ RTEvent_Supplier_Config_impl::~RTEvent_Supplier_Config_impl (void)
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG
+ ((LM_DEBUG, "RTEvent_Supplier_Config_impl::~RTEvent_Supplier_Config_impl\n"));
+ }
+ }
+
+ void
+ RTEvent_Supplier_Config_impl::supplier_id (
+ const char * supplier_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "supplier's id: %s\n", supplier_id));
+ }
+
+ this->supplier_id_ = supplier_id;
+
+ ACE_Hash<ACE_CString> hasher;
+
+ RtecEventComm::EventSourceID source_id =
+ hasher (this->supplier_id_.c_str ());
+/*
+ this->qos_.insert (source_id,
+ ACE_ES_EVENT_ANY,
+ 0,
+ 1);
+
+*/
+
+ this->qos_.insert (ACE_ES_EVENT_SOURCE_ANY,
+ ACE_ES_EVENT_ANY,
+ 0, // handle to the rt_info structure
+ 1);
+
+ ACE_DEBUG ((LM_DEBUG, "supplier's source id is: %d\n", source_id));
+ }
+
+ CONNECTION_ID
+ RTEvent_Supplier_Config_impl::supplier_id ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ return CORBA::string_dup (this->supplier_id_.c_str ());
+ }
+
+ EventServiceType
+ RTEvent_Supplier_Config_impl::service_type ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ return this->service_type_;
+ }
+
+ RtecEventChannelAdmin::SupplierQOS *
+ RTEvent_Supplier_Config_impl::rt_event_qos ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ RtecEventChannelAdmin::SupplierQOS * supplier_qos = 0;
+ ACE_NEW_RETURN (supplier_qos,
+ RtecEventChannelAdmin::SupplierQOS (this->qos_.get_SupplierQOS ()),
+ 0);
+ return supplier_qos;
+ }
+
+ void
+ RTEvent_Supplier_Config_impl::destroy ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
+ this->poa_->deactivate_object (oid);
+ this->_remove_ref ();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ /// Consumer Config Implementation
+ //////////////////////////////////////////////////////////////////////
+
+ RTEvent_Consumer_Config_impl::RTEvent_Consumer_Config_impl (PortableServer::POA_ptr poa) :
+ service_type_ (RTEC),
+ poa_ (PortableServer::POA::_duplicate (poa))
+ {
+ }
+
+ RTEvent_Consumer_Config_impl::~RTEvent_Consumer_Config_impl (void)
+ {
+ ACE_DEBUG
+ ((LM_DEBUG, "RTEvent_Consumer_Config_impl::~RTEvent_Consumer_Config_impl\n"));
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::start_conjunction_group (
+ CORBA::Long size)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ ACE_DEBUG
+ ((LM_DEBUG, "RTEvent_Consumer_Config_impl::start_conjunction_group\n"));
+
+ this->qos_.start_conjunction_group (size);
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::start_disjunction_group (
+ CORBA::Long size)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ // Note, since we only support basic builder here...
+ if (size == 0L)
+ this->qos_.start_disjunction_group ();
+ else
+ this->qos_.start_disjunction_group (size);
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::insert_source (
+ const char * source_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ ACE_Hash<ACE_CString> hasher;
+ RtecEventComm::EventSourceID int_source_id = hasher (source_id);
+
+ ACE_DEBUG ((LM_DEBUG, "******* the source string is: %s\n", source_id));
+ ACE_DEBUG ((LM_DEBUG, "******* the source id is: %i\n", int_source_id));
+
+ this->qos_.insert_source (int_source_id, 0);
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::insert_type (
+ ::CORBA::Long event_type)
+ ACE_THROW_SPEC ((::CORBA::SystemException))
+ {
+ if (event_type == 0L)
+ this->qos_.insert_type (ACE_ES_EVENT_ANY, 0);
+ else
+ this->qos_.insert_type (event_type,
+ 0);
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::consumer_id (
+ const char * consumer_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "RTEvent_Consumer_Config_impl::set_consumer_id:%s\n",
+ consumer_id));
+ }
+
+ this->consumer_id_ = consumer_id;
+ }
+
+
+ void
+ RTEvent_Consumer_Config_impl::consumer (
+ Components::EventConsumerBase_ptr consumer)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ this->consumer_ = Components::EventConsumerBase::_duplicate (consumer);
+ }
+
+ CONNECTION_ID
+ RTEvent_Consumer_Config_impl::consumer_id ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ return CORBA::string_dup (this->consumer_id_.c_str ());
+ }
+
+
+ EventServiceType
+ RTEvent_Consumer_Config_impl::service_type ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ return this->service_type_;
+ }
+
+ Components::EventConsumerBase_ptr
+ RTEvent_Consumer_Config_impl::consumer ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG ((LM_DEBUG, "RTEvent_Consumer_Config_impl::get_consumer\n"));
+ }
+
+ return Components::EventConsumerBase::_duplicate (this->consumer_.in ());
+ }
+
+ RtecEventChannelAdmin::ConsumerQOS *
+ RTEvent_Consumer_Config_impl::rt_event_qos ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ RtecEventChannelAdmin::ConsumerQOS * consumer_qos = 0;
+ ACE_NEW_RETURN (consumer_qos,
+ RtecEventChannelAdmin::ConsumerQOS (this->qos_.get_ConsumerQOS ()),
+ 0);
+
+ return consumer_qos;
+ }
+
+ void
+ RTEvent_Consumer_Config_impl::destroy ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException))
+ {
+ if (CIAO::debug_level () > 10)
+ {
+ ACE_DEBUG
+ ((LM_DEBUG, "RTEvent_Consumer_Config_impl::destroy\n"));
+ }
+
+ PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
+ this->poa_->deactivate_object (oid);
+ this->_remove_ref ();
+ }
+}
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h
new file mode 100644
index 00000000000..7737643b0a4
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.h
@@ -0,0 +1,359 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file CIAO_RTEvent.h
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards <g.edwards@vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_RTEVENT_H
+#define CIAO_RTEVENT_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "CIAO_RTEVENT_Export.h"
+#include "ciaosvcs/Events/CIAO_Events_Base/CIAO_EventServiceBase.h"
+#include "CIAO_RTEventS.h"
+
+#include "orbsvcs/orbsvcs/Event_Utilities.h"
+#include "orbsvcs/orbsvcs/Event/EC_Event_Channel.h"
+#include "orbsvcs/orbsvcs/Event/EC_Default_Factory.h"
+#include "orbsvcs/Event/ECG_Mcast_EH.h"
+#include "orbsvcs/Event/ECG_UDP_Sender.h"
+#include "orbsvcs/Event/ECG_UDP_Receiver.h"
+#include "orbsvcs/Event/ECG_UDP_Out_Endpoint.h"
+#include "orbsvcs/Event/ECG_UDP_EH.h"
+#include "ace/Hash_Map_Manager.h"
+
+namespace CIAO
+{
+
+ /**
+ * @class RTEventService
+ *
+ * An implementation of EventServiceBase using the RT event channel.
+ *
+ * @@ (GD) There should be a place where the deployment tool could
+ * specify the RT Event Channel service configuration file.
+ * This should be the place where the RtecEventChannel servant was
+ * first time initialized.
+ */
+ class CIAO_RTEVENT_Export RTEventService :
+ public virtual EventServiceBase,
+ public virtual POA_CIAO::CIAO_RT_Event_Service
+ {
+ public:
+
+ RTEventService (CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ const char * ec_name);
+
+ virtual ~RTEventService (void);
+
+ virtual Supplier_Config_ptr
+ create_supplier_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual Consumer_Config_ptr
+ create_consumer_config (void)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void connect_event_supplier (
+ CIAO::Supplier_Config_ptr supplier_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ virtual void connect_event_consumer (
+ CIAO::Consumer_Config_ptr consumer_config)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ virtual void
+ disconnect_event_supplier (
+ const char * consumer_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection));
+
+ virtual void disconnect_event_consumer (
+ const char * connection_id)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException,
+ Components::InvalidConnection));
+
+ virtual void push_event (
+ Components::EventBase * ev)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ virtual void ciao_push_event (
+ Components::EventBase * evt,
+ const char * source_id,
+ CORBA::TypeCode_ptr tc)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::BadEventType));
+
+ virtual ::CORBA::Boolean create_addr_serv (
+ const char * name,
+ ::CORBA::UShort port,
+ const char * address)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException));
+
+ virtual ::CORBA::Boolean create_sender (
+ const char * addr_serv_id)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException));
+
+ virtual ::CORBA::Boolean create_receiver (
+ const char * addr_serv_id,
+ ::CORBA::Boolean is_multicast,
+ ::CORBA::UShort listen_port)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException));
+
+ virtual ::RtecEventChannelAdmin::EventChannel_ptr tao_rt_event_channel (
+ )
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ private:
+ // @@ (GD) This is the place where use could provide a parameter
+ // which specifies the event channel service configuration file.
+ void create_rt_event_channel (const char * ec_name)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ private:
+
+ /// Reference to the ORB
+ CORBA::ORB_var orb_;
+
+ /// Reference to the Root POA
+ PortableServer::POA_var root_poa_;
+
+ /**
+ * @var RtecEventChannelAdmin::EventChannel_var rt_event_channel_
+ *
+ * Reference to the RT event channel.
+ */
+ RtecEventChannelAdmin::EventChannel_var rt_event_channel_;
+
+ /**
+ * @var ACE_Hash_Map_Manager<> proxy_supplier_map_
+ *
+ * Mapping of each event sink to a proxy supplier for disconnect purposes.
+ */
+ ACE_Hash_Map_Manager_Ex<ACE_CString,
+ RtecEventChannelAdmin::ProxyPushConsumer_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> proxy_consumer_map_;
+
+ /**
+ * @var ACE_Hash_Map_Manager<> proxy_supplier_map_
+ *
+ * Mapping of each event sink to a proxy supplier for disconnect purposes.
+ */
+ ACE_Hash_Map_Manager_Ex<ACE_CString,
+ RtecEventChannelAdmin::ProxyPushSupplier_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> proxy_supplier_map_;
+
+ /**
+ * @var ACE_Hash_Map_Manager<> addr_serv_map_
+ *
+ * A map which managers a set of address servers for event channel
+ * federation purpose.
+ */
+ ACE_Hash_Map_Manager_Ex<ACE_CString,
+ RtecUDPAdmin::AddrServer_var,
+ ACE_Hash<ACE_CString>,
+ ACE_Equal_To<ACE_CString>,
+ ACE_Null_Mutex> addr_serv_map_;
+
+ };
+
+ /**
+ * @class RTEventServiceSupplier_impl
+ *
+ * An implementation of the PushSupplier interface.
+ */
+ class RTEventServiceSupplier_impl :
+ public virtual POA_RtecEventComm::PushSupplier
+ {
+ public:
+
+ RTEventServiceSupplier_impl (
+ PortableServer::POA_ptr poa);
+
+ virtual void disconnect_push_supplier ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ private:
+
+ PortableServer::POA_var poa_;
+ };
+
+ /**
+ * @class RTEventServiceConsumer_impl
+ *
+ * An implementation of the PushConsumer interface.
+ */
+ class RTEventServiceConsumer_impl :
+ public virtual POA_RtecEventComm::PushConsumer
+ {
+ public:
+
+ RTEventServiceConsumer_impl (
+ PortableServer::POA_ptr poa,
+ Components::EventConsumerBase_ptr consumer);
+
+ virtual void push (
+ const RtecEventComm::EventSet& events)
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ virtual void disconnect_push_consumer ()
+ ACE_THROW_SPEC ((
+ CORBA::SystemException));
+
+ private:
+
+ PortableServer::POA_var poa_;
+
+ Components::EventConsumerBase_var event_consumer_;
+ };
+
+ /**
+ * @class RTEvent_Consumer_Config_impl
+ *
+ * Implementation of the RTEvent_Consumer_Config IDL interface that
+ * configures TAO's RT event channel. An object of this type will be returned
+ * from @c CIAO::Container::create_consumer_config () when @c RTEC is
+ * specified as the event service type.
+ */
+ class RTEvent_Consumer_Config_impl :
+ public virtual POA_CIAO::RTEvent_Consumer_Config,
+ public virtual Event_Consumer_Config_Base
+ {
+
+ public:
+ RTEvent_Consumer_Config_impl (PortableServer::POA_ptr poa);
+
+ virtual ~RTEvent_Consumer_Config_impl (void);
+
+ virtual void start_conjunction_group (CORBA::Long size)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void start_disjunction_group (CORBA::Long size)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void insert_source (const char * source_id)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void insert_type (::CORBA::Long event_type)
+ ACE_THROW_SPEC ((::CORBA::SystemException));
+
+ virtual void consumer_id (const char * consumer_id)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CONNECTION_ID consumer_id ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ //virtual void supplier_id (const char * supplier_id)
+ // ACE_THROW_SPEC ((CORBA::SystemException));
+
+ //virtual CONNECTION_ID supplier_id ()
+ // ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void consumer (Components::EventConsumerBase_ptr consumer)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual Components::EventConsumerBase_ptr consumer ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual EventServiceType service_type ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ //@@ (GD) There should be a place where the deployment tool could
+ // set up the rt_event_qos properties for Consumer Config.
+
+ virtual RtecEventChannelAdmin::ConsumerQOS * rt_event_qos ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+
+ ACE_CString consumer_id_;
+
+ Components::EventConsumerBase_var consumer_;
+
+ EventServiceType service_type_;
+
+ ACE_ConsumerQOS_Factory qos_;
+
+ PortableServer::POA_var poa_;
+ };
+
+ /**
+ * @class RTEvent_Supplier_Config_impl
+ *
+ * Implementation of the RTEvent_Supplier_Config IDL interface that
+ * configures TAO's RT event channel. An object of this type will be returned
+ * from @c CIAO::Container::create_supplier_config () when @c RTEC is
+ * specified as the event service type.
+ */
+ class RTEvent_Supplier_Config_impl :
+ public virtual POA_CIAO::RTEvent_Supplier_Config
+ {
+ public:
+ RTEvent_Supplier_Config_impl (PortableServer::POA_ptr poa);
+
+ virtual ~RTEvent_Supplier_Config_impl (void);
+
+ void supplier_id (const char * supplier_id)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CONNECTION_ID supplier_id ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ EventServiceType service_type ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ //@@ (GD) There should be a place where the deployment tool could
+ // set up the rt_event_qos properties for Supplier Config.
+
+ RtecEventChannelAdmin::SupplierQOS * rt_event_qos ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void destroy ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ ACE_CString supplier_id_;
+
+ EventServiceType service_type_;
+
+ ACE_SupplierQOS_Factory qos_;
+
+ PortableServer::POA_var poa_;
+ };
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_RTEVENT_H */
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl
new file mode 100644
index 00000000000..072bf1f89a1
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.idl
@@ -0,0 +1,54 @@
+// $Id$
+
+/**
+ * @file CIAO_RTEvent.idl
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ * @author George Edwards
+ *
+ * @brief Interfaces for configuring CIAO's RT event channel.
+ */
+
+#include <ciaosvcs/Events/CIAO_Events_Base/CIAO_Events.idl>
+#include <orbsvcs/orbsvcs/RtecEventChannelAdmin.idl>
+
+module CIAO
+{
+ interface RTEvent_Consumer_Config :
+ Consumer_Config
+ {
+ //void start_logical_and_group (in long size);
+
+ //void start_negation ();
+
+ //void insert_bitmasked_value (in long source_mask,
+ // in long type_mask,
+ // in long source_value,
+ // in long type_value);
+
+ readonly attribute RtecEventChannelAdmin::ConsumerQOS rt_event_qos;
+ };
+
+ interface RTEvent_Supplier_Config :
+ Supplier_Config
+ {
+ readonly attribute RtecEventChannelAdmin::SupplierQOS rt_event_qos;
+ };
+
+ interface CIAO_RT_Event_Service :
+ CIAO_Event_Service
+ {
+ boolean create_addr_serv (in string name,
+ in unsigned short port,
+ in string address);
+
+ boolean create_sender (in string addr_serv_id);
+
+ boolean create_receiver (in string addr_serv_id,
+ in boolean is_multicast,
+ in unsigned short listen_port);
+
+ RtecEventChannelAdmin::EventChannel tao_rt_event_channel ();
+ };
+
+};
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc
new file mode 100644
index 00000000000..40ba0138f4b
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/CIAO_RTEvent.mpc
@@ -0,0 +1,27 @@
+// -*- MPC -*-
+// $Id$
+
+project (CIAO_RTEvent) : naming, rtevent_serv, ciao_events_base_dnc {
+
+ sharedname = CIAO_RTEvent
+ idlflags += -Wb,export_include=CIAO_RTEVENT_Export.h -Wb,export_macro=CIAO_RTEVENT_Export
+ dynamicflags = CIAO_RTEVENT_BUILD_DLL
+
+ IDL_Files {
+ CIAO_RTEvent.idl
+ }
+
+ Source_Files {
+ CIAO_RTEvent.cpp
+ CIAO_RTEventC.cpp
+ CIAO_RTEventS.cpp
+ SimpleAddressServer.cpp
+ }
+
+ Header_Files {
+ CIAO_RTEvent.h
+ CIAO_RTEventC.h
+ CIAO_RTEventS.h
+ SimpleAddressServer.h
+ }
+}
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp
new file mode 100644
index 00000000000..cdce7218291
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.cpp
@@ -0,0 +1,37 @@
+/* $Id$ */
+
+#include "SimpleAddressServer.h"
+#include <ace/INET_Addr.h>
+#include <ace/OS_NS_string.h>
+
+SimpleAddressServer::SimpleAddressServer (const ACE_INET_Addr& address) {
+ this->address_.ipaddr = address.get_ip_address ();
+ this->address_.port = address.get_port_number ();
+}
+
+SimpleAddressServer::SimpleAddressServer (const RtecUDPAdmin::UDP_Addr& addr)
+ : address_ (addr)
+{
+}
+
+void
+SimpleAddressServer::get_addr (const RtecEventComm::EventHeader&,
+ RtecUDPAdmin::UDP_Addr& address)
+ throw (CORBA::SystemException) {
+ address = this->address_;
+}
+/*
+void
+SimpleAddressServer::get_ip_address (const RtecEventComm::EventHeader&,
+ RtecUDPAdmin::UDP_IP_Address_out address)
+ throw (CORBA::SystemException) {
+ address = new RtecUDPAdmin::UDP_IP_Address;
+
+ ACE_INET_Addr x (this->address_.port,
+ static_cast<ACE_UINT32>(this->address_.ipaddr));
+ address->length (x.get_addr_size ());
+ ACE_OS::memcpy (address->get_buffer (),
+ x.get_addr (),
+ x.get_addr_size ());
+}
+*/
diff --git a/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h
new file mode 100644
index 00000000000..5a69d3171dc
--- /dev/null
+++ b/modules/CIAO/ciaosvcs/Events/CIAO_RTEC/SimpleAddressServer.h
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file SimpleAddressServer.h
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef SIMPLEADDRESSSERVER_H
+#define SIMPLEADDRESSSERVER_H
+
+#include <orbsvcs/RtecUDPAdminS.h>
+
+class SimpleAddressServer : public POA_RtecUDPAdmin::AddrServer {
+public:
+ SimpleAddressServer (const ACE_INET_Addr& address);
+
+ SimpleAddressServer (const RtecUDPAdmin::UDP_Addr& addr);
+
+ virtual void get_addr (const RtecEventComm::EventHeader& header,
+ RtecUDPAdmin::UDP_Addr& address)
+ throw (CORBA::SystemException);
+
+
+/*
+ virtual void get_ip_address (const RtecEventComm::EventHeader& header,
+ RtecUDPAdmin::UDP_IP_Address_out address)
+ throw (CORBA::SystemException);
+*/
+private:
+ RtecUDPAdmin::UDP_Addr address_;
+};
+
+#endif
diff --git a/modules/CIAO/docs/ConfigValues.html b/modules/CIAO/docs/ConfigValues.html
new file mode 100644
index 00000000000..70ade5ca68d
--- /dev/null
+++ b/modules/CIAO/docs/ConfigValues.html
@@ -0,0 +1,270 @@
+<!-- $Id$ -->
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head>
+<title>ConfigValues Index</title>
+</head>
+
+<body>
+
+<h1>Index of ConfigValues</h1>
+
+<font size="+1" color="red">This page is currently a placeholder for
+all the configuration values we will support when creating various CCM
+deployment mechanisms, such as ComponentServers and Containers. The
+ConfigValues listed here are currently only partially supported in
+CIAO. <p>
+
+Note from self: There are discrepancy in this document. Most
+significantly, (RT)ComponentServer's don't get their ConfigValues
+directly from that passed in thru
+ServerActivator::create_component_server but rather, using some sort
+of pre-defined command line flags.
+</font>
+
+<h2>ComponentServer</h2>
+The <code>ConfigValues</code> for a <code>ComponentServer</code> are
+passed in via <code>ServerActivator::create_component_server</code>
+operation. CIAO accepts the following feature names:<p>
+
+<table border="3" spacing="2" cellpadding="3">
+ <tr>
+ <th>FeatureName</th>
+ <th>type</th>
+ <th>Requirement</th>
+ <th>Remarks</th>
+ </tr>
+ <tr>
+ <td>CIAO-svcconf-id</td>
+ <td>string</td>
+ <td>
+ Optional
+ </td>
+ <td>
+ Specify the canonical svc.conf id. This id should only serve
+ as a hint for the deployment framework in determining the
+ actual svc.conf file used to start up the component server.
+ Currently, CIAO's ServerActivator maintains a set of svc.conf
+ files and use this id value to map to the exact svc.conf file
+ name.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-ORB[option]</td>
+ <td>string</td>
+ <td>
+ Optional
+ </td>
+ <td>
+ Specify an ORB option that you want to pass to the
+ ComponentServer ORB.
+ </td>
+ </tr>
+</table>
+
+<h2>RTComponentServer (Real-time ComponentServer)</h2>
+
+Like a regular <code>ComponentServer</code>, the
+<code>ConfigValues</code> for a <code>RTComponentServer</code> are
+passed in via <code>ServerActivator::create_component_server</code>
+operation. On top of the <code>ConfigValues</code> accepted by the
+regular <code>ComponentServer</code>, a real-time ComponentServer also
+accepts the following feature names:<p>
+
+<table border="3" spacing="2" cellpadding="3">
+ <tr>
+ <th>FeatureName</th>
+ <th>type</th>
+ <th>Requirement</th>
+ <th>Remarks</th>
+ </tr>
+ <tr>
+ <td>CIAO-rtcad-filename</td>
+ <td>string</td>
+ <td>
+ Optional
+ </td>
+ <td>
+ Specify the filename of RTCAD extension XML file.
+ The component server will invoke the XML parser and translate
+ the content of the file into the following two ConfigValues
+ (CIAO-RTresources and CIAO-RTPolicySets) to
+ RTComponentServer implementation.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-RTresources</td>
+ <td><code>CIAO::RTConfiguration::RTORB_Resources_Info</code></td>
+ <td>
+ Optional
+ </td>
+ <td>
+ <code>CIAO::RTConfiguration::RTORB_Resources_Info</code> as
+ defined in
+ <code>$CIAO_ROOT/tools/XML_Helpers/RTConfiguration.idl</code>
+ defines the system wise resources an RT ORB should allocate.
+ These resources then can be used to define the RT policies in
+ the RTPolicySet described subsequently.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-RTPolicySets</td>
+ <td><code>CIAO::RTConfiguration::Policy_Sets</code></td>
+ <td>
+ Optional
+ </td>
+ <td>
+ <code>CIAO::RTConfiguration::Policy_Sets</code>, also
+ defined in
+ <code>$CIAO_ROOT/tools/XML_Helpers/RTConfiguration.idl</code>,
+ defines a list of policy sets, which are named sequences of
+ policies. These policies often refer to the global resources
+ defined in the previous CIAO-RTresource via names. Likewise,
+ an <b>RT-container</b> also specifies the RTPolicySet its POA
+ uses via the name defined here.
+ </td>
+ </tr>
+</table>
+
+<h2>Container</h2>
+The <code>ConfigValues</code> for a <code>Container</code> are
+passed in via <code>ComponentServer::create_container</code>
+operation. CIAO accepts the following feature names:<p>
+
+<table border="3" spacing="2" cellpadding="3">
+ <tr>
+ <th>FeatureName</th>
+ <th>type</th>
+ <th>Requirement</th>
+ <th>Remarks</th>
+ </tr>
+ <tr>
+ <td>
+ CIAO-Container-Type
+ </td>
+ <td>
+ <code>string</code>
+ </td>
+ <td>
+ currently not supported.
+ </td>
+ <td>
+ Possible value: <code>session</code>, <code>rt-session</code>,
+ <code>unclassified</code>, <code>rt-unclassified</code>.
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ CIAO-POAPolicies
+ </td>
+ <td>
+ <code>CORBA::PolicyList</code>
+ </td>
+ <td>
+ Currently not supported.
+ </td>
+ <td>
+ Must not conflict with CIAO-Container-Type setting.
+ (Certain containers assume several POA policies.)
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ CIAO-RTPolicySet
+ </td>
+ <td>
+ <code>string</code>
+ </td>
+ <td>
+ Optional
+ </td>
+ <td>
+ Name, as defined in RTCompoenentServer's CIAO-RTPolicySets, of
+ the PolicySet this container uses.
+ </td>
+ </tr>
+</table>
+
+
+<h2>CCMHome</h2>
+The <code>ConfigValues</code> for a <code>CCMHome</code> are
+passed in via <code>Container::install_home</code>
+operation. CIAO accepts the following feature names:<p>
+
+<table border="3" spacing="2" cellpadding="3">
+ <tr>
+ <th>FeatureName</th>
+ <th>type</th>
+ <th>Requirement</th>
+ <th>Remarks</th>
+ </tr>
+ <tr>
+ <td>CIAO-executor-path</td>
+ <td><code>string</code></td>
+ <td>
+ REQUIRED
+ </td>
+ <td>
+ This string value specifies the location of the executor DLL.
+ In the future, we should use UUIDs to identify the component
+ executors and query the ComponentInstallation interface for
+ the actual location of the DLL.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-executor-entrypt</td>
+ <td><code>string</code></td>
+ <td>
+ REQUIRED
+ </td>
+ <td>
+ This string value specifies the entry point of the executor
+ DLL. It points to a factory function for the component executor.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-servant-path</td>
+ <td><code>string</code></td>
+ <td>
+ REQUIRED
+ </td>
+ <td>
+ This string value specifies the location of the servant DLL.
+ In the future, we should use UUIDs to identify the component
+ servants and query the ComponentInstallation interface for
+ the actual location of the DLL. <p>
+
+ Servant are part of the Container framework and we can use
+ type checking to ensure servant and container match with each
+ other.
+ </td>
+ </tr>
+ <tr>
+ <td>CIAO-executor-entrypt</td>
+ <td><code>string</code></td>
+ <td>
+ REQUIRED
+ </td>
+ <td>
+ This string value specifies the entry point of the servant
+ DLL. It points to a factory function for the compnent servant.
+ </td>
+ </tr>
+</table>
+
+<!--
+ <tr>
+ <td>
+ a
+ </td>
+ <td>
+ b
+ </td>
+ <td>
+ c
+ </td>
+ </tr>
+-->
+<!--#include virtual="/~nanbor/signature.html" -->
+</body> </html>
diff --git a/modules/CIAO/docs/EnvVars.html b/modules/CIAO/docs/EnvVars.html
new file mode 100644
index 00000000000..a088f793de0
--- /dev/null
+++ b/modules/CIAO/docs/EnvVars.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<!-- $Id$ -->
+ <title>Environment Variables used by CIAO</title>
+</head>
+<body>
+<h1>Environment Variables used by CIAO</h1>
+<ul>
+<!-- <li><b><code></code></b><p> --> <li><b><code>CIAO_DEBUG_LEVEL</code></b>:
+An interger value accessible using <code>CIAO::debug_level()</code>
+call. Currently, CIAO follow the following usage conventions:<br>
+ <br>
+ <ul>
+ <li> 20 &lt; debug_level &#8804; 20: Generate CIAO internal debug
+messages </li>
+ <li> 10 &lt; debug_level &#8804; 20: Generate CIAO tools debug messages
+ </li>
+ <li> 0 &lt; debug_level &#8804; 10: Generate component-level debug
+messages </li>
+ </ul>
+ <p> </p>
+ </li>
+ <li><b><code>CIAO_DUMP_SAMPLE_HISTORY</code></b>: This environment
+variable was added for lack of component configuration support. Set it
+to 1 to turn on the dumping of performance samples to stdout in some
+performance test components.</li>
+</ul>
+<hr>
+<address>Nanbor Wang</address>
+<!-- hhmts start -->
+Last modified: Sun Nov 30 20:29:14 Mountain Standard Time 2003
+<!-- hhmts end -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/Purify.html b/modules/CIAO/docs/Purify.html
new file mode 100644
index 00000000000..fff258db120
--- /dev/null
+++ b/modules/CIAO/docs/Purify.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+ <head>
+ <title>Using Rational Purify with CIAO</title>
+ <!-- $Id$ -->
+ </head>
+ <body>
+ <h1>Using Rational Purify with CIAO</h1>
+ <p>This document is about using Purify with Visual Studio 7.1 to track down
+ memory leaks and other bugs in CIAO applications. For the Linux/Unix
+ environment, Valgrind is a better-suited tool - see Will Otte's documentation
+ on using Valgrind with CIAO in this directory.</p>
+ <p>Purify can be run from within Visual Studio, or standalone. The executable is
+ c:\Program Files\Rational\PurifyPlus\purifyw.exe. Typing this will bring up the
+ same Purify window you see if you run it from within Visual Studio. You can
+ install Purify from the web by going to <A href="file://\\Atlantis\software\RationSuiteEnterprise-v2003-06-12">
+ \\Atlantis\software\RationSuiteEnterprise-v2003-06-12</A> &nbsp;and clicking
+ on <code>C57BPML.zip</code>. This will install a whole bunch of Rational stuff
+ by default, so you will probaby want to deselect everything but PurifyPlus,
+ although Quantify is a good bottleneck-finder when you're trying to improve
+ performance, so that might be worth installing and playing with as well. During
+ the installation process, you'll be prompted for a mode of licensing. Select
+ the use of a license server, and then you'll be prompted for its address. Use <code>
+ rational.vuse.vanderbilt.edu</code>.</p>
+ <p>The option to exclude all modules in Windows directories will probably be set
+ by default, but if you notice memory leaks reported for Windows stuff, you
+ might want to double check this and turn it off. From the PurifyPlus menu bar
+ item in Visual Studio, it's at <b>PurifyPlus-&gt;Purify-&gt;Settings-&gt;DefaultSettings-&gt;PowerCheck</b>.
+ When run for the first time, Purify will instrument all libraries linked to the
+ executable. Select <b>PurifyPlus-&gt;Purify-&gt;Run</b>, and a window will pop
+ up prompting you for the executable name, command line options, and working
+ directory.</p>
+ <p>Purify's output will appear in the Visual Studio text editing window. This
+ output can be saved to the given filename. The type of error reported is
+ indicated by a 3-letter code - the most common are UMR (Unitialized Memory
+ Read), FMM (Freeing Mismatched Memory), and MLK (Memory Leak). Each of these
+ can be expanded to show the call stack. The depth of the call stack can be
+ modified in Settings if it's not deep enough. FMM messages will show both
+ allocation and deallocation call stacks.</p>
+ Quite often in CIAO, we will want to Purify a process that is spawned by
+ another process, and therefore not directly runnable in Purify. This is fairly
+ easy to do, but it must be done from the command line. If the name of the child
+ process we want to instrument is <code>child.exe</code>, then it can be
+ instrumented by typing
+ <br>
+ <code>purifyw /Run=no /Replace=yes child.exe</code><br>
+ This will rename the original executable as <code>child.exe.Original</code>,
+ and the new instrumented executable will be <code>child.exe</code>. Now when
+ you run the parent process under Purify, you'll see one window opened up in
+ Visual Studio's text editor for this process, and when the child process is
+ spawned, a second window will open. A couple of caveats to make this work
+ smoothly:
+ <ul>
+ <li>
+ Instrumented executables run 2 to 5 times slower than uninstrumented ones, so
+ any timeouts in the code should be extended accordingly. For example, if an
+ instrumented NodeApplication is spawned by NodeManager, add <code>-d 15</code> or
+ <code>-d 20</code>
+ to NodeManager's command line.
+ <li>
+ If an instrumented process is simply killed, there will probably be many
+ spurious error messages, mostly related to ORB resources that were not cleaned
+ up by a graceful shutdown. All processes tested with Purify should have a
+ graceful shutdown built in to eliminate these bogus memory leak messages.
+ </li>
+ </ul>
+ <hr>
+ <address>Jeff Parsons</address>
+ <!-- hhmts start --> Last modified: Oct&nbsp;3 2005
+ <!-- hhmts end -->
+ </body>
+</html>
diff --git a/modules/CIAO/docs/RT-Extension.html b/modules/CIAO/docs/RT-Extension.html
new file mode 100644
index 00000000000..3414a30b78e
--- /dev/null
+++ b/modules/CIAO/docs/RT-Extension.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $Id$ -->
+<html> <head>
+<title>Using the Real-time Extension in CIAO</title>
+</head>
+
+<body>
+<h1>Using the Real-time Extension in CIAO</h1>
+
+<!-- ============================================================ -->
+<h3>Abstract</H3>
+
+The real-time extension support in CIAO enables application developers
+to deploy real-time applications by specifying real-time
+configurations as XML descriptors without modifying the component
+implementation. In fact, embedding the real-time configuration
+policies in component implementations decrease the reusability of the
+software components.
+
+Different types of real-time policy can be applied at different
+stage of the component development lifecycle, e.g.,
+<ul>
+ <li>Component implementation
+ <li>Component packaging
+ <li>Application composition
+ <li>Target platform configuration
+ <li>Deployment configuration
+</ul>
+
+Real-time policies can also be applied to various scope in an
+applications, e.g., many real-time policies can be associate with some
+or all of the following ORB mechanisms:
+<ul>
+ <li>ORBs
+ <li>POAs
+ <li>Threads
+ <li>Object references
+</ul>
+
+<!-- ============================================================ -->
+<h3>CIAO's Real-time Extension</h3>
+
+CIAO extends CCM's assembly descriptor to support the specifications
+of real-time policies. This mechanism allows you to allocate
+resources that are global to a RTComponentServer and to define real-time
+policies required by a component installation. Currently, CIAO
+support configuration of certain real-time policies at the POA level,
+i.e., in CCM's terminology, the container level. These policies
+include:
+
+<ol>
+ <li>Priority Model Policy
+ <li>Threadpool Policy
+ <li>Banded Connection Policy
+</ol>
+
+The kind of resources that are global to a RT component server that CIAO
+real-time extension specifies include:
+
+<ol>
+ <li>Threadpool
+ <li>Threadpool with lanes
+ <li>Connection bands
+</ol>
+
+<!-- ============================================================ -->
+<h3>Using the CIAO Real-time Extension</h3>
+
+Application developers can define the aforementioned Real-Time
+extension Descriptor (.rtd file) that CIAO defines to allocate
+resources and specify real-time policies. The Document Type
+Definition (DTD) for the real-time extension description is defined in
+this <a href="XML/ciao_rt_cad_ext.dtd">file</a>. Each .RTD file
+specifies the required resources and the policy definitions within a
+RTComponentServer.
+
+A RTComponentServer can be associated to a .RTD file. This is done by
+using the "extension" element with "class" attributed set to
+"RT-CAD-EXT", within a processcollocation or hostcollocation element.
+Here is an example:
+<code><pre>
+
+ &lt;processcollocation&gt;
+ .
+ .
+ .
+ &lt;extension class="RT-CAD-EXT" origin="CIAO"&gt;somefile.rtd&lt;/extension&gt;
+ .
+ &lt;/processcollocation&gt;
+</pre></code>
+
+Each .RTD file contains the two major subelements:
+<ul>
+ <li>&lt;rtresources&gt;: defines all the RT resources the assciating
+ RTComponentServer should provide.
+ <li>&lt;rtpolicysets&gt;: defines named collections of policies
+ (&lt;rtpolicyset&gt;) that apply to component installations in
+ the RTComponentServer.
+</ul>
+
+The &lt;rtpolicyset&gt;'s defined in the .RTD file can be associated
+to a component installation, i.e., a component placement within the
+RTComponentServer to which the .RTD file is associated. For example,
+
+<code><pre>
+ &lt;homeplacement&gt;
+ .
+ .
+ ,
+ &lt;extension class="RT-POLICY-SET"
+ origin="CIAO"&gt;A_POLICY_NAME&lt;/extension&gt;
+ .
+ &lt;/homeplacement&gt;
+</pre></code>
+
+<h3>Future Addition</h3>
+
+As mentioned earlier, RT policies can be applied at various stages of
+component-based deployment lifecycle and at different scope. For
+example, applying RTpolicies at the ORB level, or at the object
+reference level of a component receptacle. These extensions involve
+at least, extending the "appropriate" XML descriptor definition and
+extending the CIAO runtime, including core and/or the CIDL generated
+code to configure the policies. How other RT-related policies can be
+added will be reviewed in my thesis available shortly.
+
+<hr>
+<address>Nanbor Wang</address>
+<!-- hhmts start -->
+Last modified: Sun Nov 30 19:23:25 Mountain Standard Time 2003
+<!-- hhmts end -->
+</body> </html>
diff --git a/modules/CIAO/docs/TODO.html b/modules/CIAO/docs/TODO.html
new file mode 100644
index 00000000000..0b7ff8fd774
--- /dev/null
+++ b/modules/CIAO/docs/TODO.html
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><p>
+<!-- $Id$ -->
+<html> <head>
+<title>Component-Integrated ACE ORB - TODO list</title>
+</head>
+
+<body>
+<h1>Component-Integrated ACE ORB (CIAO) - TODO list</h1>
+
+The following is a prioritized list of things (with the highest
+priority items first) that the DOC group is working on. The expected
+date of accomplishments are also added as ETA (expected time of
+accomplishment) :
+
+<h3>Things to do:</h3>
+<ul>
+ <li> Integrate TAO's real-time event channel within the
+ container. Components can use this feature to communicate using
+ <CODE>eventtype</CODE>s a pub-sub mode. The code is available in a
+ branch and it needs to be integrated in to the main-trunk. (ETA -
+ 2004/08)
+ </li> <p>
+
+ <li> Allow components (i.e., assemblies) to be connected using the
+ NameService (ETA - 2004/08) </li> <p>
+
+ <li> Allow non-component enabled clients to access reference to a
+ component or an assembly using NameService (ETA - 2004/08) </li> <p>
+
+ <li>Allowing components to set attributes, atleast attributes of
+ basic types. As a first step we need to implement the
+ <CODE>StandardConfigurator</CODE> interface. The servant for the
+ <CODE> StandardConfigurator</CODE> interface should be implemented
+ and activated by the servant for the component. DAnCE can extract
+ the reference from the servant and use it to set attributes (ETA -
+ 2004/08)</li><p>
+
+<li>Now that we have supports for ccm_{activate,passivate,remove}, we
+ need to rethink how a container manages the lifecycle of all the
+ components/homes it hosts so all the servants related to a
+ component get destroyed "properly". The aforementioned
+ SessionComponent operations will also depend on the proper
+ lifecycle management. <p>
+
+ This includes making sure all components' appropriate
+ ccm_passivate and ccm_remove operations are called when the
+ ComponentServer is closing down.<p> (ETA - 2004/08) </li>
+
+ <li> Migrate RT features from RTComponentServer to DAnCE
+ (ETA - 2004/10) </li> <p>
+
+ <li> Static configuration of components using DAnCE (ETA - 2004/12)
+ </li> <p>
+
+ <li>We need a set of tests to make sure most (and later
+ all) of the data types are function correctly (in term of CIDL
+ generated code). More importantly, we need to make sure all the
+ component keywords are supported okay. (ETA - 2004/07)<p>
+
+ <li>The naming convention used in <a
+ href="new_component.html">creating new component
+ instructions</a> and that used in <a
+ href="templates/">templates</a> do not match. (Files containing
+ glue code are named *_svnt.* and *GS.* respectively.) We need
+ to address that.(ETA - 07/2004) <p> </li>
+
+ <li> Retire the old assembly and deployment framework (ETA -
+ 2004/10) </li>
+
+ <li>We need to review the implementation of servant glue code and
+ container implementations to make sure that they are
+ thread-safe, if the container calls for it. Currently, these
+ states are changed only by the deployment framework which always
+ runs in single thread, so it's not a serious problem. However,
+ it's perfectly legal to dynamically configure connnections, which
+ will be the case if we want to add new components or remove
+ components from the assembly.(ETA - 2004/09)<p>
+
+ <li> Add support for creating a thread pool within the the component
+ server. We don't have support for this, which has made our users
+ resort to spawning threads within the components, which breaks
+ portability of the executor code. (ETA - 2004/09) </li> <p>
+
+ <li> At present components in an assembly have no way of knowing
+ whether the assembly is complete or not. This becomes important when
+ there are hierarchical assemblies, and the assembly at a higher
+ level needs to pass on attrbute information to the assembly at a
+ lower level. The spec talks about <CODE> configuration_complete ()
+ </CODE> whose semantics are a bit unclear. We may have to use this
+ to inform the components that the configuration is infact
+ complete. (ETA - 2004/09)</li><p>
+
+ <li> We have now two proprietary methods in the <CODE>
+ SessionComponent </CODE> interface called <CODE> ciao_preactivate ()
+ </CODE> and <CODE> ciao_postactivate () </CODE> which has to be
+ overridden by the executor code irrespective of whether the executor
+ implements them or not. These were added to help components to know
+ activation status of other components in the assembly. This could
+ create problems for interoperability of the executor code. A better
+ to way is to have the CIDL generate C++ code instead of executor IDL.
+ The generated C++ code from the CIDL could provide default
+ implementations which could be overridden by the executor code if so
+ desired. This would make the executor code more portable. Obviously
+ we also should retain executor IDL generation using some command line
+ options. (ETA - 2004/09). </li> <p>
+
+<li> Need to develop tools that would allow components to be added
+ dynamically to an existing assembly and remove components
+ dynamically from an existing assembly (ETA - 2004/12) <li> <p>.
+
+<li>The CCM_Core libraries need to be refactored so regular CIAO
+ users no longer need to link to CIAO_Server but to
+ CIAO_Container library instead. Currently, the session
+ container implementation is throwing exceptions from the
+ deployment modules when it fails to install a home. But these
+ feature should really be implmented in the Deployment::Container
+ interface instead. (ETA - 2004/12)<p>
+
+<li>HomeRegistrar related files from the CCM_Core projects have
+ been removed. We need to move them into a new directory when we
+ get to a new HomeFinder/HomeRegistrar implementation. Notice
+ that the deployment framework will need to use the HomeRegistrar
+ interface to register components/homes. (ETA - 2004/12)<p>
+
+<li>We should add support for the unclassified container and use the
+ property file of some sort to configure the empty container.<p>
+
+ Process component (which have 1:1 servant to OID mapping) might
+ be useful too (no need to support PSS in this case?)<p>
+
+ Persistent object references/IDs can be useful for statically
+ configured DRE systems as they eliminate the initial handshakes
+ in a multi-process system and enable each process to start up
+ independently. (ETA - Not known) <p>
+
+ <li>The new <code>generate_component_mpc.pl</code> script should
+ invoke the <code>generate_export_file.pl</code> automatically
+ and created the necessary export files instead of only printing
+ out the hints on how to do that. (ETA - Not known)<p>
+
+ <li>We need a ConfigValues parser for extracting common name-value
+ info out of a ConfigValues sequence. This would be needed if
+ components have to set complex user defined types as attributes.
+ (ETA - not known). </li><p>
+
+ <li><b>Container Factory</b>: We need to provide a container factory
+ interface to decide what kind of container we need to use. Hmm,
+ isn't this the job of <code>ComponentServer</code> interface?
+ (ETA - not known)</li><p>
+
+ <li><b>ComponentInstallation</b>: This is a simple interface that
+ provides (UUID, Location) mappings. Both UUID and Location are
+ of string type. Since ACE supports UUID implementation, we can
+ probably use that to generate a UUID. Location should be URI, but
+ let's just map that to locations in filesystem (pathnames) for
+ now. So we will most likely need to provide more downloading
+ mechanisms in the future, e.g., http, ftp, etc. <p>
+
+ ComponentInstallation is the interface assembly mechanism used
+ to interact with the deployment mechanism. We are free to
+ implement the deployment mechanism (i.e., shipping of code to
+ various locations of application domains) the way we like but
+ the assembly mechanism depends on this interface to determine
+ where to fetch a specific implementation.<p>
+
+ One thing that we really need is an installation tool set which
+ can be used to manage remote installation, by parsing various
+ XML descriptors and either push or pull the right implmentation
+ for a certain host in the list of hosts the component need to be
+ installed. According to the CCM spec., ComponentInstallation
+ interface implementation can retrieve a implementation (DLL) on
+ an on-demand basis. Therefore, there is probably no need to
+ push the appropriate DLL over right away when we feed some
+ descriptors into the installation tool. The tool, however,
+ should accurately extract the correct OS/compiler information
+ and inform the ComponentInstallation impl which and where to
+ fetch the right implmentation for the host it is running on. (ETA - not
+ known)<p>
+ <li><b>CIDL Compiler</b>:
+ There are no immediate plans to support the part of CIDL
+ corresponding to the OMG Persistent State Definition Langauge
+ (PSDL). For an up-to-date status of the CIDL, please see
+ $CIAO_ROOT/CCF/Documentation/TODO.
+
+ <li> This is a set of the to-do associated with the DAnCE implementation.
+ <p>
+ <ul>
+ <li>We need to put the ComponentServer layer back in. In the current
+ implementation we use NodeApplication as both the Session Container
+ and the ComponentServer. We need to seperate the two
+ entities so we can hook any Container with the
+ ComponentServer. This change is essential to the RT
+ configuration and for the future of CIAO.<p>
+
+ <li>Bala added ciao_[pre|post]_activate to the Session Component to
+ force the order of actions upon start-up, but this will not
+ work with the new DnC framework. We need to change the DnC framework
+ a bit to make this feature available again.<p>
+
+ <li>We need to work on the Resource Management process in
+ DAnCE. Right now this part of the DnC spec is omitted in our
+ implementation.<p>
+
+ <li>We need to work on the packaging process more so we can ship
+ binaries around when the dll/so is not available in the
+ local node.<p>
+ </ul>
+
+</ul>
+
+<h3>Cool ideas</h3>
+<ul>
+ <li>Currently, developing a component will create 3 DLLs, one for
+ the client side stuff, one for the servant glue code, and one
+ for the executors. We need to figure out a way to automate
+ these stuff. MPC is a good starting point to generate scripts
+ to create project templates.<p>
+
+ <li>Management of <code>ComponentInstallation</code> can be done
+ using a CORBAscript of some sort as this involve mostly
+ registering and unregistering of locations of component
+ implementations.<p>
+</ul>
+
+<h3>Finished Work</h3>
+<ul>
+ <li>The exception returned from CIAO_Daemon when it fails to
+ locate a DLL is quite useless to say the least. It needs
+ fixing.<p>
+
+ CIAO now provides more meaningful error message now.<p>
+
+ <li>We should create a new workspace/target in TAO such as CIAO_ONLY
+ to simplify the process of using CIAO. Currently, you have to
+ checkout the README file in CIAO_ROOT to figure out what TAO
+ modules are required by CIAO.<p>
+
+ A new target "CIAO_Core" is now available in ACE's top level
+ Makefile.<p>
+
+ <li>We need better debug info and a way to control how different
+ level of debug info are generated in CIAO.<p> Some preliminary
+ support using the <a href="EnvVars.html">environment
+ variable</a> <code>CIAO_DEBUG_LEVEL</code> has been added.<P>
+
+ <li>Miminal implementation of CIDL compiler.<p>
+
+ <li>CCM core workspace now contains 3 different DLLs:
+ <UL>
+ <li>CCM_Client - Needed by CCM-awared client
+ <li>CCM_Container - Needed by executors and servers
+ <li>CCM_Server - Needed by servers and CIAO tools
+ </UL><p>
+
+ <li>A SessionContainer implementation.<p>
+
+</ul>
+
+</body> </html>
diff --git a/modules/CIAO/docs/Trace.html b/modules/CIAO/docs/Trace.html
new file mode 100644
index 00000000000..001cddd007e
--- /dev/null
+++ b/modules/CIAO/docs/Trace.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<!-- $Id$ -->
+ <title>CIAO Logging facility</title>
+</head>
+<body>
+<h1>CIAO Logging Facility
+</h1>
+Based on the various logging techniques provided by ACE mechanism, CIAO
+has introduced some new logging macros to assist CIAO developers in
+diagnosing CIAO codes.<br>
+<ul>
+ <li><span style="font-weight: bold;">CIAO_TRACE<br>
+ </span>&nbsp;&nbsp;&nbsp; By placing CIAO_TRACE at the beginning of
+a CIAO function or method, you can get the tracing message of when
+these functions are entered and when they are exited at runtime. To
+enable this feature, however, you need to set CIAO_NTRACE to 0 in
+$ACE_ROOT\ace\config.h. CIAO_TRACE works in a identical way as
+ACE_TRACE. The only distinction is that CIAO_TRACE will output the the
+tracing messages for CIAO projects only while dumping the excessive
+messages from ACE on top of which CIAO is built. <br>
+ </li>
+</ul>
+<hr>
+<address>Ming Xiong<br>
+Last modified: Thur Aug 12:50 am 2005
+</address>
+<!-- hhmts start -->
+<!-- hhmts end -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd b/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd
new file mode 100644
index 00000000000..7877afe2151
--- /dev/null
+++ b/modules/CIAO/docs/XML/ciao_rt_cad_ext.dtd
@@ -0,0 +1,93 @@
+<!--
+ $Id$
+
+ DTD for CIAO ComponentAssembly real-time extension.
+ The extension for this type of XML document should be .RTD
+
+ A component server can be associated to one conforming XML
+ descriptor file of this DTD via the <extension> tag under
+ <hostcollocation>, <processcollocation> as
+
+ <extension class="RT-CAD-EXT"
+ origin="CIAO">pathname_to_xml_file.xml</extension>
+
+ The root element is <rtcad-ext>.
+
+ The <extension> tag under <homeplacement> element can be used to
+ specify the <rtpolicyset> named in this file (using rtpolicyset's
+ id attribute.) For example,
+
+ <extension class="RT-POLICY-SET"
+ origin="CIAO">IDREF_of_some_rtpolicyset</extension>
+
+-->
+
+<!ELEMENT rtcad_ext ( rtresources?, rtpolicyset+ ) >
+
+<!-- RT Resources grammar definitions -->
+
+<!ELEMENT rtresources (threadpool | threadpoolwithlanes | connectionbands)* >
+
+<!ELEMENT threadpool EMPTY>
+<!ATTLIST threadpool
+ id ID #REQUIRED
+ stacksize CDATA #REQUIRED
+ static_threads CDATA #REQUIRED
+ dynamic_threads CDATA #REQUIRED
+ priority CDATA #REQUIRED
+ buffering (yes | no) #REQUIRED
+ max_buffer CDATA #REQUIRED
+ buffer_size CDATA #REQUIRED >
+
+<!ELEMENT threadpoolwithlanes (lane+) >
+<!ATTLIST threadpoolwithlanes
+ id ID #REQUIRED
+ stacksize CDATA #REQUIRED
+ borrowing (yes | no) #REQUIRED
+ buffering (yes | no) #REQUIRED
+ max_buffer CDATA #REQUIRED
+ buffer_size CDATA #REQUIRED >
+
+<!ELEMENT lane EMPTY>
+<!ATTLIST lane
+ priority CDATA #REQUIRED
+ static_threads CDATA #REQUIRED
+ dynamic_threads CDATA #REQUIRED >
+
+<!ELEMENT connectionbands (band+) >
+<!ATTLIST connectionbands
+ id ID #REQUIRED >
+
+<!ELEMENT band EMPTY>
+<!ATTLIST band
+ low CDATA #REQUIRED
+ high CDATA #REQUIRED >
+
+<!-- RT Policy_Set grammar definitions -->
+<!-- Each type of policy in rtpoliyset can only appear once -->
+<!ELEMENT rtpolicyset (priority_model_policy,
+ threadpool_policy,
+ banded_connection_policy)+ >
+<!ATTLIST rtpolicyset
+ id ID #REQUIRED>
+
+<!ELEMENT priority_model_policy EMPTY>
+<!ATTLIST priority_model_policy
+ type (server_declared | client_propagated) #REQUIRED
+ priority CDATA #REQUIRED>
+
+<!ELEMENT threadpool_policy EMPTY>
+<!--
+ "idref" must be previously defined by the id attribute of
+ either <threadpool> or <threadpoollanes> element
+-->
+<!ATTLIST threadpool_policy
+ idref IDREF #REQUIRED>
+
+<!ELEMENT banded_connection_policy EMPTY>
+<!--
+ "idref" must be previously defined by the id attribute of
+ <connectionbands> element.
+-->
+<!ATTLIST banded_connection_policy
+ idref IDREF #REQUIRED> \ No newline at end of file
diff --git a/modules/CIAO/docs/XML/componentassembly.dtd b/modules/CIAO/docs/XML/componentassembly.dtd
new file mode 100644
index 00000000000..d61fb47505f
--- /dev/null
+++ b/modules/CIAO/docs/XML/componentassembly.dtd
@@ -0,0 +1,367 @@
+<!-- DTD for Component Assembly Descriptor. The root element
+ is <componentassembly>. Elements are listed
+ alphabetically.
+ -->
+
+<!-- Simple xml link attributes based on W3C WD-xlink-19980303.
+ May change slightly when XLL is finalized.
+ -->
+<!ENTITY % simple-link-attributes "
+ xml:link CDATA #FIXED 'SIMPLE'
+ href CDATA #REQUIRED
+" >
+
+<!ELEMENT componentassembly
+ ( description?
+ , componentfiles
+ , partitioning
+ , connections?
+ , extension*
+ ) >
+<!ATTLIST componentassembly
+ id ID #REQUIRED
+ derivedfrom CDATA #IMPLIED >
+
+<!-- If file not available locally, then download via codebase link -->
+<!ELEMENT codebase EMPTY >
+<!ATTLIST codebase
+ filename CDATA #IMPLIED
+ %simple-link-attributes; >
+
+<!ELEMENT componentfile
+ ( fileinarchive
+ | codebase
+ | link
+ ) >
+<!ATTLIST componentfile
+ id ID #REQUIRED
+ type CDATA #IMPLIED >
+
+<!ELEMENT componentfileref EMPTY >
+<!ATTLIST componentfileref
+ idref CDATA #REQUIRED >
+
+<!ELEMENT componentfiles
+ ( componentfile+
+ ) >
+
+<!ELEMENT componentimplref EMPTY >
+<!ATTLIST componentimplref
+ idref CDATA #REQUIRED >
+
+<!ELEMENT componentinstantiation
+ ( usagename?
+ , componentproperties?
+ , registercomponent*
+ , extension*
+ ) >
+<!ATTLIST componentinstantiation
+ id ID #REQUIRED >
+
+<!ELEMENT componentinstantiationref EMPTY >
+<!ATTLIST componentinstantiationref
+ idref CDATA #REQUIRED >
+
+<!ELEMENT componentproperties
+ ( fileinarchive
+ | codebase
+ ) >
+
+<!ELEMENT componentsupportedinterface
+ ( componentinstantiationref
+ | findby
+ )>
+
+<!ELEMENT connectevent
+ ( ( consumesport
+ | existinginterface
+ )
+ , ( emitsport
+ | publishesport
+ )
+ ) >
+<!ATTLIST connectevent
+ id ID #IMPLIED >
+
+<!ELEMENT connecthomes
+ ( proxyhome
+ , destinationhome
+ ) >
+<!ATTLIST connecthomes
+ id ID #IMPLIED >
+
+<!ELEMENT connectinterface
+ ( usesport
+ , ( providesport
+ | componentsupportedinterface
+ | existinginterface
+ | homeinterface
+ )
+ ) >
+<!ATTLIST connectinterface
+ id ID #IMPLIED >
+
+<!ELEMENT connections
+ ( connectinterface
+ | connectevent
+ | connecthomes
+ | extension
+ )* >
+
+<!ELEMENT consumesidentifier ( #PCDATA ) >
+
+<!ELEMENT consumesport
+ ( consumesidentifier
+ , ( componentinstantiationref
+ | findby
+ )
+ )>
+
+<!ELEMENT description ( #PCDATA ) >
+
+<!ELEMENT destination ( #PCDATA ) >
+
+<!ELEMENT destinationhome
+ ( homeplacementref
+ | findby
+ ) >
+
+<!ELEMENT emitsidentifier ( #PCDATA ) >
+
+<!ELEMENT emitsport
+ ( emitsidentifier
+ , ( componentinstantiationref
+ | findby
+ )
+ )>
+
+<!ELEMENT executableplacement
+ ( usagename?
+ , componentfileref
+ , componentimplref?
+ , invocation?
+ , destination?
+ , extension*
+ ) >
+<!ATTLIST executableplacement
+ id ID #REQUIRED
+ cardinality CDATA "1" >
+
+<!ELEMENT existinginterface
+ ( findby )>
+
+<!-- The "extension" element is used for vendor-specific extensions -->
+<!ELEMENT extension (#PCDATA) >
+<!ATTLIST extension
+ class CDATA #REQUIRED
+ origin CDATA #REQUIRED
+ id ID #IMPLIED
+ extra CDATA #IMPLIED
+ html-form CDATA #IMPLIED >
+
+<!-- The "fileinarchive" element is used to specify a file in the archive.
+ If the file is independent of an archive then link is used to point to
+ the archive in which the file may be found.
+ -->
+<!ELEMENT fileinarchive
+ ( link? ) >
+<!ATTLIST fileinarchive
+ name CDATA #REQUIRED >
+
+<!ELEMENT findby
+ ( namingservice
+ | stringifiedobjectref
+ | traderquery
+ | homefinder
+ | extension
+ ) >
+
+<!ELEMENT homefinder EMPTY >
+<!ATTLIST homefinder
+ name CDATA #REQUIRED >
+
+<!ELEMENT homeinterface
+ ( homeplacementref
+ | findby
+ )>
+
+<!ELEMENT homeplacement
+ ( usagename?
+ , componentfileref
+ , componentimplref?
+ , homeproperties?
+ , componentproperties?
+ , registerwithhomefinder*
+ , registerwithnaming*
+ , registerwithtrader*
+ , componentinstantiation*
+ , destination?
+ , extension*
+ ) >
+<!ATTLIST homeplacement
+ id ID #REQUIRED
+ cardinality CDATA "1" >
+
+<!ELEMENT homeplacementref EMPTY >
+<!ATTLIST homeplacementref
+ idref CDATA #REQUIRED >
+
+<!ELEMENT homeproperties
+ ( fileinarchive
+ | codebase
+ ) >
+
+<!ELEMENT hostcollocation
+ ( usagename?
+ , impltype?
+ , ( homeplacement
+ | executableplacement
+ | processcollocation
+ | extension
+ )+
+ , destination?
+ ) >
+<!ATTLIST hostcollocation
+ id ID #IMPLIED
+ cardinality CDATA "1" >
+
+<!ELEMENT impltype EMPTY >
+<!ATTLIST impltype
+ language CDATA #REQUIRED
+ version CDATA #IMPLIED >
+
+<!ELEMENT invocation EMPTY >
+<!ATTLIST invocation
+ args CDATA #REQUIRED >
+
+<!ELEMENT link ( #PCDATA ) >
+<!ATTLIST link
+ %simple-link-attributes; >
+
+<!ELEMENT namingservice EMPTY >
+<!ATTLIST namingservice
+ name CDATA #REQUIRED >
+
+<!ELEMENT partitioning
+ ( homeplacement
+ | executableplacement
+ | processcollocation
+ | hostcollocation
+ | extension
+ )* >
+
+<!ELEMENT processcollocation
+ ( usagename?
+ , impltype?
+ , ( homeplacement
+ | extension
+ )+
+ , destination?
+ ) >
+<!ATTLIST processcollocation
+ id ID #IMPLIED
+ cardinality CDATA "1" >
+
+<!ELEMENT providesidentifier ( #PCDATA ) >
+
+<!ELEMENT providesport
+ ( providesidentifier
+ , ( componentinstantiationref
+ | findby
+ )
+ ) >
+
+<!ELEMENT proxyhome
+ ( homeplacementref
+ | findby
+ ) >
+
+<!ELEMENT publishesidentifier ( #PCDATA ) >
+
+<!ELEMENT publishesport
+ ( publishesidentifier
+ , ( componentinstantiationref
+ | findby
+ )
+ ) >
+
+<!ELEMENT registercomponent
+ ( ( providesidentifier
+ | consumesidentifier
+ )?
+ , ( registerwithnaming
+ | registerwithtrader
+ )+
+ ) >
+
+<!ELEMENT registerwithhomefinder EMPTY >
+<!ATTLIST registerwithhomefinder
+ name CDATA #REQUIRED >
+
+<!ELEMENT registerwithnaming EMPTY >
+<!ATTLIST registerwithnaming
+ name CDATA #IMPLIED >
+
+<!ELEMENT registerwithtrader
+ ( traderexport ) >
+<!ATTLIST registerwithtrader
+ tradername CDATA #IMPLIED >
+
+<!-- DEVNOTE: is tradername necessary? -->
+<!-- DEVNOTE: Should trader properties be specified in component file?
+ And in assembly file? -->
+
+<!ELEMENT stringifiedobjectref ( #PCDATA ) >
+
+<!ELEMENT traderconstraint ( #PCDATA ) >
+
+<!ELEMENT traderexport
+ ( traderservicetypename
+ , traderproperties
+ ) >
+
+<!ELEMENT traderpolicy
+ ( traderpolicyname
+ , traderpolicyvalue
+ ) >
+
+<!ELEMENT traderpolicyname ( #PCDATA ) >
+
+<!ELEMENT traderpolicyvalue ( #PCDATA ) >
+
+<!ELEMENT traderpreference ( #PCDATA ) >
+
+<!ELEMENT traderproperties
+ ( traderproperty+ ) >
+
+<!ELEMENT traderproperty
+ ( traderpropertyname
+ , traderpropertyvalue
+ ) >
+
+<!ELEMENT traderpropertyname ( #PCDATA ) >
+
+<!ELEMENT traderpropertyvalue ( #PCDATA ) >
+
+<!ELEMENT traderquery
+ ( traderservicetypename
+ , traderconstraint
+ , traderpreference?
+ , traderpolicy*
+ , traderspecifiedprop*
+ ) >
+
+<!ELEMENT traderservicetypename ( #PCDATA ) >
+
+<!ELEMENT traderspecifiedprop ( #PCDATA ) >
+
+<!ELEMENT usagename ( #PCDATA ) >
+
+<!ELEMENT usesidentifier ( #PCDATA ) >
+
+<!ELEMENT usesport
+ ( usesidentifier
+ , ( componentinstantiationref
+ | findby
+ )
+ ) >
diff --git a/modules/CIAO/docs/XML/corbacomponent.dtd b/modules/CIAO/docs/XML/corbacomponent.dtd
new file mode 100644
index 00000000000..fd5ec98f377
--- /dev/null
+++ b/modules/CIAO/docs/XML/corbacomponent.dtd
@@ -0,0 +1,316 @@
+<!-- DTD for CORBA Component Descriptor. The root element is
+ <corbacomponent>. Elements are listed alphabetically.
+-->
+
+<!-- Simple xml link attributes based on W3C WD-xlink-19980303.
+ May change when XLL is finalized. -->
+
+<!ENTITY % simple-link-attributes "
+ xml:link CDATA #FIXED 'SIMPLE'
+ href CDATA #REQUIRED
+">
+
+<!ELEMENT accessmode EMPTY>
+<!ATTLIST accessmode
+ mode (READ_ONLY|READ_WRITE) #REQUIRED >
+
+<!ELEMENT componentfeatures
+ ( inheritscomponent?
+ , supportsinterface*
+ , ports
+ , operationpolicies?
+ , extension*
+ ) >
+<!ATTLIST componentfeatures
+ name CDATA #REQUIRED
+ repid CDATA #REQUIRED >
+
+<!ELEMENT componentkind
+ ( service
+ | session
+ | process
+ | entity
+ | unclassified
+ ) >
+
+<!ELEMENT componentproperties
+ ( fileinarchive
+ ) >
+
+<!ELEMENT componentrepid EMPTY >
+<!ATTLIST componentrepid
+ repid CDATA #IMPLIED >
+
+<!ELEMENT containermanagedpersistence
+ ( storagehome
+ , pssimplementation?
+ , accessmode
+ , psstransaction
+ , params?
+ ) >
+
+<!ELEMENT configurationcomplete EMPTY >
+<!ATTLIST configurationcomplete
+ set ( true | false ) #REQUIRED >
+
+<!ELEMENT consumes
+ ( eventpolicy
+ , extension* ) >
+<!ATTLIST consumes
+ consumesname CDATA #REQUIRED
+ eventtype CDATA #REQUIRED >
+
+<!ELEMENT corbacomponent
+ ( corbaversion
+ , cormponentrepid
+ , homerepid
+ , componentkind
+ , interop?
+ , transaction?
+ , security?
+ , threading
+ , configurationcomplete
+ , extendedpoapolicy*
+ , repository?
+ , segment*
+ , componentproperties?
+ , homeproperties?
+ , homefeatures+
+ , componentfeatures+
+ , interface*
+ , extension*
+ ) >
+
+<!ELEMENT corbaversion (#PCDATA) >
+
+<!ELEMENT description ( #PCDATA ) >
+
+<!ELEMENT emits
+ ( eventpolicy
+ , extension* ) >
+<!ATTLIST emits
+ emitsname CDATA #REQUIRED
+ eventtype CDATA #REQUIRED >
+
+<!ELEMENT entity
+ ( servant ) >
+
+<!ELEMENT eventpolicy EMPTY>
+<!ATTLIST eventpolicy
+ policy ( normal | default | transaction ) #IMPLIED>
+
+<!ELEMENT extendedpoapolicy EMPTY>
+<!ATTLIST extendedpoapolicy
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED >
+
+<!-- The "extension" element is used for vendor-specific extensions -->
+<!ELEMENT extension (#PCDATA) >
+<!ATTLIST extension
+ class CDATA #REQUIRED
+ origin CDATA #REQUIRED
+ id ID #IMPLIED
+ extra CDATA #IMPLIED
+ html-form CDATA #IMPLIED >
+
+<!-- The "fileinarchive" element is used to specify a file in the
+ archive. If the file is in another archive then link is used to
+ point to the archive in which the file may be found.
+ -->
+<!ELEMENT fileinarchive
+ ( link? ) >
+<!ATTLIST fileinarchive
+ name CDATA #REQUIRED >
+
+<!ELEMENT homefeatures
+ ( inheritshome?
+ , operationpolicies?
+ , extension* ) >
+<!ATTLIST homefeatures
+ name CDATA #REQUIRED
+ repid CDATA #REQUIRED >
+
+<!ELEMENT homeproperties
+ ( fileinarchive
+ ) >
+
+<!ELEMENT homerepid EMPTY >
+<!ATTLIST homerepid
+ repid CDATA #IMPLIED >
+
+<!ELEMENT inheritscomponent EMPTY>
+<!ATTLIST inheritscomponent
+ repid CDATA #REQUIRED>
+
+<!ELEMENT inheritshome EMPTY>
+<!ATTLIST inheritshome
+ repid CDATA #REQUIRED>
+
+<!ELEMENT inheritsinterface EMPTY>
+<!ATTLIST inheritsinterface
+ repid CDATA #REQUIRED>
+
+<!ELEMENT ins EMPTY>
+<!ATTLIST ins
+ name CDATA #REQUIRED >
+
+<!ELEMENT interface
+ ( inheritsinterface*
+ , operationpolicies? ) >
+<!ATTLIST interface
+ name CDATA #REQUIRED
+ repid CDATA #REQUIRED >
+
+<!ELEMENT interop EMPTY>
+<!ATTLIST interop
+ type CDATA #REQUIRED
+ direction ( hasview | isview ) #REQUIRED
+ descriptor CDATA #REQUIRED >
+
+<!ELEMENT link ( #PCDATA ) >
+<!ATTLIST link
+ %simple-link-attributes; >
+
+<!ELEMENT objref EMPTY>
+<!ATTLIST objref
+ string CDATA #REQUIRED >
+
+<!ELEMENT operation
+ ( transaction?
+ , requiredrights? ) >
+<!ATTLIST operation
+ name CDATA #REQUIRED >
+
+<!-- an operation name of "*" specifies all operations in the current
+scope -->
+<!ELEMENT operationpolicies
+ ( operation+ ) >
+
+<!ELEMENT param EMPTY >
+<!ATTLIST param
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED >
+
+<!ELEMENT params (param+) >
+
+<!ELEMENT poapolicies EMPTY>
+<!ATTLIST poapolicies
+ thread (ORB_CTRL_MODEL | SINGLE_THREAD_SAFE ) #REQUIRED
+ lifespan (TRANSIENT | PERSISTENT ) #REQUIRED
+ iduniqueness (UNIQUE_ID | MULTIPLE_ID) #REQUIRED
+ idassignment (USER_ID | SYSTEM_ID) #REQUIRED
+ servantretention (RETAIN | NON_RETAIN) #REQUIRED
+ requestprocessing (USE_ACTIVE_OBJECT_MAP_ONLY
+ |USE_DEFAULT_SERVANT
+ |USE_SERVANT_MANAGER) #REQUIRED
+ implicitactivation (IMPLICIT_ACTIVATION
+ |NON_IMPLICIT_ACTIVATION) #REQUIRED >
+
+<!ELEMENT ports
+ ( uses
+ | provides
+ | emits
+ | publishes
+ | consumes
+ )* >
+
+<!ELEMENT process
+ ( servant ) >
+
+<!ELEMENT provides
+ ( operationpolicies?
+ , extension* ) >
+<!ATTLIST provides
+ providesname CDATA #REQUIRED
+ repid CDATA #REQUIRED
+ facettag CDATA #REQUIRED >
+
+<!ELEMENT pssimplementation EMPTY>
+<!ATTLIST pssimplementation
+ id CDATA #REQUIRED >
+
+<!ELEMENT psstransaction (psstransactionisolationlevel?) >
+<!ATTLIST psstransaction
+ policy (TRANSACTIONAL|NON_TRANSACTIONAL) #REQUIRED >
+
+<!ELEMENT psstransactionisolationlevel EMPTY>
+<!ATTLIST psstransactionisolationlevel
+ level (READ_UNCOMMITTED|READ_COMMITTED|REPEATABLE_READ|SERIALIZABLE)
+ #REQUIRED >
+
+<!ELEMENT publishes
+ ( eventpolicy
+ , extension* ) >
+<!ATTLIST publishes
+ publishesname CDATA #REQUIRED
+ eventtype CDATA #REQUIRED >
+
+<!ELEMENT repository
+ ( ins
+ | objref
+ | link
+ ) >
+<!ATTLIST repository
+ type CDATA #IMPLIED >
+
+<!ELEMENT requiredrights
+ ( right* ) >
+
+<!ELEMENT right
+ ( description? ) >
+<!ATTLIST right
+ name CDATA #REQUIRED >
+
+<!ELEMENT security
+ ( requiredrights? ) >
+<!ATTLIST security
+ rightsfamily CDATA #REQUIRED
+ rightscombinator (secallrights | secanyrights) #REQUIRED >
+
+<!ELEMENT segment
+ ( segmentmember+
+ , containermanagedpersistence?
+ , extension*
+ ) >
+<!ATTLIST segment
+ name CDATA #REQUIRED
+ segmenttag CDATA #REQUIRED >
+
+<!ELEMENT segmentmember EMPTY>
+<!ATTLIST segmentmember
+ facettag CDATA #REQUIRED >
+
+<!ELEMENT servant EMPTY >
+<!ATTLIST servant
+ lifetime (component|method|transaction|container) #REQUIRED >
+
+<!ELEMENT service EMPTY >
+
+<!ELEMENT session
+ ( servant ) >
+
+<!ELEMENT storagehome EMPTY>
+<!ATTLIST storagehome
+ id CDATA #REQUIRED >
+
+<!ELEMENT supportsinterface
+ ( operationpolicies?
+ , extension* ) >
+<!ATTLIST supportsinterface
+ repid CDATA #REQUIRED >
+
+<!ELEMENT threading EMPTY>
+<!ATTLIST threading
+ policy ( serialize | multithread ) #REQUIRED >
+
+<!ELEMENT transaction EMPTY >
+<!ATTLIST transaction
+ use (self-managed|not-supported|required|supports|requiresnew|
+ mandatory|never) #REQUIRED >
+<!ELEMENT unclassified
+ ( poapolicies ) >
+
+<!ELEMENT uses ( extension* ) >
+<!ATTLIST uses
+ usesname CDATA #REQUIRED
+ repid CDATA #REQUIRED >
diff --git a/modules/CIAO/docs/XML/properties.dtd b/modules/CIAO/docs/XML/properties.dtd
new file mode 100644
index 00000000000..adfe8699fb7
--- /dev/null
+++ b/modules/CIAO/docs/XML/properties.dtd
@@ -0,0 +1,87 @@
+<!-- DTD for CORBA Component property file. The root element
+ is <properties>. Elements are listed alphabetically.
+-->
+
+<!ELEMENT choice ( #PCDATA ) >
+
+<!ELEMENT choices ( choice | range )+ ) >
+
+<!ELEMENT defaultvalue ( #PCDATA ) >
+
+<!ELEMENT description ( #PCDATA ) >
+
+<!ELEMENT value ( #PCDATA ) >
+
+<!ELEMENT properties
+ ( description?
+ , ( simple
+ | sequence
+ | struct
+ | valuetype
+ )*
+ ) >
+
+<!ELEMENT range (value, value) >
+
+<!ELEMENT simple
+ ( description?
+ , value
+ , choices?
+ , defaultvalue?
+ ) >
+<!ATTLIST simple
+ name CDATA #IMPLIED
+ type ( boolean
+ | char
+ | double
+ | float
+ | short
+ | long
+ | objref
+ | octet
+ | string
+ | ulong
+ | ushort
+ | longlong
+ | ulonglong
+ | wchar
+ | wstring
+ | fixed
+ ) #REQUIRED >
+
+<!ELEMENT sequence
+ ( description?
+ , ( simple*
+ | struct*
+ | sequence*
+ | valuetype*
+ )
+ ) >
+<!ATTLIST sequence
+ name CDATA #IMPLIED
+ type CDATA #REQUIRED >
+
+<!ELEMENT struct
+ ( description?
+ , ( simple
+ | sequence
+ | struct
+ | valuetype
+ )*
+ ) >
+<!ATTLIST struct
+ name CDATA #IMPLIED
+ type CDATA #REQUIRED >
+
+<!ELEMENT valuetype
+ ( description?
+ , ( simple
+ | sequence
+ | struct
+ | valuetype
+ )*
+ ) >
+<!ATTLIST valuetype
+ name CDATA #IMPLIED
+ type CDATA #REQUIRED
+ primarykey (true | false) "false" >
diff --git a/modules/CIAO/docs/XML/softpkg.dtd b/modules/CIAO/docs/XML/softpkg.dtd
new file mode 100644
index 00000000000..ee87b811cc6
--- /dev/null
+++ b/modules/CIAO/docs/XML/softpkg.dtd
@@ -0,0 +1,220 @@
+<!-- DTD for softpkg. Used to describe CORBA Component
+ implementations. The root element is <softpkg>.
+ Elements are listed alphabetically.
+ -->
+<!-- Revision $Id$ -->
+<!-- Simple xml link attributes based on W3C WD-xlink-19980303.
+ May change when XLL is finalized. -->
+
+<!ENTITY % simple-link-attributes "
+ xml:link CDATA #FIXED 'SIMPLE'
+ href CDATA #REQUIRED
+">
+
+<!ELEMENT author
+ ( name
+ | company
+ | webpage
+ )* >
+
+<!ELEMENT code
+ ( ( codebase
+ | fileinarchive
+ | link
+ )
+ , entrypoint?
+ , usage?
+ ) >
+<!ATTLIST code
+ type CDATA #IMPLIED >
+
+<!-- If file not available locally, then download via codebase link -->
+<!ELEMENT codebase EMPTY >
+<!ATTLIST codebase
+ filename CDATA #IMPLIED
+ %simple-link-attributes; >
+
+<!ELEMENT compiler EMPTY >
+<!ATTLIST compiler
+ name CDATA #REQUIRED
+ version CDATA #IMPLIED >
+
+<!ELEMENT company ( #PCDATA ) >
+
+<!ELEMENT dependency
+ ( softpkgref
+ | codebase
+ | fileinarchive
+ | localfile
+ | name
+ | valuetypefactory
+ ) >
+<!ATTLIST dependency
+ type CDATA #IMPLIED
+ action (assert | install) "assert">
+
+<!ELEMENT description ( #PCDATA ) >
+
+<!ELEMENT descriptor
+ ( link
+ | fileinarchive
+ ) >
+<!ATTLIST descriptor
+ type CDATA #IMPLIED>
+
+<!ELEMENT entrypoint ( #PCDATA) >
+
+<!-- The "extension" element is used for vendor-specific extensions -->
+<!ELEMENT extension (#PCDATA) >
+<!ATTLIST extension
+ class CDATA #REQUIRED
+ origin CDATA #REQUIRED
+ id ID #IMPLIED
+ extra CDATA #IMPLIED
+ html-form CDATA #IMPLIED >
+
+<!-- The "fileinarchive" element is used to specify a file in the archive.
+ If the file is in another archive then link is used to point to
+ the archive in which the file may be found.
+ -->
+<!ELEMENT fileinarchive
+ ( link? ) >
+<!ATTLIST fileinarchive
+ name CDATA #REQUIRED >
+
+<!ELEMENT idl
+ ( link
+ | fileinarchive
+ | repository
+ ) >
+<!ATTLIST idl
+ id CDATA #REQUIRED
+ homeid CDATA #REQUIRED >
+
+<!ELEMENT implementation
+ ( description
+ | code
+ | compiler
+ | dependency
+ | descriptor
+ | extension
+ | programminglanguage
+ | humanlanguage
+ | os
+ | propertyfile
+ | processor
+ | runtime
+ )* >
+<!ATTLIST implementation
+ id ID #IMPLIED
+ variation CDATA #IMPLIED >
+
+<!ELEMENT implref EMPTY >
+<!ATTLIST implref
+ idref CDATA #REQUIRED >
+
+<!ELEMENT ins EMPTY >
+<!ATTLIST inc
+ name CDATA #REQUIRED >
+
+<!ELEMENT humanlanguage EMPTY >
+<!ATTLIST humanlanguage
+ name CDATA #REQUIRED >
+
+<!ELEMENT license ( #PCDATA ) >
+<!ATTLIST license
+ %simple-link-attributes; >
+
+<!ELEMENT link ( #PCDATA ) >
+<!ATTLIST link
+ %simple-link-attributes; >
+
+<!-- A file that should be available in the local environment -->
+<!ELEMENT localfile EMPTY >
+<!ATTLIST localfile
+ name CDATA #REQUIRED >
+
+<!ELEMENT name ( #PCDATA ) >
+
+<!ELEMENT objref EMPTY >
+<!ATTLIST objref
+ string CDATA #REQUIRED >
+
+<!ELEMENT os EMPTY >
+<!ATTLIST os
+ name CDATA #REQUIRED
+ version CDATA #IMPLIED>
+
+<!ELEMENT pkgtype ( #PCDATA ) >
+<!ATTLIST pkgtype
+ version CDATA #IMPLIED >
+
+<!ELEMENT processor EMPTY >
+<!ATTLIST processor
+ name CDATA #REQUIRED >
+
+<!ELEMENT programminglanguage EMPTY>
+<!ATTLIST programminglanguage
+ name CDATA #REQUIRED
+ version CDATA #IMPLIED >
+
+<!ELEMENT propertyfile
+ ( fileinarchive
+ | link) >
+<!ATTLIST propertyfile
+ type CDATA #IMPLIED >
+
+<!ELEMENT repository
+ ( ins
+ | objref
+ | link
+ ) >
+<!ATTLIST repository
+ type CDATA #IMPLIED >
+
+<!ELEMENT runtime EMPTY >
+<!ATTLIST runtime
+ name CDATA #REQUIRED
+ version CDATA #IMPLIED>
+
+<!ELEMENT softpkg
+ ( title
+ | pkgtype
+ | author
+ | description?
+ | license
+ | idl
+ | propertyfile
+ | dependency
+ | descriptor
+ | implementation
+ | extension
+ )* >
+<!ATTLIST softpkg
+ name ID #REQUIRED
+ version CDATA #IMPLIED >
+
+<!ELEMENT softpkgref
+ ( ( fileinarchive
+ | link
+ )
+ , implref?
+ ) >
+
+<!ELEMENT title ( #PCDATA ) >
+
+<!ELEMENT usage ( #PCDATA ) >
+
+<!ELEMENT valuetypefactory
+ ( codebase
+ | fileinarchive
+ | link
+ ) >
+<!ATTLIST valuetypefactory
+ repid CDATA #REQUIRED
+ valueentrypoint CDATA #IMPLIED
+ factoryentrypoint CDATA #IMPLIED >
+
+<!ELEMENT webpage ( #PCDATA ) >
+<!ATTLIST webpage
+ %simple-link-attributes; >
diff --git a/modules/CIAO/docs/cidlc.html b/modules/CIAO/docs/cidlc.html
new file mode 100644
index 00000000000..3fbc7f80191
--- /dev/null
+++ b/modules/CIAO/docs/cidlc.html
@@ -0,0 +1,296 @@
+<!-- $Id$ -->
+<html>
+
+<title>CIAO CIDL Compiler Options</title>
+
+<body>
+
+<h3>CIAO CIDL Compiler Options</h3>
+
+<div align="center">
+<table width="0" border="0" cellspacing="0" cellpadding="0">
+<tr>
+<td>
+<p>
+<code>
+./cidlc { OPTIONS } &lt;cidl file&gt;
+</code>
+</p>
+<dl>
+<dt>
+<code>
+[--version]
+</code>
+</dt>
+<dd>
+<p>
+Display version information and exit.
+</p>
+</dd>
+<dt>
+<code>
+[--help]
+</code>
+</dt>
+<dd>
+<p>
+Display usage information and exit.
+</p>
+</dd>
+<dt>
+<code>
+[--help-html]
+</code>
+</dt>
+<dd>
+<p>
+Dump usage information in html format and exit.
+</p>
+</dd>
+<dt>
+<code>
+[-I dir]
+</code>
+</dt>
+<dd>
+<p>
+Add the directory dir to the list of directories to be searched for header files.
+</p>
+</dd>
+<dt>
+<code>
+[-D name[=definition]]
+</code>
+</dt>
+<dd>
+<p>
+Predefine name as a macro with the value definition if present, 1 otherwise.
+</p>
+</dd>
+<dt>
+<code>
+[--gen-exec-impl]
+</code>
+</dt>
+<dd>
+<p>
+Generate the executor implementation classes.
+</p>
+</dd>
+<dt>
+<code>
+[--lem-force-all]
+</code>
+</dt>
+<dd>
+<p>
+Force generation of local executor mapping for all IDL types including those not used (directly or inderectly) by compositions. This option is useful for generating a common portion of local executor mapping used by more than one component or composition.
+</p>
+</dd>
+<dt>
+<code>
+[--lem-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default 'E' when constructing name of local executor mapping file.
+</p>
+</dd>
+<dt>
+<code>
+[--lem-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of local executor mapping file.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-hdr-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default '_svnt.h' when constructing name of servant file.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-hdr-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of servant file.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-src-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default '_svnt.cpp' when constructing name of servant file.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-src-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of servant file.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-export-macro macro]
+</code>
+</dt>
+<dd>
+<p>
+Replace default servant DLL export macro with provided ,acro.
+</p>
+</dd>
+<dt>
+<code>
+[--svnt-export-include file]
+</code>
+</dt>
+<dd>
+<p>
+Replace default servant export include file with provided file.
+</p>
+</dd>
+<dt>
+<code>
+[--suppress-register-factory]
+</code>
+</dt>
+<dd>
+<p>
+Suppress generation of code to register eventtype factories for event sinks.
+</p>
+</dd>
+<dt>
+<code>
+[--custom-container type]
+</code>
+</dt>
+<dd>
+<p>
+Generate code for custom container of the provided type.
+</p>
+</dd>
+<dt>
+<code>
+[--desc-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default '.ccd' when constructing name of descriptor file.
+</p>
+</dd>
+<dt>
+<code>
+[--desc-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of descriptor file.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-hdr-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default '_exec.h' when constructing name of executor implementation file.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-hdr-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of executor implementation file.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-src-file-suffix suffix]
+</code>
+</dt>
+<dd>
+<p>
+Use provided suffix instead of default '_exec.cpp' when constructing name of executor implementation file.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-src-file-regex regex]
+</code>
+</dt>
+<dd>
+<p>
+Use provided regular expression when constructing name of executor implementation file.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-export-macro macro]
+</code>
+</dt>
+<dd>
+<p>
+Replace default executor DLL export macro with provided macro.
+</p>
+</dd>
+<dt>
+<code>
+[--exec-export-include file]
+</code>
+</dt>
+<dd>
+<p>
+Replace default executor export include file with provided file.
+</p>
+</dd>
+<dt>
+<code>
+[--trace-semantic-actions]
+</code>
+</dt>
+<dd>
+<p>
+Turn on semantic actions tracing facility.
+</p>
+</dd>
+<dt>
+<code>
+[--preprocess-only]
+</code>
+</dt>
+<dd>
+<p>
+Run preprocessor only and output result to stdout.
+</p>
+</dd>
+</dl>
+</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/modules/CIAO/docs/com-impl.html b/modules/CIAO/docs/com-impl.html
new file mode 100644
index 00000000000..ed5948ab9cf
--- /dev/null
+++ b/modules/CIAO/docs/com-impl.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $Id$ -->
+<html> <head>
+<title>Implementing a CCM Component</title>
+</head>
+
+<body>
+<h1>Implementing a CCM Component</h1>
+
+This document explains how to implement a single component. At this
+moment, CIAO lacks a CIDL compiler, and we depends on manually
+generating the servant glue code for containers and local executor
+interface. Check out this <a href="new_components.html">page</a> to
+find how all files are generate4d in CIAO.
+The following figure shows how this is done:<p>
+
+
+<img src="imgs/File-Gen-Existing.png"><p>
+
+And when we have a working CIDL (or, CCIDL "CIAO's Component
+Implementation Definition Language") compiler, the file will be
+generated using a CIDL file (which is rather simple.) This figure
+depicts the "Right Way" [TM] this should be done:<p>
+
+<img src="imgs/File-Gen-Future.png"><p>
+
+Checkout a <a href="../tools/CCIDL/README">list of things to do</a> for implementing CIDL compiler.<p>
+
+I think it is debatable whether we should merge the "Servant DLL" and
+"Component Implementation DLL" into one DLL. Me think not. My
+approach, however, creates some complication on requireing a mechanism
+to locate the servant code (and DLL) from component implementation.
+
+
+<h2>Libraries Dependencies</h2> Implementing a component creates 3
+DLL's as shown in the above figure. Both "Servant DLL" and "Component
+Implementation DLL" depend on the "Client DLL". "Servant DLL" and
+"Component Implementation DLL" are not mutually dependent, however.
+All the generated DLLs depends on other TAO and CIAO common
+libraries. Here's a break down of which libraries depends on which
+other libraries:
+
+<ul>
+ <li><b>Client DLL</b>: ace.lib tao.lib TAO_IFR_Client.lib
+ CIAO_Clientd.lib
+ <li><b>Servant DLL</b>: ace.lib tao.lib <b>Client DLL</b>
+ TAO_IFR_Client.lib TAO_PortableServer.lib TAO_Security.lib
+ CIAO_Container.lib CIAO_Client.lib
+ <li><b>Component Implementation DLL</b>: ace.lib tao.lib
+ <b>Client DLL</b> TAO_IFR_Client.lib TAO_Security.lib
+ CIAO_Container.lib
+</ul>
+
+ <!--#include virtual="/~nanbor/signature.html" -->
+<!-- <hr> -->
+<!-- <\!-- hhmts start -\-> -->
+<!-- Last modified: Tue Dec 10 22:41:50 Central Standard Time 2002 -->
+<!-- <\!-- hhmts end -\-> -->
+<!-- <address>Nanbor Wang &lt;nanbor@cs.wustl.edu&gt;</address> -->
+</body> </html>
diff --git a/modules/CIAO/docs/generate_component_mpc.html b/modules/CIAO/docs/generate_component_mpc.html
new file mode 100644
index 00000000000..3f109e57adc
--- /dev/null
+++ b/modules/CIAO/docs/generate_component_mpc.html
@@ -0,0 +1,105 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (X11; I; SunOS 5.5.1 sun4u) [Netscape]">
+ <title>TAO IDL compiler User's Guide</title>
+ <!-- $Id$ -->
+ </head>
+ <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#CC0000">
+ <hr>
+ <h3>Using The generate_component_mpc.pl Script</h3>
+ This document describes the options and usage of the Perl script <tt>generate_component_mpc.pl</tt>
+ in the <tt>$(CIAO_ROOT)/bin</tt> directory.
+ <HR>
+ <P>
+ <h4>Assumptions</h4>
+ This script is useful for generating MPC files for relatively simple component
+ applications. The string name passed to the script should be the name of the <em>single</em>
+ IDL file for that build (without the extension) and also the name of the single
+ CIDL file, if it is a component build. The names of export files, preprocessor
+ macros, and library names in the generated MPC file will all be constructed
+ from this string. It is also assumed that the IDL file for a component build
+ will contain a single component declaration.
+ <P>
+ Judicious use of the script options in the table below will generate a build
+ that keeps to a minimum both the code generated from IDL and the number of
+ linked libraries from the middleware.
+ <P>
+ <HR>
+ <h4><A NAME="options">Script Options</A></h4>
+
+ <table BORDER="2" CELLSPACING="2" CELLPADDING="0">
+ <tr>
+ <th>
+ Option</th>
+ <th>
+ Description</th>
+ <th>
+ Remark</th>
+ </tr>
+ <tr>
+ <a NAME="h">
+ <td><tt>-h</tt></td>
+ <td>The compiler prints out the options that are given below and exits clean
+ </td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <a NAME="p">
+ <td><tt>-p</tt><i> string</i></td>
+ <td>Indicates another make/project that this one depends on</td>
+ <td>Used as a project name prefix unless overridden by <tt>-u</tt> option</td>
+ </tr>
+ <tr>
+ <a name="l">
+ <td><tt>-l</tt><i> string</i></td>
+ </td>
+ <td>Path to the dependent name value of <tt>-p</tt></td>
+ <td>Needed only if the dependent make/project isn't already in the search path</td>
+ </tr>
+ <tr>
+ <a name="n">
+ <td><tt>-n</tt></td>
+ <td>Non-component make/project</td>
+ <td>Generates a <tt>*_stub</tt> and <tt>*_skel</tt> pair of builds, instead
+ of the default <tt>*_stub</tt>, <tt>*_svnt</tt> and <tt>*_exec</tt>
+ builds. Also specializes the IDL compiler command line options and linked
+ lib list, depending on the <tt>-e</tt> option, if it exists</td>
+ </tr>
+ <tr>
+ <a name="e">
+ <td><tt>-e</tt></td>
+ <td><tt>eventtype</tt> declaration present in IDL</td>
+ <td>Has no effect unless the <tt>-n</tt> option is also present, in which
+ case the IDL compiler command line options and list of linked libs will
+ change to reflect the fact that IDL eventtypes require typecode support
+ and depend on libs in CIAO, which for a non-component build would
+ otherwise not be the case</td>
+ </tr>
+ <tr>
+ <a name="i">
+ <td><tt>-i</tt></td>
+ <td>Use an executor IDL file</td>
+ <td>Indicates the presence of an IDL file in the executor make/project,
+ from which the actual executor implementation will inherit. Assumes
+ the name of this IDL file is of the form <tt>[<i>component_name</i>]EI.idl</tt></td>
+ </tr>
+ <tr>
+ <a name="c">
+ <td><tt>-c</tt></td>
+ <td>Create a client make/project</td>
+ <td>Generates a build for a "driver" executable. Assumes there is a single
+ C++ source file named <tt>client.cpp</tt></td>
+ </tr>
+ <tr>
+ <a name="u">
+ <td><tt>-u</tt></tt><i> string</i></td>
+ <td>Unique project name prefix</td>
+ <td>Occasionally needed since MPC doesn't accept duplicate project names
+ anywhere in the tree over which it is proecessing. This option
+ overrides the value of the <tt>-p</tt> option, if present</td>
+ </tr>
+ </table>
+ </body>
+</html>
diff --git a/modules/CIAO/docs/imgs/CCM-v5.vsd b/modules/CIAO/docs/imgs/CCM-v5.vsd
new file mode 100644
index 00000000000..7f4d7539050
--- /dev/null
+++ b/modules/CIAO/docs/imgs/CCM-v5.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/CCM.vsd b/modules/CIAO/docs/imgs/CCM.vsd
new file mode 100644
index 00000000000..239a4e7943d
--- /dev/null
+++ b/modules/CIAO/docs/imgs/CCM.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/DAnCE-Dynamic.png b/modules/CIAO/docs/imgs/DAnCE-Dynamic.png
new file mode 100644
index 00000000000..2e9917e1520
--- /dev/null
+++ b/modules/CIAO/docs/imgs/DAnCE-Dynamic.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd b/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd
new file mode 100644
index 00000000000..b795c5ae049
--- /dev/null
+++ b/modules/CIAO/docs/imgs/DAnCE-Dynamic.sxd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/File-Gen-Existing.png b/modules/CIAO/docs/imgs/File-Gen-Existing.png
new file mode 100644
index 00000000000..8deb5d32fd3
--- /dev/null
+++ b/modules/CIAO/docs/imgs/File-Gen-Existing.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/File-Gen-Future.png b/modules/CIAO/docs/imgs/File-Gen-Future.png
new file mode 100644
index 00000000000..1daef691bdf
--- /dev/null
+++ b/modules/CIAO/docs/imgs/File-Gen-Future.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/File_Generation_Flow.vsd b/modules/CIAO/docs/imgs/File_Generation_Flow.vsd
new file mode 100644
index 00000000000..ef6332d49ac
--- /dev/null
+++ b/modules/CIAO/docs/imgs/File_Generation_Flow.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd b/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd
new file mode 100644
index 00000000000..0986aa78d70
--- /dev/null
+++ b/modules/CIAO/docs/imgs/IDL-CIDL-classes.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/basic-container.png b/modules/CIAO/docs/imgs/basic-container.png
new file mode 100644
index 00000000000..9df767b45a2
--- /dev/null
+++ b/modules/CIAO/docs/imgs/basic-container.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/ciao-dynamic1.jpg b/modules/CIAO/docs/imgs/ciao-dynamic1.jpg
new file mode 100644
index 00000000000..a385ad30848
--- /dev/null
+++ b/modules/CIAO/docs/imgs/ciao-dynamic1.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/ciao-dynamic2.jpg b/modules/CIAO/docs/imgs/ciao-dynamic2.jpg
new file mode 100644
index 00000000000..e0a705b9d3a
--- /dev/null
+++ b/modules/CIAO/docs/imgs/ciao-dynamic2.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg b/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg
new file mode 100644
index 00000000000..b876b7a82cb
--- /dev/null
+++ b/modules/CIAO/docs/imgs/ciao-static-vs-dynamic.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/ciao-static1.jpg b/modules/CIAO/docs/imgs/ciao-static1.jpg
new file mode 100644
index 00000000000..313084ff34d
--- /dev/null
+++ b/modules/CIAO/docs/imgs/ciao-static1.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/ciao-static2.jpg b/modules/CIAO/docs/imgs/ciao-static2.jpg
new file mode 100644
index 00000000000..86ded87f448
--- /dev/null
+++ b/modules/CIAO/docs/imgs/ciao-static2.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/component-basic.png b/modules/CIAO/docs/imgs/component-basic.png
new file mode 100644
index 00000000000..520dc9c4cca
--- /dev/null
+++ b/modules/CIAO/docs/imgs/component-basic.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/dance_arch.jpg b/modules/CIAO/docs/imgs/dance_arch.jpg
new file mode 100644
index 00000000000..3c91b912213
--- /dev/null
+++ b/modules/CIAO/docs/imgs/dance_arch.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/dance_arch.vsd b/modules/CIAO/docs/imgs/dance_arch.vsd
new file mode 100644
index 00000000000..cfe75fca9c6
--- /dev/null
+++ b/modules/CIAO/docs/imgs/dance_arch.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/deployment.png b/modules/CIAO/docs/imgs/deployment.png
new file mode 100644
index 00000000000..4cd8c6be646
--- /dev/null
+++ b/modules/CIAO/docs/imgs/deployment.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/extended-container.png b/modules/CIAO/docs/imgs/extended-container.png
new file mode 100644
index 00000000000..39977e6eb83
--- /dev/null
+++ b/modules/CIAO/docs/imgs/extended-container.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/home-config.png b/modules/CIAO/docs/imgs/home-config.png
new file mode 100644
index 00000000000..aebf5e62751
--- /dev/null
+++ b/modules/CIAO/docs/imgs/home-config.png
Binary files differ
diff --git a/modules/CIAO/docs/imgs/static_dance_arch.jpg b/modules/CIAO/docs/imgs/static_dance_arch.jpg
new file mode 100644
index 00000000000..b12694ce348
--- /dev/null
+++ b/modules/CIAO/docs/imgs/static_dance_arch.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/static_dance_arch.vsd b/modules/CIAO/docs/imgs/static_dance_arch.vsd
new file mode 100644
index 00000000000..1ca1f50f69d
--- /dev/null
+++ b/modules/CIAO/docs/imgs/static_dance_arch.vsd
Binary files differ
diff --git a/modules/CIAO/docs/imgs/static_dance_impl.jpg b/modules/CIAO/docs/imgs/static_dance_impl.jpg
new file mode 100644
index 00000000000..cd2f9f0dc81
--- /dev/null
+++ b/modules/CIAO/docs/imgs/static_dance_impl.jpg
Binary files differ
diff --git a/modules/CIAO/docs/imgs/static_dance_impl.vsd b/modules/CIAO/docs/imgs/static_dance_impl.vsd
new file mode 100644
index 00000000000..6c21e6139d4
--- /dev/null
+++ b/modules/CIAO/docs/imgs/static_dance_impl.vsd
Binary files differ
diff --git a/modules/CIAO/docs/index.html b/modules/CIAO/docs/index.html
new file mode 100644
index 00000000000..438bdf3416e
--- /dev/null
+++ b/modules/CIAO/docs/index.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<!-- $Id$ -->
+ <title>CIAO - Component-Integrated ACE ORB</title>
+</head>
+<body>
+<h1>CIAO - Component-Integrated ACE ORB</h1>
+<h2>Introduction</h2>
+CIAO is TAO's implementation of <a
+ href="http://www.omg.org/cgi-bin/doc?formal/02-06-65"> CORBA Component
+Model (CCM)</a> specially optimized for distributed real-time embedded
+(DRE) systems.
+This page contains links to other documents and resources for building
+and using CIAO.<br>
+<br>
+<hr>
+<h2>The CIAO Project</h2>
+<ul>
+ <li>The main <a href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">
+CIAO project page</a>.</li>
+ <li><a href="../CIAO-INSTALL.html">Installation instructions</a> for
+CIAO<br>
+ </li>
+ <li>CIAO <a href="releasenotes/index.html">Status (aka. release
+notes.)</a></li>
+ <li>CIAO <a href="cidlc.html">CIDL Compiler Options</a><br>
+ <li>CIAO <a href="EnvVars.html">Environment Variables</a> <br>
+ </li>
+ <li>CIAO <a href="Trace.html">Logging Facility</a><br>
+ </li>
+ <li>CIAO <a href="../NEWS">NEWS</a></li>
+</ul>
+<hr>
+<ul>
+</ul>
+<ul>
+ <p><!--
+
+ <li>This <a href="new_components.html">page on implementing new
+
+ component</a> explains all the user-defined and tool-generated
+
+ files when implementing a component.<p>
+
+
+
+ <li>The <a href="ConfigValues.html">Configuration Name/Value
+
+ lists</a> lists all the configuration values that CIAO will pass
+
+ into vaious CCM mechanisms. The information shown in this page
+
+ is not visible to CIAO end-users, which include modeling tool
+
+ developers. The information that matters for most users is how
+
+ these configurations are represented in various XML
+
+ descriptors and CIDL specifications.<p>
+
+-->
+ </p>
+</ul>
+<h2>CCM-defined Interface Diagrams</h2>
+Here is a set of UML diagrams that we use to figure out the
+relationship among all the different interfaces in CCM. You can
+browse the related part from the following list:
+<ul>
+ <li><a href="imgs/component-basic.png"> Basic component interfaces </a></li>
+ <li><a href="imgs/home-config.png"> Home and configuration interfaces
+ </a></li>
+ <li><a href="imgs/basic-container.png"> Basic container interfaces </a></li>
+ <li><a href="imgs/extended-container.png"> Extended container
+interfaces </a></li>
+ <li><a href="imgs/DAnCE-Dynamic.png"> Deployment and configuration
+(DAnCE) interfaces </a></li>
+</ul>
+All these diagrams are generated from the <a href="imgs/CCM.vsd">CCM.vsd
+Visio file</a> (The same file in Visio V.5 format is <a
+ href="imgs/CCM-v5.vsd">here</a>.) and OpenOffice source file
+ <a href="imgs/DAnCE-Dynamic.sxd">DAnCE-Dynamic.sxd</a> <br>
+<br>
+<hr>
+<h2>CIAO's D&C Framework (<a href="http://www.dre.vanderbilt.edu/Doxygen/Current/html/tao/ciao/dance/index.html">DAnCE</a>) part-by-part</h2>
+DAnCE's implementation is based on the OMG's Deployment and Configuration
+Specification version [ptc/2003-07-08]. Here is a list of the major
+actors of CIAO runtime that a user should be aware of.
+<ul>
+ <li><strong>NodeManager:</strong>
+A daemon process responsible for managing NodeApplications that reside
+in the same physical node.</li>
+ <p> </p>
+ <li><strong>NodeApplicationManager:</strong>
+A infrastructure component responsible for deploying&nbsp;
+locality-constrained applications onto a node. A NodeApplicationManager
+is usually created by NodeManager.<br>
+ </li>
+ <p> </p>
+ <li><strong>NodeApplication:</strong>
+A component server instance spawned by NodeApplicationManager. <br>
+ </li>
+ <p> </p>
+ <li><strong>ExecutionManager:</strong>
+Infrastructure component responsible for executing an component-based
+DRE application based on the information from DeploymentPlan.</li>
+ <p> </p>
+ <li><strong>DomainApplicationManager</strong>:
+Domain-oriented auxiliary component created and used by
+ExecutionManager to deploy the component-based DRE application at the
+domain level. <br>
+ <br>
+ </li>
+ <li><strong>PlanLauncher</strong></strong>:
+Executor component responsible for parsing the XML-based
+deploymentplan and passing the plan to ExecutionManager for execution.<br>
+ <br>
+To understand the runtime inter-relationships of various CIAO actors,
+you may click <a href="imgs/DAnCE-Dynamic.png">here</a> to see a
+sequence diagram that gives you a clear representation of what's
+happening when you start a DAnCE-based DRE application. Special thanks
+to <a href="mailto:Friedhelm.wolf@gmx.de">Friedhelm Wolf</a> who
+initiated and contributed most part of this
+diagram.<br>
+ <br>
+ </li>
+</ul>
+<hr>
+<h2>CIAO CCM tutorials</h2>
+There are several tutorials to help you understand CIAO and CCM:
+<ul>
+ <li> <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/OMG-CCM-Tutorial.ppt">Tutorial
+on the CORBA Component Model (CCM)</a>. This tutorial presents an
+overview of the CORBA Component Model (CCM),
+describing its key features and illustrating how to write CCM
+applications in C++.
+ <p> </p>
+ </li>
+ <li><a href="../examples/Hello"><code>$(CIAO_ROOT)/DAnCE/examples/Hello.</code></a>
+This example illustrates how to build and deploy a CIAO based
+application <a href="../examples/Hello/step-by-step.html">step-by-step</a>.
+There is
+also a detailed documentation explaining this example avalable in both <a
+ href="http://www.dre.vanderbilt.edu/%7Edengg/CCM/CCM_Hello_example.pdf">PDF</a>
+and <a
+ href="http://www.dre.vanderbilt.edu/%7Edengg/CCM/CCM_Hello_example.ppt">
+PowerPoint</a> format.<br>
+ <br>
+ </li>
+ <li><a href="./tutorials/Quoter/Simple">$(CIAO_ROOT)/docs/tutorials/Quoter/Simple</a>.
+This example illustrates the implementation of the "famous" Quoter
+example in the CIAO world. Please refer to <a
+ href="tutorials/Quoter/Simple/README.html">README</a> for more
+information.&nbsp; </li> <P>
+
+<li><a
+href="./tutorials/CoSMIC/">$(CIAO_ROOT)/docs/tutorials/COSMIC/</a>.
+This is a step-by-step tutorial on how to use CoSMIC to
+generate deployment descriptors requied by the above <a
+href="./tutorials/Quoter/Simple">Quoter</a> example </li>
+
+</ul>
+<!--#include virtual="/~nanbor/signature.html" --><!-- <hr> --><!-- <\!-- hhmts start -\-> --><!-- Last modified: Mon Nov 04 07:55:22 Central Standard Time 2002 --><!-- <\!-- hhmts end -\-> -->
+<!-- <address>Nanbor Wang &lt;nanbor@cs.wustl.edu&gt;</address> --><!-- LocalWords: CCM UML vsd Visio
+
+ -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/new_components.html b/modules/CIAO/docs/new_components.html
new file mode 100644
index 00000000000..db10fca2103
--- /dev/null
+++ b/modules/CIAO/docs/new_components.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $Id$ -->
+<html> <head>
+<title>Procedures to prepare a new component implementation</title>
+</head>
+
+<body>
+<h1>Preparing a new component implementation</h1>
+
+I am documenting the steps required to prepare a component implementation.
+Personally, I prefer to set up a directory to contain only <b>one</b>
+component implementation. I believe the procedures outlined below
+will work if you have multiple component implementation in the same
+IDL files. The purpose of this document is to record the procedures
+and steps on how these files relate to each others and how they come
+about during the development process.<p>
+
+Assuming we need to create a new component called
+<code><b>Orc</b></code>. Below is the list of files you'll need to
+deal with. Our goal is to greatly reduce the number of files you need
+to deal with manually...
+
+<ol>
+ <li><font color="red"><code><b>Orc</b>.idl</code></font> - This is
+ the IDL file that contains the component and component home
+ definitions.<p>
+
+ As you will eventually create 3 DLLs (or shared objects), you
+ will also need 3 sets of different export macros files as
+ following.<p>
+
+ <li><code><b>Orc</b>_stub_export.h</code> - This file is generated
+ using the following command:<p>
+
+ <code>generate_export_file.pl <b>ORC</b>_STUB &gt; <b>Orc</b>_stub_export.h</code><p>
+
+ This file makes macros like <code><b>ORC</b>_STUB_Export</code>
+ and friends available. They are usually controlled by
+ <code><b>ORC</b>_STUB_BUILD_DLL</code><p>
+
+ <li><code><b>Orc</b>_svnt_export.h</code> - This file is generated
+ using the following command:<p>
+
+ <code>generate_export_file.pl <b>ORC</b>_SVNT &gt; <b>Orc</b>_svnt_export.h</code><p>
+
+ This file makes macros like <code><b>ORC</b>_SVNT_Export</code>
+ and friends available. They are usually controlled by
+ <code><b>ORC</b>_SVNT_BUILD_DLL</code><p>
+
+ <li><code><b>Orc</b>_exec_export.h</code> - This file is generated
+ using the following command:<p>
+
+ <code>generate_export_file.pl <b>ORC</b>_EXEC &gt; <b>Orc</b>_exec_export.h</code><p>
+
+ This file makes macros like <code><b>ORC</b>_EXEC_Export</code>
+ and friends available. They are usually controlled by
+ <code><b>ORC</b>_EXEC_BUILD_DLL</code><p>
+
+ <li><code><b>Orc</b>E.idl</code> - Component Executor equivalent
+ interface definitions. This file should be generated
+ automatically by the CIDL compiler as illustrated in this
+ <a href="com-impl.html">file</a> but we currently are still
+ working on the implementation of the CIDL compiler. Therefore,
+ you still need to create this file manually.<p>
+
+ <li><font color="red"><code><b>Orc</b>EI.idl</code></font> -
+ Optional Component Executor implementation interface
+ definitions. Often time, when you implement a non-trivial
+ monolithic component implementation, you are required to define
+ the monolithic local executor interface which often inherits
+ from the component monolithic executor interface and all the
+ provided interfaces. The actually executor implementation will
+ inherit from this user defined interface instead of the default
+ executor mapping defined in <code><b>Orc</b>E.idl</code>. You
+ will need to do the same when you wish to support non-vanilla
+ component interface, such as
+ <code>Components::SessionComponent</code>, and/or
+ <code>Components::SessionSynchronization</code>.<p>
+
+ Ideally, it would be perfect if we can auto-generate this
+ optional IDL file using CIDL compiler. However, I'm not sure
+ the plan CIDL language contains enough information that's
+ required to generate this file.<p>
+
+ <li><font color="red"><code><b>Orc</b>_exec.*</code></font> - These
+ are files containing the actually component implementation that
+ you have to write manually. It, however, depends on the
+ equivalent executor IDL definition (that will be) generated by
+ the CIDL files.<p>
+
+ <li><code><b>Orb</b>_svnt.*</code> - These are files containing the
+ servant glue code that bridge a container to the component
+ executor that you implement. Like the component executor
+ mapping IDL file, these files should be generated by the CIDL
+ compiler but are currently generated manually.<p>
+
+ <li><code><b>Orc</b>.csd</code> - Component Softpkg Descriptor. We
+ need some kind of tool to generate this file automatically. It
+ is currently being generated manually, however.<p>
+
+
+ <li><code><b>Orc</b>.ssd</code> - Servant Softpkg Descriptor. This
+ is a CIAO extension descriptor file which uses the same softpkg
+ DTD as described in CCM spec. CIAO requires this file because
+ CIAO separates the executors into a completely separate DLL.
+ Like <code><b>Orc</b>.csd</code>, this file should be generated
+ automatically through some tool, but it is currently manually
+ crafted.<p>
+
+ <li><code><b>Orc</b>.ccd</code> - CORBA Component Descriptor. This
+ file is currently being generated manually thou a template
+ should really be generated by CIAO's CIDL compiler.<p>
+
+ <li><font color="red"><code><b>Orc</b>.mpc</code></font> - Makefile
+ Project Creator definition file. There is a perl script to
+ generate a minimal MPC definition at
+ <code>$(CIAO_ROOT)/bin/generate_component_mpc.pl</code> so
+ people can use it to implement the simplest component
+ implementation outlined in this file.<p>
+
+</ol>
+
+
+<hr>
+<address></address>
+<!-- hhmts start -->
+Last modified: Fri Mar 21 16:06:48 Central Standard Time 2003
+<!-- hhmts end -->
+</body> </html>
diff --git a/modules/CIAO/docs/releasenotes/dance.html b/modules/CIAO/docs/releasenotes/dance.html
new file mode 100644
index 00000000000..6980860b3c8
--- /dev/null
+++ b/modules/CIAO/docs/releasenotes/dance.html
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<!-- $Id$ -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Deployment And Configuration Engine (DAnCE) Release Notes</title>
+ </head>
+
+ <body>
+ <h1>Deployment And Configuration Engine (DAnCE) Release Notes</h1>
+
+ <p><b>D</b>eployment <b>An</b>d <b>C</b>onfiguration <b>E</b>ngine
+ <b>(DAnCE)</b> is an implementation of the run-time infrastructure as
+ defined by the final adopted <a
+ href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-08">OMG Deployment &amp;
+ Configuration (D&amp;C) specification (ptc/2003-07-08)</a>, which deals with the
+ configuration and deployment of component-based applications. Currently
+ DAnCE only supports the deployment &amp; configuration of CORBA
+ Component Model (CCM)-based applications, though we are interested in
+ generalizing it for other component models in future work. DAnCE uses
+ XML descriptors to drive the deployment it performs. One way to
+ generate these descriptors is using the <b>Co</b>mponent
+ <b>S</b>ynthesis using <b>M</b>odel-<b>I</b>ntegrated <b>C</b>omputing
+ (<a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a>) tool-suite.
+ DAnCE currently uses <b>C</b>omponent <b>I</b>ntegrated <b>A</b>CE
+ <b>O</b>RB (<a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a>) as
+ the underlying CCM implementation in the current release, though again
+ we are interested in generalizing it for other CCM implementations in
+ future work.
+ </p>
+
+ <h3>D&amp;C XML Schema Handling</h3>
+
+ <p> The XML handlers shipped with DAnCE are capable of handling almost
+ all elements that are defined in the D&amp;C schema. In this context,
+ handling refers to reading the XML tags and converting them to the
+ equivalent in-memory IDL-based data structures defined by the
+ specifications. DAnCE supports the following types of descriptors
+ specified in the D&amp;C specification:</p>
+ <ul>
+ <li>
+ <p>
+ <b>CORBA Component Descriptor(.ccd)</b> &ndash;
+ Contains information about component interfaces including
+ component ports.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Component Implementation Descriptor(.cid)</b>
+ &ndash; Contains information about component implementations
+ which might be either monolithic or assembly based. In the case
+ of assembly based implementations, this descriptor also captures
+ the dependencies and the connections among components
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Implementation Artifact Descriptor(.iad)</b>
+ &ndash; Contains information about implementation artifacts
+ in-cluding dependencies between such artifacts
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Component Package Descriptor(.cpd)</b> &ndash;
+ Contains information about grouping of multiple imple-mentations
+ of the same component interface into component packages
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Package Configuration Descriptor(.pcd)</b>
+ &ndash; Contains information about specific configurations of
+ such component packages
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Component Domain Descriptor(.cdd)</b> &ndash;
+ Contains information about the target environment in which the
+ component-based application will be deployed
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>TopLevel Package Descriptor(.tpd)</b> &ndash; Contains
+ information identifying the top-level element in a component
+ package descriptor which might include information about multiple
+ elements
+ </p>
+ </li>
+
+ <li>
+ <p>
+ <b>Component Deployment Plan(.cdp)</b> &ndash; Contains
+ information that actually drives the deployment including
+ information about individual components that represent the
+ leaf-nodes in case of a hierarchical assembly, connections
+ between components, and assignment of components to nodes etc.
+ </p>
+ </li>
+ </ul>
+ <p> For all the above elements, DAnCE supports proxying of the elements
+ as defined by XMI, i.e, DAnCE supports both parsing of the elements
+ inline and reference through <b><code>href</code></b> attribute. Some
+ D&amp;C schema elements are however not handled, including:</p>
+ <ul>
+ <li>
+ <p>
+ <b>Deployment:Any</b> &ndash; This is a complex
+ element that is composed of many sub-elements. Currently, DAnCE
+ only parses a subset of the sub-elements of
+ <b><code>Deployment:Any</code></b>. Specifically, DAnCE supports all the
+ basic data types defined as part of <b><code>Deployment:Any</code></b>,
+ and doesn't understand any complex types.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>xmi:Extension</b> &ndash; This element allows the
+ augmention of the standard D&amp;C schema with user-defined
+ elements. Currently DAnCE doesn't support user-defined extensions
+ to the schema.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Deployment:Requirement</b> &ndash; This element is
+ allows the description of requirements of component-based
+ applications. Since handling this description requires interaction
+ with the <b><code>TargetManager</code></b> interface (which is not yet
+ supported), support for <b><code>Deployment:Requirement</code></b> is not
+ present.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Deployment:ComponentPropertyDescriptioncode></b> &ndash;
+ This element is used to specify default values for attributes of
+ component. DAnCE doesn't support setting the values for attributes
+ of components using this tag.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Deployment:ComponentExternalPortEndpoint,
+ Deployment:ExternalReferenceEndpoint</b> &ndash; These
+ elements are used to specify connections between ports of
+ components in one assembly with ports of components in a different
+ assembly, or connections between component ports and external
+ connection endpoints. These features are needed to support
+ assemblies of components. DAnCE doesn't support yet hierarchical
+ assemblies, i.e., creation of assemblies which can themselves
+ contain sub-assemblies.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>Deployment:PlanPropertyMapping</b> &ndash; This
+ element is used to delegate property mapping between a component's
+ external properties to properties of subcomponents that actually
+ implement the behavior of the larger component. Since DAnCE doesn't
+ support hierarchical assemblies, this tag is not yet supported.
+ </p>
+ </li>
+ </ul>
+ <p> We plan to support these features in future versions of DAnCE.
+ </p>
+ <hr />
+ <h3> D&amp;C Management Interfaces</h3>
+
+ <p> The D&amp;C specification defines a set of standard CORBA
+ interfaces that are used to perform the deployment of component-based
+ applications. These interfaces depend on the in-memory IDL data
+ structures that are built by DAnCE's XML handlers. Below we outline the
+ list of interfaces defined by the specification and the level of
+ support for each interface in DAnCE:</p>
+ <ul>
+ <li>
+ <p>
+ <b>RepositoryManager</b> &ndash; Only the
+ <b><code>installPackage()</code></b> and <b><code>findPackageByName()</code></b>
+ operations of this interface are implemented.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>TargetManager</b> &ndash; This interface has not
+ been implemented at all. Implementation of this interface is
+ planned for the future.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>ExecutionManager</b> &ndash; All operations defined
+ in this interface are implemented.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>DomainApplicationManager, DomainApplication</b>
+ &ndash; All operations except <b><code>getApplications()</code></b>
+ operation of DomainApplicationManager are implemented.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>NodeManager </b>&ndash; All operations except <strong><code>joinDomain()</code></strong> and <strong><code>leaveDomain()</code></strong> operations of NodeManager are implemented. </p>
+ </li>
+ <li>
+ <p><b> NodeApplicationManager, NodeApplication</b> &ndash; All operations defined in these interfaces are
+ implemented. </p>
+ </li>
+ </ul>
+ <p>
+ We plan to finish implementing the unsupported features in future versions of DAnCE.
+ </p>
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!"
+ height="31" width="88" />
+ </a>
+ </p>
+ <address>
+ Last modified $Date$ by $Author$
+ </address>
+ </body>
+</html>
diff --git a/modules/CIAO/docs/releasenotes/index.html b/modules/CIAO/docs/releasenotes/index.html
new file mode 100644
index 00000000000..324f1d83c77
--- /dev/null
+++ b/modules/CIAO/docs/releasenotes/index.html
@@ -0,0 +1,170 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>CIAO Release Information and TODO List</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF">
+<!-- $Id$ -->
+<center>
+<hr></center>
+
+<center>
+<h3>
+Release Information for the Component Integrated ACE ORB (CIAO)</h3></center>
+This document contains information on the following topics related to the
+<a href="../../VERSION">current
+release</a> of <a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a>:
+
+<table BORDER=0 CELLSPACING=0 CELLPADDING=10 >
+<tr>
+<td VALIGN=TOP>
+<b></b>
+<br>
+<ul>
+<li>
+<a href="../index.html">Introduction</a></li>
+<li>
+<a href="#status">Current Status of CIAO</a></li>
+<li>
+<a href="dance.html">Status of DAnCE</a></li>
+<li>
+<a href="../TODO.html">TODO list</a></li>
+</ul>
+</td>
+</table>
+
+
+<hr>
+<h2>Current Status</h2><a name="status">
+<ol>
+<li>The first cut of the new <a
+ href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-02"> DnC </a>
+ specification implementation, which we call DAnCE is available in
+ this distribution. DAnCE is housed under <CODE> $CIAO_ROOT
+ </CODE>. We plan to enhance DAnCE in the next few months. We believe
+ DAnCE will replace existing tool sets in <CODE>
+ $CIAO_ROOT/tools</CODE>. There are a few features in
+ <CODE>$CIAO_ROOT/tools</CODE> that are missing in the DAnCE
+ implementation. Please see <a href="../TODO.html"> TODO </a> file
+ for more details. We plan to implement them soon and use DAnCE
+ continuously.
+
+ <li> The first cut of DAnCE includes two parts:
+ <ul>
+ <li>
+ A modeling tool chain , <a href="http://www.dre.vanderbilt.edu/CoSMIC/">
+ CoSMIC</a>, which is capable of describing the Assembly/Component
+ using <a
+ href="http://www.isis.vanderbilt.edu/Projects/gme/default.html">
+ GME</a> as the development bed. The artifacts generated from the
+ CoSMIC are a set of XML descriptors.
+
+ <!-- Tao, I realy don't understand what this means - Bala -->
+ <li>This run-time infrastructure that performs the actual deployment
+ and configuration, with a superset of the capabilities described in
+ OMG DnC specification with CIAO extension. </a>.<p><p>
+
+ </ul>
+ <!-- Tao, can you please see whether this is needed -->
+ In the new DnC run-time framework we have migrated all the
+ functionalities present in the old CIAO runtime except the
+ Real-Time configuration and Static Configuration, which are
+ developed by Washington University in St. Louis. Currently,
+ the two CIAO runtime co-exist in our source and the component
+ implementation could be used with both framework without much
+ change. (For the change that one has to go through please
+ read <a href="./switch.html">this</a>.)<p>
+
+
+
+ <li> Two operations <CODE> ciao_preactivate ()</CODE> and
+ <CODE>ciao_postactivate ()</CODE> have been added to the
+ <CODE>SessionComponent</CODE> interface. This implies that component
+ developers have to implement those operations within the
+ executor. We plan to get around this, i.e., users having to
+ implement these two operations, in the next month or so. <p>
+
+ <li>
+
+ Here is a set of updates in the CIDL Compiler.<p>
+ <ul>
+ <li>Fixed bugs in generation of inherited: home operations,
+ attribute operations, port operations, home factory operations,
+ supported operations.<p>
+
+ <li>Added support for multiplex uses ports. This implies that users
+ could use "uses multiple" in their component definitions. <p>
+
+ <li>Added automatic registration of value factories for event
+ consumers. This has been long outstanding. This change alleviates
+ component developers need to register the valuetype factory of their
+ eventtypes with the ORB. <p>
+
+ <li>Added support for emits keyword and we now generate navigation
+ code for this.<p>
+
+ <li>Fixed bug with multiple facets in a build that provide the same
+ interface.<p>
+
+ <li>Added option <code>--gen-exec-impl</code> to generate executor
+ impl classes, with no-op versions of each IDL operation.<p>
+
+ <li>Implemented get_all_facets() and get_all_consumers() navigation
+ methods.<p>
+
+ <li>Added support for the IDL keywords <code>setraises</code> and
+ <code>getraises</code>, associated with attributes in IDL3.<p>
+
+ <li>Added support for both subscription and event push of event types
+ that are a base class of the IDL-specified port type. A check is
+ performed during the subscribe call to make sure the eventtype is
+ actually an ancestor of the declared port type.<p>
+
+ <li>Problems with generated code when the composition declaration is
+ nested inside one or more IDL modules has prompted a change. The
+ 'CIAO_GLUE_' prefix has been eliminated. The composition name is now
+ mapped to a C++ namespace, prefixed with 'CIDL_'. This new namespace
+ (as well as namespaces generated from IDL modules enclosing the
+ composition name, if any) encloses
+ <ul>
+ <li>the component servant class</li>
+ <li>the home servant class</li>
+ <li>all facet servant classes, if any</li>
+ <li>the *_Exec interface in the *E.idl file</li>
+ <li>all executor impl classes, if automatically generated</li>
+ </ul>
+ <p>
+ </ul>
+ <p>
+
+
+ <li> CIAO doesn't yet support features that help integrating CORBA
+ components with Enterprise Java Beans (EJB).<p>
+
+ <li> Test to demonstrate composition of applications with real-time
+ behavior using CIAO's real-time extension was added. Please see
+ ACE_wrappers/TAO/CIAO/tests/RTCCM/Priority_Test.<p>
+
+ <li> The CIAO static configurator tool has been enhanced to support
+ processing of RTCORBA policy related information. Please see
+ ACE_wrappers/TAO/CIAO/docs/static_ciao_index.html.<p>
+
+ <li> To further interoperability with non-component-aware clients, there
+ are files in the $CIAO_ROOT/tools/IDL3_to_IDL2 directory that can be
+ compiled into an executable called tao_idl3_to_idl2. This executable
+ takes an IDL file (on the command line) containing IDL3 declarations
+ and outputs an IDL file with the IDL3 declarations converted to
+ equivalent IDL2. IDL2 declarations in the input file are unchanged.
+ See the README file in that directory for more information.<p>
+
+</ol>
+
+
+
+<b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@cse.wustl.edu</ADDRESS>
+</body> </html>
+
+<!-- LocalWords: TODOs CCM IDL CCIDL CIDL backend idl
+ -->
diff --git a/modules/CIAO/docs/releasenotes/switch.html b/modules/CIAO/docs/releasenotes/switch.html
new file mode 100644
index 00000000000..1120239b6ec
--- /dev/null
+++ b/modules/CIAO/docs/releasenotes/switch.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $Id$ -->
+<html> <head>
+<title>Migrating the component implementation</title>
+</head>
+
+<body>
+<h3>When switching from the old CIAO runtime to the new one</h1>
+
+<ul>
+ There are only one thing needs to be done to migrate the component
+ implementation from the old runtime to the new runtime.
+ <br><br>
+ Find all the component MPC files in your component implementation
+ source directories and make the following changes.
+
+ for every project in your MPC files which inherites from any of
+ the following MPC template (base project): <code> ciao_client, ciao_component,
+ ciao_servant, ciao_server,</code> replace them with <code> ciao_client_dnc,
+ ciao_component_dnc, ciao_servant_dnc, ciao_server_dnc</code>. Then
+ generate your makefile/solution/project files using either
+ <code>mwc.pl</code> or <code>mpc.pl</code> and build (rebuild) your
+ binaries.<br>
+
+ A couple examples of the component implementation are at:
+ <code>$CIAO_ROOT/DAnCE/tests</code>.
+</ul>
+
+<h3>When switching from the new CIAO runtime to the old one</h3>
+ <ul>
+ Reverse the above changes.
+ </ul>
+
+ <b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@cse.wustl.edu</ADDRESS>
+</body> </html>
diff --git a/modules/CIAO/docs/schema/Basic_Deployment_Data.xsd b/modules/CIAO/docs/schema/Basic_Deployment_Data.xsd
new file mode 100644
index 00000000000..1d386841ea5
--- /dev/null
+++ b/modules/CIAO/docs/schema/Basic_Deployment_Data.xsd
@@ -0,0 +1,349 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="DataType">
+ <xsd:sequence>
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+ <xsd:element name="enum" type="Deployment:EnumType" minOccurs="0"/>
+<!--
+@@ not supported now..
+
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+-->
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="DataValue">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <!-- xsd:element name="opaque" type="xsd:base64Binary"/ -->
+ <!-- <xsd:element name="objref" type="xsd:string"/> -->
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <!-- <xsd:element name="fixed" type="xsd:string"/> -->
+ <!-- <xsd:element name="any" type="Deployment:Any"/> -->
+ <!-- <xsd:element name="typecode" type="Deployment:DataType"/> -->
+ <!-- <xsd:element name="element" type="Deployment:DataValue"/> -->
+ <!-- <xsd:element name="discriminator" type="Deployment:DataValue"/> -->
+ <!-- <xsd:element name="value" type="Deployment:DataValue"/> -->
+ <!-- <xsd:element name="boxedValue" type="Deployment:DataValue"/> -->
+ <!-- <xsd:element name="member" type="Deployment:NamedValue"/> -->
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="EnumType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Any">
+ <xsd:sequence>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Property">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- End of base definitions. -->
+
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="dynamic" type="xsd:boolean" />
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Resource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="property" type="Deployment:SatisfierProperty" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Requirement">
+ <xsd:sequence>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- Deployment -->
+
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="artifact" type="xsd:IDREF" maxOccurs="unbounded"/> <!-- ArtifactDeploymentDescription -->
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="xsd:IDREF"/> <!-- MonolithicDeploymentDescription -->
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@MAJO: Hack - specific/supported types should be required. -->
+ <xsd:element name="specificType" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="supportedType" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="provider" type="xsd:boolean"/>
+ <xsd:element name="exclusiveProvider" type="xsd:boolean"/>
+ <xsd:element name="exclusiveUser" type="xsd:boolean"/>
+ <xsd:element name="optional" type="xsd:boolean"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- InstanceDeploymentDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:sequence>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- Implementation -->
+
+ <xsd:complexType name="Capability">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="property" type="Deployment:SatisfierProperty" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind" minOccurs="0"/>
+ <xsd:element name="resourcePort" type="xsd:string" minOccurs="0" />
+ <xsd:element name="componentPort" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:sequence>
+ <xsd:element name="requiredUUID" type="xsd:string" minOccurs="0" />
+ <xsd:element name="requiredName" type="xsd:string" minOccurs="0" />
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- SubcomponentInstantiationDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/CIAOEvents.xsd b/modules/CIAO/docs/schema/CIAOEvents.xsd
new file mode 100644
index 00000000000..645d7a6e530
--- /dev/null
+++ b/modules/CIAO/docs/schema/CIAOEvents.xsd
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema targetNamespace="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ attributeFormDefault="unqualified">
+
+ <xsd:element name="CIAOEvents" type="CIAO:CIAOEventsDef">
+ <xsd:annotation>
+ <xsd:documentation>
+ Root element for defining all the pub/sub services configuration
+ used by a DeploymentPlan.
+ A CIAO:Events document should reside in a separate file.
+ A DeploymentPlan can refer to one or more CIAO:Events file names
+ using the "infoProperty" tag.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+<!-- =============================================================== -->
+<!-- CIAO Event Service Deployment Description -->
+<!-- =============================================================== -->
+
+ <xsd:simpleType name="EventServiceType">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="EC"/>
+ <xsd:enumeration value="RTEC"/>
+ <xsd:enumeration value="NOTIFY"/>
+ <xsd:enumeration value="RTNOTIFY"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="CIAOEventsDef">
+ <xsd:sequence>
+ <xsd:element name="eventServiceConfiguration" type="CIAO:EventServiceDescription" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="EventServiceDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="type" type="CIAO:EventServiceType"/>
+ <xsd:element name="svc_cfg_file" type="xsd:string"/>
+ <xsd:element name="filter" type="CIAO:Filter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="addr_serv" type="CIAO:AddressServerDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="udp_sender" type="CIAO:UDPSenderDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="udp_receiver" type="CIAO:UDPReceiverDescription" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- =============================================================== -->
+<!-- CIAO Event Filter Description -->
+<!-- =============================================================== -->
+
+ <xsd:simpleType name="FilterType">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="CONJUNCTION"/>
+ <xsd:enumeration value="DISJUNCTION"/>
+ <xsd:enumeration value="LOGICAL_AND"/>
+ <xsd:enumeration value="NEGATE"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="Filter">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="CIAO:FilterType"/>
+ <xsd:element name="source" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- =============================================================== -->
+<!-- CIAO Event Service Federation Description -->
+<!-- =============================================================== -->
+
+ <xsd:complexType name="AddressServerDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:unsignedShort"/>
+ <xsd:element name="address" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="UDPSenderDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="addr_serv_id" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="UDPReceiverDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="addr_serv_id" type="xsd:string" minOccurs="0" />
+ <xsd:element name="is_multicast" type="xsd:boolean"/>
+ <xsd:element name="listen_port" type="xsd:unsignedShort"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/CIAOServerResources.xsd b/modules/CIAO/docs/schema/CIAOServerResources.xsd
new file mode 100644
index 00000000000..d9fb63da88f
--- /dev/null
+++ b/modules/CIAO/docs/schema/CIAOServerResources.xsd
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema targetNamespace="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ attributeFormDefault="unqualified">
+
+ <xsd:element name="ServerResources" type="CIAO:ServerResourcesDef">
+ <xsd:annotation>
+ <xsd:documentation>
+ Root element for defining all the resources used by a DeploymentPlan.
+ A CIAO:ServerResources document should reside in a separate file.
+ A DeploymentPlan can refer to one or more CIAO:ServerResources file names
+ using the "infoProperty" tag.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="ServerResourcesDef">
+ <xsd:sequence>
+ <xsd:element name="cmdline" type="CIAO:ServerCmdlineOptions" minOccurs="0"/>
+ <xsd:element name="svcconf" type="CIAO:ACESvcConf" minOccurs="0"/>
+ <xsd:element name="orbConfigs" type="CIAO:ORBConfigs" />
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- =============================================================== -->
+
+ <xsd:complexType name="ServerCmdlineOptions">
+ <xsd:annotation>
+ <xsd:documentation>
+ Just a list of argv's that should be appended to the command
+ line used to start up the NodeApplication.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="arg" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- ================================================================ -->
+
+ <xsd:complexType name="ACESvcConf">
+ <xsd:annotation>
+ <xsd:documentation>
+ Contains either a pointer to a svc.conf file, or the actual
+ content of the svc.conf file required to configure the
+ NodeApplication.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice>
+ <!-- Specify the URI of a svc.conf file. -->
+ <xsd:element name="uri" type="xsd:string"/>
+
+ <!-- If we agree to use only XML based svc.conf "file", we will
+ support inlined svcconf entries here. If that will be the
+ case, we still need to convert ACE_Svc_Conf DTD to schema. -->
+ <!--
+ <xsd:element name="inline" type="ACE_Svc_Conf"/>
+ -->
+ </xsd:choice>
+ </xsd:complexType>
+
+<!-- ========================================================================= -->
+
+ <xsd:complexType name="ORBConfigs">
+ <xsd:annotation>
+ <xsd:documentation>
+ Contains the shared resources the component ORB must support
+ and all available policySets that components installed under
+ the ORB can request.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="resources" type="CIAO:ORBResources"
+ minOccurs="0"/>
+ <xsd:element name="policySet" type="CIAO:PolicySet"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- ========================================================================= -->
+
+ <xsd:complexType name="ORBResources">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="threadpool" type="CIAO:ThreadpoolDef"/>
+ <xsd:element name="threadpoolWithLanes" type="CIAO:ThreadpoolWithLanesDef"/>
+ <xsd:element name="connectionBands" type="CIAO:ConnectionBandsDef"/>
+ <!-- Other ORB-wide resources that must be allocated by the ORB -->
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:simpleType name="Priority">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="32767"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="ThreadpoolDef">
+ <xsd:sequence>
+ <xsd:element name="stacksize" type="xsd:unsignedLong"/>
+ <xsd:element name="static_threads" type="xsd:unsignedLong"/>
+ <xsd:element name="dynamic_threads" type="xsd:unsignedLong"/>
+ <xsd:element name="default_priority" type="CIAO:Priority"/>
+ <xsd:element name="allow_request_buffering" type="xsd:boolean"/>
+ <xsd:element name="max_buffered_requests" type="xsd:unsignedLong"/>
+ <xsd:element name="max_request_buffered_size" type="xsd:unsignedLong"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="ThreadpoolWithLanesDef">
+ <xsd:sequence>
+ <xsd:element name="threadpoolLane" type="CIAO:ThreadpoolLaneDef"
+ maxOccurs="unbounded"/>
+ <xsd:element name="stacksize" type="xsd:unsignedLong" />
+ <xsd:element name="allow_borrowing" type="xsd:boolean"/>
+ <xsd:element name="allow_request_buffering" type="xsd:boolean"/>
+ <xsd:element name="max_buffered_requests" type="xsd:unsignedLong"/>
+ <xsd:element name="max_request_buffered_size" type="xsd:unsignedLong"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/> <!-- Threadpool ID should be
+ referenced by individual policies
+ in the policysets below -->
+ </xsd:complexType>
+
+ <xsd:complexType name="ThreadpoolLaneDef">
+ <xsd:sequence>
+ <xsd:element name="static_threads" type="xsd:unsignedLong"/>
+ <xsd:element name="dynamic_threads" type="xsd:unsignedLong"/>
+ <xsd:element name="priority" type="CIAO:Priority"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ConnectionBandsDef">
+ <xsd:annotation>
+ <xsd:documentation>
+ This is only used to provide a ORB-wide view of all connection bands.
+ The ORB doesn't really need to "create" this resource.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="band" type="CIAO:PriorityBandDef" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="PriorityBandDef">
+ <xsd:sequence>
+ <xsd:element name="low" type="xsd:int"/>
+ <xsd:element name="high" type="xsd:int"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+<!-- ========================================================================= -->
+
+ <xsd:complexType name="PolicySet">
+ <xsd:annotation>
+ <xsd:documentation>
+ Contains a set of CORBA Policies that can be applied to a
+ component instance at once. We should eventually expand this
+ list to incorporate all the policies defined in
+ ciaopolicy.xs. I'm focusing on the RT aspects for now.
+
+ The ID of a policy set should be referenced by the component
+ instances in a DeploymentPlan document under the
+ "deployedResource" tag.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="priorityModel" type="CIAO:PriorityModelPolicyDef"/>
+ <xsd:element name="threadpool" type="xsd:IDREF"/>
+ <xsd:element name="priorityBandedConnection" type="xsd:IDREF"/>
+ </xsd:choice>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="PriorityModel">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="SERVER_DECLARED"/>
+ <xsd:enumeration value="CLIENT_PROPAGATED"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="PriorityModelPolicyDef">
+ <xsd:sequence>
+ <xsd:element name="priority_model" type="CIAO:PriorityModel"/>
+ </xsd:sequence>
+ <xsd:attribute name="server_priority" type="CIAO:Priority"/>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/Deployment.xsd b/modules/CIAO/docs/schema/Deployment.xsd
new file mode 100644
index 00000000000..fd4ffe5bc7d
--- /dev/null
+++ b/modules/CIAO/docs/schema/Deployment.xsd
@@ -0,0 +1,29 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="Basic_Deployment_Data.xsd"/>
+ <xsd:include schemaLocation="cpd.xsd"/>
+ <xsd:include schemaLocation="ccd.xsd"/>
+ <xsd:include schemaLocation="cdd.xsd"/>
+ <xsd:include schemaLocation="cdp.xsd"/>
+ <xsd:include schemaLocation="cid.xsd"/>
+ <xsd:include schemaLocation="iad.xsd"/>
+ <xsd:include schemaLocation="pcd.xsd"/>
+ <xsd:include schemaLocation="toplevel.xsd"/>
+
+
+<!-- Top-level elements. -->
+
+ <xsd:element name="domain" type="Deployment:Domain"/>
+ <xsd:element name="deploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:element name="implementationArtifactDescription" type="Deployment:ImplementationArtifactDescription" />
+ <xsd:element name="componentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="componentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element name="componentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="packageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="topLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/Modified_Deployment.xsd b/modules/CIAO/docs/schema/Modified_Deployment.xsd
new file mode 100644
index 00000000000..65f5eb81d1e
--- /dev/null
+++ b/modules/CIAO/docs/schema/Modified_Deployment.xsd
@@ -0,0 +1,826 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="DataType">
+ <xsd:choice>
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+<!--
+@@ not used, what for?
+
+ <xsd:element name="enum" type="Deployment:EnumType"/>
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DataValue">
+ <xsd:choice>
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <!-- xsd:element name="opaque" type="xsd:base64Binary"/ -->
+ <xsd:element name="objref" type="xsd:string"/>
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <xsd:element name="fixed" type="xsd:string"/>
+
+<!--
+@@ recursive
+ <xsd:element name="any" type="Deployment:Any"/>
+-->
+
+ <xsd:element name="typecode" type="Deployment:DataType"/>
+
+<!--
+@@ recursive
+ <xsd:element name="element" type="Deployment:DataValue"/>
+ <xsd:element name="discriminator" type="Deployment:DataValue"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element name="boxedValue" type="Deployment:DataValue"/>
+ <xsd:element name="member" type="Deployment:NamedValue"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Any">
+ <xsd:sequence>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Property">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- End of base definitions. -->
+
+ <xsd:complexType name="Node">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="connection" type="Deployment:Interconnect"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+-->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Resource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SharedResource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Domain">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource" minOccurs="0"/>
+ <xsd:element name="node" type="Deployment:Node" maxOccurs="unbounded"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="interconnect" type="Deployment:Interconnect"/>
+ <xsd:element name="bridge" type="Deployment:Bridge"/>
+-->
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Requirement">
+ <xsd:sequence>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Deployment -->
+
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="artifact" type="xsd:IDREF" maxOccurs="unbounded"/> <!-- ArtifactDeploymentDescription -->
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="xsd:IDREF"/> <!-- MonolithicDeploymentDescription -->
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="exclusiveProvider" type="xsd:string"/>
+ <xsd:element name="exclusiveUser" type="xsd:string"/>
+ <xsd:element name="optional" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="unbounded"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="idlFile" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added a href attribute
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- InstanceDeploymentDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:sequence>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription" maxOccurs="unbounded" />
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- potentially recursive, not used
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ -->
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+
+
+<!-- Implementation -->
+
+
+ <xsd:complexType name="Capability">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive NIA->IAD->NIA -->
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="1"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+
+ <!-- @@ There probably should be only one location? -->
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added a href attribute
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="resourcePort" type="xsd:string"/>
+ <xsd:element name="componentPort" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:sequence>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact" maxOccurs="unbounded"/>
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive CPD->PCI->CID->CAD->SID->CPD -->
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="1"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added href
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:sequence>
+ <xsd:element name="requiredUUID" type="xsd:string"/>
+ <xsd:element name="requiredName" type="xsd:string"/>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="package" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- SubcomponentInstantiationDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:sequence>
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:sequence>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription" maxOccurs="unbounded"/>
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentImplementationDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="unbounded"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ </xsd:choice>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="capability" type="Deployment:Capability" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added href
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+<!-- Package -->
+
+
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration"/>
+-->
+
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:sequence>
+ <xsd:element name="package" type="Deployment:PackageConfiguration" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Top-level elements. -->
+
+
+ <xsd:element name="domain" type="Deployment:Domain"/>
+ <xsd:element name="deploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:element name="implementationArtifactDescription" type="Deployment:ImplementationArtifactDescription" />
+ <xsd:element name="componentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="componentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element name="componentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="packageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="topLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+
+
+
+<!-- VAULT
+
+Place for strange things. Nobody knows what they are for...
+
+-->
+
+<!--
+
+ <xsd:complexType name="EnumType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ObjrefType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Bridge">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connect" type="Deployment:Interconnect"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Interconnect">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Bridge"/>
+ <xsd:element name="connect" type="Deployment:Node"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+<!--
+
+ This type is not referenced anywhere.
+
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/README.html b/modules/CIAO/docs/schema/README.html
new file mode 100644
index 00000000000..d810c8a6065
--- /dev/null
+++ b/modules/CIAO/docs/schema/README.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $Id$ -->
+<html> <head>
+<title>Contents of $CIAO_ROOT/docs/schema</title>
+</head>
+
+<body>
+<h1>Contents of $CIAO_ROOT/docs/schema</h1>
+The schema in this directory are all based on the new Deployment and
+Configuration spec. As part of our work on DAnCE we have tried to
+subset and normalize the schema so that our developers, and tools
+would be able to parse and use the information effectively.
+
+The following table illustrates the meaning and use of the various
+schemata in this directory:
+<table width="100%" border=1>
+ <tr valign=top>
+ <td><b>Spec_Defined_Deployment.xsd</b></td>
+ <td>This is the schema file from the spec which is unaltered. This
+ is just for reference. CIAO and DAnCE will not be using this file
+ directly.
+ </td>
+ </tr>
+ <tr valign=top>
+ <td><b>Spec_Defined_XMI.xsd</b></td>
+ <td>The OMG spec defined schema file uses definitions from another
+ specification called the XMI spec which is part of the OMG
+ specification suite. This schema file is again for reference
+ without any edits.
+ </td>
+ </tr>
+ <tr valign=top>
+ <td><b>ccd.xsd, cdd.xsd, cdp.xsd, cid.xsd, cpd.xsd, iad.xsd,
+ pcd.xsd and toplevel.xcd</b></td>
+ <td> Descriptors that will be used by DAnCE. Section 5.5.3 of the
+ Deployment and Configuration spec talks about the various
+ descriptors that are part of the package. The schema files are
+ broken down in accordance with the suggested descriptor format in
+ the section mentioned above.
+ </td>
+ </tr>
+ <tr valign=top">
+ <td><b>Deployment.xsd</b></td>
+ <td> The schema file that will be used by the applications in
+ their descriptors. Applications need not use Deployment.xsd, but
+ using this is encouraged for portability of their intance
+ documents.</td>
+ </tr>
+ <tr valign=top">
+ <td><b>Modified_Deployment.xsd</b></td>
+ <td> This schema is modified from the original spec defined
+ schema. It is a bit simplified with different sections that makes
+ things easier for the developer to read and digest the
+ information. Not used within DAnCE.</td>
+ </tr>
+ <tr valign=top">
+ <td><b>unused_elements.xsd</b></td>
+ <td> Schema elements that are not used within the OMG's schema and
+ the ones that CIAo and DAnCedoesn't support.</td>
+ </tr>
+</table>
+</body>
+</html>
+
diff --git a/modules/CIAO/docs/schema/SANet_Network.xsd b/modules/CIAO/docs/schema/SANet_Network.xsd
new file mode 100644
index 00000000000..d614528b481
--- /dev/null
+++ b/modules/CIAO/docs/schema/SANet_Network.xsd
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.vanderbilt.edu/SANet SANet_Network.xsd" xmlns:SANet="http://www.vanderbilt.edu/SANet"
+ targetNamespace="http://www.vanderbilt.edu/SANet" elementFormDefault="qualified">
+ <!-- Simple types. -->
+ <xs:simpleType name="NodeID">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PortID">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="TaskCost">
+ <xs:restriction base="xs:double" />
+ </xs:simpleType>
+ <xs:simpleType name="CondUtil">
+ <xs:restriction base="xs:double" />
+ </xs:simpleType>
+ <xs:simpleType name="CondKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ENVIRON" />
+ <xs:enumeration value="SYSTEM" />
+ <xs:enumeration value="DATA" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Probability">
+ <xs:restriction base="xs:double">
+ <xs:minInclusive value="0" />
+ <xs:maxInclusive value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LinkWeight">
+ <xs:restriction base="xs:double">
+ <xs:minInclusive value="-1" />
+ <xs:maxInclusive value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="MultFactor">
+ <xs:restriction base="xs:double">
+ <xs:minInclusive value="0" />
+ <xs:maxInclusive value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Complex types corresponding to IDL structures.
+ (nodes, links, and network). -->
+ <xs:complexType name="TaskNode">
+ <xs:sequence>
+ <xs:element name="nodeID" type="SANet:NodeID" />
+ <xs:element name="name" type="xs:string" default="" />
+ <xs:element name="priorProb" type="SANet:Probability" />
+ <xs:element name="attenFactor" type="SANet:MultFactor" default="1" />
+ <xs:element name="cost" type="SANet:TaskCost" default="0" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CondNode">
+ <xs:sequence>
+ <xs:element name="nodeID" type="SANet:NodeID" />
+ <xs:element name="name" type="xs:string" default="" />
+ <xs:element name="probTrue" type="SANet:Probability" default="0" />
+ <xs:element name="utility" type="SANet:CondUtil" default="0" />
+ <xs:element name="kind" type="SANet:CondKind" default="ENVIRON" />
+ <xs:element name="attenFactor" type="SANet:MultFactor" default="1" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="PrecondLink">
+ <xs:sequence>
+ <xs:element name="condID" type="SANet:NodeID" />
+ <xs:element name="taskID" type="SANet:NodeID" />
+ <xs:element name="portID" type="SANet:PortID" />
+ <xs:element name="trueProb" type="SANet:Probability" />
+ <xs:element name="falseProb" type="SANet:Probability" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="EffectLink">
+ <xs:sequence>
+ <xs:element name="taskID" type="SANet:NodeID" />
+ <xs:element name="condID" type="SANet:NodeID" />
+ <xs:element name="portID" type="SANet:PortID" />
+ <xs:element name="weight" type="SANet:LinkWeight" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="Network">
+ <xs:sequence>
+ <xs:element name="defaultAttenFactor" type="SANet:MultFactor" default="1" />
+ <xs:element name="defaultTaskCost" type="SANet:TaskCost" default="0" />
+ <xs:element name="defaultCondUtil" type="SANet:CondUtil" default="0" />
+ <xs:element name="defaultCondProbTrue" type="SANet:Probability" default="0" />
+ <xs:element name="linkThresh" type="SANet:LinkWeight" default="0" />
+ <xs:element name="taskNode" type="SANet:TaskNode" maxOccurs="unbounded" />
+ <xs:element name="condNode" type="SANet:CondNode" maxOccurs="unbounded" />
+ <xs:element name="precondLink" type="SANet:PrecondLink" maxOccurs="unbounded" />
+ <xs:element name="effectLink" type="SANet:EffectLink" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <!-- Top-level network element. -->
+ <xs:element name="network" type="SANet:Network" />
+</xs:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/ServerResourceUsage.txt b/modules/CIAO/docs/schema/ServerResourceUsage.txt
new file mode 100644
index 00000000000..061e2cc4422
--- /dev/null
+++ b/modules/CIAO/docs/schema/ServerResourceUsage.txt
@@ -0,0 +1,79 @@
+ How to use CIAOServerResources.xsd
+
+Assuming we store two CIAO:ServerResources documents in two XML files
+called "RTLinuxServerConfig.xml" and "RTwIN32ServerConfig.xml"
+respectively. Two things need to happen in order to use the
+PolicySet's defined in these files. First, we need to tell the DnC
+tools what are all the CIAOServerResources files a DeploymentPlan
+needs. This can easily be done by enumerating all these file in the
+<infoProperty> element under the <DeploymentPlan>. For example, the
+following XML document snippet shows a DeploymentPlan will reference
+to two aforementioned CIAO:ServerResources files. The property name
+"CIAOServerResourceRef" is a CIAO-specific extension that signifies
+this need. The values of these properties simply specify the
+filenames.
+
+
+ <infoProperty>
+ <name>CIAOServerResourceRef</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>RTLinuxServerConfig.xml</string>
+ </value>
+ </value>
+
+ <name>CIAOServerResourceRef</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>RTWin32ServerConfig.xml</string>
+ </value>
+ </value>
+ </infoProperty>
+
+Second, we can now use the policy sets defined in these files by
+associating a policy set with the entity the policy set will be
+applied. Currently, only associations with component instances are
+supported. A component instance in deployment plan can specify the
+policy set it wishes to be instantiated with. A PolicySet is
+referenced by its name and the CIAO:ServerResources name.
+
+ <deploymentplan>
+ ....
+ <instance ...>
+
+
+ <deployedResource>
+ <resourceUsage>InstanceUsesResource</resourceUsage>
+ <requirementName>CIAO:ServerResources</requirementName>
+ <resourceName>here_we_insert_the_name_defined_in_CIAO:ServerResources</resourcename>
+ <property>
+ <name>CIAO:PolicySetName</name>
+ <value>
+ <type>tk_string</type>
+ <value>
+ <string>here_we_insert_the_PolicySet_name_defined_in_the_ServerResources</string>
+ </value>
+ </value>
+ </property>
+ </deployedResource>
+
+ </instance>
+ </deploymentplan>
+
+If only the name of the CIAO:ServerResources is specified, we are
+using it as a collocation constraint. In this case, the
+<deployedResource> will contain no <property> sub-element. Component
+instances with different <resourceName> values will be deployed to the
+same target node with different ServerResources names. DAnCE should
+create two differnet NodeApplication on the same node.
+
+Likewise, specifying different CIAO:PolicySet IDs will force component
+instances to be deployed into different containers (if they have the
+same target node and ServerResource ID.)
+
diff --git a/modules/CIAO/docs/schema/Spec_Defined_Deployment.xsd b/modules/CIAO/docs/schema/Spec_Defined_Deployment.xsd
new file mode 100644
index 00000000000..a59a47f1360
--- /dev/null
+++ b/modules/CIAO/docs/schema/Spec_Defined_Deployment.xsd
@@ -0,0 +1,897 @@
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment"
+ >
+ <xsd:import namespace="http://www.omg.org/XMI"/>
+ <xsd:complexType name="Any">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Any" type="Deployment:Any"/>
+ <xsd:complexType name="DataType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+ <xsd:element name="enum" type="Deployment:EnumType"/>
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DataType" type="Deployment:DataType"/>
+ <xsd:complexType name="DataValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <xsd:element name="opaque" type="xsd:base64Binary"/>
+ <xsd:element name="objref" type="xsd:string"/>
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <xsd:element name="fixed" type="xsd:string"/>
+ <xsd:element name="any" type="Deployment:Any"/>
+ <xsd:element name="typecode" type="Deployment:DataType"/>
+ <xsd:element name="element" type="Deployment:DataValue"/>
+ <xsd:element name="discriminator" type="Deployment:DataValue"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element name="boxedValue" type="Deployment:DataValue"/>
+ <xsd:element name="member" type="Deployment:NamedValue"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DataValue" type="Deployment:DataValue"/>
+ <xsd:complexType name="EnumType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="EnumType" type="Deployment:EnumType"/>
+ <xsd:complexType name="ObjrefType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ObjrefType" type="Deployment:ObjrefType"/>
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="BoundedStringType" type="Deployment:BoundedStringType"/>
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="FixedType" type="Deployment:FixedType"/>
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ArrayType" type="Deployment:ArrayType"/>
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SequenceType" type="Deployment:SequenceType"/>
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AliasType" type="Deployment:AliasType"/>
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="StructType" type="Deployment:StructType"/>
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="StructMemberType" type="Deployment:StructMemberType"/>
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ValueType" type="Deployment:ValueType"/>
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ValueMemberType" type="Deployment:ValueMemberType"/>
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="UnionType" type="Deployment:UnionType"/>
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="UnionMemberType" type="Deployment:UnionMemberType"/>
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="NamedValue" type="Deployment:NamedValue"/>
+ <xsd:complexType name="Bridge">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connect" type="Deployment:Interconnect"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Bridge" type="Deployment:Bridge"/>
+ <xsd:complexType name="Interconnect">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Bridge"/>
+ <xsd:element name="connect" type="Deployment:Node"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Interconnect" type="Deployment:Interconnect"/>
+ <xsd:complexType name="Node">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Interconnect"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Node" type="Deployment:Node"/>
+ <xsd:complexType name="Resource">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Resource" type="Deployment:Resource"/>
+ <xsd:complexType name="SharedResource">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SharedResource" type="Deployment:SharedResource"/>
+ <xsd:complexType name="Domain">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="interconnect" type="Deployment:Interconnect"/>
+ <xsd:element name="bridge" type="Deployment:Bridge"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Domain" type="Deployment:Domain"/>
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanPropertyMapping" type="Deployment:PlanPropertyMapping"/>
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanSubcomponentPropertyReference" type="Deployment:PlanSubcomponentPropertyReference"/>
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanSubcomponentPortEndpoint" type="Deployment:PlanSubcomponentPortEndpoint"/>
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PlanConnectionDescription" type="Deployment:PlanConnectionDescription"/>
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="InstanceDeploymentDescription" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="MonolithicDeploymentDescription" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="location" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ArtifactDeploymentDescription" type="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription"/>
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="DeploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ResourceDeploymentDescription" type="Deployment:ResourceDeploymentDescription"/>
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="InstanceResourceDeploymentDescription" type="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ConnectionResourceDeploymentDescription" type="Deployment:ConnectionResourceDeploymentDescription"/>
+ <xsd:complexType name="Capability">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Capability" type="Deployment:Capability"/>
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPropertyDescription" type="Deployment:ComponentPropertyDescription"/>
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="exclusiveProvider" type="xsd:string"/>
+ <xsd:element name="exclusiveUser" type="xsd:string"/>
+ <xsd:element name="optional" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPortDescription" type="Deployment:ComponentPortDescription"/>
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="idlFile" type="xsd:string"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="location" type="xsd:string"/>
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationArtifactDescription" type="Deployment:ImplementationArtifactDescription"/>
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="execParameter" type="Deployment:Property"/>
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="MonolithicImplementationDescription" type="Deployment:MonolithicImplementationDescription"/>
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AssemblyPropertyMapping" type="Deployment:AssemblyPropertyMapping"/>
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentPropertyReference" type="Deployment:SubcomponentPropertyReference"/>
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentPortEndpoint" type="Deployment:SubcomponentPortEndpoint"/>
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="AssemblyConnectionDescription" type="Deployment:AssemblyConnectionDescription"/>
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="package" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SubcomponentInstantiationDescription" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription"/>
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentAssemblyDescription" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:complexType name="ComponentImplementationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="capability" type="Deployment:Capability"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requiredUUID" type="xsd:string"/>
+ <xsd:element name="requiredName" type="xsd:string"/>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPackageReference" type="Deployment:ComponentPackageReference"/>
+ <xsd:complexType name="ComponentPackageDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:element name="infoProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement"/>
+ <xsd:element name="configProperty" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PackageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="PackagedComponentImplementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="NamedImplementationArtifact" type="Deployment:NamedImplementationArtifact"/>
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="resourcePort" type="xsd:string"/>
+ <xsd:element name="componentPort" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationRequirement" type="Deployment:ImplementationRequirement"/>
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="RequirementSatisfier" type="Deployment:RequirementSatisfier"/>
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="SatisfierProperty" type="Deployment:SatisfierProperty"/>
+ <xsd:complexType name="Requirement">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Requirement" type="Deployment:Requirement"/>
+ <xsd:complexType name="Property">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="Property" type="Deployment:Property"/>
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="location" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ExternalReferenceEndpoint" type="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ComponentExternalPortEndpoint" type="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="requiredType" type="xsd:string"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="ImplementationDependency" type="Deployment:ImplementationDependency"/>
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="package" type="Deployment:PackageConfiguration"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ <xsd:element name="TopLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="Deployment">
+ <xsd:complexType>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element ref="Deployment:Any"/>
+ <xsd:element ref="Deployment:DataType"/>
+ <xsd:element ref="Deployment:DataValue"/>
+ <xsd:element ref="Deployment:EnumType"/>
+ <xsd:element ref="Deployment:ObjrefType"/>
+ <xsd:element ref="Deployment:BoundedStringType"/>
+ <xsd:element ref="Deployment:FixedType"/>
+ <xsd:element ref="Deployment:ArrayType"/>
+ <xsd:element ref="Deployment:SequenceType"/>
+ <xsd:element ref="Deployment:AliasType"/>
+ <xsd:element ref="Deployment:StructType"/>
+ <xsd:element ref="Deployment:StructMemberType"/>
+ <xsd:element ref="Deployment:ValueType"/>
+ <xsd:element ref="Deployment:ValueMemberType"/>
+ <xsd:element ref="Deployment:UnionType"/>
+ <xsd:element ref="Deployment:UnionMemberType"/>
+ <xsd:element ref="Deployment:NamedValue"/>
+ <xsd:element ref="Deployment:Bridge"/>
+ <xsd:element ref="Deployment:Interconnect"/>
+ <xsd:element ref="Deployment:Node"/>
+ <xsd:element ref="Deployment:Resource"/>
+ <xsd:element ref="Deployment:SharedResource"/>
+ <xsd:element ref="Deployment:Domain"/>
+ <xsd:element ref="Deployment:PlanPropertyMapping"/>
+ <xsd:element ref="Deployment:PlanSubcomponentPropertyReference"/>
+ <xsd:element ref="Deployment:PlanSubcomponentPortEndpoint"/>
+ <xsd:element ref="Deployment:PlanConnectionDescription"/>
+ <xsd:element ref="Deployment:InstanceDeploymentDescription"/>
+ <xsd:element ref="Deployment:MonolithicDeploymentDescription"/>
+ <xsd:element ref="Deployment:ArtifactDeploymentDescription"/>
+ <xsd:element ref="Deployment:DeploymentPlan"/>
+ <xsd:element ref="Deployment:ResourceDeploymentDescription"/>
+ <xsd:element ref="Deployment:InstanceResourceDeploymentDescription"/>
+ <xsd:element ref="Deployment:ConnectionResourceDeploymentDescription"/>
+ <xsd:element ref="Deployment:Capability"/>
+ <xsd:element ref="Deployment:ComponentPropertyDescription"/>
+ <xsd:element ref="Deployment:ComponentPortDescription"/>
+ <xsd:element ref="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element ref="Deployment:ImplementationArtifactDescription"/>
+ <xsd:element ref="Deployment:MonolithicImplementationDescription"/>
+ <xsd:element ref="Deployment:AssemblyPropertyMapping"/>
+ <xsd:element ref="Deployment:SubcomponentPropertyReference"/>
+ <xsd:element ref="Deployment:SubcomponentPortEndpoint"/>
+ <xsd:element ref="Deployment:AssemblyConnectionDescription"/>
+ <xsd:element ref="Deployment:SubcomponentInstantiationDescription"/>
+ <xsd:element ref="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element ref="Deployment:ComponentImplementationDescription"/>
+ <xsd:element ref="Deployment:ComponentPackageReference"/>
+ <xsd:element ref="Deployment:ComponentPackageDescription"/>
+ <xsd:element ref="Deployment:PackageConfiguration"/>
+ <xsd:element ref="Deployment:PackagedComponentImplementation"/>
+ <xsd:element ref="Deployment:NamedImplementationArtifact"/>
+ <xsd:element ref="Deployment:ImplementationRequirement"/>
+ <xsd:element ref="Deployment:RequirementSatisfier"/>
+ <xsd:element ref="Deployment:SatisfierProperty"/>
+ <xsd:element ref="Deployment:Requirement"/>
+ <xsd:element ref="Deployment:Property"/>
+ <xsd:element ref="Deployment:ExternalReferenceEndpoint"/>
+ <xsd:element ref="Deployment:ComponentExternalPortEndpoint"/>
+ <xsd:element ref="Deployment:ImplementationDependency"/>
+ <xsd:element ref="Deployment:TopLevelPackageDescription"/>
+ <xsd:element ref="xmi:Extension"/>
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" use="optional"/>
+ <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/Spec_Defined_XMI.xsd b/modules/CIAO/docs/schema/Spec_Defined_XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/docs/schema/Spec_Defined_XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/Task_Map.xsd b/modules/CIAO/docs/schema/Task_Map.xsd
new file mode 100644
index 00000000000..2138f082d48
--- /dev/null
+++ b/modules/CIAO/docs/schema/Task_Map.xsd
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.vanderbilt.edu/SA-POP Task_Map.xsd" xmlns:SA-POP="http://www.vanderbilt.edu/SA-POP"
+ targetNamespace="http://www.vanderbilt.edu/SA-POP" elementFormDefault="qualified">
+ <!-- Simple types. -->
+ <xs:simpleType name="TaskID">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TaskImplID">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="ResourceID">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="ResourceKind">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="UNARY" />
+ <xs:enumeration value="DISCRETE" />
+ <xs:enumeration value="RESERVOIR" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ResourceValue">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ImplParamID">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="ImplParamKind">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="ImplParamValue">
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+ <xs:simpleType name="TimeValue">
+ <xs:restriction base="xs:int">
+ <!-- -1 indicates unknown/unconstrained time -->
+ <xs:minInclusive value="-1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Complex types corresponding to IDL structures.
+ (resources, parameters, implementations, associations, and task map) -->
+ <xs:complexType name="Resource">
+ <xs:sequence>
+ <xs:element name="resourceID" type="SA-POP:ResourceID" />
+ <xs:element name="kind" type="SA-POP:ResourceKind" default="DISCRETE" />
+ <xs:element name="capacity" type="SA-POP:ResourceValue" default="100" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ImplParam">
+ <xs:sequence>
+ <xs:element name="paramID" type="SA-POP:ImplParamID" />
+ <xs:element name="kind" type="SA-POP:ImplParamKind" />
+ <xs:element name="value" type="SA-POP:ImplParamValue" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaskImpl">
+ <xs:sequence>
+ <xs:element name="implID" type="SA-POP:TaskImplID" />
+ <xs:element name="param" type="SA-POP:ImplParam" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaskToImpl">
+ <xs:sequence>
+ <xs:element name="taskID" type="SA-POP:TaskID" />
+ <xs:element name="implID" type="SA-POP:TaskImplID" />
+ <xs:element name="duration" type="SA-POP:TimeValue" default="-1" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ImplToResource">
+ <xs:sequence>
+ <xs:element name="implID" type="SA-POP:TaskImplID" />
+ <xs:element name="resourceID" type="SA-POP:ResourceID" />
+ <xs:element name="utilization" type="SA-POP:ResourceValue" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TaskMap">
+ <xs:sequence>
+ <xs:element name="taskImpl" type="SA-POP:TaskImpl" maxOccurs="unbounded" />
+ <xs:element name="resource" type="SA-POP:Resource" maxOccurs="unbounded" />
+ <xs:element name="taskToImpl" type="SA-POP:TaskToImpl" maxOccurs="unbounded" />
+ <xs:element name="implToResource" type="SA-POP:ImplToResource" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <!-- Top-level task map element. -->
+ <xs:element name="taskMap" type="SA-POP:TaskMap"></xs:element>
+</xs:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/ccd.xsd b/modules/CIAO/docs/schema/ccd.xsd
new file mode 100644
index 00000000000..fcdac711b5a
--- /dev/null
+++ b/modules/CIAO/docs/schema/ccd.xsd
@@ -0,0 +1,27 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="Basic_Deployment_Data.xsd" />
+
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0"/>
+ <!-- @@ MAJO : HACK - SpecificType and SupportedType should be required! -->
+ <xsd:element name="specificType" type="xsd:string" minOccurs="0" />
+ <xsd:element name="supportedType" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="idlFile" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute name="href" type="xsd:string" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/cdd.xsd b/modules/CIAO/docs/schema/cdd.xsd
new file mode 100644
index 00000000000..3fe64120bfd
--- /dev/null
+++ b/modules/CIAO/docs/schema/cdd.xsd
@@ -0,0 +1,60 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+<xsd:include schemaLocation="Basic_Deployment_Data.xsd" />
+
+ <xsd:complexType name="Domain">
+ <xsd:sequence>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="node" type="Deployment:Node" maxOccurs="unbounded"/>
+ <xsd:element name="interconnect" type="Deployment:Interconnect" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="bridge" type="Deployment:Bridge" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Bridge">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="connect" type="Deployment:Interconnect" maxOccurs="unbounded" />
+ <xsd:element name="resource" type="Deployment:Resource" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Interconnect">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="connection" type="Deployment:Bridge" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="connect" type="Deployment:Node" maxOccurs="unbounded" />
+ <xsd:element name="resource" type="Deployment:Resource" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Node">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="connection" type="Deployment:Interconnect" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sharedResource" type="Deployment:SharedResource" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="resource" type="Deployment:Resource" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SharedResource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/cdp.xsd b/modules/CIAO/docs/schema/cdp.xsd
new file mode 100644
index 00000000000..4fa69acd3fe
--- /dev/null
+++ b/modules/CIAO/docs/schema/cdp.xsd
@@ -0,0 +1,27 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+<xsd:include schemaLocation="ccd.xsd" />
+
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" />
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription" maxOccurs="unbounded" />
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- potentially recursive, not used
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ -->
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+</xsd:complexType>
+
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/ciaopolicy.xsd b/modules/CIAO/docs/schema/ciaopolicy.xsd
new file mode 100644
index 00000000000..93a7415c4b4
--- /dev/null
+++ b/modules/CIAO/docs/schema/ciaopolicy.xsd
@@ -0,0 +1,607 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema targetNamespace="www.dre.vanderbilt.edu"
+ xmlns:ciao="www.dre.vanderbilt.edu"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:element name="orbPolicies">
+ <xs:annotation>
+ <xs:documentation>
+ The root element of the schema. Contains zero or more policies.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="policy" type="ciao:policyType" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="policyType">
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="rebindPolicy" type="ciao:rebindPolicyType" />
+ <xs:element name="syncScopePolicy" type="ciao:syncScopePolicyType" />
+ <xs:element name="requestPriorityPolicy" type="ciao:requestPriorityPolicyType" />
+ <xs:element name="replyPriorityPolicy" type="ciao:replyPriorityPolicyType" />
+ <xs:element name="requestStartTimePolicy" type="ciao:requestStartTimePolicyType" />
+ <xs:element name="requestEndTimePolicy" type="ciao:requestEndTimePolicyType" />
+ <xs:element name="replyStartTimePolicy" type="ciao:replyStartTimePolicyType" />
+ <xs:element name="replyEndTimePolicy" type="ciao:replyEndTimePolicyType" />
+ <xs:element name="relativeRequestTimeoutPolicy" type="ciao:relativeRequestTimeoutPolicyType" />
+ <xs:element name="relativeRoundtripPolicy" type="ciao:relativeRoundtripPolicyType" />
+ <xs:element name="routingPolicy" type="ciao:routingPolicyType" />
+ <xs:element name="maxHopsPolicy" type="ciao:maxHopsPolicyType" />
+ <xs:element name="queueOrderPolicy" type="ciao:queueOrderPolicyType" />
+ <xs:element name="priorityModelPolicy" type="ciao:priorityModelPolicyType" />
+ <xs:element name="threadPoolPolicy" type="ciao:threadPoolPolicyType" />
+ <xs:element name="serverProtocolPolicy" type="ciao:serverProtocolPolicyType" />
+ <xs:element name="clientProtocolPolicy" type="ciao:clientProtocolPolicyType" />
+ <xs:element name="privateConnectionPolicy" type="ciao:privateConnectionPolicyType" />
+ <xs:element name="priorityBandedPolicy" type="ciao:priorityBandedPolicyType" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="policyBase" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ This is the base policy type. All policies
+ should be an extension of this type.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="override" type="ciao:overrideType" />
+ <xs:element name="scope" type="ciao:scopeType" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:simpleType name="scopeType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ORB" />
+ <xs:enumeration value="THREAD" />
+ <xs:enumeration value="OBJECT" />
+ <xs:enumeration value="POA" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="policyIDType">
+ <xs:annotation>
+ <xs:documentation>
+ This type represents the policy ID.
+ Need to add a restriction.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="overrideType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="SET_OVERRIDE" />
+ <xs:enumeration value="ADD_OVERRIDE" />
+ </xs:restriction>
+ </xs:simpleType>
+
+
+
+ <!-- The following are extensions of policyBase, one each for each policy
+ we may want to group these into seperate schema documents, for our
+ own sanity.
+ -->
+ <!-- Policies 23 - 35 are defined in Messaging_No_Impl.pidl,
+ with the exception of policy 32, defined in Messaging_RT_Policy.pidl
+ and policy 24, defined in Messaging_SyncScope_Policy.pidl -->
+
+ <xs:complexType name="rebindPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the RebindPolicy type, ID 23
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="rebindMode" type="ciao:rebindModeType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="23" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="rebindModeType">
+ <xs:annotation>
+ <xs:documentation>
+ Note: This is not strictly represented in the pidl as an enum,
+ but that appears to be the intent of the way it is declared.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="TRANSPARENT" />
+ <xs:enumeration value="NO_REBIND" />
+ <xs:enumeration value="NO_RECONNECT" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="syncScopePolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a SyncScopePolicyType, ID 24
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="synchronization" type="ciao:syncScopeType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="25" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="syncScopeType">
+ <xs:annotation>
+ <xs:documentation>
+ Note: This was not declared an enum in Messaging_SyncScope_Policy.pidl,
+ but from the declaration, that appears to be the intent.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="SYNC_NONE" />
+ <xs:enumeration value="SYNC_WITH_TRANSPORT" />
+ <xs:enumeration value="SYNC_WITH_SERVER" />
+ <xs:enumeration value="SYNC_WITH_TARGET" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="requestPriorityPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RequestPriorityPolicy, ID 25
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="priorityRange" type="ciao:priorityRangeType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="25" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="replyPriorityPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a ReplyPriorityPolicy, ID 26
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="priorityRange" type="ciao:priorityRangeType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="26" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="priorityRangeType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a PriorityRange struct defined in Messaging_No_Impl.pidl
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="min" type="xs:integer" />
+ <xs:element name="max" type="xs:integer" />
+ </xs:sequence>
+ </xs:complexType>
+
+
+ <xs:complexType name="requestStartTimePolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RequestStartTimePolicy, ID 27
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="startTime" type="ciao:utcTime" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="27" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="requestEndTimePolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RequestEndTimePolicy, ID 28
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="endTime" type="ciao:utcTime" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="28" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="replyStartTimePolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a ReplyStartTimePolicy, ID 29
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="startTime" type="ciao:utcTime" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="29" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="replyEndTimePolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a ReplyEndTimePolicy, ID 30
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="endTime" type="ciao:utcTime" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="30" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="utcTime">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a TimeBase::UtcT struct, defined in tao/TimeBase.pidl
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="time" type="xs:integer" />
+ <xs:element name="inaccLo" type="xs:integer" />
+ <xs:element name="inaccHi" type="xs:integer" />
+ <xs:element name="tdf" type="xs:integer" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="relativeRequestTimeoutPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RelativeRequestTimeoutPolicy, ID 31.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="relativeExpiry" type="xs:integer" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="31" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="relativeRoundtripPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RelativeRoundtripPolicy, ID 32
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="relativeExpiry" type="xs:integer" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="32" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="routingPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a RoutingPolicy, ID 33
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="routingTypeRangeMin" type="ciao:routingType" />
+ <xs:element name="routingTypeRangeMax" type="ciao:routingType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="33" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="routingType">
+ <xs:annotation>
+ <xs:documentation>
+ Note: This is not explicitly set up as an enum in Messaging_No_Impl.pidl,
+ but that appears to be the intent from the declaration.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ROUTE_NONE" />
+ <xs:enumeration value="ROUTE_FORWARD" />
+ <xs:enumeration value="ROUTE_STORE_AND_FORWARD" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="maxHopsPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a MaxHopsPolicy, ID 34
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="maxHops" type="xs:integer" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="34" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="queueOrderPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents a QueueOrderPolicy, ID 35
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="allowedOrders" type="ciao:ordersType" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="35" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="ordersType">
+ <xs:annotation>
+ <xs:documentation>
+ Note: This is not explicitly declared to be an enum in Messaging_No_Impl.pidl,
+ but that appears to be the intent from the declaration.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ORDER_ANY" />
+ <xs:enumeration value="ORDER_TEMPORAL" />
+ <xs:enumeration value="ORDER_PRIORITY" />
+ <xs:enumeration value="ORDER_DEADLINE" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Policies 40 - 45 are defined in RTCORBA.pidl -->
+ <!-- priorityModelPolicy -->
+ <xs:complexType name="priorityModelPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the Priority Model Policy, ID 40
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="priorityModel" type="ciao:priorityModelType" />
+ <xs:element name="serverPriority" type="xs:integer" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="40" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="priorityModelType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="CLIENT_PROPAGATED" />
+ <xs:enumeration value="SERVER_DECLARED" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- threadPoolPolicy -->
+
+ <xs:complexType name="threadPoolPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the ThreadPool policy, ID 41
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="threadPoolID" type="xs:integer" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="41" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <!-- serverProtocolPolicy -->
+
+ <xs:complexType name="serverProtocolPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the Server Protocol policy, ID 42
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="protocol" type="ciao:protocolType"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="42" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <!-- clientProtocolPolicy -->
+ <xs:complexType name="clientProtocolPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the Client Protocol policy, ID 43
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="protocol" type="ciao:protocolType"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="43" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <!-- Protocol definitions for client and server Protocol properties types. -->
+ <xs:complexType name="protocolType">
+ <xs:sequence>
+ <xs:element name="protocolType" type="xs:integer" />
+ <xs:element name="orbProtocolProperties" type="ciao:protocolPropertyType" />
+ <xs:element name="transportProtocolProperties" type="ciao:protocolPropertyType" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="protocolPropertyType">
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="tcpProtocolProperties" type="ciao:tcpProtocolPropertiesType" />
+ <xs:element name="giopProtocolProperties" type="ciao:giopProtocolPropertiesType" />
+ <xs:element name="unixDomainProtocolProperties" type="ciao:unixDomainProtocolPropertiesType" />
+ <xs:element name="sharedMemoryProtocolProperties" type="ciao:sharedMemoryProtocolPropertiesType" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="protocolPropertyBase" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ Base type for all protocol properties.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="type" type="xs:string" use="required" />
+ </xs:complexType>
+
+ <xs:complexType name="tcpProtocolPropertiesType">
+ <xs:complexContent>
+ <xs:extension base="ciao:protocolPropertyBase">
+ <xs:sequence>
+ <xs:element name="sendBufferSize" type="xs:integer" />
+ <xs:element name="recvBufferSize" type="xs:integer" />
+ <xs:element name="keepAlive" type="xs:boolean" />
+ <xs:element name="dontRoute" type="xs:boolean" />
+ <xs:element name="noDelay" type="xs:boolean" />
+ <xs:element name="enableNetworkPriority" type="xs:boolean" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="giopProtocolPropertiesType">
+ <xs:complexContent>
+ <xs:extension base="ciao:protocolPropertyBase" />
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="unixDomainProtocolPropertiesType">
+ <xs:complexContent>
+ <xs:extension base="ciao:protocolPropertyBase">
+ <xs:sequence>
+ <xs:element name="sendBufferSize" type="xs:integer" />
+ <xs:element name="recvBufferSize" type="xs:integer" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="sharedMemoryProtocolPropertiesType">
+ <xs:complexContent>
+ <xs:extension base="ciao:protocolPropertyBase">
+ <xs:sequence>
+ <xs:element name="preallocateBufferSize" type="xs:integer" />
+ <xs:element name="mmapFilename" type="xs:string" />
+ <xs:element name="mmapLockname" type="xs:string" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- TODO: Provide other protocolProperties types -->
+
+ <!-- privateConnectionPolicy -->
+ <xs:complexType name="privateConnectionPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ privateConnectionPolicy extension of policyBase, ID 44
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <!-- empty -->
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="44" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <!-- priorityBandedPolicy -->
+ <xs:complexType name="priorityBandedPolicyType">
+ <xs:annotation>
+ <xs:documentation>
+ priorityBandedPolicy extension of policyBase, ID 45
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="ciao:policyBase">
+ <xs:sequence>
+ <xs:element name="priorityBand" type="ciao:priorityBandType"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="typeID" type="xs:integer" use="required" fixed="45" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="priorityBandType">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the PriorityBand struct for the priorityBandedPolicy element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="low" type="xs:integer" />
+ <xs:element name="high" type="xs:integer" />
+ </xs:sequence>
+ </xs:complexType>
+
+
+
+</xs:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/cid.xsd b/modules/CIAO/docs/schema/cid.xsd
new file mode 100644
index 00000000000..7e5233d770f
--- /dev/null
+++ b/modules/CIAO/docs/schema/cid.xsd
@@ -0,0 +1,80 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="Basic_Deployment_Data.xsd" />
+ <xsd:include schemaLocation="cpd.xsd" />
+ <xsd:include schemaLocation="iad.xsd" />
+ <xsd:include schemaLocation="pcd.xsd" />
+
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription" minOccurs="0" />
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration" minOccurs="0" />
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="referencedPackage" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ <xsd:element name="importedPackage" type="Deployment:ComponentPackageImport" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:sequence>
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="xsd:IDREF"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:sequence>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- <xsd:element name="locality" type="Deployment:Locality" minOccurs="0" maxOccurs="unbounded" /> -->
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:sequence>
+ <xsd:element name="nodeExecParameter" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="componentExecParameter" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentImplementationDescription">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
+ <!-- @@ MAJO : Hack: Implements should be required. -->
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription" minOccurs="0" />
+ <xsd:choice>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ </xsd:choice>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="capability" type="Deployment:Capability" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/cpd.xsd b/modules/CIAO/docs/schema/cpd.xsd
new file mode 100644
index 00000000000..6f049fa839b
--- /dev/null
+++ b/modules/CIAO/docs/schema/cpd.xsd
@@ -0,0 +1,35 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="ccd.xsd" />
+ <xsd:include schemaLocation="cid.xsd" />
+
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive CPD->PCI->CID->CAD->SID->CPD -->
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ComponentPackageDescription">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
+ <!-- @@MAJO - This is a hack, realizes is required. -->
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" />
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation" maxOccurs="unbounded" />
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/modules/CIAO/docs/schema/iad.xsd b/modules/CIAO/docs/schema/iad.xsd
new file mode 100644
index 00000000000..2f910b5d333
--- /dev/null
+++ b/modules/CIAO/docs/schema/iad.xsd
@@ -0,0 +1,32 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+<xsd:include schemaLocation="Basic_Deployment_Data.xsd" />
+
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive NIA->IAD->NIA -->
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+</xsd:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/pcd.xsd b/modules/CIAO/docs/schema/pcd.xsd
new file mode 100644
index 00000000000..05b10e1bb79
--- /dev/null
+++ b/modules/CIAO/docs/schema/pcd.xsd
@@ -0,0 +1,32 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="Basic_Deployment_Data.xsd" />
+ <xsd:include schemaLocation="cpd.xsd" />
+
+ <xsd:complexType name="ComponentPackageImport">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0" />
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription" minOccurs="0" />
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration" minOccurs="0" />
+ <xsd:element name="importedPackage" type="Deployment:ComponentPackageImport" minOccurs="0" />
+ <xsd:element name="referencedPackage" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/modules/CIAO/docs/schema/toplevel.xsd b/modules/CIAO/docs/schema/toplevel.xsd
new file mode 100644
index 00000000000..0c67f5fb7a9
--- /dev/null
+++ b/modules/CIAO/docs/schema/toplevel.xsd
@@ -0,0 +1,15 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="pcd.xsd" />
+
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:sequence>
+ <xsd:element name="basePackage" type="Deployment:PackageConfiguration" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/unused_elements.xsd b/modules/CIAO/docs/schema/unused_elements.xsd
new file mode 100644
index 00000000000..c1200b088e9
--- /dev/null
+++ b/modules/CIAO/docs/schema/unused_elements.xsd
@@ -0,0 +1,161 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+<!-- VAULT
+
+Place for strange things. Nobody knows what they are for...
+
+-->
+
+<!--
+
+ <xsd:complexType name="EnumType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ObjrefType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+<!--
+
+ This type is not referenced anywhere.
+
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+</xsd:schema>
diff --git a/modules/CIAO/docs/schema/xsc-banner.cpp b/modules/CIAO/docs/schema/xsc-banner.cpp
new file mode 100644
index 00000000000..ecd90a877a6
--- /dev/null
+++ b/modules/CIAO/docs/schema/xsc-banner.cpp
@@ -0,0 +1,11 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
diff --git a/modules/CIAO/docs/schema/xsc-banner.h b/modules/CIAO/docs/schema/xsc-banner.h
new file mode 100644
index 00000000000..9f433e2a68a
--- /dev/null
+++ b/modules/CIAO/docs/schema/xsc-banner.h
@@ -0,0 +1,18 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
diff --git a/modules/CIAO/docs/static_ciao_contents.html b/modules/CIAO/docs/static_ciao_contents.html
new file mode 100755
index 00000000000..d043e4c0aee
--- /dev/null
+++ b/modules/CIAO/docs/static_ciao_contents.html
@@ -0,0 +1,359 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR"
+ content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>CIAO Static Configuration</title>
+ <base target="main"><!-- $Id$ -->
+</head>
+<body>
+<center>
+<h2>CIAO Static Configuration Support for Real-Time Platforms</h2>
+</center>
+<h3>
+<a name="intro"></a>1. Introduction</h3>
+The dynamic packaging, assembly, and deployment mechanisms currently
+available
+in CIAO are useful for application domains where component metadata is
+less likely to be known a priori, where implementation upgrades may
+need
+to be performed on-line, and where platform features like loading and
+unloading
+dynamic libraries are both available and useful.&nbsp; Furthermore, the
+new CCM Deployment and Configuration specification describes a wider
+range
+of configuration capabilities, opening up the question of alternative
+component
+configuration strategies more generally and requiring that any solution
+we devise can be migrated to that new configuration approach.
+<p>Therefore, we have incorporated support for component configuration
+in CIAO on platforms like VxWorks, as a set of optional strategies and
+optimizations to the existing CIAO configuration capabilities.&nbsp; By
+supporting both dynamic and static styles of configuration in CIAO, we
+will both (1) be able to realize our short term goals in making CIAO
+available
+on VxWorks for use in the Boeing PCES/MoBIES OEP, and (2) set a
+precedent
+for availability of static configuration capabilities more generally,
+so
+that DRE systems are well-supported within the new Deployment and
+Configuration
+specification implementation for CIAO as well.
+</p>
+<p>The fundamental intuition in understanding our approach is that in
+DRE
+systems the stages of the overall system lifecycle are similar to those
+in more dynamic conventional component-oriented client-server
+applications.&nbsp;
+However, in DRE systems several phases of the system lifecycle are
+compressed
+into the compile-time and system-initialization phases, so that (1) for
+testing and verification purposes the set of components in an
+application
+can be identified and analyzed before run-time, and (2) overheads for
+run-time
+operation following initialization are reduced and made more
+predictable.
+Furthermore, due to the nuances of the platforms traditionally used for
+deploying DRE systems, not all features of conventional platforms are
+available.
+Our approach therefore avoids certain mechanisms that are either
+unavailable
+or too costly in terms of performance.
+</p>
+<p>We follow these intuitions in our approach, taking the existing
+configuration
+phases in CIAO and pushing several of them earlier in the configuration
+lifecycle.&nbsp; We ensure that our approach can be realized in the
+context
+of the platforms on which the Boeing PCES/MoBIES OEP will be deployed,
+notably VxWorks, by re-factoring the configuration mechanisms and
+retargeting
+them to use only the services available on the target real-time
+platforms.
+<br>
+&nbsp;
+</p>
+<h3><a name="currentarch"></a>2. Current CIAO Configuration Architecture</h3>
+<center>
+<p><br>
+<img src="imgs/ciao-dynamic1.jpg" height="462" width="774"></p>
+<p><b>Figure 1. Current configuration process in CIAO</b></p>
+</center>
+<p>The first stage of the CIAO system lifecycle occurs off-line, when
+component
+package (.csd) and assembly (.cad) files are generated by a modeling
+tool
+or other prior stage of the tool chain.&nbsp; These files contain an
+abstract
+specification of the configuration that is to be achieved by CIAO in
+each
+particular deployment environment .
+</p>
+<p>CIAO interprets these .csd and .cad files, and creates and
+configures
+the components, their run-time server environments, and QoS properties
+within the supporting ORB and other related infrastructure.&nbsp;
+Currently,
+CIAO runs several daemon processes for each deployment environment: one
+or more Component Installation / Server Activation (CISA) daemons on
+each
+machine where components can be deployed, an additional Assembly
+Manager
+daemon and an Assembly Deployer process used by the system developer.
+</p>
+<p>The Assembly Manager stores an internal table with the target
+platform
+availability information .&nbsp;&nbsp;&nbsp; The Assembly Deployer
+tells
+the Assembly Manager which assemblies of components (each assembly is
+defined
+in a separate .cad file) should be deployed on which target
+machines.&nbsp;
+The Assembly Manager parses the XML structures in the .cad file, and
+generates
+its own internal data structure (<b>Figure 2</b>) as an intermediate
+representation
+of that assembly.
+</p>
+<p>The Assembly Manager then traverses (<b>Figure 2</b>) this
+intermediate
+representation, instructing each CISA daemon to install and configure
+specific
+component servers and containers, to create specific homes, and to
+instantiate
+specific component instances.&nbsp;&nbsp;&nbsp; Each CISA daemon has
+additional
+information about the component implementations available on that
+endsystem
+&#8211; each component UUID is mapped to a disk path for the .dll or .so file
+within which a factory method for its home factory is defined.
+</p>
+<center>
+<p><img src="imgs/ciao-dynamic2.jpg" height="384" width="699"></p>
+<p><b>Figure 2. Intermediate representation of configuration information</b></p>
+</center>
+<p>The following steps are optional, and will only be performed if they
+are explicitly specified in the assembly definition itself.&nbsp; For
+the
+sake of discussion, we consider the case where all the steps are in
+fact
+specified.&nbsp; The Assembly Manager will tell the CISA daemon the
+UUIDs
+of the components to be installed in that component server, and the
+CISA
+daemon will look up and load the appropriate dynamic library, invoke
+the
+home factory method to create the home, and then invoke the home&#8217;s
+component
+creation method.&nbsp; After all the component instances and homes have
+been created and references to them have been obtained, the assembly
+manager
+will then make all the connections between ports and receptacles,
+facets,
+and event sources and sinks by invoking connect and subscribe methods
+on
+the receiving end component.
+</p>
+<p>QoS-specific metadata like priorities can be configured by a .cad
+file
+extension called a real-time descriptor (.rtcad) file.&nbsp; The
+Assembly
+Manager will read the .rtcad file and will parse and associate
+real-time
+policies with the appropriate component instances.&nbsp;&nbsp; One
+implication
+of this mechanism is that the Assembly Manager will maintain QoS
+meta-data
+within its intermediate representation, alongside the conventional CCM
+meta-data.
+</p>
+<p>Furthermore, when the Assembly Manager interacts with the CISA
+daemon(s)
+on each endsystem, commands to configure particular component and
+component
+server run-time infrastructure QoS properties are passed from the
+Assembly
+Manager to the CISA daemon.&nbsp; The ORB (and as a future extension
+the
+ORB Services) of the endsystem on which the components are installed is
+currently configured via the ACE Service Configurator.&nbsp; The CISA
+daemon
+maps different service configurations (as defined in particular
+svc.conf
+files) to logical names used in the component assembly descriptors.
+</p>
+<p>The logical configuration names are encoded within the .cad file as
+an extension of the conventional .cad file format using the &#8220;extension&#8221;
+element of the existing .cad file XML DTD.&nbsp; The Assembly Manager
+passes
+a component server creation command, containing a logical configuration
+name, which the CISA daemon maps to a particular svc.conf file when it
+creates a new component server.&nbsp; The CISA daemon adds a command
+line
+flag to the execution command line used to spawn the new component
+server,
+which causes that configuration file to be parsed and applied during
+startup
+of the component server itself.
+</p>
+<h3><a name="staticapproach"></a>3. Static Configuration Approach</h3>
+In the static configuration approach (<b>Figure 3</b>),
+configurations&nbsp;
+XML files are translated in a code generation step just before compile
+time (managed by the same project/Makefile processes that do the
+compilation)
+into C++ header and source files that are then compiled and linked with
+the main application.
+<center>
+<p><img src="imgs/ciao-static1.jpg" height="523" width="800"></p>
+<p><b>Figure 3. Static Configuration in CIAO</b></p>
+</center>
+<p>First, one of the generated files is a C++ header file, so that it
+can
+be included directly by C++ source files.&nbsp; There is no additional
+parsing required to import a number of static constants and identifiers
+it declares and defines, so that those constants end up being compiled
+directly into C++ code.&nbsp; Second, where enumeration of information
+is needed, the header file contains simple homogeneous C++ arrays so
+that
+C++ source code can iterate over those arrays with minimal
+overhead.&nbsp;
+Third, it declares information so that later information depends on
+earlier
+information (<b>Figure 4</b>), and the components are directly
+configured
+within that header file.
+</p>
+<center>
+<p><img src="imgs/ciao-static2.jpg" height="476" width="816"></p>
+<p><b>Figure 4. All XML files are parsed offline and stored as
+cross-referenced
+tables in Static_Assembly_Config.h</b></p>
+</center>
+<p>The major issues that we addressed in developing a re-factored
+version
+of the CIAO configuration mechanisms are as follows:
+</p>
+<p>1. XML parsing is too expensive to be performed during system
+initialization,
+so that all such parsing has been moved off-line to before
+compile-time,
+and the resulting information is linked statically into the application
+itself.
+</p>
+<p>2. Each endsystem boots and initializes in a single process address
+space, so that any remaining inter-process communication between
+daemons
+is replaced by direct interactions between objects, or at most between
+threads.
+</p>
+<p>3. Dynamic link libraries are unavailable on VxWorks, so an
+alternative
+mechanism for obtaining the home factory method entry point is needed.
+We gather this information from the XML files and statically generate a
+map containing&nbsp; the entry point function names and the entry point
+function pointers. This information will be used by the CIAO container
+implementation instead of trying to load a dll and then finding the
+entry
+point in the dll.
+</p>
+<h4>Moving XML Parsing Earlier</h4>
+We first focused on taking the XML parsing stage off-line.&nbsp; Since
+the time required to do this by CIAO is currently reasonable as an
+off-line
+activity, we simply created (<b>Figure 4</b>) a stripped-down version
+of
+the Assembly Manager (reusing the existing class libraries the Assembly
+Manager uses) that after it performs the XML parsing and generation of
+its intermediate representation, emits a C++ header file containing
+that
+intermediate representation.
+<h4>Combining Configuration Daemons at Run-Time</h4>
+The intermediate representation is included in a configuration engine
+(CIAO::Static_Configurator)
+that consists of a simple reader for the intermediate representation,
+again
+derived from the code currently used in the Assembly Manager, which
+will
+dispatch to the configuration code used by the CISA daemons in the
+dynamic
+case.&nbsp; The configuration engine will be invoked from the
+application&#8217;s
+main entry point prior to starting execution of the application itself.
+<h4>Eliminating Dynamic Library Loading</h4>
+All code will need to be known a priori, and linked statically into the
+application.&nbsp; If alternative configurations must be supported
+statically,
+then those separate configurations can be alternative selections chosen
+during the build process.&nbsp; If alternative configurations must be
+selected
+adaptively at run-time then all the code for each possible
+configuration
+must be linked in statically, and appropriate mechanisms used to
+re-target
+a logical name dynamically to each particular configuration (e.g.,
+different
+configurations for different system modes).
+<br>
+&nbsp;
+<br>
+&nbsp;
+<br>
+<br>
+<center>
+<p><img src="imgs/ciao-static-vs-dynamic.jpg" height="384" width="735"><br>
+<b>Figure 5. CIAO Dynamic vs Static Configuration</b></p>
+</center>
+<h3>
+<a name="status"></a><b>4. Status of CIAO Static Configuration</b></h3>
+The initial version of the CIAO static configurator is available under
+$CIAO_ROOT/tools/static_configurator.
+<p>To run the static configurator,
+</p>
+<p><b><tt>Static_Assembly_Parser -a &lt;.cad file&gt;</tt></b>
+</p>
+<p>This will generate three files -
+</p>
+<p><b><tt>Static_CCM_App.cpp</tt></b> - this file contains the main
+program
+which instantiates the component server and invokes the static
+configuration
+engine to create containers, homes, etc.
+</p>
+<p><b><tt>Static_CCM_App.mpc</tt></b> - this file contains the
+necessary
+files for building the static application. You have to manually change
+this file so as to include files that are not known to the static
+configurator.
+</p>
+<p><b><tt>Static_Assembly_Config.h</tt></b> - this file contains the
+C++
+intermediate representation of all the information in the .cad, .csd
+and
+.ssd XML files.
+</p>
+<p><a name="Example"></a><b>Example</b> - An <a
+ href="static_config_example.html">example</a>
+run is shown using the <a href="../examples/OEP/BasicSP">BasicSP</a>
+scenario.
+</p>
+<h3><a name="futurework"></a><b>5. Future work</b></h3>
+<p>The current implementation does not have support for multiple
+component
+servers running on multiple processors. Multiprocessor scenario
+involves
+coordination and synchronization among the component servers running on
+different processors. There has to be some kind of a mediator which
+determines
+that all components are instantiated before connections can be made
+among
+them.<br>
+<br>
+&nbsp;
+</p>
+</body>
+</html>
diff --git a/modules/CIAO/docs/static_ciao_index.html b/modules/CIAO/docs/static_ciao_index.html
new file mode 100755
index 00000000000..627e07c65ca
--- /dev/null
+++ b/modules/CIAO/docs/static_ciao_index.html
@@ -0,0 +1,23 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>New Page 1</title>
+<!-- $Id$ -->
+
+</head>
+
+<frameset cols="294,*">
+ <frame name="contents" target="main" src="static_ciao_toc.html">
+ <frame name="main" src="static_ciao_contents.html" target="main">
+ <noframes>
+ <body>
+
+ <p>This page uses frames, but your browser doesn't support them.</p>
+
+ </body>
+ </noframes>
+</frameset>
+
+</html>
diff --git a/modules/CIAO/docs/static_ciao_toc.html b/modules/CIAO/docs/static_ciao_toc.html
new file mode 100755
index 00000000000..35adb51ec1c
--- /dev/null
+++ b/modules/CIAO/docs/static_ciao_toc.html
@@ -0,0 +1,26 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+ <title>CIAO Static Configuration</title>
+ <base target="contents">
+<!-- $Id$ -->
+</head>
+<body>
+<h3 align="center">CIAO Static Configuration Documentation </h3>
+
+<ol>
+
+<li><a target="main" href="static_ciao_contents.html#intro">Introduction</a></li>
+<li><a target="main" href="static_ciao_contents.html#currentarch">Current CIAO Configuration
+Architecture</a></li>
+<li><a target="main" href="static_ciao_contents.html#staticapproach">Static Configuration
+Approach</a></li>
+<li><a target="main" href="static_ciao_contents.html#status">Status of CIAO Static Configuration</a><br>
+<a target="main" href="static_ciao_contents.html#Example">Example</a></li>
+<li><a target="main" href="static_ciao_contents.html#futurework">Future work</a></li>
+</ol>
+</body>
+</html>
diff --git a/modules/CIAO/docs/static_config_example.html b/modules/CIAO/docs/static_config_example.html
new file mode 100644
index 00000000000..5e8c806e2cd
--- /dev/null
+++ b/modules/CIAO/docs/static_config_example.html
@@ -0,0 +1,1353 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR"
+ content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>BasicSP example using CIAO Static Configurator</title>
+<!-- $Id$ -->
+</head>
+<body>
+This example illustrates
+how to use the CIAO static configurator for building applications
+statically.
+For an example using RTCORBA policies, see <a
+ href="static_config_rtexample.html">BasicSP with RTCORBA extensions</a>.
+From the <a href="../examples/OEP/BasicSP">BasicSP</a> directory do
+the
+following.
+<p><b><tt>&gt; cd descriptors</tt></b>
+<br>
+<b><tt>&gt; $CIAO_ROOT/tools/static_configurator/Static_Assembly_Parser
+-a BasicSP.cad</tt></b>
+</p>
+<p>The following files are generated -
+</p>
+<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a>
+<br>
+<a href="#Static_CCM_App.cpp">Static_CCM_App.cpp</a>
+<br>
+<a href="#Static_CCM_App.mpc">Static_CCM_App.mpc</a>
+</p>
+<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a>
+contains
+the intermediate representation of all the parsed component and
+assembly
+information obtained from the XML files. <a href="#Static_CCM_App.cpp">Static_CCM_App.cpp</a>&nbsp;
+contains the main driver application. Here a runtime <a
+ href="#static%20config%20engine">static
+configuration engine</a> is used to create containers, homes,
+components,
+etc and then establish necessary connections between the components. In
+the BasicSP example, an external controller&nbsp; (see <tt><a
+ href="../examples/OEP/BasicSP/README">$CIAO_ROOT/examples/OEP/BasicSP/README</a></tt>)
+is used to start or stop a pulser. The generated main driver
+application
+(Static_CCM_App.cpp) is <a href="#Modified%20Static_CCM_App.cpp">modified</a>
+to add code to trigger the pulser object on. The generated .mpc file is
+<a href="#Modified%20Static_CCM_App.mpc">modified</a>
+to add all other necessary files so that the application can be built
+statically.
+Note that the static configurator only generates only certain file
+names
+in the .mpc file. These filenames are obtained from the XML descriptor
+files. All other necessary files have to be added manually as
+indicated.
+</p>
+<p>Now the static build files can be generated by running the mpc
+utility.
+</p>
+<p><b><tt>&gt; cd ..</tt></b>
+<br>
+<b><tt>&gt; $ACE_ROOT/bin/mpc -static Static_CCM_App.mpc</tt></b>
+</p>
+<p><a name="Static_Assembly_Config.h"></a><b><u>Static_Assembly_Config.h</u></b>
+<br>
+<tt><font color="#3333ff">#include "Static_Assembly.h"</font></tt>
+</p>
+<p><tt><font color="#3333ff">#include "CCM_ContainerC.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "Container_Base.h"</font></tt>
+</p>
+<p><tt><font color="#3333ff">//Containers</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Static_Config::ContainerAttributes
+containers_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"", 0}</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">extern "C"
+::Components::HomeExecutorBase_ptr
+createECHome_Impl (void);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::PortableServer::Servant
+createECHome_Servant</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; (::Components::HomeExecutorBase_ptr
+p,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ::CIAO::Session_Container *c</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr
+createBMDeviceHome_Impl (void);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::PortableServer::Servant
+createBMDeviceHome_Servant</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; (::Components::HomeExecutorBase_ptr
+p,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ::CIAO::Session_Container *c</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr
+createBMClosedEDHome_Impl (void);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::PortableServer::Servant
+createBMClosedEDHome_Servant</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; (::Components::HomeExecutorBase_ptr
+p,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ::CIAO::Session_Container *c</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr
+createBMDisplayHome_Impl (void);</font></tt>
+<br>
+<tt><font color="#3333ff">extern "C" ::PortableServer::Servant
+createBMDisplayHome_Servant</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; (::Components::HomeExecutorBase_ptr
+p,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ::CIAO::Session_Container *c</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt>
+<br>
+<tt><font color="#3333ff">//Homes</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Static_Config::HomeAttributes
+homes_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_ECHome",
+"DCE:3148F760-F2ED-4204-A775-6B972C10E8CB",
+"createECHome_Impl", createECHome_Impl,
+"DCE:75309233-0E0A-4cfb-B186-3E99F69B1D40",
+"createECHome_Servant", createECHome_Servant, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMDeviceHome",
+"DCE:82C2B032-37F0-4315-A59F-7020D3264E4D",
+"createBMDeviceHome_Impl", createBMDeviceHome_Impl,
+"DCE:93D254CF-9538-44e8-BB98-AABCD134ADD3",
+"createBMDeviceHome_Servant", createBMDeviceHome_Servant, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMClosedEDHome",
+"DCE:8E6C468D-A39F-46b4-962B-265F1AA8D538",
+"createBMClosedEDHome_Impl", createBMClosedEDHome_Impl,
+"DCE:CDC06FCA-50FC-43ca-8ECC-BEFBD33FEE78",
+"createBMClosedEDHome_Servant", createBMClosedEDHome_Servant, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMDisplayHome",
+"DCE:8E92655E-CA07-46C8-B127-0F0872A8CC29",
+"createBMDisplayHome_Impl", createBMDisplayHome_Impl,
+"DCE:D7984625-8561-431d-9927-4E498B317C02",
+"createBMDisplayHome_Servant", createBMDisplayHome_Servant, 0, 0 }</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">//Components</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Static_Config::ComponentAttributes
+components_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_EC", 0, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMDevice", -1, -1, 1 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMClosedED", -1, -1, 2 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{"a_BMDisplay", -1, -1, 3 }</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">//Component Registrations</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Assembly_Placement::componentinstantiation::Register_Info
+component_registrations_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Placement::componentinstantiation::COMPONENT,
+CIAO::Assembly_Placement::componentinstantiation::IORFILE, "", "ec.ior"
+}</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">//Connections</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Static_Config::ConnectionAttributes
+connections_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::PUBLISHER_CONSUMER,
+"", "timeout", 0, 1, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::PUBLISHER_CONSUMER,
+"", "data_available", 3, 4, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::PUBLISHER_CONSUMER,
+"", "out_avail", 6, 7, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::INTERFACE,
+"", "datain", 9, 10, 0, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::INTERFACE,
+"", "comp_data", 12, 13, 0, 0 }</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">//Resolver Infos</font></tt>
+<br>
+<tt><font color="#3333ff">CIAO::Static_Config::ResolveInfoAttributes
+resolvers_table_[]=</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_EC", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::CONSUMER,
+"timeout", 2, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMDevice", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMDevice", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::CONSUMER,
+"in_avail", 5, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMClosedED", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMClosedED", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::CONSUMER,
+"data_ready", 8, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMDisplay", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMClosedED", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::PROVIDER,
+"data_read", 11, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMDevice", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMDisplay", -1, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::PROVIDER,
+"dataout", 14, 0 },</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;{CIAO::Assembly_Connection::COMP_IDREF,
+"a_BMClosedED", -1, 0 }</font></tt>
+<br>
+<tt><font color="#3333ff">};</font></tt>
+</p>
+<p><a name="Static_CCM_App.cpp"></a><b><u>Static_CCM_App.cpp</u></b>
+<br>
+<tt><font color="#3333ff">#include "ComponentServer_Impl.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "CIAO_ServersC.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "Server_init.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "Static_Configurator.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "ace/SString.h"</font></tt>
+<br>
+<tt><font color="#3333ff">#include "ace/Get_Opt.h"</font></tt>
+</p>
+<p><tt><font color="#3333ff">#include "Static_Assembly_Config.h"</font></tt>
+</p>
+<p><tt><font color="#3333ff">char *ior_file_name_ = "comp_serv.ior";</font></tt>
+</p>
+<p><tt><font color="#3333ff">int</font></tt>
+<br>
+<tt><font color="#3333ff">parse_args (int argc, char *argv[])</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_Get_Opt get_opts (argc, argv,
+"k:o:");</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; int c;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp; while ((c = get_opts ()) != -1)</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; switch (c)</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case
+'o':&nbsp;
+// get the file name to write to</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ior_file_name_
+= get_opts.opt_arg ();</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case
+'?':&nbsp;
+// display help for use of the server.</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"usage:&nbsp; %s\n"</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"-o &lt;ior_output_file&gt;\n"</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"\n",</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv [0]),</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp; return 0;</font></tt>
+<br>
+<tt><font color="#3333ff">}</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">int</font></tt>
+<br>
+<tt><font color="#3333ff">main (int argc, char *argv[])</font></tt>
+<br>
+<tt><font color="#3333ff">{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_TRY_NEW_ENV</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; {</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Initialize
+orb</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::ORB_var
+orb = CORBA::ORB_init (argc,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Server_init
+(orb.in ());</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
+(parse_args
+(argc, argv) != 0)</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+return -1;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get
+reference
+to Root POA.</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::Object_var
+obj</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= orb-&gt;resolve_initial_references ("RootPOA"</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::POA_var
+poa</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= PortableServer::POA::_narrow (obj.in ()</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Activate
+POA manager</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::POAManager_var
+mgr</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= poa-&gt;the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+mgr-&gt;activate
+(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::ComponentServer_Impl
+*comserv_servant;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Static_Configurator
+configurator;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+containers_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+homes_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof (homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+components_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+component_registrations_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+connections_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+resolvers_table_size
+=</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::HOMECREATOR_FUNCPTR_MAP
+home_creator_fptr_map;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP
+homesvnt_creator_fptr_map;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Static_Config_EntryPoints_Maps
+maps;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maps.home_creator_funcptr_map_
+= &amp;home_creator_fptr_map;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maps.home_servant_creator_funcptr_map_
+= &amp;homesvnt_creator_fptr_map;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=0;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0;
+i&lt;homes_table_size; ++i)</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+{</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+home_creator_fptr_map.bind (homes_table_[i].executor_entrypt_,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].executor_fptr_);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homesvnt_creator_fptr_map.bind (homes_table_[i].servant_entrypt_,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].servant_fptr_);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+}</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_NEW_RETURN
+(comserv_servant,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::ComponentServer_Impl (orb.in (),</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+poa.in (),</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&amp;maps),</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::ServantBase_var
+safe_servant (comserv_servant);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::ConfigValues
+configs;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_servant-&gt;init
+(configs</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+Configuring
+ComponentServer.</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::ObjectId_var
+cs_oid</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= poa-&gt;activate_object (comserv_servant</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj =
+poa-&gt;id_to_reference
+(cs_oid.in ()</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer_var
+comserv_obj =</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer::_narrow (obj.in ()</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
+(CORBA::is_nil
+(comserv_obj.in ()))</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR, "Unable to activate ComponentServer
+object\n"),
+-1);</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ServerActivator_var
+activator;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::ConfigValues_var
+config = new Components::ConfigValues;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_servant-&gt;set_objref
+(activator.in (),</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+config,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in ()</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</font></tt>
+</p>
+<p><a name="static config engine"></a><tt><font color="#ff0000">configurator.configure
+(orb.in (),</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in (),</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_size,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_size,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_size,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_size,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_size,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_,</font></tt>
+<br>
+<tt><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_size);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::String_var
+str = orb-&gt;object_to_string (comserv_obj.in ()</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Utility::write_IOR
+(ior_file_name_, str.in ());</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_DEBUG
+((LM_INFO, "ComponentServer IOR: %s\n", str.in ()));</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_DEBUG
+((LM_DEBUG,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"Running ComponentServer...\n"));</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Run the
+main event loop for the ORB.</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orb-&gt;run
+(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; }</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_CATCHANY</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; {</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_PRINT_EXCEPTION
+(ACE_ANY_EXCEPTION,</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"server::main \n");</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; }</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp; ACE_ENDTRY;</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp; return 0;</font></tt>
+<br>
+<tt><font color="#3333ff">}</font></tt>
+</p>
+<p><a name="Static_CCM_App.mpc"></a><b><u>Static_CCM_App.mpc</u></b>
+<br>
+<tt><font color="#3333ff">project(Static_CCM_App) : ciao_server,
+ciao_client,
+rtcorba, rtportableserver, iortable, acexml {</font></tt>
+<br>
+<tt><font color="#3333ff">includes +=
+$(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer</font></tt>
+<br>
+<tt><font color="#3333ff">includes +=
+$(ACE_ROOT)/TAO/CIAO/tools/static_configurator</font></tt>
+<br>
+<tt><font color="#3333ff">libs += CIAO_XML_Helpers Static_Configurator</font></tt>
+<br>
+<tt><font color="#3333ff">after += CIAO_XML_Helpers Static_Configurator</font></tt>
+<br>
+&nbsp;
+</p>
+<p><tt><font color="#3333ff">libs += EC_exec</font></tt>
+<br>
+<tt><font color="#3333ff">after += EC_exec</font></tt>
+<br>
+<tt><font color="#3333ff">libs += EC_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">after += EC_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMDevice_exec</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMDevice_exec</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMDevice_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMDevice_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMClosedED_exec</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMClosedED_exec</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMClosedED_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMClosedED_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMDisplay_exec</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMDisplay_exec</font></tt>
+<br>
+<tt><font color="#3333ff">libs += BMDisplay_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">after += BMDisplay_svnt</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp; Source_Files {</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Static_CCM_App.cpp</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; }</font></tt>
+</p>
+<p><tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; IDL_Files {</font></tt>
+<br>
+<tt><font color="#3333ff">&nbsp;&nbsp;&nbsp; }</font></tt>
+<br>
+<tt><font color="#3333ff">}</font></tt>
+</p>
+<p><a name="Modified Static_CCM_App.cpp"></a><b><u>Modified
+Static_CCM_App.cpp</u></b> <br>
+</p>
+<p><small><span style="font-weight: bold;">(Highlighted text is
+manually added to the
+generated .cpp file)<br>
+<br>
+</span></small><tt>#include "ComponentServer_Impl.h"</tt>
+<br>
+<tt>#include "CIAO_ServersC.h"</tt>
+<br>
+<tt>#include "Server_init.h"</tt>
+<br>
+<tt>#include "Static_Configurator.h"</tt>
+<br>
+<tt>#include "ace/SString.h"</tt>
+<br>
+<tt>#include "ace/Get_Opt.h"</tt>
+</p>
+<p><tt>#include "Static_Assembly_Config.h"</tt>
+</p>
+<p><tt>char *ior_file_name_ = "comp_serv.ior";</tt>
+<br>
+<b><tt><font color="#990000">int rate = 2;</font></tt></b>
+</p>
+<p><tt>int</tt>
+<br>
+<tt>parse_args (int argc, char *argv[])</tt>
+<br>
+<tt>{</tt>
+<br>
+<tt>&nbsp; ACE_Get_Opt get_opts (argc, argv, "k:o:");</tt>
+<br>
+<tt>&nbsp; int c;</tt>
+</p>
+<p><tt>&nbsp; while ((c = get_opts ()) != -1)</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; switch (c)</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'o':&nbsp; // get the file
+name to write to</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ior_file_name_ =
+get_opts.opt_arg
+();</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '?':&nbsp; // display help
+for
+use of the server.</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_ERROR_RETURN
+((LM_ERROR,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"usage:&nbsp; %s\n"</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"-o &lt;ior_output_file&gt;\n"</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"\n",</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv [0]),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
+</p>
+<p><tt>&nbsp; return 0;</tt>
+<br>
+<tt>}</tt>
+<br>
+&nbsp;
+</p>
+<p><tt>int</tt>
+<br>
+<tt>main (int argc, char *argv[])</tt>
+<br>
+<tt>{</tt>
+<br>
+<tt>&nbsp; ACE_TRY_NEW_ENV</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Initialize orb</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::ORB_var orb = CORBA::ORB_init
+(argc,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::Server_init (orb.in ());</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (parse_args (argc, argv) != 0)</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get reference to Root POA.</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::Object_var obj</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
+orb-&gt;resolve_initial_references
+("RootPOA"</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::POA_var poa</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
+PortableServer::POA::_narrow
+(obj.in ()</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Activate POA manager</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::POAManager_var mgr</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = poa-&gt;the_POAManager
+(ACE_ENV_SINGLE_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mgr-&gt;activate
+(ACE_ENV_SINGLE_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::ComponentServer_Impl
+*comserv_servant;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::Static_Configurator
+configurator;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int containers_table_size =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int homes_table_size =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int components_table_size =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int
+component_registrations_table_size
+=</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int connections_table_size =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int resolvers_table_size =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof
+(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::HOMECREATOR_FUNCPTR_MAP
+home_creator_fptr_map;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP
+homesvnt_creator_fptr_map;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::Static_Config_EntryPoints_Maps
+maps;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maps.home_creator_funcptr_map_ =
+&amp;home_creator_fptr_map;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maps.home_servant_creator_funcptr_map_
+= &amp;homesvnt_creator_fptr_map;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=0;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0; i&lt;homes_table_size;
+++i)</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+home_creator_fptr_map.bind
+(homes_table_[i].executor_entrypt_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].executor_fptr_);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homesvnt_creator_fptr_map.bind
+(homes_table_[i].servant_entrypt_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].servant_fptr_);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_NEW_RETURN (comserv_servant,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::ComponentServer_Impl (orb.in (),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+poa.in (),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&amp;maps),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::ServantBase_var
+safe_servant
+(comserv_servant);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Components::ConfigValues configs;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comserv_servant-&gt;init (configs</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Configuring ComponentServer.</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::ObjectId_var cs_oid</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
+poa-&gt;activate_object
+(comserv_servant</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj = poa-&gt;id_to_reference
+(cs_oid.in
+()</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer_var
+comserv_obj =</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer::_narrow
+(obj.in ()</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CORBA::is_nil (comserv_obj.in
+()))</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_ERROR_RETURN
+((LM_ERROR,
+"Unable to activate ComponentServer object\n"), -1);</tt>
+<br>
+&nbsp;
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ServerActivator_var
+activator;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Components::ConfigValues_var config
+= new Components::ConfigValues;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comserv_servant-&gt;set_objref
+(activator.in
+(),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+config,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in ()</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK;</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configurator.configure (orb.in (),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in (),</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_size,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_size,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_size,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_size,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_size,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_size);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::String_var str =
+orb-&gt;object_to_string
+(comserv_obj.in ()</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CIAO::Utility::write_IOR
+(ior_file_name_,
+str.in ());</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_DEBUG ((LM_INFO,
+"ComponentServer
+IOR: %s\n", str.in ()));</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_DEBUG ((LM_DEBUG,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"Running ComponentServer...\n"));</tt>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::Object_var
+pulser_obj</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= orb-&gt;string_to_object ("file://ec.ior"</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+BasicSP::EC_var
+pulser</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= BasicSP::EC::_narrow (pulser_obj.in ()</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
+(CORBA::is_nil
+(pulser.in ()))</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'EC' objref\n"), -1);</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+pulser-&gt;hertz
+(rate</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_DEBUG
+((LM_DEBUG, "Start up the Event services\n"));</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+pulser-&gt;start
+(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Run the main event loop for
+the
+ORB.</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orb-&gt;run
+(ACE_ENV_SINGLE_ARG_PARAMETER);</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_TRY_CHECK</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br>
+<tt>&nbsp; ACE_CATCHANY</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_PRINT_EXCEPTION
+(ACE_ANY_EXCEPTION,</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"server::main \n");</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br>
+<tt>&nbsp; ACE_ENDTRY;</tt>
+</p>
+<p><tt>&nbsp; return 0;</tt>
+<br>
+<tt>}</tt>
+</p>
+<p><a name="Modified Static_CCM_App.mpc"></a><b><u>Modified
+Static_CCM_App.mpc</u></b> <br>
+</p>
+<p><small><span style="font-weight: bold;">(Highlighted text is
+manually added to the
+generated .cpp file)<br>
+<br>
+</span></small><tt>project(Static_CCM_App) : ciao_server, ciao_client,
+rtcorba,
+rtportableserver,
+iortable, acexml {</tt>
+<br>
+<tt>includes += $(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer</tt>
+<br>
+<tt>includes += $(ACE_ROOT)/TAO/CIAO/tools/static_configurator</tt>
+<br>
+<tt>libs += CIAO_XML_Helpers Static_Configurator</tt>
+<br>
+<tt>after += CIAO_XML_Helpers Static_Configurator</tt>
+</p>
+<p><b><tt><font color="#990000">libs += BasicSP_stub BasicSP_svnt</font></tt></b>
+<br>
+<b><tt><font color="#990000">after += BasicSP_stub BasicSP_svnt</font></tt></b>
+<br>
+<tt>libs += EC_exec</tt>
+<br>
+<tt>after += EC_exec</tt>
+<br>
+<tt>libs += EC_svnt <b><font color="#990000">EC_stub</font></b></tt>
+<br>
+<tt>after += EC_svnt <b><font color="#990000">EC_stub</font></b></tt>
+<br>
+<tt>libs += BMDevice_exec</tt>
+<br>
+<tt>after += BMDevice_exec</tt>
+<br>
+<tt>libs += BMDevice_svnt <b><font color="#990000">BMDevice_stub</font></b></tt>
+<br>
+<tt>after += BMDevice_svnt <b><font color="#990000">BMDevice_stub</font></b></tt>
+<br>
+<tt>libs += BMClosedED_exec</tt>
+<br>
+<tt>after += BMClosedED_exec</tt>
+<br>
+<tt>libs += BMClosedED_svnt <b><font color="#990000">BMClosedED_stub</font></b></tt>
+<br>
+<tt>after += BMClosedED_svnt <b><font color="#990000">BMClosedED_stub</font></b></tt>
+<br>
+<tt>libs += BMDisplay_exec</tt>
+<br>
+<tt>after += BMDisplay_exec</tt>
+<br>
+<tt>libs += BMDisplay_svnt <b><font color="#990000">BMDisplay_stub</font></b></tt>
+<br>
+<tt>after += BMDisplay_svnt <b><font color="#990000">BMDisplay_stub</font></b></tt>
+</p>
+<p><tt>&nbsp;&nbsp; Source_Files {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Static_CCM_App.cpp</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; }</tt>
+</p>
+<p><tt>&nbsp;&nbsp;&nbsp; IDL_Files {</tt>
+<br>
+<tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br>
+<tt>}</tt>
+<br>
+&nbsp;
+</p>
+</body>
+</html>
diff --git a/modules/CIAO/docs/static_config_rtexample.html b/modules/CIAO/docs/static_config_rtexample.html
new file mode 100644
index 00000000000..2e87e5aabe1
--- /dev/null
+++ b/modules/CIAO/docs/static_config_rtexample.html
@@ -0,0 +1,1079 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR"
+ content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>BasicSP example using CIAO Static Configurator</title>
+<!-- $Id$ -->
+</head>
+<body>
+This example illustrates
+how to use the CIAO static configurator to build applications using
+RTCORBA policies statically.
+From the <a href="../examples/OEP/BasicSP">BasicSP</a> directory do
+the
+following.
+<p><b><tt>&gt; cd descriptors</tt></b>
+<br>
+<b><tt>&gt; $CIAO_ROOT/tools/static_configurator/Static_Assembly_Parser
+-a BasicSP-rt.cad</tt></b>
+</p>
+<p>The following files are generated -
+</p>
+<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a>
+<br>
+<a href="#Modified%20Static_CCM_App.cpp">Static_CCM_App.cpp</a>
+<br>
+<a href="#Modified%20Static_CCM_App.mpc">Static_CCM_App.mpc</a>
+</p>
+<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a>
+contains
+the intermediate representation of all the parsed component and
+assembly
+information obtained from the XML files. <a href="#Static_CCM_App.cpp">Static_CCM_App.cpp</a>&nbsp;
+contains the main driver application. Here a runtime <a
+ href="#static_config_engine">static
+configuration engine</a> is used to create containers, homes,
+components,
+etc and then establish necessary connections between the components.
+The configuration engine is also used to <a href="#rtconfig">configure</a>
+the containers and RTORB with the appropriate RTCORBA policies
+specified declaratively in the .rtcad file. In
+the BasicSP example, an external controller&nbsp; (see <tt><a
+ href="../examples/OEP/BasicSP/README">$CIAO_ROOT/examples/OEP/BasicSP/README</a></tt>)
+is used to start or stop a pulser. The generated main driver
+application
+(Static_CCM_App.cpp) is <a href="#Modified%20Static_CCM_App.cpp">modified</a>
+to add code to trigger the pulser object on. The generated .mpc file is
+<a href="#Modified%20Static_CCM_App.mpc">modified</a>
+to add all other necessary files so that the application can be built
+statically.
+Note that the static configurator only generates only certain file
+names
+in the .mpc file. These filenames are obtained from the XML descriptor
+files. All other necessary files have to be added manually as
+indicated.
+</p>
+<p>Now the static build files can be generated by running the mpc
+utility.
+</p>
+<p><b><tt>&gt; cd ..</tt></b>
+<br>
+<b><tt>&gt; $ACE_ROOT/bin/mpc -static Static_CCM_App.mpc</tt></b>
+</p>
+<p><a name="Static_Assembly_Config.h"></a><b><u>Static_Assembly_Config.h</u></b>
+<br>
+<span style="font-family: monospace;">#include "Static_Assembly.h"</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">#include "CCM_ContainerC.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "Container_Base.h"</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Containers</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ContainerAttributes
+containers_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"POLICY_1",
+0},</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"", 0}</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::Components::HomeExecutorBase_ptr createECHome_Impl (void);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::PortableServer::Servant createECHome_Servant </span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; (::Components::HomeExecutorBase_ptr p,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ::CIAO::Session_Container *c</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::Components::HomeExecutorBase_ptr createBMDeviceHome_Impl (void);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::PortableServer::Servant createBMDeviceHome_Servant </span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; (::Components::HomeExecutorBase_ptr p,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ::CIAO::Session_Container *c</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::Components::HomeExecutorBase_ptr createBMClosedEDHome_Impl (void);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::PortableServer::Servant createBMClosedEDHome_Servant </span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; (::Components::HomeExecutorBase_ptr p,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ::CIAO::Session_Container *c</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::Components::HomeExecutorBase_ptr createBMDisplayHome_Impl (void);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">extern "C"
+::PortableServer::Servant createBMDisplayHome_Servant </span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; (::Components::HomeExecutorBase_ptr p,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ::CIAO::Session_Container *c</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ACE_ENV_ARG_DECL_WITH_DEFAULTS);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">//Homes</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::HomeAttributes
+homes_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"a_ECHome",
+"DCE:3148F760-F2ED-4204-A775-6B972C10E8CB", "createECHome_Impl",
+createECHome_Impl, "DCE:75309233-0E0A-4cfb-B186-3E99F69B1D40",
+"createECHome_Servant", createECHome_Servant, 0, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"a_BMDeviceHome", "DCE:82C2B032-37F0-4315-A59F-7020D3264E4D",
+"createBMDeviceHome_Impl", createBMDeviceHome_Impl,
+"DCE:93D254CF-9538-44e8-BB98-AABCD134ADD3",
+"createBMDeviceHome_Servant", createBMDeviceHome_Servant, 0, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"a_BMClosedEDHome", "DCE:8E6C468D-A39F-46b4-962B-265F1AA8D538",
+"createBMClosedEDHome_Impl", createBMClosedEDHome_Impl,
+"DCE:CDC06FCA-50FC-43ca-8ECC-BEFBD33FEE78",
+"createBMClosedEDHome_Servant", createBMClosedEDHome_Servant, 0, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"a_BMDisplayHome", "DCE:8E92655E-CA07-46C8-B127-0F0872A8CC29",
+"createBMDisplayHome_Impl", createBMDisplayHome_Impl,
+"DCE:D7984625-8561-431d-9927-4E498B317C02",
+"createBMDisplayHome_Servant", createBMDisplayHome_Servant, 1, 0 }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Components</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ComponentAttributes
+components_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"a_EC", 0, 0,
+0 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"a_BMDevice",
+-1, -1, 1 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"a_BMClosedED", -1, -1, 2 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"a_BMDisplay", -1, -1, 3 }</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Component Registrations</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Assembly_Placement::componentinstantiation::Register_Info
+component_registrations_table_[]= </span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Placement::componentinstantiation::COMPONENT,
+CIAO::Assembly_Placement::componentinstantiation::IORFILE, "", "ec.ior"
+}</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Connections</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ConnectionAttributes
+connections_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "timeout", 0, 1, 0,
+0 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "data_available",
+3, 4, 0, 0 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::PUBLISHER_CONSUMER, "", "out_avail", 6, 7,
+0, 0 },</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::INTERFACE, "", "datain", 9, 10, 0, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::INTERFACE, "", "comp_data", 12, 13, 0, 0 }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Resolver Infos</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ResolveInfoAttributes
+resolvers_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_EC", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::CONSUMER, "timeout", 2, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::CONSUMER, "in_avail", 5, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::CONSUMER, "data_ready", 8, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDisplay", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::PROVIDER, "data_read", 11, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDevice", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMDisplay", -1, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::PROVIDER, "dataout", 14, 0 },</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{CIAO::Assembly_Connection::COMP_IDREF, "a_BMClosedED", -1, 0 }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Thread Pool</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ThreadPoolAttributes
+thread_pool_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"common_pool", 0, 10, 20, 1, 0, 0, 0},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"high_prio_pool", 0, 2, 2, 3, 0, 0, 0}</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Lanes</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::LaneAttributes
+lane_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {1, 100, 300},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {2, 2, 2},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {3, 1, 2},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {1, 10, 30},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {2, 3, 3},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {3, 1, 2}</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//ThreadPoolLanes</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::ThreadPoolLanesAttributes
+thread_pool_lanes_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"shared_pool", 0, 0, 2, 0, 0, 0, 0},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"laned_pool",
+0, 3, 5, 0, 0, 0, 0}</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Bands</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::BandAttributes
+band_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {1, 1},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {2, 2},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {3, 3000}</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//PriorityBands</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::PriorityBandsAttributes
+priority_band_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{"common_conn", 0, 2}</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Policy Configs</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::PolicyConfigAttributes
+policy_config_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{RTCORBA::PRIORITY_MODEL_POLICY_TYPE, "", RTCORBA::SERVER_DECLARED, 2},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{RTCORBA::THREADPOOL_POLICY_TYPE, "shared_pool", /*dummy variable*/
+RTCORBA::CLIENT_PROPAGATED, 0},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{RTCORBA::PRIORITY_BANDED_CONNECTION_POLICY_TYPE, "common_conn",
+/*dummy variable*/ RTCORBA::CLIENT_PROPAGATED, 0},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{RTCORBA::THREADPOOL_POLICY_TYPE, "common_pool", /*dummy variable*/
+RTCORBA::CLIENT_PROPAGATED, 0},</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
+{RTCORBA::PRIORITY_MODEL_POLICY_TYPE, "", RTCORBA::CLIENT_PROPAGATED, 2}</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">//Policy Set</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">CIAO::Static_Config::PolicySetAttributes&nbsp;
+policy_set_table_[]= </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"POLICY_1",
+0, 2},</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {"POLICY_2",
+3, 4}</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">};</span><br>
+<br>
+<tt><font color="#3333ff"></font></tt></p>
+<tt><font color="#3333ff"></font></tt><a
+ name="Modified Static_CCM_App.cpp"></a><b><u>Modified
+Static_CCM_App.cpp</u></b> <br>
+<p><span style="font-family: monospace;"></span><small><span
+ style="font-weight: bold;">(Highlighted text is manually added to the
+generated .cpp file)</span></small></p>
+<p><span style="font-family: monospace;">#include "RTServer_Impl.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "CIAO_ServersC.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "Server_init.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "Static_Configurator.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "ace/SString.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include "ace/Get_Opt.h"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">#include
+"Static_Assembly_Config.h"</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">#include
+"tao/RTPortableServer/RTPortableServer.h"</span><br
+ style="font-family: monospace;">
+<span
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">#include
+"EC/ECC.h"</span><br
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">char *ior_file_name_ =
+"comp_serv.ior"; </span><br style="font-family: monospace;">
+<span
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">int
+rate = 2;</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">int</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">parse_args (int argc, char
+*argv[])</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; ACE_Get_Opt get_opts
+(argc, argv, "k:o:");</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; int c;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; while ((c = get_opts ())
+!= -1)</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; switch (c)</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; {</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; case
+'o':&nbsp; // get the file name to write to</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ior_file_name_ = get_opts.opt_arg ();</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; break;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; case
+'?':&nbsp; // display help for use of the server.</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; default:</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR,</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"usage:&nbsp; %s\n"</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"-o &lt;ior_output_file&gt;\n"</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"\n",</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv [0]),</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; }</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; return 0;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">}</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">int</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">main (int argc, char *argv[])</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;ACE_TRY_NEW_ENV</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; //
+Initialize orb</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::ORB_var orb = CORBA::ORB_init (argc,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+argv</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Server_init (orb.in ());</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; if
+(parse_args (argc, argv) != 0)</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+return -1;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+Get reference to Root POA.</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::Object_var object =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+orb-&gt;resolve_initial_references ("RootPOA"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::POA_var root_poa =</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::POA::_narrow (object.in ()</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; ACE_ENV_ARG_PARAMETER);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; // Get
+reference to RTORB.</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+object =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+orb-&gt;resolve_initial_references ("RTORB"</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+RTCORBA::RTORB_var rt_orb =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+RTCORBA::RTORB::_narrow (object.in ()</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+Activate POA manager</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::POAManager_var poa_manager =</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+root_poa-&gt;the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><small><span style="font-weight: bold;">(Highlighted
+files are manually added to the generated mpc file)</span></small><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+poa_manager-&gt;activate (ACE_ENV_SINGLE_ARG_PARAMETER);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::RTServer::RTComponentServer_Impl *comserv_servant;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Static_Configurator configurator;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int containers_table_size =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int homes_table_size =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof (homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int components_table_size =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int component_registrations_table_size =</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int connections_table_size =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int resolvers_table_size =</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof
+(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int thread_pool_table_size=</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof(thread_pool_table_)/sizeof(CIAO::Static_Config::ThreadPoolAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int thread_pool_lanes_table_size=</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof(thread_pool_lanes_table_)/sizeof(CIAO::Static_Config::ThreadPoolLanesAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int priority_band_table_size=</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof(priority_band_table_)/sizeof(CIAO::Static_Config::PriorityBandsAttributes);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int policy_set_table_size=</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+sizeof(policy_set_table_)/sizeof(CIAO::Static_Config::PolicySetAttributes);</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Static_Config_EntryPoints_Maps maps;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maps.home_creator_funcptr_map_ = &amp;home_creator_fptr_map;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+maps.home_servant_creator_funcptr_map_ = &amp;homesvnt_creator_fptr_map;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+int i=0;</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+for (i=0; i&lt;homes_table_size; ++i)</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+{</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+home_creator_fptr_map.bind (homes_table_[i].executor_entrypt_,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].executor_fptr_);</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homesvnt_creator_fptr_map.bind (homes_table_[i].servant_entrypt_,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_[i].servant_fptr_);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+}</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_NEW_RETURN (comserv_servant,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::RTServer::RTComponentServer_Impl (orb.in (),</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+rt_orb.in (),</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+root_poa.in (),</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+1, </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&amp;maps), </span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::ServantBase_var safe_servant
+(comserv_servant);&nbsp;&nbsp; </span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::ConfigValues configs;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<span style="color: rgb(255, 0, 0);"><a name="rtconfig"></a>configurator.config_rt_info(configs,
+</span></span><br style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+thread_pool_table_, </span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+thread_pool_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+lane_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+thread_pool_lanes_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+thread_pool_lanes_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+band_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+priority_band_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+priority_band_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+policy_config_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+policy_set_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+policy_set_table_size);</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_servant-&gt;init (configs</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; //
+Configuring ComponentServer.</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+PortableServer::ObjectId_var cs_oid</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= root_poa-&gt;activate_object (comserv_servant</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK; </span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; object =
+root_poa-&gt;id_to_reference (cs_oid.in ()</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer_var comserv_obj =</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ComponentServer::_narrow (object.in ()</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp; if
+(CORBA::is_nil (comserv_obj.in ()))</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR,</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"Unable to activate RTComponentServer object\n"),</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-1);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::Deployment::ServerActivator_var activator;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+We are just storing the original configuration here.</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+Currently, we don't really use this ConfigValues direclty.</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Components::ConfigValues_var more_config = new Components::ConfigValues;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_servant-&gt;set_objref (activator.in (),</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+more_config.in (),</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in ()</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a name="static_config_engine"></a><span style="color: rgb(255, 0, 0);">configurator.configure
+(orb.in (),</span></span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+comserv_obj.in (),</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+containers_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+homes_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+components_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+component_registrations_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connections_table_size,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_,</span><br
+ style="font-family: monospace; color: rgb(255, 0, 0);">
+<span style="font-family: monospace; color: rgb(255, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+resolvers_table_size);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::String_var str = orb-&gt;object_to_string (comserv_obj.in ()</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</span><br style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CIAO::Utility::write_IOR (ior_file_name_, str.in ());</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_DEBUG ((LM_INFO, "RTComponentServer IOR: %s\n", str.in ()));</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_DEBUG ((LM_DEBUG,</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"Running RTComponentServer...\n"));</span><br
+ style="font-family: monospace;">
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CORBA::Object_var
+pulser_obj</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= orb-&gt;string_to_object ("file://ec.ior"</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+BasicSP::EC_var
+pulser</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+= BasicSP::EC::_narrow (pulser_obj.in ()</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
+(CORBA::is_nil
+(pulser.in ()))</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'EC' objref\n"), -1);</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+pulser-&gt;hertz
+(rate</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_ENV_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_DEBUG
+((LM_DEBUG, "Start up the Event services\n"));</font></tt></b>
+</p>
+<p><b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+pulser-&gt;start
+(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt></b>
+<br>
+<b><tt><font color="#990000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK;</font></tt></b>
+</p>
+<p><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
+Run the main event loop for the ORB.</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+orb-&gt;run (ACE_ENV_SINGLE_ARG_PARAMETER);</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_TRY_CHECK</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp; ACE_CATCHANY</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp; {</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"server::main&nbsp;&nbsp;&nbsp; \n");</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+return 1;</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp; }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; ACE_ENDTRY;</span><br
+ style="font-family: monospace;">
+<br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp; return 0;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">}</span><br>
+<tt></tt></p>
+<a name="Modified Static_CCM_App.mpc"></a><b><u>Modified
+Static_CCM_App.mpc</u></b>
+<br>
+<small><span style="font-weight: bold;"><br>
+(Highlighted files are manually added to the generated mpc file)</span></small><br>
+<tt></tt><span style="font-family: monospace;"><br>
+project(Static_CCM_App) :&nbsp; ciao_server, ciao_client, rtcorba,
+rtportableserver, iortable, acexml{</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">includes +=
+$(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">includes +=
+$(ACE_ROOT)/TAO/CIAO/tools/static_configurator</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">includes +=
+$(ACE_ROOT)/TAO/CIAO/tools/RTComponentServer</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += RTComponent_Server
+CIAO_XML_Helpers&nbsp; Static_Configurator</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += RTComponent_Server
+CIAO_XML_Helpers&nbsp; Static_Configurator</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;</span><br
+ style="font-family: monospace;">
+<span
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">libs
++= BasicSP_stub&nbsp; BasicSP_svnt</span><br
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">
+<span
+ style="font-family: monospace; color: rgb(153, 0, 0); font-weight: bold;">after
++= BasicSP_stub&nbsp; BasicSP_svnt</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += EC_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += EC_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += EC_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">EC_stub</span></span><br
+ style="font-family: monospace; font-weight: bold; color: rgb(153, 0, 0);">
+<span style="font-family: monospace;">after += EC_svnt<span
+ style="font-weight: bold; color: rgb(153, 0, 0);"> EC_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMDevice_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMDevice_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMDevice_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMDevice_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMDevice_svnt&nbsp; <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMDevice_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMClosedED_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMClosedED_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMClosedED_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMClosedED_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMClosedED_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMClosedED_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMDisplay_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMDisplay_exec</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">libs += BMDisplay_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMDisplay_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">after += BMDisplay_svnt <span
+ style="font-weight: bold; color: rgb(153, 0, 0);">BMDisplay_stub</span></span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp; Source_Files {</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+Static_CCM_App.cpp</span><br style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; IDL_Files {</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; }</span><br
+ style="font-family: monospace;">
+<span style="font-family: monospace;">}</span><br>
+<br>
+</body>
+</html>
diff --git a/modules/CIAO/docs/static_dance.html b/modules/CIAO/docs/static_dance.html
new file mode 100644
index 00000000000..3bd6433e133
--- /dev/null
+++ b/modules/CIAO/docs/static_dance.html
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title></title>
+<!-- $Id$ -->
+ <meta name="GENERATOR" content="OpenOffice.org 1.1.2 (Linux)">
+ <meta name="CREATED" content="20041128;11452700">
+ <meta name="CHANGED" content="20041210;11524200">
+ <style>
+ <!--
+ @page { size: 8.5in 11in; margin-left: 1.25in; margin-right: 1.25in; margin-top: 1in; margin-bottom: 1in }
+ P { margin-bottom: 0.08in }
+ H2.western { font-family: "Times New Roman", serif }
+ H2.cjk { font-family: "Arial Unicode MS" }
+ H2.ctl { font-family: "Tahoma" }
+ H3.western { font-family: "Times New Roman", serif }
+ H3.cjk { font-family: "Arial Unicode MS" }
+ H3.ctl { font-family: "Tahoma" }
+ -->
+ </style>
+</head>
+<body dir="ltr" lang="en-US">
+<h2 class="western" align="center">CIAO Static Configuration Support
+with DanCE for Real-Time Platforms </h2>
+<h3 class="western">1. Introduction</h3>
+<p>The dynamic packaging, assembly, and deployment mechanisms
+currently available in CIAO are useful for application domains where
+component metadata is less likely to be known a priori, where
+implementation upgrades may need to be performed on-line, and where
+platform features like loading and unloading dynamic libraries are
+both available and useful. We have already incorporated <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/ACE_wrappers/TAO/CIAO/docs/static_ciao_index.html">static
+configuration support</a> for component configuration in CIAO on
+platforms like VxWorks, as a set of optional strategies and
+optimizations to the existing CIAO configuration capabilities (). In
+this white paper, we discuss implementation details for extending the
+static configuration capabilities as part of the new DanCE (D&amp;C
+support available with CIAO) framework.</p>
+<p>The fundamental intuition in understanding our approach is that in
+DRE systems the stages of the overall system lifecycle are similar to
+those in more dynamic conventional component-oriented client-server
+applications.However, in DRE systems several phases of the system
+lifecycle are compressed into the compile-time and
+system-initialization phases, so that (1) for testing and
+verification purposes the set of components in an application can be
+identified and analyzed before run-time, and (2) overheads for
+run-time operation following initialization are reduced and made more
+predictable. Furthermore, due to the nuances of the platforms
+traditionally used for deploying DRE systems, not all features of
+conventional platforms are available. Our approach therefore avoids
+certain mechanisms that are either unavailable or too costly in terms
+of performance. We follow these intuitions in our approach, taking
+the existing configuration phases in CIAO and pushing several of them
+earlier in the configuration lifecycle.</p>
+<h3 class="western">2. Current D&amp;C in CIAO with DanCE</h3>
+<p><img src="imgs/dance_arch.jpg" name="Graphic2"
+ style="border: 0px solid ; width: 600px; height: 400px;" alt=""
+ align="left"><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br><b>Figure 1.</b> <b>Current D&amp;C process using DAnCE</b></p>
+One of the key concerns while supporting the static configuration
+within the DAnCE framework is to reuse the existing components in the
+DAnCE framework as much as possible. Figure 1 shows the current D&amp;C
+process using the DAnCE framework. This is the standard D&amp;C
+process as specified in the CCM D&amp;C specification.As seen from
+the figure, there are multiple processes (Executor, ExecutionManager,
+NodeManagers and NodeApplications) that are involved.
+<h3 class="western">3. Static Configuration with DanCE</h3>
+<p><img src="imgs/static_dance_arch.jpg" name="Graphic3"
+ style="border: 0px solid ; width: 800px; height: 800px;" alt=""
+ align="left"><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br>
+</p>
+<p><br><b>Figure 2.</b> <b>Static D&amp;C in DAnCE</b></p>
+<p>Figure 2 shows the static configuration approach in DAnCE. Here,
+the flattened deployment plan (.cdp) is parsed offline by an offline
+parser ($CIAO_ROOT/StaticConfigurator/StaticDAnCEParser) using the
+same XML parser classes that the dynamic configuration uses. The
+output of the parser is a C++ plan.h file, which contains the function
+entry points for home and home servant creation. The assumption here
+is that all the necessary (component implementations and other)
+libraries are statically linked to the driver application (see a
+template in
+$CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl). </p>
+<p>The driver application is essentially a NodeManager which can be
+used to do deployment just the same as in DAnCE. To achieve maximum
+reusability of the existing classes in the DAnCE framework, we use
+the class hierarchy shown in Figure 3. </p>
+<br>
+<b></b>
+<p style="page-break-before: always;" align="left"><img
+ src="imgs/static_dance_impl.jpg" name="Graphic1"
+ style="border: 0px solid ; width: 700px; height: 700px;" alt=""
+ align="left"><br clear="left">
+<b>Figure 3. New class hierarchy to accommodate static configuration
+within DAnCE<br>
+</b></p>
+<h3 class="western">3.Example</h3>
+<p>To run the static version of Hello example, do the following,<br>
+</p>
+<ol>
+ <li>Build ACE+TAO+CIAO statically</li>
+ <li>Build $CIAO_ROOT/examples/Hello&nbsp;</li>
+ <li>Generate the static function entrypoints (plan.h)<br>
+ <span style="font-family: monospace;">&gt; cd
+$CIAO_ROOT/examples/Hello/descriptors</span><span
+ style="font-family: monospace;"><br>
+&gt; <span style="font-family: &quot;times new roman&quot;,serif;"><span
+ style="font-weight: bold;"></span></span>$CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEParser
+-p flattened_deploymentplan_without_ns.cdp</span><br>
+ <span style="font-family: monospace;">&gt; cp plan.h <span
+ style="font-weight: bold;"></span>$CIAO_ROOT/DAnCE/StaticConfigurator/</span><br>
+ </li>
+ <li>Build the static NodeManager for Hello example<span
+ style="font-family: monospace;"><br>
+&gt; cd $CIAO_ROOT/DAnCE/StaticConfigurator</span><br
+ style="font-family: monospace;">
+ <span style="font-family: monospace;"></span><span
+ style="font-family: monospace;">&gt; cp StaticDAnCEApp.cpp.tmpl
+StaticDAnCEApp.cpp</span><br style="font-family: monospace;">
+ <span style="font-family: monospace;">&gt; cp
+StaticDAnCEApp.mpc.tmpl StaticDAnCEApp.mpc<br>
+&gt; $ACE_ROOT/bin/mwc.pl<br>
+&gt; make<br>
+ </span></li>
+ <li>Run the static node managers. Note that the <span
+ style="font-family: monospace;">ORBEndpoint</span> values should
+correspond to the ones in&nbsp;<span style="font-family: monospace;">
+$CIAO_ROOT/examples/Hello/descriptors/TestNodeManagerMap.dat </span><br>
+&gt; <span style="font-family: monospace;">cd
+$CIAO_ROOT/DAnCE/StaticConfigurator<br>
+&gt; ./StaticDAnCEApp -ORBEndpoint iiop://localhost:60001 &amp;<br>
+ </span><span style="font-family: monospace;">&gt; ./StaticDAnCEApp
+-ORBEndpoint iiop://localhost:60002 &amp;</span><br>
+ </li>
+ <li>Do the deployment. This is just the same as the non-static
+version of DAnCE except that we have the NodeManagers already running
+and need not spawn node managers. To accomplish this, change&nbsp; <span
+ style="font-family: monospace;">$CIAO_ROOT/examples/Hello/descriptors/run_test_without_ns.pl
+to <span style="font-weight: bold;">*not*</span> run the node manager
+daemons.<br>
+ </span><span style="font-family: monospace;">&gt; cd
+$CIAO_ROOT/examples/Hello/descriptors<br>
+&gt; ./</span><span style="font-family: monospace;">run_test_without_ns.pl</span></li>
+</ol>
+<br>
+<p></p>
+</body>
+</html>
diff --git a/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp
new file mode 100644
index 00000000000..aedbcd3769b
--- /dev/null
+++ b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.cpp
@@ -0,0 +1,1126 @@
+// $Id$
+
+// The generated filename for files using this template shoule be
+// [idl-basename]GS.cpp GS --> GlueSession
+
+// @@ Notice: [ciao module name] can expand to either CIAO_GLUE or
+// CIAO_GLUE_[module name] as defined in the header file.
+
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+/// @@@ Notice that all component and interface names need to be
+/// fully qualified as we are creating a new namespace for the CIAO's
+/// container glue code.
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+#include "[idl-basename]_svnt.h"
+#include "Cookies.h"
+
+#if !defined (__ACE_INLINE__)
+# include "[idl-basename]_svnt.inl"
+#endif /* __ACE_INLINE__ */
+
+//////////////////////////////////////////////////////////////////
+// Facet Glue Code implementation
+// @@ We are assuming that these facets are declared under the same
+// module as the component (thus, we are placing this glue code
+// here under the same namespace. If they are not, we will
+// either be generating them in separate namespaces, or include
+// some other CIDL generated files to get the glue code
+// implementation.
+//////////////////////////////////////////////////////////////////
+
+##foreach [facet type] in (all facet interface types in the original IDL)
+
+// get_component implementation.
+CORBA::Object_ptr
+[ciao module name]::[facet type]_Servant::_get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::SessionContext_var sc =
+ ::Components::SessionContext::_narrow (this->ctx_.in ());
+
+ if (! CORBA::is_nil(sc.in ()))
+ return sc->get_CCM_object ();
+
+ ::Components::EntityContext_var ec =
+ ::Components::EntityContext::_narrow (this->ctx_.in ());
+
+ if (! CORBA::is_nil(ec.in ()))
+ return ec->get_CCM_object ();
+
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+}
+
+##end foreach [facet type]
+
+
+
+//////////////////////////////////////////////////////////////////
+// Component specific context implementation
+//////////////////////////////////////////////////////////////////
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // [receptacle name]Connections typedef'ed as a sequence of
+ // struct [receptacle name]Connection.
+[receptacle name]Connections *
+[ciao module name]::[component name]_Context::get_connections_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ Strategized locking here.
+
+ [receptacle name]Connections_var retv =
+ new [receptacle name]Connections (this->ciao_muses_[receptacle name]_.current_size ());
+
+ CORBA::ULong i = 0;
+ ACE_Active_Map_Manager<[uses type]_var>::iterator
+ end = this->ciso_muses_[receptacle name]_.end ();
+ for (ACE_Active_Map_Manager<[uses type]_var>::iterator
+ iter = this->ciso_muses_[receptacle name]_.begin ();
+ iter != end;
+ ++iter)
+ {
+ ACE_Active_Map_Manager<[uses type]_var>::ENTRY &entry = *iter;
+ retv[i]->objref = [uses type]::_narrow (entry.int_id_.in ());
+ retv[i]->ck = new CIAO::Map_Key_Cookie (entry.ext_id_);
+ ++i;
+ }
+
+ return retv._retn ();
+}
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+##foreach [event name] with [eventtype] in (list of all event sources) generate:
+void
+[ciao module name]::[component name]_Context::push_[event name] ([eventtype] *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+## if [event name] belongs to an 'emits' port
+ this->ciao_emits_[event name]_consumer_->push_[event name] (ev);
+
+## else [event name] belongs to a 'publishes' port
+ ACE_Active_Map_Manager<[eventtype]Consumer_var>::iterator
+ end = this->ciao_publishes_[event name]_map_.end ();
+ for (ACE_Active_Map_Manager<[eventtype]Consumer_var>::iterator
+ iter = this->ciao_publishes_[event name]_map_.begin ();
+ iter != end;
+ ++iter)
+ {
+ ACE_Active_Map_Manager<[eventtype]Consumer_var>::ENTRY &entry = *iter;
+ [eventtype]Consumer_var c
+ = [eventtype]Consumer::_narrow (entry.int_id_.in ());
+ c->push_[eventtype] (ev);
+ }
+## endif [event name]
+}
+
+##end foreach [event name] with [eventtype]
+
+
+// Operations for publishes interfaces.
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+::Components::Cookie *
+[ciao module name]::[component name]_Context::subscribe_[publish name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceededConnectionLimit))
+{
+ if (CORBA::is_nil (c))
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+
+ [eventtype]Consumer_var sub
+ = [eventtype]Consumer::_duplicate (c);
+
+ ACE_Active_Map_Manager_Key key;
+ this->ciao_publishes_[publish name]_map_.bind (sub.in (),
+ key);
+
+ sub._retn (); // Release ownership to map.
+
+ ::Components::Cookie_var retv = new CIAO::Map_Key_Cookie (key);
+ return retv._retn ();
+}
+
+[eventtype]Consumer_ptr
+[ciao module name]::[component name]_Context::unsubscribe_[publish name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection))
+{
+ [eventtype]Consumer_var retv;
+
+ ACE_Active_Map_Manager_Key key;
+ if (ck == 0 ||
+ CIAO::Map_Key_Cookie::extract (ck, key) == -1)
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+ if (this->ciao_publishes_[publish name]_map_.unbind (key,
+ retv) != 0)
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+ return retv._retn ();
+}
+
+##end foreach [publish name] with [eventtype]
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+
+## if [receptacle name] is a simplex receptacle ('uses')
+
+[uses type]_ptr
+[ciao module name]::[component name]_Context::get_connection_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return [uses type]::_duplicate (this->ciao_uses_[receptacle name]_.in ());
+}
+
+// Simplex [receptacle name] connection management operations
+void
+[ciao module name]::[component name]_Context::connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection))
+{
+ if (! CORBA::is_nil (this->ciao_uses_[receptacle name]_.in ()))
+ throw ::Components::AlreadyConnected ();
+
+ if (CORBA::is_nil (c))
+ throw ::Components::InvalidConnection ();
+
+ // When do we throw InvalidConnection exception?
+ this->ciao_uses_[receptacle name]_ = [uses type]::_duplicate (c);
+}
+
+[uses type]_ptr
+[ciao module name]::[component name]_Context::disconnect_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection))
+{
+ if (CORBA::is_nil (this->ciao_uses_[receptacle name]_.in ()))
+ throw ::Components::NoConnection ();
+
+ return this->ciao_uses_[receptacle name]_._retn ();
+}
+
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+// Multiplex [receptacle name] connection management operations
+::Components::Cookie *
+[ciao module name]::[component name]_Context::connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceedConnectionLimit,
+ ::Components::InvalidConnection))
+{
+ if (CORBA::is_nil (c))
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+ [uses type]_var conn
+ = [uses type]::_duplicate (c);
+
+ ACE_Active_Map_Manager_Key key;
+ this->ciao_muses_[receptacle name]_.bind (conn.in (),
+ key);
+
+ conn._retn (); // Releases ownership to the map.
+
+ ::Components::Cookie_var retv = new CIAO::Map_Key_Cookie (key);
+ return retv._retn ();
+}
+
+[uses type]_ptr
+[ciao module name]::[component name]_Context::disconnect_[receptacle name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection))
+{
+ [uses type]_var retv;
+
+ ACE_Active_Map_Manager_Key key;
+ if (ck == 0 ||
+ CIAO::Map_Key_Cookie::extract (ck, key) == -1)
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+ if (this->ciao_muses_[receptacle name]_.unbind (key,
+ retv) != 0)
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+ return retv._retn ();
+}
+
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+// Operations for ::Components::SessionContext interface
+CORBA::Object_ptr
+[ciao module name]::[component name]_Context::get_CCM_object ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+{
+ // @@ How do I check for IllegalState here? When it's not in a
+ // callback operation...
+ // ACE_THROW_RETURN (::Components::IllegalState (), 0);
+
+ if (CORBA::is_nil (this->component_.in ()))
+ {
+ CORBA::Object_var obj = this->container_->get_objref (this->servant_);
+
+ this->component_ = [component name]::_narrow (obj.in ());
+
+ if (CORBA::is_nil (this->component_.in ()))
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0); // This should not happen...
+ }
+ return [component name]::_duplicate (this->component_.in ());
+}
+
+//////////////////////////////////////////////////////////////////
+// Component Servant Glue code implementation
+//////////////////////////////////////////////////////////////////
+
+[ciao module name]::[component name]_Servant::[component name]_Servant (CCM_[component name]_ptr exe,
+ ::Components::CCMHome_ptr h,
+ ::CIAO::Session_Container *c)
+ : executor_ (CCM_[component name]::_duplicate (exe)),
+ container_ (c)
+{
+ this->context_ = new [ciao module name]::[component name]_Context (h, c, this);
+
+ try
+ {
+ Components::SessionComponent_var scom =
+ Components::SessionComponent::_narrow (exe);
+
+ if (! CORBA::is_nil (scom.in ()))
+ scom->set_session_context (this->context_);
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ // @@ Ignore any exceptions? What happens if
+ // set_session_context throws an CCMException?
+ }
+}
+
+[ciao module name]::[component name]_Servant::~[component name]_Servant (void)
+{
+ try
+ {
+ Components::SessionComponent_var scom =
+ Components::SessionComponent::_narrow (this->executor_.in ());
+
+ if (! CORBA::is_nil (scom.in ()))
+ scom->ccm_remove ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ // @@ Ignore any exceptions? What happens if
+ // set_session_context throws an CCMException?
+ }
+ this->context_->_remove_ref ();
+}
+
+// Operations for provides interfaces.
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+
+[facet type]_ptr
+[ciao module name]::[component name]_Servant::provide_[facet name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (CORBA::is_nil (this->provide_[facet name]_.in ()))
+ {
+ CCM_[facet type]_var fexe = this->executor_->get_[facet name] ();
+
+ if (CORBA::is_nil (fexe.in ()))
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+
+ [ciao module name]::[facet type]_Servant *svt =
+ new [ciao module name]::[facet type]_Servant (fexe.in (),
+ this->context_);
+ PortableServer::ServantBase_var safe_servant (svt);
+
+ CORBA::Object_var obj = this->container_->install_servant (svt);
+
+ [facet type]_var fo = [facet type]::_narrow (obj.in ());
+
+ this->provide_[facet name]_ = fo;
+ }
+
+ return [facet type]::_duplicate (this->provide_[facet name]_.in ());
+}
+##end foreach [facet name] with [facet type]
+
+// Operations for consumers interfaces.
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+
+// EventConsumer Glue Code implementation
+
+// Inherit from ::Compopnents::EventBConsumerBase
+void
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_event (EventBase *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::BadEventType))
+{
+ [eventtype]_var ev_type = [eventtype]::_downcast (ev);
+ if (ev_type != 0)
+ {
+ this->push_[eventtype] (ev_type.in ());
+ return;
+ }
+
+ // @@ This include the case when we receive a parent eventtype of [eventtype]
+
+ throw ::Components::BadEventType ();
+}
+
+// get_component implementation.
+[eventtype]Consumer_ptr
+[ciao module name]::[component name]_Servant::get_consumer_[consumer name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (CORBA::is_nil (this->consumes_[consumer name]_.in ()))
+ {
+ [ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant *svt =
+ new [ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant (this->executor_.in (),
+ this->context_);
+ PortableServer::ServantBase_var safe_servant (svt);
+
+ CORBA::Object_var obj = this->container_->install_servant (svt);
+
+ [eventtype]Consumer_var eco = [eventtype]Consumer::_narrow (obj.in ());
+
+ this->consumes_[consumer name]_ = eco;
+ }
+
+ return [eventtype]Consumer::_duplicate (this->consumes_[consumer name]_.in ());
+}
+
+##end foreach [consumer name] with [eventtype]
+
+// Operations for Navigation interface
+CORBA::Object_ptr
+[ciao module name]::[component name]_Servant::provide_facet (const char * name)
+ ACE_THROW_SPEC ((CORBA::SystemException ,
+ Components::InvalidName))
+{
+ if (name == 0)
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+
+ // We simply iterate thru all the facets this component provides
+ // now. We can also use a hash map along with perfect hashing
+ // (i.e., gperf) if we need faster performance since all the provided
+ // interfaces are static to a component definition.
+
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+ if (ACE_OS_String::strcmp (name, "[facet name]") == 0)
+ return this->provide_[facet name] ();
+##end foreach [facet name] with [facet type]
+
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+}
+
+::Components::FacetDescriptions *
+[ciao module name]::[component name]_Servant::get_all_facets ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::FacetDescriptions_var collection
+ = new ::Components::FacetDescriptions (#99); // #99 = number of all provided
+ // facets including those inherited
+ // from parent component(s).
+ collection->length (#99);
+
+ ::Components::FacetDescription_var x;
+ CORBA::ULong i = 0;
+
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+
+ x = new ::OBV_Components::FacetDescription;
+
+ x->Name ((const char *)"[facet name]");
+ x->type_id ((const char *) "[facet type's repo id]"); //
+ x->facet_ref (this->provide_[facet name] ());
+
+ collection[i] = x._retn ();
+ ++i;
+##end foreach [facet name] with [facet type]
+
+ return collection._retn ();
+
+}
+
+::Components::FacetDescriptions *
+[ciao module name]::[component name]_Servant::get_named_facets (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ ::Components::FacetDescriptions_var collection
+ = new ::Components::FacetDescriptions (names.length ());
+ collection->length (names.length ());
+
+ ::Components::FacetDescription_var x;
+ CORBA::ULong i = 0;
+ for (; i < names.length (); ++i)
+ {
+ x = new ::OBV_Components::FacetDescription;
+
+ // We probably need a more efficient way, e.g., a hash map, to handle all these.
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+ (else) if (ACE_OS_String::strcmp (names[i].in (), "[facet name]") == 0)
+ {
+ x->Name ((const char *)"[facet name]");
+ x->type_id ((const char *) "[facet type's repo id]"); //
+ x->facet_ref (this->provide_[facet name] ());
+ }
+##end foreach [facet name] with [facet type]
+ else
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+
+ collection[i] = x._retn ();
+ }
+ return collection._retn ();
+}
+
+CORBA::Boolean
+[ciao module name]::[component name]_Servant::same_component (CORBA::Object_ptr object_ref)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (CORBA::is_nil (object_ref))
+ ACE_THROW_RETURN (CORBA::BAD_PARAM (), 0);
+
+ CORBA::Object_var the_other = object_ref->_get_component ();
+
+ CORBA::Object_var me = this->context_->get_CCM_object ();
+
+ return me->_is_equivalent (object_ref);
+}
+
+// Operations for Receptacles interface
+::Components::Cookie *
+[ciao module name]::[component name]_Servant::connect (const char * name,
+ CORBA::Object_ptr connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::AlreadyConnected,
+ Components::ExceededConnectionLimit))
+{
+ // @@ We can omit this if clause if there's no receptacle in this component.
+ if (name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+ if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0)
+ {
+ [uses type]_var _ciao_conn =
+ [uses type]::_narrow (connection);
+
+ if (CORBA::is_nil (_ciao_conn.in ()))
+ ACE_THROW_RETURN (::Components::InvalidConnection (), 0);
+
+## if [receptacle name] is a simplex receptacle ('uses')
+ this->connect_[receptacle name] (_caio_conn.in ());
+ return 0;
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ return this->connect_[receptacle name] (_ciao_conn.in ());
+## endif [receptacle name]
+ }
+##end foreach [receptacle name] with [uses type]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+/*
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+*/
+
+CORBA::Object_ptr
+[ciao module name]::[component name]_Servant::disconnect (const char * name,
+ Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::CookieRequired,
+ Components::NoConnection))
+{
+ // @@ We can omit this if clause if there's no receptacle in this component.
+ if (name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+ if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0)
+## if [receptacle name] is a simplex receptacle ('uses')
+ return this->disconnect_[receptacle name] ();
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ return this->connect_[receptacle name] (ck);
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+::Components::ConnectionDescriptions *
+[ciao module name]::[component name]_Servant::get_connections (const char * name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ // @@ We can omit this if clause if there's no receptacle in this component.
+ if (name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+ if (ACE_OS_String::strcmp (name, "[receptacle name]") == 0)
+ {
+## if [receptacle name] is a simplex receptacle ('uses')
+ ::Components::ConnectionDescriptions_var retv =
+ new ::Components::ConnectionDescriptions (1);
+ retv->length (1);
+
+ retv[0] = new OBV_Components::ConnectionDescription;
+ retv[0]->ck = 0;
+ retv[0]->objref = this->get_connection_[receptacle name] ();
+
+ return retv._retn ();
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // @@ Return type does not match here. We can not return directly.
+ return this->get_connections_[receptacle name] ();
+## endif [receptacle name]
+ }
+##end foreach [receptacle name] with [uses type]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+::Components::ReceptacleDescriptions *
+[ciao module name]::[component name]_Servant::get_all_receptacles ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::ReceptacleDescriptions_var retv =
+ new ::Components::ReceptacleDescriptions (#99); // #99 is number of receptacles
+ // this component has.
+ retv->length (#99);
+ CORBA::ULong i = 0;
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+ retv[i] = new OBV_Components::ReceptacleDescription;
+
+ retv[i]->Name ((const char *) "[receptacle name]");
+ retv[i]->type_id ((const char *) "[uses type repo id]");
+## if [receptacle name] is a simplex receptacle ('uses')
+ retv[i]->is_multiple (0);
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ retv[i]->is_multiple (1);
+## endif [receptacle name]
+ retv[i]->connections (*this->get_connections ("[receptacle name]"));
+ ++i;
+##end foreach [receptacle name] with [uses type]
+
+ return retv._retn ();
+}
+
+::Components::ReceptacleDescriptions *
+[ciao module name]::[component name]_Servant::get_named_receptacles (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ ::Components::ReceptacleDescriptions_var retv =
+ new ::Components::ReceptacleDescriptions (names.length ());
+ retv->length (names.length ());
+
+ CORBA::ULong i = 0;
+ for (; i < names.length (); ++i)
+ {
+ retv[i] = new ::OBV_Components::ReceptacleDescription;
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+ (else) if (ACE_OS_String::strcmp (names[i].in (), "[receptacle name]") == 0)
+ {
+ retv[i]->Name ((const char *) "[receptacle name]");
+ retv[i]->type_id ((const char *) "[uses type repo id]");
+## if [receptacle name] is a simplex receptacle ('uses')
+ retv[i]->is_multiple (0);
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ retv[i]->is_multiple (1);
+## endif [receptacle name]
+ retv[i]->connections (*this->get_connections ("[receptacle name]"));
+ }
+##end foreach [receptacle name] with [uses type]
+ else
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+ return retv._retn ();
+}
+
+// Operations for Events interface
+::Components::EventConsumerBase_ptr
+[ciao module name]::[component name]_Servant::get_consumer (const char * sink_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ // @@ We can omit this if clause if there's no event sinks in this component.
+ if (sink_name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+ if (ACE_OS_String::strcmp (sink_name, "[consumer name]") == 0)
+ return this->get_consumer_[consumer name] ();
+##end foreach [consumer name] with [eventtype]
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+::Components::Cookie *
+[ciao module name]::[component name]_Servant::subscribe (const char * publisher_name,
+ Components::EventConsumerBase_ptr subscriber)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::ExceededConnectionLimit))
+{
+ // @@ We can omit this if clause if there's no publisher in this component.
+ if (publisher_name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+ if (ACE_OS_String::strcmp (publisher_name, "[publish name]") == 0)
+ {
+ [eventtype]Consumer_var _ciao_consumer =
+ [eventtype]Consumer::_narrow (subscriber);
+
+ if (CORBA::is_nil (_ciao_consumer.in ()))
+ ACE_THROW_RETURN (Components::InvalidConnection (), 0);
+
+ return this->subscribe_[publish name] (_ciao_consumer.in ());
+ }
+##end foreach [publish name] with [eventtype]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+::Components::EventConsumerBase_ptr
+[ciao module name]::[component name]_Servant::unsubscribe (const char * publisher_name,
+ Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection))
+{
+ // @@ We can omit this if clause if there's no publisher in this component.
+ if (publisher_name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+ if (ACE_OS_String::strcmp (publisher_name, "[publish name]") == 0)
+ {
+ return this->unsubscribe_[publish name] (ck);
+ }
+##end foreach [publish name] with [eventtype]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+void
+[ciao module name]::[component name]_Servant::connect_consumer (const char * emitter_name,
+ Components::EventConsumerBase_ptr consumer)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::AlreadyConnected,
+ Components::InvalidConnection))
+{
+ // @@ We can omit this if clause if there's no emitter in this component.
+ if (emitter_name == 0)
+ throw Components::InvalidName ();
+
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ if (ACE_OS_String::strcmp (emitter_name, "[emit name]") == 0)
+ {
+ [eventtype]Consumer_var _ciao_consumer =
+ [eventtype]Consumer::_narrow (consumer);
+
+ if (CORBA::is_nil (_ciao_consumer.in ()))
+ throw Components::InvalidConnection;
+
+ this->connect_[emit name] (_ciao_consumer.in ());
+ return;
+ }
+##end foreach [emit name] with [eventtype]
+
+ throw Components::InvalidName ();
+}
+
+::Components::EventConsumerBase_ptr
+[ciao module name]::[component name]_Servant::disconnect_consumer (const char * source_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::NoConnection))
+{
+ // @@ We can omit this if clause if there's no emitter in this component.
+ if (source_name == 0)
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ if (ACE_OS_String::strcmp (source_name, "[emit name]") == 0)
+ {
+ return this->disconnect_[emit name] ();
+ }
+##end foreach [emit name] with [eventtype]
+
+ ACE_THROW_RETURN (Components::InvalidName (), 0);
+}
+
+::Components::ConsumerDescriptions *
+[ciao module name]::[component name]_Servant::get_all_consumers ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::ConsumerDescriptions_var retv =
+ new ::Components::ConsumerDescriptions (#99); // #99 is the number of consumers
+ // this component has.
+ retv->length (#99);
+
+ CORBA::ULong i = 0;
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+ retv[i] = new OBV_Components::ConsumerDescription;
+ retv[i]->Name ("[consumer name]");
+ retv[i]->type_id ("[eventtype]Consumer repo id");
+ [eventtype]Consumer_var c
+ = this->get_consumer_[consumer name] ();
+
+ retv[i]->consumer (c.in ());
+
+ i++;
+##end foreach [consumer name] with [eventtype]
+
+ return retv._retn ();
+}
+
+::Components::ConsumerDescriptions *
+[ciao module name]::[component name]_Servant::get_named_consumers (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ ::Components::ConsumerDescriptions_var retv =
+ new ::Components::ConsumerDescriptions (names.length ());
+ retv->length (names.length ());
+
+ CORBA::ULong i = 0;
+ for (; i < names.length (); ++i)
+ {
+ retv[i] = new OBV_Components::ConsumerDescription;
+
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+ (else) if (ACE_OS_String::strcmp (names[i].in (), "[consumer name]") == 0)
+ {
+ retv[i]->Name ("[consumer name]");
+ retv[i]->type_id ("[eventtype]Consumer repo id");
+ [eventtype]Consumer_var c =
+ this->get_consumer_[consumer name] ();
+
+ retv[i]->consumer (c.in ());
+ }
+##end foreach [consumer name] with [eventtype]
+ else
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+ return retv._retn ();
+}
+
+::Components::EmitterDescriptions *
+[ciao module name]::[component name]_Servant::get_all_emitters ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::EmitterDescriptions_var retv =
+ new ::Components::EmitterDescriptions (#99); // #99 is the number of emitters
+ // this component has.
+ retv->length (#99);
+
+ CORBA::ULong i = 0;
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ retv[i] = new OBV_Components::EmitterDescription;
+ retv[i]->Name ("[emit name]");
+ retv[i]->type_id ("[eventtype]Consumer repo id");
+ retv[i]->consumer ([eventtype]Consumer::_duplicate (this->context_->ciao_emits_[emit name]_consumer_));
+
+ i++;
+##end foreach [emitter name] with [eventtype]
+
+ return retv._retn ();
+}
+
+::Components::EmitterDescriptions *
+[ciao module name]::[component name]_Servant::get_named_emitters (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ ::Components::EmitterDescriptions_var retv =
+ new ::Components::EmitterDescriptions (names.length ());
+ retv->length (names.length ());
+
+ CORBA::ULong i = 0;
+ for (; i < names.length (); ++i)
+ {
+ retv[i] = new OBV_Components::EmitterDescription;
+
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ (else) if (ACE_OS_String::strcmp (names[i].in (), "[emit name]") == 0)
+ {
+ retv[i]->Name ("[emit name]");
+ retv[i]->type_id ("[eventtype]Consumer repo id");
+ retv[i]->consumer ([eventtype]Consumer::_duplicate (this->context_->ciao_emits_[emit name]_consumer_.in ()));
+ }
+##end foreach [consumer name] with [eventtype]
+ else
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+ return retv._retn ();
+}
+
+::Components::PublisherDescriptions *
+[ciao module name]::[component name]_Servant::get_all_publishers ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ to-do
+
+ // Need to add interfaces in the Context class to gather the information.
+ // Or we can just relay it to the Context object.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+::Components::PublisherDescriptions *
+[ciao module name]::[component name]_Servant::get_named_publishers (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName))
+{
+ // @@ to-do
+
+ // Need to add interfaces in the Context class to gather the information.
+ // Or we can just relay it to the Context object.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+// Operations for CCMObject interface
+::CORBA::IRObject_ptr
+[ciao module name]::[component name]_Servant::get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ to-do: Connect to an IfR?
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+::Components::CCMHome_ptr
+[ciao module name]::[component name]_Servant::get_ccm_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->context_->get_CCM_home ();
+}
+
+::Components::PrimaryKeyBase *
+[ciao module name]::[component name]_Servant::get_primary_key ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::NoKeyAvailable))
+{
+ // This is a keyless component.
+ ACE_THROW_RETURN (::Components::NoKeyAvailable (), 0);
+}
+
+void
+[ciao module name]::[component name]_Servant::configuration_complete ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidConfiguration))
+{
+ // @@ to-do
+ // No-op. Don't know how to pass this info to monolithic executor.
+}
+
+void
+[ciao module name]::[component name]_Servant::remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ // @@ to-do
+ // Need to figure out what to do here. E.g., tear down the all the connections
+ // this component has?
+}
+
+::Components::ComponentPortDescription *
+[ciao module name]::[component name]_Servant::get_all_ports ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::ComponentPortDescription_var retv =
+ new OBV_Components::ComponentPortDescription;
+
+ ::Components::FacetDescriptions_var facets_desc
+ = this->get_all_facets ();
+
+ ::Components::ReceptacleDescriptions_var receptacle_desc
+ = get_all_receptacles ();
+
+ ::Components::ConsumerDescriptions_var consumer_desc
+ = this->get_all_consumers ();
+
+ ::Components::EmitterDescriptions_var emitter_desc
+ = this->get_all_emitters ();
+
+ ::Components::PublisherDescriptions_var publisher_desc
+ = this->get_all_publishers ();
+
+ retv->facets (facets_desc.in());
+ retv->receptacles (receptacle_desc.in());
+ retv->consumers (consumer_desc.in());
+ retv->emitters (emitter_desc.in());
+ retv->publishers (publisher_desc.in());
+
+ return retv._retn();
+}
+
+// get_component implementation.
+CORBA::Object_ptr
+[ciao module name]::[component name]_Servant::_get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::SessionContext_var sc =
+ ::Components::SessionContext::_narrow (this->context_);
+
+ if (! CORBA::is_nil(sc.in ()))
+ return sc->get_CCM_object ();
+
+ // @@ Do we need to try the following case here? We are afterall implementing
+ // a session component here.
+ ::Components::EntityContext_var ec =
+ ::Components::EntityContext::_narrow (this->context_);
+
+ if (! CORBA::is_nil(ec.in ()))
+ return ec->get_CCM_object ();
+
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+}
+
+void
+[ciao module name]::[component name]_Servant::_ciao_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (this->executor_.in ());
+
+ if (! CORBA::is_nil (temp.in ()))
+ temp->ccm_activate ();
+}
+
+void
+[ciao module name]::[component name]_Servant::_ciao_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ::Components::SessionComponent_var temp =
+ ::Components::SessionComponent::_narrow (this->executor_.in ());
+
+ if (! CORBA::is_nil (temp.in ()))
+ temp->ccm_passivate ();
+}
+
+//////////////////////////////////////////////////////////////////
+// Component Home Glue code implementation
+//////////////////////////////////////////////////////////////////
+
+[component name]_ptr
+[ciao module name]::[home name]_Servant::_ciao_activate_component (CCM_[component name]_ptr exe)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ CORBA::Object_var hobj
+ = this->container_->get_objref (this);
+
+ ::Components::CCMHome_var home
+ = ::Components::CCMHome::_narrow (hobj.in ());
+
+ [ciao module name]::[component name]_Servant *svt =
+ new [ciao module name]::[component name]_Servant (exe,
+ home.in (),
+ this->container_);
+ PortableServer::ServantBase_var safe (svt);
+ PortableServer::ObjectId_var oid;
+
+ CORBA::Object_var objref
+ = this->container_->install_component (svt,
+ oid.out ());
+
+ svt->_ciao_activate ();
+
+ [component name]_var ho
+ = [component name]::_narrow (objref.in ());
+
+ if (this->component_map_.bind (oid.in (), svt) == 0)
+ {
+ // @@ what should happen if bind fail?
+ safe._retn ();
+ }
+ return ho._retn ();
+}
+
+void
+[ciao module name]::[home name]_Servant::_ciao_passivate_component ([component name]_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ PortableServer::ObjectId_var oid;
+
+ this->container_->uninstall_component (comp,
+ oid.out ());
+
+ [ciao module name]::[component name]_Servant *servant = 0;
+ if (this->component_map_.unbind (oid.in (), servant) == 0)
+ {
+ PortableServer::ServantBase_var safe (servant);
+ servant->_ciao_passivate ();
+ }
+ // What happen if unbind failed?
+
+}
+
+// Operations for Implicit Home interface
+[component name]_ptr
+[ciao module name]::[home name]_Servant::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+{
+ if (this->executor_.in () == 0)
+ ACE_THROW_RETURN (CORBA::INTERNAL (), 0);
+
+ Components::EnterpriseComponent_var _ciao_ec =
+ this->executor_->create ();
+
+ CCM_[component name]_var _ciao_comp
+ = CCM_[component name]::_narrow (_ciao_ec.in ());
+
+ return this->_ciao_activate_component (_ciao_comp.in ());
+}
+
+// Operations for CCMHome interface
+void
+[ciao module name]::[home name]_Servant::remove_component (Components::CCMObject_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure))
+{
+ [component name]_var _ciao_comp
+ = [component name]::_narrow (comp);
+
+ if (CORBA::is_nil (_ciao_comp.in ()))
+ throw CORBA::INTERNAL (); // What is the right exception to throw here?
+
+ // @@ It seems to me that we need to make sure this is a component
+ // generated by this home before calling remove on this component.
+ _ciao_comp->remove ();
+
+
+ // Removing the object reference? get the servant from the POA with
+ // the objref, and call remove() on the component, deactivate the
+ // component, and then remove-ref the servant?
+ this->_ciao_passivate_component (_ciao_comp.in ());
+}
+
+extern "C" [SERVANT]_Export ::PortableServer::Servant
+create[home name]_Servant (::Components::HomeExecutorBase_ptr p,
+ CIAO::Session_Container *c);
+{
+ if (p == 0)
+ return 0;
+
+ CCM_[home name]_var x
+ = CCM_[home name]::_narrow (p);
+
+ if (CORBA::is_nil (x.in ()))
+ return 0;
+
+ return new [ciao module name]::[home name]_Servant (x.in (),
+ c);
+}
diff --git a/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.h b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.h
new file mode 100644
index 00000000000..25c7813db53
--- /dev/null
+++ b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.h
@@ -0,0 +1,694 @@
+// $Id$
+
+// ===========================================================
+//
+// @file CIAO_Glue_Session_Template.h
+//
+// This is a pseudo-meta generic servant implementations template
+// for CIAO's CIDL compiler. It demonstrates how a servant
+// implementation for a session component should look like.
+//
+// The generated filename for files using this template shoule be
+// [idl-basename]_svnt.h
+//
+// @author Nanbor Wang <nanbor@cs.wustl.edu>
+//
+// ===========================================================
+
+#ifndef CIAO_GLUE_SESSION_[idl-basename]_SVNT_H
+#define CIAO_GLUE_SESSION_[idl-basename]_SVNT_H
+#include /**/ "ace/pre.h"
+
+#include "[idl-name]S.h" // Source in the skeletons for component
+ // client-view equivalent interfaces
+#include "[idl-name]EC.h" // Source in the executor mapping
+ // that component implementations use
+#include "ciao/Container_Base.h" //Source in the container interface definitions
+#include "tao/LocalObject.h"
+#include "tao/PortableServer/Key_Adapters.h"
+#include "ace/Active_Map_Manager_T.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+/// @@@ Notice that all component and interface names need to be
+/// fully qualified as we are creating a new namespace for the CIAO's
+/// container glue code.
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+##if component is defined withing a [module name]
+namespace CIAO_GLUE_[module_name]
+##else
+namespace CIAO_GLUE
+##endif
+{
+
+ //////////////////////////////////////////////////////////////////
+ // Facet Glue Code implementation
+ // @@ We are assuming that these facets are declared under the same
+ // module as the component (thus, we are placing this glue code
+ // here under the same namespace. If they are not, we will
+ // either be generating them in separate namespaces, or include
+ // some other CIDL generated files to get the glue code
+ // implementation.
+
+##foreach [facet type] in (all facet interface types in the original IDL)
+ class [SERVANT]_Export [facet type]_Servant :
+ : public virtual POA_[facet type] // full skeleton name here
+ {
+ public:
+ // Constructor and destructor.
+ [facet type]_Servant (CCM_[facet type]_ptr executor,
+ ::Components::CCMContext_ptr ctx);
+ ~[facet tyep]_Servant ();
+
+## foreach [operation] in (all facet operations)
+ // Generate operation decls.
+## end foreach [operation]
+
+ // get_component implementation.
+ virtual CORBA::Object_ptr
+ _get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ // Facet executor.
+ CCM_[facet type]_var executor_;
+
+ // Context object.
+ ::Components::CCMContext_var ctx_;
+ };
+##end foreach [facet type]
+
+
+ //////////////////////////////////////////////////////////////////
+ // Component specific context implementation
+ class [SERVANT]_Export [component name]_Context :
+ public virtual CCM_[component name]_Context,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ // We will allow the the servant glue code we generate to access
+ // our states.
+ friend class [component name]_Servant;
+
+ // Ctor.
+ [component name]_Context (::Components::CCMHome_ptr home,
+ ::CIAO::Session_Container *c,
+ [component name]_Servant *sv);
+
+ // Dtor.
+ virtual ~[component name]_Context ();
+
+ // Operations for [component name] event source, and
+ // receptacles defined in CCM_[component name]_Context.
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+ [uses type]_ptr
+ get_connection_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // [receptacle name]Connections typedef'ed as a sequence of
+ // struct [receptacle name]Connection.
+ [receptacle name]Connections *
+ get_connections_[receptacle name] ();
+ ACE_THROW_SPEC ((CORBA::SystemException));
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+##foreach [event name] with [eventtype] in (list of all event sources) generate:
+ void push_[event name] ([eventtype] *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+##end foreach [event name] with [eventtype]
+
+ // Operations for ::Components::CCMContext
+ virtual ::Components::Principal_ptr
+ get_caller_principal ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::CCMHome_ptr
+ get_CCM_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean
+ get_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ virtual ::Components::Transaction::UserTransaction_ptr
+ get_user_transaction ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ virtual CORBA::Boolean
+ is_caller_in_role (const char * role)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ set_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+
+ // Operations for ::Components::SessionContext interface
+ virtual CORBA::Object_ptr
+ get_CCM_object ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState));
+ protected:
+ // We need to generate, in protected section, stuff that manage
+ // connections and consumers of this component.
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+ // Simplex [receptacle name] connection management operations
+ void
+ connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection));
+
+ [uses type]_ptr
+ disconnect_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection));
+
+ // Simplex [receptacle name] connection
+ [uses type]_var ciao_uses_[receptacle name]_;
+
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // Multiplex [receptacle name] connection management operations
+ ::Components::Cookie *
+ connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceedConnectionLimit,
+ ::Components::InvalidConnection));
+
+ [uses type]_ptr
+ disconnect_[receptacle name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection));
+
+ // Multiplex [receptacle name] connections
+
+ ACE_Active_Map_Manager<[uses type]_var> ciao_muses_[receptacle name]_;
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+ // Operations for emits interfaces.
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ void
+ connect_[emit name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected));
+
+ [eventtype]Consumer_ptr
+ disconnect_[emit name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection));
+
+ [eventtype]Consumer_var ciao_emits_[emit name]_consumer_;
+##end foreach [emit name] with [eventtype]
+
+ // Operations for publishes interfaces.
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+ ::Components::Cookie *
+ subscribe_[publish name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceededConnectionLimit));
+
+ [eventtype]Consumer_ptr
+ unsubscribe_[publish name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection));
+
+ ACE_Active_Map_Manager<[eventtype]Consumer_var> ciao_publishes_[publish name]_map_;
+##end foreach [publish name] with [eventtype]
+
+ protected:
+ /// Cached component home reference.
+ ::Components::CCMHome_var home_;
+
+ /// session container
+ ::CIAO::Session_Container *container_;
+
+ /// Reference back to owner.
+ [component name]_Servant *servant_;
+
+ /// @@ Cached component reference.
+ [component name]_var component_;
+
+ };
+
+ //////////////////////////////////////////////////////////////////
+ // Component Servant Glue code implementation
+ class [SERVANT]_Export [component name]_Servant
+ : public virtual POA_[component name] // full skeleton name here
+ {
+ public:
+ // Ctor.
+ [component name]_Servant (CCM_[component name]_ptr executor,
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Session_Container *c);
+
+ // Dtor.
+ ~[component name]_Servant (void);
+
+##foreach [operation] in all supported interfaces of own component and all inherited components and attribute accessors/mutators
+
+ // Generate the [operation] here.
+
+##end
+
+ // Operations for provides interfaces.
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+ virtual [facet type]_ptr
+ provide_[facet name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+##end foreach [facet name] with [facet type]
+
+ // Operations for receptacles interfaces.
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+ // Simplex [receptacle name] connection management operations
+ virtual void
+ connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection));
+
+ virtual [uses type]_ptr
+ disconnect_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection));
+
+ virtual [uses type]_ptr
+ get_connection_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // Multiplex [receptacle name] connection management operations
+ virtual ::Components::Cookie *
+ connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceedConnectionLimit,
+ ::Components::InvalidConnection));
+
+ virtual [uses type]_ptr
+ disconnect_[receptacle name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection));
+
+ virtual [receptacle name]Connections *
+ get_connections_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+ // Operations for consumers interfaces.
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+
+ // First we need to generate the event sink specific servant
+ class [SERVANT]_Export [eventtype]Consumer_[consumer name]_Servant
+ : public virtual POA_[eventtype]Consumer // full skeleton name here
+ {
+ public:
+ // Constructor and destructor.
+ [event type]Consumer_[consumer name]_Servant (CCM_[component name]_ptr executor,
+ CCM_[component name]_Context_ptr c);
+
+ ~[event type]Consumer_[consumer name]_Servant ();
+
+## foreach [type] in ([eventtype] and all its parent eventtype, if any)
+ virtual void push_[type] ([type] *evt)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+## end [type]
+
+ // Inherit from ::Compopnents::EventConsumerBase
+ virtual void push_event (::Components::EventBase *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::BadEventType));
+
+ // get_component implementation.
+ virtual CORBA::Object_ptr
+ _get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ // Executor
+ CCM_[component name]_var executor_;
+
+ // Context object.
+ CCM_[component name]_Context_var ctx_;
+ };
+
+ virtual [eventtype]Consumer_ptr
+ get_consumer_[consumer name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+##end foreach [consumer name] with [eventtype]
+
+ // Operations for emits interfaces.
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ virtual void
+ connect_[emit name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException
+ ::Components::AlreadyConnected));
+
+ virtual [eventtype]Consumer_ptr
+ disconnect_[emit name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection));
+##end foreach [emit name] with [eventtype]
+
+ // Operations for publishes interfaces.
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+ virtual ::Components::Cookie *
+ subscribe_[publish name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceededConnectionLimit));
+
+ virtual [eventtype]Consumer_ptr
+ unsubscribe_[publish name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection));
+##end foreach [publish name] with [eventtype]
+
+ // Operations for Navigation interface
+ virtual CORBA::Object_ptr
+ provide_facet (const char * name)
+ ACE_THROW_SPEC ((CORBA::SystemException ,
+ Components::InvalidName)) ;
+
+ virtual ::Components::FacetDescriptions *
+ get_all_facets ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::FacetDescriptions *
+ get_named_facets (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException ,
+ Components::InvalidName));
+
+ virtual CORBA::Boolean
+ same_component (CORBA::Object_ptr object_ref)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations for Receptacles interface
+ virtual ::Components::Cookie *
+ connect (const char * name,
+ CORBA::Object_ptr connection)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::AlreadyConnected,
+ Components::ExceededConnectionLimit));
+
+ virtual CORBA::Object_ptr
+ disconnect (const char * name,
+ Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::CookieRequired,
+ Components::NoConnection));
+
+ virtual ::Components::ConnectionDescriptions *
+ get_connections (const char * name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::ReceptacleDescriptions *
+ get_all_receptacles ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::ReceptacleDescriptions *
+ get_named_receptacles (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ // Operations for Events interface
+ virtual ::Components::EventConsumerBase_ptr
+ get_consumer (const char * sink_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::Cookie *
+ subscribe (const char * publisher_name,
+ Components::EventConsumerBase_ptr subscriber)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection,
+ Components::ExceededConnectionLimit));
+
+ virtual ::Components::EventConsumerBase_ptr
+ unsubscribe (const char * publisher_name,
+ Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::InvalidConnection));
+
+ virtual void
+ connect_consumer (const char * emitter_name,
+ Components::EventConsumerBase_ptr consumer)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::AlreadyConnected,
+ Components::InvalidConnection));
+
+ virtual ::Components::EventConsumerBase_ptr
+ disconnect_consumer (const char * source_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName,
+ Components::NoConnection));
+
+ virtual ::Components::ConsumerDescriptions *
+ get_all_consumers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::ConsumerDescriptions *
+ get_named_consumers (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::EmitterDescriptions *
+ get_all_emitters ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::EmitterDescriptions *
+ get_named_emitters (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ virtual ::Components::PublisherDescriptions *
+ get_all_publishers ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::PublisherDescriptions *
+ get_named_publishers (const Components::NameList & names)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidName));
+
+ // Operations for CCMObject interface
+ virtual ::CORBA::IRObject_ptr
+ get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::CCMHome_ptr
+ get_ccm_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::PrimaryKeyBase *
+ get_primary_key ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::NoKeyAvailable));
+
+ virtual void
+ configuration_complete ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::InvalidConfiguration));
+
+ virtual void
+ remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ virtual ::Components::ComponentPortDescription *
+ get_all_ports ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // get_component implementation.
+ virtual CORBA::Object_ptr
+ _get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // CIAO specific operations.
+
+ // Activate the object in the container_
+ void
+ _ciao_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ _ciao_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ protected:
+ // My Executor.
+ CCM_[component name]_var executor_;
+
+ // My Run-time Context.
+ [component name]_Context *context_;
+
+ // Managing container.
+ ::CIAO::Session_Container *container_;
+
+ // Cached provided interfaces.
+##foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+ [facet type]_var provide_[facet name]_;
+##end foreach [facet name] with [facet type]
+
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+ [eventtype]Consumer_var consumes_[consumer name]_;
+##end foreach [consumer name] with [eventtype]
+
+ };
+
+
+ //////////////////////////////////////////////////////////////////
+ // Component Home Glue code implementation
+
+ // Foreach component home
+ class [SERVANT]_Export [home name]_Servant :
+ public virtual POA_[home name] // full skeleton name here
+ {
+ public:
+ // Ctor.
+ [home name]_Servant (CCM_[home name]_ptr exe,
+ CIAO::Session_Container *c);
+
+ // Dtor.
+ ~[home name]_Servant (void);
+
+ // User defined and inherited operations
+##foreach [operation] in (all explicit operations in [home basename] including its parents)
+
+ // The operation decl here.
+
+## end foreach opeartion
+
+ // Factory operations
+##foreach [factory name] in (all factory operations in [home basename] including its parents)
+ // for factory operations inherit from parent home(s), they should return
+ // the corresponding component types their homes manage
+ virtual [component name]_ptr
+ [factory name] (....)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreateFailure,
+ ....));
+##end foreach [factory name]
+
+ // Finder operations
+##foreach [finder name] in (all finder operations in [home basename] including its parents)
+ // for finder operations inherit from parent home(s), they should return
+ // the corresponding component types their homes manage
+ virtual [component name]_ptr
+ [finder name] (....)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::FinderFailure,
+ ....));
+##end foreach [finder name]
+
+## if [home name] is a keyless home
+
+ // Operations for KeylessHome interface
+ virtual ::Components::CCMObject_ptr
+ create_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+## else [home basename] is keyed home with [key type]
+
+ // We do not support key'ed home at the moment but we might
+ // as well generate the mapping.
+ virtual [component name]_ptr create ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreationFailure,
+ ::Components::DuplicateKeyValue,
+ ::Components::InvalidKey));
+
+ virtual [component name]_ptr
+ find_by_primary_key ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::FinderFailure,
+ ::Components::UnknownKeyValue,
+ ::Components::InvalidKey));
+
+ virtual void remove ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::RemoveFailure,
+ ::Components::UnknownKeyValue,
+ ::Components::InvalidKey));
+
+ virtual [key type] *
+ get_primary_key ([component name]_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+## endif (keyed or keyless home)
+
+ // Operations for Implicit Home interface
+ virtual [component name]_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure));
+
+ // Operations for CCMHome interface
+ virtual ::CORBA::IRObject_ptr
+ get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::CORBA::IRObject_ptr
+ get_home_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void remove_component (Components::CCMObject_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::RemoveFailure));
+
+ protected:
+ // Helper method for factory operations.
+ [component name]_ptr
+ _ciao_activate_component (CCM_[component name]_ptr exe)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void
+ _ciao_passivate_component ([component name]_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // My Executor.
+ CCM_[home name]_var executor_;
+
+ // My Container
+ CIAO::Session_Container *container_;
+
+ // Components this home manages.
+ ACE_Hash_Map_Manager_Ex <PortableServer::ObjectId,
+ [component name]_Servant*,
+ TAO_ObjectId_Hash,
+ ACE_Equal_To<PortableServer::ObjectId>,
+ ACE_SYNCH_MUTEX> component_map_;
+ };
+
+}
+
+extern "C" [SERVANT]_Export ::PortableServer::Servant
+create[home name]_Servant (::Components::HomeExecutorBase_ptr p,
+ CIAO::Session_Container *c);
+
+#if defined (__ACE_INLINE__)
+# include "[idl-name]_svnt.inl"
+#endif /* __ACE_INLINE__ */
+
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_GLUE_SESSION_[idl-basename]_SVNT_H */
diff --git a/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.inl b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.inl
new file mode 100644
index 00000000000..1cb07a064ae
--- /dev/null
+++ b/modules/CIAO/docs/templates/CIAO_Glue_Session_Template.inl
@@ -0,0 +1,471 @@
+// $Id$ -*- C++ -*-
+
+// The generated filename for files using this template shoule be
+// [idl-basename]GS.i GS --> GlueSession
+
+// @@ Notice: [ciao module name] can expand to either CIAO_GLUE or
+// CIAO_GLUE_[module name] as defined in the header file.
+
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+/// @@@ Notice that all component and interface names need to be
+/// fully qualified as we are creating a new namespace for the CIAO's
+/// container glue code.
+/// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+//////////////////////////////////////////////////////////////////
+// Facet Glue Code implementation
+// @@ We are assuming that these facets are declared under the same
+// module as the component (thus, we are placing this glue code
+// here under the same namespace. If they are not, we will
+// either be generating them in separate namespaces, or include
+// some other CIDL generated files to get the glue code
+// implementation.
+//////////////////////////////////////////////////////////////////
+
+##foreach [facet type] in (all facet interface types in the original IDL)
+// Constructor and destructor.
+ACE_INLINE
+[ciao module name]::[facet type]_Servant::[facet type]_Servant (CCM_[facet type]_ptr executor,
+ ::Components::CCMContext_ptr c)
+ : executor_ (CCM_[facet type]::_duplicate (executor)),
+ ctx_ (Components::CCMContext::_duplicate (c))
+{
+}
+
+ACE_INLINE
+[ciao module name]::[facet type]_Servant::~[facet tyep]_Servant ()
+{
+}
+
+
+## foreach [operation] in (all facet operations)
+
+// This is only a guideline... we always relay the operation to underlying
+// executor.
+
+ACE_INLINE [operation return_type]
+[ciao module name]::[facet type]_Servant::[operation] ([operation args])
+{
+ // Simply relay to executor. May not need to return the result...
+ return this->executor_->operation ([operation args]);
+}
+## end foreach [operation]
+
+##end foreach [facet type]
+
+
+//////////////////////////////////////////////////////////////////
+// Component specific context implementation
+//////////////////////////////////////////////////////////////////
+
+ACE_INLINE
+[ciao module name]::[component name]_Context::[component name]_Context (::Components::CCMHome_ptr home,
+ ::CIAO::Session_Container *c,
+ [ciao module name]::[component name]_Servant *sv)
+ : home_ (::Components::CCMHome::_duplicate (home)),
+ container_ (c),
+ servant_ (sv)
+{
+
+}
+
+ACE_INLINE
+[ciao module name]::[component name]_Context::~[component name]_Context ()
+{
+}
+
+// Operations for emits interfaces.
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+
+ACE_INLINE void
+[ciao module name]::[component name]_Context::connect_[emit name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected))
+{
+ if (CORBA::is_nil (c))
+ throw CORBA::BAD_PARAM ();
+
+ if (! CORBA::is_nil (this->ciao_emits_[emit name]_consumer_.in ()))
+ throw ::Components::AlreadyConnected ();
+
+ this->ciao_emits_[emit name]_consumer_ = c;
+}
+
+ACE_INLINE [eventtype]Consumer_ptr
+[ciao module name]::[component name]_Context::disconnect_[emit name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection))
+{
+ if (CORBA::is_nil (this->ciao_emits_[emit name]_consumer_.in ()))
+ throw ::Components::NoConnection ();
+
+ return this->ciao_emits_[emit name]_consumer_._retn ();
+}
+
+##end foreach [emit name] with [eventtype]
+
+// Operations for ::Components::CCMContext
+ACE_INLINE ::Components::Principal_ptr
+[ciao module name]::[component name]_Context::get_caller_principal ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ We don't support Security in CIAO yet.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE ::Components::CCMHome_ptr
+[ciao module name]::[component name]_Context::get_CCM_home ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ::Components::CCMHome::_duplicate (this->home_.in ());
+}
+
+ACE_INLINE CORBA::Boolean
+[ciao module name]::[component name]_Context::get_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+{
+ // @@ We don't support Transaction in CIAO yet.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE ::Components::Transaction::UserTransaction_ptr
+[ciao module name]::[component name]_Context::get_user_transaction ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+{
+ // @@ We don't support Transaction in CIAO yet.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE CORBA::Boolean
+[ciao module name]::[component name]_Context::is_caller_in_role (const char * role)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_UNUSED_ARG (role);
+
+ // @@ We don't support Transaction in CIAO yet.
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE void
+[ciao module name]::[component name]_Context::set_rollback_only ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::IllegalState))
+{
+ // @@ We don't support Transaction in CIAO yet.
+ throw CORBA::NO_IMPLEMENT ();
+}
+
+//////////////////////////////////////////////////////////////////
+// Component Servant Glue code implementation
+//////////////////////////////////////////////////////////////////
+
+##foreach [operation] in all supported interfaces of own component and all inherited components and attribute accessors/mutators
+
+// This is only a guideline... we always relay the operation to underlying
+// executor.
+
+ACE_INLINE [operation return_type]
+[ciao module name]::[component name]_Servant::[operation] ([operation args])
+{
+ // Simply relay to executor. May not need to return the result...
+ return this->executor_->operation ([operation args]);
+}
+
+##end
+
+##foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+// Simplex [receptacle name] connection management operations
+ACE_INLINE void
+[ciao module name]::[component name]_Servant::connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection))
+{
+ this->context_->connect_[receptacle name] (c);
+}
+
+ACE_INLINE [uses type]_ptr
+[ciao module name]::[component name]_Servant::disconnect_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection))
+{
+ return this->context_->disconnect_[receptacle name] ();
+}
+
+ACE_INLINE [uses type]_ptr
+[ciao module name]::[component name]_Servant::get_connection_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->context_->get_connection_[receptacle name] ();
+}
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+
+// Multiplex [receptacle name] connection management operations
+ACE_INLINE ::Components::Cookie *
+[ciao module name]::[component name]_Servant::connect_[receptacle name] ([uses type]_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceedConnectionLimit,
+ ::Components::InvalidConnection))
+{
+ return this->context_->connect_[receptacle name] (c);
+}
+
+ACE_INLINE [uses type]_ptr
+[ciao module name]::[component name]_Servant::disconnect_[receptacle name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection))
+{
+ return this->context_->disconnect_[receptacle name] (ck);
+}
+
+ACE_INLINE [receptacle name]Connections *
+[ciao module name]::[component name]_Servant::get_connections_[receptacle name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->context_->get_connections_[receptacle name] ();
+}
+
+## endif [receptacle name]
+##end foreach [receptacle name] with [uses type]
+
+//////////////////////////////////////////////////////////////////
+// EventConsumer Glue Code implementation
+// @@ We are assuming that these consumers are declared under the same
+// module as the component (thus, we are placing this glue code
+// here under the same namespace. If they are not, we will
+// either be generating them in separate namespaces, or include
+// some other CIDL generated files to get the glue code
+// implementation.
+//////////////////////////////////////////////////////////////////
+
+##foreach [consumer name] with [eventtype] in (list of all consumers) generate:
+
+// Constructor and destructor.
+ACE_INLINE
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::[eventtype]Consumer_[consumer name]_Servant
+ (CCM_[component name]_ptr executor,
+ CCM_[component name]_Context_ptr c)
+ : executor_ (CCM_[component name]::_duplicate (executor)),
+ ctx_ (CCM_[component name]_Context::_duplicate (c))
+{
+}
+
+ACE_INLINE
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::~[eventtype]Consumer_[consumer name]_Servant ()
+{
+}
+
+ACE_INLINE CORBA::Object_ptr
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::_get_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->ctx_->get_CCM_object ();
+}
+
+ACE_INLINE void
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_[eventtype]
+ ([eventtype] *evt)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->executor_->push_[consumer name] (evt);
+}
+
+## foreach [type] in (all parents of eventtype, if any, not including EventConsumerBase)
+ACE_INLINE void
+[ciao module name]::[component name]_Servant::[eventtype]Consumer_[consumer name]_Servant::push_[type]
+ ([type] *evt)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ Problem, there's no way to handle this case.
+
+ // this->executor_->push_[consumer name] (evt ACE_ENV_ARG);
+ throw ::CORBA::BAD_PARAM ();
+}
+## end [type]
+
+##end foreach [consumer name]
+
+// Operations for emits interfaces.
+##foreach [emit name] with [eventtype] in (list of all emitters) generate:
+ACE_INLINE void
+[ciao module name]::[component name]_Servant::connect_[emit name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException
+ ::Components::AlreadyConnected))
+{
+ this->context_->connect_[emit name] (c);
+}
+
+ACE_INLINE [eventtype]Consumer_ptr
+[ciao module name]::[component name]_Servant::disconnect_[emit name] ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::NoConnection))
+{
+ return this->context_->disconnect_[emit name] ();
+}
+##end foreach [emit name] with [eventtype]
+
+// Operations for publishes interfaces.
+##foreach [publish name] with [eventtype] in (list of all publishers) generate:
+ACE_INLINE ::Components::Cookie *
+[ciao module name]::[component name]_Servant::subscribe_[publish name] ([eventtype]Consumer_ptr c)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::ExceededConnectionLimit))
+{
+ return this->context_->subscribe_[publish name] (c);
+}
+
+ACE_INLINE [eventtype]Consumer_ptr
+[ciao module name]::[component name]_Servant::unsubscribe_[publish name] (::Components::Cookie *ck)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::InvalidConnection))
+{
+ return this->context_->unsubscribe_[publish name] (ck);
+}
+##end foreach [publish name] with [eventtype]
+
+//////////////////////////////////////////////////////////////////
+// Component Home Glue code implementation
+//////////////////////////////////////////////////////////////////
+
+ACE_INLINE
+[ciao module name]::[home name]_Servant::[home name]_Servant (CCM_[home name]_ptr exe,
+ CIAO::Session_Container *c)
+ : executor_ (CCM_[home name]::_duplicate (exe)),
+ container_ (c)
+{
+}
+
+ACE_INLINE
+[ciao module name]::[home name]_Servant::~[home name]_Servant (void)
+{
+}
+
+##foreach [operation] in (all explicit operations in [home basename] including its parents)
+
+// The operation impl here. This can simply be relayed to the underlying executor...
+
+## end foreach opeartion
+
+##foreach [factory name] in (all factory operations in [home basename] including its parents)
+// for factory operations inherit from parent home(s), they should return
+// the corresponding component types their homes manage
+ACE_INLINE [component name]_ptr
+[ciao module name]::[home name]_Servant::[factory name] (....)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreateFailure,
+ ....))
+{
+ Components::EnterpriseComponent_var _ciao_ec =
+ this->executor_->[factory name] (....);
+
+ CCM_[component name]_var _ciao_comp
+ = CCM_[component name]::_narrow (_ciao_ec.in ());
+
+ return this->_ciao_activate_component (_ciao_comp.in ());
+}
+##end foreach [factory name]
+
+##foreach [finder name] in (all finder operations in [home basename] including its parents)
+// for finder operations inherit from parent home(s), they should return
+// the corresponding component types their homes manage
+ACE_INLINE [component name]_ptr
+[ciao module name]::[home name]_Servant::[finder name] (....)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::FinderFailure,
+ ....))
+{
+ Components::EnterpriseComponent_var com =
+ this->executor_->[finder name] (....);
+
+ // Do we create a new object reference referring to the same object,
+ // or do we try to create a different objref referring to the same object?
+ return this->_ciao_create_helper (com);
+}
+##end foreach [finder name]
+
+## if [home name] is a keyless home
+
+// Operations for KeylessHome interface
+ACE_INLINE ::Components::CCMObject_ptr
+[ciao module name]::[home name]_Servant::create_component ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CreateFailure))
+{
+ // Simply forward to the create method.
+ return this->create ();
+}
+
+## else [home basename] is keyed home with [key type]
+
+// We do not support key'ed home at the moment but we might
+// as well generate the mapping.
+ACE_INLINE [component name]_ptr
+[ciao module name]::[home name]_Servant::create ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::CreationFailure,
+ ::Components::DuplicateKeyValue,
+ ::Components::InvalidKey))
+{
+ // @@ TO-DO when we suppor keyed home.
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE [component name]_ptr
+[ciao module name]::[home name]_Servant::find_by_primary_key ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::FinderFailure,
+ ::Components::UnknownKeyValue,
+ ::Components::InvalidKey))
+{
+ // @@ TO-DO when we suppor keyed home.
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+
+ACE_INLINE void
+[ciao module name]::[home name]_Servant::remove ([key type] *key)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ ::Components::RemoveFailure,
+ ::Components::UnknownKeyValue,
+ ::Components::InvalidKey))
+{
+ // @@ TO-DO when we suppor keyed home.
+
+ throw CORBA::NO_IMPLEMENT ();
+}
+
+ACE_INLINE [key type] *
+[ciao module name]::[home name]_Servant::get_primary_key ([component name]_ptr comp)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ TO-DO when we suppor keyed home.
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+## endif (keyed or keyless home)
+
+
+// Operations for CCMHome interface
+ACE_INLINE ::CORBA::IRObject_ptr
+[ciao module name]::[home name]_Servant::get_component_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ TO-DO. Contact IfR?
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
+
+ACE_INLINE CORBA::IRObject_ptr
+[ciao module name]::[home name]_Servant::get_home_def ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // @@ TO-DO. Contact IfR?
+
+ ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
+}
diff --git a/modules/CIAO/docs/templates/Executor.idl b/modules/CIAO/docs/templates/Executor.idl
new file mode 100644
index 00000000000..259bffac0df
--- /dev/null
+++ b/modules/CIAO/docs/templates/Executor.idl
@@ -0,0 +1,246 @@
+// $Id$
+
+// ===========================================================
+//
+// @file Executor.idl
+//
+// The purpose of this IDL file is to serve as a template for the CIDL
+// generated equivalent executor file. The CIDL will generate this
+// file directly which, in turn, gets compiled by the TAO IDL compiler
+// to generate the C++ mappings for the stuff defined in this file
+// into a set of [idl-name]EC.{h,inl,cpp} files.
+//
+// This intermediate step is necessary because component implemenetors
+// will need to extend these executor definitions (thru inheritance)
+// to implemenet more complex executor implementations, such as those
+// that support session component interface. (This is necessary to
+// properly support C++ mapping for features such as interface
+// narrowing.)
+//
+// What are missing in the template for executor mappings are the
+// exception specifications for most operations.
+//
+// @author Nanbor Wang <nanbor@cs.wustl.edu>
+//
+// ===========================================================
+
+#ifndef [component_idl]E_IDL
+#define [component_idl]E_IDL
+
+#include "CCM_Container.idl" // Found in $(CIAO_ROOT)/ciao
+ // For various definitions of container
+ // internal/callback interfaces
+#include "[component_idl].idl" // Original component IDL definition
+// @@ We may need to include other *E.idl here.... Can't figure out
+// if we can do this automagically or not.
+
+##if there are module definitions, preserve them all
+module [module_name] {
+##endif
+
+////////////////////////////////////////////////////////////////////
+//// * Iterate thru all supported interface types
+//// It's possible that we need to put some of the common supported
+//// interface definitions into a separate compilation unit. How do we
+//// specify that in CCIDL? I haven't figured that out. Perhaps
+//// allowing CCIDL to compile files that contain no component
+//// definition?
+##foreach [interface_type] in (types of all supported interface) generate:
+
+ local interface CCM_[interface_type] : [interface_type]
+ {
+ };
+
+##end foreach [interface_type]
+
+////////////////////////////////////////////////////////////////////
+//// * Iterate thru all facet ('provides' interface) interface types
+//// It's possible that we need to put some of the common facet
+//// definitions into a separate compilation unit. How do we
+//// specify that in CCIDL? I haven't figured that out. Perhaps
+//// allowing CCIDL to compile files that contain no component
+//// definition?
+##foreach [facet_interface_type] in (types of all facets) generate:
+
+ local interface CCM_[facet_interface_type] : [facet_interface_type]
+ {
+ };
+
+##end foreach [facet_interface_type]
+
+////////////////////////////////////////////////////////////////////
+//// * Iterate thru all event ('emits', "publishes', or 'consumes') types
+//// It's possible that we need to put some of the EventConsumer
+//// definitions into a separate compilation unit. Like in the case
+//// of facets interface mappings, how do we
+//// specify that in CCIDL? I haven't figured that out. Perhaps
+//// allowing CCIDL to compile files that contain no component
+//// definition?
+
+##foreach [eventtype] in (all eventtypes) generate:
+
+ local interface CCM_[eventtype]Consumer
+ {
+ void push (in [eventtype] ev);
+ };
+
+##end foreach [eventtype]
+
+
+////////////////////////////////////////////////////////////////////
+//// * Iterate thru all component definitions in the IDL files.
+//// Notice that there's no distinction between entity and session
+//// components in executor mappings.
+
+##foreach [component basename] in (all component definitions) generate:
+
+ // Component Main Executor Interface. We currently do not
+ // support Executor-based implementation.
+
+ local interface CCM_[component basename]_Executor
+ :
+## if [component basename] inherits from [parent component name]
+ CCM_[parent component name]_Executor
+## else
+ ::Components::EnterpriseComponent
+## endif
+## foreach [interface name] in (all component supported interfaces) generate:
+ , [interface name]
+## end foreach [interface name]
+
+ {
+## foreach [attribute definition] in (attributes defined in [component basename]) generate:
+ [attribute definition];
+## end foreach [attribute definition]
+
+ };
+
+ // Monolithic component executor.
+ // For implementing monolithic component call back interface.
+
+ local interface CCM_[component basename]
+ :
+## if [component basename] inherits from [parent component name]
+ CCM_[parent component name]
+## else
+ ::Components::EnterpriseComponent
+## endif
+## foreach [interface name] in (all component supported interfaces) generate:
+ , [interface name]
+## end foreach [interface name]
+
+ {
+## foreach [attribute definition] in (attributes defined in [component basename]) generate:
+ [attribute definition];
+## end foreach [attribute definition]
+
+## foreach [facet name] with [facet type] in (list of all provided interfaces) generate:
+ CCM_[facet type] get_[facet name] ();
+## end foreach [facet name] with [facet type]
+
+## foreach [event name] with [eventtype] in (list of all event sinks) generate:
+ void push_[event name] (in [eventtype] ev);
+## end foreach [event name] with [eventtype]
+
+ };
+
+ /**
+ * Component Context Interface
+ *
+ * Notice that we are taking a shortcut here to inherit the
+ * component-specific context from SessionContext directly instead
+ * of CCMContext.
+ */
+ local interface CCM_[component basename]_Context
+ :
+## if [component basename] inherits from [parent component name]
+ CCM_[parent component name]_Context
+## else
+ ::Components::SessionContext
+## endif
+ {
+
+## foreach [receptacle name] with [uses type] in (list of all 'uses' interfaces) generate:
+## if [receptacle name] is a simplex receptacle ('uses')
+ [uses type] get_connection_[receptacle name] ();
+## else ([receptacle name] is a multiplex ('uses multiple') receptacle)
+ // [receptacle name]Connections typedef'ed as a sequence of
+ // struct [receptacle name]Connection.
+ [receptacle name]Connections get_connections_[receptacle name] ();
+## endif [receptacle name]
+## end foreach [receptacle name] with [uses type]
+
+## foreach [event name] with [eventtype] in (list of all event sources) generate:
+ void push_[event name] (in [eventtype] ev);
+## end foreach [event name] with [eventtype]
+
+ };
+
+##end foreach [component basename]
+
+
+////////////////////////////////////////////////////////////////////
+//// * Iterate thru all home definitions in the IDL files.
+
+##foreach [home basename] in (all home definitions) generate:
+
+ local interface CCM_[home basename]Explicit
+ :
+## if [home basename] inherits from [parent home name]
+ CCM_[parent home name]Explicit
+## else
+ ::Components::HomeExecutorBase
+## endif
+## foreach [interface name] in (all home supported interfaces) generate:
+ , [interface name]
+## end foreach [interface name]
+ {
+##foreach [operation] in (all explicit operations defined in [home basename])
+
+ // The operation decl here.
+
+## end foreach opeartion
+
+##foreach [factory name] in (all factory operations defined in [home basename])
+ ::Components::EnterpriseComponent [factory name] (....)
+ raise (Components::CreateFailure, ....);
+##end foreach [factory name]
+
+##foreach [finder name] in (all finder operations defined in [home basename])
+ ::Components::EnterpriseComponent [finder name] (....)
+ raise (Components::FinderFailure, ....);
+##end foreach [finder name]
+ };
+
+ local interface CCM_[home basename]Implicit
+ {
+## if [home basename] is a keyless home
+ ::Components::EnterpriseComponent create ()
+ raises (::Components::CCMException);
+## else [home basename] is key'ed home with [key type]
+ // We do not support key'ed home at the moment but we might
+ // as well generate the mapping.
+ ::Components::EnterpriseComponent create (in [key type] key)
+ raises (::Components::CCMException);
+
+ ::Components::EnterpriseComponent find_by_primary_key (in [key type] key)
+ raises (::Components::CCMException);
+
+ void remove (in [key type] key)
+ raises (::Components::CCMException);
+## endif (key'ed or keyless home)
+ };
+
+ local interface CCM_[home basename]
+ : CCM_[home basename]Explicit,
+ CCM_[home basename]Implicit
+ {
+ };
+
+##end foreach [home basename]
+
+##if there are module definitions, preserve them all
+};
+##endif
+
+#endif /* [component_idl]E_IDL */
diff --git a/modules/CIAO/docs/templates/cidl_template.cidl b/modules/CIAO/docs/templates/cidl_template.cidl
new file mode 100644
index 00000000000..3d359708f32
--- /dev/null
+++ b/modules/CIAO/docs/templates/cidl_template.cidl
@@ -0,0 +1,31 @@
+// $Id$ -*- C++ -*-
+
+/**
+ * @file cidl_template.cidl
+ *
+ * This file show an example cidl file.
+ */
+
+// @@ We do not support import (yet).
+//import [component module];
+
+// [idl-basename] contains the IDL3 definitions for component(s) and
+// home(s) and the interfaces that they need.
+
+#include "[idl-basename].idl"
+
+// We only support a simple session implementation definition, for
+// now. @@ What is the relation of various names here and the
+// generated names we used in the glue code?
+composition session [composition name]
+{
+ home executor [home executor name]
+ {
+ implement [home name];
+ manages [component executor name];
+ };
+};
+
+
+// @@ We should also generate somet sort of implementaion template for
+// users. E.g., a set of [idl-basename]_impl.* and the MPC files(?).
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/01.html b/modules/CIAO/docs/tutorials/CoSMIC/01.html
new file mode 100644
index 00000000000..73db63f7236
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/01.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+
+ <meta name="generator" content="HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org" />
+<!-- $Id$ -->
+
+
+
+ <title>Getting Started</title>
+</head>
+
+
+
+<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link="#000fff" vlink="#ff0f0f">
+
+
+<h3>Getting Started<br />
+</h3>
+<b>Writing IDL files</b><br />
+
+ <br />
+
+ We will start from writing the idl file for each component.<br />
+
+
+
+<ol>
+
+ <li>Create a directory named <code><span style="font-style: italic;">MyQuoter</span></code><span style="font-style: italic;">.</span></li>
+
+
+ <li>In <code style="font-style: italic;">MyQuoter</code>
+ directory, create one directory <span style="font-style: italic;">Stock_Base</span> for the base idl and
+ two more directories <span style="font-style: italic;">Broker</span>, <span style="font-style: italic;">Distributor</span> for each component. In
+ <code style="font-style: italic;">MyQuoter/Stock_Base</code>,
+ place an idl file <code style="font-style: italic;">Stock_Base.idl</code> that you could copy
+ from <a href="../Quoter/Simple/Stock_Base/Stock_Base.idl">here</a>. This
+ file defines the interfaces and events that will be used by
+ both Stock Distributor and Stock Broker.</li>
+
+
+ <li style="list-style-type: none; list-style-image: none; list-style-position: outside;">We put together the common
+ interface definitions so the base library can be shared by both
+ components, reducing the size of "real" components.<br />
+ </li>
+
+
+ <li>In <code style="font-style: italic;">MyQuoter/Distributor</code>, place an idl
+ file <code style="font-style: italic;">Distributor.idl</code>
+ that looks like <a href="../Quoter/Simple/Distributor/Distributor.idl">this</a>. This
+ file defines the StockDistributor component
+ interfaces.<br />
+ </li>
+
+
+ <li>In <code style="font-style: italic;">MyQuoter/Broker</code>
+ place an idl file <code><span style="font-style: italic;">Broker.id</span>l</code> that looks like
+ <a href="../Quoter/Simple/Broker/Broker.idl">this</a>. This
+ file defines the StockBroker component interface.<br />
+ </li>
+
+
+</ol>
+<br />
+
+ <b>Importing IDL to PICML</b><br />
+
+ <br />
+
+ &nbsp;&nbsp; To quick start our Stock Quoter modeling process in
+ GME, CoSMIC introduces <em>idl_to_picml</em> , which is an
+ executable program that imports the IDL files you just created
+ into PICML.<br />
+
+
+
+<ol>
+
+ <li>Make sure <code>%COSMIC_ROOT%\bin</code> is included in the
+ PATH variable, e.g., c:\Program
+ Files\ISIS\CoSMIC\bin.<br />
+ </li>
+
+
+ <li>Open a command prompt, run VCVARS32.BAT from the MSVC .NET
+ folder if you haven't done so. It will set the environment for
+ using Microsoft Visual Studio .NET tools so that <span style="font-style: italic;">idl_to_picml</span> works properly.<br />
+
+ in my machine, VCVARS32.bat is in C:\Program Files\Microsoft
+ Visual Studio .NET 2003\Vc7\bin<br />
+ </li>
+
+
+ <li>In the same command prompt, change directory to
+ <code>MyQuoter\</code>, and type the following command:<br />
+
+ &nbsp;&nbsp; &gt; <kbd>idl_to_picml -x MyQuoter -r . -I
+ .\Stock_Base</kbd><br />
+
+ &nbsp;&nbsp; (if the above command does not work, you may also
+ try this<br />
+
+ &nbsp;&nbsp; &gt;<kbd>idl_to_picml -x MyQuoter -r .&nbsp;-I .\Stock_Base -I
+ %TAO_ROOT% -I %TAO_ROOT%\orbsvcs -I
+ %CIAO_ROOT%\ciao)</kbd><br />
+
+ &nbsp; <em>idl_to_picml</em> will parse your IDL files and
+ generated a <code>MyQuoter.xme</code> file in the
+ <code>MyQuoter</code> directory. Note that if -x option is not
+ used, the default xme file name will be
+ <code>PICML_default_xme_file.xme.</code><br />
+
+ 4. Start GME, select <strong>File-&gt;Import xml..</strong>,
+ and choose the xme file just generated. You should be able to
+ see an imported PICML model similar to the one shown in Figure
+ 2.<br />
+ </li>
+
+
+</ol>
+<br />
+
+
+
+<div style="text-align: center;">
+ <img alt="" src="Images/fig2.jpg" style="width: 781px; height: 635px;" /><br />
+
+ <br />
+
+ Figure 2<br />
+
+ </div>
+
+
+
+<p>&nbsp; In the Browser of the generated model, the
+ <em>PredefinedTypes</em> folder contains a bunch of atomic
+ datatype elements that will be referenced by other modeling parts
+ later. You don't have to worry about them for now. The models in
+ <em>InterfaceDefinitions</em> folder are the PICML
+ representations ofthe IDL files you just imported. Double-click
+ to open <em>Broker</em>, it will show you a white, document-like
+ entity which represents a &lt;&lt;FileRef&gt;&gt; instance and a
+ yellow box-shaped entity representing a &lt;&lt;Package&gt;&gt;
+ instance. Their equivalent representations in IDL files are
+ "#include" and "module" respectively. Figure 3 gives you a clear
+ view of GME representation of all the 3 idl files created. We
+ will cover the other folders in the next section.</p>
+
+
+
+<div style="text-align: center;">
+ <img alt="" src="Images/fig3.jpg" style="width: 223px; height: 336px;" /><br />
+
+ <br />
+
+ Figure 3<br />
+
+ <br />
+
+ </div>
+Now we are ready to model the rest of the Stock Quoter
+ systems.<br />
+
+ <br />
+
+ <br />
+
+ <br />
+
+
+<hr />
+
+
+<address>
+ <a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br />
+</a>
+ </address>
+<!-- Created: Sat Nov 27 15:25:06 CST 1999 -->
+ <!-- hhmts start -->
+ Last modified:<!-- hhmts end -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/02.html b/modules/CIAO/docs/tutorials/CoSMIC/02.html
new file mode 100644
index 00000000000..8f4e7decc11
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/02.html
@@ -0,0 +1,554 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+ <meta name="generator" content="HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org" />
+ <title>Building a Stock Quoter with TAO - A Tutorial</title>
+
+
+<!-- $Id$ -->
+ <link rel="stylesheet" type="text/css" href="style.css" />
+
+</head>
+
+
+
+<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link="#000fff" vlink="#ff0f0f">
+
+<h3>Building Stock Quoter system in PICML</h3>
+
+<br />
+
+<p>This section describes modeling the Quoter application using
+PICML. If you have trouble producing a functioning model from this
+tutorial, please see the, <a href="Model/Quoter.xme">pre-built
+Quoter model</a> which is provided for your reference. This model
+contains all elements created as part of this tutorial.</p>
+
+<div class="important"> <strong>Note:</strong>
+To import an XML file in GME, select <em>File-&gt;Import
+XML..</em> from GME and choose your XML model<br />
+
+</div>
+
+<p>The PICML paradigm is designed for the <a href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-08">OMG
+Deployment &amp; Configuration (D&amp;C) specification
+(ptc/2003-07-08)</a>, so the modeling process is straightforward
+if you are familiar with the specification. Please see the <a href="../../releasenotes/dance.html">DAnCE
+project</a> for more information.&nbsp;For those who hate specification (including me, :-)), an <a href="http://www.cs.wustl.edu/%7Eschmidt/PDF/DAnCE.pdf">overview of D&amp;C</a> and as well as a <a href="http://www.cs.wustl.edu/%7Eschmidt/OMG-CCM-Tutorial.ppt">tutorial of D&amp;C and CCM</a> can help to reduce the learning curve.
+(Thanks to Sowayan, Abdulah for pointing this out).
+In addition, it is also helpful to read through Chapter 32 of TAO's
+Developer's Guide 1.4a (CIAO and CCM) which thoroughly describes the
+various descriptors required for a component (*.iad, *.ccd, *.cid,
+etc). </p>
+<h3>Table of Contents</h3>
+
+<ul>
+
+ <li><a href="#1">ImplementationArtifacts</a></li>
+
+ <li><a href="#2">ComponentImplementations</a></li>
+
+ <li><a href="#3">ComponentPackages</a></li>
+
+ <li><a href="#4">PackageConfiguration</a></li>
+
+ <li><a href="#5">TopLevelPackage</a></li>
+
+ <li><a href="#6">Targets</a></li>
+
+ <li><a href="#7">DeploymentPlan</a></li>
+
+</ul>
+
+<hr />
+<p>The complete PICML Quoter model consists of modeling elements
+distributed across various folders. If you used <em>idl_to_picml</em>
+to generate the initial model, you will see that it has created all
+these folders and some of the tedious boilerplate modeling for us. The
+rest of the section will explain the purpose of each folder as well as
+the modeling entities contained in these folders. We will also show how
+to model some of the folders that have to be done by hand.</p>
+
+<div class="important"> <strong>Important:</strong>
+The interpreters that generate deployment artifacts expect very strict
+constraints in the model. When you finish your model, and any time you
+wish to generate anything, it is a good idea to check constraints by
+clicking on <em>File-&gt;Check-&gt;Check All</em>
+in GME. This will help you find many logic errors in your model. </div>
+
+<h3><a name="1">ImplementationArtifacts</a></h3>
+
+<p>This folder contains implementation artifacts associated with
+components. <em>idl_to_picml</em> has created these
+artifacts for us, with their dependency relationships correctly
+captured. Figure 4 shows the Implementation Artifacts for <em>Broker</em>.</p>
+
+<div style="text-align: center;"> <img alt="" src="Images/fig4.jpg" style="border: 1px solid ; width: 891px; height: 552px;" /><a name="1"><br />
+
+Figure 4.<br />
+
+</a><br />
+
+</div>
+
+<a name="1"></a>
+<hr />
+<h3><a name="2">ComponentImplementation</a></h3>
+
+<p>This folder contains models that describe the implementations
+of component interfaces. In the Quoter example, we will have two
+monolithic component implementations - named <em>StockDistributorImplementation</em>
+and <em>StockBrokerImplementation</em> - and an assembly
+component implementation named <em>StockQuoter</em>, which
+is an assembly of <em>StockDistributorImplementation</em>
+and <em>StockBrokerImplementaion</em>. <em>idl_to_picml</em>
+has created the monolithic component implementations for us, as shown
+in figure 5 for example, but we have to specify the connections between
+them in order to construct a Quoter system.</p>
+
+<div style="text-align: center;"> <img alt="" src="Images/fig5.jpg" style="border: 1px solid ; width: 922px; height: 639px;" /><br />
+
+Figure 5<br />
+
+</div>
+
+<p>Assembly components provide a boundary for the composition of
+monolithic components and even other assemblies. Assembly components do
+not provide actual implementations for their interface, it is a virtual
+component that delegates its ports and attributes to one or more of the
+entities it contains. There are slight differences between modeling an
+assembly and modeling a monolithic component. Since the assembly is a
+virtual component, it is not necessary to model a <code>MonolithicImplementation</code>.
+Instead, <em>instances</em> of other components are placed
+within the assembly and connected. Let's try to assemble the <em>StockQuoter</em>.</p>
+
+<ol>
+
+ <li>Right click the <em>ComponentImplementations</em>
+folder, choose <strong>Insert
+Model-&gt;ComponentImplementationContainer</strong>, rename
+it as "StockQuoterImplementation" in the Attribute Panel. Double click
+to open it.</li>
+
+ <li>From the Part Browser, drag a
+&lt;&lt;ComponentAssembly&gt;&gt; to the modeling
+window, name it "StockQuoter". Double click to open it.</li>
+
+ <li>Now we will create two instances for interfaces <em>StockBroker</em>
+and <em>StockDistributor</em>. To do that, expand the
+folder <code><em>InterfaceDefinitions</em></code>,
+then expand the <code><em>InterfaceDefinitions/</em></code>
+ <em>Broker</em>, then <code><em>InterfaceDefinitions/</em></code>
+ <em>Broker/ Stock</em> until the interface definition
+of <em>StockBroker</em> shows. While expanding the tree,
+always keep the "StockQuoter"
+&lt;&lt;ComponentAssembly&gt;&gt; window open. Then
+drag <code>MyQuoter/InterfaceDefinitions/Broker/Stock/StockBroker</code>
+in the browser to the "StockQuoter"
+&lt;&lt;ComponentAssembly&gt;&gt; window while pressing
+ALT key. Repeat the same steps for <code>MyQuoter/InterfaceDefinitions/Distributor/Stock/StockDistributor</code>,
+and you will see two instances of component interfaces have been
+created as shown in Figure 6 (the black line in the figure only
+indicates .mapping)<br />
+
+ </li>
+
+</ol>
+
+<br />
+
+<div style="text-align: center;"> <img alt="" src="Images/fig6.jpg" style="width: 972px; height: 714px;" /><br />
+
+<br />
+
+Figure 6<br />
+
+</div>
+
+<ol>
+
+ <li value="4">Create an
+&lt;&lt;PublishConnector&gt;&gt;.<br />
+
+ </li>
+
+ <li>Now assemble the components together according to <a href="Images/fig1.jpg">Figure 1</a>(make sure you
+change to connect mode <img alt="" src="Icons/AddConnMode.gif" style="width: 20px; height: 17px;" />
+) and the resulting assembly model should look like Figure 7. Note that
+to create connections between StockDistributor.notify_out and
+StockBroker.notify_in, you will need the intermediate connector
+&lt;&lt;PublishConnector&gt;&gt;.<br />
+
+ </li>
+
+</ol>
+
+<img alt="" src="Images/fig7.jpg" style="width: 724px; height: 402px;" /><br />
+
+<br />
+
+Figure 7<br />
+
+<hr /> <a name="3"></a>
+<h3>ComponentPackage<br />
+
+</h3>
+
+This folder contains deployable component packages. Every instance in
+an assembly should have a corresponding monolithic implementation and
+packaged in a ComponentPackagebe To create a package for <em>StockBroker</em>.instance<br />
+
+<ol>
+
+ <li>Right click folder <em>ComponentPackage</em>s
+, insert a &lt;&lt;PackageContainer&gt;&gt;, name it
+"Broker"; Double click to open it.<br />
+
+ </li>
+
+ <li>From the PartBrowser, add the following:<br />
+
+ <ul>
+
+ <li>a &lt;&lt;ComponentPackage&gt;&gt;
+named "Broker";</li>
+
+ <li>a
+&lt;&lt;ComponentImplementationReference&gt;&gt; named
+"Broker";</li>
+
+ <li>a &lt;&lt;ComponentRef&gt;&gt; named
+"Broker";</li>
+
+ </ul>
+
+ </li>
+
+ <li>Refer the
+&lt;&lt;ComponentImplementationReference&gt;&gt; <em>Broker</em>
+to <code>MyQuoter/ComponentImplementations/StockBroker</code>Implementation/StockBrokerMonolithicImpl.
+Refer the &lt;&lt;ComponentRef&gt;&gt; <em>Broker</em>
+to <code>MyQuoter/InterfaceDefinitions/Broker/Stock/StockBroker</code>.
+To create a reference in GME, simply drag the tree node in the Browser
+"into" the reference model. For example, you should drag the tree node <code>MyQuoter/ComponentImplementations/StockBroker</code>Implementation/StockBrokerMonolithicImpl
+into &lt;&lt;ComponentImplementationReference&gt;&gt; <em>Broker.</em>
+Check GME manual(tutorials) for more information.</li>
+
+ <li>Switch to Connect Mode and create two connections according
+to the following relationship.<br />
+
+ <ul>
+
+ <li>&lt;&lt;ComponentImplementationReference&gt;&gt;
+ <em>Broker</em> implements
+&lt;&lt;ComponentPackage&gt;&gt; <em>Broker</em>;</li>
+
+ <li>&lt;&lt;ComponentPackage&gt;&gt; <em>Broker</em>
+realizes &lt;&lt;ComponentRef&gt;&gt; <em>Broker</em>.</li>
+
+ </ul>
+
+ <br />
+
+ <br />
+
+&nbsp;&nbsp;&nbsp;&nbsp; The model you built should
+resemble Figure 8.<br />
+
+ <br />
+
+ <div style="text-align: center;"> <img alt="" src="Images/fig8.jpg" style="width: 675px; height: 497px;" /><br />
+
+ <br />
+
+Figure 8<br />
+
+ <br />
+
+ </div>
+
+Now create a ComponentPackage/StockDistributor following the same
+steps. </li>
+
+ <li style="list-style-type: none; list-style-image: none; list-style-position: outside;">
+ <br />
+
+We will also need to create a package for the assembly component
+StockQuoter. Remember assembly component is a virtual component, it
+does not "realize" a certain interface, so different from the Broker
+and Distributor packages, the StockQuoter does not need a
+&lt;&lt;ComponentRef&gt;&gt;. To create this model:
+ <ol>
+
+ <li>Insert a
+&lt;&lt;ComponentPackage&gt;&gt; named "StockQuoter"<br />
+
+ </li>
+
+ <li>Add a
+&lt;&lt;ComponentImplementationReference&gt;&gt; named
+"StockQuoter", refer it to MyQuoter<code>/ComponentImplementations/StockQuoter/StockQuoter</code></li>
+
+ <li>Switch to connect mode and connect
+&lt;&lt;ComponentImplementationReference&gt;&gt;
+StockQuoter with &lt;&lt;ComponentPackage&gt;&gt;
+StockQuoter, as in Figure 9.<br />
+
+ </li>
+
+ </ol>
+
+ </li>
+
+</ol>
+
+<div style="text-align: center;"> <img alt="" src="Images/fig9.jpg" style="width: 549px; height: 354px;" /><br />
+
+<br />
+
+Figure 9<br />
+
+<br />
+
+</div>
+
+<hr /> <a name="4"></a>
+<h3>PackageConfiguration<br />
+
+</h3>
+
+This folder contains just one model capturing specific configuration of
+Component packages.<br />
+
+<ol>
+
+ <li>In the folder <em>PackageConfiguratio</em>n,
+and create a
+&lt;&lt;PackageConfigurationContainer&gt;&gt;, name it
+"Default", click to open it.<br />
+
+ </li>
+
+ <li>Add a &lt;&lt;PackageConfiguration&gt;&gt;
+named "default" and a
+&lt;&lt;ComponentPackageReference&gt;&gt;, name it
+"StockQuoter", connect "Default" to "StockQuoter"<br />
+
+ </li>
+
+ <li>Refer
+&lt;&lt;ComponentPackageReference&gt;&gt; StockQuoter
+to &lt;&lt;ComponentPackage&gt;&gt; <code>MyQuoter/ComponentPackage/StockQuoter/StockQuoter<br />
+
+(Not &lt;&lt;ComponentImplementationReference&gt;&gt;</code>
+ <code>MyQuoter/ComponentPackage/StockQuoter/StockQuoter!)&nbsp;</code></li>
+
+</ol>
+
+<br />
+
+<hr /> <a name="5"></a>
+<h3>ToplevelPackage<br />
+
+</h3>
+
+This folder contains one model capturing information about the
+top-level element that will be fed to the application.<br />
+
+<ol>
+
+ <li>In the folder <em>ToplevelPackage</em>, and
+create a &lt;&lt;ToplevelPackageContainer&gt;&gt;, name
+it "Default", double click to open it.<br />
+
+ </li>
+
+ <li>Add a &lt;&lt;ToplevelPackage&gt;&gt; named
+"ToplevelPackage" and a
+&lt;&lt;PackageConfigurationReference&gt;&gt;, name it
+"Default", connect "ToplevelPackage" to "Default"<br />
+
+ </li>
+
+ <li>Refer "Default" to My<code>Quoter/PackageConfiguration/Default/Default</code><br />
+
+ </li>
+
+</ol>
+
+<br />
+
+<hr /> <a name="6"></a>
+<h3>Targets<br />
+
+</h3>
+
+This folder contains domain-specific models capturing information about
+the target environment in which component-based application will be
+deployed. In this Quoter example, we can either deploy the two
+components into ONE host, or into TWO different host. We will deploy
+the Quoter into two different host.<br />
+
+<ol>
+
+ <li>In the folder <span style="font-style: italic;">Targets</span>,
+insert a new &lt;&lt;Domain&gt;&gt; named "Domain";
+double click to open it.<br />
+
+ </li>
+
+ <li>From the Part Browser, add two
+&lt;&lt;Node&gt;&gt; named "Broker" and "Distributor"
+respectively.<br />
+
+ </li>
+
+</ol>
+
+<br />
+
+Now we are ready to deploy our Components to the actual physical
+environment.<br />
+
+<hr /> <a name="7"></a>
+<h3>DeploymentPlan<br />
+
+</h3>
+
+This folder contains a plan model that captures information about the
+assignment of component to nodes.<br />
+
+<ol>
+
+ <li>In the folder <em>DeploymentPlan</em>, insert
+a model &lt;&lt;DeploymentPlan&gt;&gt;; name it "Plan",
+click to open it<br />
+
+ </li>
+
+ <li>From the PartBrowser, add the following:<br />
+
+ <ul>
+
+ <li>Two &lt;&lt;CollocationGroup&gt;&gt;</li>
+
+ <li>Two &lt;&lt;NodeReference&gt;&gt; named
+"Node_Broker" and "Node_Distributor" respectively, refering to <code>MyQuoter/Targets/Domain/Broker</code>
+and <code>MyQuoter/Targets/Domain/Distributor</code>
+respectively</li>
+
+ <li>Two &lt;&lt;ComponentRef&gt;&gt; named
+"StockBroker" and "StockDistributor" respectively, refering to <code>MyQuoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockBroker</code>
+and <code>MyQuoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockDistributor</code>
+respectively. Note that the
+&lt;&lt;ComponentRef&gt;&gt; in DeploymentPlan is not
+referring to the interface, but rather the actual instance of the
+implementation.</li>
+
+ </ul>
+
+ </li>
+
+ <li>Switch to Connect Mode, connect one
+&lt;&lt;CollocationGroup&gt;&gt; to
+&lt;&lt;NodeReference&gt;&gt; <em>Node_Broker</em>,
+connect another &lt;&lt;CollocationGroup&gt;&gt; to
+&lt;&lt;NodeReference&gt;&gt; <em>Node_</em><em>Distributor</em>.
+Now the model looks like the following.<br />
+
+ <br />
+
+ <div style="text-align: center;"> <img alt="" src="Images/fig10.jpg" style="width: 752px; height: 530px;" /><br />
+
+ <br />
+
+Figure 10.<br />
+
+ <br />
+
+ </div>
+
+ </li>
+
+ <li>Now we need to associate
+&lt;&lt;ComponentRef&gt;&gt; StockBroker to the
+&lt;&lt;CollocationGroup&gt;&gt; running on the
+&lt;&lt;NodeReference&gt;&gt; Broker, and
+&lt;&lt;ComponentRef&gt;&gt; StockDistributor to the
+&lt;&lt;CollocationGroup&gt;&gt; running on the
+&lt;&lt;NodeReference&gt;&gt; Distributor. To do that,
+switch the Edit Mode Bar to Set Mode (<img alt="" src="Icons/SetMode.gif" style="width: 20px; height: 17px;" />),
+and move the cursor to the
+&lt;&lt;CollocationGroup&gt;&gt; running on
+&lt;&lt;NodeReference&gt;&gt; Distributor, right-click
+on it. You will find the cursor is changed to set mode cursor, and only
+the &lt;&lt;CollocationGroup&gt;&gt; you clicked in is
+highlighted, as shown in Figure 11.<br />
+
+ <br />
+
+ </li>
+
+</ol>
+
+<div style="text-align: center;"> <img alt="" src="Images/fig11.jpg" style="width: 672px; height: 505px;" /><br />
+
+<br />
+
+Figure 11<br />
+
+<br />
+
+</div>
+
+<p>Now move your cursor to
+&lt;&lt;ComponentRef&gt;&gt;&nbsp;
+StockDistributor, and left-click it, so that it looks like Figure 12.<br />
+
+</p>
+
+<div style="text-align: center;"> <img alt="" src="Images/fig12.jpg" style="width: 672px; height: 505px;" /><br />
+
+<br />
+
+Figure 12<br />
+
+<br />
+
+</div>
+
+<p>This operation associates <em>StockDistributor</em>
+component to the &lt;&lt;CollocationGroup&gt;&gt;
+running on <em>Distributor</em> node. To do the same with
+Broker, just right-click on another
+&lt;&lt;CollocationGroup&gt;&gt;, and left-click on
+StockBroker &lt;&lt;CollocationGroup&gt;&gt; which is
+highlighted.<br />
+
+<br />
+
+</p>
+
+<hr /> <a name="8"></a>
+<p>Up to this point, we are basically done with the modeling
+part. Before we generate anything from this model though, please <span style="font-weight: bold;">DO</span> remember to check
+the constraints of the model as we mentioned earlier.</p>
+
+<p>After we are done with the modeling, the
+flattened_deploymentplan interpreter that comes along with PICML will
+help us to generate a flattened_deploymentplan.cdp file. Please make
+sure you generate this file to MyQuoter/descriptors. Note that to get the example working<span style="font-family: monospace;">,</span>a Node Map file should be created to map logical<span style="font-family: monospace;"> </span>nodes to NodeManager object references,e.g:<br />
+</p>
+<pre wrap="">DistributorNode corbaloc:iiop:localhost:30000/NodeManager<br />BrokerNode corbaloc:iiop:localhost:40000/NodeManager</pre>
+
+<address> <br />
+
+<a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br />
+
+</a> </address>
+
+<!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->
+Last modified:<!-- hhmts end -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/03.html b/modules/CIAO/docs/tutorials/CoSMIC/03.html
new file mode 100644
index 00000000000..c2da3726762
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/03.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+ <title>Building a Stock Quoter with TAO - A Tutorial</title>
+ <!-- $Id$ -->
+</head>
+
+<body style=
+"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link=
+"#000FFF" vlink="#FF0F0F">
+ <h3>Implementing Quoter Components with DAnCE<br /></h3>We
+ discuss this section after the PICML modeling only because we
+ would like to focus our attention more on the modeling stage. It
+ does not indicate that the implementation of components has to be
+ subsequent to the work we've done under GME. They are totally
+ orthogonal to each other. In fact, they are so orthogonal&nbsp;
+ that we won't go into details as to how DAnCE programming should
+ be done. We'll briefly go through the functionality of each
+ component and provides the links to their implementations
+ respectively. For a hands on experience on DAnCE programming,
+ please refer to $CIAO_ROOT/examples/Hello.<br />
+ <br />
+ <big><big><small>Broker Component<br />
+ &nbsp;&nbsp;&nbsp;</small></big></big> The Broker component
+ waits to be notified by the Distributor component about stock
+ changes. When a stock change event arrives,&nbsp; it will go back
+ to Distributor component and retrieve the information it interest
+ in and output them to the console. The users are allowed to
+ subscribe to the interested stock value through the interface
+ supported by Broker component. Here's the complete version of
+ <a href="../Quoter/Simple/Broker/Broker_exec.h">Broker_exec.h</a>
+ and <a href=
+ "../Quoter/Simple/Broker/Broker_exec.cpp">Broker_exec.cpp</a>.<br />
+
+ <br />
+ <big><big><small>Distributor Component<br />
+ &nbsp;&nbsp;</small></big></big> The Distributor component
+ monitors the real time stock database and publishes events
+ whenever it detects stock change. In our program, we use a
+ ACE_Task&nbsp; to simulate this real-life activity. The task
+ will run in a separate thread and periodically increment the
+ stock value by 1. In the same time the stock value is
+ incremented, an <span style=
+ "font-style: italic;">StockName</span> event along with the name
+ of the changed stock will be sent. Here's the complete version of
+ <a href=
+ "../Quoter/Simple/Distributor/Distributor_exec.h">Distributor_exec.h</a>
+ and <a href=
+ "../Quoter/Simple/Distributor/Distributor_exec.cpp">Distributor_exec.cpp</a><br />
+
+ <big><big><small><br />
+ Broker client<br />
+ &nbsp;&nbsp;&nbsp;</small></big></big> The Broker client program
+ is the driver program for client to control Broker component,
+ subscribe and unsubscribe to a specific stock. Here's the
+ complete version of <a href=
+ "../Quoter/Simple/Broker/Broker.cpp">Broker.cpp</a><br />
+ <br /><big><big><small>
+ Distributor client</small></big></big><br />
+ &nbsp;&nbsp;&nbsp;&nbsp; The Distributor
+ client program is the driver program for client to control
+ Distributor component, turn on and off the distribution service,
+ set up the frequency, etc. Here's the complete version of
+ <a href="../Quoter/Simple/Distributor/Distributor.cpp">Distributor.cpp</a>
+ <a name="2" /><br />
+ <br /><br />
+
+
+ <address>
+ <a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br /></a>
+ </address><!-- Created: Sat Nov 27 15:25:06 CST 1999 -->
+ <!-- hhmts start -->
+ <a href="mailto:ming.xiong@vanderbilt.edu">Last modified:
+ <!-- hhmts end --></a>
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/04.html b/modules/CIAO/docs/tutorials/CoSMIC/04.html
new file mode 100644
index 00000000000..dce2fb1364c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/04.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org" />
+
+ <title>Building a Stock Quoter with TAO - A Tutorial</title>
+ <!-- $Id$ -->
+</head>
+
+<body style=
+"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link=
+"#000FFF" vlink="#FF0F0F">
+ <h3>Running the application<br /></h3>Now that we have all the
+ components and driver programs successfully built, along with the
+ flattened_deploymentplan generated by PICML, we will be able to
+ run our application<br />
+ <br />
+ From different command prompts in
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/descriptors/</code>
+ directory:
+
+ <ul>
+ <li>Start NodeManagers (NodeDameon) by running
+ <code>runNodeDaemon.pl</code></li>
+
+ <li>Start the execution manager
+ <code>%CIAO_ROOT%/DAnCE/ExecutionManager/Execution_Manager -o
+ ior -i Stock.dat</code>&nbsp;</li>
+ </ul>
+
+ <p>The <code>Stock.dat</code> file describes the deployment
+ daemons CIAO's Execution_Manager will contact to instantiate
+ ComponentServer's, home's, and component instances. Each line
+ specify the name of a installation "destination" and the
+ corresponding IOR for the CIAO_Daemon.</p>
+
+ <ul type="square">
+ <li><em>NOTE</em>: As one can see, we use the "Stock.dat" file
+ to instruct the Execution_Manager how to find the endpoint of
+ each individual NodeManager (i.e., Node Daemon) where
+ component(s) will be deployed, so this is non-standard. We plan
+ to use Naming Service to do this in the future.</li>
+ </ul>
+
+ <ul>
+ <li>Start the plan_launcher by running
+ <code>%CIAO_ROOT%/DAnCE/Plan_Launcher/Plan_Launcher -p
+ flattened_deploymentplan.cdp -k file://ior</code></li>
+
+ <li>By now the components should be successfully deployed. You
+ may run the driver program to start the application. e.g. you
+ can try the following<br /></li>
+ </ul>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/Distributor.exe
+ -o</code><br />
+ <br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+ -s MSFT</code><br />
+ <br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+ -s IBM</code><br />
+ <br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+ -u MSFT</code><br />
+ <br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/Distributor.exe
+ -f</code><br />
+ <br />
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Icons/AddConnMode.gif b/modules/CIAO/docs/tutorials/CoSMIC/Icons/AddConnMode.gif
new file mode 100644
index 00000000000..3604d32946d
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Icons/AddConnMode.gif
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Icons/SetMode.gif b/modules/CIAO/docs/tutorials/CoSMIC/Icons/SetMode.gif
new file mode 100644
index 00000000000..6dcad861f07
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Icons/SetMode.gif
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig1.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig1.jpg
new file mode 100644
index 00000000000..a8550fe1176
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig1.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig10.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig10.jpg
new file mode 100644
index 00000000000..3db5ac174e0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig10.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig11.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig11.jpg
new file mode 100644
index 00000000000..c5eaf705384
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig11.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig12.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig12.jpg
new file mode 100644
index 00000000000..ea2a885af6b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig12.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig2.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig2.jpg
new file mode 100644
index 00000000000..49d6f90c3b0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig2.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig3.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig3.jpg
new file mode 100644
index 00000000000..0559dc7382b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig3.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig4.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig4.jpg
new file mode 100644
index 00000000000..8fb89eccb57
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig4.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig5.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig5.jpg
new file mode 100644
index 00000000000..e847b9290d6
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig5.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig6.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig6.jpg
new file mode 100644
index 00000000000..0a214c84ea8
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig6.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig7.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig7.jpg
new file mode 100644
index 00000000000..67d90b775b0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig7.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig8.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig8.jpg
new file mode 100644
index 00000000000..a565c2ab989
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig8.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Images/fig9.jpg b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig9.jpg
new file mode 100644
index 00000000000..996d90d800b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Images/fig9.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/Model/Quoter.xme b/modules/CIAO/docs/tutorials/CoSMIC/Model/Quoter.xme
new file mode 100644
index 00000000000..10f968f69ca
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/Model/Quoter.xme
@@ -0,0 +1,2003 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE project SYSTEM "mga.dtd">
+
+<project guid="{693BB5A4-CC13-45F0-8470-8F189DE22CF8}" cdate="Thu Feb 02 21:46:10 2006" mdate="Thu Feb 02 21:46:10 2006" version="" metaguid="{3F14D74F-DE80-4071-8F14-550B6023233F}" metaversion="" metaname="PICML">
+ <name>MyQuoter</name>
+ <comment></comment>
+ <author></author>
+ <folder id="id-006a-00000001" relid="0x1" childrelidcntr="0x2" kind="RootFolder">
+ <name>MyQuoter</name>
+ <folder id="id-006a-00000002" relid="0x2" childrelidcntr="0x3" kind="InterfaceDefinitions">
+ <name>InterfaceDefinitions</name>
+ <model id="id-0065-00000001" kind="File" relid="0x1" childrelidcntr="0x1">
+ <name>Stock_Base</name>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000002" kind="Package" role="Package" relid="0x1" childrelidcntr="0x5">
+ <name>Stock</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>293,153</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000003" kind="Exception" role="Exception" relid="0x1" childrelidcntr="0x0">
+ <name>Invalid_Stock</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>151,84</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <model id="id-0065-00000004" kind="Aggregate" role="Aggregate" relid="0x3" childrelidcntr="0x4">
+ <name>StockInfo</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>517,316</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000018" kind="Member" role="Member" relid="0x1" referred="id-0066-00000003">
+ <name>name</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>188,108</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000019" kind="Member" role="Member" relid="0x2" referred="id-0066-00000007">
+ <name>high</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>408,248</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001a" kind="Member" role="Member" relid="0x3" referred="id-0066-00000007">
+ <name>low</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>628,388</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001b" kind="Member" role="Member" relid="0x4" referred="id-0066-00000007">
+ <name>last</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>848,528</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-00000005" kind="Object" role="Object" relid="0x4" childrelidcntr="0x1">
+ <name>StockQuoter</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,432</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="abstract" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="local" status="meta">
+ <value>false</value>
+ </attribute>
+ <model id="id-0065-00000006" kind="TwowayOperation" role="TwowayOperation" relid="0x1" childrelidcntr="0x3">
+ <name>get_stock_info</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000001" kind="ReturnType" role="ReturnType" relid="0x1" referred="id-0065-00000004">
+ <name>ReturnType</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>243,143</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000002" kind="ExceptionRef" role="ExceptionRef" relid="0x4" referred="id-0065-00000003">
+ <name>ExceptionRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>1068,668</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001c" kind="InParameter" role="InParameter" relid="0x3" referred="id-0066-00000003">
+ <name>stock_name</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>793,493</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ </model>
+ <model id="id-0065-00000007" kind="Event" role="Event" relid="0x5" childrelidcntr="0x1">
+ <name>StockName</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>883,548</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="abstract" status="meta">
+ <value>false</value>
+ </attribute>
+ <reference id="id-0067-0000001d" kind="Member" role="Member" relid="0x1" referred="id-0066-00000003">
+ <name>name</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <reference id="id-0067-00000017" kind="Collection" role="Collection" relid="0x2" referred="id-0066-0000000b">
+ <name>ImageBlob</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,200</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </reference>
+ </model>
+ </model>
+ <model id="id-0065-00000008" kind="File" relid="0x2" childrelidcntr="0x2">
+ <name>Broker</name>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000009" kind="Package" role="Package" relid="0x2" childrelidcntr="0x4">
+ <name>Stock</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>314,216</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-0000000a" kind="Object" role="Object" relid="0x1" childrelidcntr="0x2">
+ <name>StockSubscriber</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>243,143</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="abstract" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="local" status="meta">
+ <value>false</value>
+ </attribute>
+ <model id="id-0065-0000000b" kind="TwowayOperation" role="TwowayOperation" relid="0x1" childrelidcntr="0x2">
+ <name>stock_subscribe</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,201</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000004" kind="ExceptionRef" role="ExceptionRef" relid="0x2" referred="id-0065-00000003">
+ <name>ExceptionRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,434</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001e" kind="InParameter" role="InParameter" relid="0x1" referred="id-0066-00000003">
+ <name>stock_name</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,201</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-0000000c" kind="TwowayOperation" role="TwowayOperation" relid="0x2" childrelidcntr="0x2">
+ <name>stock_unsubscribe</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,434</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000005" kind="ExceptionRef" role="ExceptionRef" relid="0x2" referred="id-0065-00000003">
+ <name>ExceptionRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,434</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001f" kind="InParameter" role="InParameter" relid="0x1" referred="id-0066-00000003">
+ <name>stock_name</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,201</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ </model>
+ <model id="id-0065-0000000d" kind="Component" role="Component" relid="0x2" childrelidcntr="0x3">
+ <name>StockBroker</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>426,242</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID">
+ <value>58E736A4-F9F5-44CF-AA0F-83A280F907A6</value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000006" kind="Supports" role="Supports" relid="0x1" referred="id-0065-0000000a">
+ <name>Supports</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>55,160</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000007" kind="RequiredRequestPort" role="RequiredRequestPort" relid="0x2" referred="id-0065-00000005">
+ <name>read_quoter</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>69,307</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="multiple_connections">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-00000008" kind="InEventPort" role="InEventPort" relid="0x3" referred="id-0065-00000007">
+ <name>notify_in</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>83,433</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ </model>
+ <model id="id-0065-0000000e" kind="ComponentFactory" role="ComponentFactory" relid="0x3" childrelidcntr="0x0">
+ <name>StockBrokerHome</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>793,493</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <connection id="id-0068-00000001" kind="ManagesComponent" role="ManagesComponent" relid="0x4">
+ <name>ManagesComponent</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ws</value>
+ </regnode>
+ <connpoint role="dst" target="id-0065-0000000d"/>
+ <connpoint role="src" target="id-0065-0000000e"/>
+ </connection>
+ </model>
+ <reference id="id-0067-00000003" kind="FileRef" role="FileRef" relid="0x1" referred="id-0065-00000001">
+ <name>FileRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>174,181</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-0000000f" kind="File" relid="0x3" childrelidcntr="0x2">
+ <name>Distributor</name>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000010" kind="Package" role="Package" relid="0x2" childrelidcntr="0x4">
+ <name>Stock</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,434</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000011" kind="Object" role="Object" relid="0x1" childrelidcntr="0x2">
+ <name>Trigger</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>243,143</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="abstract" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="local" status="meta">
+ <value>false</value>
+ </attribute>
+ <model id="id-0065-00000012" kind="TwowayOperation" role="TwowayOperation" relid="0x1" childrelidcntr="0x0">
+ <name>start</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,201</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <model id="id-0065-00000013" kind="TwowayOperation" role="TwowayOperation" relid="0x2" childrelidcntr="0x0">
+ <name>stop</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,434</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ </model>
+ <model id="id-0065-00000014" kind="Component" role="Component" relid="0x2" childrelidcntr="0x4">
+ <name>StockDistributor</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID">
+ <value>B124B4A8-F51C-4F63-9A08-35256C9A9259</value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000015" kind="Attribute" role="Attribute" relid="0x4" childrelidcntr="0x1">
+ <name>rate</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>848,528</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000020" kind="AttributeMember" role="AttributeMember" relid="0x1" referred="id-0066-00000007">
+ <name>AttributeMember</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <reference id="id-0067-0000000a" kind="Supports" role="Supports" relid="0x1" referred="id-0065-00000011">
+ <name>Supports</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>188,108</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000000b" kind="ProvidedRequestPort" role="ProvidedRequestPort" relid="0x2" referred="id-0065-00000005">
+ <name>push_quoter</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>608,216</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-0000000c" kind="OutEventPort" role="OutEventPort" relid="0x3" referred="id-0065-00000007">
+ <name>notify_out</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>628,388</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="out_event_port_type" status="meta">
+ <value>DirectConnect</value>
+ </attribute>
+ <attribute kind="single_destination">
+ <value>false</value>
+ </attribute>
+ </reference>
+ </model>
+ <model id="id-0065-00000016" kind="ComponentFactory" role="ComponentFactory" relid="0x3" childrelidcntr="0x0">
+ <name>StockDistributorHome</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>793,493</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <connection id="id-0068-00000002" kind="ManagesComponent" role="ManagesComponent" relid="0x4">
+ <name>ManagesComponent</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ws</value>
+ </regnode>
+ <connpoint role="dst" target="id-0065-00000014"/>
+ <connpoint role="src" target="id-0065-00000016"/>
+ </connection>
+ </model>
+ <reference id="id-0067-00000009" kind="FileRef" role="FileRef" relid="0x1" referred="id-0065-00000001">
+ <name>FileRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,201</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ </folder>
+ <folder id="id-006a-00000003" relid="0x1" childrelidcntr="0xb" kind="PredefinedTypes">
+ <name>PredefinedTypes</name>
+ <atom id="id-0066-00000001" kind="TypeKind" relid="0xb">
+ <name>TypeKind</name>
+ </atom>
+ <atom id="id-0066-00000002" kind="TypeEncoding" relid="0xa">
+ <name>TypeEncoding</name>
+ </atom>
+ <atom id="id-0066-00000003" kind="String" relid="0x9">
+ <name>String</name>
+ </atom>
+ <atom id="id-0066-00000004" kind="Boolean" relid="0x8">
+ <name>Boolean</name>
+ </atom>
+ <atom id="id-0066-00000005" kind="ShortInteger" relid="0x7">
+ <name>ShortInteger</name>
+ </atom>
+ <atom id="id-0066-00000006" kind="RealNumber" relid="0x6">
+ <name>RealNumber</name>
+ </atom>
+ <atom id="id-0066-00000007" kind="LongInteger" relid="0x5">
+ <name>LongInteger</name>
+ </atom>
+ <atom id="id-0066-00000008" kind="GenericValueObject" relid="0x4">
+ <name>GenericValueObject</name>
+ </atom>
+ <atom id="id-0066-00000009" kind="GenericValue" relid="0x3">
+ <name>GenericValue</name>
+ </atom>
+ <atom id="id-0066-0000000a" kind="GenericObject" relid="0x2">
+ <name>GenericObject</name>
+ </atom>
+ <atom id="id-0066-0000000b" kind="Byte" relid="0x1">
+ <name>Byte</name>
+ </atom>
+ </folder>
+ <folder id="id-006a-00000004" relid="0x3" childrelidcntr="0x1" kind="ComponentImplementations">
+ <name>ComponentImplementations</name>
+ <model id="id-0065-00000017" kind="ComponentImplementationContainer" relid="0x1" childrelidcntr="0xb">
+ <name>StockBrokerImplementation</name>
+ <model id="id-0065-00000018" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>ComponentIOR</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>282,168</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>StockBroker.ior</value>
+ </attribute>
+ <reference id="id-0067-0000000d" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-0000000c" kind="MonolithicImplementation" role="MonolithicImplementation" relid="0x1">
+ <name>StockBrokerMonolithicImpl</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>125,68</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-0000000e" kind="ComponentRef" role="ComponentRef" relid="0x9" referred="id-0065-0000000d">
+ <name>StockBrokerRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>783,557</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000021" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x3" referred="id-0066-0000000e">
+ <name>StockBroker_stubRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>461,265</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000022" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x4" referred="id-0066-0000000f">
+ <name>StockBroker_svntRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>566,363</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000023" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x5" referred="id-0066-00000010">
+ <name>StockBroker_execRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>741,468</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000003" kind="ConfigProperty" role="ConfigProperty" relid="0xa">
+ <name>ConfigProperty</name>
+ <connpoint role="dst" target="id-0065-00000018"/>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ </connection>
+ <connection id="id-0068-00000004" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x6">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000021"/>
+ </connection>
+ <connection id="id-0068-00000005" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x7">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000022"/>
+ </connection>
+ <connection id="id-0068-00000006" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x8">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000023"/>
+ </connection>
+ <connection id="id-0068-00000007" kind="Implements" role="Implements" relid="0xb">
+ <name>Implements</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-0000000e"/>
+ </connection>
+ </model>
+ <model id="id-0065-00000019" kind="ComponentImplementationContainer" relid="0x2" childrelidcntr="0xb">
+ <name>StockDistributorImplementation</name>
+ <model id="id-0065-0000001a" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>ComponentIOR</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>282,168</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>StockDistributor.ior</value>
+ </attribute>
+ <reference id="id-0067-0000000f" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-0000000d" kind="MonolithicImplementation" role="MonolithicImplementation" relid="0x1">
+ <name>StockDistributorMonolithicImpl</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>125,68</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000010" kind="ComponentRef" role="ComponentRef" relid="0x9" referred="id-0065-00000014">
+ <name>StockDistributorRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>910,568</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000024" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x3" referred="id-0066-00000011">
+ <name>StockDistributor_stubRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>439,268</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000025" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x4" referred="id-0066-00000012">
+ <name>StockDistributor_svntRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>596,368</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000026" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x5" referred="id-0066-00000013">
+ <name>StockDistributor_execRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>753,468</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000008" kind="ConfigProperty" role="ConfigProperty" relid="0xa">
+ <name>ConfigProperty</name>
+ <connpoint role="dst" target="id-0065-0000001a"/>
+ <connpoint role="src" target="id-0066-0000000d"/>
+ </connection>
+ <connection id="id-0068-00000009" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x6">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000d"/>
+ <connpoint role="dst" target="id-0067-00000024"/>
+ </connection>
+ <connection id="id-0068-0000000a" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x7">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000d"/>
+ <connpoint role="dst" target="id-0067-00000025"/>
+ </connection>
+ <connection id="id-0068-0000000b" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x8">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000d"/>
+ <connpoint role="dst" target="id-0067-00000026"/>
+ </connection>
+ <connection id="id-0068-0000000c" kind="Implements" role="Implements" relid="0xb">
+ <name>Implements</name>
+ <connpoint role="src" target="id-0066-0000000d"/>
+ <connpoint role="dst" target="id-0067-00000010"/>
+ </connection>
+ </model>
+ <model id="id-0065-00000023" kind="ComponentImplementationContainer" relid="0x1" childrelidcntr="0x1">
+ <name>StockQuoterImplementation</name>
+ <model id="id-0065-00000024" kind="ComponentAssembly" role="ComponentAssembly" relid="0x1" childrelidcntr="0x6">
+ <name>StockQuoter</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>307,221</value>
+ </regnode>
+ </regnode>
+ <regnode name="QoSModelAspect" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>331,198</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID">
+ <value>EBE916A6-E4E5-469C-A8EE-EDDFCA4B9CE3</value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000025" kind="Component" role="Component" derivedfrom="id-0065-0000000d" isinstance="yes" isprimary="yes" relid="0x1" childrelidcntr="0x0">
+ <name>StockBroker</name>
+ <regnode name="PartRegs">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>447,116</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID">
+ <value>94A1586C-2E9A-4FFD-8D75-7FC5A54F6B71</value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000027" kind="InEventPort" role="InEventPort" derivedfrom="id-0067-00000008" isinstance="yes" isprimary="no" referred="id-0065-00000007" isbound="yes">
+ <name>notify_in</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-00000028" kind="RequiredRequestPort" role="RequiredRequestPort" derivedfrom="id-0067-00000007" isinstance="yes" isprimary="no" referred="id-0065-00000005" isbound="yes">
+ <name>read_quoter</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="multiple_connections" status="inherited">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-00000029" kind="Supports" role="Supports" derivedfrom="id-0067-00000006" isinstance="yes" isprimary="no" referred="id-0065-0000000a" isbound="yes">
+ <name>Supports</name>
+ </reference>
+ </model>
+ <model id="id-0065-00000026" kind="Component" role="Component" derivedfrom="id-0065-00000014" isinstance="yes" isprimary="yes" relid="0x2" childrelidcntr="0x0">
+ <name>StockDistributor</name>
+ <regnode name="PartRegs">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>83,123</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID">
+ <value>2DBE2452-FDE3-4399-9210-509CAC49139A</value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000027" kind="Attribute" role="Attribute" derivedfrom="id-0065-00000015" isinstance="yes" isprimary="no" childrelidcntr="0x0">
+ <name>rate</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-0000002a" kind="AttributeMember" role="AttributeMember" derivedfrom="id-0067-00000020" isinstance="yes" isprimary="no" referred="id-0066-00000007" isbound="yes">
+ <name>AttributeMember</name>
+ </reference>
+ </model>
+ <reference id="id-0067-0000002b" kind="OutEventPort" role="OutEventPort" derivedfrom="id-0067-0000000c" isinstance="yes" isprimary="no" referred="id-0065-00000007" isbound="yes">
+ <name>notify_out</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="out_event_port_type" status="meta">
+ <value>DirectConnect</value>
+ </attribute>
+ <attribute kind="single_destination" status="inherited">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-0000002c" kind="ProvidedRequestPort" role="ProvidedRequestPort" derivedfrom="id-0067-0000000b" isinstance="yes" isprimary="no" referred="id-0065-00000005" isbound="yes">
+ <name>push_quoter</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ <reference id="id-0067-0000002d" kind="Supports" role="Supports" derivedfrom="id-0067-0000000a" isinstance="yes" isprimary="no" referred="id-0065-00000011" isbound="yes">
+ <name>Supports</name>
+ </reference>
+ </model>
+ <atom id="id-0066-00000014" kind="PublishConnector" role="PublishConnector" relid="0x3">
+ <name>PublishConnector</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>329,154</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </atom>
+ <connection id="id-0068-00000017" kind="invoke" role="invoke" relid="0x4">
+ <name>invoke</name>
+ <connpoint role="src" target="id-0067-00000028"/>
+ <connpoint role="dst" target="id-0067-0000002c"/>
+ </connection>
+ <connection id="id-0068-00000018" kind="publish" role="publish" relid="0x5">
+ <name>publish</name>
+ <connpoint role="dst" target="id-0066-00000014"/>
+ <connpoint role="src" target="id-0067-0000002b"/>
+ </connection>
+ <connection id="id-0068-00000019" kind="deliverTo" role="deliverTo" relid="0x6">
+ <name>deliverTo</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>E</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000014"/>
+ <connpoint role="dst" target="id-0067-00000027"/>
+ </connection>
+ </model>
+ </model>
+ </folder>
+ <folder id="id-006a-00000005" relid="0x4" childrelidcntr="0x0" kind="ImplementationArtifacts">
+ <name>ImplementationArtifacts</name>
+ <model id="id-0065-0000001b" kind="ArtifactContainer" relid="0x1" childrelidcntr="0xa">
+ <name>StockBrokerArtifacts</name>
+ <model id="id-0065-0000001c" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,200</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createStockBrokerHome_Servant</value>
+ </attribute>
+ <reference id="id-0067-00000011" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>298,193</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-0000001d" kind="Property" role="Property" relid="0x4" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,432</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createStockBrokerHome_Impl</value>
+ </attribute>
+ <reference id="id-0067-00000012" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>340,172</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-0000000e" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x1">
+ <name>StockBroker_stub</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>151,84</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockBroker_stub</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-0000000f" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x3">
+ <name>StockBroker_svnt</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>517,316</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockBroker_svnt</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-00000010" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x5">
+ <name>StockBroker_exec</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>883,548</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockBroker_exec</value>
+ </attribute>
+ </atom>
+ <connection id="id-0068-0000000d" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x7">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-0000001c"/>
+ <connpoint role="src" target="id-0066-0000000f"/>
+ </connection>
+ <connection id="id-0068-0000000e" kind="ArtifactDependency" role="ArtifactDependency" relid="0x8">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000e"/>
+ <connpoint role="src" target="id-0066-0000000f"/>
+ </connection>
+ <connection id="id-0068-0000000f" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x8">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-0000001d"/>
+ <connpoint role="src" target="id-0066-00000010"/>
+ </connection>
+ <connection id="id-0068-00000010" kind="ArtifactDependency" role="ArtifactDependency" relid="0x9">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000f"/>
+ <connpoint role="src" target="id-0066-00000010"/>
+ </connection>
+ <connection id="id-0068-00000011" kind="ArtifactDependency" role="ArtifactDependency" relid="0xa">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000e"/>
+ <connpoint role="src" target="id-0066-00000010"/>
+ </connection>
+ </model>
+ <model id="id-0065-0000001e" kind="ArtifactContainer" relid="0x2" childrelidcntr="0xa">
+ <name>StockDistributorArtifacts</name>
+ <model id="id-0065-0000001f" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,200</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createStockDistributorHome_Servant</value>
+ </attribute>
+ <reference id="id-0067-00000013" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-00000020" kind="Property" role="Property" relid="0x4" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,432</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createStockDistributorHome_Impl</value>
+ </attribute>
+ <reference id="id-0067-00000014" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-00000011" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x1">
+ <name>StockDistributor_stub</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>151,84</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockDistributor_stub</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-00000012" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x3">
+ <name>StockDistributor_svnt</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>517,316</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockDistributor_svnt</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-00000013" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x5">
+ <name>StockDistributor_exec</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>883,548</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>StockDistributor_exec</value>
+ </attribute>
+ </atom>
+ <connection id="id-0068-00000012" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x7">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-0000001f"/>
+ <connpoint role="src" target="id-0066-00000012"/>
+ </connection>
+ <connection id="id-0068-00000013" kind="ArtifactDependency" role="ArtifactDependency" relid="0x8">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-00000011"/>
+ <connpoint role="src" target="id-0066-00000012"/>
+ </connection>
+ <connection id="id-0068-00000014" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x8">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-00000020"/>
+ <connpoint role="src" target="id-0066-00000013"/>
+ </connection>
+ <connection id="id-0068-00000015" kind="ArtifactDependency" role="ArtifactDependency" relid="0x9">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-00000012"/>
+ <connpoint role="src" target="id-0066-00000013"/>
+ </connection>
+ <connection id="id-0068-00000016" kind="ArtifactDependency" role="ArtifactDependency" relid="0xa">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-00000011"/>
+ <connpoint role="src" target="id-0066-00000013"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000006" relid="0x5" childrelidcntr="0x0" kind="ComponentTypes">
+ <name>ComponentTypes</name>
+ <model id="id-0065-00000021" kind="ComponentContainer" relid="0x1" childrelidcntr="0x1">
+ <name>StockBrokerContainer</name>
+ <reference id="id-0067-00000015" kind="ComponentRef" role="ComponentRef" relid="0x1" referred="id-0065-0000000d">
+ <name>StockBrokerRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>244,214</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-00000022" kind="ComponentContainer" relid="0x2" childrelidcntr="0x1">
+ <name>StockDistributorContainer</name>
+ <reference id="id-0067-00000016" kind="ComponentRef" role="ComponentRef" relid="0x1" referred="id-0065-00000014">
+ <name>StockDistributorRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>202,249</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ </folder>
+ <folder id="id-006a-00000007" relid="0x6" childrelidcntr="0x1" kind="PackageConfigurations">
+ <name>PackageConfigurations</name>
+ <model id="id-0065-0000002b" kind="PackageConfigurationContainer" relid="0x1" childrelidcntr="0x2">
+ <name>Default</name>
+ <atom id="id-0066-00000018" kind="PackageConfiguration" role="PackageConfiguration" relid="0x1">
+ <name>Default</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>163,226</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000033" kind="ComponentPackageReference" role="ComponentPackageReference" relid="0x2" referred="id-0066-00000017">
+ <name>StockQuoter</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>391,230</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="requiredName" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="requiredType" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="requiredUUID" status="meta">
+ <value></value>
+ </attribute>
+ </reference>
+ </model>
+ </folder>
+ <folder id="id-006a-00000008" relid="0x7" childrelidcntr="0x3" kind="ComponentPackages">
+ <name>ComponentPackages</name>
+ <model id="id-0065-00000028" kind="PackageContainer" relid="0x1" childrelidcntr="0x5">
+ <name>Broker</name>
+ <atom id="id-0066-00000015" kind="ComponentPackage" role="ComponentPackage" relid="0x1">
+ <name>Broker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>272,195</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-0000002e" kind="ComponentImplementationReference" role="ComponentImplementationReference" relid="0x2" referred="id-0066-0000000c">
+ <name>Broker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>96,194</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000002f" kind="ComponentRef" role="ComponentRef" relid="0x3" referred="id-0065-0000000d">
+ <name>Broker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>440,172</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-0000001b" kind="Implementation" role="Implementation" relid="0x4">
+ <name>Implementation</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>We</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000015"/>
+ <connpoint role="dst" target="id-0067-0000002e"/>
+ </connection>
+ <connection id="id-0068-0000001c" kind="PackageInterface" role="PackageInterface" relid="0x5">
+ <name>PackageInterface</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000015"/>
+ <connpoint role="dst" target="id-0067-0000002f"/>
+ </connection>
+ </model>
+ <model id="id-0065-00000029" kind="PackageContainer" relid="0x2" childrelidcntr="0x5">
+ <name>Distributor</name>
+ <atom id="id-0066-00000016" kind="ComponentPackage" role="ComponentPackage" relid="0x2">
+ <name>Distributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>272,195</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000030" kind="ComponentImplementationReference" role="ComponentImplementationReference" relid="0x1" referred="id-0066-0000000d">
+ <name>Distributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>96,194</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000031" kind="ComponentRef" role="ComponentRef" relid="0x3" referred="id-0065-00000014">
+ <name>Distributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>440,172</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-0000001d" kind="Implementation" role="Implementation" relid="0x4">
+ <name>Implementation</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>We</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000016"/>
+ <connpoint role="dst" target="id-0067-00000030"/>
+ </connection>
+ <connection id="id-0068-0000001e" kind="PackageInterface" role="PackageInterface" relid="0x5">
+ <name>PackageInterface</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000016"/>
+ <connpoint role="dst" target="id-0067-00000031"/>
+ </connection>
+ </model>
+ <model id="id-0065-0000002a" kind="PackageContainer" relid="0x3" childrelidcntr="0x3">
+ <name>StockQuoter</name>
+ <atom id="id-0066-00000017" kind="ComponentPackage" role="ComponentPackage" relid="0x2">
+ <name>StockQuoter</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>391,125</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000032" kind="ComponentImplementationReference" role="ComponentImplementationReference" relid="0x1" referred="id-0065-00000024">
+ <name>StockQuoter</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>96,103</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-0000001f" kind="Implementation" role="Implementation" relid="0x3">
+ <name>Implementation</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>We</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000017"/>
+ <connpoint role="dst" target="id-0067-00000032"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000009" relid="0x8" childrelidcntr="0x1" kind="DeploymentPlans">
+ <name>DeploymentPlans</name>
+ <model id="id-0065-00000030" kind="DeploymentPlan" relid="0x1" childrelidcntr="0x8">
+ <name>Plan</name>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000035" kind="NodeReference" role="NodeReference" relid="0x3" referred="id-0065-0000002e">
+ <name>Node_Broker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>284,137</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000036" kind="NodeReference" role="NodeReference" relid="0x4" referred="id-0065-0000002f">
+ <name>Node_Distributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>284,298</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000037" kind="ComponentRef" role="ComponentRef" relid="0x5" referred="id-0065-00000025">
+ <name>StockBroker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>412,95</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000038" kind="ComponentRef" role="ComponentRef" relid="0x6" referred="id-0065-00000026">
+ <name>StockDistributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>412,270</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000021" kind="InstanceMapping" role="InstanceMapping" relid="0x7">
+ <name>InstanceMapping</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="dst" target="id-0067-00000035"/>
+ <connpoint role="src" target="id-0069-00000001"/>
+ </connection>
+ <connection id="id-0068-00000022" kind="InstanceMapping" role="InstanceMapping" relid="0x8">
+ <name>InstanceMapping</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="dst" target="id-0067-00000036"/>
+ <connpoint role="src" target="id-0069-00000002"/>
+ </connection>
+ <set id="id-0069-00000001" kind="CollocationGroup" role="CollocationGroup" relid="0x1" members="id-0067-00000037">
+ <name>CollocationGroup</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>118,125</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </set>
+ <set id="id-0069-00000002" kind="CollocationGroup" role="CollocationGroup" relid="0x2" members="id-0067-00000038">
+ <name>CollocationGroup</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>97,279</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </set>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000a" relid="0x9" childrelidcntr="0x1" kind="Targets">
+ <name>Targets</name>
+ <model id="id-0065-0000002d" kind="Domain" relid="0x1" childrelidcntr="0x2">
+ <name>Domain</name>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-0000002e" kind="Node" role="Node" relid="0x1" childrelidcntr="0x0">
+ <name>Broker</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Target" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>198,261</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <model id="id-0065-0000002f" kind="Node" role="Node" relid="0x2" childrelidcntr="0x0">
+ <name>Distributor</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Target" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>394,310</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000b" relid="0xa" childrelidcntr="0x1" kind="TopLevelPackages">
+ <name>TopLevelPackages</name>
+ <model id="id-0065-0000002c" kind="TopLevelPackageContainer" relid="0x1" childrelidcntr="0x3">
+ <name>Default</name>
+ <atom id="id-0066-00000019" kind="TopLevelPackage" role="TopLevelPackage" relid="0x1">
+ <name>TopLevelPackage</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>132,275</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </atom>
+ <reference id="id-0067-00000034" kind="PackageConfigurationReference" role="PackageConfigurationReference" relid="0x2" referred="id-0066-00000018">
+ <name>Default</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>370,265</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000020" kind="package" role="package" relid="0x3">
+ <name>package</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000019"/>
+ <connpoint role="dst" target="id-0067-00000034"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000c" relid="0xb" childrelidcntr="0x0" kind="ComponentBuild">
+ <name>ComponentBuild</name>
+ </folder>
+ </folder>
+</project>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/index.html b/modules/CIAO/docs/tutorials/CoSMIC/index.html
new file mode 100644
index 00000000000..74547224422
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/index.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+
+ <meta name="generator" content="HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org" />
+
+
+
+ <title>Building a Stock Quoter with TAO - A Tutorial</title>
+<!-- $Id$ -->
+</head>
+
+
+
+<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" link="#000fff" vlink="#ff0f0f">
+
+
+<h3>Building a Stock Quoter with CoSMIC and DAnCE - A
+ Tutorial<br />
+</h3>
+
+
+
+<p>This tutorial provides a step-by-step lesson on developing
+ component-based distributed applications using <a href="http://www.dre.vanderbilt.edu/cosmic/">CoSMIC</a> modeling
+ toolkit and <a href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">CIAO/DAnCE</a>
+ framework. The example application used in this tutorial is a
+ Stock Quoter that consists of two components; the
+ <em>StockDistributor</em> and the <em>StockBroker</em>. The
+ <em>StockDistributor</em> notifies one or more stock brokers
+ whenever a stock price changes. Upon receiving the notification,
+ the <em>StockBroker</em> fetches information about a particular
+ stock from the <em>StockDistributor</em>. The figure bellow shows
+ the application diagram. This Stock Quoter application is based
+ on a series of <a href="http://www.cs.wustl.edu/%7Eschmidt/report-doc.html">CORBA
+ component model</a> columns written by <a href="http://www.cs.wustl.edu/%7Eschmidt/">Doug Schmidt</a> and
+ <a href="http://www.iona.com/hyplan/vinoski/">Steve Vinoski</a>
+ for <a href="http://www.cuj.com">C/C++ Users Journal</a> and has
+ consistently been used as an example for <a href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a>.<br />
+</p>
+
+
+
+<div style="text-align: center;">
+ <img alt="" src="Images/fig1.jpg" style="width: 362px; height: 193px;" /><br />
+
+ <br />
+
+ Stock Quoter application Diagram<br />
+
+ </div>
+
+
+
+<p>This tutorial will show you how to use generic modeling
+ techniques <a href="http://www.dre.vanderbilt.edu/cosmic/">CoSMIC</a> to assist the
+ development process of CIAO applications. All the necessary steps
+ to build a component-based application model via <a href="http://www.dre.vanderbilt.edu/cosmic/">CoSMIC</a> toolkit are
+ documented here.</p>
+
+
+
+<blockquote>
+
+ <hr />
+ <strong>Note:</strong><br />
+
+ 1. Although the descriptor files generated by CoSMIC toolkits
+ are portable, the modeling environment required by CoSMIC (GME)
+ only supports Microsoft Windows platforms.<br />
+
+ 2. The CIAO/DAnCE codes used for this tutorial can be found in
+ <code>%CIAO_ROOT%/docs/tutorials/Quoter/Simple</code>.<br />
+
+ 3. The current tutorial is tested under GME 5.9.21, and&nbsp;
+ CosMIC 0.5.2. It will be subject to change as version of GME
+ and CoSMIC evolves.<br />
+
+
+ <hr />
+ </blockquote>
+<strong><big>Prerequisites</big></strong><br />
+
+ <br />
+
+ &nbsp;&nbsp;&nbsp;Before you start, you will need the following:
+
+
+<ol>
+
+ <li><strong>ACE+TAO+CIAO (Component Integraated ACE
+ ORB).</strong> ACE + TAO + CIAO provide the CCM infrastructure
+ necessary to enable the CCM-based distributed component
+ interaction. You can click <a href="http://download.dre.vanderbilt.edu">here</a> to download
+ the latest ACE + TAO + CIAO and click <a href="../../../../../ACE-Install.html">
+ here</a> for information on how to build ACE+TAO+CIAO.</li>
+
+
+ <li><strong>Generic Modeling Environment (GME).</strong> GME is
+ a configurable toolkit for creating domain-specific modeling
+ and program synthesis environments. It provides the execution
+ environment for CoSMIC toolkits. Click <a href="http://www.isis.vanderbilt.edu/Projects/gme/download.html">here</a>
+ to download GME.</li>
+
+
+ <li><strong>CoSMIC toolkit.</strong> Click <a href="http://www.dre.vanderbilt.edu/cosmic/">here</a> to download
+ the latest CoSMIC release.</li>
+
+
+</ol>
+
+
+
+<blockquote>
+
+ <hr />
+ <strong>Note:</strong><br />
+
+
+
+ <ol>
+
+ <li>Please use only the version of GME that the CoSMIC
+ package you have downloaded requires. Attempts to use earlier
+ or later versions may result in undefined behavior.</li>
+
+
+ <li>Make sure you install GME before you install CoSMIC.</li>
+
+
+ </ol>
+
+
+ <hr />
+ </blockquote>
+<strong><a href="01.html">Getting
+ Started</a></strong><br />
+
+ <br />
+
+ &nbsp;&nbsp; This section describes the IDL files used by the
+ example and shows you how to import IDL into <a href="http://www.cs.wustl.edu/%7Eschmidt/PDF/RTAS05-PICML.pdf">PICML
+ (Platform-Independent Component Modeling Language)</a>; a
+ domain-specific modeling language which is defined using GME.
+ PICML is designed to help to bridge the gap between design-time
+ verification and model-checking tools and the deployment of
+ component implementations.<br />
+
+ <br />
+
+ <strong><a href="02.html">Modeling StockQuoter system with
+ PICML</a></strong><br />
+
+ <br />
+
+ &nbsp;&nbsp;&nbsp; This section describes how to model the Stock
+ Quoter components in PICML.<br />
+
+ &nbsp;&nbsp;&nbsp;&nbsp;<br />
+
+ <a href="03.html"><strong>Implementing Quoter components with
+ DAnCE</strong></a><br />
+
+ <br />
+
+ &nbsp;&nbsp;&nbsp; This section provides codes for the Quoter
+ example.<br />
+
+ <br />
+
+ <strong><a href="04.html">Running the
+ application</a></strong><br />
+
+ <br />
+
+ &nbsp;&nbsp; After all the components and descriptors generated
+ by PICML are in place. You are ready to compile and run the
+ application.<br />
+
+ <br />
+
+
+<hr />
+
+
+<address>
+ <a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br />
+</a>
+ </address>
+<!-- Created: Sat Nov 27 15:25:06 CST 1999 -->
+ <!-- hhmts start -->
+ Last modified: Fri May 5 21:29:07 CDT 2006 <!-- hhmts end -->
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/CoSMIC/style.css b/modules/CIAO/docs/tutorials/CoSMIC/style.css
new file mode 100644
index 00000000000..b86b9ceb671
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/CoSMIC/style.css
@@ -0,0 +1,15 @@
+
+/* Important Node */
+div.important {
+ position: center;
+ width: 75%;
+ text-align: left;
+ border: 1;
+ background: #FAEBD7;
+}
+
+div.important strong {
+ font-weight: bold;
+ color: red;
+ font-variant: small-caps;
+}
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/01.html b/modules/CIAO/docs/tutorials/Quoter/Simple/01.html
new file mode 100644
index 00000000000..fb33ed38008
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/01.html
@@ -0,0 +1,838 @@
+<!-- $Id$ -->
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="01_files/filelist.xml">
+<link rel=Edit-Time-Data href="01_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Getting Started</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Abdullah Sowayan</o:Author>
+ <o:LastAuthor>Abdullah Sowayan</o:LastAuthor>
+ <o:Revision>22</o:Revision>
+ <o:TotalTime>244</o:TotalTime>
+ <o:Created>2006-10-09T18:21:00Z</o:Created>
+ <o:LastSaved>2006-12-01T17:30:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>859</o:Words>
+ <o:Characters>4900</o:Characters>
+ <o:Company>Maritime Systems &amp; Sensors</o:Company>
+ <o:Lines>40</o:Lines>
+ <o:Paragraphs>11</o:Paragraphs>
+ <o:CharactersWithSpaces>5748</o:CharactersWithSpaces>
+ <o:Version>11.8107</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:GrammarState>Clean</w:GrammarState>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h3
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ mso-outline-level:3;
+ font-size:13.5pt;
+ font-family:"Times New Roman";
+ font-weight:bold;}
+a:link, span.MsoHyperlink
+ {color:#000FFF;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:#FF0F0F;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+address
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ font-style:italic;}
+code
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+ {mso-style-noshow:yes;
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+span.SpellE
+ {mso-style-name:"";
+ mso-spl-e:yes;}
+span.GramE
+ {mso-style-name:"";
+ mso-gram-e:yes;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:137387275;
+ mso-list-type:hybrid;
+ mso-list-template-ids:268987612 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.75in;
+ mso-level-number-position:left;
+ margin-left:.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l0:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1
+ {mso-list-id:425031842;
+ mso-list-type:hybrid;
+ mso-list-template-ids:158504358 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l1:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:1.75in;
+ mso-level-number-position:left;
+ margin-left:1.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l1:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2
+ {mso-list-id:632565866;
+ mso-list-type:hybrid;
+ mso-list-template-ids:542421050 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l2:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:1.25in;
+ mso-level-number-position:left;
+ margin-left:1.25in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l2:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3
+ {mso-list-id:974944555;
+ mso-list-type:hybrid;
+ mso-list-template-ids:1880366448 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l3:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:1.25in;
+ mso-level-number-position:left;
+ margin-left:1.25in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l3:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4
+ {mso-list-id:1876190917;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-767374784 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:1.75in;
+ mso-level-number-position:left;
+ margin-left:1.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l4:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!-- 01.html,v 1.3 2006/02/10 14:34:35 mxiong Exp --><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="8194"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white lang=EN-US link="#000FFF" vlink="#FF0F0F" style='tab-interval:
+.5in'>
+
+<div class=Section1>
+
+<h3 align=center style='margin:0in;margin-bottom:.0001pt;text-align:center;
+line-height:150%'><span style='color:black'>Step 1: Define your interfaces and
+component types<o:p></o:p></span></h3>
+
+<h3 align=center style='margin:0in;margin-bottom:.0001pt;text-align:center;
+line-height:150%'><span style='color:black'><img width=447 height=350
+id="_x0000_i1025" src="images/Step1.JPG"><o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'><o:p>&nbsp;</o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'>Please make sure to read the following article to
+under the Stock <span class=SpellE>Quoter</span> system architecture before
+delving further into the tutorial:<o:p></o:p></span></h3>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo2;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cuj.com/documents/s=9152/cujexp0404vinoski/">The CORBA
+Component Model, Part 2: Defining Components with the IDL 3.x Types</a></p>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black'>Directory Structure:<o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'>The tutorial relies on the following directory
+structure. Create <span class=SpellE>Quoter</span> and all its subdirectories
+as shown below. We will describe the purpose of these directories later in the
+tutorial.<o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;text-indent:.5in;line-height:150%'><span
+class=SpellE><span style='font-size:12.0pt;line-height:150%;color:black;
+font-weight:normal;mso-bidi-font-weight:bold'>Quoter</span></span><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>|---- descriptors<o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>|---- <span class=SpellE>Stock_Base</span><o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><span style='mso-spacerun:yes'>&nbsp;&nbsp;</span>|---- Distributor<o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>|---- Broker<o:p></o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></h3>
+
+<h3 style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='font-size:12.0pt;line-height:150%;color:black'>Preliminaries:<o:p></o:p></span></h3>
+
+<h3 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo2;
+tab-stops:list .75in'><![if !supportLists]><span style='font-size:12.0pt;
+line-height:150%;font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;font-weight:normal;mso-bidi-font-weight:bold'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='font-size:12.0pt;line-height:150%;
+color:black;font-weight:normal;mso-bidi-font-weight:bold'>We use the Make
+Project Creator (MPC) throughout this tutorial. Understanding MPC will aid you
+in understanding this tutorial. For more information on MPC please look at the
+following:<o:p></o:p></span></h3>
+
+<h3 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.5in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level3 lfo2;
+tab-stops:list 1.5in'><![if !supportLists]><span style='font-size:12.0pt;
+line-height:150%;color:black;font-weight:normal;mso-bidi-font-weight:bold'><span
+style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span class=GramE><span style='font-size:12.0pt;
+line-height:150%;color:black;font-weight:normal;mso-bidi-font-weight:bold'>MPC <a
+href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">Chapter</a> in <span
+class=SpellE>TAO&#8217;s</span> Developer&#8217;s Guide 1.4a.</span></span><span
+style='font-size:12.0pt;line-height:150%;color:black;font-weight:normal;
+mso-bidi-font-weight:bold'><o:p></o:p></span></h3>
+
+<h3 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.5in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level3 lfo2;
+tab-stops:list 1.5in'><![if !supportLists]><span style='font-size:12.0pt;
+line-height:150%;color:black;font-weight:normal;mso-bidi-font-weight:bold'><span
+style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='font-size:12.0pt;line-height:150%;
+color:black;font-weight:normal;mso-bidi-font-weight:bold'>$ACE_ROOT/MPC/README<o:p></o:p></span></h3>
+
+<p class=MsoNormal style='line-height:150%'><b><span style='color:black'>Interface
+Design:</span></b><span style='color:black'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;line-height:
+150%;mso-list:l0 level1 lfo2;tab-stops:list .75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>In the <span
+class=SpellE><i style='mso-bidi-font-style:normal'>Quoter/<span
+style='mso-bidi-font-style:italic'>Stock_Base</span></i></span><i> </i><span
+style='mso-bidi-font-style:italic'>sub-</span>directory, place an <span
+class=SpellE>idl</span> file </span><span class=SpellE><code><i><span
+style='font-size:10.0pt;line-height:150%;color:black'>Stock_Base.idl</span></i></code></span><span
+style='color:black'> that you could copy from <a
+href="Stock_Base/Stock_Base.idl">here</a>. This file defines the interfaces and
+events that will be used by both Stock Distributor and Stock Broker. We put
+together the common interface definitions so the base library can be shared by
+both components, reducing the size of &quot;real&quot; components.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;line-height:
+150%;mso-list:l0 level1 lfo2;tab-stops:list .75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>Next, we need to
+create a Make Project Creator (MPC) file to generate the make files for us.
+From the <span class=SpellE><i style='mso-bidi-font-style:normal'>Quoter/<span
+style='mso-bidi-font-style:italic'>Stock_Base</span></i></span><span
+style='mso-bidi-font-style:italic'> subdirectory, type the following command:</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'>generate_component_mpc.pl
+&#8211;n -e <span class=SpellE>Stock_Base</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;line-height:150%'><span
+style='color:black;mso-bidi-font-style:italic'>Note that we pass the &#8211;e option
+to </span><span style='font-family:"Courier New";color:black;mso-bidi-font-style:
+italic'>generate_component_mpc.pl because our </span><span class=SpellE><code><i><span
+style='font-size:10.0pt;line-height:150%;color:black'>Stock_Base.idl</span></i></code></span><code><i><span
+style='font-size:10.0pt;line-height:150%;color:black'> </span></i></code><span
+style='color:black;mso-bidi-font-style:italic'>uses <span class=SpellE>eventtypes</span>.
+If our <span class=SpellE>idl</span> file did not use <span class=SpellE>eventtypes</span>,
+we would<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;line-height:150%'><span
+class=GramE><span style='color:black;mso-bidi-font-style:italic'>not</span></span><span
+style='color:black;mso-bidi-font-style:italic'> pass the &#8211;e command line
+option.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='text-indent:.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;line-height:150%'><span
+style='color:black;mso-bidi-font-style:italic'>The command above will generate
+a <span class=SpellE><i>Stock_Base.mpc</i></span> file that contains two
+projects <span class=SpellE><i>Stock_Base_stub</i></span><i> </i>and <span
+class=SpellE><i>Stock_Base_skel</i></span><i> </i>for the Stub and Servant code
+respectively. In addition, the command above will generate export files that
+will portably handle platform specific issues of import/export declarations of
+dynamically linked libraries (DLLs). After executing the command above you
+should see the following output on your screen.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.75in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.75in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'>The
+following commands have been executed:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.75in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl STOCK_BASE_STUB &gt; <span class=SpellE>Stock_Base_stub_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.75in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>generate_export_file.pl
+STOCK_BASE_SKEL &gt; <span class=SpellE>Stock_Base_skel_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:.75in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.75in;text-indent:-1.25in;line-height:
+150%;mso-list:l1 level1 lfo4;tab-stops:list .75in 1.75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-style:italic'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-style:
+italic'>The MPC file should look like <a href="Stock_Base/Stock_Base.mpc">this</a>.
+</span><span style='font-family:"Courier New";color:black;mso-bidi-font-style:
+italic'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><b><span style='color:black'>Component
+Design:</span></b><span style='color:black'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='text-indent:.5in;line-height:150%'><b
+style='mso-bidi-font-weight:normal'><span style='color:black'>Distributor:</span></b><span
+style='color:black'>&nbsp;&nbsp;&nbsp;<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
+150%;mso-list:l3 level1 lfo6;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>In the </span><span
+class=SpellE><code><i><span style='font-size:10.0pt;line-height:150%;
+color:black'>Quoter</span></i></code></span><code><i><span style='font-size:
+10.0pt;line-height:150%;color:black'>/Distributor </span></i></code><code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;line-height:150%;
+font-family:"Times New Roman";color:black;mso-bidi-font-style:italic'>sub-directory</span></code><span
+style='color:black'>, place an <span class=SpellE>idl</span> file </span><span
+class=SpellE><code><i><span style='font-size:10.0pt;line-height:150%;
+color:black'>Distributor.idl</span></i></code></span><span style='color:black'>
+that looks like <a href="Distributor/Distributor.idl">this</a>. This file
+defines the <span class=SpellE>StockDistributor</span> component interfaces.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
+150%;mso-list:l3 level1 lfo6;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>Next, we need to
+create a Make Project Creator (MPC) file to generate the make files for us.
+From the <span class=SpellE><i style='mso-bidi-font-style:normal'>Quoter</i></span><i
+style='mso-bidi-font-style:normal'>/<span style='mso-bidi-font-style:italic'>Distributor
+</span></i><span style='mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;</span>sub-directory, type the following
+command:</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:1.25in;line-height:150%'><span
+style='font-family:"Courier New";color:black'>generate_component_mpc.pl -p <span
+class=SpellE>Stock_Base</span> Distributor<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:1.25in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;line-height:150%'><span
+style='color:black;mso-bidi-font-style:italic'>The command above will generate
+a <span class=SpellE><i>Distirubotor.mpc</i></span> file that contains three
+projects <span class=SpellE><i>Distributor_stub</i></span><i>, <span
+class=SpellE>Distributor_svnt</span>, and <span class=SpellE>Distributor_exec</span>
+</i>for the Stub, Servant, and Executor code respectively. In addition, the
+command above will generate export files that will portably handle platform
+specific issues of import/export declarations of dynamically linked libraries
+(DLLs). After executing the command above you should see the following output
+on your screen.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:.75in;line-height:
+150%'><span style='font-family:"Courier New";color:black;mso-bidi-font-style:
+italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'>The
+following commands have been executed:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl DISTRIBUTOR_STUB &gt; <span class=SpellE>Distributor_stub_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl DISTRIBUTOR_SVNT &gt; <span class=SpellE>Distributor_svnt_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl DISTRIBUTOR_EXEC &gt; <span class=SpellE>Distributor_exec_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;line-height:150%'><span
+style='color:black'>We will modify the generated MPC file to add an additional
+project later in the tutorial.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
+150%;mso-list:l4 level1 lfo8;tab-stops:list 1.25in 1.75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-style:italic'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-style:
+italic'>The </span><span class=SpellE><i><span style='font-family:"Courier New";
+color:black'>Stock_Base_Distributor_stub</span></i></span><span
+style='color:black;mso-bidi-font-style:italic'>, </span><span class=SpellE><i><span
+style='font-family:"Courier New";color:black'>Stock_Base_Distributor_svnt</span></i></span><span
+style='color:black;mso-bidi-font-style:italic'>, and </span><span class=SpellE><i><span
+style='font-family:"Courier New";color:black'>Stock_Base_Distributor_exec</span></i></span><span
+style='color:black;mso-bidi-font-style:italic'> projects in the MPC file should
+look like <a href="Distributor/Distributor.mpc">this</a>. </span><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='text-indent:.5in;line-height:150%'><b
+style='mso-bidi-font-weight:normal'><span style='color:black'>Broker:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
+150%;mso-list:l2 level1 lfo10;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>In the </span><span
+class=SpellE><code><i><span style='font-size:10.0pt;line-height:150%;
+color:black'>Quoter</span></i></code></span><code><i><span style='font-size:
+10.0pt;line-height:150%;color:black'>/Broker</span></i></code><span
+style='color:black'> <code><span style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:
+12.0pt;line-height:150%;font-family:"Times New Roman";mso-bidi-font-style:italic'>sub-directory,</span></code>
+place an <span class=SpellE>idl</span> file </span><span class=SpellE><code><i><span
+style='font-size:10.0pt;line-height:150%;color:black'>Broker.id</span></i></code><code><span
+style='font-size:10.0pt;line-height:150%;color:black'>l</span></code></span><span
+style='color:black'> that looks like <a href="Broker/Broker.idl">this</a>. This
+file defines the <span class=SpellE>StockBroker</span> component interface.<b
+style='mso-bidi-font-weight:normal'><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;line-height:
+150%;mso-list:l2 level1 lfo10;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black'>Next, we need to
+create a Make Project Creator (MPC) file to generate the make files for us.
+From the <span class=SpellE><i style='mso-bidi-font-style:normal'>Quoter</i></span><i
+style='mso-bidi-font-style:normal'>/<span style='mso-bidi-font-style:italic'>Broker</span></i><span
+style='mso-bidi-font-style:italic'> sub-directory, type the following command:</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:1.25in;line-height:150%'><span
+style='font-family:"Courier New";color:black'>generate_component_mpc.pl -p <span
+class=SpellE>Stock_Base</span> Broker<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.5in;text-indent:1.25in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;line-height:150%'><span
+style='color:black;mso-bidi-font-style:italic'>The command above will generate
+a <span class=SpellE><i>Broker.mpc</i></span> file that contains three projects
+<span class=SpellE><i>Broker_stub</i></span><i>, <span class=SpellE>Broker_svnt</span>,
+and <span class=SpellE>Broker_exec</span> </i>for the Stub, Servant, and
+Executor code respectively. In addition, the command above will generate export
+files that will portably handle platform specific issues of import/export
+declarations of dynamically linked libraries (DLLs). After executing the
+command above you should see the following output on your screen.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;text-indent:.75in;line-height:
+150%'><span style='font-family:"Courier New";color:black;mso-bidi-font-style:
+italic'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'>The
+following commands have been executed:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl BROKER_STUB &gt; <span class=SpellE>Broker_stub_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl BROKER_SVNT &gt; <span class=SpellE>Broker_svnt_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.5in;line-height:150%'><span
+style='font-family:"Courier New";color:black;mso-bidi-font-style:italic'><span
+style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span>generate_export_file.pl BROKER_EXEC &gt; <span class=SpellE>Broker_exec_export.h</span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.25in;line-height:150%'><span
+style='color:black'>We will modify the generated MPC file to add an additional
+project later in the tutorial.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:1.75in;text-indent:-.75in;line-height:
+150%;mso-list:l4 level1 lfo8;tab-stops:list 1.25in 1.75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-style:italic'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-style:
+italic'>The </span><span class=SpellE><i><span style='font-family:"Courier New";
+color:black'>Stock_Base_Broker_stub</span></i></span><span style='color:black;
+mso-bidi-font-style:italic'>, </span><span class=SpellE><i><span
+style='font-family:"Courier New";color:black'>Stock_Base_Broker_svnt</span></i></span><span
+style='color:black;mso-bidi-font-style:italic'>, and </span><span class=SpellE><i><span
+style='font-family:"Courier New";color:black'>Stock_Base_Broker_exec</span></i></span><span
+style='color:black;mso-bidi-font-style:italic'> projects in the MPC file should
+look like <a href="Broker/Broker.mpc">this</a>. </span><span style='font-family:
+"Courier New";color:black;mso-bidi-font-style:italic'><o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><br>
+<b style='mso-bidi-font-weight:normal'>Note:<o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'>To understand
+the meaning of different parameters passed to </span><span style='font-family:
+"Courier New";color:black;mso-bidi-font-style:italic'>generate_export_file.pl </span><span
+style='color:black;mso-bidi-font-style:italic'>type the</span><span
+style='color:black'> following command:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='font-family:"Courier New";
+color:black;mso-bidi-font-style:italic'>generate_export_file.pl -h</span><span
+style='color:black'><br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><b style='mso-bidi-font-weight:normal'><o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'>&nbsp;&nbsp;&nbsp;
+<o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<address style='line-height:150%'><span style='color:black'><a
+href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br>
+</a></span><a href="mailto:abdullah.sowayan@lmco.com">Abdullah Sowayan</a></address>
+
+<address style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></address>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->Last
+modified:<!-- hhmts end --> <o:p></o:p></span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/02.html b/modules/CIAO/docs/tutorials/Quoter/Simple/02.html
new file mode 100644
index 00000000000..9892e9722c8
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/02.html
@@ -0,0 +1,326 @@
+<!-- $Id$ -->
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="02_files/filelist.xml">
+<link rel=Edit-Time-Data href="02_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Getting Started</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Abdullah Sowayan</o:Author>
+ <o:LastAuthor>Abdullah Sowayan</o:LastAuthor>
+ <o:Revision>7</o:Revision>
+ <o:TotalTime>88</o:TotalTime>
+ <o:Created>2006-10-09T19:28:00Z</o:Created>
+ <o:LastSaved>2006-10-09T21:48:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>415</o:Words>
+ <o:Characters>2370</o:Characters>
+ <o:Company>Maritime Systems &amp; Sensors</o:Company>
+ <o:Lines>19</o:Lines>
+ <o:Paragraphs>5</o:Paragraphs>
+ <o:CharactersWithSpaces>2780</o:CharactersWithSpaces>
+ <o:Version>11.8036</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Wingdings;
+ panose-1:5 0 0 0 0 0 0 0 0 0;
+ mso-font-charset:2;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h3
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ mso-outline-level:3;
+ font-size:13.5pt;
+ font-family:"Times New Roman";}
+a:link, span.MsoHyperlink
+ {color:#000FFF;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:#FF0F0F;
+ text-decoration:underline;
+ text-underline:single;}
+address
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";}
+code
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:555236070;
+ mso-list-type:hybrid;
+ mso-list-template-ids:2061531284 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:1.25in;
+ mso-level-number-position:left;
+ margin-left:1.25in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!-- 01.html,v 1.3 2006/02/10 14:34:35 mxiong Exp --><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white lang=EN-US link="#000FFF" vlink="#FF0F0F" style='tab-interval:
+.5in'>
+
+<div class=Section1>
+
+<h3 align=center style='margin:0in;margin-bottom:.0001pt;text-align:center;
+line-height:150%'><span style='color:black'>Step 2: Implement your components<o:p></o:p></span></h3>
+
+<h3 align=center style='text-align:center'><span style='color:black'><img
+width=634 height=376 id="_x0000_i1026" src="images/Step2.JPG"><o:p></o:p></span></h3>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='color:black'>Writing
+CIDL files:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:.5in'><b><span style='color:black'>Distributor:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>In <i style='mso-bidi-font-style:normal'>Quoter/Distributor </i>sub-directory,
+place a cidl file Distributor.cidl that looks like <a
+href="Distributor/Distributor.cidl">this</a>. <o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>The MPC files we generated earlier automatically invoked the CIDLC
+compiler to generate the Servants, Executors, and Contexts for us. To reduce
+the amount of work and typing we need to do, we will next instruct the CIDLC
+compiler to generate an empty Distributor Executor implementation (Object
+implementation in the figure above). In the <i style='mso-bidi-font-style:normal'>Quoter/Distributor
+</i>sub-directory, type the following:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.5in'><span style='font-family:"Courier New";color:black;
+mso-bidi-font-weight:bold'>cidlc -I$TAO_ROOT -I$TAO_ROOT/tao -I$CIAO_ROOT/ciao
+--gen-exec-impl -- Distributor.cidl<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in'><span style='color:black'>The above command will generate a
+<i style='mso-bidi-font-style:normal'>Distributor_exec.h </i>and <i
+style='mso-bidi-font-style:normal'>Distributor_exec.cpp </i>files. These
+generated files greatly reduced the amount of work we do. We&#8217;ll edit
+those files later in the tutorial to insert our business logic in the
+Distributor component.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:.5in'><b style='mso-bidi-font-weight:normal'><span
+style='color:black'>Broker:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>In <i style='mso-bidi-font-style:normal'>Quoter/Broker </i>sub-directory,
+place a cidl file Broker.cidl that looks like <a href="Broker/Broker.cidl">this</a>.
+<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>The MPC files we generated earlier automatically invoked the CIDLC
+compiler to generate the Servants, Executors, and Contexts for us. To reduce
+the amount of work and typing we need to do, we will next instruct the CIDLC
+compiler to generate an empty Distributor Executor implementation (Object
+implementation in the figure above). In the <i style='mso-bidi-font-style:normal'>Quoter/Broker
+</i>sub-directory, type the following:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.5in'><span style='font-family:"Courier New";color:black;
+mso-bidi-font-weight:bold'>cidlc -I$TAO_ROOT -I$TAO_ROOT/tao -I$CIAO_ROOT/ciao
+--gen-exec-impl -- Broker.cidl<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in'><span style='color:black'>The above command will generate a
+<i style='mso-bidi-font-style:normal'>Broker_exec.h </i>and <i
+style='mso-bidi-font-style:normal'>Broker_exec.cpp </i>files. These generated
+files greatly reduced the amount of work we do. We&#8217;ll edit those files
+later in the tutorial to insert our business logic in the Broker component.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><br>
+<b style='mso-bidi-font-weight:normal'>Note:<o:p></o:p></b></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'>To
+understand the meaning of different parameters passed to the CIDLC compiler <span
+style='mso-bidi-font-style:italic'>type the</span> following command:<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Courier New";
+color:black;mso-bidi-font-style:italic'>cidlc --h</span><span style='color:
+black'><br>
+<br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='color:black'>Implement
+the Components:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:.5in'><b><span style='color:black'>Distributor:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>The CIDLC compiler generated an empty </span><i style='mso-bidi-font-style:
+normal'><span style='color:black'>Distributor_exec.h </span></i><span
+style='color:black'>and <i style='mso-bidi-font-style:normal'>Distributor_exec.cpp
+</i>files for us. You should now add your business logic to the executors. Look
+into <i style='mso-bidi-font-style:normal'><a
+href="Distributor/Distributor_exec.h">Distributor_exec.h</a> </i>and <i
+style='mso-bidi-font-style:normal'><a href="Distributor/Distributor_exec.cpp">Distributor_exec.cpp</a>
+</i>to see how we implemented this.<span style='mso-bidi-font-weight:bold'><o:p></o:p></span></span></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:.5in'><b style='mso-bidi-font-weight:normal'><span
+style='color:black'>Broker:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:12.0pt;
+margin-left:1.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;tab-stops:list 1.25in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black;mso-bidi-font-weight:bold'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><span style='color:black;mso-bidi-font-weight:
+bold'>The CIDLC compiler generated an empty </span><i style='mso-bidi-font-style:
+normal'><span style='color:black'>Distributor_exec.h </span></i><span
+style='color:black'>and <i style='mso-bidi-font-style:normal'>Distributor_exec.cpp
+</i>files for us. You should now add your business logic to the executors. Look
+into <i style='mso-bidi-font-style:normal'><a href="Broker/Broker_exec.h">Broker_exec.h</a>
+</i>and <i style='mso-bidi-font-style:normal'><a href="Broker/Broker_exec.cpp">Broker_exec.cpp</a>
+</i>to see how we implemented this.<span style='mso-bidi-font-weight:bold'><o:p></o:p></span></span></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><span style='color:black'>&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<address><span style='color:black'><a href="mailto:ming.xiong@vanderbilt.edu">Ming
+Xiong<br>
+</a><o:p></o:p></span></address>
+
+<p class=MsoNormal><span style='color:black'><!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->Last
+modified:<!-- hhmts end --> <o:p></o:p></span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/03.html b/modules/CIAO/docs/tutorials/Quoter/Simple/03.html
new file mode 100644
index 00000000000..5a60e6fa73b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/03.html
@@ -0,0 +1,1387 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="03_files/filelist.xml">
+<link rel=Edit-Time-Data href="03_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Getting Started</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="PlaceName"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="PlaceType"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="place"/>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Abdullah Sowayan</o:Author>
+ <o:LastAuthor>Abdullah Sowayan</o:LastAuthor>
+ <o:Revision>11</o:Revision>
+ <o:TotalTime>51</o:TotalTime>
+ <o:Created>2006-10-09T22:26:00Z</o:Created>
+ <o:LastSaved>2006-11-06T21:25:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>2514</o:Words>
+ <o:Characters>14330</o:Characters>
+ <o:Company>Maritime Systems &amp; Sensors</o:Company>
+ <o:Lines>119</o:Lines>
+ <o:Paragraphs>33</o:Paragraphs>
+ <o:CharactersWithSpaces>16811</o:CharactersWithSpaces>
+ <o:Version>11.8107</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:GrammarState>Clean</w:GrammarState>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]--><!--[if !mso]><object
+ classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
+<style>
+st1\:*{behavior:url(#ieooui) }
+</style>
+<![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Wingdings;
+ panose-1:5 0 0 0 0 0 0 0 0 0;
+ mso-font-charset:2;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h3
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ mso-outline-level:3;
+ font-size:13.5pt;
+ font-family:"Times New Roman";
+ font-weight:bold;}
+a:link, span.MsoHyperlink
+ {color:#000FFF;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:#FF0F0F;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+address
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ font-style:italic;}
+code
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+kbd
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+pre
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
+ font-size:10.0pt;
+ font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";}
+span.SpellE
+ {mso-style-name:"";
+ mso-spl-e:yes;}
+span.GramE
+ {mso-style-name:"";
+ mso-gram-e:yes;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:154345203;
+ mso-list-template-ids:-289649766;}
+@list l0:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1
+ {mso-list-id:201526982;
+ mso-list-template-ids:-336678638;}
+@list l1:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level2
+ {mso-level-number-format:bullet;
+ mso-level-text:o;
+ mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:"Courier New";
+ mso-bidi-font-family:"Times New Roman";}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2
+ {mso-list-id:521090106;
+ mso-list-template-ids:-1911898580;}
+@list l2:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l3
+ {mso-list-id:657850502;
+ mso-list-template-ids:1783002094;}
+@list l3:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l4
+ {mso-list-id:777020325;
+ mso-list-template-ids:-483995422;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l4:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5
+ {mso-list-id:907959882;
+ mso-list-template-ids:323885252;}
+@list l5:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6
+ {mso-list-id:1065254837;
+ mso-list-template-ids:1089662206;}
+@list l6:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7
+ {mso-list-id:1084494006;
+ mso-list-template-ids:-1504120978;}
+@list l7:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8
+ {mso-list-id:1153565371;
+ mso-list-template-ids:-169696680;}
+@list l8:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9
+ {mso-list-id:1784838673;
+ mso-list-template-ids:1110625472;}
+@list l9:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l10
+ {mso-list-id:1832599161;
+ mso-list-template-ids:-966728002;}
+@list l10:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level2
+ {mso-level-number-format:bullet;
+ mso-level-text:o;
+ mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:"Courier New";
+ mso-bidi-font-family:"Times New Roman";}
+@list l10:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11
+ {mso-list-id:1956401533;
+ mso-list-template-ids:-909756440;}
+@list l11:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12
+ {mso-list-id:2012949130;
+ mso-list-type:hybrid;
+ mso-list-template-ids:990837084 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l12:level1
+ {mso-level-tab-stop:39.0pt;
+ mso-level-number-position:left;
+ margin-left:39.0pt;
+ text-indent:-.25in;}
+@list l12:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level1 lfo5
+ {mso-level-start-at:4;}
+@list l1:level2 lfo7
+ {mso-level-number-format:arabic;
+ mso-level-numbering:continue;
+ mso-level-text:"%2\.";
+ mso-level-tab-stop:none;
+ mso-level-number-position:left;
+ margin-left:0in;
+ text-indent:0in;
+ mso-ansi-font-size:10.0pt;
+ font-family:"Courier New";
+ mso-bidi-font-family:"Times New Roman";}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!-- $Id$ --><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="4098"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white lang=EN-US link="#000FFF" vlink="#FF0F0F" style='tab-interval:
+.5in'>
+
+<div class=Section1>
+
+<h3 align=center style='text-align:center'><span style='color:black'>Step 3:
+Package your components<o:p></o:p></span></h3>
+
+<h3 align=center style='text-align:center'><span style='color:black'><img
+width=572 height=358 id="_x0000_i1025" src="images/Step3.JPG"><o:p></o:p></span></h3>
+
+<p class=MsoNormal><b><span style='color:red'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal><b>Brief Introduction to <span class=SpellE>CosMIC</span>:<o:p></o:p></b></p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'>The
+Component Synthesis using Model Integrated Computing (<span class=SpellE>CoSMIC</span>)
+project is a MDA toolset being developed by the Institute for Software
+Integrated Systems (ISIS) at <st1:place w:st="on"><st1:PlaceName w:st="on">Vanderbilt</st1:PlaceName>
+ <st1:PlaceType w:st="on">University</st1:PlaceType></st1:place> to:</p>
+
+<p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l12 level1 lfo1;
+tab-stops:list 39.0pt;mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
+style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]><i>Model and</i> <i>analyze </i>distributed real-time
+and embedded application functionality and <span class=SpellE>QoS</span>
+requirements.</p>
+
+<p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l12 level1 lfo1;
+tab-stops:list 39.0pt;mso-layout-grid-align:none;text-autospace:none'><![if !supportLists]><span
+style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]><i>Synthesize</i> CCM-specific deployment metadata
+required to deliver end-to-end <span class=SpellE>QoS</span> to DRE
+applications.</p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'>The <span
+class=SpellE>CoSMIC</span> <span class=SpellE>toolsuite</span> provides
+modeling of DRE systems, their <span class=SpellE>QoS</span> requirements, and <span
+class=SpellE>QoS</span> adaptation policies used for DRE application <span
+class=SpellE>QoS</span> management. The component behavior, their interactions,
+and <span class=SpellE>QoS</span> requirements are modeled using a domain
+specific modeling language that adheres to <span style='color:black'>the <a
+href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-08">OMG Deployment &amp;
+Configuration (D&amp;C) specification (ptc/2003-07-08)</a></span>. <span
+class=SpellE>CoSMIC</span> enables modeling the standards-based CCM components.
+</p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'>Hand-writing
+the required XML descriptors to configure our components is tedious and error
+prone. We therefore utilize <span class=SpellE>CosMIC</span> (we specifically
+use a subset of <span class=SpellE>CosMIC</span> called PICML, which stands for
+Platform-Independent Component Modeling Language) to generate the bulk of
+descriptors for us.</p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'>For
+more information on <span class=SpellE>CosMIC</span>, please refer to the
+following article:</p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
+style='mso-bidi-font-weight:bold'><a
+href="http://www.cs.wustl.edu/~schmidt/PDF/mamad2003.pdf"><span class=SpellE>CoSMIC</span>:
+An MDA Generative Tool for Distributed Real-time and Embedded Applications</a>.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
+style='mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
+style='mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal><b><span style='color:black'>Importing IDL to PICML</span></b><span
+style='color:black'><br>
+<br>
+&nbsp;&nbsp; To quick start our Stock <span class=SpellE>Quoter</span> modeling
+process in GME, <span class=SpellE>CoSMIC</span> introduces <span class=SpellE><em>idl_to_<span
+class=GramE>picml</span></em></span><span class=GramE> ,</span> which is an
+executable program that imports the IDL files you just created into PICML.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l5 level1 lfo2;tab-stops:list .5in'>Make sure <code><span
+ style='font-size:10.0pt'>%COSMIC_ROOT%\bin</span></code> is included in
+ the PATH variable, e.g., c:\Program Files\ISIS\<span class=SpellE>CoSMIC</span>\bin.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l5 level1 lfo2;tab-stops:list .5in'>Open a command prompt,
+ run VCVARS32.BAT from the MSVC .NET folder if you haven't done so. It will
+ set the environment for using Microsoft Visual Studio .NET tools so that <span
+ class=SpellE><i>idl_to_picml</i></span> works properly.<br>
+ in my machine, VCVARS32.bat is in C:\Program Files\Microsoft Visual Studio
+ .NET 2003\Vc7\bin<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l5 level1 lfo2;tab-stops:list .5in'>In the same command
+ prompt, change directory to <span class=SpellE><code><span
+ style='font-size:10.0pt'>MyQuoter</span></code></span><code><span
+ style='font-size:10.0pt'>\</span></code>, and type the following command:<br>
+ &nbsp;&nbsp; &gt; <span class=SpellE><kbd><span style='font-size:10.0pt'>idl_to_picml</span></kbd></span><kbd><span
+ style='font-size:10.0pt'> -x <span class=SpellE>MyQuoter</span> -r . -I .\<span
+ class=SpellE>Stock_Base</span></span></kbd><br>
+ &nbsp;&nbsp; (if the above command does not work, you may also try this<br>
+ &nbsp;&nbsp; &gt;<span class=SpellE><kbd><span style='font-size:10.0pt'>idl_to_picml</span></kbd></span><kbd><span
+ style='font-size:10.0pt'> -x <span class=SpellE>MyQuoter</span> -r
+ .&nbsp;-I .\<span class=SpellE>Stock_Base</span> -I %TAO_ROOT% -I
+ %TAO_ROOT%\<span class=SpellE>orbsvcs</span> -I %CIAO_ROOT%\ciao)</span></kbd><br>
+ &nbsp; <span class=SpellE><em>idl_to_picml</em></span> will parse your IDL
+ files and generated a <span class=SpellE><code><span style='font-size:
+ 10.0pt'>MyQuoter.xme</span></code></span> file in the <span class=SpellE><code><span
+ style='font-size:10.0pt'>MyQuoter</span></code></span> directory. Note
+ that if -x option is not used, the default <span class=SpellE>xme</span>
+ file name will be <span class=SpellE><code><span style='font-size:10.0pt'>PICML_default_xme_file.xme</span></code></span><code><span
+ style='font-size:10.0pt'>.</span></code><br>
+ 4. Start GME, select <strong>File-&gt;Import xml..</strong>, and choose
+ the <span class=SpellE>xme</span> file just generated. You should be able
+ to see an imported PICML model similar to the one shown in Figure 2.<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal align=center style='text-align:center'><span
+style='color:black'><img border=0 width=781 height=636 id="_x0000_i1026"
+src="Images/fig2.jpg"><br>
+<br>
+Figure 2<o:p></o:p></span></p>
+
+<p><span style='color:black'>&nbsp; In the Browser of the generated model, the <span
+class=SpellE><em>PredefinedTypes</em></span> folder contains a bunch of atomic <span
+class=SpellE>datatype</span> elements that will be referenced by other modeling
+parts later. You don't have to worry about them for now. The models in <span
+class=SpellE><em>InterfaceDefinitions</em></span> folder are the PICML
+representations <span class=SpellE>ofthe</span> IDL files you just imported.
+Double-click to open <em>Broker</em>, it will show you a white, document-like
+entity which represents a &lt;&lt;<span class=SpellE>FileRef</span>&gt;&gt;
+instance and a yellow box-shaped entity representing a &lt;&lt;Package&gt;&gt;
+instance. Their equivalent representations in IDL files are
+&quot;#include&quot; and &quot;module&quot; respectively. Figure 3 gives you a
+clear view of GME representation of all the 3 <span class=SpellE>idl</span>
+files created. We will cover the other folders in the next section.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span
+style='color:black'><img border=0 width=223 height=336 id="_x0000_i1027"
+src="Images/fig3.jpg"><br>
+<br>
+Figure 3<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><span style='color:black'>Now
+we are ready to model the rest of the Stock <span class=SpellE>Quoter</span>
+systems.<br>
+<br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3>Building Stock <span class=SpellE>Quoter</span> system in PICML<span
+style='color:black'><o:p></o:p></span></h3>
+
+<p><span style='color:black'>This section describes modeling the <span
+class=SpellE>Quoter</span> application using PICML. If you have trouble
+producing a functioning model from this tutorial, please see the, <a
+href="Model/Quoter.xme">pre-built <span class=SpellE>Quoter</span> model</a>
+which is provided for your reference. This model contains all elements created
+as part of this tutorial.<o:p></o:p></span></p>
+
+<div>
+
+<p class=MsoNormal><strong><span style='color:black'>Note:</span></strong><span
+style='color:black'> To import an XML file in GME, select <em>File-&gt;Import
+XML..</em> from GME and choose your XML model<o:p></o:p></span></p>
+
+</div>
+
+<p><span style='color:black'>The PICML paradigm is designed for the <a
+href="http://www.omg.org/cgi-bin/doc?ptc/2003-07-08">OMG Deployment &amp;
+Configuration (D&amp;C) specification (ptc/2003-07-08)</a>, so the modeling
+process is straightforward if you are familiar with the specification. Please
+see the <a href="../../releasenotes/dance.html"><span class=SpellE>DAnCE</span>
+project</a> for more information.&nbsp;For those who hate specification
+(including me, :-)), an <a
+href="http://www.cs.wustl.edu/%7Eschmidt/PDF/DAnCE.pdf">overview of D&amp;C</a>
+and as well as a <a
+href="http://www.cs.wustl.edu/%7Eschmidt/OMG-CCM-Tutorial.ppt">tutorial of
+D&amp;C and CCM</a> can help to reduce the learning curve. (Thanks to Sowayan, <span
+class=SpellE>Abdulah</span> for pointing this out). In addition, it is also
+helpful to read through Chapter 32 of <span class=SpellE>TAO's</span>
+Developer's Guide 1.4a (CIAO and CCM) which thoroughly describes the various
+descriptors required for a component (*.<span class=SpellE>iad</span>, *.<span
+class=SpellE>ccd</span>, *.cid, etc). <o:p></o:p></span></p>
+
+<h3><span style='color:black'>Table of Contents<o:p></o:p></span></h3>
+
+<ul type=disc>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#1"><span
+ class=SpellE>ImplementationArtifacts</span></a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#2"><span
+ class=SpellE>ComponentImplementations</span></a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#3"><span
+ class=SpellE>ComponentPackages</span></a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#4"><span
+ class=SpellE>PackageConfiguration</span></a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#5"><span
+ class=SpellE>TopLevelPackage</span></a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#6">Targets</a><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo3;tab-stops:list .5in'><a href="#7"><span
+ class=SpellE>DeploymentPlan</span></a><o:p></o:p></li>
+</ul>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<p><span style='color:black'>The complete PICML <span class=SpellE>Quoter</span>
+model consists of modeling elements distributed across various folders. If you
+used <span class=SpellE><em>idl_to_picml</em></span> to generate the initial
+model, you will see that it has created all these folders and some of the
+tedious boilerplate modeling for us. The rest of the section will explain the purpose
+of each folder as well as the modeling entities contained in these folders. We
+will also show how to model some of the folders that have to be done by hand.<o:p></o:p></span></p>
+
+<p><b><span style='font-variant:small-caps;color:red;background:silver;
+mso-highlight:silver'>Important:</span></b><span style='color:black;background:
+silver;mso-highlight:silver'> The interpreters that generate deployment
+artifacts expect very strict constraints in the model. When you finish your
+model, and any time you wish to generate anything, it is a good idea to check
+constraints by clicking on <em>File-&gt;Check-&gt;Check All</em> in GME. This
+will help you find many logic errors in your model.</span><span
+style='color:black'><o:p></o:p></span></p>
+
+<h3><span class=SpellE><span style='color:black'>ImplementationArtifacts</span></span><span
+style='color:black'><o:p></o:p></span></h3>
+
+<p><span style='color:black'>This folder contains implementation artifacts
+associated with components. <span class=SpellE><em>idl_to_picml</em></span> has
+created these artifacts for us, with their dependency relationships correctly
+captured. Figure 4 shows the Implementation Artifacts for <em>Broker</em>.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span
+style='color:black'><img border=0 width=891 height=552 id="_x0000_i1030"
+src="Images/fig4.jpg"><br>
+<span class=GramE>Figure 4.</span><o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><a name=1></a><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><span class=SpellE><span style='color:black'>ComponentImplementation</span></span><a
+name=2></a><span style='color:black'><o:p></o:p></span></h3>
+
+<p><span style='color:black'>This folder contains models that describe the
+implementations of component interfaces. In the <span class=SpellE>Quoter</span>
+example, we will have two monolithic component implementations - named <span
+class=SpellE><em>StockDistributorImplementation</em></span> and <span
+class=SpellE><em>StockBrokerImplementation</em></span> - and an assembly
+component implementation named <span class=SpellE><em>StockQuoter</em></span>,
+which is an assembly of <span class=SpellE><em>StockDistributorImplementation</em></span>
+and <span class=SpellE><em>StockBrokerImplementaion</em></span>. <span
+class=SpellE><em>idl_to_picml</em></span> has created the monolithic component
+implementations for us, as shown in figure 5 for example, but we have to
+specify the connections between them in order to construct a <span
+class=SpellE>Quoter</span> system.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='text-align:center'><span
+style='color:black'><img border=0 width=922 height=639 id="_x0000_i1032"
+src="Images/fig5.jpg"><br>
+Figure 5<o:p></o:p></span></p>
+
+<p><span style='color:black'>Assembly components provide a boundary for the
+composition of monolithic components and even other assemblies. Assembly
+components do not provide actual implementations for their interface, it is a
+virtual component that delegates its ports and attributes to one or more of the
+entities it contains. There are slight differences between modeling an assembly
+and modeling a monolithic component. Since the assembly is a virtual component,
+it is not necessary to model a </span><span class=SpellE><code><span
+style='font-size:10.0pt;color:black'>MonolithicImplementation</span></code></span><span
+style='color:black'>. Instead, <em>instances</em> of other components are
+placed within the assembly and connected. Let's try to assemble the <span
+class=SpellE><em>StockQuoter</em></span>.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l0 level1 lfo4;tab-stops:list .5in'>Right click the <span
+ class=SpellE><em>ComponentImplementations</em></span> folder, choose <strong>Insert
+ Model-&gt;<span class=SpellE>ComponentImplementationContainer</span></strong>,
+ rename it as &quot;<span class=SpellE>StockQuoterImplementation</span>&quot;
+ in the Attribute Panel. Double click to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l0 level1 lfo4;tab-stops:list .5in'>From the Part Browser,
+ drag a &lt;&lt;<span class=SpellE>ComponentAssembly</span>&gt;&gt; to the
+ modeling window, name it &quot;<span class=SpellE>StockQuoter</span>&quot;.
+ Double click to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l0 level1 lfo4;tab-stops:list .5in'>Now we will create two
+ instances for interfaces <span class=SpellE><em>StockBroker</em></span>
+ and <span class=SpellE><em>StockDistributor</em></span>. To do that,
+ expand the folder <span class=SpellE><em><span style='font-size:10.0pt;
+ font-family:"Courier New"'>InterfaceDefinitions</span></em></span>, then
+ expand the <span class=SpellE><em><span style='font-size:10.0pt;
+ font-family:"Courier New"'>InterfaceDefinitions</span></em></span><em><span
+ style='font-size:10.0pt;font-family:"Courier New"'>/</span></em> <em>Broker</em>,
+ then <span class=SpellE><em><span style='font-size:10.0pt;font-family:
+ "Courier New"'>InterfaceDefinitions</span></em></span><em><span
+ style='font-size:10.0pt;font-family:"Courier New"'>/</span></em> <em>Broker/
+ Stock</em> until the interface definition of <span class=SpellE><em>StockBroker</em></span>
+ shows. While expanding the tree, always keep the &quot;<span class=SpellE>StockQuoter</span>&quot;
+ &lt;&lt;<span class=SpellE>ComponentAssembly</span>&gt;&gt; window open.
+ Then drag <span class=SpellE><code><span style='font-size:10.0pt'>MyQuoter/InterfaceDefinitions/Broker/Stock/StockBroker</span></code></span>
+ in the browser to the &quot;<span class=SpellE>StockQuoter</span>&quot;
+ &lt;&lt;<span class=SpellE>ComponentAssembly</span>&gt;&gt; window while
+ pressing ALT key. Repeat the same steps for <code><span style='font-size:
+ 10.0pt'>MyQuoter/InterfaceDefinitions/Distributor/Stock/StockDistributor</span></code>,
+ and you will see two instances of component interfaces have been created
+ as shown in Figure 6 (the black line in the figure only indicates
+ .mapping)<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal align=center style='text-align:center'><span
+style='color:black'><img border=0 width=972 height=714 id="_x0000_i1046"
+src="Images/fig6.jpg"><br>
+<br>
+Figure 6<o:p></o:p></span></p>
+
+<ol start=4 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l11 level1 lfo5;tab-stops:list .5in'>Create an &lt;&lt;<span
+ class=SpellE>PublishConnector</span>&gt;&gt;.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l11 level1 lfo5;tab-stops:list .5in'>Now assemble the
+ components together according to <a href="Images/fig1.jpg">Figure 1</a>(make
+ sure you change to connect <span class=GramE>mode </span><img border=0
+ width=32 height=32 id="_x0000_i1047" src="Icons/AddConnMode.gif">) and the
+ resulting assembly model should look like Figure 7. Note that to create
+ connections between <span class=SpellE>StockDistributor.notify_out</span>
+ and <span class=SpellE>StockBroker.notify_in</span>, you will need the
+ intermediate connector &lt;&lt;<span class=SpellE>PublishConnector</span>&gt;&gt;.<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal align=center style='text-align:center'><span
+style='color:black'><img border=0 width=724 height=402 id="_x0000_i1048"
+src="Images/fig7.jpg"><!-- hhmts end -->&gt;<br>
+<br>
+Figure 7<o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><a name=3></a><span class=SpellE><span style='color:black'>ComponentPackage</span></span><span
+style='color:black'><o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>This folder contains deployable
+component packages. Every instance in an assembly should have a corresponding monolithic
+implementation and packaged in a <span class=SpellE>ComponentPackagebe</span>
+To create a package for <span class=SpellE><em>StockBroker</em>.instance</span><o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo6;tab-stops:list .5in'>Right click folder <span
+ class=SpellE><em>ComponentPackage</em>s</span> , insert a &lt;&lt;<span
+ class=SpellE>PackageContainer</span>&gt;&gt;, name it &quot;Broker&quot;;
+ Double click to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo6;tab-stops:list .5in'>From the <span
+ class=SpellE>PartBrowser</span>, add the following:<o:p></o:p></li>
+ <ul type=circle>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level2 lfo6;tab-stops:list 1.0in'>a &lt;&lt;<span
+ class=SpellE>ComponentPackage</span>&gt;&gt; named &quot;Broker&quot;;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level2 lfo6;tab-stops:list 1.0in'>a &lt;&lt;<span
+ class=SpellE>ComponentImplementationReference</span>&gt;&gt; named
+ &quot;Broker&quot;;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level2 lfo6;tab-stops:list 1.0in'>a &lt;&lt;<span
+ class=SpellE>ComponentRef</span>&gt;&gt; named &quot;Broker&quot;;<o:p></o:p></li>
+ </ul>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo6;tab-stops:list .5in'>Refer the &lt;&lt;<span
+ class=SpellE>ComponentImplementationReference</span>&gt;&gt; <em>Broker</em>
+ to <code><span style='font-size:10.0pt'>MyQuoter/ComponentImplementations/StockBroker</span></code>Implementation/StockBrokerMonolithicImpl.
+ Refer the &lt;&lt;<span class=SpellE>ComponentRef</span>&gt;&gt; <em>Broker</em>
+ to <span class=SpellE><code><span style='font-size:10.0pt'>MyQuoter/InterfaceDefinitions/Broker/Stock/StockBroker</span></code></span>.
+ To create a reference in GME, simply drag the tree node in the Browser
+ &quot;into&quot; the reference model. For example, you should drag the
+ tree node <code><span style='font-size:10.0pt'>MyQuoter/ComponentImplementations/StockBroker</span></code>Implementation/StockBrokerMonolithicImpl
+ into &lt;&lt;<span class=SpellE>ComponentImplementationReference</span>&gt;&gt;
+ <em>Broker.</em> Check GME manual(tutorials) for more information.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo6;tab-stops:list .5in'>Switch to Connect Mode
+ and create two connections according to the following relationship.<o:p></o:p></li>
+ <ul type=circle>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level2 lfo6;tab-stops:list 1.0in'>&lt;&lt;<span
+ class=SpellE>ComponentImplementationReference</span>&gt;&gt; <em>Broker</em>
+ implements &lt;&lt;<span class=SpellE>ComponentPackage</span>&gt;&gt; <em>Broker</em>;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level2 lfo6;tab-stops:list 1.0in'>&lt;&lt;<span
+ class=SpellE>ComponentPackage</span>&gt;&gt; <em>Broker</em> realizes
+ &lt;&lt;<span class=SpellE>ComponentRef</span>&gt;&gt; <em>Broker</em>.<o:p></o:p></li>
+ </ul>
+</ol>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+margin-left:.5in'><span style='color:black'><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; The model you built should resemble Figure 8.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='mso-margin-top-alt:auto;margin-bottom:
+12.0pt;margin-left:.5in;text-align:center'><span style='color:black'><img
+border=0 width=675 height=497 id="_x0000_i1034" src="Images/fig8.jpg"><!-- hhmts start -->&gt;<br>
+<br>
+Figure 8<o:p></o:p></span></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><span style='color:black'>Now create a <span class=SpellE>ComponentPackage/StockDistributor</span>
+following the same steps. <o:p></o:p></span></p>
+
+<ol start=5 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo6;tab-stops:list .5in;list-style-position:outside'><br>
+ We will also need to create a package for the assembly component <span
+ class=SpellE>StockQuoter</span>. Remember assembly component is a virtual
+ component, it does not &quot;realize&quot; a certain interface, so
+ different from the Broker and Distributor packages, the <span
+ class=SpellE>StockQuoter</span> does not need a &lt;&lt;<span
+ class=SpellE>ComponentRef</span>&gt;&gt;. To create this model: <o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in;text-indent:-.25in;mso-list:l1 level2 lfo7'><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
+mso-fareast-font-family:"Courier New";color:black'><span style='mso-list:Ignore'>1.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='color:black'>Insert a &lt;&lt;<span class=SpellE>ComponentPackage</span>&gt;&gt;
+named &quot;<span class=SpellE>StockQuoter</span>&quot;<o:p></o:p></span></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 lfo7'><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
+mso-fareast-font-family:"Courier New";color:black'><span style='mso-list:Ignore'>2.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='color:black'>Add a &lt;&lt;<span class=SpellE>ComponentImplementationReference</span>&gt;&gt;
+named &quot;<span class=SpellE>StockQuoter</span>&quot;, refer it to <span
+class=SpellE>MyQuoter<code><span style='font-size:10.0pt'>/ComponentImplementations/StockQuoter/StockQuoter</span></code></span><o:p></o:p></span></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:1.0in;text-indent:-.25in;mso-list:l1 level2 lfo7'><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:"Courier New";
+mso-fareast-font-family:"Courier New";color:black'><span style='mso-list:Ignore'>3.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
+style='color:black'>Switch to connect mode and connect &lt;&lt;<span
+class=SpellE>ComponentImplementationReference</span>&gt;&gt; <span
+class=SpellE>StockQuoter</span> with &lt;&lt;<span class=SpellE>ComponentPackage</span>&gt;&gt;
+<span class=SpellE>StockQuoter</span>, as in Figure 9.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span
+style='color:black'><img border=0 width=549 height=354 id="_x0000_i1035"
+src="Images/fig9.jpg"><!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->&gt;<br>
+<br>
+Figure 9<o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><a name=4></a><span class=SpellE><span style='color:black'>PackageConfiguration</span></span><span
+style='color:black'><o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>This folder contains just one
+model capturing specific configuration of Component packages.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l8 level1 lfo8;tab-stops:list .5in'>In the folder <span
+ class=SpellE><em>PackageConfiguratio</em>n</span>, and create a &lt;&lt;<span
+ class=SpellE>PackageConfigurationContainer</span>&gt;&gt;, name it
+ &quot;Default&quot;, click to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l8 level1 lfo8;tab-stops:list .5in'>Add a &lt;&lt;<span
+ class=SpellE>PackageConfiguration</span>&gt;&gt; named &quot;default&quot;
+ and a &lt;&lt;<span class=SpellE>ComponentPackageReference</span>&gt;&gt;,
+ name it &quot;<span class=SpellE>StockQuoter</span>&quot;, connect
+ &quot;Default&quot; to &quot;<span class=SpellE>StockQuoter</span>&quot;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l8 level1 lfo8;tab-stops:list .5in'>Refer &lt;&lt;<span
+ class=SpellE>ComponentPackageReference</span>&gt;&gt; <span class=SpellE>StockQuoter</span>
+ to &lt;&lt;<span class=SpellE>ComponentPackage</span>&gt;&gt; <span
+ class=SpellE><code><span style='font-size:10.0pt'>MyQuoter/ComponentPackage/StockQuoter/StockQuoter</span></code></span><span
+ style='font-size:10.0pt;font-family:"Courier New"'><br>
+ <code>(Not &lt;&lt;<span class=SpellE>ComponentImplementationReference</span>&gt;&gt;</code></span>
+ <span class=SpellE><code><span style='font-size:10.0pt'>MyQuoter/ComponentPackage/StockQuoter/StockQuoter</span></code></span><code><span
+ style='font-size:10.0pt'>!)&nbsp;</span></code><o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><a name=5></a><span class=SpellE><span style='color:black'>ToplevelPackage</span></span><span
+style='color:black'><o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>This folder contains one model
+capturing information about the top-level element that will be fed to the
+application.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l6 level1 lfo9;tab-stops:list .5in'>In the folder <span
+ class=SpellE><em>ToplevelPackage</em></span>, and create a &lt;&lt;<span
+ class=SpellE>ToplevelPackageContainer</span>&gt;&gt;, name it
+ &quot;Default&quot;, double click to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l6 level1 lfo9;tab-stops:list .5in'>Add a &lt;&lt;<span
+ class=SpellE>ToplevelPackage</span>&gt;&gt; named &quot;<span
+ class=SpellE>ToplevelPackage</span>&quot; and a &lt;&lt;<span
+ class=SpellE>PackageConfigurationReference</span>&gt;&gt;, name it
+ &quot;Default&quot;, connect &quot;<span class=SpellE>ToplevelPackage</span>&quot;
+ to &quot;Default&quot;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l6 level1 lfo9;tab-stops:list .5in'>Refer
+ &quot;Default&quot; to <span class=SpellE>My<code><span style='font-size:
+ 10.0pt'>Quoter/PackageConfiguration/Default/Default</span></code></span><o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><a name=6></a><span style='color:black'>Targets<o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>This folder contains
+domain-specific models capturing information about the target environment in
+which component-based application will be deployed. In this <span class=SpellE>Quoter</span>
+example, we can either deploy the two components into ONE host, or into TWO
+different host. We will deploy the <span class=SpellE>Quoter</span> into two
+different host.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l7 level1 lfo10;tab-stops:list .5in'>In the folder <i>Targets</i>,
+ insert a new &lt;&lt;Domain&gt;&gt; named &quot;Domain&quot;; double click
+ to open it.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l7 level1 lfo10;tab-stops:list .5in'>From the Part Browser,
+ add two &lt;&lt;Node&gt;&gt; named &quot;Broker&quot; and
+ &quot;Distributor&quot; respectively.<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal><span style='color:black'><br>
+Now we are ready to deploy our Components to the actual physical environment.<o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<h3><a name=7></a><span class=SpellE><span style='color:black'>DeploymentPlan</span></span><span
+style='color:black'><o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>This folder contains a plan model that
+captures information about the assignment of component to nodes.<o:p></o:p></span></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l10 level1 lfo11;tab-stops:list .5in'>In the folder <span
+ class=SpellE><em>DeploymentPlan</em></span>, insert a model &lt;&lt;<span
+ class=SpellE>DeploymentPlan</span>&gt;&gt;; name it &quot;Plan&quot;,
+ click to open it<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l10 level1 lfo11;tab-stops:list .5in'>From the <span
+ class=SpellE>PartBrowser</span>, add the following:<o:p></o:p></li>
+ <ul type=circle>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l10 level2 lfo11;tab-stops:list 1.0in'>Two &lt;&lt;<span
+ class=SpellE>CollocationGroup</span>&gt;&gt;<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l10 level2 lfo11;tab-stops:list 1.0in'>Two &lt;&lt;<span
+ class=SpellE>NodeReference</span>&gt;&gt; named &quot;<span class=SpellE>Node_Broker</span>&quot;
+ and &quot;<span class=SpellE>Node_Distributor</span>&quot; respectively, <span
+ class=SpellE>refering</span> to <span class=SpellE><code><span
+ style='font-size:10.0pt'>MyQuoter</span></code></span><code><span
+ style='font-size:10.0pt'>/Targets/Domain/Broker</span></code> and <span
+ class=SpellE><code><span style='font-size:10.0pt'>MyQuoter</span></code></span><code><span
+ style='font-size:10.0pt'>/Targets/Domain/Distributor</span></code>
+ respectively<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l10 level2 lfo11;tab-stops:list 1.0in'>Two &lt;&lt;<span
+ class=SpellE>ComponentRef</span>&gt;&gt; named &quot;<span class=SpellE>StockBroker</span>&quot;
+ and &quot;<span class=SpellE>StockDistributor</span>&quot; respectively, <span
+ class=SpellE>refering</span> to <code><span style='font-size:10.0pt'>MyQuoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockBroker</span></code>
+ and <code><span style='font-size:10.0pt'>MyQuoter/ComponentImplementations/StockQuoterImplementation/StockQuoter/StockDistributor</span></code>
+ respectively. Note that the &lt;&lt;<span class=SpellE>ComponentRef</span>&gt;&gt;
+ in <span class=SpellE>DeploymentPlan</span> is not referring to the interface,
+ but rather the actual instance of the implementation.<o:p></o:p></li>
+ </ul>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;margin-bottom:
+ 12.0pt;mso-list:l10 level1 lfo11;tab-stops:list .5in'>Switch to Connect
+ Mode, connect one &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+ to &lt;&lt;<span class=SpellE>NodeReference</span>&gt;&gt; <span
+ class=SpellE><em>Node_Broker</em></span>, connect another &lt;&lt;<span
+ class=SpellE>CollocationGroup</span>&gt;&gt; to &lt;&lt;<span
+ class=SpellE>NodeReference</span>&gt;&gt; <span class=SpellE><em>Node_Distributor</em></span>.
+ Now the model looks like the following.<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal align=center style='mso-margin-top-alt:auto;margin-bottom:
+12.0pt;margin-left:.5in;text-align:center'><span style='color:black'><img
+border=0 width=752 height=530 id="_x0000_i1040" src="Images/fig10.jpg"><br>
+<br>
+<span class=GramE>Figure 10.</span><o:p></o:p></span></p>
+
+<ol start=4 type=1>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;margin-bottom:
+ 12.0pt;mso-list:l10 level1 lfo11;tab-stops:list .5in'>Now we need to
+ associate &lt;&lt;<span class=SpellE>ComponentRef</span>&gt;&gt; <span
+ class=SpellE>StockBroker</span> to the &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+ running on the &lt;&lt;<span class=SpellE>NodeReference</span>&gt;&gt;
+ Broker, and &lt;&lt;<span class=SpellE>ComponentRef</span>&gt;&gt; <span
+ class=SpellE>StockDistributor</span> to the &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+ running on the &lt;&lt;<span class=SpellE>NodeReference</span>&gt;&gt;
+ Distributor. To do that, switch the Edit Mode Bar to Set Mode (<img
+ border=0 width=32 height=32 id="_x0000_i1041" src="Icons/SetMode.gif">),
+ and move the cursor to the &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+ running on &lt;&lt;<span class=SpellE>NodeReference</span>&gt;&gt;
+ Distributor, right-click on it. You will find the cursor is changed to set
+ mode cursor, and only the &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+ you clicked in is highlighted, as shown in Figure 11.<o:p></o:p></li>
+</ol>
+
+<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span
+style='color:black'><img border=0 width=672 height=505 id="_x0000_i1042"
+src="Images/fig11.jpg"><!-- 01.html,v 1.3 2006/02/10 14:34:35 mxiong Exp -->&gt;<br>
+<br>
+Figure 11<o:p></o:p></span></p>
+
+<p><span style='color:black'>Now move your cursor to &lt;&lt;<span
+class=SpellE>ComponentRef</span>&gt;&gt;&nbsp; <span class=SpellE>StockDistributor</span>,
+and left-click it, so that it looks like Figure 12.<o:p></o:p></span></p>
+
+<p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span
+style='color:black'><img border=0 width=672 height=505 id="_x0000_i1043"
+src="Images/fig12.jpg">
+
+<!doctype HTML>
+
+&gt;<br>
+<br>
+Figure 12<o:p></o:p></span></p>
+
+<p style='margin-bottom:12.0pt'><span style='color:black'>This operation
+associates <span class=SpellE><em>StockDistributor</em></span> component to the
+&lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt; running on <em>Distributor</em>
+node. To do the same with Broker, just right-click on another &lt;&lt;<span
+class=SpellE>CollocationGroup</span>&gt;&gt;, and left-click on <span
+class=SpellE>StockBroker</span> &lt;&lt;<span class=SpellE>CollocationGroup</span>&gt;&gt;
+which is highlighted.<o:p></o:p></span></p>
+
+<div class=MsoNormal align=center style='text-align:center'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<p><a name=8></a><span style='color:black'>Up to this point, we are basically
+done with the modeling part. Before we generate anything from this model
+though, please <b>DO</b> remember to check the constraints of the model as we
+mentioned earlier.<o:p></o:p></span></p>
+
+<p><span style='color:black'>After we are done with the modeling, the <span
+class=SpellE>flattened_deploymentplan</span> interpreter that comes along with
+PICML will help us to generate a <span class=SpellE>flattened_deploymentplan.cdp</span>
+file. Please make sure you generate this file to <span class=SpellE>MyQuoter</span>/descriptors.
+Note that to get the example <span class=SpellE>working<span style='font-family:
+"Courier New"'>,</span>a</span> Node Map file should be created to map <span
+class=SpellE>logicalnodes</span> to <span class=SpellE>NodeManager</span>
+object <span class=SpellE>references,e.g</span>:<o:p></o:p></span></p>
+
+<pre wrap=""><span class=SpellE><span style='color:black'>DistributorNode</span></span><span
+style='color:black'> corbaloc<span class=GramE>:iiop:localhost:30000</span>/NodeManager<o:p></o:p></span></pre><pre><span
+class=SpellE><span style='color:black'>BrokerNode</span></span><span
+style='color:black'><span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>corbaloc<span
+class=GramE>:iiop:localhost:40000</span>/NodeManager<o:p></o:p></span></pre><pre><span
+style='color:black'><o:p>&nbsp;</o:p></span></pre><pre><span style='color:black'><o:p>&nbsp;</o:p></span></pre>
+
+<address style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br>
+</a></span><a href="mailto:abdullah.sowayan@lmco.com">Abdullah Sowayan</a></address>
+
+<address style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><o:p>&nbsp;</o:p></span></address>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->Last
+modified:<!-- hhmts end --> <o:p></o:p></span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/04.html b/modules/CIAO/docs/tutorials/Quoter/Simple/04.html
new file mode 100644
index 00000000000..4e259355ba1
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/04.html
@@ -0,0 +1,413 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="04_files/filelist.xml">
+<link rel=Edit-Time-Data href="04_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Building a Stock Quoter with TAO - A Tutorial</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Abdullah Sowayan</o:Author>
+ <o:LastAuthor>Abdullah Sowayan</o:LastAuthor>
+ <o:Revision>3</o:Revision>
+ <o:TotalTime>1</o:TotalTime>
+ <o:Created>2006-11-06T21:26:00Z</o:Created>
+ <o:LastSaved>2006-11-06T21:34:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>285</o:Words>
+ <o:Characters>1629</o:Characters>
+ <o:Company>Lockheed Martin</o:Company>
+ <o:Lines>13</o:Lines>
+ <o:Paragraphs>3</o:Paragraphs>
+ <o:CharactersWithSpaces>1911</o:CharactersWithSpaces>
+ <o:Version>11.8107</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Wingdings;
+ panose-1:5 0 0 0 0 0 0 0 0 0;
+ mso-font-charset:2;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h3
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ mso-outline-level:3;
+ font-size:13.5pt;
+ font-family:"Times New Roman";
+ font-weight:bold;}
+a:link, span.MsoHyperlink
+ {color:#000FFF;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:#FF0F0F;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+address
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ font-style:italic;}
+code
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:20934335;
+ mso-list-template-ids:-306000872;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l1
+ {mso-list-id:67775701;
+ mso-list-template-ids:1355323582;}
+@list l1:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l1:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2
+ {mso-list-id:170876734;
+ mso-list-template-ids:1310460404;}
+@list l2:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+@list l2:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3
+ {mso-list-id:232472744;
+ mso-list-template-ids:1463160066;}
+@list l3:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l4
+ {mso-list-id:333609146;
+ mso-list-template-ids:-1273693138;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l4:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5
+ {mso-list-id:1166676480;
+ mso-list-template-ids:-2033257756;}
+@list l5:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Symbol;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!-- $Id$ --><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="3074"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white lang=EN-US link="#000FFF" vlink="#FF0F0F" style='tab-interval:
+.5in'>
+
+<div class=Section1>
+
+<h3 align=center style='text-align:center'><span style='color:black'>Step 6: System
+Deployment<o:p></o:p></span></h3>
+
+<h3 align=center style='text-align:center'><span style='color:black'><img
+width=432 height=223 id="_x0000_i1025" src="images/Step6.JPG"><o:p></o:p></span></h3>
+
+<p class=MsoNormal><span style='color:black'>Now that we have all the
+components and driver programs successfully built, along with the
+flattened_deploymentplan generated by PICML, we will be able to run our
+application<br>
+<br>
+From different command prompts in </span><code><span style='font-size:10.0pt;
+color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/descriptors/</span></code><span
+style='color:black'> directory: <o:p></o:p></span></p>
+
+<ul type=disc>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start NodeManagers
+ (NodeDameon) by running <code><span style='font-size:10.0pt'>runNodeDaemon.pl</span></code><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start the execution
+ manager <code><span style='font-size:10.0pt'>%CIAO_ROOT%/DAnCE/ExecutionManager/Execution_Manager
+ -o ior -i Stock.dat</span></code>&nbsp;<o:p></o:p></li>
+</ul>
+
+<p><span style='color:black'>The </span><code><span style='font-size:10.0pt;
+color:black'>Stock.dat</span></code><span style='color:black'> file describes
+the deployment daemons CIAO's Execution_Manager will contact to instantiate
+ComponentServer's, home's, and component instances. Each line specify the name
+of a installation &quot;destination&quot; and the corresponding IOR for the
+CIAO_Daemon.<o:p></o:p></span></p>
+
+<ul type=square>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l4 level1 lfo6;tab-stops:list .5in'><em>NOTE</em>: As one
+ can see, we use the &quot;Stock.dat&quot; file to instruct the
+ Execution_Manager how to find the endpoint of each individual NodeManager
+ (i.e., Node Daemon) where component(s) will be deployed, so this is
+ non-standard. We plan to use Naming Service to do this in the future.<o:p></o:p></li>
+</ul>
+
+<ul type=disc>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo9;tab-stops:list .5in'>Start the plan_launcher
+ by running <code><span style='font-size:10.0pt'>%CIAO_ROOT%/DAnCE/Plan_Launcher/Plan_Launcher
+ -p flattened_deploymentplan.cdp -k file://ior</span></code><o:p></o:p></li>
+ <li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+ auto;mso-list:l1 level1 lfo9;tab-stops:list .5in'>By now the components
+ should be successfully deployed. You may run the driver program to start
+ the application. e.g. you can try the following<o:p></o:p></li>
+</ul>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><code><span style='font-size:10.0pt;color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/Distributor.exe
+-o</span></code><span style='color:black'><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><code><span style='font-size:
+10.0pt;color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+-s MSFT</span></code><span style='color:black'><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><code><span style='font-size:
+10.0pt;color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+-s IBM</span></code><span style='color:black'><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><code><span style='font-size:
+10.0pt;color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Broker/Broker.exe
+-u MSFT</span></code><span style='color:black'><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><code><span style='font-size:
+10.0pt;color:black'>%CIAO_ROOT%/docs/tutorials/Quoter/Simple/Distributor/Distributor.exe
+&#8211;f</span></code><code><span style='font-size:10.0pt'><o:p></o:p></span></code></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><code><span style='font-size:
+10.0pt;color:black'><o:p>&nbsp;</o:p></span></code></p>
+
+<address style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><a href="mailto:ming.xiong@vanderbilt.edu">Ming Xiong<br>
+</a></span><a href="mailto:abdullah.sowayan@lmco.com">Abdullah Sowayan</a></address>
+
+<address style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><o:p>&nbsp;</o:p></span></address>
+
+<p class=MsoNormal style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span
+style='color:black'><!-- Created: Sat Nov 27 15:25:06 CST 1999 --><!-- hhmts start -->Last
+modified:<!-- hhmts end --> <o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cidl b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cidl
new file mode 100644
index 00000000000..a6d9bb29214
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cidl
@@ -0,0 +1,22 @@
+//$Id$
+
+//Stock.cidl,v 1.0
+/**
+ * @file Stock.cidl
+ *
+ * @author ming xiong <xiongm@isis.vanderbilt.edu>
+ */
+
+#ifndef STOCK_CIDL
+#define STOCK_CIDL
+
+#include "Broker.idl"
+
+composition session StockBroker_Impl {
+ home executor StockBrokerHome_Exec {
+ implements Stock::StockBrokerHome;
+ manages StockBroker_Exec;
+ };
+};
+
+#endif /* STOCK_CIDL */
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cpp
new file mode 100644
index 00000000000..fc059cc0d74
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.cpp
@@ -0,0 +1,110 @@
+//$Id$
+/*
+ * @file Broker.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+#include "BrokerC.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+
+const char *broker_ior = "file://Broker.ior";
+const char *subscribe_name = 0;
+const char *unsubscribe_name = 0;
+
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:s:u:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ broker_ior = get_opts.opt_arg ();
+ break;
+
+ case 's':
+ subscribe_name = get_opts.opt_arg ();
+ break;
+
+ case 'u':
+ unsubscribe_name = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-k <Broker IOR> (default is file:\\broker.ior) \n"
+ "-s <stock name you wish to subscribe>\n"
+ "-u <stock name you wish to unsubscribe>\n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ }
+
+ return 0;
+}
+
+int main (int argc, char* argv[])
+{
+ try
+ {
+ // initialize the ORB
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv,"");
+
+
+ if (parse_args (argc, argv) != 0)
+ return -1;
+
+ // create the factory object reference of StockBrokerHome
+ CORBA::Object_var broker_obj =
+ orb->string_to_object (broker_ior);
+
+ // downcast the object reference to the appropriate type
+ Stock::StockBroker_var broker =
+ Stock::StockBroker::_narrow (broker_obj.in ());
+
+ if (CORBA::is_nil (broker.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire 'Broker' objref\n"),
+ -1);
+ }
+
+
+ if (subscribe_name != 0)
+ {
+ broker->stock_subscribe (subscribe_name);
+
+ ACE_DEBUG ((LM_DEBUG, "Subscribe successful!\n"));
+ }
+
+ if (unsubscribe_name != 0)
+ {
+ broker->stock_unsubscribe (unsubscribe_name);
+
+ ACE_DEBUG ((LM_DEBUG, "Unsubscribe successful!\n"));
+ }
+
+ // Finally destroy the ORB
+ orb->destroy ();
+
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Uncaught CORBA exception\n"),
+ 1);
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.idl
new file mode 100644
index 00000000000..dbe9a04364a
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.idl
@@ -0,0 +1,35 @@
+//$Id$
+
+#include "../Stock_Base/Stock_Base.idl"
+
+module Stock
+{
+ interface StockSubscriber {
+ /// subscribe to an interested stock
+ void stock_subscribe (in string stock_name)
+ raises (Invalid_Stock);
+ /// unsubscribe to an stock
+ void stock_unsubscribe (in string stock_name)
+ raises (Invalid_Stock);
+ };
+
+ /**
+ * @class StockBroker
+ *
+ * @brief component
+ */
+ component StockBroker supports StockSubscriber
+ {
+ consumes StockName notify_in;
+ uses StockQuoter read_quoter;
+ };
+
+ /**
+ * @class StockBrokerHome
+ *
+ * @brief home for StockBroker component
+ */
+ home StockBrokerHome manages StockBroker
+ {
+ };
+};
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.mpc
new file mode 100644
index 00000000000..627feb516a9
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker.mpc
@@ -0,0 +1,84 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Stock_Base Broker"
+
+project(Stock_Base_Broker_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_stub
+ sharedname = Broker_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=BROKER_STUB_Export \
+ -Wb,stub_export_include=Broker_stub_export.h \
+ -Wb,skel_export_macro=BROKER_SVNT_Export \
+ -Wb,skel_export_include=Broker_svnt_export.h
+ dynamicflags = BROKER_STUB_BUILD_DLL
+ libs += Stock_Base_stub
+
+ IDL_Files {
+ Broker.idl
+ }
+
+ Source_Files {
+ BrokerC.cpp
+ }
+}
+
+project(Stock_Base_Broker_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_skel Stock_Base_Broker_stub
+ sharedname = Broker_svnt
+ libs += Broker_stub Stock_Base_stub Stock_Base_skel
+
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=BROKER_SVNT_Export \
+ -Wb,export_include=Broker_svnt_export.h
+ dynamicflags = BROKER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Broker.cidl
+ }
+
+ IDL_Files {
+ BrokerE.idl
+ }
+
+ Source_Files {
+ BrokerEC.cpp
+ BrokerS.cpp
+ Broker_svnt.cpp
+ }
+}
+
+
+project(Stock_Base_Broker_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_Broker_svnt
+ sharedname = Broker_exec
+ libs += Broker_stub Broker_svnt Stock_Base_stub Stock_Base_skel
+
+ dynamicflags = BROKER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Broker_exec.cpp
+ }
+}
+
+
+project (Stock_Broker) : ciao_client_dnc, valuetype{
+ avoids += ace_for_tao
+ exename = Broker
+ after += Stock_Base_Broker_stub
+ libs += Broker_stub Stock_Base_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Broker.cpp
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp
new file mode 100644
index 00000000000..4e85274ce8c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.cpp
@@ -0,0 +1,200 @@
+//$Id$
+/*
+ * @file Broker_exec.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+#include "Broker_exec.h"
+#include "ciao/CIAO_common.h"
+
+
+namespace CIDL_StockBroker_Impl
+{
+ //==================================================================
+ // Component Executor Implementation Class: StockBroker_exec_i
+ //==================================================================
+
+ StockBroker_exec_i::StockBroker_exec_i (void)
+ {
+ }
+
+ StockBroker_exec_i::~StockBroker_exec_i (void)
+ {
+ }
+
+
+ // Supported or inherited operations.
+
+ void
+ StockBroker_exec_i::stock_subscribe (
+ const char * stock_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Stock::Invalid_Stock))
+ {
+ if ((strcmp (stock_name, "MSFT") == 0) || (strcmp (stock_name, "IBM") == 0))
+ {
+ std::set<std::string>::iterator iter = this->subscribed_stock_list_.find (stock_name);
+ if (iter == this->subscribed_stock_list_.end ())
+ {
+ this->subscribed_stock_list_.insert (stock_name);
+ }
+ }
+ else
+ {
+ throw Stock::Invalid_Stock ();
+ }
+ }
+
+ void
+ StockBroker_exec_i::stock_unsubscribe (
+ const char * stock_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Stock::Invalid_Stock))
+ {
+ if ((strcmp (stock_name, "MSFT") == 0) || (strcmp (stock_name, "IBM") == 0))
+ {
+ std::set<std::string>::iterator iter = this->subscribed_stock_list_.find (stock_name);
+ if (iter != this->subscribed_stock_list_.end ())
+ {
+ this->subscribed_stock_list_.erase (iter);
+ }
+ }
+ else
+ {
+ throw Stock::Invalid_Stock ();
+ }
+
+ }
+
+
+ void
+ StockBroker_exec_i::push_notify_in (
+ Stock::StockName *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+
+ ACE_DEBUG ((LM_INFO,
+ "Broker - Got message from Distributor\n"));
+
+ CORBA::String_var stock_name = CORBA::string_dup (ev->name ());
+
+ // Retrieve stock information if the stock name is in the subscribed_stock_list
+ if (this->subscribed_stock_list_.find (stock_name.in ()) != this->subscribed_stock_list_.end ())
+ {
+ Stock::StockQuoter_var quoter_obj = this->context_->get_connection_read_quoter ();
+
+ if (CORBA::is_nil (quoter_obj.in ()))
+ {
+ throw CORBA::BAD_PARAM ();
+ }
+
+ Stock::StockInfo_var info = quoter_obj->get_stock_info (stock_name.in ());
+
+ ACE_DEBUG ((LM_DEBUG, "Quoter - Current value of %s is %d\n",
+ stock_name.in (),
+ info->last));
+ }
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ StockBroker_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ = StockBroker_Context::_narrow (ctx);
+
+ if (0 == this->context_)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ StockBroker_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockBroker_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockBroker_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockBroker_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockBroker_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: StockBrokerHome_exec_i
+ //==================================================================
+
+ StockBrokerHome_exec_i::StockBrokerHome_exec_i (void)
+ {
+ }
+
+ StockBrokerHome_exec_i::~StockBrokerHome_exec_i (void)
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ StockBrokerHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ StockBroker_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" BROKER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockBrokerHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ StockBrokerHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.h
new file mode 100644
index 00000000000..020acf28a12
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec.h
@@ -0,0 +1,141 @@
+//$Id$
+/*
+ * @file Broker_exec.h
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+
+#ifndef CIAO_BROKER_EXEC_H
+#define CIAO_BROKER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Broker_svnt.h"
+#include "BrokerEC.h"
+#include "Broker_exec_export.h"
+
+#include <set>
+#include <string>
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIDL_StockBroker_Impl
+{
+
+ /**
+ * @class StockBroker_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockBroker component
+ */
+ class BROKER_EXEC_Export StockBroker_exec_i
+ : public virtual StockBroker_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockBroker_exec_i (void);
+ virtual ~StockBroker_exec_i (void);
+
+
+ // Supported or inherited operations.
+
+ virtual void
+ stock_subscribe (
+ const char * stock_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Stock::Invalid_Stock));
+
+ virtual void
+ stock_unsubscribe (
+ const char * stock_name)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Stock::Invalid_Stock));
+
+ virtual void
+ push_notify_in (
+ ::Stock::StockName *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ StockBroker_Context *context_;
+
+ private:
+ std::set<std::string> subscribed_stock_list_;
+ };
+
+
+ /**
+ * @class StockBrokerHome_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockBrokerHome component
+ */
+ class BROKER_EXEC_Export StockBrokerHome_exec_i
+ : public virtual StockBrokerHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockBrokerHome_exec_i (void);
+ virtual ~StockBrokerHome_exec_i (void);
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" BROKER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockBrokerHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_BROKER_EXEC_H */
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h
new file mode 100644
index 00000000000..cb7229d833e
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BROKER_EXEC
+// ------------------------------
+#ifndef BROKER_EXEC_EXPORT_H
+#define BROKER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BROKER_EXEC_HAS_DLL)
+# define BROKER_EXEC_HAS_DLL 1
+#endif /* ! BROKER_EXEC_HAS_DLL */
+
+#if defined (BROKER_EXEC_HAS_DLL) && (BROKER_EXEC_HAS_DLL == 1)
+# if defined (BROKER_EXEC_BUILD_DLL)
+# define BROKER_EXEC_Export ACE_Proper_Export_Flag
+# define BROKER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BROKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BROKER_EXEC_BUILD_DLL */
+# define BROKER_EXEC_Export ACE_Proper_Import_Flag
+# define BROKER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BROKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BROKER_EXEC_BUILD_DLL */
+#else /* BROKER_EXEC_HAS_DLL == 1 */
+# define BROKER_EXEC_Export
+# define BROKER_EXEC_SINGLETON_DECLARATION(T)
+# define BROKER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BROKER_EXEC_HAS_DLL == 1 */
+
+// Set BROKER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BROKER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BROKER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BROKER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BROKER_EXEC_NTRACE */
+
+#if (BROKER_EXEC_NTRACE == 1)
+# define BROKER_EXEC_TRACE(X)
+#else /* (BROKER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BROKER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BROKER_EXEC_NTRACE == 1) */
+
+#endif /* BROKER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h
new file mode 100644
index 00000000000..1d7c2c5fc2b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BROKER_STUB
+// ------------------------------
+#ifndef BROKER_STUB_EXPORT_H
+#define BROKER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BROKER_STUB_HAS_DLL)
+# define BROKER_STUB_HAS_DLL 1
+#endif /* ! BROKER_STUB_HAS_DLL */
+
+#if defined (BROKER_STUB_HAS_DLL) && (BROKER_STUB_HAS_DLL == 1)
+# if defined (BROKER_STUB_BUILD_DLL)
+# define BROKER_STUB_Export ACE_Proper_Export_Flag
+# define BROKER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BROKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BROKER_STUB_BUILD_DLL */
+# define BROKER_STUB_Export ACE_Proper_Import_Flag
+# define BROKER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BROKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BROKER_STUB_BUILD_DLL */
+#else /* BROKER_STUB_HAS_DLL == 1 */
+# define BROKER_STUB_Export
+# define BROKER_STUB_SINGLETON_DECLARATION(T)
+# define BROKER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BROKER_STUB_HAS_DLL == 1 */
+
+// Set BROKER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BROKER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BROKER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BROKER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BROKER_STUB_NTRACE */
+
+#if (BROKER_STUB_NTRACE == 1)
+# define BROKER_STUB_TRACE(X)
+#else /* (BROKER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BROKER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BROKER_STUB_NTRACE == 1) */
+
+#endif /* BROKER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h
new file mode 100644
index 00000000000..18f606e5539
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Broker/Broker_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BROKER_SVNT
+// ------------------------------
+#ifndef BROKER_SVNT_EXPORT_H
+#define BROKER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BROKER_SVNT_HAS_DLL)
+# define BROKER_SVNT_HAS_DLL 1
+#endif /* ! BROKER_SVNT_HAS_DLL */
+
+#if defined (BROKER_SVNT_HAS_DLL) && (BROKER_SVNT_HAS_DLL == 1)
+# if defined (BROKER_SVNT_BUILD_DLL)
+# define BROKER_SVNT_Export ACE_Proper_Export_Flag
+# define BROKER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BROKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BROKER_SVNT_BUILD_DLL */
+# define BROKER_SVNT_Export ACE_Proper_Import_Flag
+# define BROKER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BROKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BROKER_SVNT_BUILD_DLL */
+#else /* BROKER_SVNT_HAS_DLL == 1 */
+# define BROKER_SVNT_Export
+# define BROKER_SVNT_SINGLETON_DECLARATION(T)
+# define BROKER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BROKER_SVNT_HAS_DLL == 1 */
+
+// Set BROKER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BROKER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BROKER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BROKER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BROKER_SVNT_NTRACE */
+
+#if (BROKER_SVNT_NTRACE == 1)
+# define BROKER_SVNT_TRACE(X)
+#else /* (BROKER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BROKER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BROKER_SVNT_NTRACE == 1) */
+
+#endif /* BROKER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl
new file mode 100644
index 00000000000..53268e84569
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl
@@ -0,0 +1,21 @@
+//$Id$
+//Distributor.cidl,v 1.0
+/**
+ * @file Distributor.cidl
+ *
+ * @author ming xiong <xiongm@isis.vanderbilt.edu>
+ */
+
+#ifndef DISTRIBUTOR_CIDL
+#define DISTRIBUTOR_CIDL
+
+#include "Distributor.idl"
+
+composition session StockDistributor_Impl {
+ home executor StockDistributorHome_Exec {
+ implements Stock::StockDistributorHome;
+ manages StockDistributor_Exec;
+ };
+};
+
+#endif /* DISTRIBUTOR_CIDL */
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
new file mode 100644
index 00000000000..d99fde85c7c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
@@ -0,0 +1,115 @@
+//$Id$
+/*
+ * @file Distributor.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+
+#include "DistributorC.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+
+const char *distributor_ior = "file://Distributor.ior";
+int rate = 2;
+int turn_on = 1;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:r:of");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ distributor_ior = get_opts.opt_arg ();
+ break;
+
+ case 'o':
+ turn_on = 1;
+ break;
+
+ case 'f':
+ turn_on = 0;
+ break;
+
+ case 'r':
+ rate = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o (Start the distribution service)\n"
+ "-f (Stop the distribution service)\n"
+ "-k <Distributor IOR> (default is file:\\distributor.ior) \n"
+ "-r <broadcast frequency in Hertz> (default is 2)\n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ }
+
+ return 0;
+}
+
+
+int main (int argc, char* argv[])
+{
+ try
+ {
+ // initialize the ORB
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv,"");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ // create the factory object reference,
+ CORBA::Object_var distributor_obj =
+ orb->string_to_object (distributor_ior);
+
+ // downcast the object reference to the appropriate type
+ Stock::StockDistributor_var distributor =
+ Stock::StockDistributor::_narrow (distributor_obj.in ());
+
+ if (CORBA::is_nil (distributor.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire 'Distributor' objref\n"),
+ -1);
+ }
+
+ if (turn_on)
+ {
+ distributor->rate (rate);
+
+ ACE_DEBUG ((LM_DEBUG, "Start up the Distribution service\n"));
+
+ distributor->start ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stop the Distribution service\n"));
+
+ distributor->stop ();
+ }
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Uncaught CORBA exception\n"),
+ 1);
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl
new file mode 100644
index 00000000000..393f0fa94c1
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl
@@ -0,0 +1,42 @@
+//$Id$
+
+#include "../Stock_Base/Stock_Base.idl"
+
+module Stock
+{
+ /**
+ * @class Trigger
+ *
+ * @brief supported interface
+ */
+ interface Trigger {
+ /// Start the real-time monitoring service
+ void start ();
+ /// Stop the real-time monitoring service
+ void stop ();
+ };
+
+
+ /**
+ * @class StockDistributor
+ *
+ * @brief component
+ */
+ component StockDistributor supports Trigger
+ {
+ publishes StockName notify_out;
+ provides StockQuoter push_quoter;
+ attribute long rate;
+ };
+
+
+ /**
+ * @class StockDistributorHome
+ *
+ * @brief home for StockDistributor component
+ */
+ home StockDistributorHome manages StockDistributor
+ {
+ };
+
+};
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
new file mode 100644
index 00000000000..aad6ad54195
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
@@ -0,0 +1,88 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Stock_Base Distributor"
+
+project(Stock_Base_Distributor_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_stub
+ sharedname = Distributor_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=DISTRIBUTOR_STUB_Export \
+ -Wb,stub_export_include=Distributor_stub_export.h \
+ -Wb,skel_export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,skel_export_include=Distributor_svnt_export.h
+ dynamicflags = DISTRIBUTOR_STUB_BUILD_DLL
+
+ libs += Stock_Base_stub
+
+ IDL_Files {
+ Distributor.idl
+ }
+
+ Source_Files {
+ DistributorC.cpp
+ }
+}
+
+project(Stock_Base_Distributor_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_skel Stock_Base_Distributor_stub
+ sharedname = Distributor_svnt
+ libs += Distributor_stub Stock_Base_stub Stock_Base_skel
+
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,export_include=Distributor_svnt_export.h
+ dynamicflags = DISTRIBUTOR_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Distributor.cidl
+ }
+
+ IDL_Files {
+ DistributorE.idl
+ }
+
+ Source_Files {
+ DistributorEC.cpp
+ DistributorS.cpp
+ Distributor_svnt.cpp
+ }
+}
+
+
+project(Stock_Base_Distributor_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_Distributor_svnt
+ sharedname = Distributor_exec
+ libs += Distributor_stub \
+ Distributor_svnt \
+ Stock_Base_stub \
+ Stock_Base_skel
+
+ dynamicflags = DISTRIBUTOR_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Distributor_exec.cpp
+ }
+}
+
+
+project (Stock_Distributor) : ciao_client_dnc, valuetype{
+ avoids += ace_for_tao
+ exename = Distributor
+ after += Stock_Base_Distributor_stub
+ libs += Distributor_stub Stock_Base_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Distributor.cpp
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp
new file mode 100644
index 00000000000..1eaafa0027d
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp
@@ -0,0 +1,358 @@
+//$Id$
+/*
+ * @file Distributor_exec.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+#include "Distributor_exec.h"
+#include "ciao/CIAO_common.h"
+#include "ace/Reactor.h"
+
+
+namespace CIDL_StockDistributor_Impl
+{
+
+ // initialze the stock values
+ CORBA::Long
+ StockDistributor_exec_i::ibm_ = 100;
+
+ CORBA::Long
+ StockDistributor_exec_i::msft_ = 101;
+
+ //==================================================================
+ // C L A S S: pulse_Generator
+ //==================================================================
+
+ pulse_Generator::pulse_Generator (StockDistributor_exec_i *callback)
+ : active_ (0),
+ pulse_callback_ (callback)
+ {
+ // initialize the reactor
+ this->reactor (ACE_Reactor::instance ());
+ }
+
+ pulse_Generator::~pulse_Generator ()
+ {
+ }
+
+ int
+ pulse_Generator::open_h ()
+ {
+ // convert the task into a active object that runs in separate thread
+ return this->activate ();
+ }
+
+ int
+ pulse_Generator::close_h ()
+ {
+ this->reactor ()->end_reactor_event_loop ();
+
+ // wait for all threads in the task to exit before it returns
+ return this->wait ();
+ }
+
+ int
+ pulse_Generator::start (CORBA::Long hertz)
+ {
+ // return if not valid
+ if (hertz == 0 || this->active_ != 0)
+ {
+ return -1;
+ }
+
+ // calculate the interval time
+ long usec = 1000000 / hertz;
+
+ if (this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to setup Timer\n"),
+ -1);
+
+ }
+
+ this->active_ = 1;
+ return 0;
+ }
+
+ int
+ pulse_Generator::stop (void)
+ {
+ // return if not valid.
+ if (this->active_ == 0)
+ {
+ return -1;
+ }
+ // cancle the timer
+ this->reactor ()->cancel_timer (this);
+ this->active_ = 0;
+ return 0;
+ }
+
+ int
+ pulse_Generator::active (void)
+ {
+ return this->active_;
+ }
+
+ int
+ pulse_Generator::handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask)
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("[%x] handle = %d, close_mask = %d\n"),
+ this,
+ handle,
+ close_mask));
+ }
+ return 0;
+ }
+
+ int
+ pulse_Generator::handle_timeout (const ACE_Time_Value &,
+ const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_->push_notify_out ();
+ return 0;
+ }
+
+ int
+ pulse_Generator::svc (void)
+ {
+ // define the owner of the reactor thread
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ // run event loop to wait for event, and then dispatch them to corresponding handlers
+ this->reactor ()->run_reactor_event_loop ();
+
+ return 0;
+ }
+
+
+
+ //==================================================================
+ // Facet Executor Implementation Class: StockQuoter_exec_i
+ //==================================================================
+
+ ::Stock::StockInfo *
+ StockQuoter_exec_i::get_stock_info (const char *stock_name)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Stock::Invalid_Stock))
+ {
+ if (strcmp (stock_name, "MSFT") == 0)
+ {
+ Stock::StockInfo_var info = new Stock::StockInfo;
+ info->name = CORBA::string_dup ("MSFT");
+ info->high = 10000;
+ info->low = 0;
+ info->last = this->distributor_.msft_; // retrieve the current stock value
+ return info._retn ();
+ }
+ else if (strcmp (stock_name, "IBM") == 0)
+ {
+ Stock::StockInfo_var info = new Stock::StockInfo;
+ info->name = CORBA::string_dup ("IBM");
+ info->high = 10000;
+ info->low = 0;
+ info->last = this->distributor_.ibm_; // retrieve the current stock value
+ return info._retn ();
+ }
+ else
+ {
+ ACE_THROW_RETURN (Stock::Invalid_Stock (), 0);
+ }
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: StockDistributor_exec_i
+ //==================================================================
+
+ StockDistributor_exec_i::StockDistributor_exec_i (void)
+ : rate_ (0), pulser_ (this)
+ {
+ }
+
+ StockDistributor_exec_i::~StockDistributor_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ void
+ StockDistributor_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (this->rate_ == 0 || this->pulser_.active())
+ {
+ throw CORBA::BAD_PARAM ();
+ }
+
+ this->pulser_.start (this->rate_);
+ }
+
+ void
+ StockDistributor_exec_i::stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (! this->pulser_.active ())
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ this->pulser_.stop ();
+ }
+
+ // Attribute operations.
+
+ ::CORBA::Long
+ StockDistributor_exec_i::rate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->rate_;
+ }
+
+ void
+ StockDistributor_exec_i::rate (
+ ::CORBA::Long rate)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->rate_ = rate;
+ }
+
+ // Port operations.
+
+ ::Stock::CCM_StockQuoter_ptr
+ StockDistributor_exec_i::get_push_quoter ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new StockQuoter_exec_i (*this);
+ }
+
+ void
+ StockDistributor_exec_i::push_notify_out ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->msft_++;
+ this->ibm_++;
+
+ Stock::StockName_var ev_msft = new OBV_Stock::StockName;
+ ev_msft->name (CORBA::string_dup ("MSFT"));
+ this->context_->push_notify_out (ev_msft.in ());
+
+ Stock::StockName_var ev_ibm = new OBV_Stock::StockName;
+ ev_ibm->name (CORBA::string_dup ("IBM"));
+ this->context_->push_notify_out (ev_ibm.in ());
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ StockDistributor_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ = StockDistributor_Context::_narrow (ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ StockDistributor_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockDistributor_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockDistributor_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Start the active object
+ this->pulser_.open_h ();
+ }
+
+ void
+ StockDistributor_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Deactivate the active object
+ this->pulser_.close_h ();
+ }
+
+ void
+ StockDistributor_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: StockDistributorHome_exec_i
+ //==================================================================
+
+ StockDistributorHome_exec_i::StockDistributorHome_exec_i (void)
+ {
+ }
+
+ StockDistributorHome_exec_i::~StockDistributorHome_exec_i (void)
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ StockDistributorHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ StockDistributor_exec_i,
+ CORBA::NO_MEMORY ());
+ return retval;
+ }
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockDistributorHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ StockDistributorHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h
new file mode 100644
index 00000000000..b890eb0365f
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h
@@ -0,0 +1,258 @@
+//$Id$
+/*
+ * @file Distributor_exec.h
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+
+
+#ifndef CIAO_DISTRIBUTOR_EXEC_H
+#define CIAO_DISTRIBUTOR_EXEC_H
+
+#include /**/ "ace/pre.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+
+#include "Distributor_svnt.h"
+#include "DistributorEC.h"
+#include "Distributor_exec_export.h"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIDL_StockDistributor_Impl
+{
+ class StockDistributor_exec_i;
+
+ /**
+ * @class StockQuoter_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockQuoter interface. We use this interface
+ * to acquire the information of the stock
+ */
+ class DISTRIBUTOR_EXEC_Export StockQuoter_exec_i
+ : public virtual ::Stock::CCM_StockQuoter,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockQuoter_exec_i (StockDistributor_exec_i &distributor)
+ :distributor_ (distributor)
+ {
+ }
+
+ // Operations from ::Stock::StockQuoter
+
+ virtual ::Stock::StockInfo *
+ get_stock_info (
+ const char * stock_name)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Stock::Invalid_Stock));
+
+ /// User defined
+
+ private:
+ /// Maintains a handle to the distributor so that the quoter can refer to it for latest quote
+ StockDistributor_exec_i &distributor_;
+ };
+
+ class StockDistributor_exec_i;
+
+ /**
+ * @class pulse generator
+ *
+ * @brief an active object used by StockDistributor to perform periodical pulse generation
+ *
+ */
+ class pulse_Generator : public ACE_Task_Base
+ {
+ public:
+ pulse_Generator (StockDistributor_exec_i *callback);
+
+ ~pulse_Generator ();
+
+ /// Hook method that performs application-defined initialization activities
+ int open_h (void);
+
+ /// Hook method that performs application-defined destruction activites
+ int close_h (void);
+
+ /// appliation-defined method for starting the pulse-generation service
+ int start (CORBA::Long hertz);
+
+ /// application-defined method for stopping the pulse-generation service
+ int stop (void);
+
+ /// Indicate whether the current object is active
+ int active (void);
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ /// Called when timer handler is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ /// Hook methods implemnting the task's service processing,
+ /// invoked by all threads activated by activate () method
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ int active_;
+
+ /// Maintains a handle that actually process the event
+ StockDistributor_exec_i *pulse_callback_;
+
+ };
+
+
+ /**
+ * @class StockDistributor_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockDistributor component
+ */
+ class DISTRIBUTOR_EXEC_Export StockDistributor_exec_i
+ : public virtual StockDistributor_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockDistributor_exec_i (void);
+ virtual ~StockDistributor_exec_i (void);
+
+ // Supported or inherited operations.
+
+ virtual void
+ start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Attribute operations.
+
+ virtual ::CORBA::Long
+ rate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ rate (
+ ::CORBA::Long)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ virtual ::Stock::CCM_StockQuoter_ptr
+ get_push_quoter ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ StockDistributor_Context *context_;
+
+ /// User defined members
+ public:
+
+ /// push event to all subscribers
+ void push_notify_out ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ ));
+
+ private:
+ /// pulse generation rate
+ CORBA::Long rate_;
+
+ /// pulser object
+ pulse_Generator pulser_;
+
+ /// "real-time" stock value
+ static CORBA::Long msft_;
+
+ /// "real-tiime" stock value
+ static CORBA::Long ibm_;
+
+ friend class StockQuoter_exec_i;
+ };
+
+
+ /**
+ * @class StockDistributorHome_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockDistributorHome
+ */
+ class DISTRIBUTOR_EXEC_Export StockDistributorHome_exec_i
+ : public virtual StockDistributorHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockDistributorHome_exec_i (void);
+ virtual ~StockDistributorHome_exec_i (void);
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockDistributorHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_DISTRIBUTOR_EXEC_H */
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h
new file mode 100644
index 00000000000..a3509e015da
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_EXEC
+// ------------------------------
+#ifndef DISTRIBUTOR_EXEC_EXPORT_H
+#define DISTRIBUTOR_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_EXEC_HAS_DLL)
+# define DISTRIBUTOR_EXEC_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_EXEC_HAS_DLL */
+
+#if defined (DISTRIBUTOR_EXEC_HAS_DLL) && (DISTRIBUTOR_EXEC_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_EXEC_BUILD_DLL)
+# define DISTRIBUTOR_EXEC_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_EXEC_BUILD_DLL */
+# define DISTRIBUTOR_EXEC_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_EXEC_BUILD_DLL */
+#else /* DISTRIBUTOR_EXEC_HAS_DLL == 1 */
+# define DISTRIBUTOR_EXEC_Export
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_EXEC_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_EXEC_NTRACE */
+
+#if (DISTRIBUTOR_EXEC_NTRACE == 1)
+# define DISTRIBUTOR_EXEC_TRACE(X)
+#else /* (DISTRIBUTOR_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_EXEC_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h
new file mode 100644
index 00000000000..1126c5bc355
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_STUB
+// ------------------------------
+#ifndef DISTRIBUTOR_STUB_EXPORT_H
+#define DISTRIBUTOR_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_STUB_HAS_DLL)
+# define DISTRIBUTOR_STUB_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_STUB_HAS_DLL */
+
+#if defined (DISTRIBUTOR_STUB_HAS_DLL) && (DISTRIBUTOR_STUB_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_STUB_BUILD_DLL)
+# define DISTRIBUTOR_STUB_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_STUB_BUILD_DLL */
+# define DISTRIBUTOR_STUB_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_STUB_BUILD_DLL */
+#else /* DISTRIBUTOR_STUB_HAS_DLL == 1 */
+# define DISTRIBUTOR_STUB_Export
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_STUB_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_STUB_NTRACE */
+
+#if (DISTRIBUTOR_STUB_NTRACE == 1)
+# define DISTRIBUTOR_STUB_TRACE(X)
+#else /* (DISTRIBUTOR_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_STUB_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h
new file mode 100644
index 00000000000..78debd1c32b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_SVNT
+// ------------------------------
+#ifndef DISTRIBUTOR_SVNT_EXPORT_H
+#define DISTRIBUTOR_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_SVNT_HAS_DLL)
+# define DISTRIBUTOR_SVNT_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_SVNT_HAS_DLL */
+
+#if defined (DISTRIBUTOR_SVNT_HAS_DLL) && (DISTRIBUTOR_SVNT_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_SVNT_BUILD_DLL)
+# define DISTRIBUTOR_SVNT_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_SVNT_BUILD_DLL */
+# define DISTRIBUTOR_SVNT_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_SVNT_BUILD_DLL */
+#else /* DISTRIBUTOR_SVNT_HAS_DLL == 1 */
+# define DISTRIBUTOR_SVNT_Export
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_SVNT_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_SVNT_NTRACE */
+
+#if (DISTRIBUTOR_SVNT_NTRACE == 1)
+# define DISTRIBUTOR_SVNT_TRACE(X)
+#else /* (DISTRIBUTOR_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_SVNT_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/README.html b/modules/CIAO/docs/tutorials/Quoter/Simple/README.html
new file mode 100644
index 00000000000..85e38e81150
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/README.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--//$Id$ -->
+</head>
+<body>
+<b><font size="5">Quoter example README</font></b>
+<p>To download the source codes of this example please refer to the SVN
+repository at <code>$CIAO_ROOT\docs\tutorials\Quoter\Simple</code>
+</p>
+<hr>
+<h2>Example Description</h2>
+<div align="left">
+<font face="Times New Roman" size="3">The <b>StockDistributor</b>
+component would be monitoring a real-time stock database. When the
+values of particular stocks change, it pushes a CCM <b>eventtype</b>
+that contains the stock's name via a CCM event source to the
+corresponding CCM </font>
+</div>
+<div align="left">
+<font face="Times New Roman" size="3">event sink implemented by one or
+more <b>StockBroker</b> components. If these components are interested
+in the stock they can obtain more information about it by invoking a
+request/response operation via their CCM receptacle on a CCM facet
+exported by the <b>StockDistributor</b> component. The diagram of this
+example is shown in fig 1.</font>
+</div>
+<p align="center"><img alt="" src="images/quoter.jpg"
+ style="width: 362px; height: 212px;"><br>
+figure 1<br>
+</p>
+<h2 align="justify"><span style="font-weight: 400;"><font size="3"></font></span><span
+ style="font-weight: 400;"><font size="3">This example
+is based on a series of&nbsp;</font> <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/report-doc.html"><font
+ size="3">CORBA Component Model</font></a><font size="3"> columns
+written by <a href="http://www.cs.wustl.edu/%7Eschmidt/">Douglas
+Schmidt</a> and <a href="http://www.iona.com/hyplan/vinoski/">Steve
+Vinoski</a>, and has been consistently used as a example for <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a>. Please
+refer to <a
+ href="../../../../../docs/tutorials/Quoter/index.html">TAO
+online tutorial</a> for details. <br>
+</font></span></h2>
+<h2>The files you will find</h2>
+<li>The interfaces, data types and exceptions shared by the components
+of
+this
+application are specified in the <a href="Stock_Base/Stock_Base.idl"><code>Stock_Base.idl</code></a>.<code></code>The
+lib
+generated
+from Stock_Base.idl is linked to all the components of this example.</li>
+<li>&nbsp;mpc files for each of the components are available in the
+components
+directories. We use the&nbsp; <a
+ href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a>
+to
+generate makefiles and Visual C++ project/solutions files for all <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/ACE.html">ACE</a>, <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a> and <a
+ href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">CIAO</a>
+libraries. </li>
+<li>&nbsp;idl and cidl files for each component are placed in
+components directory.
+</li>
+<li>&nbsp;The <code>_exec.h</code> and <code>_exec.cpp</code> files
+are the actual
+implementation of the components.</li>
+<hr>
+<h3><font size="5">Make</font></h3>
+Navigate to&nbsp; the directory <code>$CIAO_ROOT/docs/tutorials/Quoter/Simple</code>
+and do:<br>
+<code>$ACE_ROOT/bin/mwc.pl -type gnuace</code> (use different -type option
+if you are using a
+compiler/IDE other than GNU make) <br>
+For example, use <code>%ACE_ROOT%/bin/mwc.pl -type vc71</code> if you
+are using
+Visual C++ 7.1 IDE.<br>
+<br>
+Then build/make the generated project/make files. Correct errors in the
+source codes if necessary.<br>
+<hr>
+<h3><font size="5">Assemble</font></h3>
+<p>Now we can step forward to build the assembly. </p>
+<li>In the descriptor subdirectory, you'll find a XML descriptor file
+that
+describes your <em>deployment plan</em>, the
+flattened_deploymentplan.cdp. This file declaratively specifies how the
+component assembly is
+constructed.
+Specifically, it defines the component types, component instances,
+component
+connections and implementation artifact descriptions. <br>
+</li>
+<dd>
+&nbsp;<li>Please make sure that the Modified_Deployment.xsd and XMI.xsd
+files
+are in the Display/descriptors directory. The former file could be
+found in $CIAO_ROOT/docs/schema
+directory. <br>
+ <br>
+Note: Creating the deployment plan descriptor is a tedious and
+error-prone job,
+you can download <a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a>
+to
+assist you in this step. Please refer to <a
+ href="http://www.dre.vanderbilt.edu/%7Emxiong/tutorial">this tutorial</a>
+to see how you can use CoSMIC to automatically generate the descriptor
+file.
+ <p></p>
+ <hr></li>
+</dd>
+<h2>Running the program </h2>
+&gt;From different shells in&nbsp;<code>$CIAO_ROOT/docs/tutorials/Quoter/Simple/</code><code>descriptors/</code>
+directory:
+<ul>
+ <li>Start NodeManagers (NodeDameon) by running runNodeDaemon.pl </li>
+ <li>Start the execution manager
+$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o ior -i
+Stock.dat&nbsp; </li>
+</ul>
+<p>The Stock.dat file describes the deployment daemons CIAO's
+Execution_Manager
+will contact to instantiate ComponentServer's, home's, and component
+instances.
+Each line specify the name of a installation "destination" and the
+corresponding corbaloc IOR for the CIAO_Daemon.</p>
+<ul type="square">
+ <li><em>NOTE</em>: As one can see, we use the "Stock.dat" file to
+instruct the Execution_Manager how to find the endpoint of each
+individual NodeManager (i.e., Node Daemon) where component(s) will be
+deployed, so this is non-standard. We plan to use Naming Service to do
+this in the future. </li>
+</ul>
+<ul>
+ <li> Start the plan_launcher by running
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p
+flattened_deploymentplan.cdp -k file://ior</li>
+ <li>By now the components should be successfully deployed. You may
+run the driver program to start the application. Open a new shell, keep
+in the /Quoter/descriptors directory,&nbsp; and try the following
+commands, see what happens in the component server<br>
+ </li>
+</ul>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start the distributor
+service at a frequency of&nbsp; 3 hertz:<br>
+&nbsp; &nbsp; &nbsp;&nbsp; <span style="color: rgb(51, 102, 255);">../Distributor/Distributor.exe
+-o&nbsp;&nbsp; -r3</span><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Use the broker program to
+subscribe to MSFT stock<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
+ style="color: rgb(51, 102, 255);">../Broker/Broker.exe -s MSFT</span><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subscribe to IBM stock<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <span
+ style="color: rgb(51, 102, 255);">../Broker/Broker.exe -s IBM</span><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unsubscribe to MSFT stock<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
+ style="color: rgb(51, 102, 255);">../Broker/Broker -u MSFT</span><br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Turn off the distribution
+service:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
+ style="color: rgb(51, 102, 255);">../Distributor/Distributor -f </span><br>
+<br>
+Please contact mxiong@dre.vanderbilt.edu if you have any questions.
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
+</body>
+</html>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl
new file mode 100644
index 00000000000..b038cdca509
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.idl
@@ -0,0 +1,41 @@
+//$Id$
+
+#include <Components.idl>
+
+module Stock
+{
+ exception Invalid_Stock {};
+ typedef sequence<octet> ImageBlob;
+
+ /**
+ * @struct StockInfo
+ */
+ struct StockInfo {
+ string name;
+ long high;
+ long low;
+ long last;
+ };
+
+ /**
+ * @interface: StockQuoter
+ *
+ * @brief: component facet
+ */
+ interface StockQuoter {
+ /// Returns the current stock info
+ StockInfo get_stock_info (in string stock_name)
+ raises (Invalid_Stock);
+ };
+
+
+ /**
+ * @event StockName
+ *
+ * @brief component event
+ */
+ eventtype StockName {
+ // Name of the stock.
+ public string name;
+ };
+};
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc
new file mode 100644
index 00000000000..6f3cde298ff
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base.mpc
@@ -0,0 +1,46 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Stock_Base"
+
+project(Stock_Base_stub): ciao_client_dnc {
+
+ sharedname = Stock_Base_stub
+ idlflags -= -GT
+ idlflags += -Wb,stub_export_macro=STOCK_BASE_STUB_Export \
+ -Wb,stub_export_include=Stock_Base_stub_export.h \
+ -Wb,skel_export_macro=STOCK_BASE_SKEL_Export \
+ -Wb,skel_export_include=Stock_Base_skel_export.h
+ dynamicflags = STOCK_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Stock_Base.idl
+ }
+
+ Source_Files {
+ Stock_BaseC.cpp
+ }
+}
+
+project(Stock_Base_skel) : ciao_servant_dnc {
+ after += Stock_Base_stub
+ sharedname = Stock_Base_skel
+ libs += Stock_Base_stub
+
+ idlflags -= -GT
+ idlflags += -Wb,stub_export_macro=STOCK_BASE_STUB_Export \
+ -Wb,stub_export_include=Stock_Base_stub_export.h \
+ -Wb,skel_export_macro=STOCK_BASE_SKEL_Export \
+ -Wb,skel_export_include=Stock_Base_skel_export.h
+ dynamicflags = STOCK_BASE_SKEL_BUILD_DLL
+
+ IDL_Files {
+ Stock_Base.idl
+ }
+
+ Source_Files {
+ Stock_BaseS.cpp
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h
new file mode 100644
index 00000000000..262ab650fed
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_skel_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl STOCK_BASE_SVNT
+// ------------------------------
+#ifndef STOCK_BASE_SKEL_EXPORT_H
+#define STOCK_BASE_SKEL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (STOCK_BASE_SKEL_HAS_DLL)
+# define STOCK_BASE_SKEL_HAS_DLL 1
+#endif /* ! STOCK_BASE_SKEL_HAS_DLL */
+
+#if defined (STOCK_BASE_SKEL_HAS_DLL) && (STOCK_BASE_SKEL_HAS_DLL == 1)
+# if defined (STOCK_BASE_SKEL_BUILD_DLL)
+# define STOCK_BASE_SKEL_Export ACE_Proper_Export_Flag
+# define STOCK_BASE_SKEL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define STOCK_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* STOCK_BASE_SKEL_BUILD_DLL */
+# define STOCK_BASE_SKEL_Export ACE_Proper_Import_Flag
+# define STOCK_BASE_SKEL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define STOCK_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* STOCK_BASE_SKEL_BUILD_DLL */
+#else /* STOCK_BASE_SKEL_HAS_DLL == 1 */
+# define STOCK_BASE_SKEL_Export
+# define STOCK_BASE_SKEL_SINGLETON_DECLARATION(T)
+# define STOCK_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* STOCK_BASE_SKEL_HAS_DLL == 1 */
+
+// Set STOCK_BASE_SKEL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (STOCK_BASE_SKEL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define STOCK_BASE_SKEL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define STOCK_BASE_SKEL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !STOCK_BASE_SKEL_NTRACE */
+
+#if (STOCK_BASE_SKEL_NTRACE == 1)
+# define STOCK_BASE_SKEL_TRACE(X)
+#else /* (STOCK_BASE_SKEL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define STOCK_BASE_SKEL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (STOCK_BASE_SKEL_NTRACE == 1) */
+
+#endif /* STOCK_BASE_SKEL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h
new file mode 100644
index 00000000000..1b73531da37
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Stock_Base/Stock_Base_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl STOCK_BASE_STUB
+// ------------------------------
+#ifndef STOCK_BASE_STUB_EXPORT_H
+#define STOCK_BASE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (STOCK_BASE_STUB_HAS_DLL)
+# define STOCK_BASE_STUB_HAS_DLL 1
+#endif /* ! STOCK_BASE_STUB_HAS_DLL */
+
+#if defined (STOCK_BASE_STUB_HAS_DLL) && (STOCK_BASE_STUB_HAS_DLL == 1)
+# if defined (STOCK_BASE_STUB_BUILD_DLL)
+# define STOCK_BASE_STUB_Export ACE_Proper_Export_Flag
+# define STOCK_BASE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define STOCK_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* STOCK_BASE_STUB_BUILD_DLL */
+# define STOCK_BASE_STUB_Export ACE_Proper_Import_Flag
+# define STOCK_BASE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define STOCK_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* STOCK_BASE_STUB_BUILD_DLL */
+#else /* STOCK_BASE_STUB_HAS_DLL == 1 */
+# define STOCK_BASE_STUB_Export
+# define STOCK_BASE_STUB_SINGLETON_DECLARATION(T)
+# define STOCK_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* STOCK_BASE_STUB_HAS_DLL == 1 */
+
+// Set STOCK_BASE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (STOCK_BASE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define STOCK_BASE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define STOCK_BASE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !STOCK_BASE_STUB_NTRACE */
+
+#if (STOCK_BASE_STUB_NTRACE == 1)
+# define STOCK_BASE_STUB_TRACE(X)
+#else /* (STOCK_BASE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define STOCK_BASE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (STOCK_BASE_STUB_NTRACE == 1) */
+
+#endif /* STOCK_BASE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.ccd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.ccd
new file mode 100644
index 00000000000..c2a0630b87b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.ccd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Broker Component</label>
+ <UUID>803f8fc7-55de-4a20-81eb-ae951d85b7f4</UUID>
+ <specificType>IDL:Stock/StockBroker:1.0</specificType>
+ <supportedType>IDL:Stock/StockBroker:1.0</supportedType>
+ <port>
+ <name>notify_in</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:Stock/StockName:1.0</supportedType>
+ <specificType>IDL:Stock/StockName:1.0</specificType>
+ <kind>EventConsumer</kind>
+ </port>
+ <port>
+ <name>read_quoter</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:Stock/StockQuoter:1.0</supportedType>
+ <specificType>IDL:Stock/StockQuoter:1.0</specificType>
+ <kind>SimplexReceptacle</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cid
new file mode 100644
index 00000000000..47f49102136
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Broker Implementation</label>
+ <UUID>789e1be2-703f-4bd3-af50-b400eef91fd0</UUID>
+ <implements href="Broker.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>Broker_stub</name>
+ <referencedArtifact href="Broker_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Broker_svnt</name>
+ <referencedArtifact href="Broker_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Broker_exec</name>
+ <referencedArtifact href="Broker_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Broker.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd
new file mode 100644
index 00000000000..cc6381b658a
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Broker Package</label>
+ <UUID>07ebf947-2174-4a3b-bd37-bcb92986eaf4</UUID>
+ <realizes href="Broker.ccd"/>
+ <implementation>
+ <name>Broker</name>
+ <referencedImplementation href="Broker.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad
new file mode 100644
index 00000000000..724a5b2c6bb
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Broker Executor Artifact</label>
+ <UUID>5e4f2366-3810-4d4c-a269-5788a525cbe1</UUID>
+ <location>Broker_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Broker_Stub</name>
+ <referencedArtifact href="Broker_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createStockBrokerHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad
new file mode 100644
index 00000000000..ac1f0834e19
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Broker Stub Artifact</label>
+ <UUID>93bbdf7d-d3f7-4227-bb75-b0562ac15b92</UUID>
+ <location>Broker_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad
new file mode 100644
index 00000000000..2944181e015
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Broker_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Broker Servant Artifact</label>
+ <UUID>04e4d246-e6eb-4b0e-8e32-60b996497cea</UUID>
+ <location>Broker_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Broker_Stub</name>
+ <referencedArtifact href="Broker_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Stock_StockBrokerHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd
new file mode 100644
index 00000000000..7557e143c56
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.ccd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Distributor Component</label>
+ <UUID>803f8fc7-55de-4a20-81eb-ae951d85b7f4</UUID>
+ <specificType>IDL:Stock/StockDistributor:1.0</specificType>
+ <supportedType>IDL:Stock/StockDistributor:1.0</supportedType>
+ <port>
+ <name>supports</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Stock/Trigger:1.0</supportedType>
+ <kind>Facet</kind>
+ </port>
+ <port>
+ <name>notify_out</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Stock/StockName:1.0</supportedType>
+ <specificType>IDL:Stock/StockName:1.0</specificType>
+ <kind>EventPublisher</kind>
+ </port>
+ <port>
+ <name>push_quoter</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Stock/StockQuoter:1.0</supportedType>
+ <specificType>IDL:Stock/StockQuoter:1.0</specificType>
+ <kind>Facet</kind>
+ </port>
+</Deployment:ComponentInterfaceDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cid
new file mode 100644
index 00000000000..b5eac80c543
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Distributor Implementation</label>
+ <UUID>789e1be2-703f-4bd3-af50-b400eef91fd0</UUID>
+ <implements href="Distributor.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>Distributor_Stub</name>
+ <referencedArtifact href="Distributor_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Distributor_Svnt</name>
+ <referencedArtifact href="Distributor_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Distributor_Exec</name>
+ <referencedArtifact href="Distributor_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Distributor.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd
new file mode 100644
index 00000000000..c451a5637e8
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Distributor Package</label>
+ <UUID>07ebf947-2174-4a3b-bd37-bcb92986eaf4</UUID>
+ <realizes href="Distributor.ccd"/>
+ <implementation>
+ <name>Distributor</name>
+ <referencedImplementation href="Distributor.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad
new file mode 100644
index 00000000000..784e11b99bf
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Distributor Executor Artifact</label>
+ <UUID>5e4f2366-3810-4d4c-a269-5788a525cbe1</UUID>
+ <location>Distributor_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Distributor_Stub</name>
+ <referencedArtifact href="Distributor_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createStockDistributorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad
new file mode 100644
index 00000000000..c55a74916ef
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Distributor Stub Artifact</label>
+ <UUID>93bbdf7d-d3f7-4227-bb75-b0562ac15b92</UUID>
+ <location>Distributor_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad
new file mode 100644
index 00000000000..7643089044f
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Distributor_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Distributor Servant Artifact</label>
+ <UUID>04e4d246-e6eb-4b0e-8e32-60b996497cea</UUID>
+ <location>Distributor_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Distributor_Stub</name>
+ <referencedArtifact href="Distributor_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Stock_StockDistributorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription> \ No newline at end of file
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd
new file mode 100644
index 00000000000..b4dd3c729ef
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Domain.cdd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Deployment:Domain
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+<label>Stock Domain</label>
+<UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+<node>
+ <name>Distributor</name>
+ <label>Distributor's Node</label>
+</node>
+<node>
+ <name>Broker</name>
+ <label>Broker's Node</label>
+</node>
+</Deployment:Domain>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Libraries.iad b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Libraries.iad
new file mode 100644
index 00000000000..720a7ce8219
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Libraries.iad
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Common Libraries</label>
+ <UUID>6bae4fcd-c71c-44b4-a0d4-0e4199ce1a49</UUID>
+ <location>$ACE_ROOT/lib/libACE</location>
+ <location>$ACE_ROOT/lib/libTAO</location>
+ <location>$ACE_ROOT/lib/libCIAO_Client</location>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cdp b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cdp
new file mode 100644
index 00000000000..4d327f991c2
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cdp
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Stock Deployment Plan</label>
+ <instance xmi:id="a_Distributor">
+ <name>Distributor_Instance</name>
+ <node>Distributor</node>
+ </instance>
+ <instance xmi:id="a_Broker01">
+ <name>Broker_Instance_01</name>
+ <node>Broker01</node>
+ </instance>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cid b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cid
new file mode 100644
index 00000000000..2d2160bba7d
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cid
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Stock Example Assembly</label>
+ <UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+ <assemblyImpl>
+ <instance xmi:id="a_Distributor">
+ <name>Distributor_Instance</name>
+ <package href="Distributor.cpd"/>
+ </instance>
+ <instance xmi:id="a_Broker01">
+ <name>Broker_Instance_01</name>
+ <package href="Broker.cpd"/>
+ </instance>
+ <connection>
+ <name>quoter_conn</name>
+ <internalEndpoint>
+ <portName>read_quoter</portName>
+ <instance xmi:idref="a_Broker01"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_quoter</portName>
+ <instance xmi:idref="a_Distributor"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>StockName_event</name>
+ <internalEndpoint>
+ <portName>notify_in</portName>
+ <instance xmi:idref="a_Broker01"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>notify_out</portName>
+ <instance xmi:idref="a_Distributor"/>
+ </internalEndpoint>
+ </connection>
+ </assemblyImpl>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cpd
new file mode 100644
index 00000000000..6b2ece8e164
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.cpd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Stock Example Package</label>
+ <UUID>823e4287-f53c-4caa-8619-f3dfda4c4998</UUID>
+ <implementation>
+ <name>Stock</name>
+ <referencedImplementation href="Stock.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.dat b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.dat
new file mode 100644
index 00000000000..6079555046c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.dat
@@ -0,0 +1,3 @@
+DistributorNode corbaloc:iiop:localhost:30000/NodeManager
+BrokerNode corbaloc:iiop:localhost:40000/NodeManager
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.pcd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.pcd
new file mode 100644
index 00000000000..d65c2d9f86b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/Stock.pcd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:PackageConfiguration
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Stock Example Configuration for Unix machines</label>
+ <UUID>559d65e8-0407-48c0-a158-dafe21360fef</UUID>
+ <basePackage href="Stock.cpd"/>
+</Deployment:PackageConfiguration>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..86f7c27b786
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,222 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Quoter-DeploymentPlan</label>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>Quoter-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:Quoter/EC:1.0</supportedType>
+ <port>
+ <name>read_quoter</name>
+ <specificType>IDL:Quoter/Read_Quoter:1.0</specificType>
+ <supportedType>IDL:Quoter/Read_Quoter:1.0</supportedType>
+ <provider>false></provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Quoter-Distributor-mdd">
+ <name>Quoter-Distributor-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Quoter-Distributor_exec</artifact>
+ <artifact>Quoter-Distributor_svnt</artifact>
+ <artifact>Quoter-Distributor_stub</artifact>
+ <artifact>Quoter-Base_stub</artifact>
+ <artifact>Quoter-Base_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Quoter-Broker-mdd">
+ <name>Quoter-Broker-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Quoter-Broker_exec</artifact>
+ <artifact>Quoter-Broker_svnt</artifact>
+ <artifact>Quoter-Broker_stub</artifact>
+ <artifact>Quoter-Base_stub</artifact>
+ <artifact>Quoter-Base_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Quoter-Distributor-idd">
+ <name>Quoter-Distributor-idd</name>
+ <node>DistributorNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Quoter-Distributor-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Distributor.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Quoter-Broker-idd">
+ <name>Quoter-Broker-idd</name>
+ <node>BrokerNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Quoter-Broker-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Broker.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>Quoter_event_connection</name>
+ <internalEndpoint>
+ <portName>notify_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Quoter-Distributor-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>notify_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Quoter-Broker-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>Quoter_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_quoter</portName>
+ <kind>Facet</kind>
+ <instance>Quoter-Distributor-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_quoter</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Quoter-Broker-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Quoter-Distributor_exec">
+ <name>Distributor_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Distributor_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createStockDistributorHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Quoter-Distributor_svnt">
+ <name>Distributor_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Distributor_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Stock_StockDistributorHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Quoter-Distributor_stub">
+ <name>Distributor_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Distributor_stub</location>
+ </artifact>
+
+ <artifact id="Quoter-Broker_exec">
+ <name>Broker_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Broker_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createStockBrokerHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Quoter-Broker_svnt">
+ <name>Broker_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Broker_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Stock_StockBrokerHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Quoter-Broker_stub">
+ <name>Broker_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Broker_stub</location>
+ </artifact>
+
+
+ <artifact id="Quoter-Base_stub">
+ <name>Stock_Base_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Stock_Base_stub</location>
+ </artifact>
+
+ <artifact id="Quoter-Base_svnt">
+ <name>Stock_Base_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Stock_Base_svnt</location>
+ </artifact>
+
+</Deployment:deploymentPlan>
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/package.tpd b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/package.tpd
new file mode 100644
index 00000000000..b753de7b7ff
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/package.tpd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:TopLevelPackageDescription
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <package href="Stock.pcd"/>
+</Deployment:TopLevelPackageDescription>
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl
new file mode 100644
index 00000000000..7437f0ed341
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/descriptors/runNodeDaemons.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:30000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:40000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step1.JPG b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step1.JPG
new file mode 100644
index 00000000000..b0346ee841b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step1.JPG
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step2.JPG b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step2.JPG
new file mode 100644
index 00000000000..a4526901307
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step2.JPG
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step3.JPG b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step3.JPG
new file mode 100644
index 00000000000..d7687394851
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step3.JPG
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step6.JPG b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step6.JPG
new file mode 100644
index 00000000000..e1e3b28055d
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Step6.JPG
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/Steps for Developing CCM Applications.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Steps for Developing CCM Applications.jpg
new file mode 100644
index 00000000000..ddccdc2b373
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/Steps for Developing CCM Applications.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg
new file mode 100644
index 00000000000..a8550fe1176
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig1.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg
new file mode 100644
index 00000000000..3db5ac174e0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig10.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg
new file mode 100644
index 00000000000..c5eaf705384
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig11.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg
new file mode 100644
index 00000000000..ea2a885af6b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig12.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg
new file mode 100644
index 00000000000..49d6f90c3b0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig2.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg
new file mode 100644
index 00000000000..0559dc7382b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig3.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg
new file mode 100644
index 00000000000..8fb89eccb57
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig4.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg
new file mode 100644
index 00000000000..e847b9290d6
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig5.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg
new file mode 100644
index 00000000000..0a214c84ea8
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig6.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg
new file mode 100644
index 00000000000..67d90b775b0
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig7.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg
new file mode 100644
index 00000000000..a565c2ab989
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig8.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg
new file mode 100644
index 00000000000..996d90d800b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/fig9.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg b/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg
new file mode 100644
index 00000000000..2f3edd11329
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/images/quoter.jpg
Binary files differ
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/index.html b/modules/CIAO/docs/tutorials/Quoter/Simple/index.html
new file mode 100644
index 00000000000..f865a43cc6c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/index.html
@@ -0,0 +1,655 @@
+<!-- $Id$ -->
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="index_files/filelist.xml">
+<link rel=Edit-Time-Data href="index_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Building a Stock Quoter with TAO - A Tutorial</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Abdullah Sowayan</o:Author>
+ <o:LastAuthor>Abdullah Sowayan</o:LastAuthor>
+ <o:Revision>13</o:Revision>
+ <o:TotalTime>64</o:TotalTime>
+ <o:Created>2006-10-06T22:35:00Z</o:Created>
+ <o:LastSaved>2006-11-06T21:35:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>851</o:Words>
+ <o:Characters>4851</o:Characters>
+ <o:Company>Maritime Systems &amp; Sensors</o:Company>
+ <o:Lines>40</o:Lines>
+ <o:Paragraphs>11</o:Paragraphs>
+ <o:CharactersWithSpaces>5691</o:CharactersWithSpaces>
+ <o:Version>11.8107</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+h3
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ mso-outline-level:3;
+ font-size:13.5pt;
+ font-family:"Times New Roman";
+ font-weight:bold;}
+a:link, span.MsoHyperlink
+ {color:#000FFF;
+ text-decoration:underline;
+ text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+ {color:#FF0F0F;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+address
+ {margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ font-style:italic;}
+code
+ {font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";
+ mso-fareast-font-family:"Times New Roman";
+ mso-hansi-font-family:"Courier New";
+ mso-bidi-font-family:"Courier New";}
+span.intbody
+ {mso-style-name:intbody;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:137387275;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-1837205732 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.75in;
+ mso-level-number-position:left;
+ margin-left:.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l0:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1
+ {mso-list-id:271979655;
+ mso-list-template-ids:-2025148996;}
+@list l1:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.75in;
+ mso-level-number-position:left;
+ margin-left:.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l1:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2
+ {mso-list-id:398870737;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-1758177826 -1301365556 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l2:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-weight:bold;}
+@list l2:level2
+ {mso-level-number-format:alpha-lower;
+ mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3
+ {mso-list-id:1284144513;
+ mso-list-type:hybrid;
+ mso-list-template-ids:120510300 -1301365556 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l3:level1
+ {mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-weight:bold;}
+@list l3:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4
+ {mso-list-id:1734621206;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-1370594096 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0B7;
+ mso-level-tab-stop:.75in;
+ mso-level-number-position:left;
+ margin-left:.75in;
+ text-indent:-.25in;
+ font-family:Symbol;}
+@list l4:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!-- index.html,v 1.3 2006/05/06 02:29:31 schmidt Exp --><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="7170"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white lang=EN-US link="#000FFF" vlink="#FF0F0F" style='tab-interval:
+.5in'>
+
+<div class=Section1>
+
+<h3 align=center style='margin:0in;margin-bottom:.0001pt;text-align:center;
+line-height:150%'><span style='color:black'>Building a Stock Quoter with CIAO,
+CoSMIC, and DAnCE - A Tutorial<o:p></o:p></span></h3>
+
+<h3 align=center style='margin:0in;margin-bottom:.0001pt;text-align:center;
+line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></h3>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'>This tutorial provides a step-by-step lesson on developing
+component-based distributed applications using <a
+href="http://www.dre.vanderbilt.edu/cosmic/">CoSMIC</a> modeling toolkit and the
+<a href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">CIAO DAnCE</a>
+framework. The example application used in this tutorial is a Stock Quoter that
+consists of two components; the <i>StockDistributor</i> and the <i>StockBroker</i>.
+The <i>StockDistributor</i> notifies one or more stock brokers whenever a stock
+price changes. Upon receiving the notification, the <i>StockBroker</i> fetches
+information about a particular stock from the <i>StockDistributor</i>. The
+figure bellow shows the application diagram. This Stock Quoter application is
+based on a series of <a
+href="http://www.cs.wustl.edu/%7Eschmidt/report-doc.html">CORBA component model</a>
+columns written by <a href="http://www.cs.wustl.edu/%7Eschmidt/">Doug Schmidt</a>
+and <a href="http://www.iona.com/hyplan/vinoski/">Steve Vinoski</a> for <a
+href="http://www.cuj.com">C/C++ Users Journal</a> and has consistently been
+used as an example for <a href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a>.<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'><img border=0 width=434 height=232 id="_x0000_i1025"
+src="images/fig1.jpg"><br>
+Stock Quoter application Diagram <o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'>This is a step-by-step tutorial that will walk you through
+the development and deployment phases of a CCM application (Stock Quoter). This
+tutorial assumes that you have read and understood the following articles that
+describe the example:<o:p></o:p></span></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo1;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cuj.com/documents/s=9039/cujexp0402vinoski/">The CORBA
+Component Model, Part 1: Evolving Towards Component Middleware</a></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo1;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cuj.com/documents/s=9152/cujexp0404vinoski/">The CORBA
+Component Model, Part 2: Defining Components with the IDL 3.x Types</a></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo1;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cuj.com/documents/s=9301/cujexp0409vinoski/">The CORBA
+Component Model, Part 3: The CCM Container Architecture and Component
+Implementation Framework</a></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l0 level1 lfo1;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cuj.com/documents/s=9360/cujexp0410vinoski/">The CORBA
+Component Model Part 4: The CORBA Component Model Part 4: Implementing
+Components with CCM</a></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'><span style='mso-spacerun:yes'>&nbsp;</span>In addition to
+the articles above, reading and understanding the resources below will greatly
+help you follow through this tutorial:<o:p></o:p></span></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l4 level1 lfo2;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><a
+href="http://www.cs.wustl.edu/~schmidt/PDF/DAnCE.pdf">DAnCE: A QoS-enabled
+Component Deployment and Conguration Engine</a><span style='color:black'><o:p></o:p></span></p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.75in;
+margin-bottom:.0001pt;text-indent:-.25in;line-height:150%;mso-list:l4 level1 lfo2;
+tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol;
+mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
+style='mso-list:Ignore'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]>TAO&#8217;s Developer&#8217;s Guide Version
+1.4a. Chapter 32&nbsp;: CIAO and CCM.</p>
+
+<p style='margin:0in;margin-bottom:.0001pt;line-height:150%'><span
+style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><b><span style='font-size:14.0pt;
+line-height:150%;color:black'>Prerequisites:</span></b><b><span
+style='font-size:13.5pt;line-height:150%;color:black'><br>
+</span></b><span style='color:black'>&nbsp;Before you start, you need the
+following: <o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;line-height:
+150%;mso-list:l1 level1 lfo3;tab-stops:list .75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><b><span style='color:black'>ACE+TAO+CIAO
+(Component Integraated ACE ORB).</span></b><span style='color:black'> ACE + TAO
++ CIAO provide the CCM infrastructure necessary to enable the CCM-based distributed
+component interaction. You can click <a
+href="http://download.dre.vanderbilt.edu">here</a> to download the latest
+ACE + TAO + CIAO and click <a
+href="http://www.cs.wustl.edu/%7Eschmidt/ACE_wrappers/TAO/CIAO/CIAO-INSTALL.html">here</a>
+for information on how to build ACE+TAO+CIAO.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;line-height:
+150%;mso-list:l1 level1 lfo3;tab-stops:list .75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><b><span style='color:black'>Generic Modeling
+Environment (GME).</span></b><span style='color:black'> GME is a configurable
+toolkit for creating domain-specific modeling and program synthesis
+environments. It provides the execution environment for CoSMIC toolkits. Click <a
+href="http://www.isis.vanderbilt.edu/Projects/gme/download.html">here</a> to
+download GME.<o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;line-height:
+150%;mso-list:l1 level1 lfo3;tab-stops:list .75in'><![if !supportLists]><span
+style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:
+Symbol;color:black'><span style='mso-list:Ignore'>&middot;<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span><![endif]><b><span style='color:black'>CoSMIC toolkit.</span></b><span
+style='color:black'> Click <a href="http://www.dre.vanderbilt.edu/cosmic/">here</a>
+to download the latest CoSMIC release.<o:p></o:p></span></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<div style='margin-left:-.5in'>
+
+<div class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+</div>
+
+<p class=MsoNormal style='margin-left:-.5in;line-height:150%'><strong><span
+style='color:black'>Note:</span></strong><strong><span style='font-weight:normal'><o:p></o:p></span></strong></p>
+
+<p class=MsoNormal style='margin-left:0in;text-indent:-.25in;line-height:150%;
+mso-list:l3 level1 lfo4;tab-stops:list 0in .5in'><![if !supportLists]><b
+style='mso-bidi-font-weight:normal'><span style='mso-list:Ignore'>1.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><![endif]><span
+style='color:black'>Usually you should download the latest GME, but it is
+possible that CoSMIC hasn't been updated yet to support the very latest
+GME..The installation process of CoSMIC will tell you which version it is
+expecting.&nbsp; So <span class=intbody>please make sure the GME version you
+are using is the version required by CoSMIC. A different version of </span>GME
+may result in undefined errors. </span></p>
+
+<p class=MsoNormal style='margin-left:0in;text-indent:-.25in;line-height:150%;
+mso-list:l3 level1 lfo4;tab-stops:list 0in .5in'><![if !supportLists]><b
+style='mso-bidi-font-weight:normal'><span style='color:black'><span
+style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span></b><![endif]><span style='color:black'>Make sure you
+install GME first before you start with CoSMIC toolkits.<o:p></o:p></span></p>
+
+<div style='margin-left:-.5in'>
+
+<div class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+</div>
+
+</blockquote>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><b style='mso-bidi-font-weight:
+normal'><span style='font-size:14.0pt;line-height:150%;color:black'>Steps for
+Developing the Stock Quoter Application:<o:p></o:p></span></b></p>
+
+<p class=MsoNormal style='line-height:150%'><b style='mso-bidi-font-weight:
+normal'><span style='font-size:14.0pt;line-height:150%;color:black'><o:p>&nbsp;</o:p></span></b></p>
+
+<p class=MsoNormal align=center style='text-align:center;line-height:150%'><b
+style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt;line-height:
+150%;color:black'><img border=0 width=960 height=521 id="_x0000_i1028"
+src="images/Steps%20for%20Developing%20CCM%20Applications.jpg"><o:p></o:p></span></b></p>
+
+<p class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'>Steps for Developing Stock Quoter Application<o:p></o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'><o:p>&nbsp;</o:p></span></p>
+
+<p class=MsoNormal style='line-height:150%'><span style='color:black'>Listed
+below are the steps for developing the Stock Quoter application. Each link is a
+step-by-step tutorial of the specific step.</span><b style='mso-bidi-font-weight:
+normal'><span style='font-size:14.0pt;line-height:150%;color:black'><o:p></o:p></span></b></p>
+
+<ol style='margin-top:0in' start=1 type=1>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b><a href="01.html">Define your interfaces and
+ component types</a>:</b><o:p></o:p></li>
+ <ol style='margin-top:0in' start=1 type=a>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level2 lfo5;
+ tab-stops:list 1.0in'><b>Define your interfaces using IDL 2.x features</b>,
+ e.g., use the familiar CORBA types (such as <span style='mso-bidi-font-weight:
+ bold'>struct</span>, <span style='mso-bidi-font-weight:bold'>sequence</span>,
+ <span style='mso-bidi-font-weight:bold'>long</span>, <span
+ style='mso-bidi-font-weight:bold'>Object</span>, <span style='mso-bidi-font-weight:
+ bold'>interface</span>, <span style='mso-bidi-font-weight:bold'>raises</span>,
+ etc.) to define your interfaces &amp; exceptions.<o:p></o:p></li>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level2 lfo5;
+ tab-stops:list 1.0in'><b>Define your component types using IDL 3.x
+ features</b>, e.g., use the new CCM keywords (such as <span
+ style='mso-bidi-font-weight:bold'>component</span>, <span
+ style='mso-bidi-font-weight:bold'>provides</span>, <span
+ style='mso-bidi-font-weight:bold'>uses</span>, <span style='mso-bidi-font-weight:
+ bold'>publishes</span>, <span style='mso-bidi-font-weight:bold'>emits</span>,
+ &amp; <span style='mso-bidi-font-weight:bold'>consumes</span>) to group
+ the IDL 2.x types together to form components.<b><o:p></o:p></b></li>
+ </ol>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b><a href="02.html">Implement your components</a></b>,
+ e.g., using C++ or Java &amp; the Component Implementation Definition
+ Language (CIDL), which generates component servants, executor interfaces,
+ associated metadata, &amp; compositions.<b><o:p></o:p></b></li>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b style='mso-bidi-font-weight:normal'><a
+ href="03.html">Package your components</a></b>, <span style='color:red'>[Ming,
+ can you add a brief description here?]</span><b><o:p></o:p></b></li>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b><a href="03.html">Assemble your components</a></b>,
+ e.g., group related components together &amp; characterize their metadata
+ that describes the components present in the assembly.<span
+ style='mso-bidi-font-weight:bold'><o:p></o:p></span></li>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b style='mso-bidi-font-weight:normal'><a
+ href="03.html">Plan your deployment</a></b>, <span style='color:red'>[Ming,
+ can you add a brief description here?]</span><span style='mso-bidi-font-weight:
+ bold'><o:p></o:p></span></li>
+ <li class=MsoNormal style='color:black;line-height:150%;mso-list:l2 level1 lfo5;
+ tab-stops:list .5in'><b><a href="04.html">Deploy your components &amp; run
+ your application</a></b>, e.g., move the component assembly packages to
+ the appropriate nodes in the distributed system &amp; invoke operations on
+ components to perform the application logic.<b style='mso-bidi-font-weight:
+ normal'><o:p></o:p></b></li>
+</ol>
+
+<div class=MsoNormal align=center style='text-align:center;line-height:150%'><span
+style='color:black'>
+
+<hr size=2 width="100%" align=center>
+
+</span></div>
+
+<address style='line-height:150%'><a href="mailto:ming.xiong@vanderbilt.edu">Ming
+Xiong<br>
+</a><a href="mailto:abdullah.sowayan@lmco.com">Abdullah Sowayan</a></address>
+
+<address style='line-height:150%'>Last modified: Fri May 5 21:29:07 CDT 2006 <span
+style='color:black'><o:p></o:p></span></address>
+
+</div>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/docs/value_factory_registration.html b/modules/CIAO/docs/value_factory_registration.html
new file mode 100644
index 00000000000..3c2a45d6815
--- /dev/null
+++ b/modules/CIAO/docs/value_factory_registration.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Jeff Parsons">
+ <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>Registration of Valuetype Factories for Event Sinks</title>
+ <!-- $Id$ -->
+ </head>
+ <body>
+ <h3>Registration of Valuetype Factories for Event Sinks</h3>
+ <p>Components with one or more event sink (consumer) ports will need to have a
+ valuetype factory registered with the underlying ORB in order to correctly
+ demarshal the state of eventtypes it receives over the wire.</p>
+ <p>For the common case (eventtypes that contain only one or more state members),
+ the IDL compiler generates a concrete class with a name constructed from the
+ valuetype name and an '_init' suffix, and the CIDL compiler generates a macro
+ in the servant constructor that registers this factory with the container's
+ ORB. However, an eventtype, like any valuetype, may also contain operation
+ and/or factory declarations. In these cases things are not so simple. For
+ example a factory declaration in an IDL valuetype or eventtype will generate a
+ pure virtual function of the same name in the associated _init class, meaning
+ that ORB factory registration for this type must be with a derived factory
+ class written by the application developer. The table below shows all possible
+ cases of IDL compiler factory generation.</p>
+ <TABLE BORDER="4" CELLSPACING="4" CELLPADDING="4" ID="Table1">
+ <TR>
+ <TD></TD>
+ <TD><b>Has Operation</b></TD>
+ <TD><b>Has No Operation</b></TD>
+ </TR>
+ <tr>
+ <td><b>Has Factory</b></td>
+ <td>ABSTRACT FACTORY</td>
+ <td>ABSTRACT FACTORY</td>
+ </tr>
+ <tr>
+ <td><b>Has No Factory</b></td>
+ <td>NO FACTORY</td>
+ <td>CONCRETE FACTORY</td>
+ </tr>
+ </TABLE>
+ <p>The CIAO CIDL compiler will generate a macro to register the factory with the
+ container's ORB only in the case where a concrete factory is generated by the
+ IDL compiler, and thus no subclassing is necessary. There is also a command
+ line option for the CIDL compiler, <tt>--suppress-register-factory</tt>,
+ that turns off generation of the macro in all cases.</p>
+ </body>
+</html>
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.cidl b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.cidl
new file mode 100644
index 00000000000..99263030104
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.cidl
@@ -0,0 +1,20 @@
+//$Id$
+
+#ifndef BMCLOSEDED_CIDL
+#define BMCLOSEDED_CIDL
+
+#include "../BasicSP.idl"
+#include "BMClosedED.idl"
+
+composition session BMClosedED_Impl
+{
+ home executor BMClosedEDHome_Exec
+ {
+ implements BasicSP::BMClosedEDHome;
+ manages BMClosedED_Exec;
+ };
+};
+
+#endif /* BMCLOSEDED_CIDL */
+
+
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl
new file mode 100644
index 00000000000..2fe200151fe
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.idl
@@ -0,0 +1,17 @@
+//$Id$
+#include "../BasicSP.idl"
+
+module BasicSP
+{
+ component BMClosedED
+ {
+ provides ReadData dataout;
+ uses ReadData datain;
+ publishes DataAvailable out_avail;
+ consumes DataAvailable in_avail;
+ };
+
+ home BMClosedEDHome manages BMClosedED
+ {
+ };
+};
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc
new file mode 100644
index 00000000000..d08061594a0
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED.mpc
@@ -0,0 +1,83 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i BMClosedED"
+// This file has been manually modified to add a second component implementation.
+
+project(BMClosedED_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_stub
+ sharedname = BMClosedED_stub
+
+ idlflags += -Wb,stub_export_macro=BMCLOSEDED_STUB_Export
+ idlflags += -Wb,stub_export_include=BMClosedED_stub_export.h
+ idlflags += -Wb,skel_export_macro=BMCLOSEDED_SVNT_Export
+ idlflags += -Wb,skel_export_include=BMClosedED_svnt_export.h
+
+ libs += BasicSP_stub
+
+ dynamicflags = BMCLOSEDED_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMClosedED.idl
+ }
+
+ Source_Files {
+ BMClosedEDC.cpp
+ }
+}
+
+project(BMClosedED_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_svnt BMClosedED_DnC_stub
+
+ sharedname = BMClosedED_svnt
+
+ libs += BMClosedED_stub BasicSP_stub
+ libs += BasicSP_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=BMCLOSEDED_SVNT_Export
+ idlflags += -Wb,export_include=BMClosedED_svnt_export.h
+
+ dynamicflags = BMCLOSEDED_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMClosedED.cidl
+ }
+
+ IDL_Files {
+ BMClosedEDE.idl
+ }
+
+ Source_Files {
+ BMClosedEDEC.cpp
+ BMClosedEDS.cpp
+ BMClosedED_svnt.cpp
+ }
+}
+
+
+project(BMClosedED_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += BMClosedED_DnC_svnt
+
+ sharedname = BMClosedED_exec
+
+ libs += BMClosedED_stub BMClosedED_svnt
+ libs += BasicSP_stub BasicSP_svnt
+
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMCLOSEDED_EXEC_Export
+ idlflags += -Wb,export_include=BMClosedED_exec_export.h
+
+ dynamicflags = BMCLOSEDED_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMClosedEDEI.idl
+ }
+
+ Source_Files {
+ BMClosedEDEIC.cpp
+ BMClosedED_exec.cpp
+ }
+}
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedEDEI.idl b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedEDEI.idl
new file mode 100644
index 00000000000..a95918e6595
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedEDEI.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+/**
+ * @file BMClosedEDEI.idl
+ *
+ * Definition of the GPS component implementation.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef CIAO_BMCLOSEDEDI_IDL
+#define CIAO_BMCLOSEDEDI_IDL
+
+#include "BMClosedEDE.idl"
+
+module BasicSP
+{
+ /**
+ * @interface BMClosedED_Exec
+ *
+ * The actually GPS executor inherits from both CCM_GPS and
+ * CCM_position interfaces as a monolithic implementation.
+ */
+ local interface BMClosedED_Exec :
+ CCM_BMClosedED,
+ CCM_ReadData,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* CIAO_BMCLOSEDEDI_IDL*/
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp
new file mode 100644
index 00000000000..fb92bb2ea66
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.cpp
@@ -0,0 +1,191 @@
+// $Id$
+
+#include "ciao/CIAO_common.h"
+#include "BMClosedED_exec.h"
+#include "ace/SString.h"
+
+#include "ace/OS_NS_string.h"
+
+
+#define DISPLACEMENT 256
+
+/// Default constructor.
+MyImpl::BMClosedED_exec_i::BMClosedED_exec_i ()
+{
+}
+
+/// Default destructor.
+MyImpl::BMClosedED_exec_i::~BMClosedED_exec_i ()
+{
+}
+
+// Operations from HUDisplay::BMClosedED
+
+BasicSP::CCM_ReadData_ptr
+MyImpl::BMClosedED_exec_i::get_dataout ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return BasicSP::CCM_ReadData::_duplicate (this);
+}
+
+void
+MyImpl::BMClosedED_exec_i::push_in_avail (BasicSP::DataAvailable *)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Doing computations \n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Doing data fetch \n"));
+ }
+
+ // Refresh position
+ BasicSP::ReadData_var dat
+ = this->context_->get_connection_datain ();
+
+ if (CORBA::is_nil (dat.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - got nil from get_connection \n"));
+
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ CORBA::String_var str =
+ dat->get_data ();
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Display data is [%s] \n",
+ str.in ()));
+ }
+
+ if (ACE_OS::strcmp (str.in (), "BM DEVICE DATA") == 0)
+ {
+ this->str_ = CORBA::string_dup ("BM CLOSED ED DATA");
+ }
+
+ // Notify others.
+ BasicSP::DataAvailable_var event =
+ new OBV_BasicSP::DataAvailable;
+
+ this->context_->push_out_avail (event);
+}
+
+// Operations from HUDisplay::position
+
+char *
+MyImpl::BMClosedED_exec_i::get_data ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->str_.inout ());
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::BMClosedED_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::set_session_context\n"));
+ }
+
+ this->context_ =
+ BasicSP::CCM_BMClosedED_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::BMClosedED_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_activate\n"));
+ }
+
+}
+
+void
+MyImpl::BMClosedED_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ // if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ // if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::BMClosedEDHome_exec_i::BMClosedEDHome_exec_i ()
+{
+}
+
+/// Default dtor.
+MyImpl::BMClosedEDHome_exec_i::~BMClosedEDHome_exec_i ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::BMClosedEDHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ Components::EnterpriseComponent_ptr tmp =
+ Components::EnterpriseComponent::_nil ();
+ ACE_NEW_THROW_EX (tmp,
+ MyImpl::BMClosedED_exec_i,
+ CORBA::NO_MEMORY ());
+ return tmp;
+}
+
+
+extern "C" BMCLOSEDED_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMClosedEDHome_Impl (void)
+{
+ return new MyImpl::BMClosedEDHome_exec_i;
+}
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h
new file mode 100644
index 00000000000..c6f9c0ff1fe
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec.h
@@ -0,0 +1,128 @@
+// $Id$
+
+//================================================================
+/**
+ * @file BMClosedED_exec.h
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_BMCLOSED_EXEC_H
+#define CIAO_BMCLOSED_EXEC_H
+
+#include "BMClosedEDEIC.h"
+#include "tao/LocalObject.h"
+
+// The namespace name for the actual implementation classes doesn't
+// really matter. Since there may be several different
+// implementations for a component, they can very well be in different
+// namespaces.
+namespace MyImpl
+{
+ /**
+ * @class BMClosedED_exec_i
+ *
+ * An example RateGen executor implementation class.
+ */
+ class BMCLOSEDED_EXEC_Export BMClosedED_exec_i :
+ public virtual BasicSP::BMClosedED_Exec,
+ // CIAO container implementation depends on correct reference
+ // counting of local interfaces, so we take a short cut to
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ BMClosedED_exec_i (void);
+
+ /// Default destructor.
+ ~BMClosedED_exec_i (void);
+
+ // Operations from HUDisplay::BMClosedED
+
+ virtual BasicSP::CCM_ReadData_ptr
+ get_dataout ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ push_in_avail (BasicSP::DataAvailable *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from HUDisplay::position
+ virtual char *
+ get_data ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ CORBA::String_var str_;
+
+ /// Copmponent specific context
+ BasicSP::CCM_BMClosedED_Context_var context_;
+ };
+
+ /**
+ * @class BMClosedEDHome_exec_i
+ *
+ * BMClosedED home executor implementation class.
+ */
+ class BMCLOSEDED_EXEC_Export BMClosedEDHome_exec_i :
+ public virtual BasicSP::CCM_BMClosedEDHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ BMClosedEDHome_exec_i ();
+
+ /// Default dtor.
+ ~BMClosedEDHome_exec_i ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+// Executor DLL entry point. CIAO's deployment and assembly framework
+// invokes this function on the resulting DLL to get the home executor.
+extern "C" BMCLOSEDED_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMClosedEDHome_Impl (void);
+
+#endif /* CIAO_BMCLOSED_EXEC_H*/
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec_export.h b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec_export.h
new file mode 100644
index 00000000000..90b64e5262d
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMCLOSEDED_EXEC
+// ------------------------------
+#ifndef BMCLOSEDED_EXEC_EXPORT_H
+#define BMCLOSEDED_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMCLOSEDED_EXEC_HAS_DLL)
+# define BMCLOSEDED_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMCLOSEDED_EXEC_HAS_DLL */
+
+#if !defined (BMCLOSEDED_EXEC_HAS_DLL)
+# define BMCLOSEDED_EXEC_HAS_DLL 1
+#endif /* ! BMCLOSEDED_EXEC_HAS_DLL */
+
+#if defined (BMCLOSEDED_EXEC_HAS_DLL) && (BMCLOSEDED_EXEC_HAS_DLL == 1)
+# if defined (BMCLOSEDED_EXEC_BUILD_DLL)
+# define BMCLOSEDED_EXEC_Export ACE_Proper_Export_Flag
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMCLOSEDED_EXEC_BUILD_DLL */
+# define BMCLOSEDED_EXEC_Export ACE_Proper_Import_Flag
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMCLOSEDED_EXEC_BUILD_DLL */
+#else /* BMCLOSEDED_EXEC_HAS_DLL == 1 */
+# define BMCLOSEDED_EXEC_Export
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARATION(T)
+# define BMCLOSEDED_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMCLOSEDED_EXEC_HAS_DLL == 1 */
+
+// Set BMCLOSEDED_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMCLOSEDED_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMCLOSEDED_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMCLOSEDED_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMCLOSEDED_EXEC_NTRACE */
+
+#if (BMCLOSEDED_EXEC_NTRACE == 1)
+# define BMCLOSEDED_EXEC_TRACE(X)
+#else /* (BMCLOSEDED_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMCLOSEDED_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMCLOSEDED_EXEC_NTRACE == 1) */
+
+#endif /* BMCLOSEDED_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_stub_export.h b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_stub_export.h
new file mode 100644
index 00000000000..cf7d2418b52
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMCLOSEDED_STUB
+// ------------------------------
+#ifndef BMCLOSEDED_STUB_EXPORT_H
+#define BMCLOSEDED_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMCLOSEDED_STUB_HAS_DLL)
+# define BMCLOSEDED_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMCLOSEDED_STUB_HAS_DLL */
+
+#if !defined (BMCLOSEDED_STUB_HAS_DLL)
+# define BMCLOSEDED_STUB_HAS_DLL 1
+#endif /* ! BMCLOSEDED_STUB_HAS_DLL */
+
+#if defined (BMCLOSEDED_STUB_HAS_DLL) && (BMCLOSEDED_STUB_HAS_DLL == 1)
+# if defined (BMCLOSEDED_STUB_BUILD_DLL)
+# define BMCLOSEDED_STUB_Export ACE_Proper_Export_Flag
+# define BMCLOSEDED_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMCLOSEDED_STUB_BUILD_DLL */
+# define BMCLOSEDED_STUB_Export ACE_Proper_Import_Flag
+# define BMCLOSEDED_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMCLOSEDED_STUB_BUILD_DLL */
+#else /* BMCLOSEDED_STUB_HAS_DLL == 1 */
+# define BMCLOSEDED_STUB_Export
+# define BMCLOSEDED_STUB_SINGLETON_DECLARATION(T)
+# define BMCLOSEDED_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMCLOSEDED_STUB_HAS_DLL == 1 */
+
+// Set BMCLOSEDED_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMCLOSEDED_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMCLOSEDED_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMCLOSEDED_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMCLOSEDED_STUB_NTRACE */
+
+#if (BMCLOSEDED_STUB_NTRACE == 1)
+# define BMCLOSEDED_STUB_TRACE(X)
+#else /* (BMCLOSEDED_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMCLOSEDED_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMCLOSEDED_STUB_NTRACE == 1) */
+
+#endif /* BMCLOSEDED_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h
new file mode 100644
index 00000000000..f0bb1407c79
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/BMClosedED_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMCLOSEDED_SVNT
+// ------------------------------
+#ifndef BMCLOSEDED_SVNT_EXPORT_H
+#define BMCLOSEDED_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMCLOSEDED_SVNT_HAS_DLL)
+# define BMCLOSEDED_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMCLOSEDED_SVNT_HAS_DLL */
+
+#if !defined (BMCLOSEDED_SVNT_HAS_DLL)
+# define BMCLOSEDED_SVNT_HAS_DLL 1
+#endif /* ! BMCLOSEDED_SVNT_HAS_DLL */
+
+#if defined (BMCLOSEDED_SVNT_HAS_DLL) && (BMCLOSEDED_SVNT_HAS_DLL == 1)
+# if defined (BMCLOSEDED_SVNT_BUILD_DLL)
+# define BMCLOSEDED_SVNT_Export ACE_Proper_Export_Flag
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMCLOSEDED_SVNT_BUILD_DLL */
+# define BMCLOSEDED_SVNT_Export ACE_Proper_Import_Flag
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMCLOSEDED_SVNT_BUILD_DLL */
+#else /* BMCLOSEDED_SVNT_HAS_DLL == 1 */
+# define BMCLOSEDED_SVNT_Export
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARATION(T)
+# define BMCLOSEDED_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMCLOSEDED_SVNT_HAS_DLL == 1 */
+
+// Set BMCLOSEDED_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMCLOSEDED_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMCLOSEDED_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMCLOSEDED_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMCLOSEDED_SVNT_NTRACE */
+
+#if (BMCLOSEDED_SVNT_NTRACE == 1)
+# define BMCLOSEDED_SVNT_TRACE(X)
+#else /* (BMCLOSEDED_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMCLOSEDED_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMCLOSEDED_SVNT_NTRACE == 1) */
+
+#endif /* BMCLOSEDED_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMClosedED/config b/modules/CIAO/examples/BasicSP/BMClosedED/config
new file mode 100644
index 00000000000..a122025755d
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMClosedED/config
@@ -0,0 +1 @@
+BMClosedED_exec|createBMClosedEDHome_Impl|BMClosedED_svnt|createBMClosedEDHome_Servant
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.cidl b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.cidl
new file mode 100644
index 00000000000..94919f15af0
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.cidl
@@ -0,0 +1,20 @@
+//$Id$
+
+#ifndef BMDEVICE_CIDL
+#define BMDEVICE_CIDL
+
+#include "../BasicSP.idl"
+#include "BMDevice.idl"
+
+composition session BMDevice_Impl
+{
+ home executor BMDeviceHome_Exec
+ {
+ implements BasicSP::BMDeviceHome;
+ manages BMDevice_Exec;
+ };
+};
+
+#endif /* BMDEVICE_CIDL */
+
+
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl
new file mode 100644
index 00000000000..86477c12f8b
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.idl
@@ -0,0 +1,30 @@
+//$Id$
+//=============================================================================
+/**
+ * @file BMDevice.idl
+ *
+ * Definition of the BMDevice component
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+#ifndef CIAO_BMDEVICE_IDL
+#define CIAO_BMDEVICE_IDL
+
+#include "../BasicSP.idl"
+
+module BasicSP
+{
+ component BMDevice
+ {
+ provides ReadData data_read;
+ publishes DataAvailable data_available;
+ consumes TimeOut timeout;
+ };
+
+ home BMDeviceHome manages BMDevice
+ {
+ };
+};
+
+#endif /*CIAO_BMDEVICE_IDL */
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc
new file mode 100644
index 00000000000..90212cc63ec
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice.mpc
@@ -0,0 +1,66 @@
+// $Id$
+
+project(BMDevice_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_stub
+ sharedname = BMDevice_stub
+
+ idlflags += -Wb,stub_export_macro=BMDEVICE_STUB_Export -Wb,stub_export_include=BMDevice_stub_export.h -Wb,skel_export_macro=BMDEVICE_SVNT_Export -Wb,skel_export_include=BMDevice_svnt_export.h
+ libpaths += ..
+ libs += BasicSP_stub
+ dynamicflags = BMDEVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMDevice.idl
+ }
+
+ Source_Files {
+ BMDeviceC.cpp
+ }
+}
+
+project(BMDevice_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += BMDevice_DnC_stub BasicSP_DnC_stub
+ sharedname = BMDevice_svnt
+ libs += BMDevice_stub BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMDEVICE_SVNT_Export -Wb,export_include=BMDevice_svnt_export.h
+ dynamicflags = BMDEVICE_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDevice.cidl
+ }
+
+ IDL_Files {
+ BMDeviceE.idl
+ }
+
+ Source_Files {
+ BMDeviceEC.cpp
+ BMDeviceS.cpp
+ BMDevice_svnt.cpp
+ }
+}
+
+
+project(BMDevice_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += BMDevice_DnC_svnt
+ sharedname = BMDevice_exec
+ libs += BMDevice_stub BMDevice_svnt BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMDEVICE_EXEC_Export -Wb,export_include=BMDevice_exec_export.h
+ dynamicflags = BMDEVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDeviceEI.idl
+ }
+
+ Source_Files {
+ BMDeviceES.cpp
+ BMDeviceEIC.cpp
+ BMDeviceEIS.cpp
+ BMDevice_exec.cpp
+ }
+}
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDeviceEI.idl b/modules/CIAO/examples/BasicSP/BMDevice/BMDeviceEI.idl
new file mode 100644
index 00000000000..18a4ad9eaa4
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDeviceEI.idl
@@ -0,0 +1,30 @@
+// $Id$
+//=============================================================================
+/**
+ * @file BMDeviceEI.idl
+ *
+ * Definition of the BMDevice component implementation.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+//=============================================================================
+#ifndef CIAO_BMDEVICEEI_IDL
+#define CIAO_BMDEVICEEI_IDL
+
+#include "BMDeviceE.idl"
+
+module BasicSP
+{
+ /**
+ * @interface BMDevice_Exec
+ */
+ local interface BMDevice_Exec :
+ CCM_BMDevice,
+ CCM_ReadData,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* CIAO_BMDEVICEEI_IDL */
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp
new file mode 100644
index 00000000000..5f401e2de5d
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.cpp
@@ -0,0 +1,164 @@
+// $Id$
+
+#include "ciao/CIAO_common.h"
+#include "BMDevice_exec.h"
+
+#define DISPLACEMENT 256
+
+/// Default constructor.
+MyImpl::BMDevice_exec_i::BMDevice_exec_i (void)
+ : str_ ("BM DEVICE DATA")
+{
+
+}
+
+/// Default destructor.
+MyImpl::BMDevice_exec_i::~BMDevice_exec_i ()
+{
+}
+
+BasicSP::CCM_ReadData_ptr
+MyImpl::BMDevice_exec_i::get_data_read ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return BasicSP::CCM_ReadData::_duplicate (this);
+}
+
+void
+MyImpl::BMDevice_exec_i::push_timeout (BasicSP::TimeOut *)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Nitify others
+ BasicSP::DataAvailable_var event = new OBV_BasicSP::DataAvailable;
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMDevice, received a timeout from EC \n"));
+ }
+
+ this->context_->push_data_available (event);
+}
+
+char *
+MyImpl::BMDevice_exec_i::data_read ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->str_);
+}
+
+char *
+MyImpl::BMDevice_exec_i::get_data ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->data_read ();
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::BMDevice_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDevice_exec_i::set_session_context\n"));
+ }
+
+ this->context_ =
+ BasicSP::CCM_BMDevice_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::BMDevice_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMDevice_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDevice_exec_i::ccm_activate\n"));
+ }
+
+}
+
+void
+MyImpl::BMDevice_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMDevice_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDevice_exec_i::ccm_passivate\n"));
+ }
+}
+
+void
+MyImpl::BMDevice_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDevice_exec_i::ccm_remove\n"));
+ }
+}
+
+/// Default ctor.
+MyImpl::BMDeviceHome_exec_i::BMDeviceHome_exec_i ()
+{
+}
+
+/// Default dtor.
+MyImpl::BMDeviceHome_exec_i::~BMDeviceHome_exec_i ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::BMDeviceHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ Components::EnterpriseComponent_ptr tmp= 0;
+ ACE_NEW_THROW_EX (tmp,
+ MyImpl::BMDevice_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return tmp;
+}
+
+
+extern "C" BMDEVICE_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMDeviceHome_Impl (void)
+{
+ return new MyImpl::BMDeviceHome_exec_i;
+}
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h
new file mode 100644
index 00000000000..6ad460faee4
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec.h
@@ -0,0 +1,130 @@
+// $Id$
+
+// ================================================================
+/**
+ * @file BMDevice_exec.h
+ *
+ * Header file for the actual BMDevice and BMDeviceHome component
+ * implementations. These classes are the implementations of local
+ * interfaces defined in BMDeviceEI.idl.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+// ================================================================
+
+#ifndef CIAO_BMDEVICE_EXEC_H
+#define CIAO_BMDEVICE_EXEC_H
+
+#include "BMDeviceEIC.h"
+#include "tao/LocalObject.h"
+
+namespace MyImpl
+{
+ /**
+ * @class BMDEVICE_exec_i
+ *
+ * An example RateGen executor implementation class.
+ */
+ class BMDEVICE_EXEC_Export BMDevice_exec_i :
+ public virtual BasicSP::BMDevice_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ BMDevice_exec_i ();
+
+ /// Default destructor.
+ ~BMDevice_exec_i ();
+
+ // Operations from BasicSP::BMDevice
+
+ virtual BasicSP::CCM_ReadData_ptr
+ get_data_read ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ push_timeout (BasicSP::TimeOut *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from BasicSP::position
+
+ virtual char *
+ data_read ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual char *
+ get_data ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ const char *str_;
+
+ /// Copmponent specific context
+ BasicSP::CCM_BMDevice_Context_var context_;
+ };
+
+ /**
+ * @class BMDeviceHome_exec_i
+ *
+ * BMDevice home executor implementation class.
+ */
+ class BMDEVICE_EXEC_Export BMDeviceHome_exec_i :
+ public virtual BasicSP::CCM_BMDeviceHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ BMDeviceHome_exec_i ();
+
+ /// Default dtor.
+ ~BMDeviceHome_exec_i ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+// Executor DLL entry point. CIAO's deployment and assembly framework
+// invokes this function on the resulting DLL to get the home executor.
+extern "C" BMDEVICE_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMDeviceHome_Impl (void);
+
+#endif /* CIAO_BMDEVICE_EXEC_H*/
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec_export.h b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec_export.h
new file mode 100644
index 00000000000..8a5296ac320
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDEVICE_EXEC
+// ------------------------------
+#ifndef BMDEVICE_EXEC_EXPORT_H
+#define BMDEVICE_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDEVICE_EXEC_HAS_DLL)
+# define BMDEVICE_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDEVICE_EXEC_HAS_DLL */
+
+#if !defined (BMDEVICE_EXEC_HAS_DLL)
+# define BMDEVICE_EXEC_HAS_DLL 1
+#endif /* ! BMDEVICE_EXEC_HAS_DLL */
+
+#if defined (BMDEVICE_EXEC_HAS_DLL) && (BMDEVICE_EXEC_HAS_DLL == 1)
+# if defined (BMDEVICE_EXEC_BUILD_DLL)
+# define BMDEVICE_EXEC_Export ACE_Proper_Export_Flag
+# define BMDEVICE_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDEVICE_EXEC_BUILD_DLL */
+# define BMDEVICE_EXEC_Export ACE_Proper_Import_Flag
+# define BMDEVICE_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDEVICE_EXEC_BUILD_DLL */
+#else /* BMDEVICE_EXEC_HAS_DLL == 1 */
+# define BMDEVICE_EXEC_Export
+# define BMDEVICE_EXEC_SINGLETON_DECLARATION(T)
+# define BMDEVICE_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDEVICE_EXEC_HAS_DLL == 1 */
+
+// Set BMDEVICE_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDEVICE_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDEVICE_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDEVICE_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDEVICE_EXEC_NTRACE */
+
+#if (BMDEVICE_EXEC_NTRACE == 1)
+# define BMDEVICE_EXEC_TRACE(X)
+#else /* (BMDEVICE_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDEVICE_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDEVICE_EXEC_NTRACE == 1) */
+
+#endif /* BMDEVICE_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_stub_export.h b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_stub_export.h
new file mode 100644
index 00000000000..d5629993a02
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDEVICE_STUB
+// ------------------------------
+#ifndef BMDEVICE_STUB_EXPORT_H
+#define BMDEVICE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDEVICE_STUB_HAS_DLL)
+# define BMDEVICE_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDEVICE_STUB_HAS_DLL */
+
+#if !defined (BMDEVICE_STUB_HAS_DLL)
+# define BMDEVICE_STUB_HAS_DLL 1
+#endif /* ! BMDEVICE_STUB_HAS_DLL */
+
+#if defined (BMDEVICE_STUB_HAS_DLL) && (BMDEVICE_STUB_HAS_DLL == 1)
+# if defined (BMDEVICE_STUB_BUILD_DLL)
+# define BMDEVICE_STUB_Export ACE_Proper_Export_Flag
+# define BMDEVICE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDEVICE_STUB_BUILD_DLL */
+# define BMDEVICE_STUB_Export ACE_Proper_Import_Flag
+# define BMDEVICE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDEVICE_STUB_BUILD_DLL */
+#else /* BMDEVICE_STUB_HAS_DLL == 1 */
+# define BMDEVICE_STUB_Export
+# define BMDEVICE_STUB_SINGLETON_DECLARATION(T)
+# define BMDEVICE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDEVICE_STUB_HAS_DLL == 1 */
+
+// Set BMDEVICE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDEVICE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDEVICE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDEVICE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDEVICE_STUB_NTRACE */
+
+#if (BMDEVICE_STUB_NTRACE == 1)
+# define BMDEVICE_STUB_TRACE(X)
+#else /* (BMDEVICE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDEVICE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDEVICE_STUB_NTRACE == 1) */
+
+#endif /* BMDEVICE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_svnt_export.h b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_svnt_export.h
new file mode 100644
index 00000000000..aef5a60b792
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDevice/BMDevice_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDEVICE_SVNT
+// ------------------------------
+#ifndef BMDEVICE_SVNT_EXPORT_H
+#define BMDEVICE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDEVICE_SVNT_HAS_DLL)
+# define BMDEVICE_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDEVICE_SVNT_HAS_DLL */
+
+#if !defined (BMDEVICE_SVNT_HAS_DLL)
+# define BMDEVICE_SVNT_HAS_DLL 1
+#endif /* ! BMDEVICE_SVNT_HAS_DLL */
+
+#if defined (BMDEVICE_SVNT_HAS_DLL) && (BMDEVICE_SVNT_HAS_DLL == 1)
+# if defined (BMDEVICE_SVNT_BUILD_DLL)
+# define BMDEVICE_SVNT_Export ACE_Proper_Export_Flag
+# define BMDEVICE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDEVICE_SVNT_BUILD_DLL */
+# define BMDEVICE_SVNT_Export ACE_Proper_Import_Flag
+# define BMDEVICE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDEVICE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDEVICE_SVNT_BUILD_DLL */
+#else /* BMDEVICE_SVNT_HAS_DLL == 1 */
+# define BMDEVICE_SVNT_Export
+# define BMDEVICE_SVNT_SINGLETON_DECLARATION(T)
+# define BMDEVICE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDEVICE_SVNT_HAS_DLL == 1 */
+
+// Set BMDEVICE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDEVICE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDEVICE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDEVICE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDEVICE_SVNT_NTRACE */
+
+#if (BMDEVICE_SVNT_NTRACE == 1)
+# define BMDEVICE_SVNT_TRACE(X)
+#else /* (BMDEVICE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDEVICE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDEVICE_SVNT_NTRACE == 1) */
+
+#endif /* BMDEVICE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.cidl b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.cidl
new file mode 100644
index 00000000000..4342aa753c8
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.cidl
@@ -0,0 +1,18 @@
+//$Id$
+
+#ifndef BMDISPLAY_CIDL
+#define BMDISPLAY_CIDL
+
+#include "BMDisplay.idl"
+
+composition session BMDisplay_Impl
+{
+ home executor BMDisplayHome_Exec
+ {
+ implements BasicSP::BMDisplayHome;
+ manages BMDisplay_Exec;
+ };
+};
+
+#endif /* BMDISPLAY_CIDL */
+
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl
new file mode 100644
index 00000000000..cbeed950b07
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.idl
@@ -0,0 +1,15 @@
+//$Id$
+#include "../BasicSP.idl"
+
+module BasicSP
+{
+ component BMDisplay
+ {
+ consumes DataAvailable data_ready;
+ uses ReadData comp_data;
+ };
+
+ home BMDisplayHome manages BMDisplay
+ {
+ };
+};
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc
new file mode 100644
index 00000000000..35e0c3196f0
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay.mpc
@@ -0,0 +1,82 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i BMDisplay"
+
+project(BMDisplay_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_stub
+
+ sharedname = BMDisplay_stub
+
+ idlflags += -Wb,stub_export_macro=BMDISPLAY_STUB_Export
+ idlflags += -Wb,stub_export_include=BMDisplay_stub_export.h
+ idlflags += -Wb,skel_export_macro=BMDISPLAY_SVNT_Export
+ idlflags += -Wb,skel_export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_STUB_BUILD_DLL
+
+ libs += BasicSP_stub
+
+ IDL_Files {
+ BMDisplay.idl
+ }
+
+ Source_Files {
+ BMDisplayC.cpp
+ }
+}
+
+project(BMDisplay_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_svnt BMDisplay_DnC_stub
+
+ sharedname = BMDisplay_svnt
+
+ libs += BMDisplay_stub BasicSP_stub BasicSP_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=BMDISPLAY_SVNT_Export
+ idlflags += -Wb,export_include=BMDisplay_svnt_export.h
+
+ dynamicflags = BMDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDisplay.cidl
+ }
+
+ IDL_Files {
+ BMDisplayE.idl
+ }
+
+ Source_Files {
+ BMDisplayEC.cpp
+ BMDisplayS.cpp
+ BMDisplay_svnt.cpp
+ }
+}
+
+
+project(BMDisplay_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += BMDisplay_DnC_svnt
+
+ sharedname = BMDisplay_exec
+
+ libs += BMDisplay_stub BMDisplay_svnt
+ libs += BasicSP_stub BasicSP_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=BMDISPLAY_EXEC_Export
+ idlflags += -Wb,export_include=BMDisplay_exec_export.h
+
+ dynamicflags = BMDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDisplayEI.idl
+ }
+
+ Source_Files {
+ BMDisplayEIC.cpp
+ BMDisplay_exec.cpp
+ }
+}
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplayEI.idl b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplayEI.idl
new file mode 100644
index 00000000000..8a218debab1
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplayEI.idl
@@ -0,0 +1,33 @@
+// $Id$
+//===========================================================
+/**
+ * @file BMDisplayEI.idl
+ *
+ * Definition of the BMDisplay (navigation display) component
+ * implementation.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//===========================================================
+#ifndef CIAO_BMDISPLAYEI_IDL
+#define CIAO_BMDISPLAYEI_IDL
+
+#include "BMDisplayE.idl"
+
+module BasicSP
+{
+ /**
+ * @interface BMDisplay_Exec
+ *
+ * The actually BMDisplay executor inherits from both CCM_BMDisplay
+ * and session_component interfaces as a monolithic implementation.
+ */
+ local interface BMDisplay_Exec :
+ CCM_BMDisplay,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* CIAO_BMDISPLAYEI_IDL */
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp
new file mode 100644
index 00000000000..227c26b41a4
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.cpp
@@ -0,0 +1,154 @@
+// $Id$
+
+#include "ciao/CIAO_common.h"
+#include "BMDisplay_exec.h"
+
+/// Default constructor.
+MyImpl::BMDisplay_exec_impl::BMDisplay_exec_impl ()
+{
+}
+
+/// Default destructor.
+MyImpl::BMDisplay_exec_impl::~BMDisplay_exec_impl ()
+{
+}
+
+// Operations from BasicSP::BMDisplay
+
+void
+MyImpl::BMDisplay_exec_impl::push_data_ready (
+ BasicSP::DataAvailable *ev
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_UNUSED_ARG (ev);
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMDisplay - Doing computations \n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "BMDisplay - Doing data fetch \n"));
+ }
+
+ // Refresh position
+ BasicSP::ReadData_var dat
+ = this->context_->get_connection_comp_data ();
+
+ if (CORBA::is_nil (dat.in ()))
+ throw CORBA::BAD_INV_ORDER ();
+
+ CORBA::String_var str =
+ dat->get_data ();
+
+ ACE_DEBUG ((LM_DEBUG,
+ "BMDisplay - Display data is [%s] \n",
+ str.in ()));
+
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::BMDisplay_exec_impl::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDisplay_exec_impl::set_session_context\n"));
+ }
+
+ this->context_ =
+ BasicSP::CCM_BMDisplay_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::BMDisplay_exec_impl::ciao_preactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMDisplay_exec_impl::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDisplay_exec_impl::ccm_activate\n"));
+ }
+
+}
+
+void
+MyImpl::BMDisplay_exec_impl::ciao_postactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMDisplay_exec_impl::ccm_passivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDisplay_exec_impl::ccm_passivate\n"));
+ }
+}
+
+void
+MyImpl::BMDisplay_exec_impl::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMDisplay_exec_impl::ccm_remove\n"));
+ }
+}
+
+/// Default ctor.
+MyImpl::BMDisplayHome_exec_impl::BMDisplayHome_exec_impl ()
+{
+}
+
+/// Default dtor.
+MyImpl::BMDisplayHome_exec_impl::~BMDisplayHome_exec_impl ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::BMDisplayHome_exec_impl::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::BMDisplay_exec_impl;
+}
+
+
+extern "C" BMDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMDisplayHome_Impl (void)
+{
+ return new MyImpl::BMDisplayHome_exec_impl;
+}
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h
new file mode 100644
index 00000000000..4d1f1e9e1a0
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec.h
@@ -0,0 +1,111 @@
+// $Id$
+
+//==============================================================
+/**
+ * @file BMDisplay_exec.h
+ *
+ * Header file for the actual BMDisplay and BMDisplayHome component
+ * implementations.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//==============================================================
+#ifndef CIAO_BMDISPLAY_EXEC_H
+#define CIAO_BMDISPLAY_EXEC_H
+
+#include "BMDisplayEIC.h"
+#include "tao/LocalObject.h"
+#include "BMDisplay_exec_export.h"
+
+namespace MyImpl
+{
+ /**
+ * @class BMDisplay_exec_impl
+ *
+ * RateGen executor implementation class.
+ */
+ class BMDISPLAY_EXEC_Export BMDisplay_exec_impl :
+ public virtual BasicSP::BMDisplay_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ BMDisplay_exec_impl ();
+
+ /// Default destructor.
+ ~BMDisplay_exec_impl ();
+
+ // Operations from BasicSP::BMDisplay
+
+ virtual void
+ push_data_ready (BasicSP::DataAvailable *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ /// Copmponent specific context
+ BasicSP::CCM_BMDisplay_Context_var context_;
+ };
+
+ /**
+ * @class BMDisplayHome_exec_impl
+ *
+ * BMDisplay home executor implementation class.
+ */
+ class BMDISPLAY_EXEC_Export BMDisplayHome_exec_impl :
+ public virtual BasicSP::CCM_BMDisplayHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ BMDisplayHome_exec_impl ();
+
+ /// Default dtor.
+ ~BMDisplayHome_exec_impl ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" BMDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMDisplayHome_Impl (void);
+
+#endif /* BMDISPLAY_EXEC_H */
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec_export.h b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec_export.h
new file mode 100644
index 00000000000..f3c4fb92151
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDISPLAY_EXEC
+// ------------------------------
+#ifndef BMDISPLAY_EXEC_EXPORT_H
+#define BMDISPLAY_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDISPLAY_EXEC_HAS_DLL)
+# define BMDISPLAY_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDISPLAY_EXEC_HAS_DLL */
+
+#if !defined (BMDISPLAY_EXEC_HAS_DLL)
+# define BMDISPLAY_EXEC_HAS_DLL 1
+#endif /* ! BMDISPLAY_EXEC_HAS_DLL */
+
+#if defined (BMDISPLAY_EXEC_HAS_DLL) && (BMDISPLAY_EXEC_HAS_DLL == 1)
+# if defined (BMDISPLAY_EXEC_BUILD_DLL)
+# define BMDISPLAY_EXEC_Export ACE_Proper_Export_Flag
+# define BMDISPLAY_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDISPLAY_EXEC_BUILD_DLL */
+# define BMDISPLAY_EXEC_Export ACE_Proper_Import_Flag
+# define BMDISPLAY_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDISPLAY_EXEC_BUILD_DLL */
+#else /* BMDISPLAY_EXEC_HAS_DLL == 1 */
+# define BMDISPLAY_EXEC_Export
+# define BMDISPLAY_EXEC_SINGLETON_DECLARATION(T)
+# define BMDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDISPLAY_EXEC_HAS_DLL == 1 */
+
+// Set BMDISPLAY_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDISPLAY_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDISPLAY_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDISPLAY_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDISPLAY_EXEC_NTRACE */
+
+#if (BMDISPLAY_EXEC_NTRACE == 1)
+# define BMDISPLAY_EXEC_TRACE(X)
+#else /* (BMDISPLAY_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDISPLAY_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDISPLAY_EXEC_NTRACE == 1) */
+
+#endif /* BMDISPLAY_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_stub_export.h b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_stub_export.h
new file mode 100644
index 00000000000..4fe787f0b9c
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDISPLAY_STUB
+// ------------------------------
+#ifndef BMDISPLAY_STUB_EXPORT_H
+#define BMDISPLAY_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDISPLAY_STUB_HAS_DLL)
+# define BMDISPLAY_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDISPLAY_STUB_HAS_DLL */
+
+#if !defined (BMDISPLAY_STUB_HAS_DLL)
+# define BMDISPLAY_STUB_HAS_DLL 1
+#endif /* ! BMDISPLAY_STUB_HAS_DLL */
+
+#if defined (BMDISPLAY_STUB_HAS_DLL) && (BMDISPLAY_STUB_HAS_DLL == 1)
+# if defined (BMDISPLAY_STUB_BUILD_DLL)
+# define BMDISPLAY_STUB_Export ACE_Proper_Export_Flag
+# define BMDISPLAY_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDISPLAY_STUB_BUILD_DLL */
+# define BMDISPLAY_STUB_Export ACE_Proper_Import_Flag
+# define BMDISPLAY_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDISPLAY_STUB_BUILD_DLL */
+#else /* BMDISPLAY_STUB_HAS_DLL == 1 */
+# define BMDISPLAY_STUB_Export
+# define BMDISPLAY_STUB_SINGLETON_DECLARATION(T)
+# define BMDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDISPLAY_STUB_HAS_DLL == 1 */
+
+// Set BMDISPLAY_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDISPLAY_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDISPLAY_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDISPLAY_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDISPLAY_STUB_NTRACE */
+
+#if (BMDISPLAY_STUB_NTRACE == 1)
+# define BMDISPLAY_STUB_TRACE(X)
+#else /* (BMDISPLAY_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDISPLAY_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDISPLAY_STUB_NTRACE == 1) */
+
+#endif /* BMDISPLAY_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h
new file mode 100644
index 00000000000..b80de58508a
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BMDisplay/BMDisplay_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BMDISPLAY_SVNT
+// ------------------------------
+#ifndef BMDISPLAY_SVNT_EXPORT_H
+#define BMDISPLAY_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BMDISPLAY_SVNT_HAS_DLL)
+# define BMDISPLAY_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BMDISPLAY_SVNT_HAS_DLL */
+
+#if !defined (BMDISPLAY_SVNT_HAS_DLL)
+# define BMDISPLAY_SVNT_HAS_DLL 1
+#endif /* ! BMDISPLAY_SVNT_HAS_DLL */
+
+#if defined (BMDISPLAY_SVNT_HAS_DLL) && (BMDISPLAY_SVNT_HAS_DLL == 1)
+# if defined (BMDISPLAY_SVNT_BUILD_DLL)
+# define BMDISPLAY_SVNT_Export ACE_Proper_Export_Flag
+# define BMDISPLAY_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BMDISPLAY_SVNT_BUILD_DLL */
+# define BMDISPLAY_SVNT_Export ACE_Proper_Import_Flag
+# define BMDISPLAY_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BMDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BMDISPLAY_SVNT_BUILD_DLL */
+#else /* BMDISPLAY_SVNT_HAS_DLL == 1 */
+# define BMDISPLAY_SVNT_Export
+# define BMDISPLAY_SVNT_SINGLETON_DECLARATION(T)
+# define BMDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BMDISPLAY_SVNT_HAS_DLL == 1 */
+
+// Set BMDISPLAY_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BMDISPLAY_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BMDISPLAY_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BMDISPLAY_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BMDISPLAY_SVNT_NTRACE */
+
+#if (BMDISPLAY_SVNT_NTRACE == 1)
+# define BMDISPLAY_SVNT_TRACE(X)
+#else /* (BMDISPLAY_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BMDISPLAY_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BMDISPLAY_SVNT_NTRACE == 1) */
+
+#endif /* BMDISPLAY_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BasicSP.idl b/modules/CIAO/examples/BasicSP/BasicSP.idl
new file mode 100644
index 00000000000..e8e0bf2ae2a
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BasicSP.idl
@@ -0,0 +1,47 @@
+// $Id$
+//=============================================================================
+/**
+ * @file BasicSP.idl
+ *
+ * Definition of events, and common interfaces used in the BasicSP module.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_BASIC_SP_IDL
+#define CIAO_BASIC_SP_IDL
+
+#include <Components.idl>
+
+// @@NOTE: Do we need a pragma prefix. Anyway its broken now in TAO..
+// #pragma prefix ""
+
+module BasicSP
+{
+
+ /**
+ * @NOTE: Not sure whether this is a good abstraction. Just copying
+ * the stuff from Cadena folks.
+ */
+ /**
+ * @interface ReadData
+ *
+ */
+
+ interface ReadData {
+ string get_data ();
+ };
+
+ /**
+ * @eventtype Events that represent timeouts
+ */
+ eventtype TimeOut {};
+
+ /**
+ * @eventtype Events that represent data availability
+ */
+ eventtype DataAvailable {};
+};
+
+#endif /*CIAO_BASIC_SP_IDL*/
diff --git a/modules/CIAO/examples/BasicSP/BasicSP.mpc b/modules/CIAO/examples/BasicSP/BasicSP.mpc
new file mode 100644
index 00000000000..20f682a413b
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BasicSP.mpc
@@ -0,0 +1,30 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n HUDisplay"
+
+project(BasicSP_DnC_stub): ciao_client_dnc {
+
+ sharedname = BasicSP_stub
+ idlflags += -Wb,stub_export_macro=BASICSP_STUB_Export -Wb,stub_export_include=BasicSP_stub_export.h -Wb,skel_export_macro=BASICSP_SVNT_Export -Wb,skel_export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_STUB_BUILD_DLL
+
+ IDL_Files {
+ BasicSP.idl
+ }
+
+ Source_Files {
+ BasicSPC.cpp
+ }
+}
+
+project(BasicSP_DnC_svnt) : ciao_servant_dnc {
+ after += BasicSP_DnC_stub
+ sharedname = BasicSP_svnt
+ libs += BasicSP_stub
+
+ idlflags += -Wb,stub_export_macro=BASICSP_STUB_Export -Wb,stub_export_include=BasicSP_stub_export.h -Wb,skel_export_macro=BASICSP_SVNT_Export -Wb,skel_export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_SVNT_BUILD_DLL
+
+ Source_Files {
+ BasicSPS.cpp
+ }
+}
diff --git a/modules/CIAO/examples/BasicSP/BasicSP_stub_export.h b/modules/CIAO/examples/BasicSP/BasicSP_stub_export.h
new file mode 100644
index 00000000000..60b990512f6
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BasicSP_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BASICSP_STUB
+// ------------------------------
+#ifndef BASICSP_STUB_EXPORT_H
+#define BASICSP_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BASICSP_STUB_HAS_DLL)
+# define BASICSP_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BASICSP_STUB_HAS_DLL */
+
+#if !defined (BASICSP_STUB_HAS_DLL)
+# define BASICSP_STUB_HAS_DLL 1
+#endif /* ! BASICSP_STUB_HAS_DLL */
+
+#if defined (BASICSP_STUB_HAS_DLL) && (BASICSP_STUB_HAS_DLL == 1)
+# if defined (BASICSP_STUB_BUILD_DLL)
+# define BASICSP_STUB_Export ACE_Proper_Export_Flag
+# define BASICSP_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASICSP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASICSP_STUB_BUILD_DLL */
+# define BASICSP_STUB_Export ACE_Proper_Import_Flag
+# define BASICSP_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASICSP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASICSP_STUB_BUILD_DLL */
+#else /* BASICSP_STUB_HAS_DLL == 1 */
+# define BASICSP_STUB_Export
+# define BASICSP_STUB_SINGLETON_DECLARATION(T)
+# define BASICSP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASICSP_STUB_HAS_DLL == 1 */
+
+// Set BASICSP_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASICSP_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASICSP_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASICSP_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASICSP_STUB_NTRACE */
+
+#if (BASICSP_STUB_NTRACE == 1)
+# define BASICSP_STUB_TRACE(X)
+#else /* (BASICSP_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASICSP_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASICSP_STUB_NTRACE == 1) */
+
+#endif /* BASICSP_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/BasicSP_svnt_export.h b/modules/CIAO/examples/BasicSP/BasicSP_svnt_export.h
new file mode 100644
index 00000000000..d031453f444
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/BasicSP_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BASICSP_SVNT
+// ------------------------------
+#ifndef BASICSP_SVNT_EXPORT_H
+#define BASICSP_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BASICSP_SVNT_HAS_DLL)
+# define BASICSP_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BASICSP_SVNT_HAS_DLL */
+
+#if !defined (BASICSP_SVNT_HAS_DLL)
+# define BASICSP_SVNT_HAS_DLL 1
+#endif /* ! BASICSP_SVNT_HAS_DLL */
+
+#if defined (BASICSP_SVNT_HAS_DLL) && (BASICSP_SVNT_HAS_DLL == 1)
+# if defined (BASICSP_SVNT_BUILD_DLL)
+# define BASICSP_SVNT_Export ACE_Proper_Export_Flag
+# define BASICSP_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASICSP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASICSP_SVNT_BUILD_DLL */
+# define BASICSP_SVNT_Export ACE_Proper_Import_Flag
+# define BASICSP_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASICSP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASICSP_SVNT_BUILD_DLL */
+#else /* BASICSP_SVNT_HAS_DLL == 1 */
+# define BASICSP_SVNT_Export
+# define BASICSP_SVNT_SINGLETON_DECLARATION(T)
+# define BASICSP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASICSP_SVNT_HAS_DLL == 1 */
+
+// Set BASICSP_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASICSP_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASICSP_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASICSP_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASICSP_SVNT_NTRACE */
+
+#if (BASICSP_SVNT_NTRACE == 1)
+# define BASICSP_SVNT_TRACE(X)
+#else /* (BASICSP_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASICSP_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASICSP_SVNT_NTRACE == 1) */
+
+#endif /* BASICSP_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/EC/EC.cidl b/modules/CIAO/examples/BasicSP/EC/EC.cidl
new file mode 100644
index 00000000000..8e9ff0d5575
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC.cidl
@@ -0,0 +1,21 @@
+//$Id$
+
+#ifndef EC_CIDL
+#define EC_CIDL
+
+#include "EC.idl"
+
+composition session EC_Impl
+{
+ home executor ECHome_Exec
+ {
+ implements BasicSP::ECHome;
+ manages EC_Exec;
+ };
+};
+
+#endif /* EC_CIDL */
+
+
+
+
diff --git a/modules/CIAO/examples/BasicSP/EC/EC.idl b/modules/CIAO/examples/BasicSP/EC/EC.idl
new file mode 100644
index 00000000000..50ad25afd7f
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC.idl
@@ -0,0 +1,41 @@
+// $Id$
+//=============================================================================
+/**
+ * @file EC.idl
+ *
+ * Definition of events, and common interfaces used in the BasicSP module.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_EC_IDL
+#define CIAO_EC_IDL
+
+#include "../BasicSP.idl"
+
+module BasicSP
+{
+ interface trigger
+ {
+ void start ();
+ void stop ();
+ };
+ component EC supports trigger
+ {
+ publishes TimeOut timeout;
+
+ /// The attribute can be configured via the home or the
+ /// component property file.
+ attribute long hertz;
+
+ };
+
+ home ECHome manages EC
+ {
+ // Explicit operations
+ factory new_EC (in long hertz);
+ };
+};
+
+#endif /* CIAO_EC_IDL*/
diff --git a/modules/CIAO/examples/BasicSP/EC/EC.mpc b/modules/CIAO/examples/BasicSP/EC/EC.mpc
new file mode 100644
index 00000000000..d1068ec6e28
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC.mpc
@@ -0,0 +1,113 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i -c EC"
+
+project(EC_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_stub
+
+ sharedname = EC_stub
+
+ idlflags += -Wb,stub_export_macro=EC_STUB_Export
+ idlflags += -Wb,stub_export_include=EC_stub_export.h
+ idlflags += -Wb,skel_export_macro=EC_SVNT_Export
+ idlflags += -Wb,skel_export_include=EC_svnt_export.h
+
+ dynamicflags = EC_STUB_BUILD_DLL
+
+ libs += BasicSP_stub
+
+ IDL_Files {
+ EC.idl
+ }
+
+ Source_Files {
+ ECC.cpp
+ }
+}
+
+project(EC_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += BasicSP_DnC_svnt EC_DnC_stub
+ sharedname = EC_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=EC_SVNT_Export
+ idlflags += -Wb,export_include=EC_svnt_export.h
+
+ dynamicflags = EC_SVNT_BUILD_DLL
+
+ libs += EC_stub BasicSP_stub BasicSP_svnt
+
+ CIDL_Files {
+ EC.cidl
+ }
+
+ IDL_Files {
+ ECE.idl
+ }
+
+ Source_Files {
+ ECEC.cpp
+ ECS.cpp
+ EC_svnt.cpp
+ }
+}
+
+
+project(EC_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += EC_DnC_svnt
+ sharedname = EC_exec
+
+ libs += EC_stub BasicSP_stub BasicSP_svnt EC_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=EC_EXEC_Export
+ idlflags += -Wb,export_include=EC_exec_export.h
+
+ dynamicflags = EC_EXEC_BUILD_DLL
+
+ IDL_Files {
+ ECEI.idl
+ }
+
+ Source_Files {
+ ECEIC.cpp
+ EC_exec.cpp
+ }
+}
+
+
+
+project (EC_DnC_client) : ciao_client_dnc, valuetype {
+ avoids += ace_for_tao
+ exename = client
+ after += EC_DnC_stub
+ libs += EC_stub BasicSP_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
+
+project (EC_DnC_controller) : ciao_events_dnc, valuetype {
+ avoids += ace_for_tao
+ exename = controller
+ after += EC_DnC_stub
+ libs += EC_stub BasicSP_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
diff --git a/modules/CIAO/examples/BasicSP/EC/ECEI.idl b/modules/CIAO/examples/BasicSP/EC/ECEI.idl
new file mode 100644
index 00000000000..9b48d5c74dd
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/ECEI.idl
@@ -0,0 +1,32 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file ECEI.idl
+ *
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+#ifndef CIAO_ECEI_IDL
+#define CIAO_ECEI_IDL
+
+#include "ECE.idl"
+
+module BasicSP
+{
+ /**
+ * @interface EC_Exec
+ *
+ * The actually EC executor need to support
+ * Components::SessionComponent interface. Therefore, we need to
+ * define the component executor interface explicitly here.
+ */
+ local interface EC_Exec : CCM_EC,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* RATEGENEI_IDL */
diff --git a/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp b/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp
new file mode 100644
index 00000000000..89a3a57edfd
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC_exec.cpp
@@ -0,0 +1,293 @@
+// $Id$
+
+#include "EC_exec.h"
+#include "CIAO_common.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+
+//=================================================================
+
+MyImpl::timeout_Handler::timeout_Handler (MyImpl::EC_exec_i *cb)
+ : active_ (0),
+ done_ (0),
+ tid_ (0),
+ pulse_callback_ (cb)
+{
+ // Nothing
+ this->reactor (new ACE_Reactor);
+}
+
+MyImpl::timeout_Handler::~timeout_Handler ()
+{
+ delete this->reactor ();
+ this->reactor (0);
+}
+
+int
+MyImpl::timeout_Handler::open_h ()
+{
+ return this->activate ();
+}
+
+int
+MyImpl::timeout_Handler::close_h ()
+{
+ this->done_ = 1;
+ this->reactor ()->notify ();
+
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "Waiting\n"));
+ return this->wait ();
+}
+
+int
+MyImpl::timeout_Handler::start (CORBA::Long hertz)
+{
+ if (hertz == 0 || this->active_ != 0) // Not valid
+ return -1;
+
+ long usec = 1000000 / hertz;
+
+ this->tid_ = this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec));
+
+ this->active_ = 1;
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::stop (void)
+{
+ if (this->active_ == 0) // Not valid.
+ return -1;
+
+ this->reactor ()->cancel_timer (this);
+
+ this->active_ = 0;
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::active (void)
+{
+ return this->active_;
+}
+
+int
+MyImpl::timeout_Handler::handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("[%x] handle = %d, close_mask = %d\n"),
+ this,
+ handle,
+ close_mask));
+
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::handle_timeout (const ACE_Time_Value &,
+ const void *)
+{
+ this->pulse_callback_->pulse ();
+
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("[%x] with count #%05d timed out at %d.%d!\n"),
+// this,
+// tv.sec (),
+// tv.usec ()));
+
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::svc (void)
+{
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ while (!this->done_)
+ this->reactor ()->handle_events ();
+
+ return 0;
+}
+
+//=================================================================
+
+MyImpl::EC_exec_i::EC_exec_i ()
+ : hertz_ (0),
+ pulser_ (this)
+{
+
+}
+
+MyImpl::EC_exec_i::EC_exec_i (CORBA::Long hz)
+ : hertz_ (hz),
+ pulser_ (this)
+{
+}
+
+MyImpl::EC_exec_i::~EC_exec_i ()
+{
+}
+
+CORBA::Long
+MyImpl::EC_exec_i::hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->hertz_;
+}
+
+void
+MyImpl::EC_exec_i::hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->hertz_ = hertz;
+}
+
+// Operations from supported interface(s)
+
+void
+MyImpl::EC_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->hertz_ == 0 || this->pulser_.active())
+ throw CORBA::BAD_INV_ORDER ();
+
+ // @@ Start the rate generator
+ this->pulser_.start (this->hertz_);
+}
+
+void
+MyImpl::EC_exec_i::stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (! this->pulser_.active ())
+ throw CORBA::BAD_INV_ORDER ();
+
+ // @@ stop the rate generator
+ this->pulser_.stop ();
+}
+
+CORBA::Boolean
+MyImpl::EC_exec_i::active ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->pulser_.active ();
+}
+
+// Operations from Components::SessionComponent
+
+void
+MyImpl::EC_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::set_session_context\n"));
+
+ this->context_ =
+ BasicSP::CCM_EC_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+
+}
+
+void
+MyImpl::EC_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::EC_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_activate\n"));
+
+ this->pulser_.open_h ();
+}
+
+void
+MyImpl::EC_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::EC_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_passivate\n"));
+ this->pulser_.close_h ();
+}
+
+void
+MyImpl::EC_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_remove\n"));
+}
+
+void
+MyImpl::EC_exec_i::pulse (void)
+{
+ try
+ {
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Pushing BasicSP::TimeOut event!\n")));
+
+ BasicSP::TimeOut_var ev = new OBV_BasicSP::TimeOut ();
+
+ this->context_->push_timeout (ev.in ());
+ }
+ catch (const CORBA::Exception&)
+ {
+ // @@ do nothing?
+ }
+
+}
+
+MyImpl::ECHome_exec_i::ECHome_exec_i ()
+{
+}
+
+MyImpl::ECHome_exec_i::~ECHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::ECHome_exec_i::new_EC (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return new MyImpl::EC_exec_i (hertz);
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::ECHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::EC_exec_i ();
+}
+
+
+extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr
+createECHome_Impl (void)
+{
+ return new MyImpl::ECHome_exec_i ();
+}
diff --git a/modules/CIAO/examples/BasicSP/EC/EC_exec.h b/modules/CIAO/examples/BasicSP/EC/EC_exec.h
new file mode 100644
index 00000000000..dfc68f19dce
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC_exec.h
@@ -0,0 +1,187 @@
+// $Id$
+
+//============================================================
+/**
+ * @file EC_exec.h
+ *
+ * Header file for the actualy EC and ECHome component
+ * implementation.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//============================================================
+
+#ifndef EC_EXEC_H
+#define EC_EXEC_H
+
+#include "ECEIC.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+namespace MyImpl
+{
+ // Forward decl.
+ class EC_exec_i;
+
+ /**
+ * @brief Active pulse generater
+ */
+ class timeout_Handler : public ACE_Task_Base
+ {
+ public:
+ // Default constructor
+ timeout_Handler (EC_exec_i *cb);
+ ~timeout_Handler ();
+
+ int open_h (void);
+
+ int close_h (void);
+
+ int start (CORBA::Long hertz);
+
+ int stop (void);
+
+ int active (void);
+
+ // Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ // Called when <Time_Handler> is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ long active_;
+
+ /// Flag to indicate completion of this active object.
+ int done_;
+
+ /// The timer id we are waiting.
+ long tid_;
+
+ EC_exec_i *pulse_callback_;
+
+ ACE_Thread_Manager thr_mgr_;
+ };
+
+ /**
+ * @class EC_exec_i
+ *
+ * EC executor implementation class.
+ */
+ class EC_EXEC_Export EC_exec_i :
+ public virtual BasicSP::EC_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ EC_exec_i ();
+
+ /// Initialize with a default frequency.
+ EC_exec_i (CORBA::Long hz);
+
+ /// Default destructor.
+ ~EC_exec_i ();
+
+ // Attribute operations.
+
+ virtual CORBA::Long hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from supported interface(s)
+
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean active ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by timeout_Handler
+ void pulse (void);
+
+ protected:
+ /// Frequency
+ CORBA::Long hertz_;
+
+ /// Copmponent specific context
+ BasicSP::CCM_EC_Context_var context_;
+
+ /// An active object that actually trigger the generation of
+ /// periodic events.
+ timeout_Handler pulser_;
+ };
+
+ /**
+ * @class ECHome_exec_i
+ *
+ * EC home executor implementation class.
+ */
+ class EC_EXEC_Export ECHome_exec_i :
+ public virtual BasicSP::CCM_ECHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ ECHome_exec_i ();
+
+ /// Default dtor.
+ ~ECHome_exec_i ();
+
+ // Explicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ new_EC (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr
+createECHome_Impl (void);
+
+#endif /* CIAO_ECGEN_EXEC_H */
diff --git a/modules/CIAO/examples/BasicSP/EC/EC_exec_export.h b/modules/CIAO/examples/BasicSP/EC/EC_exec_export.h
new file mode 100644
index 00000000000..6a2d911d430
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s EC_EXEC
+// ------------------------------
+#ifndef EC_EXEC_EXPORT_H
+#define EC_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (EC_EXEC_HAS_DLL)
+# define EC_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && EC_EXEC_HAS_DLL */
+
+#if !defined (EC_EXEC_HAS_DLL)
+# define EC_EXEC_HAS_DLL 1
+#endif /* ! EC_EXEC_HAS_DLL */
+
+#if defined (EC_EXEC_HAS_DLL) && (EC_EXEC_HAS_DLL == 1)
+# if defined (EC_EXEC_BUILD_DLL)
+# define EC_EXEC_Export ACE_Proper_Export_Flag
+# define EC_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EC_EXEC_BUILD_DLL */
+# define EC_EXEC_Export ACE_Proper_Import_Flag
+# define EC_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EC_EXEC_BUILD_DLL */
+#else /* EC_EXEC_HAS_DLL == 1 */
+# define EC_EXEC_Export
+# define EC_EXEC_SINGLETON_DECLARATION(T)
+# define EC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EC_EXEC_HAS_DLL == 1 */
+
+// Set EC_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EC_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EC_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EC_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EC_EXEC_NTRACE */
+
+#if (EC_EXEC_NTRACE == 1)
+# define EC_EXEC_TRACE(X)
+#else /* (EC_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EC_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EC_EXEC_NTRACE == 1) */
+
+#endif /* EC_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/EC/EC_stub_export.h b/modules/CIAO/examples/BasicSP/EC/EC_stub_export.h
new file mode 100644
index 00000000000..cce0970deae
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s EC_STUB
+// ------------------------------
+#ifndef EC_STUB_EXPORT_H
+#define EC_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (EC_STUB_HAS_DLL)
+# define EC_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && EC_STUB_HAS_DLL */
+
+#if !defined (EC_STUB_HAS_DLL)
+# define EC_STUB_HAS_DLL 1
+#endif /* ! EC_STUB_HAS_DLL */
+
+#if defined (EC_STUB_HAS_DLL) && (EC_STUB_HAS_DLL == 1)
+# if defined (EC_STUB_BUILD_DLL)
+# define EC_STUB_Export ACE_Proper_Export_Flag
+# define EC_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EC_STUB_BUILD_DLL */
+# define EC_STUB_Export ACE_Proper_Import_Flag
+# define EC_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EC_STUB_BUILD_DLL */
+#else /* EC_STUB_HAS_DLL == 1 */
+# define EC_STUB_Export
+# define EC_STUB_SINGLETON_DECLARATION(T)
+# define EC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EC_STUB_HAS_DLL == 1 */
+
+// Set EC_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EC_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EC_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EC_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EC_STUB_NTRACE */
+
+#if (EC_STUB_NTRACE == 1)
+# define EC_STUB_TRACE(X)
+#else /* (EC_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EC_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EC_STUB_NTRACE == 1) */
+
+#endif /* EC_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/EC/EC_svnt_export.h b/modules/CIAO/examples/BasicSP/EC/EC_svnt_export.h
new file mode 100644
index 00000000000..90bc3cf9f4a
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/EC_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s EC_SVNT
+// ------------------------------
+#ifndef EC_SVNT_EXPORT_H
+#define EC_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (EC_SVNT_HAS_DLL)
+# define EC_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && EC_SVNT_HAS_DLL */
+
+#if !defined (EC_SVNT_HAS_DLL)
+# define EC_SVNT_HAS_DLL 1
+#endif /* ! EC_SVNT_HAS_DLL */
+
+#if defined (EC_SVNT_HAS_DLL) && (EC_SVNT_HAS_DLL == 1)
+# if defined (EC_SVNT_BUILD_DLL)
+# define EC_SVNT_Export ACE_Proper_Export_Flag
+# define EC_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EC_SVNT_BUILD_DLL */
+# define EC_SVNT_Export ACE_Proper_Import_Flag
+# define EC_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EC_SVNT_BUILD_DLL */
+#else /* EC_SVNT_HAS_DLL == 1 */
+# define EC_SVNT_Export
+# define EC_SVNT_SINGLETON_DECLARATION(T)
+# define EC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EC_SVNT_HAS_DLL == 1 */
+
+// Set EC_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EC_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EC_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EC_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EC_SVNT_NTRACE */
+
+#if (EC_SVNT_NTRACE == 1)
+# define EC_SVNT_TRACE(X)
+#else /* (EC_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EC_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EC_SVNT_NTRACE == 1) */
+
+#endif /* EC_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/BasicSP/EC/README b/modules/CIAO/examples/BasicSP/EC/README
new file mode 100644
index 00000000000..7e032780ab1
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/README
@@ -0,0 +1,9 @@
+/**
+
+@page EC README File
+
+ The EC component. This shouldnt be needed if we had a way to
+integrate EC sugly into CIAO. We dont at the time of writing this
+example on May 12, 2003. Hence this holy hack!
+
+*/
diff --git a/modules/CIAO/examples/BasicSP/EC/client.cpp b/modules/CIAO/examples/BasicSP/EC/client.cpp
new file mode 100644
index 00000000000..62354cbe814
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/client.cpp
@@ -0,0 +1,62 @@
+// $Id$
+
+//==============================================================
+/**
+ * @file client.cpp
+ *
+ * This is a simple client test program that interact with the EC
+ * component implementation. This test uses the explicit factory
+ * operation in the home interface to create a EC component
+ * instance, run it for a while, and destroy the component instance.
+ */
+//==============================================================
+
+#include "ECC.h"
+#include "ace/streams.h"
+#include "ace/OS_NS_unistd.h"
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "");
+
+ // Resolve HomeFinder interface
+
+ CORBA::Object_var obj
+ = orb->string_to_object ("file://ec.ior");
+
+ BasicSP::ECHome_var home
+ = BasicSP::ECHome::_narrow (obj.in ());
+
+ if (CORBA::is_nil (home.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire ECHome objref\n"), -1);
+
+ BasicSP::EC_var pulser
+ = home->create ();
+
+ // Place to plug in the rate
+ pulser->hertz (5);
+
+ pulser->start ();
+
+ ACE_OS::sleep (45);
+
+ pulser->stop ();
+
+ home->remove_component (pulser.in ());
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Uncaught CORBA exception\n"),
+ 1);
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/examples/BasicSP/EC/controller.cpp b/modules/CIAO/examples/BasicSP/EC/controller.cpp
new file mode 100644
index 00000000000..13a5fd6d81e
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/EC/controller.cpp
@@ -0,0 +1,128 @@
+// $Id$
+
+/**
+ * @file controller.cpp
+ *
+ * This program interact with a EC component, and set the rate of the
+ * EC.
+ */
+
+#include "ECC.h"
+#include "ace/Get_Opt.h"
+#include "ace/streams.h"
+
+const char *rategen_ior_ = 0;
+int rate = 2;
+int turn_on = 1;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:r:of");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'o':
+ turn_on = 1;
+ break;
+
+ case 'f':
+ turn_on = 0;
+ break;
+
+ case 'k':
+ rategen_ior_ = get_opts.opt_arg ();
+ break;
+
+ case 'r':
+ rate = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o (Turn on the rate generator)\n"
+ "-f (Turn off the rate generator)\n"
+ "-k <EC IOR> (default is file://rategen.ior)\n"
+ "-r <rate in hertz> (default is 3)\n"
+ "\n",
+ argv [0]),
+ -1);
+ break;
+ }
+ }
+
+ if (rategen_ior_ == 0)
+ {
+ rategen_ior_ = "file://ec.ior";
+ }
+
+ if (rate == 0)
+ {
+ rate = 3;
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ CORBA::Object_var obj =
+ orb->string_to_object (rategen_ior_);
+
+ BasicSP::EC_var pulser
+ = BasicSP::EC::_narrow (obj.in ());
+
+ if (CORBA::is_nil (pulser.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire 'EC' objref\n"),
+ -1);
+ }
+
+ pulser->hertz (rate);
+
+ if (turn_on)
+ {
+ pulser->hertz (rate);
+
+ ACE_DEBUG ((LM_DEBUG, "Start up the Event services\n"));
+
+ pulser->start ();
+ }
+ else
+ {
+ pulser->stop ();
+
+ ACE_DEBUG ((LM_DEBUG, "Stop the ES\n"));
+ }
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Uncaught CORBA exception\n"),
+ 1);
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/examples/BasicSP/README.html b/modules/CIAO/examples/BasicSP/README.html
new file mode 100644
index 00000000000..9bd740215e1
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/README.html
@@ -0,0 +1,70 @@
+<HTML>
+<!-- $Id$ -->
+<BODY>
+
+This document describes how to compile/run the BasicSP (HUDisplay) example with the new DnC implementation.
+
+<H3> Installing </H3>
+
+<UL>
+ <LI> Make sure you have the latest DAnCE framework built.
+ </LI>
+
+ <LI>
+ Get the latest cidl compiler (if you did not compile from source) from:
+ <A href="http://www.dre.vanderbilt.edu/cidlc/binary/">
+ http://www.dre.vanderbilt.edu/cidlc/binary/
+ </A>
+
+ Copy the file into the <code> $CIAO_ROOT/bin </code> directory.
+ Build ACE, TAO, DAnCE before you proceed.
+
+ <br><br>
+ <em>NOTE</em>: <br>
+ While buiding DAnCE, we also suggest that you build the tests in the $CIAO_ROOT/test directory and make sure
+ all the tests run OK before you proceed to try out the BasicSP example or any other DAnCE-based
+ applications. To do this, open the file
+
+ $ACE_ROOT/bin/MakeProjectCreator/config/global.features,
+
+ then change the line from "cidl = 0" to "cidl = 1". <br><br>
+
+ After this, go back to the $CIAO_ROOT/DAnCE directory to generate your workspace/project or makefile by using MPC.<br>
+ After the DAnCE and the tests are build OK, go to the $CIAO_ROOT/DAnCE/tests/NodeApplicationTest directory and make
+ sure all the three perl scripts (run_test.pl, run_test_simple.pl and run_test_ex.pl) run successfully.
+
+ <br><br>
+ </LI>
+
+ <LI> Generate the project/make files for the <em> BasicSP </em> example directory:
+ <UL>
+ <LI> <em> linux: </em> <code> [in $CIAO_ROOT/examples/BasicSP] mwc.pl -type gnuace</code> </LI>
+ <LI> <em> windows: </em> <code> [in %CIAO_ROOT%/examples/BasicSP] mwc.pl -type vc71</code> </LI>
+ </UL>
+ </LI>
+
+
+ <LI> Build the generated solution/make files </LI>
+</UL>
+
+<H3> Running the test </H3>
+
+<UL>
+
+ <LI> Change into the $CIAO_ROOT/examples/BasicSP/descriptors directory Start NodeManagers (NodeDameon) by running <code> basicNodeDaemon.pl </code>
+
+ <LI> Start the execution manager:
+ <code>$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat </code>
+ </LI>
+
+ <LI> Start the executor:
+ <code> $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattern_deploymentplan.cdp -k file://EM.ior </code>
+
+ <LI> After this, components should be deployed successfully. You can run the $CIAO_ROOT/examples/BasicSP/EC/controller to start the application.
+ Please make sure that the component IOR file for the EC component is present when you run this client.
+
+ <BR/>
+ </LI>
+</UL>
+
+</BODY> </HTML>
diff --git a/modules/CIAO/examples/BasicSP/RepoMan_Usage.html b/modules/CIAO/examples/BasicSP/RepoMan_Usage.html
new file mode 100644
index 00000000000..b0854d03b96
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/RepoMan_Usage.html
@@ -0,0 +1,117 @@
+<!-- $Id$ -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Step-By-Step instructions about how to use Repository Manager with DAnCE</title>
+</head>
+
+<body
+ text = "#000000"
+ link = "#000fff"
+ vLink= "#ff0f0f"
+ aLink = "#0000ff"
+ bgColor = "#ffffff">
+
+<hr><h2>Step-By-Step instructions about how to use Repository Manager with DAnCE</h2><hr>
+
+<P>This file explains how to run the BasicSP example using the integrated Repository Manager (RepoMan).<P>
+
+<li>Be sure to add $CIAO_ROOT/HTTP_DOWNLOADED_LIBS into your PATH environment variable. This directory include the
+downloaded component lib files.</li> <P>
+
+<li>If you want to use CORBA <em>naming service</em> to get the RepoMan object reference, then please start naming
+service with multicast mode.</li> <P>
+<PRE>
+ $TAO_ROOT/orbsvcs/Naming_Service/naming_service -m 1
+</PRE>
+
+<li>Build & start JAWS server.</li> <P>
+<OL>
+<li> Be sure to set JAWS_DOCUMENT_ROOT to the installation path of the RepoMan, i.e.,
+$CIAO_ROOT/DAnCE/RepositoryManager.</li>
+<li> Start JAWS:</li>
+<PRE>
+Change the current directory into $ACE_ROOT/apps/JAWS/server
+main
+</PRE>
+</OL>
+
+<li>Start RepoMan. Make sure you have BasicSP or BMClosedED, BMDevice, BMDisplay & EC installed in the
+RepoMan you want to use. Please refer to the README file of RepoMan to get the instructions
+about how to installed Packages into RepoMan.</li> <P>
+<OL>
+<li>Using ior file: </li>
+<PRE>
+Change the current directory into $CIAO_ROOT/DAnCE/RepositoryManager
+RepositoryManagerDaemon -o
+</PRE>
+<li>Using Naming Service:</li>
+<PRE>
+Change the current directory into $CIAO_ROOT/DAnCE/RepositoryManager
+RepositoryManagerDaemon -v [NameofRM]
+</PRE>
+</OL>
+
+<li>Change the current directory into $CIAO_ROOT/examples/BasicSP/descriptors.</li> <P>
+
+<li>Start NodeManagers.</li> <P>
+<PRE>
+ basicNodeDaemon.pl
+</PRE>
+
+<li>Start ExecutionManager.</li> <P>
+<PRE>
+ $CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat
+</PRE>
+
+<li>Start plan_launcher.</li> <P>
+<OL>
+<li>Not using RepoMan:</li>
+<PRE>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp -k file://EM.ior
+</PRE>
+
+<li>Using ior file to get RepoMan, providing the name of one composite componemt:</li>
+<PRE>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp
+-a BasicSP
+-k file://EM.ior
+-l file://$CIAO_ROOT/DAnCE/RepositoryManager/RepositoryManagerDaemon.ior
+</PRE>
+
+<li>Using naming service to get RepoMan, providing the name of one composite componemt:</li>
+<PRE>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp
+-a BasicSP
+-k file://EM.ior
+-v [NameofRM]
+</PRE>
+
+<li>Using naming service to get RepoMan, providing the names of several individual componemts:</li>
+<PRE>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp
+-a BMClosedED+BMDevice+BMDisplay+EC
+-k file://EM.ior
+-v [NameofRM]
+</PRE>
+
+<li>Using naming service to get RepoMan, providing the types of several individual componemts:</li>
+<PRE>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp
+-e IDL:BasicSP/EC:1.0+IDL:BasicSP/BMDisplay:1.0+IDL:BasicSP/BMDevice:1.0+IDL:BasicSP/BMClosedED:1.0
+-k file://EM.ior
+-v [NameofRM]
+</PRE>
+</OL>
+
+<li>Start the application.</li>
+<PRE>
+ $CIAO_ROOT/examples/BasicSP/EC/controller
+</PRE>
+
+<hr><b>Email: </b><a href="mailto:"</a<ADDRESS>shanshan.jiang@vanderbilt.edu</ADDRESS>
+
+</body>
+
+</html>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe.ccd b/modules/CIAO/examples/BasicSP/descriptors/Airframe.ccd
new file mode 100644
index 00000000000..f8a0c2be6bf
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe.ccd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Component</label>
+ <UUID>058178f1-430a-460c-927a-d3c98b4ec860</UUID>
+ <specificType>IDL:BasicSP/BMClosedED:1.0</specificType>
+ <supportedType>IDL:BasicSP/BMClosedED:1.0</supportedType>
+ <port>
+ <name>in_avail</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+ <specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+ <kind>EventConsumer</kind>
+ </port>
+
+ <port>
+ <name>out_avail</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+ <specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+ <kind>EventPublisher</kind>
+ </port>
+
+ <port>
+ <name>dataout</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+ <specificType>IDL:BasicSP/ReadData:1.0</specificType>
+ <kind>Facet</kind>
+ </port>
+
+ <port>
+ <name>datain</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+ <specificType>IDL:BasicSP/ReadData:1.0</specificType>
+ <kind>SimplexReceptacle</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe.cid b/modules/CIAO/examples/BasicSP/descriptors/Airframe.cid
new file mode 100644
index 00000000000..69d19585bee
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Implementation</label>
+ <UUID>66a409c2-fa3a-48ea-be50-482dec4ae7a2</UUID>
+ <implements href="Airframe.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>BMClosedED_Stub</name>
+ <referencedArtifact href="Airframe_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMClosedED_Svnt</name>
+ <referencedArtifact href="Airframe_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMClosedED_Exec</name>
+ <referencedArtifact href="Airframe_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMClosedED.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe.cpd b/modules/CIAO/examples/BasicSP/descriptors/Airframe.cpd
new file mode 100644
index 00000000000..2b8f461581b
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Package </label>
+ <UUID>3c4c5adf-ae85-4b18-a404-a7c4887d6f7d</UUID>
+ <realizes href="Airframe.ccd"/>
+ <implementation>
+ <name>BMClosedED</name>
+ <referencedImplementation href="Airframe.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe_Exec.iad b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Exec.iad
new file mode 100644
index 00000000000..7b70be3fd5f
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Executor Artifact</label>
+ <UUID>0f76b3d3-3d50-4d65-88b1-e26b60b624dd</UUID>
+ <location>BMClosedED_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMClosedED_Stub</name>
+ <referencedArtifact href="Airframe_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMClosedEDHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe_Stub.iad b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Stub.iad
new file mode 100644
index 00000000000..b3e7013091d
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Stub Artifact</label>
+ <UUID>93bbdf7d-d3f7-4227-bb75-b0562ac15b92</UUID>
+ <location>BMClosedED_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Airframe_Svnt.iad b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Svnt.iad
new file mode 100644
index 00000000000..dd086ff5f23
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Airframe_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Airframe Servant Artifact</label>
+ <UUID>88f66272-bdb6-488b-9d95-cfa63317c616</UUID>
+ <location>BMClosedED_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMClosedED_Stub</name>
+ <referencedArtifact href="Airframe_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMClosedEDHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/DeploymentPlan.cdp b/modules/CIAO/examples/BasicSP/descriptors/DeploymentPlan.cdp
new file mode 100644
index 00000000000..f25090018df
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>HUDisplay Deployment Plan</label>
+ <instance xmi:id="BMClosedED_Instance">
+ <name>BMClosedED_Instance</name>
+ <node>AirFrameDevice</node>
+ </instance>
+ <instance xmi:id="BMDevice_Instance">
+ <name>BMDevice_Instance</name>
+ <node>AirFrameDevice</node>
+ </instance>
+ <instance xmi:id="BMDisplay_Instance">
+ <name>BMDisplay_Instance</name>
+ <node>AirFrameDevice</node>
+ </instance>
+ <instance xmi:id="EC_Instance">
+ <name>EC_Instance</name>
+ <node>TimerDevice</node>
+ </instance>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Domain.cdd b/modules/CIAO/examples/BasicSP/descriptors/Domain.cdd
new file mode 100644
index 00000000000..6f5277d799e
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Domain.cdd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Deployment:Domain
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+<label>HUDisplay Domain</label>
+<UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+<node>
+ <name>EC</name>
+ <label>Timer's Node</label>
+</node>
+<node>
+ <name>BMDisplay</name>
+ <label>NavDisplay's Node</label>
+</node>
+<node>
+ <name>BMDevice</name>
+ <label>GPS's Node</label>
+</node>
+<node>
+ <name>BMClosedED</name>
+ <label>Airframe's Node</label>
+</node>
+</Deployment:Domain>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS.ccd b/modules/CIAO/examples/BasicSP/descriptors/GPS.ccd
new file mode 100644
index 00000000000..3d7d99491c8
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS.ccd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>GPS Component</label>
+ <UUID>058178f1-430a-460c-927a-d3c98b4ec860</UUID>
+ <specificType>IDL:BasicSP/BMDevice:1.0</specificType>
+ <supportedType>IDL:BasicSP/BMDevice:1.0</supportedType>
+ <port>
+ <name>timeout</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:BasicSP/TimeOut:1.0</supportedType>
+ <specificType>IDL:BasicSP/TimeOut:1.0</specificType>
+ <kind>EventConsumer</kind>
+ </port>
+
+ <port>
+ <name>data_available</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+ <specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+ <kind>EventPublisher</kind>
+ </port>
+
+ <port>
+ <name>data_read</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+ <specificType>IDL:BasicSP/ReadData:1.0</specificType>
+ <kind>Facet</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS.cid b/modules/CIAO/examples/BasicSP/descriptors/GPS.cid
new file mode 100644
index 00000000000..ba56a63c8f5
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>GPS Implementation</label>
+ <UUID>154cf3cd-1770-4e92-b19b-8c2c921fea38</UUID>
+ <implements href="GPS.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>BMDevice_Stub</name>
+ <referencedArtifact href="GPS_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMDevice_Svnt</name>
+ <referencedArtifact href="GPS_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMDevice_Exec</name>
+ <referencedArtifact href="GPS_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMDevice.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS.cpd b/modules/CIAO/examples/BasicSP/descriptors/GPS.cpd
new file mode 100644
index 00000000000..3f1424967f4
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS.cpd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>GPS System</label>
+
+ <UUID>b55c949b-a9e8-41dd-bbb5-67d8f610dffe</UUID>
+
+ <realizes href="GPS.ccd"/>
+
+ <implementation>
+ <name>GPSImpl</name>
+ <referencedImplementation href="GPS.cid"/>
+ </implementation>
+
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS_Exec.iad b/modules/CIAO/examples/BasicSP/descriptors/GPS_Exec.iad
new file mode 100644
index 00000000000..c6724d39c8a
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>GPS Executor Artifact</label>
+ <UUID>9617ed9a-d127-4797-836a-0a3b3d7d8b12</UUID>
+ <location>BMDevice_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMDevice_Stub</name>
+ <referencedArtifact href="GPS_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMDeviceHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS_Stub.iad b/modules/CIAO/examples/BasicSP/descriptors/GPS_Stub.iad
new file mode 100644
index 00000000000..6968ec7ad74
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>GPS Stub Artifact</label>
+ <UUID>c7264c15-d373-4d01-84ee-d37536599240</UUID>
+ <location>BMDevice_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/GPS_Svnt.iad b/modules/CIAO/examples/BasicSP/descriptors/GPS_Svnt.iad
new file mode 100644
index 00000000000..3f4f592cf3f
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/GPS_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>GPS Servant Artifact</label>
+ <UUID>657440e8-9143-494b-928c-2a3df84e509f</UUID>
+ <location>BMDevice_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMDevice_Stub</name>
+ <referencedArtifact href="GPS_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMDeviceHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cid b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cid
new file mode 100644
index 00000000000..3746e7cae24
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cid
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>HUDisplay Assembly</label>
+ <UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+ <assemblyImpl>
+ <instance xmi:id="a_GPS">
+ <name>BMDevice_Instance</name>
+ <package href="GPS.cpd"/>
+ </instance>
+ <instance xmi:id="a_Airframe">
+ <name>BMClosedED_Instance</name>
+ <package href="Airframe.cpd"/>
+ </instance>
+ <instance xmi:id="a_NavDisplay">
+ <name>BMDisplay_Instance</name>
+ <package href="NavDisplay.cpd"/>
+ </instance>
+ <instance xmi:id="a_Timer">
+ <name>EC_Instance</name>
+ <package href="Timer.cpd"/>
+ </instance>
+ <connection>
+ <name>Timer_NavDisplay</name>
+ <internalEndpoint>
+ <portName>timeout</portName>
+ <instance xmi:idref="a_Timer"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>timeout</portName>
+ <instance xmi:idref="a_GPS"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>GPS_Airframe</name>
+ <internalEndpoint>
+ <portName>data_available</portName>
+ <instance xmi:idref="a_GPS"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>in_avail</portName>
+ <instance xmi:idref="a_Airframe"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>Airframe_GPS</name>
+ <internalEndpoint>
+ <portName>datain</portName>
+ <instance xmi:idref="a_Airframe"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>data_read</portName>
+ <instance xmi:idref="a_GPS"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>Airframe_NavDisplay</name>
+ <internalEndpoint>
+ <portName>data_ready</portName>
+ <instance xmi:idref="a_NavDisplay"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>out_avail</portName>
+ <instance xmi:idref="a_Airframe"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>NavDisplay_Airframe</name>
+ <internalEndpoint>
+ <portName>comp_data</portName>
+ <instance xmi:idref="a_NavDisplay"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>dataout</portName>
+ <instance xmi:idref="a_Airframe"/>
+ </internalEndpoint>
+ </connection>
+ </assemblyImpl>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cpd b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cpd
new file mode 100644
index 00000000000..9be7a1e0ef2
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.cpd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>HUDisplay Package</label>
+ <UUID>823e4287-f53c-4caa-8619-f3dfda4c4998</UUID>
+ <implementation>
+ <name>HUDisplay</name>
+ <referencedImplementation href="HUDisplay.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.pcd b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.pcd
new file mode 100644
index 00000000000..cbcec4e9113
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/HUDisplay.pcd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:PackageConfiguration
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>HUDisplay Configuration for Unix machines</label>
+ <UUID>559d65e8-0407-48c0-a158-dafe21360fef</UUID>
+ <basePackage href="HUDisplay.cpd"/>
+</Deployment:PackageConfiguration>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Libraries.iad b/modules/CIAO/examples/BasicSP/descriptors/Libraries.iad
new file mode 100644
index 00000000000..720a7ce8219
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Libraries.iad
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Common Libraries</label>
+ <UUID>6bae4fcd-c71c-44b4-a0d4-0e4199ce1a49</UUID>
+ <location>$ACE_ROOT/lib/libACE</location>
+ <location>$ACE_ROOT/lib/libTAO</location>
+ <location>$ACE_ROOT/lib/libCIAO_Client</location>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.ccd b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.ccd
new file mode 100644
index 00000000000..175d4067000
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.ccd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NavDisplay Component </label>
+ <UUID>589462ed-e88f-4f96-a7a7-359cdc333d63</UUID>
+ <specificType>IDL:BasicSP/BMDisplay:1.0</specificType>
+ <supportedType>IDL:BasicSP/BMDisplay:1.0</supportedType>
+ <idlFile>BMDisplay.idl</idlFile>
+ <port>
+ <name>data_ready</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+ <specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+ <kind>EventConsumer</kind>
+ </port>
+
+ <port>
+ <name>comp_data</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+ <specificType>IDL:BasicSP/ReadData:1.0</specificType>
+ <kind>SimplexReceptacle</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cid b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cid
new file mode 100644
index 00000000000..30b66fea0b2
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NavDisplay Implementation</label>
+ <UUID>0a52c9de-7852-42e4-aac7-bf478169a21a</UUID>
+ <implements href="NavDisplay.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>BMDisplay_Stub</name>
+ <referencedArtifact href="NavDisplay_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMDisplay_Svnt</name>
+ <referencedArtifact href="NavDisplay_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>BMDisplay_Exec</name>
+ <referencedArtifact href="NavDisplay_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMDisplay.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cpd b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cpd
new file mode 100644
index 00000000000..04862555769
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Navigation Display Package</label>
+ <UUID>a5923ef4-9c62-4458-9fa4-869b53d834ca</UUID>
+ <realizes href="NavDisplay.ccd"/>
+ <implementation>
+ <name>BMDisplay</name>
+ <referencedImplementation href="NavDisplay.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Exec.iad b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Exec.iad
new file mode 100644
index 00000000000..fbd092506a8
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NavDisplay Servant Artifact</label>
+ <UUID>412f8156-7913-4651-9110-f7a3f98c7a83</UUID>
+ <location>BMDisplay_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMDisplay_Stub</name>
+ <referencedArtifact href="NavDisplay_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMDisplayHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Stub.iad b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Stub.iad
new file mode 100644
index 00000000000..e79eeea1f4e
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NavDisplay Stub Artifact</label>
+ <UUID>4d02c22b-768e-4d1a-bf07-76da2f5d1fbf</UUID>
+ <location>BMDisplay_Stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Svnt.iad b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Svnt.iad
new file mode 100644
index 00000000000..c6b0e7a34ea
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NavDisplay_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>NavDisplay Servant Artifact</label>
+ <UUID>ad052b10-0806-43c7-9ccc-2dfeda0e0e03</UUID>
+ <location>BMDisplay_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>BMDisplay_Stub</name>
+ <referencedArtifact href="NavDisplay_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMDisplayHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/NodeManagerMap.dat b/modules/CIAO/examples/BasicSP/descriptors/NodeManagerMap.dat
new file mode 100644
index 00000000000..6f4bbd25734
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+AirFrameDevice corbaloc:iiop:localhost:10000/NodeManager
+TimerDevice corbaloc:iiop:localhost:20000/NodeManager \ No newline at end of file
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer.ccd b/modules/CIAO/examples/BasicSP/descriptors/Timer.ccd
new file mode 100644
index 00000000000..ba44bcf1a00
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer.ccd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Timer Component</label>
+ <UUID>803f8fc7-55de-4a20-81eb-ae951d85b7f4</UUID>
+ <specificType>IDL:BasicSP/EC:1.0</specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <property>
+ <name>hertz</name>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ </property>
+ <port>
+ <name>supports</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/trigger:1.0</supportedType>
+ <kind>Facet</kind>
+ </port>
+ <port>
+ <name>timeout</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:BasicSP/TimeOut:1.0</supportedType>
+ <specificType>IDL:BasicSP/TimeOut:1.0</specificType>
+ <kind>EventPublisher</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer.cid b/modules/CIAO/examples/BasicSP/descriptors/Timer.cid
new file mode 100644
index 00000000000..ac50742d0e3
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer.cid
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Timer Implementation</label>
+ <UUID>789e1be2-703f-4bd3-af50-b400eef91fd0</UUID>
+ <implements href="Timer.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>EC_Stub</name>
+ <referencedArtifact href="Timer_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>EC_Svnt</name>
+ <referencedArtifact href="Timer_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>EC_Exec</name>
+ <referencedArtifact href="Timer_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+ <configProperty>
+ <name>hertz</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>40</long>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EC.ior</string>
+ </value>
+ </value>
+ </configProperty>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer.cpd b/modules/CIAO/examples/BasicSP/descriptors/Timer.cpd
new file mode 100644
index 00000000000..167b1238934
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Timer Package</label>
+ <UUID>07ebf947-2174-4a3b-bd37-bcb92986eaf4</UUID>
+ <realizes href="Timer.ccd"/>
+ <implementation>
+ <name>EC</name>
+ <referencedImplementation href="Timer.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer_Exec.iad b/modules/CIAO/examples/BasicSP/descriptors/Timer_Exec.iad
new file mode 100644
index 00000000000..222fc22bc9e
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Timer Executor Artifact</label>
+ <UUID>5e4f2366-3810-4d4c-a269-5788a525cbe1</UUID>
+ <location>EC_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>EC_Stub</name>
+ <referencedArtifact href="Timer_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createECHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer_Stub.iad b/modules/CIAO/examples/BasicSP/descriptors/Timer_Stub.iad
new file mode 100644
index 00000000000..c9d15dcc82e
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Timer Stub Artifact</label>
+ <UUID>93bbdf7d-d3f7-4227-bb75-b0562ac15b92</UUID>
+ <location>EC_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/Timer_Svnt.iad b/modules/CIAO/examples/BasicSP/descriptors/Timer_Svnt.iad
new file mode 100644
index 00000000000..0082291e27f
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/Timer_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Timer Servant Artifact</label>
+ <UUID>04e4d246-e6eb-4b0e-8e32-60b996497cea</UUID>
+ <location>EC_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>EC_Stub</name>
+ <referencedArtifact href="Timer_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_ECHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/XMI.xsd b/modules/CIAO/examples/BasicSP/descriptors/XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/basicNodeDaemon.pl b/modules/CIAO/examples/BasicSP/descriptors/basicNodeDaemon.pl
new file mode 100755
index 00000000000..42bcff41f14
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/basicNodeDaemon.pl
@@ -0,0 +1,57 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+$iorfile3 = PerlACE::LocalFile ("NodeApp3.ior");
+$iorfile4 = PerlACE::LocalFile ("NodeApp4.ior");
+$iorfile5 = PerlACE::LocalFile ("NodeApp5.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+unlink $iorfile3;
+unlink $iorfile4;
+unlink $iorfile5;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:10000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:20000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV3 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:30000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV4 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:40000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV5 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:50000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+$SV1->Spawn ();
+$SV2->Spawn ();
+$SV3->Spawn ();
+$SV4->Spawn ();
+$SV5->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/BasicSP/descriptors/basicsp.dat b/modules/CIAO/examples/BasicSP/descriptors/basicsp.dat
new file mode 100644
index 00000000000..8bd5e6a72f6
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/basicsp.dat
@@ -0,0 +1,3 @@
+BMClosedED corbaloc:iiop:localhost:10000/NodeManager
+EC corbaloc:iiop:localhost:20000/NodeManager
+
diff --git a/modules/CIAO/examples/BasicSP/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/examples/BasicSP/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..d3aa1197327
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,422 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+ <label>BasicSP-DeploymentPlan</label>
+ <UUID>Test_UUID_0000</UUID>
+ <!-- Exactly one realizes
+ This realizes section may also not be right. -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>timeout</name>
+ <specificType>IDL:BasicSP/TimeOut:1.0</specificType>
+ <supportedType>IDL:BasicSP/TimeOut:1.0</supportedType>
+ <provider>false></provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <kind>EventConsumer</kind>
+ </port>
+ </realizes>
+
+ <implementation id="BasicSP-BMClosedED-mdd">
+ <name>BasicSP-BMClosedED-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>BasicSP-BMClosedED_exec</artifact>
+ <artifact>BasicSP-BMClosedED_stub</artifact>
+ <artifact>BasicSP-BMClosedED_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="BasicSP-BMDevice-mdd">
+ <name>BasicSP-BMDevice-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+
+ <artifact>BasicSP-BMDevice_exec</artifact>
+ <artifact>BasicSP-BMDevice_stub</artifact>
+ <artifact>BasicSP-BMDevice_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="BasicSP-BMDisplay-mdd">
+ <name>BasicSP-BMDisplay-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>BasicSP-BMDisplay_exec</artifact>
+ <artifact>BasicSP-BMDisplay_svnt</artifact>
+ <artifact>BasicSP-BMDisplay_stub</artifact>
+
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="BasicSP-EC-mdd">
+ <name>BasicSP-EC-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+
+ <artifact>BasicSP-EC_stub</artifact>
+ <artifact>BasicSP-EC_svnt</artifact>
+ <artifact>BasicSP-EC_exec</artifact>
+
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="BasicSP-BMClosedED-idd">
+ <name>BasicSP-BMClosedED-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>BasicSP-BMClosedED-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMClosedED.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <configProperty>
+ <name>RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>AirFrameDevice_001</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="BasicSP-BMDevice-idd">
+ <name>BasicSP-BMDevice-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>BasicSP-BMDevice-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMDevice.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="BasicSP-BMDisplay-idd">
+ <name>BasicSP-BMDisplay-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>BasicSP-BMDisplay-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>BMDisplay.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="BasicSP-EC-idd">
+ <name>BasicSP-EC-idd</name>
+ <node>TimerDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>BasicSP-EC-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>EC.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>datain_data_read</name>
+ <internalEndpoint>
+ <portName>data_read</portName>
+ <kind>Facet</kind>
+ <instance>BasicSP-BMDevice-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>datain</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>BasicSP-BMClosedED-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>comp_data_dataout</name>
+ <internalEndpoint>
+ <portName>dataout</portName>
+ <kind>Facet</kind>
+ <instance>BasicSP-BMClosedED-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>comp_data</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>BasicSP-BMDisplay-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>timeout_timeout</name>
+ <internalEndpoint>
+ <portName>timeout</portName>
+ <kind>EventPublisher</kind>
+ <instance>BasicSP-EC-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>timeout</portName>
+ <kind>EventConsumer</kind>
+ <instance>BasicSP-BMDevice-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>in_avail_data_available</name>
+ <internalEndpoint>
+ <portName>data_available</portName>
+ <kind>EventPublisher</kind>
+ <instance>BasicSP-BMDevice-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>in_avail</portName>
+ <kind>EventConsumer</kind>
+ <instance>BasicSP-BMClosedED-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>data_ready_out_avail</name>
+ <internalEndpoint>
+ <portName>out_avail</portName>
+ <kind>EventPublisher</kind>
+ <instance>BasicSP-BMClosedED-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>data_ready</portName>
+ <kind>EventConsumer</kind>
+ <instance>BasicSP-BMDisplay-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <artifact id="BasicSP-BMClosedED_exec">
+ <name>BMClosedED_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>BMClosedED_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMClosedEDHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMClosedED_svnt">
+ <name>BMClosedED_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMClosedED_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMClosedEDHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMClosedED_stub">
+ <name>BMClosedED_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMClosedED_stub</location>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDevice_exec">
+ <name>BMDevice_exec</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDevice_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMDeviceHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDevice_stub">
+ <name>BMDevice_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDevice_stub</location>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDevice_svnt">
+ <name>BMDevice_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDevice_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMDeviceHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDisplay_exec">
+ <name>BMDisplay_exec</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDisplay_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createBMDisplayHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDisplay_svnt">
+ <name>BMDisplay_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDisplay_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_BMDisplayHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-BMDisplay_stub">
+ <name>BMDisplay_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>BMDisplay_stub</location>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-EC_stub">
+ <name>EC_stub</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>EC_stub</location>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-EC_svnt">
+ <name>EC_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>EC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_BasicSP_ECHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="BasicSP-EC_exec">
+ <name>EC_exec</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>EC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createECHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/package.tpd b/modules/CIAO/examples/BasicSP/descriptors/package.tpd
new file mode 100644
index 00000000000..9096beb2c48
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/package.tpd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:TopLevelPackageDescription
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <package href="HUDisplay.pcd"/>
+</Deployment:TopLevelPackageDescription>
diff --git a/modules/CIAO/examples/BasicSP/descriptors/run_test.pl b/modules/CIAO/examples/BasicSP/descriptors/run_test.pl
new file mode 100755
index 00000000000..898e8bca092
--- /dev/null
+++ b/modules/CIAO/examples/BasicSP/descriptors/run_test.pl
@@ -0,0 +1,175 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'CIAO_ROOT'}/DAnCE";
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+$daemons = 5;
+@ports = ( 10000, 20000, 30000, 40000, 50000 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior", "NodeApp3.ior", "NodeApp4.ior", "NodeApp5.ior" );
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "flattern_deploymentplan.cdp";
+$controller_exec = "$CIAO_ROOT/examples/BasicSP/EC/controller";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill ();
+ $NS->TimedWait (1);
+ }
+
+}
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service\n";
+
+if (PerlACE::waitforfile_timed ($nsior, 10) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -d 30";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+sleep (10);
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattened_deploymentplan.cdp -k file://EM.ior");
+
+$E->SpawnWaitKill (60);
+
+sleep (10);
+
+print "Invoking the controller\n";
+$controller = new PerlACE::Process ("$controller_exec", "");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattern_deploymentplan.cdp -k file://EM.ior");
+$E->SpawnWaitKill (3000);
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base.idl b/modules/CIAO/examples/Display/Display_Base/Display_Base.idl
new file mode 100644
index 00000000000..337d4101c2b
--- /dev/null
+++ b/modules/CIAO/examples/Display/Display_Base/Display_Base.idl
@@ -0,0 +1,46 @@
+// $Id$
+
+/**
+ * @file Display_Base.idl
+ *
+ * Definition of events, and common interfaces used in HUDisplay module.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef HUDISPLAY_IDL
+#define HUDISPLAY_IDL
+
+#include <Components.idl>
+
+module HUDisplay
+{
+ /**
+ * @brief interface opmode defines the "operation mode" interface.
+ */
+ interface opmode
+ {
+ void start ();
+ void stop ();
+ boolean active ();
+ };
+
+ /**
+ * @brief a timed event that happens at some fix rate.
+ */
+ eventtype tick
+ {
+ // We could put a timestamp here if desired.
+ };
+
+ /**
+ * @brief interface position allows querying of a coordination.
+ */
+ interface position
+ {
+ long posx ();
+ long posy ();
+ };
+};
+
+#endif /* HUDISPLAY_IDL */
diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc b/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc
new file mode 100644
index 00000000000..0b834017746
--- /dev/null
+++ b/modules/CIAO/examples/Display/Display_Base/Display_Base.mpc
@@ -0,0 +1,52 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Display_Base"
+
+project(Display_Base_stub): ciao_client_dnc {
+
+ sharedname = Display_Base_stub
+ idlflags += -Wb,stub_export_macro=DISPLAY_BASE_STUB_Export \
+ -Wb,stub_export_include=Display_Base_stub_export.h \
+ -Wb,skel_export_macro=DISPLAY_BASE_SKEL_Export \
+ -Wb,skel_export_include=Display_Base_skel_export.h
+ dynamicflags = DISPLAY_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Display_Base.idl
+ }
+
+ Source_Files {
+ Display_BaseC.cpp
+ }
+
+ Header_Files {
+ Display_Base_stub_export.h
+ }
+}
+
+project(Display_Base_skel) : ciao_servant_dnc {
+ after += Display_Base_stub
+ sharedname = Display_Base_skel
+ libs += Display_Base_stub
+
+ idlflags += -Wb,stub_export_macro=DISPLAY_BASE_STUB_Export \
+ -Wb,stub_export_include=Display_Base_stub_export.h \
+ -Wb,skel_export_macro=DISPLAY_BASE_SKEL_Export \
+ -Wb,skel_export_include=Display_Base_skel_export.h
+ dynamicflags = DISPLAY_BASE_SKEL_BUILD_DLL
+
+ IDL_Files {
+ Display_Base.idl
+ }
+
+ Source_Files {
+ Display_BaseS.cpp
+ }
+
+ Header_Files {
+ Display_Base_skel_export.h
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base_skel_export.h b/modules/CIAO/examples/Display/Display_Base/Display_Base_skel_export.h
new file mode 100644
index 00000000000..2dc444fe8e0
--- /dev/null
+++ b/modules/CIAO/examples/Display/Display_Base/Display_Base_skel_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISPLAY_BASE_SVNT
+// ------------------------------
+#ifndef DISPLAY_BASE_SKEL_EXPORT_H
+#define DISPLAY_BASE_SKEL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DISPLAY_BASE_SKEL_HAS_DLL)
+# define DISPLAY_BASE_SKEL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DISPLAY_BASE_SKEL_HAS_DLL */
+
+#if !defined (DISPLAY_BASE_SKEL_HAS_DLL)
+# define DISPLAY_BASE_SKEL_HAS_DLL 1
+#endif /* ! DISPLAY_BASE_SKEL_HAS_DLL */
+
+#if defined (DISPLAY_BASE_SKEL_HAS_DLL) && (DISPLAY_BASE_SKEL_HAS_DLL == 1)
+# if defined (DISPLAY_BASE_SKEL_BUILD_DLL)
+# define DISPLAY_BASE_SKEL_Export ACE_Proper_Export_Flag
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISPLAY_BASE_SKEL_BUILD_DLL */
+# define DISPLAY_BASE_SKEL_Export ACE_Proper_Import_Flag
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISPLAY_BASE_SKEL_BUILD_DLL */
+#else /* DISPLAY_BASE_SKEL_HAS_DLL == 1 */
+# define DISPLAY_BASE_SKEL_Export
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARATION(T)
+# define DISPLAY_BASE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISPLAY_BASE_SKEL_HAS_DLL == 1 */
+
+// Set DISPLAY_BASE_SKEL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISPLAY_BASE_SKEL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISPLAY_BASE_SKEL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISPLAY_BASE_SKEL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISPLAY_BASE_SKEL_NTRACE */
+
+#if (DISPLAY_BASE_SKEL_NTRACE == 1)
+# define DISPLAY_BASE_SKEL_TRACE(X)
+#else /* (DISPLAY_BASE_SKEL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISPLAY_BASE_SKEL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISPLAY_BASE_SKEL_NTRACE == 1) */
+
+#endif /* DISPLAY_BASE_SKEL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/Display_Base/Display_Base_stub_export.h b/modules/CIAO/examples/Display/Display_Base/Display_Base_stub_export.h
new file mode 100644
index 00000000000..e5e412c22a6
--- /dev/null
+++ b/modules/CIAO/examples/Display/Display_Base/Display_Base_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISPLAY_BASE_STUB
+// ------------------------------
+#ifndef DISPLAY_BASE_STUB_EXPORT_H
+#define DISPLAY_BASE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (DISPLAY_BASE_STUB_HAS_DLL)
+# define DISPLAY_BASE_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && DISPLAY_BASE_STUB_HAS_DLL */
+
+#if !defined (DISPLAY_BASE_STUB_HAS_DLL)
+# define DISPLAY_BASE_STUB_HAS_DLL 1
+#endif /* ! DISPLAY_BASE_STUB_HAS_DLL */
+
+#if defined (DISPLAY_BASE_STUB_HAS_DLL) && (DISPLAY_BASE_STUB_HAS_DLL == 1)
+# if defined (DISPLAY_BASE_STUB_BUILD_DLL)
+# define DISPLAY_BASE_STUB_Export ACE_Proper_Export_Flag
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISPLAY_BASE_STUB_BUILD_DLL */
+# define DISPLAY_BASE_STUB_Export ACE_Proper_Import_Flag
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISPLAY_BASE_STUB_BUILD_DLL */
+#else /* DISPLAY_BASE_STUB_HAS_DLL == 1 */
+# define DISPLAY_BASE_STUB_Export
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARATION(T)
+# define DISPLAY_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISPLAY_BASE_STUB_HAS_DLL == 1 */
+
+// Set DISPLAY_BASE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISPLAY_BASE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISPLAY_BASE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISPLAY_BASE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISPLAY_BASE_STUB_NTRACE */
+
+#if (DISPLAY_BASE_STUB_NTRACE == 1)
+# define DISPLAY_BASE_STUB_TRACE(X)
+#else /* (DISPLAY_BASE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISPLAY_BASE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISPLAY_BASE_STUB_NTRACE == 1) */
+
+#endif /* DISPLAY_BASE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/GPS/GPS.cidl b/modules/CIAO/examples/Display/GPS/GPS.cidl
new file mode 100644
index 00000000000..7fe6e4dbd64
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS.cidl
@@ -0,0 +1,19 @@
+// $Id$ -*- IDL -*-
+
+#ifndef GPS_CIDL
+#define GPS_CIDL
+
+#include "GPS.idl"
+
+composition session GPS_Impl
+{
+ home executor GPSHome_exec
+ {
+ implements HUDisplay::GPSHome;
+ manages GPS_exec;
+ };
+};
+
+#endif /* GPS_CIDL */
+
+//$Id$
diff --git a/modules/CIAO/examples/Display/GPS/GPS.idl b/modules/CIAO/examples/Display/GPS/GPS.idl
new file mode 100644
index 00000000000..a3a437d98db
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file GPS.idl
+ *
+ * Definition of the GPS component.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+#ifndef GPS_IDL
+#define GPS_IDL
+
+#include "../Display_Base/Display_Base.idl"
+
+module HUDisplay
+{
+ component GPS
+ {
+ provides position MyLocation;
+ publishes tick Ready;
+ consumes tick Refresh;
+ };
+
+ home GPSHome manages GPS
+ {
+ };
+};
+
+#endif /* GPS_IDL */
diff --git a/modules/CIAO/examples/Display/GPS/GPS.mpc b/modules/CIAO/examples/Display/GPS/GPS.mpc
new file mode 100644
index 00000000000..1846215380e
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS.mpc
@@ -0,0 +1,83 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Display_Base GPS"
+
+project(Display_Base_GPS_stub): ciao_client_dnc {
+ after += Display_Base_stub
+ sharedname = GPS_stub
+ idlflags += -St \
+ -Wb,stub_export_macro=GPS_STUB_Export \
+ -Wb,stub_export_include=GPS_stub_export.h \
+ -Wb,skel_export_macro=GPS_SVNT_Export \
+ -Wb,skel_export_include=GPS_svnt_export.h
+ dynamicflags = GPS_STUB_BUILD_DLL
+ libs += Display_Base_stub
+
+ IDL_Files {
+ GPS.idl
+ }
+
+ Source_Files {
+ GPSC.cpp
+ }
+
+ Header_Files {
+ GPS_stub_export.h
+ }
+}
+
+project(Display_Base_GPS_svnt) : ciao_servant_dnc {
+ after += Display_Base_skel Display_Base_GPS_stub
+ sharedname = GPS_svnt
+ libs += GPS_stub Display_Base_stub Display_Base_skel
+
+ idlflags += -SS -St \
+ -Wb,export_macro=GPS_SVNT_Export \
+ -Wb,export_include=GPS_svnt_export.h
+ dynamicflags = GPS_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ GPS.cidl
+ }
+
+ IDL_Files {
+ GPSE.idl
+ }
+
+ Source_Files {
+ GPSEC.cpp
+ GPSS.cpp
+ GPS_svnt.cpp
+ }
+
+ Header_Files {
+ GPS_svnt_export.h
+ }
+}
+
+
+project(Display_Base_GPS_exec) : ciao_component_dnc {
+ after += Display_Base_GPS_svnt
+ sharedname = GPS_exec
+ libs += GPS_stub GPS_svnt Display_Base_stub Display_Base_skel
+
+ idlflags += -SS -St \
+ -Wb,export_macro=GPS_EXEC_Export \
+ -Wb,export_include=GPS_exec_export.h
+ dynamicflags = GPS_EXEC_BUILD_DLL
+
+ IDL_Files {
+ GPSEI.idl
+ }
+
+ Source_Files {
+ GPSEIC.cpp
+ GPS_exec.cpp
+ }
+
+ Header_Files {
+ GPS_exec_export.h
+ }
+}
+
+
+
diff --git a/modules/CIAO/examples/Display/GPS/GPSEI.idl b/modules/CIAO/examples/Display/GPS/GPSEI.idl
new file mode 100644
index 00000000000..d7604931f58
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPSEI.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+/**
+ * @file GPSEI.idl
+ *
+ * Definition of the GPS component implementation.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef GPSEI_IDL
+#define GPSEI_IDL
+
+#include "GPSE.idl"
+
+module HUDisplay
+{
+ /**
+ * @interface GPS_Exec
+ *
+ * The actually GPS executor inherits from both CCM_GPS and
+ * CCM_position interfaces as a monolithic implementation.
+ */
+ local interface GPS_Exec :
+ CCM_GPS,
+ CCM_position,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* GPSEI_IDL */
diff --git a/modules/CIAO/examples/Display/GPS/GPS_exec.cpp b/modules/CIAO/examples/Display/GPS/GPS_exec.cpp
new file mode 100644
index 00000000000..f86e6226bad
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_exec.cpp
@@ -0,0 +1,166 @@
+// $Id$
+
+#include "GPS_exec.h"
+#include "CIAO_common.h"
+
+#include "ace/OS_NS_time.h"
+
+#define DISPLACEMENT 256
+
+// Operations from HUDisplay::position
+CORBA::Long
+MyImpl::Position_Impl::posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return component_.posx();
+}
+
+CORBA::Long
+MyImpl::Position_Impl::posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return component_.posy();
+}
+
+
+/// Default constructor.
+MyImpl::GPS_exec_i::GPS_exec_i ()
+{
+ ACE_OS::srand ((u_int) ACE_OS::time ());
+ this->positionx_ = ACE_OS::rand ();
+ this->positiony_ = ACE_OS::rand ();
+}
+
+/// Default destructor.
+MyImpl::GPS_exec_i::~GPS_exec_i ()
+{
+}
+
+// Operations from HUDisplay::GPS
+ HUDisplay::CCM_position_ptr
+ MyImpl::GPS_exec_i::get_MyLocation ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+// ACE_DEBUG ((LM_DEBUG,
+// "GPS_exec::get_MyLocation called\n "));
+ return (new Position_Impl (*this));
+ }
+
+void
+MyImpl::GPS_exec_i::push_Refresh (HUDisplay::tick *)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("GPS: Received Refresh Event\n")));
+
+ // Refresh position
+ this->positionx_ += ACE_OS::rand () % DISPLACEMENT - (DISPLACEMENT/2);
+ this->positiony_ += ACE_OS::rand () % DISPLACEMENT - (DISPLACEMENT/2);
+
+ // Nitify others
+ HUDisplay::tick_var event = new OBV_HUDisplay::tick;
+
+ this->context_->push_Ready (event);
+}
+
+CORBA::Long
+MyImpl::GPS_exec_i::posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->positionx_;
+}
+
+CORBA::Long
+MyImpl::GPS_exec_i::posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->positiony_;
+}
+
+
+// Operations from Components::SessionComponent
+void
+MyImpl::GPS_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::set_session_context\n"));
+
+ this->context_ =
+ HUDisplay::CCM_GPS_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::GPS_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::GPS_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_activate\n"));
+}
+
+void
+MyImpl::GPS_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::GPS_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::GPS_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_exec_i::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::GPSHome_exec_i::GPSHome_exec_i ()
+{
+}
+
+/// Default dtor.
+MyImpl::GPSHome_exec_i::~GPSHome_exec_i ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::GPSHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::GPS_exec_i;
+}
+
+
+extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr
+createGPSHome_Impl (void)
+{
+ return new MyImpl::GPSHome_exec_i();
+}
diff --git a/modules/CIAO/examples/Display/GPS/GPS_exec.h b/modules/CIAO/examples/Display/GPS/GPS_exec.h
new file mode 100644
index 00000000000..d4b8a0b777e
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_exec.h
@@ -0,0 +1,140 @@
+/**
+ * @file GPS_exec.h
+ * $Id$
+ * Header file for the GPS component implementation.
+ *
+ */
+
+#ifndef GPS_EXEC_H
+#define GPS_EXEC_H
+
+#include "GPS_exec_export.h"
+#include "GPSEC.h"
+#include "CIAO_common.h"
+#include "ace/OS_NS_time.h"
+#include "tao/LocalObject.h"
+
+#define DISPLACEMENT 256
+
+namespace MyImpl
+{
+ /**
+ * @class GPS_exec_i
+ *
+ * GPS executor implementation class.
+ */
+ class GPS_EXEC_Export GPS_exec_i :
+ public virtual CIDL_GPS_Impl::GPS_exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ GPS_exec_i ();
+
+ /// Default destructor.
+ ~GPS_exec_i ();
+
+ // Operations from HUDisplay::GPS
+ HUDisplay::CCM_position_ptr get_MyLocation ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void push_Refresh (HUDisplay::tick *)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from HUDisplay::position
+ CORBA::Long posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::Long posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+ // Component specific context
+ HUDisplay::CCM_GPS_Context_var context_;
+
+ private:
+ CORBA::Long positionx_, positiony_;
+ };
+
+
+ /**
+ * @class GPSHome_exec_i
+ *
+ * GPS home executor implementation class.
+ */
+ class GPS_EXEC_Export GPSHome_exec_i :
+ public virtual HUDisplay::CCM_GPSHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ GPSHome_exec_i ();
+
+ /// Default dtor.
+ ~GPSHome_exec_i ();
+
+ // Explicit home operations
+/* virtual ::Components::EnterpriseComponent_ptr */
+/* new_GPS () */
+/* ACE_THROW_SPEC ((CORBA::SystemException)); */
+
+ // Implicit home operations
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+
+ class Position_Impl : public virtual HUDisplay::CCM_position,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Position_Impl (GPS_exec_i& component)
+ : component_ (component)
+ {
+ }
+
+ // Operations from HUDisplay::position
+ CORBA::Long posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::Long posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ GPS_exec_i& component_;
+ };
+
+}
+
+extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr
+createGPSHome_Impl (void);
+
+#endif /* GPS_EXEC_H */
diff --git a/modules/CIAO/examples/Display/GPS/GPS_exec_export.h b/modules/CIAO/examples/Display/GPS/GPS_exec_export.h
new file mode 100644
index 00000000000..0a8c3fdec7f
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl GPS_EXEC
+// ------------------------------
+#ifndef GPS_EXEC_EXPORT_H
+#define GPS_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (GPS_EXEC_HAS_DLL)
+# define GPS_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && GPS_EXEC_HAS_DLL */
+
+#if !defined (GPS_EXEC_HAS_DLL)
+# define GPS_EXEC_HAS_DLL 1
+#endif /* ! GPS_EXEC_HAS_DLL */
+
+#if defined (GPS_EXEC_HAS_DLL) && (GPS_EXEC_HAS_DLL == 1)
+# if defined (GPS_EXEC_BUILD_DLL)
+# define GPS_EXEC_Export ACE_Proper_Export_Flag
+# define GPS_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define GPS_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* GPS_EXEC_BUILD_DLL */
+# define GPS_EXEC_Export ACE_Proper_Import_Flag
+# define GPS_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define GPS_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* GPS_EXEC_BUILD_DLL */
+#else /* GPS_EXEC_HAS_DLL == 1 */
+# define GPS_EXEC_Export
+# define GPS_EXEC_SINGLETON_DECLARATION(T)
+# define GPS_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* GPS_EXEC_HAS_DLL == 1 */
+
+// Set GPS_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (GPS_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define GPS_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define GPS_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !GPS_EXEC_NTRACE */
+
+#if (GPS_EXEC_NTRACE == 1)
+# define GPS_EXEC_TRACE(X)
+#else /* (GPS_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define GPS_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (GPS_EXEC_NTRACE == 1) */
+
+#endif /* GPS_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/GPS/GPS_stub_export.h b/modules/CIAO/examples/Display/GPS/GPS_stub_export.h
new file mode 100644
index 00000000000..814897bfc05
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl GPS_STUB
+// ------------------------------
+#ifndef GPS_STUB_EXPORT_H
+#define GPS_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (GPS_STUB_HAS_DLL)
+# define GPS_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && GPS_STUB_HAS_DLL */
+
+#if !defined (GPS_STUB_HAS_DLL)
+# define GPS_STUB_HAS_DLL 1
+#endif /* ! GPS_STUB_HAS_DLL */
+
+#if defined (GPS_STUB_HAS_DLL) && (GPS_STUB_HAS_DLL == 1)
+# if defined (GPS_STUB_BUILD_DLL)
+# define GPS_STUB_Export ACE_Proper_Export_Flag
+# define GPS_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define GPS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* GPS_STUB_BUILD_DLL */
+# define GPS_STUB_Export ACE_Proper_Import_Flag
+# define GPS_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define GPS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* GPS_STUB_BUILD_DLL */
+#else /* GPS_STUB_HAS_DLL == 1 */
+# define GPS_STUB_Export
+# define GPS_STUB_SINGLETON_DECLARATION(T)
+# define GPS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* GPS_STUB_HAS_DLL == 1 */
+
+// Set GPS_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (GPS_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define GPS_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define GPS_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !GPS_STUB_NTRACE */
+
+#if (GPS_STUB_NTRACE == 1)
+# define GPS_STUB_TRACE(X)
+#else /* (GPS_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define GPS_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (GPS_STUB_NTRACE == 1) */
+
+#endif /* GPS_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/GPS/GPS_svnt_export.h b/modules/CIAO/examples/Display/GPS/GPS_svnt_export.h
new file mode 100644
index 00000000000..d601c703018
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl GPS_SVNT
+// ------------------------------
+#ifndef GPS_SVNT_EXPORT_H
+#define GPS_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (GPS_SVNT_HAS_DLL)
+# define GPS_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && GPS_SVNT_HAS_DLL */
+
+#if !defined (GPS_SVNT_HAS_DLL)
+# define GPS_SVNT_HAS_DLL 1
+#endif /* ! GPS_SVNT_HAS_DLL */
+
+#if defined (GPS_SVNT_HAS_DLL) && (GPS_SVNT_HAS_DLL == 1)
+# if defined (GPS_SVNT_BUILD_DLL)
+# define GPS_SVNT_Export ACE_Proper_Export_Flag
+# define GPS_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define GPS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* GPS_SVNT_BUILD_DLL */
+# define GPS_SVNT_Export ACE_Proper_Import_Flag
+# define GPS_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define GPS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* GPS_SVNT_BUILD_DLL */
+#else /* GPS_SVNT_HAS_DLL == 1 */
+# define GPS_SVNT_Export
+# define GPS_SVNT_SINGLETON_DECLARATION(T)
+# define GPS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* GPS_SVNT_HAS_DLL == 1 */
+
+// Set GPS_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (GPS_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define GPS_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define GPS_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !GPS_SVNT_NTRACE */
+
+#if (GPS_SVNT_NTRACE == 1)
+# define GPS_SVNT_TRACE(X)
+#else /* (GPS_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define GPS_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (GPS_SVNT_NTRACE == 1) */
+
+#endif /* GPS_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp
new file mode 100644
index 00000000000..98b52c9ac74
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.cpp
@@ -0,0 +1,155 @@
+// $Id$
+
+#include "GPS_tracing_exec.h"
+#include "CIAO_common.h"
+
+#include "ace/OS_NS_time.h"
+
+#define DISPLACEMENT 256
+
+/// Default constructor.
+MyImpl::GPS_tracing_exec_i::GPS_tracing_exec_i () : dx_(1), dy_(1)
+{
+ ACE_OS::srand ((u_int) ACE_OS::time ());
+
+ this->positionx_ = 20;
+ this->positiony_ = 25;
+}
+
+/// Default destructor.
+MyImpl::GPS_tracing_exec_i::~GPS_tracing_exec_i ()
+{
+}
+
+// Operations from HUDisplay::GPS
+
+HUDisplay::CCM_position_ptr
+MyImpl::GPS_tracing_exec_i::get_MyLocation ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return HUDisplay::CCM_position::_duplicate (this);
+}
+
+void
+MyImpl::GPS_tracing_exec_i::push_Refresh (HUDisplay::tick *)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ // Refresh position
+ if(this->positionx_ > 500) this->dx_ = -1;
+ if(this->positionx_ < 10) this->dx_ = 1;
+ if(this->positiony_ > 300) this->dy_ = -1;
+ if(this->positiony_ < 10) this->dy_ = 1;
+
+ this->positionx_ += this->dx_;
+ this->positiony_ += this->dy_;
+
+ // Nitify others
+ HUDisplay::tick_var event = new OBV_HUDisplay::tick;
+
+ this->context_->push_Ready (event);
+}
+
+// Operations from HUDisplay::position
+
+CORBA::Long
+MyImpl::GPS_tracing_exec_i::posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->positionx_;
+}
+
+CORBA::Long
+MyImpl::GPS_tracing_exec_i::posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->positiony_;
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::GPS_tracing_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::GPS_tracing_exec_i::set_session_context\n"));
+
+ this->context_ =
+ HUDisplay::CCM_GPS_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::GPS_tracing_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::GPS_tracing_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_activate\n"));
+}
+
+void
+MyImpl::GPS_tracing_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::GPS_tracing_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::GPS_tracing_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::GPS_tracing_exec_i::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::GPSHome_tracing_exec_i::GPSHome_tracing_exec_i ()
+{
+}
+
+/// Default dtor.
+MyImpl::GPSHome_tracing_exec_i::~GPSHome_tracing_exec_i ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::GPSHome_tracing_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::GPS_tracing_exec_i;
+}
+
+
+extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr
+createGPSHome_Tracing_Impl (void)
+{
+ return new MyImpl::GPSHome_tracing_exec_i;
+}
diff --git a/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h
new file mode 100644
index 00000000000..c6b67a34767
--- /dev/null
+++ b/modules/CIAO/examples/Display/GPS/GPS_tracing_exec.h
@@ -0,0 +1,133 @@
+// $Id$
+
+/**
+ * @file GPS_tracing_exec.h
+ *
+ * Header file for the actual GPS and GPSHome component
+ * implementations.
+ *
+ * @author Nanbor Wang <nanbor@cse.wustl.edu>
+ */
+
+#ifndef GPS_TRACING_EXEC_H
+#define GPS_TRACING_EXEC_H
+
+#include "GPSEIC.h"
+#include "tao/LocalObject.h"
+
+namespace MyImpl
+{
+ /**
+ * @class GPS_tracing_exec_i
+ *
+ * RateGen executor implementation class.
+ */
+ class GPS_EXEC_Export GPS_tracing_exec_i :
+ public virtual HUDisplay::GPS_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ GPS_tracing_exec_i ();
+
+ /// Default destructor.
+ ~GPS_tracing_exec_i ();
+
+ // Operations from HUDisplay::GPS
+
+ virtual HUDisplay::CCM_position_ptr
+ get_MyLocation ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ push_Refresh (HUDisplay::tick *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from HUDisplay::position
+
+ virtual CORBA::Long
+ posx ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Long
+ posy ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ /// Current GPS reading.
+ CORBA::Long positionx_;
+ CORBA::Long positiony_;
+
+ /// Delta amounts to emulate the position shift of each reading.
+ int dx_;
+ int dy_;
+
+ /// Copmponent specific context
+ HUDisplay::CCM_GPS_Context_var context_;
+ };
+
+ /**
+ * @class GPSHome_tracing_exec_i
+ *
+ * GPS home executor implementation class.
+ */
+ class GPS_EXEC_Export GPSHome_tracing_exec_i :
+ public virtual HUDisplay::CCM_GPSHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ GPSHome_tracing_exec_i ();
+
+ /// Default dtor.
+ ~GPSHome_tracing_exec_i ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+// Executor DLL entry point. CIAO's deployment and assembly framework
+// invokes this function on the resulting DLL to get the home executor.
+extern "C" GPS_EXEC_Export ::Components::HomeExecutorBase_ptr
+createGPSHome_Tracing_Impl (void);
+
+#endif /* GPS_TRACING_EXEC_H */
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay.cidl b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.cidl
new file mode 100644
index 00000000000..5a277fe50f5
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.cidl
@@ -0,0 +1,12 @@
+// $Id$ -*- IDL -*-
+
+#include "NavDisplay.idl"
+
+composition session NavDisplay_Impl
+{
+ home executor NavDisplayHome_exec
+ {
+ implements HUDisplay::NavDisplayHome;
+ manages NavDisplay_exec;
+ };
+};
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl
new file mode 100644
index 00000000000..a786f7f9d06
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+/**
+ * @file NavDisplay.idl
+ *
+ * Definition of the navigation display component.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef NAVDISPLAY_IDL
+#define NAVDISPLAY_IDL
+
+#include "../Display_Base/Display_Base.idl"
+
+module HUDisplay
+{
+ component NavDisplay
+ {
+ consumes tick Refresh;
+ uses position GPSLocation;
+ };
+
+ home NavDisplayHome manages NavDisplay
+ {
+ };
+};
+
+#endif /* NAVDISPLAY_IDL */
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc
new file mode 100644
index 00000000000..a3ee533d6f5
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay.mpc
@@ -0,0 +1,83 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Display_Base NavDisplay"
+
+project(Display_Base_NavDisplay_stub): ciao_client_dnc {
+ after += Display_Base_stub
+ sharedname = NavDisplay_stub
+ libs += Display_Base_stub
+ idlflags += -St \
+ -Wb,stub_export_macro=NAVDISPLAY_STUB_Export \
+ -Wb,stub_export_include=NavDisplay_stub_export.h \
+ -Wb,skel_export_macro=NAVDISPLAY_SVNT_Export \
+ -Wb,skel_export_include=NavDisplay_svnt_export.h
+ dynamicflags = NAVDISPLAY_STUB_BUILD_DLL
+
+ IDL_Files {
+ NavDisplay.idl
+ }
+
+ Source_Files {
+ NavDisplayC.cpp
+ }
+
+ Header_Files {
+ NavDisplay_stub_export.h
+ }
+}
+
+project(Display_Base_NavDisplay_svnt) : ciao_servant_dnc {
+ after += Display_Base_skel Display_Base_NavDisplay_stub
+ sharedname = NavDisplay_svnt
+ libs += NavDisplay_stub \
+ Display_Base_stub \
+ Display_Base_skel
+
+ idlflags += -SS -St \
+ -Wb,export_macro=NAVDISPLAY_SVNT_Export \
+ -Wb,export_include=NavDisplay_svnt_export.h
+ dynamicflags = NAVDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ NavDisplay.cidl
+ }
+
+ IDL_Files {
+ NavDisplayE.idl
+ }
+
+ Source_Files {
+ NavDisplayEC.cpp
+ NavDisplayS.cpp
+ NavDisplay_svnt.cpp
+ }
+
+ Header_Files {
+ NavDisplay_svnt_export.h
+ }
+}
+
+
+project(Display_Base_NavDisplay_exec) : ciao_component_dnc {
+ after += Display_Base_NavDisplay_svnt
+ sharedname = NavDisplay_exec
+ libs += NavDisplay_stub \
+ NavDisplay_svnt \
+ Display_Base_stub \
+ Display_Base_skel
+
+ dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ NavDisplay_exec.cpp
+ }
+
+ Header_Files {
+ NavDisplay_exec_export.h
+ }
+}
+
+
+
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp
new file mode 100644
index 00000000000..06d1d8c213b
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.cpp
@@ -0,0 +1,148 @@
+// $Id$
+
+#include "ciao/CIAO_common.h"
+#include "NavDisplay_exec.h"
+
+/// Default constructor.
+MyImpl::NavDisplay_exec_impl::NavDisplay_exec_impl ()
+{
+}
+
+/// Default destructor.
+MyImpl::NavDisplay_exec_impl::~NavDisplay_exec_impl ()
+{
+}
+
+// Operations from HUDisplay::NavDisplay
+
+void
+MyImpl::NavDisplay_exec_impl::push_Refresh (HUDisplay::tick *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ACE_UNUSED_ARG (ev);
+
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("NAVDISPLAY: Received Refresh Event\n")));
+
+ // Refresh position
+ HUDisplay::position_var loc =
+ this->context_->get_connection_GPSLocation ();
+
+ if (CORBA::is_nil (loc.in ()))
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ CORBA::Long x = loc->posx () % 500;
+
+ CORBA::Long y = loc->posy () % 300;
+
+ ACE_DEBUG ((LM_DEBUG, "NAVDISPLAY: Current Location is: (%d, %d)\n",
+ x,
+ y));
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::NavDisplay_exec_impl::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplay_exec_impl::set_session_context\n"));
+ }
+
+ this->context_ =
+ HUDisplay::CCM_NavDisplay_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::NavDisplay_exec_impl::ciao_preactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplay_exec_impl::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplay_exec_impl::ccm_activate\n"));
+ }
+}
+
+void
+MyImpl::NavDisplay_exec_impl::ciao_postactivate (
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplay_exec_impl::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplay_exec_impl::ccm_passivate\n"));
+ }
+}
+
+void
+MyImpl::NavDisplay_exec_impl::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplay_exec_impl::ccm_remove\n"));
+ }
+}
+
+/// Default ctor.
+MyImpl::NavDisplayHome_exec_impl::NavDisplayHome_exec_impl ()
+{
+}
+
+/// Default dtor.
+MyImpl::NavDisplayHome_exec_impl::~NavDisplayHome_exec_impl ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::NavDisplayHome_exec_impl::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::NavDisplay_exec_impl;
+}
+
+
+extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createNavDisplayHome_Impl (void)
+{
+ return new MyImpl::NavDisplayHome_exec_impl;
+}
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h
new file mode 100644
index 00000000000..3c5ca68d40d
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec.h
@@ -0,0 +1,109 @@
+// $Id$
+
+/**
+ * @file NavDisplay_exec.h
+ *
+ * Header file for the actual NavDisplay and NavDisplayHome component
+ * implementations.
+ *
+ * @author Nanbor Wang <nanbor@cse.wustl.edu>
+ */
+
+#ifndef NAVDISPLAY_EXEC_H
+#define NAVDISPLAY_EXEC_H
+
+#include "NavDisplayEC.h"
+#include "NavDisplay_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace MyImpl
+{
+ /**
+ * @class NavDisplay_exec_impl
+ *
+ * RateGen executor implementation class.
+ */
+ class NAVDISPLAY_EXEC_Export NavDisplay_exec_impl :
+ public virtual CIDL_NavDisplay_Impl::NavDisplay_exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ NavDisplay_exec_impl ();
+
+ /// Default destructor.
+ ~NavDisplay_exec_impl ();
+
+ // Operations from HUDisplay::NavDisplay
+
+ virtual void
+ push_Refresh (HUDisplay::tick *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ /// Copmponent specific context
+ HUDisplay::CCM_NavDisplay_Context_var context_;
+ };
+
+ /**
+ * @class NavDisplayHome_exec_impl
+ *
+ * NavDisplay home executor implementation class.
+ */
+ class NAVDISPLAY_EXEC_Export NavDisplayHome_exec_impl :
+ public virtual HUDisplay::CCM_NavDisplayHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ NavDisplayHome_exec_impl ();
+
+ /// Default dtor.
+ ~NavDisplayHome_exec_impl ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createNavDisplayHome_Impl (void);
+
+#endif /* NAVDISPLAY_EXEC_H */
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec_export.h b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec_export.h
new file mode 100644
index 00000000000..aec244fc913
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAY_EXEC
+// ------------------------------
+#ifndef NAVDISPLAY_EXEC_EXPORT_H
+#define NAVDISPLAY_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NAVDISPLAY_EXEC_HAS_DLL)
+# define NAVDISPLAY_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NAVDISPLAY_EXEC_HAS_DLL */
+
+#if !defined (NAVDISPLAY_EXEC_HAS_DLL)
+# define NAVDISPLAY_EXEC_HAS_DLL 1
+#endif /* ! NAVDISPLAY_EXEC_HAS_DLL */
+
+#if defined (NAVDISPLAY_EXEC_HAS_DLL) && (NAVDISPLAY_EXEC_HAS_DLL == 1)
+# if defined (NAVDISPLAY_EXEC_BUILD_DLL)
+# define NAVDISPLAY_EXEC_Export ACE_Proper_Export_Flag
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAY_EXEC_BUILD_DLL */
+# define NAVDISPLAY_EXEC_Export ACE_Proper_Import_Flag
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAY_EXEC_BUILD_DLL */
+#else /* NAVDISPLAY_EXEC_HAS_DLL == 1 */
+# define NAVDISPLAY_EXEC_Export
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARATION(T)
+# define NAVDISPLAY_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAY_EXEC_HAS_DLL == 1 */
+
+// Set NAVDISPLAY_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAY_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAY_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAY_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAY_EXEC_NTRACE */
+
+#if (NAVDISPLAY_EXEC_NTRACE == 1)
+# define NAVDISPLAY_EXEC_TRACE(X)
+#else /* (NAVDISPLAY_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAY_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAY_EXEC_NTRACE == 1) */
+
+#endif /* NAVDISPLAY_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_stub_export.h b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_stub_export.h
new file mode 100644
index 00000000000..957975fb857
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAY_STUB
+// ------------------------------
+#ifndef NAVDISPLAY_STUB_EXPORT_H
+#define NAVDISPLAY_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NAVDISPLAY_STUB_HAS_DLL)
+# define NAVDISPLAY_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NAVDISPLAY_STUB_HAS_DLL */
+
+#if !defined (NAVDISPLAY_STUB_HAS_DLL)
+# define NAVDISPLAY_STUB_HAS_DLL 1
+#endif /* ! NAVDISPLAY_STUB_HAS_DLL */
+
+#if defined (NAVDISPLAY_STUB_HAS_DLL) && (NAVDISPLAY_STUB_HAS_DLL == 1)
+# if defined (NAVDISPLAY_STUB_BUILD_DLL)
+# define NAVDISPLAY_STUB_Export ACE_Proper_Export_Flag
+# define NAVDISPLAY_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAY_STUB_BUILD_DLL */
+# define NAVDISPLAY_STUB_Export ACE_Proper_Import_Flag
+# define NAVDISPLAY_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAY_STUB_BUILD_DLL */
+#else /* NAVDISPLAY_STUB_HAS_DLL == 1 */
+# define NAVDISPLAY_STUB_Export
+# define NAVDISPLAY_STUB_SINGLETON_DECLARATION(T)
+# define NAVDISPLAY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAY_STUB_HAS_DLL == 1 */
+
+// Set NAVDISPLAY_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAY_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAY_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAY_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAY_STUB_NTRACE */
+
+#if (NAVDISPLAY_STUB_NTRACE == 1)
+# define NAVDISPLAY_STUB_TRACE(X)
+#else /* (NAVDISPLAY_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAY_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAY_STUB_NTRACE == 1) */
+
+#endif /* NAVDISPLAY_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplay/NavDisplay_svnt_export.h b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_svnt_export.h
new file mode 100644
index 00000000000..752b31a8ac8
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplay/NavDisplay_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAY_SVNT
+// ------------------------------
+#ifndef NAVDISPLAY_SVNT_EXPORT_H
+#define NAVDISPLAY_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NAVDISPLAY_SVNT_HAS_DLL)
+# define NAVDISPLAY_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NAVDISPLAY_SVNT_HAS_DLL */
+
+#if !defined (NAVDISPLAY_SVNT_HAS_DLL)
+# define NAVDISPLAY_SVNT_HAS_DLL 1
+#endif /* ! NAVDISPLAY_SVNT_HAS_DLL */
+
+#if defined (NAVDISPLAY_SVNT_HAS_DLL) && (NAVDISPLAY_SVNT_HAS_DLL == 1)
+# if defined (NAVDISPLAY_SVNT_BUILD_DLL)
+# define NAVDISPLAY_SVNT_Export ACE_Proper_Export_Flag
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAY_SVNT_BUILD_DLL */
+# define NAVDISPLAY_SVNT_Export ACE_Proper_Import_Flag
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAY_SVNT_BUILD_DLL */
+#else /* NAVDISPLAY_SVNT_HAS_DLL == 1 */
+# define NAVDISPLAY_SVNT_Export
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARATION(T)
+# define NAVDISPLAY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAY_SVNT_HAS_DLL == 1 */
+
+// Set NAVDISPLAY_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAY_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAY_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAY_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAY_SVNT_NTRACE */
+
+#if (NAVDISPLAY_SVNT_NTRACE == 1)
+# define NAVDISPLAY_SVNT_TRACE(X)
+#else /* (NAVDISPLAY_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAY_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAY_SVNT_NTRACE == 1) */
+
+#endif /* NAVDISPLAY_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp
new file mode 100644
index 00000000000..52cce23d000
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.cpp
@@ -0,0 +1,28 @@
+// $Id$
+
+#include "AddNavUnitCmd.h"
+#include "RootPanel.h"
+#include "NavUnit.h"
+
+
+AddNavUnitCmd::AddNavUnitCmd()
+{
+}
+
+
+AddNavUnitCmd *
+AddNavUnitCmd::create(RootPanel *form, NavUnit *unit)
+{
+ AddNavUnitCmd *cmd = new AddNavUnitCmd();
+ cmd->form_ = form;
+ cmd->unit_ = unit;
+ return cmd;
+}
+
+
+int
+AddNavUnitCmd::execute(void * /* context */)
+{
+ this->form_->addUnit (this->unit_);
+ return 0;
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h
new file mode 100644
index 00000000000..d156a8008ed
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/AddNavUnitCmd.h
@@ -0,0 +1,27 @@
+// $Id$
+
+#ifndef __ADDNAVUNITCMD_H
+#define __ADDNAVUNITCMD_H
+
+#include "Command.h"
+
+class RootPanel;
+class NavUnit;
+
+class AddNavUnitCmd : public CommandBase
+{
+public:
+ static AddNavUnitCmd *create(RootPanel *form, NavUnit *unit);
+
+public:
+ virtual int execute(void *context = NULL);
+
+protected:
+ AddNavUnitCmd();
+
+ RootPanel *form_;
+ NavUnit *unit_;
+};
+
+
+#endif // __ADDNAVUNITCMD_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h
new file mode 100644
index 00000000000..3c1e9ef6cdd
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Command.h
@@ -0,0 +1,20 @@
+// $Id$
+
+#ifndef __COMMAND_H
+#define __COMMAND_H
+
+#include <qdatetime.h>
+
+class CommandBase
+{
+public:
+ CommandBase() {timestamp_ = QTime::currentTime();}
+ virtual ~CommandBase() {}
+
+public:
+ virtual int execute(void *context = NULL) = 0;
+ QTime timestamp_;
+};
+
+
+#endif // __COMMAND_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp
new file mode 100644
index 00000000000..95125600100
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.cpp
@@ -0,0 +1,165 @@
+// $Id$
+
+#include "DetailView.h"
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qtabwidget.h>
+#include <qtable.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+
+
+DetailView::DetailView(QWidget *parent, const char *name)
+: QWidget(parent, name), current_unit(NULL)
+{
+ QGridLayout *grid = new QGridLayout(this, 8, 10);
+
+ // Create a label containing a QMovie
+ separatorlabel = new QLabel(this, "label0" );
+
+ grid->addMultiCellWidget(separatorlabel, 0, 0, 0, 9);
+
+ QLabel *sem_id_label = new QLabel("FDN:", this);
+ grid->addWidget(sem_id_label, 1, 0);
+ sem_id_val = new QLineEdit(this);
+ sem_id_val->setReadOnly(1);
+ grid->addMultiCellWidget(sem_id_val, 1, 1, 1, 7);
+
+ QLabel *descr_label = new QLabel("Description:", this);
+ grid->addWidget(descr_label, 2, 0);
+ descr_edit = new QLineEdit(this);
+ grid->addMultiCellWidget(descr_edit, 2, 2, 1, 7);
+
+ QLabel *x_label = new QLabel("X coordinate:", this);
+ grid->addWidget(x_label, 3, 0);
+ x_edit = new QSpinBox(this);
+ x_edit->setMinValue(0);
+ x_edit->setMaxValue(65535);
+ grid->addWidget(x_edit, 3, 1);
+
+ QLabel *y_label = new QLabel("Y coordinate:", this);
+ grid->addWidget(y_label, 3, 3);
+ y_edit = new QSpinBox(this);
+ y_edit->setMinValue(0);
+ y_edit->setMaxValue(65535);
+ grid->addWidget(y_edit, 3, 4);
+
+ QLabel *z_label = new QLabel("Z coordinate:", this);
+ grid->addWidget(z_label, 3, 6);
+ z_edit = new QSpinBox(this);
+ z_edit->setMinValue(0);
+ z_edit->setMaxValue(65535);
+ grid->addWidget(z_edit, 3, 7);
+
+ // Create a label containing a QMovie
+ QString path_to_movie;
+ char *ace_root = getenv("ACE_ROOT");
+ if(ace_root)
+ {
+ path_to_movie += ace_root;
+ path_to_movie += "/TAO/CIAO/examples/handcrafted/Display/NavDisplayGUI_exec/trolltech.gif";
+ }
+ else
+ {
+ path_to_movie = "../NavDisplayGUI_exec/trolltech.gif";
+ }
+ movie = QMovie(path_to_movie);
+ movielabel = new QLabel(this, "label1" );
+ movie.connectStatus(this, SLOT(movieStatus(int)));
+ movie.connectUpdate(this, SLOT(movieUpdate(const QRect&)));
+ movielabel->setFrameStyle( QFrame::Box | QFrame::Plain );
+ movielabel->setMovie(movie);
+ movielabel->setFixedSize( 128+movielabel->frameWidth()*2,
+ 64+movielabel->frameWidth()*2 );
+ grid->addMultiCellWidget(new QLabel("", this), 1, 4, 8, 8);
+ grid->addMultiCellWidget(movielabel, 1, 4, 9, 9);
+
+
+ QPushButton *apply = new QPushButton("Apply", this);
+ apply->setDefault(1);
+ grid->addWidget(apply, 7, 9);
+
+ connect(apply, SIGNAL(clicked()), this, SLOT(apply()));
+
+ QTabWidget *tabs = new QTabWidget(this);
+
+
+ child_list = new QTable(0, 6, tabs);
+ child_list->setSelectionMode(QTable::Single);
+ child_list->horizontalHeader()->setLabel(0, "FDN");
+ child_list->horizontalHeader()->setLabel(1, "Description");
+ child_list->horizontalHeader()->setLabel(2, "X Coordinate");
+ child_list->horizontalHeader()->setLabel(3, "Y Coordinate");
+ child_list->horizontalHeader()->setLabel(4, "Z Coordinate");
+ child_list->horizontalHeader()->setLabel(5, "Color");
+
+ parent_list = new QTable(0, 6, tabs);
+ parent_list->setSelectionMode(QTable::Single);
+ parent_list->horizontalHeader()->setLabel(0, "FDN");
+ parent_list->horizontalHeader()->setLabel(1, "Description");
+ parent_list->horizontalHeader()->setLabel(2, "X Coordinate");
+ parent_list->horizontalHeader()->setLabel(3, "Y Coordinate");
+ parent_list->horizontalHeader()->setLabel(4, "Z Coordinate");
+ parent_list->horizontalHeader()->setLabel(5, "Color");
+
+ tabs->addTab(child_list, "Property set &1");
+ tabs->addTab(parent_list, "Property set &2");
+
+ grid->addMultiCellWidget(new QLabel(this), 4, 4, 0, 9);
+ grid->addMultiCellWidget(tabs, 5, 5, 0, 9);
+}
+
+
+DetailView::~DetailView()
+{
+}
+
+
+void
+DetailView::currentNode(NavUnit *unit)
+{
+ UnitLocation loc = unit->getLocation();
+ descr_edit->setText(unit->getShortDescr());
+ this->updateLocation(loc);
+}
+
+void
+DetailView::updateLocation(const UnitLocation &loc)
+{
+ x_edit->setValue(static_cast<int>(loc.x_));
+ y_edit->setValue(static_cast<int>(loc.y_));
+ z_edit->setValue(static_cast<int>(loc.z_));
+}
+
+void
+DetailView::apply()
+{
+}
+
+
+void
+DetailView::movieUpdate( const QRect& )
+{
+ // Uncomment this to test animated icons on your window manager
+ //setIcon( movie.framePixmap() );
+}
+
+
+void
+DetailView::movieStatus( int s )
+{
+ switch ( s ) {
+ case QMovie::SourceEmpty:
+ case QMovie::UnrecognizedFormat:
+ {
+ QPixmap pm("tt-logo.png");
+ movielabel->setPixmap(pm);
+ movielabel->setFixedSize(pm.size());
+ }
+ break;
+ default:
+ if ( movielabel->movie() ) // for flicker-free animation:
+ movielabel->setBackgroundMode( NoBackground );
+ }
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h
new file mode 100644
index 00000000000..ef9e0070884
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/DetailView.h
@@ -0,0 +1,51 @@
+// $Id$
+
+#ifndef __DETAILVIEW_H
+#define __DETAILVIEW_H
+
+
+#include "NavUnit.h"
+#include <qwidget.h>
+#include <qmovie.h>
+
+
+class QLabel;
+class QLineEdit;
+class QSpinBox;
+class QTable;
+
+
+class DetailView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ DetailView(QWidget *parent, const char *name = 0);
+ virtual ~DetailView();
+
+public slots:
+ void movieStatus(int);
+ void movieUpdate(const QRect&);
+ void currentNode(NavUnit *unit);
+ void updateLocation(const UnitLocation &loc);
+ void apply();
+
+private:
+ QLineEdit *sem_id_val;
+ QLineEdit *descr_edit;
+ QSpinBox *x_edit;
+ QSpinBox *y_edit;
+ QSpinBox *z_edit;
+ QTable *child_list;
+ QTable *parent_list;
+ QLabel *movielabel;
+ QMovie movie;
+ QLabel *separatorlabel;
+ QMovie separator;
+
+
+ NavUnit *current_unit;
+};
+
+
+#endif // __DETAILVIEW_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp
new file mode 100644
index 00000000000..8f8f7ecd69b
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.cpp
@@ -0,0 +1,38 @@
+// $Id$
+
+#include "MapView.h"
+#include <stdlib.h>
+
+#include "worldmap1.xpm"
+
+MapView::MapView(
+ QCanvas& c,
+ QWidget* parent,
+ const char* name,
+ WFlags f)
+ :
+ QCanvasView(&c, parent, name, f),
+ bg_pixmap_(worldmap1)
+{
+ viewport()->setBackgroundMode(NoBackground);
+ enableClipper(TRUE);
+ if(!bg_pixmap_.isNull())
+ {
+ resizeContents(bg_pixmap_.width(), bg_pixmap_.height());
+ }
+ else
+ resizeContents(100, 100);
+
+ canvas()->setBackgroundPixmap(bg_pixmap_);
+}
+
+void
+MapView::clear()
+{
+ /*QCanvasItemList list = canvas()->allItems();
+ for(QCanvasItemList::Iterator it = list.begin(); it != list.end(); ++it)
+ {
+ if(*it)
+ delete *it;
+ }*/
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h
new file mode 100644
index 00000000000..e640a63c985
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/MapView.h
@@ -0,0 +1,23 @@
+// $Id$
+
+#ifndef __MAPVIEW_H
+#define __MAPVIEW_H
+
+#include <qcanvas.h>
+#include <qpixmap.h>
+
+class MapView : public QCanvasView
+{
+ Q_OBJECT
+
+public:
+ MapView(QCanvas&, QWidget* parent=0, const char* name=0, WFlags f=0);
+ void clear();
+
+protected:
+ QPixmap bg_pixmap_;
+};
+
+
+
+#endif // __MAPVIEW_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
new file mode 100644
index 00000000000..0ce220f5d52
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
@@ -0,0 +1,46 @@
+// $Id$
+
+project(NavDisplayGUI_DnC_exec) : ciao_component_dnc, qt {
+ after += Display_Base_NavDisplay_svnt
+ requires += qt
+ sharedname = NavDisplayGUI_DnC_exec
+ libs += NavDisplay_stub \
+ NavDisplay_svnt
+ libpaths += .. ../NavDisplay
+ dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL QT_DLL
+ includes += ../NavDisplay
+ includes += /usr/include/qt3
+ idlflags += -I ../NavDisplay \
+ -Wb,export_macro=NAVDISPLAY_EXEC_Export \
+ -Wb,export_include=NavDisplay_exec_export.h
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ AddNavUnitCmd.cpp
+ DetailView.cpp
+ MapView.cpp
+ NavUnit.cpp
+ NodeItem.cpp
+ QuitCmd.cpp
+ RootPanel.cpp
+ UpdatePositionCmd.cpp
+ Worker.cpp
+ NavDisplayGUI_exec.cpp
+ }
+
+ MOC_Files {
+ DetailView.h
+ MapView.h
+ NodeItem.h
+ RootPanel.h
+ }
+
+ Source_Files {
+ DetailView_moc.cpp
+ MapView_moc.cpp
+ NodeItem_moc.cpp
+ RootPanel_moc.cpp
+ }
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
new file mode 100644
index 00000000000..32a4ebea140
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
@@ -0,0 +1,201 @@
+// $Id$
+
+#include "NavDisplayGUI_exec.h"
+#include "CIAO_common.h"
+#include <qapplication.h>
+#include <qevent.h>
+
+#include "UpdatePositionCmd.h"
+#include "QuitCmd.h"
+#include "AddNavUnitCmd.h"
+#include "Worker.h"
+
+static const char *argv[] =
+{
+ "NavDisplayGUI"
+};
+
+/// Default constructor.
+MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUI_exec_impl ()
+: unit_(1, "Model T3+"), loc_(50, 20, 0)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUI_exec_impl ()\n"));
+}
+
+/// Default destructor.
+MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUI_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUI_exec_impl ()\n"));
+}
+
+// Operations from HUDisplay::NavDisplay
+
+void
+MyImpl::NavDisplayGUI_exec_impl::push_Refresh (
+ HUDisplay::tick * /* ev */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ //ACE_DEBUG ((LM_DEBUG, "ENTER: MyImpl::NavDisplayGUI_exec_impl::push_Refresh()\n"));
+
+ // Refresh position
+ HUDisplay::position_var loc =
+ this->context_->get_connection_GPSLocation ();
+
+ CORBA::Long lx = loc->posx ();
+
+ CORBA::Long ly = loc->posy ();
+
+ mutex_.acquire();
+
+ loc_.x_ = lx % 500;
+ loc_.y_ = ly % 300;
+
+ this->unit_.setLocation(loc_);
+
+ mutex_.release();
+
+ //ACE_DEBUG ((LM_DEBUG, "DISPLAY: Current Location is: %d %d\n", int(attrs.x_), int(attrs.y_)));
+
+ RootPanel *root_pane = worker_->getMainWindow();
+ if(root_pane)
+ {
+ UpdatePositionCmd *cmd = UpdatePositionCmd::create(
+ root_pane, &(this->unit_));
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(root_pane, evt);
+ }
+
+ //ACE_DEBUG ((LM_DEBUG, "LEAVE: MyImpl::NavDisplayGUI_exec_impl::push_Refresh()\n"));
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::NavDisplayGUI_exec_impl::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::set_session_context\n"));
+
+ this->context_ =
+ HUDisplay::CCM_NavDisplay_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "ENTER: MyImpl::NavDisplayGUI_exec_impl::ccm_activate\n"));
+
+ worker_ = new Worker(sizeof(argv)/sizeof(argv[0]), const_cast<char **> (argv));
+
+ if (worker_->activate(THR_NEW_LWP | THR_JOINABLE, 1) != 0)
+ {
+ ACE_DEBUG((LM_ERROR,
+ "Cannot activate client threads\n"));
+ throw Components::CCMException();
+ }
+
+ worker_->waitUntillInitialized();
+
+ AddNavUnitCmd *cmd = AddNavUnitCmd::create(
+ worker_->getMainWindow(), &(this->unit_));
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(worker_->getMainWindow(), evt);
+
+
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "LEAVE: MyImpl::NavDisplayGUI_exec_impl::ccm_activate\n"));
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::ccm_passivate\n"));
+
+ RootPanel *target = worker_->getMainWindow();
+ if(target)
+ {
+ QuitCmd *cmd = QuitCmd::create(target);
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(target, evt);
+ worker_->thr_mgr()->wait();
+ }
+
+ delete worker_;
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::NavDisplayGUIHome_exec_impl::NavDisplayGUIHome_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUIHome_exec_impl ()\n"));
+}
+
+/// Default dtor.
+MyImpl::NavDisplayGUIHome_exec_impl::~NavDisplayGUIHome_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUIHome_exec_impl ()\n"));
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::NavDisplayGUIHome_exec_impl::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUIHome_exec_impl::create()\n"));
+
+ return new MyImpl::NavDisplayGUI_exec_impl;
+}
+
+
+extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createNavDisplayHome_Impl (void)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "createNavDisplayHome_Impl()\n"));
+ return new MyImpl::NavDisplayGUIHome_exec_impl;
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h
new file mode 100644
index 00000000000..e41de4c68d9
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.h
@@ -0,0 +1,119 @@
+// $Id$
+
+/**
+ * @file NavDisplayGUI_exec.h
+ *
+ * Header file for the actual NavDisplay and NavDisplayHome component
+ * implementations.
+ *
+ * @author Nanbor Wang <nanbor@cse.wustl.edu>
+ */
+
+#ifndef NAVDISPLAY_EXEC_H
+#define NAVDISPLAY_EXEC_H
+
+#include "NavDisplayEC.h"
+#include "NavDisplay_exec_export.h"
+#include "ace/Synch.h"
+#include "tao/LocalObject.h"
+#include "NavUnit.h"
+
+class Worker;
+
+
+namespace MyImpl
+{
+ /**
+ * @class NavDisplayGUI_exec_impl
+ *
+ * RateGen executor implementation class.
+ */
+ class NAVDISPLAY_EXEC_Export NavDisplayGUI_exec_impl :
+ public virtual CIDL_NavDisplay_Impl::NavDisplay_exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ NavDisplayGUI_exec_impl ();
+
+ /// Default destructor.
+ ~NavDisplayGUI_exec_impl ();
+
+ // Operations from HUDisplay::NavDisplay
+
+ virtual void
+ push_Refresh (HUDisplay::tick *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ protected:
+ /// Copmponent specific context
+ HUDisplay::CCM_NavDisplay_Context_var context_;
+ Worker *worker_;
+ NavUnit unit_;
+ UnitLocation loc_;
+ ACE_Thread_Mutex mutex_;
+ };
+
+ /**
+ * @class NavDisplayGUIHome_exec_impl
+ *
+ * NavDisplay home executor implementation class.
+ */
+ class NAVDISPLAY_EXEC_Export NavDisplayGUIHome_exec_impl :
+ public virtual HUDisplay::CCM_NavDisplayHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ NavDisplayGUIHome_exec_impl ();
+
+ /// Default dtor.
+ ~NavDisplayGUIHome_exec_impl ();
+
+ // Explicit home operations.
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createNavDisplayHome_Impl (void);
+
+#endif /* NAVDISPLAY_EXEC_H */
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h
new file mode 100644
index 00000000000..ee28dc04bb3
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_EXEC_EXEC
+// ------------------------------
+#ifndef NAVDISPLAYGUI_EXEC_EXEC_EXPORT_H
+#define NAVDISPLAYGUI_EXEC_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL)
+# define NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL) && (NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_EXEC_EXEC_BUILD_DLL)
+# define NAVDISPLAYGUI_EXEC_EXEC_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_EXEC_EXEC_BUILD_DLL */
+# define NAVDISPLAYGUI_EXEC_EXEC_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_EXEC_EXEC_BUILD_DLL */
+#else /* NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_EXEC_EXEC_Export
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_EXEC_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_EXEC_EXEC_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_EXEC_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_EXEC_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_EXEC_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_EXEC_EXEC_NTRACE */
+
+#if (NAVDISPLAYGUI_EXEC_EXEC_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_EXEC_TRACE(X)
+#else /* (NAVDISPLAYGUI_EXEC_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_EXEC_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_EXEC_EXEC_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_EXEC_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h
new file mode 100644
index 00000000000..1281b652026
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_EXEC
+// ------------------------------
+#ifndef NAVDISPLAYGUI_EXEC_EXPORT_H
+#define NAVDISPLAYGUI_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_EXEC_HAS_DLL)
+# define NAVDISPLAYGUI_EXEC_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_EXEC_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_EXEC_HAS_DLL) && (NAVDISPLAYGUI_EXEC_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_EXEC_BUILD_DLL)
+# define NAVDISPLAYGUI_EXEC_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_EXEC_BUILD_DLL */
+# define NAVDISPLAYGUI_EXEC_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_EXEC_BUILD_DLL */
+#else /* NAVDISPLAYGUI_EXEC_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_EXEC_Export
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_EXEC_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_EXEC_NTRACE */
+
+#if (NAVDISPLAYGUI_EXEC_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_TRACE(X)
+#else /* (NAVDISPLAYGUI_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_EXEC_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h
new file mode 100644
index 00000000000..29760f27be1
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_EXEC_STUB
+// ------------------------------
+#ifndef NAVDISPLAYGUI_EXEC_STUB_EXPORT_H
+#define NAVDISPLAYGUI_EXEC_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_EXEC_STUB_HAS_DLL)
+# define NAVDISPLAYGUI_EXEC_STUB_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_EXEC_STUB_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_EXEC_STUB_HAS_DLL) && (NAVDISPLAYGUI_EXEC_STUB_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_EXEC_STUB_BUILD_DLL)
+# define NAVDISPLAYGUI_EXEC_STUB_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_EXEC_STUB_BUILD_DLL */
+# define NAVDISPLAYGUI_EXEC_STUB_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_EXEC_STUB_BUILD_DLL */
+#else /* NAVDISPLAYGUI_EXEC_STUB_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_EXEC_STUB_Export
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_EXEC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_EXEC_STUB_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_EXEC_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_EXEC_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_EXEC_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_EXEC_STUB_NTRACE */
+
+#if (NAVDISPLAYGUI_EXEC_STUB_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_STUB_TRACE(X)
+#else /* (NAVDISPLAYGUI_EXEC_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_EXEC_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_EXEC_STUB_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_EXEC_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h
new file mode 100644
index 00000000000..29dcfc0dd80
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_exec_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_EXEC_SVNT
+// ------------------------------
+#ifndef NAVDISPLAYGUI_EXEC_SVNT_EXPORT_H
+#define NAVDISPLAYGUI_EXEC_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL)
+# define NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL) && (NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_EXEC_SVNT_BUILD_DLL)
+# define NAVDISPLAYGUI_EXEC_SVNT_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_EXEC_SVNT_BUILD_DLL */
+# define NAVDISPLAYGUI_EXEC_SVNT_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_EXEC_SVNT_BUILD_DLL */
+#else /* NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_EXEC_SVNT_Export
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_EXEC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_EXEC_SVNT_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_EXEC_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_EXEC_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_EXEC_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_EXEC_SVNT_NTRACE */
+
+#if (NAVDISPLAYGUI_EXEC_SVNT_NTRACE == 1)
+# define NAVDISPLAYGUI_EXEC_SVNT_TRACE(X)
+#else /* (NAVDISPLAYGUI_EXEC_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_EXEC_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_EXEC_SVNT_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_EXEC_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h
new file mode 100644
index 00000000000..c957c04373d
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_STUB
+// ------------------------------
+#ifndef NAVDISPLAYGUI_STUB_EXPORT_H
+#define NAVDISPLAYGUI_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_STUB_HAS_DLL)
+# define NAVDISPLAYGUI_STUB_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_STUB_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_STUB_HAS_DLL) && (NAVDISPLAYGUI_STUB_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_STUB_BUILD_DLL)
+# define NAVDISPLAYGUI_STUB_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_STUB_BUILD_DLL */
+# define NAVDISPLAYGUI_STUB_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_STUB_BUILD_DLL */
+#else /* NAVDISPLAYGUI_STUB_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_STUB_Export
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_STUB_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_STUB_NTRACE */
+
+#if (NAVDISPLAYGUI_STUB_NTRACE == 1)
+# define NAVDISPLAYGUI_STUB_TRACE(X)
+#else /* (NAVDISPLAYGUI_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_STUB_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h
new file mode 100644
index 00000000000..16a758373f0
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavDisplayGUI_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NAVDISPLAYGUI_SVNT
+// ------------------------------
+#ifndef NAVDISPLAYGUI_SVNT_EXPORT_H
+#define NAVDISPLAYGUI_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (NAVDISPLAYGUI_SVNT_HAS_DLL)
+# define NAVDISPLAYGUI_SVNT_HAS_DLL 1
+#endif /* ! NAVDISPLAYGUI_SVNT_HAS_DLL */
+
+#if defined (NAVDISPLAYGUI_SVNT_HAS_DLL) && (NAVDISPLAYGUI_SVNT_HAS_DLL == 1)
+# if defined (NAVDISPLAYGUI_SVNT_BUILD_DLL)
+# define NAVDISPLAYGUI_SVNT_Export ACE_Proper_Export_Flag
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NAVDISPLAYGUI_SVNT_BUILD_DLL */
+# define NAVDISPLAYGUI_SVNT_Export ACE_Proper_Import_Flag
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NAVDISPLAYGUI_SVNT_BUILD_DLL */
+#else /* NAVDISPLAYGUI_SVNT_HAS_DLL == 1 */
+# define NAVDISPLAYGUI_SVNT_Export
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARATION(T)
+# define NAVDISPLAYGUI_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NAVDISPLAYGUI_SVNT_HAS_DLL == 1 */
+
+// Set NAVDISPLAYGUI_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NAVDISPLAYGUI_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NAVDISPLAYGUI_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NAVDISPLAYGUI_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NAVDISPLAYGUI_SVNT_NTRACE */
+
+#if (NAVDISPLAYGUI_SVNT_NTRACE == 1)
+# define NAVDISPLAYGUI_SVNT_TRACE(X)
+#else /* (NAVDISPLAYGUI_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NAVDISPLAYGUI_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NAVDISPLAYGUI_SVNT_NTRACE == 1) */
+
+#endif /* NAVDISPLAYGUI_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp
new file mode 100644
index 00000000000..809117728f6
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.cpp
@@ -0,0 +1,9 @@
+// $Id$
+
+#include "NavUnit.h"
+
+
+NavUnit::NavUnit(const UnitID &id, const char *short_descr)
+: id_(id), short_descr_(short_descr)
+{
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h
new file mode 100644
index 00000000000..86dd2cccbd7
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NavUnit.h
@@ -0,0 +1,57 @@
+// $Id$
+
+#ifndef __NAVUNIT_H
+#define __NAVUNIT_H
+
+#include "ace/SString.h"
+
+
+class UnitLocation
+{
+public:
+ UnitLocation() {x_ = y_ = z_ = 0.0;}
+ UnitLocation(
+ double x,
+ double y,
+ double z) :
+ x_(x), y_(y), z_(z) {}
+
+ UnitLocation(const UnitLocation &ul) { operator = (ul); }
+
+public:
+ UnitLocation & operator = (const UnitLocation &ul)
+ {
+ x_ = ul.x_;
+ y_ = ul.y_;
+ z_ = ul.z_;
+ return *this;
+ }
+
+public:
+ double x_, y_, z_;
+};
+
+typedef unsigned long UnitID;
+
+class NavUnit
+{
+public:
+ NavUnit(const UnitID &id, const char *short_descr);
+ virtual ~NavUnit() {}
+
+public:
+ UnitID getID() const {return id_;}
+
+ const char *getShortDescr() const {return short_descr_.c_str();}
+ void setShortDescr(const char *short_descr) {short_descr_ = short_descr;}
+
+ UnitLocation getLocation() const {return loc_;}
+ void setLocation(const UnitLocation &loc) {loc_ = loc;}
+
+protected:
+ UnitID id_;
+ ACE_CString short_descr_;
+ UnitLocation loc_;
+};
+
+#endif // __NAVUNIT_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp
new file mode 100644
index 00000000000..f1567d8f4c0
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.cpp
@@ -0,0 +1,63 @@
+// $Id$
+
+#include "NodeItem.h"
+//#include <qbrush.h>
+
+
+QBrush *NodeItem::normal = new QBrush(red);
+QBrush *NodeItem::highlighted = new QBrush(green);
+
+
+NodeItem::NodeItem(QCanvas *canvas, NavUnit &unit)
+ : QCanvasEllipse(8, 8, canvas),
+ unit_(unit),
+ blink_timer(canvas),
+ is_selected_(0)
+{
+ setBrush(*normal);
+ setZ(128);
+}
+
+
+void NodeItem::moveBy(double dx, double dy, double /* dz */)
+{
+ QCanvasEllipse::moveBy (dx, dy);
+}
+
+
+void
+NodeItem::timerDone()
+{
+ if(selected())
+ {
+ if(brush() == *normal)
+ setBrush(*highlighted);
+ else
+ setBrush(*normal);
+
+ canvas()->update();
+ }
+}
+
+
+void
+NodeItem::setSelected(bool yes)
+{
+ is_selected_ = yes;
+
+ if(yes)
+ {
+ connect(&blink_timer, SIGNAL(timeout()),
+ SLOT(timerDone()));
+
+ blink_timer.start(500);
+ }
+ else
+ {
+ blink_timer.stop();
+ disconnect(SIGNAL(timeout()), this,
+ SLOT(timerDone()));
+ setBrush(*normal);
+ canvas()->update();
+ }
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h
new file mode 100644
index 00000000000..840d6157990
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/NodeItem.h
@@ -0,0 +1,49 @@
+// $Id$
+
+#ifndef __NODEITEM_H
+#define __NODEITEM_H
+
+#include "NavUnit.h"
+#include <qcanvas.h>
+//#include <qlist.h>
+#include <qtimer.h>
+#include <qbrush.h>
+#include <qobject.h>
+
+
+
+class NodeItem: public QObject, public QCanvasEllipse
+{
+ Q_OBJECT
+
+public:
+ NodeItem(QCanvas *canvas, NavUnit &unit);
+
+ ~NodeItem() {}
+
+ enum {
+ nodeRTTI = 1
+ };
+
+ void moveBy(double dx, double dy, double dz);
+
+ virtual int rtti() const {return nodeRTTI;}
+
+ virtual void setSelected(bool yes);
+ virtual bool selected() const {return is_selected_;}
+
+public slots:
+ void timerDone();
+
+private:
+ NavUnit &unit_;
+ QTimer blink_timer;
+ bool is_selected_;
+
+ static QBrush *normal;
+ static QBrush *highlighted;
+};
+
+
+
+#endif // __NODEITEM_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp
new file mode 100644
index 00000000000..b967c5a7e8c
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.cpp
@@ -0,0 +1,25 @@
+// $Id$
+
+#include "QuitCmd.h"
+#include "RootPanel.h"
+
+
+QuitCmd::QuitCmd()
+{
+}
+
+
+QuitCmd *
+QuitCmd::create(RootPanel *form)
+{
+ QuitCmd *cmd = new QuitCmd ();
+ cmd->form_ = form;
+ return cmd;
+}
+
+
+int
+QuitCmd::execute (void * /* context */)
+{
+ return form_->close ();
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h
new file mode 100644
index 00000000000..a80d749640e
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/QuitCmd.h
@@ -0,0 +1,25 @@
+// $Id$
+
+#ifndef __QUITCMD_H
+#define __QUITCMD_H
+
+#include "Command.h"
+
+class RootPanel;
+
+class QuitCmd : public CommandBase
+{
+public:
+ static QuitCmd *create(RootPanel *form);
+
+public:
+ virtual int execute(void *context = NULL);
+
+protected:
+ QuitCmd();
+
+ RootPanel *form_;
+};
+
+
+#endif // __QUITCMD_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp
new file mode 100644
index 00000000000..c6737ee96c0
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.cpp
@@ -0,0 +1,90 @@
+// $Id$
+
+#include "RootPanel.h"
+#include <qmenubar.h>
+#include <qapplication.h>
+#include <qprogressdialog.h>
+#include <stdlib.h>
+#include <qsplitter.h>
+#include "NodeItem.h"
+#include "Command.h"
+
+
+RootPanel::RootPanel(QCanvas &c, QWidget *parent, const char *name)
+: QMainWindow(parent, name), canvas(c)
+{
+ QSplitter *s1 = new QSplitter( QSplitter::Vertical, this , "main" );
+
+
+ navview = new MapView(canvas, s1);
+ s1->moveToFirst(navview);
+
+ details = new DetailView(s1);
+
+ QMenuBar* menu = menuBar();
+
+ QPopupMenu* file = new QPopupMenu;
+ //file->insertItem("&Fill canvas", this, SLOT(init()), CTRL+Key_F);
+ //file->insertItem("&Erase canvas", this, SLOT(clear()), CTRL+Key_E);
+ //file->insertItem("&New view", this, SLOT(newView()), CTRL+Key_N);
+ file->insertSeparator();
+ file->insertItem("E&xit", qApp, SLOT(quit()), CTRL+Key_Q);
+ menu->insertItem("&File", file);
+
+ setCentralWidget(s1);
+}
+
+
+RootPanel::~RootPanel()
+{
+ clear();
+}
+
+
+void
+RootPanel::addUnit(NavUnit *unit)
+{
+ NodeItem *el = new NodeItem(&canvas, *unit);
+ nodeMap.bind(unit->getID(), el);
+ UnitLocation loc = unit->getLocation();
+ el->move(loc.x_, loc.y_);
+ el->show();
+ this->details->currentNode(unit);
+}
+
+void
+RootPanel::updateUnit(NavUnit *unit)
+{
+ NodeItem *el = NULL;
+ nodeMap.find(unit->getID(), el);
+ UnitLocation loc = unit->getLocation();
+ el->move(loc.x_, loc.y_);
+ //canvas.update();
+
+ this->details->updateLocation(loc);
+}
+
+
+void
+RootPanel::clear()
+{
+ navview->clear();
+}
+
+void
+RootPanel::customEvent(QCustomEvent *e)
+{
+ CommandBase *cmd = (CommandBase*)(e->data());
+ cmd->execute();
+ delete cmd;
+/*
+ int elapsed = time.restart();
+ int fps = (elapsed == 0 ? 1000 : 1000 / elapsed);
+
+ if(prev_fps != fps)
+ {
+ prev_fps = fps;
+ ups->setNum(prev_fps);
+ }
+*/
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h
new file mode 100644
index 00000000000..1c0427ab5c4
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/RootPanel.h
@@ -0,0 +1,47 @@
+// $Id$
+
+#ifndef __ROOTPANEL_H
+#define __ROOTPANEL_H
+
+#define QT_GENUINE_STR
+
+#include "ace/Hash_Map_Manager.h"
+#include "ace/Null_Mutex.h"
+#include "MapView.h"
+#include "DetailView.h"
+#include <qmainwindow.h>
+
+class NodeItem;
+class QMouseEvent;
+
+class RootPanel : public QMainWindow
+{
+ Q_OBJECT
+
+typedef ACE_Hash_Map_Manager_Ex<ACE_UINT64,
+ NodeItem*,
+ ACE_Hash<ACE_UINT64>,
+ ACE_Equal_To<ACE_UINT64>,
+ ACE_Null_Mutex> NodeItemMap;
+
+public:
+ RootPanel(QCanvas&, QWidget *parent = 0, const char *name = 0);
+ ~RootPanel();
+
+public:
+ void addUnit(NavUnit* unit);
+ void updateUnit(NavUnit *unit);
+
+protected:
+ void clear();
+ virtual void customEvent(QCustomEvent *e);
+
+ QCanvas& canvas;
+ MapView *navview;
+ DetailView *details;
+
+ QPopupMenu* options;
+ NodeItemMap nodeMap;
+};
+
+#endif // __ROOTPANEL_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp
new file mode 100644
index 00000000000..af6ae9529d4
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.cpp
@@ -0,0 +1,30 @@
+// $Id$
+
+#include "RootPanel.h"
+#include "UpdatePositionCmd.h"
+#include <qlcdnumber.h>
+#include "NavUnit.h"
+
+
+UpdatePositionCmd::UpdatePositionCmd()
+{
+}
+
+
+UpdatePositionCmd *
+UpdatePositionCmd::create(
+ RootPanel *form, NavUnit *unit)
+{
+ UpdatePositionCmd *cmd = new UpdatePositionCmd();
+ cmd->form_ = form;
+ cmd->unit_ = unit;
+ return cmd;
+}
+
+
+int
+UpdatePositionCmd::execute (void * /* context */)
+{
+ this->form_->updateUnit (this->unit_);
+ return 0;
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h
new file mode 100644
index 00000000000..4ba20755c3e
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/UpdatePositionCmd.h
@@ -0,0 +1,28 @@
+// $Id$
+
+#ifndef __UPDATEPOSITIONCM_H
+#define __UPDATEPOSITIONCM_H
+
+#include "Command.h"
+
+class RootPanel;
+class NavUnit;
+
+class UpdatePositionCmd : public CommandBase
+{
+public:
+ static UpdatePositionCmd *create(
+ RootPanel *form, NavUnit *unit);
+
+public:
+ virtual int execute(void *context = NULL);
+
+protected:
+ UpdatePositionCmd();
+
+ RootPanel *form_;
+ NavUnit *unit_;
+};
+
+
+#endif // __UPDATEPOSITIONCM_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp
new file mode 100644
index 00000000000..4257dd69f46
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.cpp
@@ -0,0 +1,48 @@
+// $Id$
+
+#include "Worker.h"
+#include <qapplication.h>
+#include <qmotifstyle.h>
+#include <qcdestyle.h>
+#include <qwindowsstyle.h>
+#include <qplatinumstyle.h>
+#include <qsgistyle.h>
+
+
+int
+Worker::svc (void)
+{
+ ACE_DEBUG((LM_DEBUG, "ENTER: Worker::svc()\n"));
+
+ QApplication a(argc_, argv_);
+ a.setStyle(new QPlatinumStyle);
+ QCanvas canvas(600, 387);
+ //QCanvas canvas(566, 679);
+ //QCanvas canvas(550, 723);
+ canvas.setAdvancePeriod(30);
+ RootPanel root_panel(canvas);
+ root_panel.resize(root_panel.sizeHint());
+
+ root_panel.resize(600, 650);
+ root_panel.setCaption("NavDisplay");
+
+ a.setMainWidget(&root_panel);
+
+ QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) );
+
+ if(QApplication::desktop()->width() > 550
+ && QApplication::desktop()->height() > 366)
+ root_panel.show();
+ else
+ root_panel.showMaximized();
+
+ main_wnd_ = &root_panel;
+ init_complete_.signal();
+
+ int retval = a.exec();
+
+ main_wnd_ = NULL;
+
+ ACE_DEBUG((LM_DEBUG, "LEAVE: Worker::svc()\n"));
+ return retval;
+}
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h
new file mode 100644
index 00000000000..73aa649bd36
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/Worker.h
@@ -0,0 +1,35 @@
+// $Id$
+
+#ifndef __WORKER_H
+#define __WORKER_H
+
+#include "ace/Task.h"
+#include "ace/Synch.h"
+#include "tao/corba.h"
+#include "RootPanel.h"
+
+class Worker : public ACE_Task_Base
+{
+public:
+ Worker (int argc, char *argv[])
+ : argc_(argc), argv_(argv) {}
+ // ctor
+
+ virtual int svc (void);
+ // The thread entry point.
+
+ void waitUntillInitialized() {init_complete_.wait();}
+ // blocks the calling thread until the GUI is initialized
+
+ RootPanel* getMainWindow() const {return main_wnd_;}
+ // Returns the pointer to main application window
+
+private:
+ RootPanel *main_wnd_;
+ int argc_;
+ char **argv_;
+
+ ACE_Manual_Event init_complete_;
+};
+
+#endif // __WORKER_H
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif b/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif
new file mode 100644
index 00000000000..f674369efc4
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/trolltech.gif
Binary files differ
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif
new file mode 100644
index 00000000000..99fe78a7673
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.gif
Binary files differ
diff --git a/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm
new file mode 100644
index 00000000000..736de06f25a
--- /dev/null
+++ b/modules/CIAO/examples/Display/NavDisplayGUI_exec/worldmap1.xpm
@@ -0,0 +1,651 @@
+/* XPM */
+static const char *worldmap1[] = {
+/* width height ncolors chars_per_pixel */
+"600 387 257 2",
+/* colors */
+" c #59746B",
+" . c #3A6592",
+" X c #E7BEA4",
+" o c #6774BB",
+" O c #3E4CA0",
+" + c #94D6F4",
+" @ c #D5CFF2",
+" # c #475642",
+" $ c #444853",
+" % c #22558E",
+" & c #909FE3",
+" * c #0A2A66",
+" = c #ABBAE3",
+" - c #0A3987",
+" ; c #4385CC",
+" : c #69686A",
+" > c #508290",
+" , c #E0D5C1",
+" < c #0B2428",
+" 1 c #57666C",
+" 2 c #283C8A",
+" 3 c #303428",
+" 4 c #CEBCE1",
+" 5 c #A89A8A",
+" 6 c #E4E6D2",
+" 7 c #EFDDD3",
+" 8 c #1D1D47",
+" 9 c #6669B3",
+" 0 c #425AAA",
+" q c #97856C",
+" w c #6587E0",
+" e c #5C3511",
+" r c #82BDEF",
+" t c #0A182A",
+" y c #7A87B9",
+" u c #0A2641",
+" i c #C59964",
+" p c #1B466C",
+" a c #0B1417",
+" s c #575A86",
+" d c #C49D7A",
+" f c #D2BCAC",
+" g c #8E88B2",
+" h c #314446",
+" j c #FCF5D5",
+" k c #96A79F",
+" l c #956D45",
+" z c #99BDE4",
+" x c #475662",
+" c c #45453F",
+" v c #44588A",
+" b c #565DA9",
+" n c #95A8BF",
+" m c #A7A3B3",
+" M c #95B1E0",
+" N c #6A5435",
+" B c #150E27",
+" V c #808F72",
+" C c #0C1C49",
+" Z c #EECAA6",
+" A c #B49277",
+" S c #7FA8E8",
+" D c #8F888E",
+" F c #3C210B",
+" G c #081D66",
+" H c #7C93DB",
+" J c #576ABA",
+" K c #E3E8F4",
+" L c #3C75BD",
+" P c #DCC7B5",
+" I c #AEA595",
+" U c #1A3649",
+" Y c #D6CFDA",
+" T c #767489",
+" R c #191B27",
+" E c #1B4557",
+" W c #80A8C4",
+" Q c #CEB5A7",
+" ! c #A8A3D1",
+" ~ c #3E2913",
+" ^ c #4869B8",
+" / c #182D7F",
+" ( c #957E86",
+" ) c #847768",
+" _ c #845526",
+" ` c #6D766F",
+" ' c #655D85",
+" ] c #BDA5AD",
+" [ c #97B0B9",
+" { c #2357A7",
+" } c #C7C4B0",
+" | c #AAB59A",
+". c #B58A59",
+".. c #31578D",
+".X c #765D46",
+".o c #865D2E",
+".O c #C3C9E4",
+".+ c #ADC7F6",
+".@ c #5879BD",
+".# c #AC7D46",
+".$ c #998F72",
+".% c #BEBABE",
+".& c #C0A78B",
+".* c #080C29",
+".= c #253181",
+".- c #7E9196",
+".; c #7E9EE2",
+".: c #FCE8C9",
+".> c #A9AFDE",
+"., c #959D9C",
+".< c #5285A6",
+".1 c #AEC6DC",
+".2 c #A599AF",
+".3 c #C2C6C8",
+".4 c #6792DF",
+".5 c #675B51",
+".6 c #B99466",
+".7 c #F5D7B8",
+".8 c #302511",
+".9 c #69728B",
+".0 c #74698C",
+".q c #8D94E0",
+".w c #45496B",
+".e c #0A0B10",
+".r c #493319",
+".t c #CEAB8B",
+".y c #99C8F2",
+".u c #453C36",
+".i c #31544D",
+".p c #6994A5",
+".a c #1B2327",
+".s c #2C4887",
+".d c #0B344C",
+".f c #B2A383",
+".g c #81A7A2",
+".h c #C1E4F8",
+".j c #7C92BB",
+".k c #58452E",
+".l c #43644E",
+".z c #997A5A",
+".x c #6791C4",
+".c c #956935",
+".v c #2E4AA0",
+".b c #79552A",
+".n c #544D80",
+".m c #23546A",
+".M c #19273C",
+".N c #182B66",
+".B c #19489F",
+".V c #945E2A",
+".C c #5285C3",
+".Z c #3E3D53",
+".A c #C2B399",
+".S c #AFC5C5",
+".D c #3D3552",
+".F c #436F72",
+".G c #D9DAEB",
+".H c #3D2927",
+".J c #3B749F",
+".K c #5A5440",
+".L c #D0F4F9",
+".P c #2C63AE",
+".I c #A9865C",
+".U c #9D7543",
+".Y c #687C93",
+".T c #B0D5F4",
+".R c #A78F7B",
+".E c #687CBE",
+".W c #2A3B6A",
+".Q c #AC7D55",
+".! c #7674B8",
+".~ c #150D10",
+".^ c #684A26",
+"./ c #AB936B",
+".( c #E1C4A0",
+".) c #1A376E",
+"._ c #31566A",
+".` c #281B12",
+".' c #676788",
+".] c #867C8C",
+".[ c #7F9C9C",
+".{ c #528FC9",
+".} c #1B3226",
+".| c #BFAFB0",
+"X c #D5B694",
+"X. c #ABAEBA",
+"XX c #6B745A",
+"Xo c #665148",
+"XO c #A498C7",
+"X+ c #6687A1",
+"X@ c #B89B7E",
+"X# c #C6D4C7",
+"X$ c #F8ECEB",
+"X% c #82AEB9",
+"X& c #E4BC92",
+"X* c #4A4329",
+"X= c #1A3988",
+"X- c #171718",
+"X; c #BEBBDD",
+"X: c #81B0E3",
+"X> c #6586C1",
+"X, c #2F3640",
+"X< c #98BCBE",
+"X1 c #251D29",
+"X2 c #6A9CC9",
+"X3 c #7C8471",
+"X4 c #4A7599",
+"X5 c #554C58",
+"X6 c #3A67B1",
+"X7 c #6C948C",
+"X8 c #6A9EE0",
+"X9 c #70644E",
+"X0 c #93A8E4",
+"Xq c #41646F",
+"Xw c #949EBA",
+"Xe c #2E4763",
+"Xr c #7E9DC2",
+"Xt c #513B1F",
+"Xy c #BDB1DF",
+"Xu c #D0A774",
+"Xi c #3159A8",
+"Xp c #587796",
+"Xa c #3F3D77",
+"Xs c #263065",
+"Xd c #5D3D2E",
+"Xf c #4A76BD",
+"Xg c #896538",
+"Xh c #C5D7ED",
+"Xj c #5D3D1A",
+"Xk c #8A7350",
+"Xl c #575860",
+"Xz c #764D22",
+"Xx c #806B5A",
+"Xc c #7E8690",
+"Xv c #0B2B7F",
+"Xb c #1A4687",
+"Xn c #486893",
+"Xm c #767DBD",
+"XM c #556557",
+"XN c #FAFAF9",
+"XB c #688584",
+"XV c #3F3431",
+"XC c #7987D7",
+"XZ c #D0E6F4",
+"XA c #2B6394",
+"XS c #E5F6F8",
+"XD c #282B38",
+"XF c #0B356E",
+"XG c #586892",
+"XH c #ADB9C1",
+"XJ c #929296",
+"XK c #787C8D",
+"XL c #434B84",
+"XP c #867CB2",
+"XI c #2A2726",
+"XU c #9293B7",
+"XY c None",
+/* pixels */
+"X+ MXr.9 1 x `X9 cX9 ) 3.uXIX1XIXI.` c.8.`X5.H.ZX1.a h.M <.M vXG v.M u u.m % .X4Xm g.9.9.aXM : `Xx m.9XJ.9 xXp.9.Y.@ yXw.wXl.9.9.jXK : 3XV ( D.0Xw.C ; ;Xf.;XG 3 8.YXr r z.x.@X0XHXc x 3.aXI.8XI.}.}X,.@ yX>.9.YXl.K.K.] ) m T.9.iXc M & yXnX+X7.[ .iX%.Y.;X0.>.+XwXl.9XKXIXI 3XVXV.kX5.k.k.k.u.H.DXV.K.u 3XVXV.u 3 3 c #X,XcXw., I kXc.% :.} R R t R R R R.a R.a R R.a RX-X-.a RX, RX-.a RX- R a.a.aX- a.aX- RXIX- RX,.aXD XH } 5XJXHXJX,.Y.-.YXr.- nXD.u.D.kXV.HXV ~XV.rXVXVXV.8.u ) )Xk ~XVXVXo.HXV #X5X3XJ D : `., D kXJ., )X9.k.k.k NX9.kXx.k.k.X.kXgXg N NXx N NXx.^ ).RXt NXxXxXtXx.X.kX*Xo.r.k.X.r.X ~ 3.H.uXI.H.H.H.r.rXx (.].RXo.0.k m (XaXd.DX5 ~.uX,.M c 3 3 3.8.HXIX1XI.H 3XV.8.K 3.MXIXI.8XI ~.`.8XIXIXIXDXD.aXD 3XIXVX*Xo.^.H.8XVXIXD.Z c.uXVXVXD.HX1X5 :.KXIXI 3 3 3XI.H 3.8.HXVXIXV x.jXpXq.j [.[ nXh.YXB.[XqXe.g.9XwXpXr.{ > >._ h.w x x.j.[Xp.-XH [ n.%XKXHXKX1XI c mX3.3 m k I V.Z., kXK 3.u cX,XVX,XD.M R 3.aX,.ZXIXDXDXD 3X,X, B R.a RXDXIX,Xl.ZX5X, $XDXD BX5 RX-.aX-.aX-X,.ZXD 3XD aXDXDX-X,XIXD.a.a R.K #.u : cXIXD B :XP $ $.Z x.w.MXDXDXD hXDX,XD.} $X,Xl.w $X,XD.Z.M TXJ.w $XU c.wXDXD RXD.Z.Z.w $XeXlXK.MXD U xX, h $Xl $ x cX, hXIX,.aXD.a.ZXl.Z.M $Xl.Z c.MXIXIXDX5.H.Z c h $ hX,X,.wX,X, h U h U.a.}X,X,XD.a.}",
+"X+X+ y [.- : : 3X1 qXJ.5X1XDXIX1X1XVXJ.8XVXl.uXDX1.a RX,.} t.W.Y v 8.M t p %X6X:.EXsXa $.Z hXD $.M.Z : h UXcXw.pXr H.EX0 U 3.a.MX, UXD 3.8.KXDX, EXrXf.@.@ yXKX,Xc MXp.CX4Xn ^.E.WXK .- hXI 3XI.}.}Xn.E v.@Xr.jXcXJXV.$X.X5 $XwXJ h nXr J.jXGXe #.l .Y.E o.x M = =XUXH., cXl.K.K.K.5X9.5.K.kX*X5.Z.KX*.r.uXVXV 3 3 3 3 # DXc.-.]XJ `.,X..9X,.a R R R R RX- R R R R R R R.a R RXD.a R R R R R R R R R.aXI.a R.aX- R tX,XDX,Xc n.% |., D.-X, .-Xc n.,XwXIXDXV.kXVXVXVXVXV.8XV.rXVXtX*Xx.RXVX*.rXI.5.u.5 : c.5Xl #.u c c c :Xl.K.k.k.k.k.kXo q.zXkXt 5./Xt q./X9Xt.R.R.z.X.k./XxXd ) NXx.kXx.XXtXk 5.rX* qXk.K.r 3.H $XVXVXdX5.RX@ ( ] ] g ).2.5.2Xy g ! ( I.K 3.u 3.H 3.u ~ 3XI 3.` 3XI.8.8XV cXVXDXI 3.`XI.8XVXIX1XIX1XIXDXIX1 R.H.8.u.^Xo.`.HXI.HXI.HXI.HXVXV.uXD 3X5 D k DXlX5 xX5X, cX,.u cXV cXV $.Y 1XpXqXp.T xXq.[Xp.F.F <.9Xq h._Xq.m._XA.i.w h $.).-Xp.[.YXc xXD h h 3XlX,XI a c.u c.u $X,.ZX,XD 3 :.}XD.ZXl $X5X5.u $.M RXIX,X,XDXDXDXlXD cX,XDX-XD.a 8.aXDXDXD.aXDX,.a 3 cXl.aX1XI RX1X- RX,.a B 3 RX-XDX- hXI RXDXIX-.K.5 3 `X1XD $.9XD hXK.Z U $ $XDX,X, xXl x $X1 hXI.aX, $ $.ZX1.aXDX1 $XUXl $.Z.w t $.ZX,X,XDX,XD.'Xw.ZX, $ $ $X, RX,.Z $ x : 1X5XD hXDXD.M.Z hXDXD $ x c xXD.ZXD $X,XD hXD <XDX, $ UXeXlXDXDXDX, h.M.MX,X,XDXD",
+" . MX+.Y.w.9 : c c.|.$ `.5.5 x :XI c.5.H.uXVX1XIXIX1 3 3 x h.ZXs s U C uXeX4.xX>X>Xr v._Xe v sXc.Y nXeXc.iXKXw.j.jX>.@ y.W.}XI 3XIXD.H.H ).H xXK.Y.pXGX+.Y $X,X, vX>.@.....s.@.EX>X0 J.Y x.M 3XlXl.M y.;.....E.-XwXc D ! DX;.3 D mXJ sXwXr.@XnX>.jXBX,.i._ 0.C M &.- mXc :XD.8XV.uXVX*.K.k c.k.K.uX*X9.K.K.K.K.KX5.K c.uXJ nXUX;XK., IX..,Xc c.a.a.M.a.a RX1X1X1X- RX-X-X- R RX- 3X- R.aX- t RX- R RX-X- RX- RX- RXDXDX,.-.>XwXHX. T D :XlXD h.j., nXwXJX,.uX5X*XV.H.H.r.u.u.r 3.r.HXx.kXV ~.rXVXVXoXIXIXV.HXX.]X3 DXJ.,XJ IXc.5.K.kXt.k.kXoXkXxXx.k.R qXt.R )Xx.^ qXx.R.k N.R q.k.$.X qXt.$ NX9X9 5 NX9.^XxX*.8XV.`.HXdX1.D A ]XyXyXOXO.0XO.2.> gXyXOXOXO ! mXJ.8XtXV ~ ~ 3XVXI.8.}X1 RXI.8X1.H $ 3.HXI 3XVXIXIXV.u 3 3XVXV.u c.u c c cXJX9 c.uX5XVX5XVX5.uXVX* 3.u.uXI c.K ` k.-.9 Xp Xq xXD.8XI.a.}.9X+XpXBXqXn n.FX4.p .X+Xe XpXpX+ >.<X4.F.F._ xXe t u.M U t.M tXD RXD aXl 3X1XDXIX1XVX5X3 : 3X,XDXIXIX,.aXIX,X, R.Z.u $X,X,.aX, 3X,.a.a R.ZX-.MXDX- RX,XD RX1.aX1XIXD c tX5X- R.a R R.aXI.a.aX1.a.aX1 R.a RX- hXD RXD.` aXI :.u :X-X1.aXD gX..'.9.w x s hXD.MXD.ZXD 3XD.a RXD 3XDX, $X,XIXDXDXl.ZX, $.ZXcXKXD h s $ $XD x.-.ZXl $.M $.Z xXD.aXDX,XDXD $XlXlX,.aXD.a $.M.M.a x $ 1X5 hX, $ $ $XD U.w x 1 1Xq 1Xq 1 U UXD.} $ xX,X, RXD",
+"Xr vXeXe.M.Z 3 3XlXxX3Xl c #XlX1XDX1 ` 3XIX1XIXI R.~ 3.aX5 c CXD.w.N.MX,._Xn 2 0XiXn.@.EX>X>Xp.YX>.j [ 1.Y.jXpXnX4 0XiX>X>XB # aX,XDXI cX,.MXKX+.Y y.[ $.aXD $ 1XfX> %..Xi .X8X4.4 ^.@X>.w UXlXw.1.>.T M M H.jXr xX,XcX5XJ.0 cXlXx `.9XcXwXrXf 0Xe t.a.a.WXnXfX:.jXw.,Xc D 3XV 3XV ~XVXV.rXVXVXV.u.K.K # 3 ~.u.H.H.`XI :.% D m.wXw : x.3XHXlX,.}XD 3XDX, 3XD 3XDX,X,X, 3X,X,X,X, $XDXDX,XD 3XDXDXIXDXDXDX1.aXDXD R.aX,.Z.9XwX.XwX.XcXl.9 $X5 xX, $ $X, hXI.H.K.H ~.HXV.H.8 ~XV ~ ~XX ) ~X*XV.HXVXV.kXVXVXV 3.u #.5 :X5.K.K.5 :.K.kXd.u.k.k.^.5.kXo.r.^XtXt NXd N.r.^XjXdXt.^ NX9.r.^ N.kXt.^.k.^.^.kXj.kX*XV.`.HXdXo (Xo ' Q.2 ]XOXOXO.>XO.>.> !X; 4.>Xy.>XyXK $.u.u.kXt.u.KX* #.u # c # cX5.u.u c )X5 cXVXV c.u 3 3XVXVXV.H.H.H.8.KX5 : )X,XIXI.8.8XI.8.8 3X1 R.` 3.`XI 3XDXD x XpXnXqXnXqXnX+.Y $ c.M.M.}Xe.F >Xq WXrX+XqX:.FXB E 1X4._.FXBX+XpXBXq.iXe 1.d t < t.MXD <X-.a R 3 $ cX1.`XI c $.u x : ` :.ZX5X,.u $X, cX5 3XDXD $ c $XDX,XD.Z c D 1 $ $ c 1 $XJXJXl.ZXDXD.aX1.aXlXI.aX-.aXIX-.aX-.aXI RXI.a.a.aXI RXD RXD 3X- 3XI 3 3 : #.ZX, $X,.MXD 1X.X,.wX,Xl RXDXDXI.Z hXDXDXD.aX, :XlXI.Z 1.Z hX,Xl $ hX, mXlXl.MXJ.M c x.'.9 R U.Z.Z $ h.Z x.Z.aXDXD.MX1X,.ZXl.a.a RXDXDXD RX, c.Z $ hXD x U U.WX,.i._Xq.FXqXqXqX+ 1.WXDX5.'XK D $X1 R",
+"Xp o._XG.MXDXDX5.5 ` )XI.5 3 3 3.Z.u c c.5 c c.uX5.K.K : ) `X1XD.N 1XMXe.}Xs.w..Xe ....m......Xf...@.j n HXn.s...s 0 0 ^X6.@.YXpXe._.pXe EXqXr...p yX+ 1 yXp.xXf ^.s.. %.mXA.x SXf wX+XG U hX,.9.E o.@XGX0Xr.jXpXDX,X5 RXlXD.8 3.} ) :.'XqX0.EXi ^ y $.MXs.@.<.CXw.-.'XcXc.8 3X*.u.uXV ~XVXV ~XV ~.K ) ).k ~XV 3.8XD.HXD `.%X..,.,Xl 1.3XJ s t tX-X- RX- RX- R.`X-X- a R RX- RXDXD RXI R.aXI R.aXD.aXIX,XDXDXIXDX,X, $X, $.9XcXw.- ' c '.Z.ZXlX.X.XJ : :.K.K )X5Xo.KXo.K.k.K.K.K.5.$X9.K.K.k.k.k.kX5X* c.kX5.K.5.K :.K :.5.5X9Xo.5.5Xo.XXo.5.XXo.X.5.X.X.XX9.XX9.X.XXx.XX9Xg.X.zX9.X.XX9XxX9X9XxXx.XXxX9.K.K.kX5Xx.7XO A 4 4 4X;.> ! g ! !.>.O.O !Xy ! =.>.> =Xc.' `XH.].K.8.u 3X*X*XIX-XIXI $ :.2 D IX1 3X1.aXIXDXIXIXI.8 ~.8 F cX9 c ` 1X, 3 RXI.H.8.H 3.~ 3 3 3.`XIXI.8 c # hX,XqXBXq..._Xq._XqXB > XB xX, t xX+X7X+Xn._ . WXp x < U x.YXpXp.p._XnX+XnXe.i._.}.M.} t.a.a.a.aX-XIX-.uX5X, 3 :XlXDXc cXIXD `XIXI 3 R.u.ZXlXK cX,XIX, 3Xl.Z $ 1.9 $XKXKXK $XKXl :.9X5 UXDX,X,X,XD $ $ RXI RX1XD.aXD RXD hXDXDXI $.Z xXV.Z c x $X,XI R 3.~XlXD RXDXIX,XDX,Xl.aXK s.w.9.Z R UXD.Z.Z.M 3.M $XJXHX,.MX,XDX,.ZX,.Z.a.MXD h $XcX.XD.M.9 : $.ZXD.M RX,.Z h $ x $X, hXD.aXDX,.ZX,XDXDXD.ZXDXD.M h h.a.Z 1 xXD.N.MXeXn._X+.[X+.[ [.yX< yXH.9XKXl.' $.ZXI",
+" b._XsXG 8X,X5 $XJ.5 ) :XcX5 $ $.5 ` ` : :Xx $.kX5XX ).5 c.u.5X,XDXG.Y UXD t.a.9.W E p.m . %Xf %Xn H.j M o..X6 2.sXL.v %.sXiX6X4X>.<.x.<X2Xf.<.E.pXp.WX+ v ^ { { %Xb E.dXA %X>XiX6.@.M.a.9 yXq.EXp.@.s . H E UXD 3 cX1.5 cXD.}.aX,X,XDXc y MX>X>.E.+ y.Z 8X+Xf W = D.wXVXD.u.uXI ~XVXVXVXV.r 3XV.K.u.kXtX*.uXV.H.HXV.` 3.u :Xl.ZXDX,.9XHXJ.a.a R R.a R R R.`X- R.aX- R.a RX-.aX,X-.a RX- R.aX-.aX-X-X- aX-.aXDX- tX- h t t.M t.M 8.M 8 8X-.DX..2 cXDXIXIXVXVXo.r.u.H ~.u.uXVXt.KXxXV.k.r.rXVX*XVX* c.H.HXV.u.kX5.K.5.K.K.K.kXoX5Xo.k.k.K.kXoXo.K.^.kXo.K.kXo.kXo.^.k.^XoXd.kXo.XXo.k.k.kXoXdX5.kXtXo.uX* 3.`.H : ] ].R 4 ]XUXUXPXP gXmXU sXw =Xc.- .-Xw nXw.1 1.pXc.Y k 1 c.u 3.5 RXl ).,XJ m :.5.0.uXI.`XDXIXIXI 3.uXV.HXVXt.k.5 3X5 ` :.,X,XDXD.8XIX1XIX,XI.MXI.8 3XIXI 3 # h.i.M._.pXq E._.m._.m._Xq.FXpXB 1 h <XnXp.F._XeXq.lX4.9XD xXKXq._.F.<Xq E.- >.mXq._X,.a < <XD aX-XI aX1.a.K.u c T.K $XJ.5XKXIXMX1.a RXIXDXV 3X1 3X,X,XDX,X,X, $ : $ 1XDXI.aXD R.M RXD.a RX1.a.aXIX1.aXIXI R R.aX1XIXI 1X5 : IXKXJXcXJXJ.-XcXJ R cX1 RXIXIXD.aX5 c B RXDX-X1.a RXJ $ TXJ.wXl.Z.M.ZX, hXDXD $XZ :.MXD RXDXDXDXD.M $X,.a hX,X,Xl.}XDXwX,.MXlXcX, $.w.MXDXlX, xXlX,X,XDXD $ cXDX,XDXDXD hX, RX, x.aX, xXq._ E U v...<X+._ h nXr MX%.- s.Z 8XD.Z RXD 1",
+"XnXsXG U.w $X,X5 )XV c c c.K ` c # R 3.5.K cX9XV ~.kX9X*.K.5XJXV U vX+XG $X5.0 c.M U < U < EXFX6X2 M.+.jXn 0._ u E < u.N p.m.sXi.sXnXbXA % {Xf.JXr vXG HXf % % %.) U.M u.)X6X6XbX> ..M h n yX>XAX:X8X2.xX+.M 3XIXVXV.`XVXD.MXeXp o.j.'.Z $.Z W.xXp.p x t vXG S.+ =XcXV c.uXIX*XV.rXVXVXV.u 3.r.u.K.KX9Xo.u ~ ~XV.8XV.H.8 3XIXI 3 hXlXwXw.9.a.a R R R R.`X-X- RX- RX-X- RX- R.aXIX-.aX- R RX- R R.a.a.aX1 3 a $X, xXJ h.a.M t h xX,XDXDX, DXJ.KXI.H 3XV.uXVX*.k.HXV.r.u.r.rXVXo ).k.uXVXVXV 3XVXV.H.u.8.H 3XV.k cXt.k c.k.k c.K.k.k.k.u.k.kXo.k.kX5.k.kXt.k.KXt.^Xd.X.z.^.XXkXxXo.^.X.kX5Xt.K.r.^X5.rXd.HXV.u m m ]Xy 4 4 !XyXU.9 9.jXPXG y.>X.Xc XXX3 |Xh = WXGXp W.-Xq.Y.[XhXwXh kX..Y : hXVXIXI.u.HXD RXIXIXV.K.K :X9.5XlX*.KXIXV 3Xc `Xc xXI.a 3 3 3 3XJ x.}X,X,.} 3 ` `.YXc xXp XG x x h.M.m.m._.i._.lXe >.<XpXq.FXn x 1 1._.l.-XD.' :.g.FXq.JXrXq M [ >.gX<Xe hXD.a t.} RXI.a.`.` R.].K.%X. D :XJ mXl c RXIX, $ R RXD c 3XD 3XD.a.aX,XD.aX5 RXD tXI t RX1.a R R RX1 RXDXD 3XDXD $ c c hXDXDXc : :XKXc.,XcXlX5X, $X5 $X,XDXl h R R.aXI.a : k 3X1.a R R.aX-XDXw ' xXcXl.Z.ZX, h $X, 1XwXHX,XDXD.M R R.M.a.aX,.w.a $ x 1XD.MX,.ZX, xXDXD xXwXD.Z.>X,Xe.Z.YX,.M.a 3 1XD $XD.a R.ZX,.aXD $X, h.w xXpXp._.F.FX4Xp.j U .j >._Xn x.M.M.Z.M.M.ZXU",
+"XeXqXe.W.wX,X,.]XJ `X5 cX1 a.a.a.a.`XI.uX5 c.u.8.K.5 3XV.KX*.8 R.M.MXn y U.9.] 3XD h U h 1Xq.C.C.C.T.T MX0X+X+ h E 3.}.i u...W 0 O v.. % % {Xf.; H n HX> ^ {Xb.d u R.a C.W.).s..Xf 0 E x.EX6.P {XAXf.<X>X+XD 3 3.u.`.HXIXD x.E.@ JX>.wXJXJ.}X+.p ...Xe.MXqXLXC z !X.., 3 cXVXVXVXVXVXV.rXVXVXV.KXV.uXV.K.HXVXV.8.H.8 3X1 3.5X3 c ` m.-Xc R R R RX- RX- R R R.` R R RX-X- R.a.aXD R RX-.a RX-.a R RX-XD 1 ` a.9 ` $ s U h.a.}XG h.MXD.,XJXVXI.H.uXVXVXV.u.H.u.k.r.r.H.r.uXo.5.5Xo.5.u ~.uXV.H.rXVXV ~XV ~XVXt.u.kX5.k.k.k.kXdXt.k.k.k.kXo.k.kXt.u.k.k.k.kX5XtXo.k.^Xx qXd N.$.^ NXx I.kXd.k.kX5.u.HXVXVXx c ' ] Q !XyXU.> ! !.1.>XU g.jXw.j.> [ | k kXMXBXS nXpXp >.gX4._._ nXrX<.jX+X+ .YXM.MXIXI 3XVXIXIXIXI 3XM.uXVXI.} cXDX,XV.`XI 3Xl # $.MXD.MXD $.- .9.} xXB.Y.Y.9 1 x 1 .- xXeXe.a.M < U < h xXe._XqXn.J.pX4._ 1X,.i ._.9 1 :Xc [.T WX: n W W.[.TX%.,.Y h <.a.a R.aX-X1 RX- 3XI ) $ :XIX1X, :XIXD.aX1 3 :.aXV 3 RX1.}XDXD.aX1.aXDXDXIX, RXI BXDX,XDX,X,XD $ hX,X,XDX,XI R.aXDX,X-X1.aXIXD hXDXD.Z RX-.aX1.aXIXDX-XDX-XlXI.aX1.a R.3.ZXl cX1.aXIX-X1XD aXD T.ZXc.2 hX, $ $ $XK x $ xX,.ZXD.MXD R.M R RX,Xl.M x x.Z R.aX, $.Z.ZX,X,X,.a.wXcX,.Z.-.9 $ $., $XI.9 :XDXDX, RX,XD.M.ZXD 1.9 1._.FXp >X4.FXn.FXw._.[ W X4 Xe.w U.YXK.j.-",
+" sXe.w xX,.ZX,XK `.3 D `.]Xl.ZXIX1X*X5.kX5.k.u.5.KXV.K.$.5.aXI R.a.M v.YXLXDX1X1Xs $ cXl 3 UXL.v L SX:.;X0.; g k.-.Y.-.[X,XK 9.!.0.! C U.s %Xf S S.xX6X6.s...W uXD tX1.D.M.W.sXi.4.C.4.C.JX6.P { {.P %._XK h R.k.8.HXIX1.Z.EXG J.E.E.a x.5X,.jX>Xi 0.d.W U._..X>XhXh m V : 3XV.uXV ~XV.u.8.rX*.kX* qXxXV.r.HXV.H.HXV.HXV.K |.,X. m n : $ t.a t R R R RX-X- RX- R RX- R R RX-X, RX- RXI a.a R.~X,XD.9 h.'XG.Z $ t.M $ 1.M 8XeXc xX, : :XIXVXV ~.u ~.u.rXV.H.K.kXVX5 NXx )X9.uXtXX.5X*.8.8XVXV 3XIXVXVXV 3.rXVX*.k.k.k.k.k.kXt.kXt.k.k.k.u.k.kX*.k.k.k.k.k.k.k c.k.^ q.R.kXk.zXx N ( )X9.kX*XV.r.H.8.H D 5 (Xx.2XyXO !.q &X0.> &.1 = =.OXhXw =., [ | V V.g kXpXnXpXnXp.F x EXe._XeXeXe..XqX4.YXq.}.MXD cXIX1XI.8.u.KX*.$ `X3XH kXc hXIXI 3X1.} $.} h.Y Xc.Y `.,._X+Xn._XqXq._XeXqXnX+XpXe h.M u.M.a tXI RXDX,Xe.F WX4 ...XeXe.i.M U._ 1Xw h $ $.[XqXpX4.<.p n [ [ [.[ x < R R R.aXD c R.` R.`X- :.`XD cXI.a $ RX1.aXDXIXI.a T.a.aX-XD.M 3 RX,X,X,X,X,XlX,X,XDXDXDXDXDX,XDXD RXDXD RXD.aX- R.Z cX, 3X,X1XDX- RX,.u h 3.a RXI.aXDX1.aXD $X, R.aX1X.XKXIX,XlX5XIXI RXI RXI.a.Z D 1.'XD.ZXH.9.Z.'X, x $ $ $X,.ZX,.MXD.MX,.Z.Z x.ZX, $.ZX, $.9.9X1.ZX,XD.a tXDX,.w hXD.'X..aXDXc.,.ZX,XDX1XD.M.a hX,.Y.9X+XqXp k z.T.[ M M zXZ.T.-X+ X+._Xq E._.[.YXG",
+" xXG h hX5 UXI $X5 $Xw mXl.2 'Xc.KX5XV.u.u.K )X9.8.8.K : cXI RXI.aXlXD._ s U 8 xXKXDXIX1X1 R.=..XiX6XA.. vXaX1 R.}X,.} $.u :.n ( g.]XD.W .Xi ; S.J ;XAXb...) U.N tXDXDXD 8 C.. {X6Xf.P.P ..4 L LXi...@.E.W RX5.H.H.`XIX1 xXKX+ y v.MXI 3 3.} y S.C ^..Xe t E ..x.- Y.G., }XV 3.8 3.u.u.8X* 3 #.r.8.K.K ~XVXV.H.r.HXV.u ).,.%.,XMX..-.9.M R R R R RX- R.`X-X- RX-X- R.aX-.~.aXDX- R.a.eX- tXD 1 :XJ.w.MXD :Xw.9.a hXU.-.9.-.- n.9Xl h 3.uX*X9.5.5XxX9 :X9.5 (Xx.XXo.KX* ~.r.8.8.uXtXV 3.uXV.H.H.`.u 3XV ~XV ~.kX*.kXt.k.k.k.k.k.k.kXt.kX*.k.k.k.kX*.k.k.k.k.k.k.k.k.^ NXtXoXo.k.KXx.u.kXV.H ~XI.H.H.u ].| ].2 ! !.> &.>.+.+.EX0 =.> = nXhX; [XcX3X3 V X3 [XGXnX+._.i U u._ x.9 E._ p.i MX+ XnXp x.} hXD.}XI.8.u N.`.`XM.Y.Y.gXr 1.`X1XI.8XD 3 x XpXqXqXp W.-.YXq..._._XeXe EXeXpXq y._Xe 1.M R :.DXD RXDX, h.MXe ..m._.m._ x.FXe._ 1 x.} RXKXn x._Xe._XqXnXBXp XcXcX, hXD 3 R.a.5 RXIX1 $X1 3XlX-.ZXI RXI cX1X1XIX,XIXD c :XDX,X, 3X,.aXDXI.MXD RXDX,.aX,.a.a R.MXDXDXD cXD.aX,XDXIXD.a RXD $XDXI.,XJ x.aX-.a RXDX,XD aXD.a R 3.MXD $.Z aXIXH c 3XI.aXV #X5 $ 3 R R R.}XDXIX, $ hXU.Z.w nXD.Z ' $X, s $X,.wX,.DXD.M R 1 $ U.aXD $.'XKX.XK.YXl $.MXDX, 8 U $XD hXl $ xX5Xl.9X1X,XI.MXD.MX, h.YXp.p.-XcXq.[.1.3.[.pX+X4.M.} hXcX4XqXq._.mXnXqXp",
+".Y $.W hX, $.MXDX, R $XlXD RXI RXVX* :Xx :XoXV.`.5X9.u RX1 cXD R.` D XBXcXpXGXGXc.wXD.8X1X1 8XL._ %.....M RX1X1.MX-XDXI.`.k.5.ZXV.} R U vXpX> L.J.J.P %XA ^X6 v 0.sXn.}._.j % {X6 ^XiXfX4X8 rXf ^ w.9.w UX,XDX1XIXI 3X1 hXDX,.a.aX,XIXIXDXG.EX>.@.@.; v E.m % %X+.Y.S.G m., 3XVXV 3.H.uXVXV.K.k ).KX*XV ~.H.8XIXI 3 3X.X..O.3.3.1XH 1 R R.a R.aX- R R R R RX-X-.aX- a R.aXDXI.a RX-.Z $X5 :XKX,.a.eXI R $ [XH 1XwXJ.,.9 $ c.MXIXI cX9.5X9.5.X.5.k.u.k.u.uXX.uXt.H.rXV 3.r.uXV.r 3 ~XV.r 3 3.8 3.u.r.HXVXVXVXt.k.k.k.k.k.k.k.k.k.kXt.k.k.k.K.k.k.k.kX*X*X*X*.k.k.KXt.k.K.k.^.kXo.5 ~.r.HXI.8.H.HX5 q.2X@ ( ] ! !Xm H.; z z bXr.>.EX0Xw [XK.Y `X3 c #XXX3Xw [.pXp._.s E <XD.M xXD hXc.MXeX+X%Xn x.9.9.9 1X,XI.a.k c.8 3 3 `X%.<X+.[.' #.8.aXDXM.- 1._._ EXcXpXM x._ x p U U.M U.W = [ n.Y n.'XcXr.9XJ.2XV.H.~XVXD.M 1 U...p.F.<.[Xp.g.[ x.jXB.Y._ E._XeXe.iXq xXeXD $X-X,XD cXI R RX1XD.5.uX, : :.u.u cXl c $ 3X1 3 RXD.a RX- R.a R.a R.a.a.a.a RXIX,XD R a.a R.a.aX,.ZXDX, $X,X,.Z $.uXI.aXD c tX.XJX5.aX-XI.aXIXD cXlXK cX, : :Xl :XJXKX- :XlXD.`.a R RXI 3X5XM.KXDXD RXD.a R.Z RXD.Z.9 RXK.w.Z m.Z.] TX, $.Z xXD 8 R.w.Z.M RXD.M.Z.Z.'XcXK gXK T 1 h $ $X,X,.M 3X5XlX, RXIX,X, RXDXD.M $.Y.<Xr.iXD R.aXDX,.,Xp >X+.}X, R c.pX+XAXq._._.<X+",
+" x $ $ x $XD.a.ZXDXI.' RX,XD.a RX1.`XVXIXD.H.`.uXXXVX- 3 cX- aXI.8XV.KXc.iXsXe.j n hXIX-X-XI.u UXs E U.d 8 R R.HXI.ZX,.uXxX3., `.l 1 $ $Xe v.mXA %Xb.dXF..Xb.PXi %Xp.J.J.dXA.JX8 HX>X2.x.p.jX>XC HXL.N.a.a $XDXD.aXI.`.}XI.a 3.}X,.aXD $ gX+Xp.x.E.@.EXn._._XA.J.@ x $XwXhX. D 3XI.H 3X*XV.K ~.K.$X9XV.rXI.8.8 ~XVXl.2X.XU nXw n.3XU 1 R a RX-X-X-X- RX-.aX- RX- R R R aX-X,X- R.~XD $ `XlX, a RX1.} R a.u T 3XK : hXIX1 3XD c.KXXX9 c.kX*Xx.k ~Xt.8.rXV.rXo.8.H 3XVXV.r.u 3 ~.u.rXV ~ 3 ~XV.u ~X5 3XVXV.r.HX*.k.k.k.k.k.k.k.k.k.kX*X*.k.k.k.k.k.kX*.r.r.u.r.rXt.rXV.rXtX*.k.u.r.kXVXI.8XV.`X5.R.5Xo.k.2.R.2 !XU M o.v ^ H O s HXLXGXU.[ X3 : c h c 1 X7 W W.<._ v UXq #Xc.l $ kXq <.M.WXe._XeXq x.- XMX1X*.5.` 3XIXpX< +Xr.- ` 1XDXl `.-.Y.FXeXe EXp x $ $.Z U.} R < R.a.M tXq.WXG UX,Xe.Z.M.WXs.MX,.`X5.uXIX-Xl xX< zX<.y.1.SXh.Y.9.-.p.F.m._.M.M h hXe x $ hXD.Z x.a cX,.5.a.u 3 3 3 RX1 c.KXl B.`X1X1 3XDXI.aX-X-XD RXD R RX- R.a R R RXI RXD.aX,X, c.'.a tXD.aX,XDX,XD RXIX,X, h $ c cXDXI., :XKX-XD R.a R R.aXIXK VXKXl T :Xl :.5 3X1.aX-X-.aX1XIX, 3.a.5X, c :X5 R R RX1.ZX, RX- RX, $ $ 1X,XcXc 8.ZXl T $X,X, 8X,.w.aXD RXDXD.M tXD 1 hXK.9Xc.9XJ $ $XlXI.a :X,XIXDXDX, R.M.M.MX,XpX4.p x.MXVXIXVX1X,.-.gX+.} 3XIXIXB >X4._._Xq.pX<",
+" x hXcXUXK x RXlXlXl xXIXD t R.aXI RX1.ZXIXIX1XV 5 #.uX1 R RXD R.`.` 3Xl < U.d.YXwXlX,.a.a $ < c h.M.}.}.M h.Z 3 3X1X1X1.aX* h.SXBX,.a R T.n y.) E u E.F.m.<.{Xf.xXfXA %XA.m.PX6Xp U.ZXw yXJ n 1 $.Z 3 #Xl cXD.u $ c.a 3 3XV 3XI.M.D x.j.jX>X+.d W.x v 0 v ..J wXp.E.jX.XhXHX.Xc `.HXV.H.u.k.kX*X*.k.rXV.H.8.u :.5 :XJXcXcXK.9XcXc.- R.MX- RX- R R RX-.aX- RX-.a R.~ aX1XD.Z.e.aXlX,XlXDX-X- RX1X-X-.8Xl # 3 c.aX* c c 3.u c.5 :XVX*.r.rXxXx.k.rXV 3XVXV.uX5 ~XV.rXV.8 3 ~ ~ 3.rXV 3 ~XVXVXV.rXI.K.H 3.rXV.rX*.k.k.k.k.k.k.k.kX*.k.k.k.k.kX5.k.k.u.rXVXV ~XV 3 ~XV.rXVXVXtXdXV ~X5.8.H.8.`.k :.`.H ~.|XyXy !.'XCXmXp b o.jXGXG b.s.s.YXw ` .lXIXI c 3 X7.g.x..Xe._ 1.p.- Xq.iX..[ 1 xXD.wXq._XeXn 1XK # c c 3.8 3 XG > E.MXD.} RXG.lXp $X4 E.M u U h.aX,XD.a RX1XI.a.`X-.a.a aXDXD RX1 R.a t.ZX,.MX1Xw T.~ : 1 $ nX.Xh.jX<X+Xc.wXe.-.pXq.FXq UXDXDX,.a.i $ $ R RXDXD R RX1 h.~.aX-X- aXI 3 :.HXX cXlX5 c cX1.eXD R.e.a R.a.a.a.a R R.a R.a.a R.aXD.Z : 1 R R R R.a.MX,XDX,XD.a.aXDXDXDXD $X,.3XJXDXI a R RXIX-XDX1XDXD $XD aXV RXI R # 3.Z 3XIXI $ c 3 c cX, 3Xl.a 3Xl :X5 cX,XlXD.ZX5 h 3 $X1 c.DXI aX1.w.ZXD.ZX,XDX,XD.Z tXD.a RXD R.M R R.MX-XDXDX,.Z $.a $X,.u.Z.uXDXD.Z.aXD RXD U.9.JX4.[XD RXI.`.8XDX, h [XlXIXIXI.p ..FX4.FXn.[.Y",
+"Xl s hXw.'X,XD.,Xc TXD x ` cX, 3.aXDXDXD RX1X-.KX3X-XI RX-.a R RXDX1.u.u hXD x y XeXKXqXe.}.}.a U $X,XDXDXDX-X-X- R.a.a 3.a 1 $.3.M.a.a.] 8Xw tXD.a.e.h.x M.{X:X2X>X:.< %XAXnXrXwXl 1.'XcX5 cXI.aXI 3X-XI.HX1XDXI 3XI 3 3 3.Z.Z.Y.jX> yXC M._.F.p.1.+.+.xX0.;X>XnXGXp.TXc.O m DXJX5XVXVX5 3.5 qX*.u.HXV.8.u.K.K 3.,XH.j.9X+.Y.i sX, RX- R aXI R.aX- RX- RX-.a R.a.a R.a R c $ T ` x.eXI.aX-.a.a.` cXXXIXIXV 3XV c.8XV 3.K ).KXtXt.H.k.zXo.r 3.r ~XVXV.H cXV.rXV 3 ~XV.r.u.u.r 3.r ~XVXV.H.H.H.HX5.H.r 3.r.u c.k.kX*.k.k.k cXd.k.kXt.k.u.k.k c.k.rXV ~ ~ 3 ~ ~XV.8.r.r.`X* 3XV.8.K.8.8.8XV.uXV.uXdXV.RXy ! &XC.! yXmXGXeXH.WXaXeXG vXnXrX7 1 :.}.aX,.M # .gX+.pXqXp._Xp.[X+ 1Xq x.iXnXcXc.9X5Xp EXe._._Xq.9 h 3.8X1 3.9.9XnX+Xq R U < XGXe.i xXe <.a.MXDX,.a R RX- R.`X- R R R RX-.a.uXIX-.HXDX- h.ZX,XeX, `X, :XJX.XJ.,.,XB.1 [.-XcXr [X+.mXe.}.aX1X1 a $.YXc.9Xc T :Xc :XDX-.uXIXI RXIXI R #XV cX- c #X-XDX5.,XJX-.a.a R RX- R R R R.a R.aX-.MX-.M R.aXc $XI.M $XDXD RX-.a R R RXI.MXIXDXDXD cX,.a R.a.a.a R.aX- R aXIXD aX5XIXI RX1 RX-XVX-X5 $ 3XI.aX- RX-.aX1XIX1.}X1 R 3XD c :.5XI 3.`.aX1X,XIX,.ZXlX,.eXD.e RXD.Z.ZX,XD $.MXD R.MX,XDX,.a.aXD h.Z hXD.} cX1 $ xX,X1 cX,.DXDXD.a U.MXq.FXq.p xXI.H.`.8XI RXD 3 # R.H 3 .j WX<.jX% n.g",
+".w h.ZX..ZX,XD n : 1X,XK m ` $.aXJ k x 8XD 1XDXJX*XIX1 RXI.Z $Xl $ <XIXV V ` 1.Z.'.'XGXp.JXA.s p.d.M.M.a R.MX1.a.aXIX- $.M.MXDX1XD R.a.aXqXc ! R.a U.M y S.;...xXn.M.L.+Xn.jX+ g KXh TX5X. x.2 ' )X1XI.H.]X9X1XIXIXI.}.8.}X1.w.YXf...P...@.EXnXq MX2.;Xr.jXrXw & y HX0.+ =XhXhX..| '.HX9.5Xd.K.k )XV.uXV.8X5.KXI.aX3Xw k = n.SXG hXD a R.a aX-X- R R RX-X- RX- R a R RX-X,Xc 1.uXDXI.MX- R RX1X-.K.|.`XVXVXIXVXVX*.u.8.k.XXd ~.rXVXx )Xd.u ~Xd.HXVXVXV 3X5.rXV.HXVXVXV 3.8 3XVXVXVXVXV.r.8.HXVXVXoXIXVXVXV.r.k.kX*XdX*.kX*.k.k c.k.u.k.k.k.kXd c.u.HXVXV ~XVXVXVXVXVXV.8.u.8XV.HX5.8XI.8.uXVXI.HXd ( ] ! g.> 9.v 0XG s `.wX,X,.M.WX6.EXw k .Z.aXI $ `XMX7.[X4XpXq._Xq.Y nXpX+XpXp._Xq p . >.< M._ p._XnXe 1 1 RXIXVXI.a h.YXq :Xq 1 v >.F p.m U h.a R 3 RX5XDX,X,XDXDXDX, 3 3XDX, cXlX,Xl.KX5 c c 3.a h.Z.M.a RXlX- $.-.> n = [.[.1 =X4 MX7._Xq <.a R R R 3.wXl 'XJ 1 $ ' ) BXD R cXD R.a RX-.` R #X5.`XlXIXIXI KXVXDX- RXD aXD.a R.aX-XI R R.aXI R R.a t D :XD.aXc.Z 1Xc $.MXDXD.a.a R.a.a.a R $XD.u.aXIX- R R.aX-.a.a R.~XIX1 c.e.aXIXD 3 $XM.u RXI RX- R.aX1.a.aX1X1 RX1XDX1XI RXI #.5.aXIX-XIXIX1.aX-XD c $XDXD RXD R.Z.w h.M s $X,.Z hX,X,.Z.aXDX,X,XD c cXD.aX-XIX-.aXD $ cX,.MX,X,.W $Xn.mXn.[.a R 3.`.`.H F.H R c c.MXe n.gXpXc n.} $",
+" x.w $Xl x $.aXKXJ $X1XJ k :X- tX.XH RX, 8 mXI $XXXHX5 RXD ' : a R 3XI.8.K :XI.ZXPXs.NX=.s . .X4 JXqXLX,.M.aXDX, 3 3Xl.a a.a.HX,.H R 1X, u 8.M R.a.a C.mX=.P L .X> [XrXZXm.W s y.O nXl.Z ` 3 mXd TXIX1.u.2 :XDXDXIXIXI.8 3.M.Z.EX6 %Xi...4 yX>.xX>.@.;XwXwX5XD 'X0 WX0.j.jX. nXl.D 3.uX5.u.KXxX9.k.uXoX1X5 `X*.u # |.3X;.- y.g.i x.aX, 3.aXI RXI.aX1.a.a.a.a R R RX-X-.aXDXD R R tXDXI.* RX-.a T D.u.u.HXVXV.r.HX*.8Xd ).k ~.r.kXk.X.r.rXxXo.H 3.H 3.u.8XlXVXVXVXV 3XVXVXVXVXVXV.r.8.rXVXVXVXVXV.KXI.u ~XV.u.k.k.k.k.k.k.kX*.k.kX*Xd.k c.kX5.k.k.k.r.HXV.H.HXV.H ~XV.HXVXV.H.u.8.K.u.8XVXV.H.rXV.R.2XO !XC.+.EXm y.' TX5.KXI.M.W.W.W.sXnXrXc 1Xl.a.aX-XM XB.-.[ >.F._XqX7X+.9.[.pXpX+X4.F._ p._Xe._._XeXn.F.Y.Y 3.}Xl $ hX,.-XpXG.Y >XpX4._ x.W xX,XDXDXV 3 RXD.}.a.a.} cX,.aX-.aX, R RX5XI.`X- R.aXIX, h.aXI cXKX- c $ h._ x x.9Xe._Xq.FXnXq EXD.a R.aX1 RX,XDX, RX1X,.` x.aXIXDXDX,X-XI aXI.a.`X* :XI c c.aX1Xl.G cXD RX-X, RXD R.a RXDX1X-X, cXI.aXI RXD.M 3 sXl xXl xXl R.a R R RX1XDXI.aXD.a.ZX, hX1X1.a.aX-XIX-X-XI.a RX-XI.ZXI.u c cXI 3.u t R.a R RXD.aXI aXD RX- R R RX-XI RX-.u ) 3X1.aX1 3XIXIX- $ :.wX, RX1XIX,X, $.ZX, 1 $X, h.Z.wX, $XI.ZXD $.ZX,.ZX1XDX1 RX1XDXl.wX,.M.wXe x pXeXq.FXp.} 3 RX1XI.H.H.r $.u.K 1.}X+XGX<X+ XB.a",
+".w $XK.9XlXDX1XI : RX, 3XI xXIX,X3 : T :.5.,.e 3X,XK B R.' hXw cX1.3 ] x.KX3XM D ` D.D 8 t u u UXeXG.Y.j.EXn.} U 3X3 #XX :XK $XlX5XDXGXe.... U t.} t E.mXb.PXA %.P ;XpXr U xX>X6X8.x :X,.HXD D.2 ).8.H $X. hX, h.iX,.a 3XD hXeXCX6 % %Xf ^X6 .XfX> ..O.+ TXV 3 $.>.j y.Y nX; TXIXVXV c.kXV.kX9 ).8.k.kXoXo.HXI.`XJ., 1X, U x $X,.}X1.a.aXI.aX1XIXDX-XDX,X,.aXDX, 3.Z.a.Z hX,XG.-XwX..-Xl : c.2.$ c.k c.kX*XVX*X*.u.5Xk.K.r.K.XXx.5XtXV :Xx.uXV.HXIXI 3.8.5 3XIXVXV.8.u.~.HXVXIXI.8 3XV.8.8.H.HXDX5.H.HXVXV.8.u.kX*.kX*XdX*.kXtX*Xd.uXdXd.k.k.u.kXVXV ~.HXI.H 3XV 3 ~ 3.HXV.HXI.8.uXV.8.HXIXdX5 D !XOXO H &XC.E.9 =X5X5.]XlX,XD.W.) 0Xn vXr.-.9XX h.8X, 1 k :Xc n.[XrXq.p.jXr.p >.j x 1 `.-.-.-X4XpXpXpXGXq.,.9 U.a xXcXc 1XeXpXq xXeXe E $Xe h t.a tX, RX- RX-XD R.M R R $ a.a.ZX, cXD RX1XIXD RX1XIX-XDX, 'XlXDX,X5XIX-X-X1X1.M U $ x.wXe xXe x $.a.a R.a R R $ c.9 :Xc.9XK TXJ TXcX5X, BX-XI R RX-.aXV.K.uXl.8X5XcXJX5 $XlX,Xl., : 1X5.9 ` TXKXJX. 3 R.aXI 3.u 1 : $ $.Z cX,X, RX- c $X,XD $X,Xl.ZX5Xc cX, R.`XIX-.`XIX-X-X1 R RX-XI 3XIX,.a.a R x.u RX,XD <.9.Z $XlXcX,.'X- R RX1 RXIX1X- R ` c :Xl $ T $ ` mXJ D.Z.a RX, BXD $.Z.MXe x xXDXeXD.ZX, $X,.Z $X, $.Z cX,XD.a RX1.' xXG.YX+.j..._.mXeX4Xc.WX, h c cX5 c.8.H.` R 3 $.Y.F._XB.J >X2",
+" v xXc TXK ` ` ) T c.5.aXl cXM h.~XIXV ` :.K 3 R $Xl 8 R.Z.2 1XD R.|X5XV a.,.a 3 ` Y.DXD.D.- h U.W U.) 2.Y.W <.a hX9.`XVXIXIX1.~X5XD.W..Xb..._.m E U % % % L {XA %X>.x.sXe.@.P.P LX6X+ TXIXVXD.HXV.r cXI $ UX4.pXpX+XK.- n.j.x ; ....@ v vXe ^X4 ^X6 yXH cXV.u.uXK.jXK.jXKXKX, 3 3XV.KXV.rXtXt.XXx.XXo.u.r.H ~ 3 VXJXq xX, U < h RX- RX-.aX-X- RX- R RX- R R RX-X-.~ RX,.M t.,X+ $ n xXc.%XJ.5XVXV.u.r.uX*.u.k.uX9XxX*.kX9X9.$.5 N.5XxXxXV.0 )Xl $.u.K 3 :X5 :XVX5X5.ZXc 'X,X5 $.u.u.k.K.k cX5Xo.5 c.k.kX5.k.5.5.X.5 N.5.X.5.5Xo.X.X.5.k.5.X.5.XXoXo c.k c.k c.kX*.k.KX5.k cX*.KX9.KXV.5Xo.5 ( f @X; !X0 H yX> g s (.0 : 3 :XqXeXG.+Xh.EXw.- `X3 VXM $Xl.uXcXX k k nXqXpXqXq..Xn.p.Y $XDX,.iXM 1.9 .9Xp < h x.9Xq._.FXpXr._Xe E x.W U U t.M t.aX,X-.a R RXD.a a.aXDX,X1.aXI.Z R R R R R.ZXD a RXDX,XDXDX1 R.KXV c 3 : 3X-XI R.M U U.MXD UXD.M.MXDXI R R.aXD : 1XD T xX, T : $ 1 R.u.aXD.~.a.aX1 aXI $.KX5X5X1.HX1X1X, aXKXcXK m mXcX.XcXc 1 1XD.a aX- c 3.a RXDX,X,XDXD 3.Z cXl.9Xc T k.2Xw m 1 k $X5Xl :.8X-.uXV.~XIXVX,.u.Z 3.~ R RX5X- R.u $Xc TXKXK.ZXl.Y 1.'XD h.a R.a.aXIX-.e RXDX1X5X. TXKXHX. TXKXKX,X, R $X, R.a 8XD xXD.}.W x $.M.Z.aXD 8XlXDX,.ZX, sXl x x.'XGXcXH.j.O [X+.pX4._Xq.FXn.pX<X,.MXD.u :.u TX5XIX1XIX1 sX7Xq rX%XA.p",
+" x $.wXl x 3XJ ) :.5 cX1.KXK :.KXl cX*.5 3.KXK # R R.a.M a.MX,XI.`X5XJXD 3 YX1 c 5 D.D B $X; 1.M u uXsXnXe C < $ : cXV.5.5.kX-X- # 1.YXn.C.P %.s.s...v 0.4Xi.v vX>XG.MXsXpXfXA.B {.BX6Xf.9X,.uXV.H.K cXDXqX0 M.; S.+.E M M.4X:.P %XqXq x.D.W.W uXi.sX> M c 3.rXIXK.O.9XcX,XD.u 3XV.k.kXV.r.k.KXxX*.r c.H.`XI.8X-.,X..9 1Xe hX,X, <X-X- RX-X- <X- R.aX- R RX-X,XDXIX- R c.a RXc xXKXK :Xc c 3XV 3XV ~XV.u.rXVX* ).KXV.r.u.8XXXtX9.K.5X*XI '.] D T cXDXD $ 3 $.wX5X,.D.Z.'XG.' gX, 3.8.8.r 3.r 3Xt.u.HXVXV.r.H.k.kX5.kX*Xt.kXo.kXt.k.k.kXdXt.k.k.k.u.uXV.r.H 3.HXV ~.HXV ~ 3.HXV.H.uXdXV.8.H.k ) 4 K @.q & o OXLXeXJ $XVX1XD UXG.sXe HXGXG.9.[.- VXMXMX*XX.}X* | VXc [.Y.-.p._ 1.iXcXq 1.Y h hXDX-XIX-XIXDX- h xX+X4._._Xe.mXn >X+._ $ < t t.a t.a R.aXDX, R R.aX,Xl xXIX5XlX-XD 3 $XIXI RXI R.aXD.u aXDX,XD RXDX1X1 # :.kX1.KXI R R.M.aX,.a R.M R aXD.aX, RX-XI R.aX- RXDX- R.ZX-X,XDX-XD 3X1 RX-X-XIX- 3.`.KX5 c 3X1XI RXD.u R R.a R RXDXl BXDXD c $XlX5 $XMXD RXI R $XDXD RX-.aXI $XlXlXl.9 3XD h $.Z 3X1XI.u D.KX9.5XXX5 cXIX-X-XIX5 3 BXI.u RX1 : $ h xX,.MXD R.a t.a R.MXI.a.aXDXD.,.%XIXD R.u 1.ZX,XD RXD.Z.a RXDX1X,XD R 3X,.Z.w.w h g.Y.9 : T.2X,XD xX,X,X,.w.1XcXHXBX< n.jXpXn.p =X+.[X4XpX+.-.YXc [ ` m.,XJ.%XX.K.H.`X1XD.aXJXp._X4 >.J",
+" x $X, 3.a.5Xl.` R 3X1X1XM.u cXl cX5 c :X- ).uX1.u RX1 RXIX1X- RXI.uX- R R $X3 3.u :.uXI 'X.X,.M.M.d J.w.d 1.Z cX1.XXV.H cXV 3.u c $XpX:X8X8.@.J.. 0 0 S.qX>.EXm.Z.MXsXGXf.P.v % { L.PX6 y.ZXI.r.u c 3X,.9XG 0.@X>X>X> HX> ; {XA .Xp $ # R $.M U.) .X>.h.9 h.uXVX,.'XJ 1XI.uX1.uXV.5.8.r ) 5 ).r.r.8Xt.H.8.H.8 3X5.,X.XcXcXG h R R R.aX-X-.a RX-X- a.a R RXD #XlX- RX5 `XK : xXJ., ` # 3XV 3 ~XVXV.r 3.rX5 )X9.5XV ~XVXV.r.rXV.kX9XV.`.].R.'.2.w yXD.ZXK 'XK.'Xw.E.' o o v JXKXsXD.}.r 3 3.rXV.u c.H.HXV.r.r.u.k.kX*.k.k.k.k.k.kXt.k.k.k.KXoX*.k.kXtXVXV.8XV ~XVXV.H 3 ~XVXV.H.H.u.u.8XV.HXo 4XO gXy &XC J.s v h c ( 3.Z.M $ v v 9.E.q y y.,., VX3XM :.a.8.} # #XB [Xp._._ XK 1 $ hXq.Y a.uXIX1.HXIXI.} h.-._Xe._ p..Xe E._._ x._ t.a U < R R.a B.a $X- R.a.aXc.9 m 1 :.,XJ :XJXKX5 RX- R.a h R RX,XDX5 c RXI 3.8 :XX :XlXl R.a R <XDXD.a.aX-.a R.e 3.a RXIX- RX- hXI R.aX-.a R.u R R 3 3X-XI R RX-X-X-.8XX :.KX-XIX1 RX,XI.a RX- R a R.aX1 B.e R aXD R aXI R aXDX-.Z.a 3XD.a.a R.aX-.aXD R.M RXDXDX,XMX1X-XI : c.5XI 3XI.~.uXlXl ' ` `Xl.0 D s aX1XD RX, R.a.aXD.aXD.a.aXD R R RX1XcXNXJ RXDXD cX,XVXDXDXDX, RXD R.a R x c TX,.9X. :.M [XJXwX.Xc.'.wXD R $X,X, UXqXp >X+X+ >X+ XG.pXp.[.-.[X%Xh.T [XZX#.GX.X. )X1.HX1.8 3XI.`.H h.[ .p.T W",
+".M.Z.MXDXD.a c 1 3X1.aXI.uXlXIX-XIXVX1 R 3 :.KXJ Y #.DXI 3 3 ` DXJXKXl.u.w.KX1.`.`X-X1XD.Z R.a.M.MXq x h xX,.ZX1X1 B.`.H.K 3 3.a.}.}XeX4.C rX8Xr.@X+X> v vXG $XDX,.wXnX>.P.B.. JX>.xXf.CXpXDXV.H.5XV.uX,XJ oX+.E.Y o.-Xw =.x . %..._ E .W U U t E pX8 W =XJX5 3.DXIX,.HXD.u.u ~X*.k.kXx.5.XXx ~XVXV 3.H.8XI.8 3 3XH.,.jXw 1 1 t R R RX-X-.a.aX- R R.* t.aXDXKX-X1.~.,.5 3 3.a.u.}.uXI 3XV 3.rXV.r.k.5XxX9.kXV.k.r.HXV ~ 3XV.H.8.u.H.]XJXUXP.!.'XUXa J.!Xm bXL 9 b 0 v b 2XG y.9.ZXI 3XV.r 3 ~X*.u.rXV ~XV.HXt.kX*Xd.k.k.kXt.kXt.kXdXtXtXd.k.kXd.u.uXt.H 3 ~XV.8.HXVXVXV ~ 3.HXV.u.kXVXIXVXx ] g g.>.qXC 9.sXs $ 1 c `X1XDX0 &X4.9 =.9Xl h 3X*XX.,X3XM #XI.a c `.gX+.i._.M 3 #.l.9.FX+.F.M.8.8.8XIXI.a.aX,.pXqXe.i._ < E._Xe._ h hX, t a R.M 3.aXIXDX,XD.aXI R $ R $.ZX,XD 3X1 3XI cXDXI.aX1 R 3XDX,XD.9.9X1 RX-X- 3.5.5 ) c.`.a tXI RX, R R RXIX-X-X, R.`.a.a.a hXI a RXI RX- R.} 3X1.aXI hXI 3X, RX1XIX- 3.KXl c RXI.aXIX,.aX1.M RXD R R a 8XDX1XDX-X-X-XD RX1 RXD.aX1 R R RX1X-.aX-XD R R R.a aX,X-X5XD.`XIXIX* ` ) 3.~ RXI.DXc D.' T :XK # cX1.e RXDXIXD R RXD R.e.a R tXD.aXDX-.3X.XNXDXV 1XD aX,X, RX1.ZXD R.a RXD c :.wXK.' :XGXD h.D.WX, s RXD.aXD.MXqXqXp.Y >XpX+.FX4X4X4XG n.-.} $ ` 1 1XcXHXcXJ., )Xl.H 3XI.H.8.`.`.HXIXI.9.F.YX4 >",
+"XDXDX,.a.MX,.aX, :XDXD.u c 3 #.K cX5 3.uX-.K 3X9 : c q : m.$XX ` `.u.DX,X1 R.5X9X-X1.H cX- 8 u.MXGX+XM <.e #X5.u.`.H.HX5.8XI.a .a.d...PXf wX>X>XrXrXw.M.a.eXD 3XcXKX>X>X6X6Xp.EXeXpX>XrXrXc.u.kXV 3XV 3 hXlXG $.DX1.H.DXKXwXn ..m...d EXn.s pXq.m .XA...@.>.]XVXV.HXV.u 3.8XV ~.KXo.X.k ).k.r.r 3XV.HXV.HXIX1.}.uXw nXw nXw $ < R R RX-X-X- R R R tXDX1 1XD.e ` 1X9 | 3 3.uXV 3XV.rXV.kX*.k.KX9XxX9.kXtXV ~.u.KXV.8.u ~.u.H.8XI.H.8 $XoXa.M.! 9 y y s J v.W OXL OXe.vXn 2.s.sXGXcX,XI.8 3 ~ 3.kXV.rXV.H.u.r.u.k.kXt.k.kXt.kXt.k.k.kXtXt.k.k.u.k.k.kX*.r ~ ~XVXV.HXV.rXV ~XV.HXVXV.u.H.H.H.0XN @ 9 & H o vXL U $XDXI 3.Z.w.. M.j [Xl c.a 3.}.a 3 VXX., I h.MXJ .Y k WXq._ 1.a.` c xXeXqXp U.5XI : 1X,.M u.M h.- ._ Xp uXBXeXc UX,XlXlXcXl ` TXlXK :.M.u R.aXI t.aX-.a R R R.a R RXI.}XD.aX-.aX, t.ZXD RXDX1.aXIX-.`XV.K :XI.ZXI.a.a RXD 3 a.a R RXI 3X-X1X-X-XI.a.e 3.}X- R.a.~XDX,.~XDX-XIXIX,X1 3 3 3XV c c.u.KXDX1.aX1XIX,X- R RX- R RXD R R R R R RXDX- R.MXIX-XDXD RXD R.a.a R R R RXDXI.aXD a 3XD $.a.` RXV.u 3 :XIX1XD $XK x.aXD.eX5.ZXIXDX1 RX- RXDX, R R.aXD.aXD RX1.aXIXDXSXlXN.3 x RXI.a.aX,XI R $XDX1 R.a.aXD cXD.a RX, $.Z.MX,.DXl $Xl $.Z $XD h.9XpXqXqXp.pXr W.j n [ k.3 c 3.Z 3 x.iXJ k.]XlX1XI.`XI.`.8XVXV.`.`XIX-.9XqXq >Xr",
+"Xl.a.aXD cXD cX,Xl.uX,X1 cXl.5 : ).K ).5XIXoXVXVXl )XJ ,.| D ( |.]X3Xl D T.H )XXXt.8 c R.a RXD.9.9 U t 3 c c.kX1X5X5.HX-X1 $ ` C.).sX=X6 JXf 0 M.'.' :XJXK T.] 1XK v =Xr.jXw y $.w.M nXG.<.j ` h.} 3.}.k 3 3XIXDXIXDX1XV.Z.9X>.@.. % %X4XA.v . p.... S.x.EX0Xc c.H.u 3XV ~.rXVX*Xk )XtX*XtX9XV.rXV.u.KX5XI.HXI.uX, kXHXUXwXw.iXDX- R.a RX-X-.aX- t R t.M.9XlXDXlX3.u c 3.r 3 ~ ~.rX*X9 NXxXx.K.rX*Xo.k NX9.kXd.K ~XV.uXVXI.HXIXI.8XIXD.DX,XPXw yXGX0XKX0.j &.j.s.Y.@.j.E.EX0.j s.>.ZX1 3XVXV.HX5XV.r.u.r.kXtX*.kX*.k.k.k.k.k.k.kXt.k.k.k.kXoX*Xt cXd.u.HXV ~.H.H.H ~.8.8.rXV.H.H.u.k.HXIX5 (Xy !Xm &.q.EXnXeX,.wX, R 3 RXe o 2 v.9.ZX1 3XI.a 3 V V 6.%XJ kXc |XH.,.[.[X2.[ :XlXIX,.i pXp 1X,XVXB 1Xp.9XM x E x.Y.YXw.S nXBXw.-XcXHXKXcXc.,.] $ `XJXcXI hX1.a R.M R.a.a.e.aXI R RXIX-.a.u.a RX,.MX,X,XDXD R R.aX1.a.aX-.KXl.HXIX-.a B.a RX,XI.aX-.aXDXIX-X1 RX1XI 3.a R aX-.a R.a RXIX,X- R R RXIX- RX1.~ 3 3 RXIXI cXl h.e.} 3 3X1XDX1.a RX1XDX, R R $XDXDX,.ZXl.ZXlXD 3XD R.a R.a R RX-XI R.a.a aXD.a R RX5X-.` 3XX ) :Xl.e 3.3XNX1XIXIX- aXIX1X-X-XIXI R.` 3 3 RXDXDX1.aXD.aXD.a :XN.O kXN $ RX-.aX1 3XDX, $ aX-X,.~ 3 R $X5X,XI.Z h xXl x $XD.w $.Z.a.M.MXeXqXp k W =.[X<.j.S gXcXJ 'XV.`.8.u hXI c c R 3.8 3.`.`XV 3.8XIXIX1XD $ X4._ . >",
+"XlX5X5 cX, 3XD.a 3 TX,.u.5 ).8.8.` 3.5X*X*.u 3.H.5 ( TXd.H.`.H )XJ.5 : ' T.HX5X9XV 3X1 R RXeXq.YXp.MXIXc ).~X1XVXxXlX- 3.a U tXe.m.v ^.@.@ oXm.nX,.'.uXl : T 1.].- 1 MXHXH.YXJ h.YXc.9.[XH U.i 3 3.KXlXV.KXV 3XVXV.HXV.H c ` =XrX6.CX6X6.4 HX2X> 0 %.x.y.E.q.].HXIXV.8.8XV.u.r.X ).r.r.k N ~XtXV.u.k.2 DX5.5.K :XcX#XHXw [Xc $ R RX- RX-.a R t R R R R $ c.a.}XD 5 #.uXVXVXV.kX9 NXx.k.kXt.8 ~XtXtXkXxXxX9.k.5XoXVXx I.u c.8 :XV c.8 : g =XK.nXGXL =.T yX% [Xh._ [.O nXh &XUX0XK.]XDX1XV.H.H 3.k.r.uXtX*.kX*.k.k.k.k.k.k.k.k.k.kXt.k.k.k.^.k.k.kXd.k.k ~.r 3.r ~ 3 3XVXV.r.8 ~ ~ ~X5X5 DXyXU ! g & &.E vXGXlXGXD R.}.M.-.Y b JXCX5XDXIXI.8.}.8X3.,., .,.} $ 3X3 :XB kX+._.l : c.a.a E E xXp.M.a hXG.Y xXp XpXr XhXB x x.M xXD #.aXD R `.a R R RX1 3XDX, $ h R R R R aXD R a.`.a R RXDX,.aXDX- R $X,X,.a aX1 RX-XI.` R $.k.KX-XI R.a tXI.aX, B.aXI.aX- R RXI 3.}.aX- RXDX- R R.aX- RX,.a.a R R R RX1 3X,XIX1X1X-X-XIX5 $XMX1X-X,.aX-.a.aXI R k c sXcXDXJXcXKXc `Xc DX, RX, a R R.~.aX- RXI.e.a R R R RXDX1XI.u R 3.aXV.`X-XI.eXc KX,.aX-X1XDX- R.5 c R RX1XD RX,X,X1XI.aXIX1 RXD a.OXc aXD KXh c.a.aXD.a RXD 3XDXD.a.ZX,X, : cXl.ZXI.MXDX,XDX,X,.D h.ZX,X, < x xX+XGXe 1 1XK ' $XIXDX1.H.`.H.` R c cX1XIXIXI.8X1.8XVXI.H.r.8.8XI.a 1X+Xq._ .._",
+" T 3X1X1X1X-XIXDX5XI.u.uXIXoX9X9.5.K 3.r 3 3.kXl.K.kX1XIX1Xo g (XM.u.u.ZX1.`X1.`X-XI.a.a.N xXGXGX,.a x )Xl.k.uXVXI 3.a.M <._ y.. vXn.j.jXL x UXD $XIXIXDX1X1XI.aXIX1X,X,X,.u 1.w.9 $.9 :.' x cX, 3 T D.H.u.HXVXV.HXV.r.H.u.Z =.T.T H z.;.TXrXh = J ^XiXf.;Xw m.K.8Xt.8 ~.r ~X* ).K ~.uXX )Xo ~.r c.K.K.].] ).]., D K.j.jXUXG t.a R RX-XI RX- R R tXD $.9XDXK mXJX5.K.H.H.kXkXxXoXt.X.kXx.k NXk.5.kXk.5Xo.k.kX9.uXI ( 5.2.| D.| q D.2Xc DX.Xc &XG s.9 oXG h vXB n : xXc hXKXwX..nX,X1.H 3.HXV 3Xo.H.rXV.rX*.kX*.k.kXt.k.kXtX*.kXd.kXtXt.k.k.K.k.kX*.k.uXtXV ~XV.r.r ~XV.HXVXV F 3XV.KXI (X$ !.' b.>X0XCXLXeXs.w 'XDXD.aXM y v 2 O T.HXIXIXI.`XM DXX .5 c.,.5 `XMXM.-XH.[Xq xXn.}.a.a.M $._., 1 $XD.a hXpXqXe ..FXnX4X+.Y 1 x.a.aX,X,X-.aX-XIX- RX1.aXVXDXIX, R.a.a R RX- R R R RX-XIXI.u 3 RX-.aXD h.Z 1 T cXDX,XI B RX1.u 3XlX- R.a.a aXD RX,X, R R R R.a a R RX-.a R.a R R R R RX-XD B.Z R R RX1.a RXD B.uXD 3 $ : TX..u.aXl hX-.u RXI a $Xc.ZXlXlXlX,XD.aXDX-.a R a RXl.%.3X-X- 1.Z.] h : $XlXl : :XD RXD R.uX1XI cX- h RXI R :XNXI.aX1 R.`XIXI :.8X5.u R.`XIXI.Z 3 RXlXlXl 1XlXJX. :.MX,X,XDXIXD.aXIX,.Z $X5X, $XD.aXI.a $ RXI.Z.ZX-XD.M $X,X,.D $ R RXeX,.iXnXcXe.}.MXVX1X1X1XI.8XI.`.8XI.8.8X1 3 cXI.8X1.8.H.HXVXV ~XVXV 3XI.a h.YXpXqXqXA",
+"XD.a.a.a 1X-.DXc 1 RX,X1XlX5.K.5 3X* 3X*.u.K c.u.`.`XI.` :.5 $.8.~XIX1.HXIXI.`.`.K c t.ZXe v x U R #.ZX1XIX-X-.aX- a.M t.Y HXnXnXn y.j.jXcXc h VXlXV c :.Z.H 3 3X1 3 RXDX,.9XK.YXcX,X, 3XVXlXIXVXI.u.u.H.u.HX1.HXVXV.H.HXV cXc [Xp.@.E 0 o y XqXr.@X4XfX+Xw.].r.8XVXV ~ 3.r ).5 ~X*.rXt ~.8.K :X9XlXV ) : :X5XM 1.3 xX, 1.M.a.a.~.a R RX- R R R RXDXc.H 1 :.u.K c.kXVX9.5.u.r.kXxXo.rXkXxXx.XXx.k N.k.k.k.k.X.u.r.u c.5 c )X5XJ ) `.5.u T.'.O.O.9Xe v x v.9XL x.Z cX1.' DXJ.'X1XIXI.H.8XVXV.HX5 3 ~XV ~X*.uXt.k.kX*.k.kX*Xd.kX*XdX*.kXtX5.^.uXd.kXdX*XV.rXV ~ 3 ~.u.`.HXV F.u ~.H c.2 K @.q.'.9.> M.q b yXs C.W x.M.M <XG 2.v 0 s.` 3XI.`XM.$ `.5 : c h 3XMX5XMXc V V.1 Xq .W <.}.a h $.9 1.Y x.Z.} 1.YXeXe._ .._Xe._ h RXI RX- 3XV 3X1 RX-X-X- RXDXDX, 3XD t R R R R R.aX-X-X- R.aX,.aX-.aXD.MXD $XD R c R R 3.u 3 3.uX5.K.e `XlX, c 1 1XlXc :X,.aX-.a.a.aX-X- R aXI a.aX1.a R s RXD RX, R R RX1X1 3XlX3 TXJ :.' :.ZX,.aX- c $ 3XIX-XI cXDX5XI R.aXDX5 $ cXD t R $ $XNXcX. :X, T.,XJXlXKXc., xXKXcXD.aXDXDX1 x a.u RX-.u.~ R.5XS.ZXI.aX1.aXIXl :Xl ) cX3 cXI.aX1 c., D `XKXD $.e.a RX,XD.Z h $X, cX,.uX, $.a 3 R.aXIXDXIX,.DX,XDXD c.aXD R.DXDX,.ZXD.a.aX, 1._.pXp RXIX1.8.8.8.8XIXIXI.`X1.`X1.8XI.`.kXV.H.8.u.8 ~XV.8XI ~.8XI 3XD.}X+XnXqXn",
+" UXs.W.Y U.MXq xXKX. n 1XJ.Y `XK `.KXK c.Z cXIX,XI RX1 ` D 3X1 RXIX-X-X-X1X-X- 3 hXDXeX, xXG u < h cX1X- R 8XI.a.}.a Xe v pXn.YXc.Z.ZXlXlXlXH V VXX.KX5 ) (XJ.]XIXDX,X, yXKXKXGX,.DXIXVX*.HXV.`.ZX, 3 3.H 3 3.K.u.8.rXV.H.DXlXw yXr ^.vXnX>XM UXpXr.h MX.X,.8.` 3 ~XVXV.r.K ).r.u ~XV ) ).u.kX9 )XJ.R.2.$ D 5 5 I.GXwXcXUX, RX-.aX-.~.a R R aXD a :.Z $Xc D.% c.KXoX9Xo.rXo.k.X.XXd.kXo.^.k.kXt.k.k.kXt.k.K.5XtXV.H.r.HXV.u.HX5 3 ~ 3.`.' T.O.OXm.'.! s vXaXL sX5Xd D.X.ZXI.`XI.HXI.HXVXV 3 ~.k.8.rXV ~XVXVX*XtXtXd.k c.kXdX*Xd.kXdX*.k.k.K.kX*X*XV.r ~ ~XV ~.r 3XV.rXVXV.H.H.8.8.|XJX.XO.'.q.+ & MX> b.9 v.Z.M 1 1.M.W.W 2XG.'.Z.HX-X*XX 5 kX3XJX, # :XD.uXD.5 1.-XH |X7 .[ E._.M $.} cXc EXe 1.Y.Y.9.YXp E UXq._ h $Xe.a R.` R.a.aX-XI 3XIXIX1XIX-XDX,X, c R.a.aXI.M R R.aXI R R.u 3 B.a RXD.a.Z hX,XI.a hX- RX1X1XIXI.uXlXl.u.9.,XK # T `Xc 1XD.a a R R a.a RX1XI.eX1XD.eXD.ZXcXlXD aXDXD.a R $XK.2XKX1X5X, R.H T.wXI R.a R 3.K $X1X-XD 3XD h $ c 3X,.a.a $ cX5 3X-XNXH.ZX,XJ $X,XD 3.a R RXIX, 3 RX-X1 RXDXI.Z.}.uXIX,XDXIX,XN 1.eXI.aXD.5 3 3.uXl `XV : : :XIXl TXc m m k m.9Xw : 1 $X,XlXDX1XDX, $X, RXDXD.Z R.aXD R cX-XD 3XD.ZXlX-XD 3.Z.H $X, tXD <Xq.FX4 .} R.` 3.`.8.`.`.8.a.8.a.HXI.8.~ ~XI.K.uXV.8.HXV ~ ~XV.r 3 ~ 3.`.a ._._",
+" .Xn._ v._Xn.i.WXe._.YXe.Y.9.Y.-Xc 1X, 8 R.'Xl.Z a 3Xl #X, R RXD R RXDXD.u c c.e hX, <XeXG.dXe h cX3 R 8.Z RXl.}.M <._XL..Xn.YXpX, RXIX1X1XDX,.a.a 3XI.u.u.DXD.5 RXI.`X5 1XGXDX1XDXD 3Xl (.HX1X5X+ y.Y X,.a.}Xl h 3.u.HXV.H c n.Y.EX>Xi.. ..pXe UXD.'XyXlX-.u.8XV.8XV.rXV ).k.8.r.r.kX9X9X*X5.k.u.r.u.uX5XV c cXlXHXJXw.M R R.aX-XI.aX- a.aX- R.D 1X, )X. ]XXXV (.k.k.u.kXx.r.k.kXt N.k.k.k.k.k.KXtXo.k.kXoXo.u.8X* 3 3.u.8.u.8XVXVXIXI.u $Xl.w s.' y sXL.'.'.0 ( (.H.`XI 3.H 3XV ~XV.r.rXV ~.K 3XV.r 3 ~.rXV.rX* c.k.k.k.k.u.k c.kXtX*.k.k.uXtXV ~ ~ 3 ~XVXVXV.8 ~ 3XV.HX1.5XoX5 4XyXwXP y.> HX0 0 bXLXL sXD.MXw.>.YXsXs 9.E 'XV.8 3 ) 5 V.G kXcX. m 5X1X. ).,.% | |X#., [X+.F U.i.aX-XIX,XcXq p hXe._ E._ tX,.M <.aX, 3.e.aX-X-XI R.aX1 RXDX1 R RX-XIX-X,.a R.a.a.a.aX- RX1XI RXD 3 R.aX-XD RXDXDXl aX-X, R RX-.aX1.a.` #X3 `.a aXI.a R.eX- xX-.a.a.a.aXD a RX-.a R.aXI xXJXKX5X1 tXD cXlXl T.2 $X1 RXDX- R '.G.3X. tX-X1 R.aX1 # : $ c.Z.aXI R.MXD.aX,XD.a.a $X,.a.,XNXNXcXI 3 RXD R R.aX-.a.a.uX, R.aXDXD cX5 cXIX, R 3XD :.GXc.ZXDX-X1 c R R 3X1X,X3Xl `Xl.9 $XV 1XD $ ` $XlXc :XcXKXJ k.ZX,X,XD.eXDXDX1 RX,XDXIXD h : 1 $.Z.Z.9XJ T.9X1XDX, $XIXD <.a E.FX+Xp < 3 3.`.8.` ~.}.`.aXI.}X-.8X- 3.` 3.H.k.uXVXV ~ 3 ~.r 3 ~ ~.8X- 3 $.Y x._",
+" %.......<XnXnX4XnXnXGX+ vX4X+Xp $Xs.M.M uXK.9.Y.YXc.-Xh $.}.M.MX, h.aX,X,XIX3 1X,.MXe s.W hXD.a #.eXI RXw.ZXc h._Xn.Y pXG y.MX,.aXI.8.HX1X5.HXD.}XI 3.`.H.8.HX1.H.8.HX1XI R 3.D.HX1 '.2.'X,X,X>X4X6.JX> >Xn . >.- h.}XV.8XV.u 3XM E.j .Xi %Xp.<.M cXD gXd.u.} 3.r 3.HXV.r ) ~XtXt.k.XX9 N.k.k.k.K.kXV.kXd.kXV.H 3 T Y.9 tX1 t a RX-X-.aX- R.a 1Xl.Z $ m.% (XI q.5X*.r.X ).5.k.k.kXtX*.k.k.k.k.k.kX*.k.KXtX9.KXt.HXV ~.HXVXVXVXV.8XV.8XI.8 3XIXDX1Xl.'.0XK.0.'XV.8.`XV.8.H.8XV.8XV ~XV.8XV ~XV.K ~XVXV ~XVXV ~XV.rX*.kX*.k.kXd.k.kX*.rXV.r.r.H ~XVXV ~XV ~.H 3 ~XVXVXV.H.HX5 (.|.2X$.GXy b &.q 9 y b.w.wX, tX,.MXG v.= 2 v.'.Z R 3.5XX., V ) | ) ` :XcXJ IXl.| 'XVX3 | D k.[.pX4._ x.a 3 : h xXeXe p._Xe h U.a $.a 3XI.~X- c.ZXIXI R.a.a RX-X-XIXDX- R.~.aX-XD R R R R.a.aX1.a RX-XDX- 3X,X1 RX-XDXD.Z 1 D h.u.aX- RX1 BX-X-.aXI.K ` :X1 RXDXI.a 3XD.a RXD R $ xXD RXDX1 3.] $Xc c R RXlXD `XcXc.ZXIXD 3XIXI 3.a.3XHXD $ R RXDX-X- R RX5 cXD RX1.a R.aXI R.a.a.aX1XDXDX5Xl $.,XNXD.ZX-.aX- RX-XIX-XDXc.9 T :XUXc T.,Xw :X-.uXDXD h R R RX, c $ :.Z.u cX,.uX1X, c $XlX-XD R $ R.u $ a.a.a.Z $.Z $ hXIX,X,X,XDXDXI 8XDXDX,X5XlXl $Xc m kXcXJ.,.9 3X-.D.uX, t.} RX,._ >Xr.}.M RXIX-.8.`XIXIXIXI.`.`.`.H.`.8.`XIXI.kX5.8.8.u.8.8.rXV ~.r.HX-.a 1 ._",
+" % * pXp p pXpXsXe.WXpXe v vXp vXn xXGXG sXr v n.-Xp 1.YX+.[.YX+.Y t.M.a t $Xc.MX,Xe.Y oXeXD RX,XI `X-.Z $.9._Xw W z.jXr yXD hX1 3XI.H BXdX1XI.`.}XI.8X*.HXV.H.8 3.8 ~ ~ 3 cXV.`.`XDXcXKXD.M x.< { {XbXAXf.<Xf . >Xc h 3 3XV.` # c.a s o.<X>XfX> 1 3.HXdXd.r 3 3XV 3.r.8.r.KXt.k.k NXxXxXo.^.k.k.r.K cXd.u.kX* 3 3 cX..MXD aXDX- R R aX-.aXI.e aX5X5 4.% :XVX9 ).r.X ) NXt ~X*.k.k.K.k.K.k.k.k.k.k.kX*.kX*X9.u.rXt.8.u 3.u.8.H.8XV.r.uXVXV 3.8 3.HXIXl.`XVXV.8XI.HXV.H.8.u.u.8.u ~XVXV.H.rXVXV.k 3.H ~ 3.H.r 3 ~XV.r.uXdX*.u.r.u.rXV.H ~XVXV ~ 3.8.H ~XV ~XV.H ~XV.~ 3.HX5Xx (.2 ] ! @XLXm.+.E J O vXG y $ $.9.ZXe o.EXL y.a.D 3 c :.f.$X3XM ` RX- x.5XX.KXdXVX9 3 a c q }X3 k.pXqXpXMX-XI.8 $ a < u < U.a <.a.a.u.uX-XDXI.~XIX,X,.a R RX-.a RXVX,X-X1 R.a.a.a a.a R.a.a.a R.aXI $XVXD R RX, RXD RXDX1 1 m cX-X1 RXI R R.aXIX-X-X-X1 cX3 3X-XIX-X-X5XcXNXl 3 :XN $.a D :XK TXDXDXIX,X3XcXKXc h.uX-X,X- R 3XI.aXI 1XNXNX. 3 R.aX-X1 RX1 3X. $X5 $XKXl TXK.MXD.a.a.a 3X, 3XN.,.]XH aXD.Z.eXIX,.}XD.a.e.Z $ $.a.ZX, 3XIXI $X5XD $X5 $ $.ZX,XD R c.DXIXD RX1X,XD.aXI.a RXDXDXDXI hXDXl $X,XDX, 3X,XD RX5 3X5XlXJXcXc DXc.ZX,Xl ` D :.Z.ZX, T.M.aXD cX,X1 $XDXI.M < U._.iXrXcXIXD.HXVXl c 3 3XI.8X1.H.`.8.`XIXI.8.8XI.r c.u.8XV.r.8XV ~.8XVXI.aX,.Y 1",
+"Xe.)XG.).M U.M.MX,.Z C t.M.M C.M._.1Xe E vXr v vXp yX+.pXp.EX+.E.-.W.WX, $ $.} U x.jXGXs t R # ` :XI c h < RXe 2...@.jXG U.a :.K cXD.K.k.r.H.rX5.H.HXV.HXV ~ 3 3.r 3.rXV.`.8X1.}XI 3.5X1X, U EX>.. ....s.sXiXiXAXfXr.9XIXI ~ 3.K.8.uXDXD.DXq.9XmXM.rXVXdX1 FXV 3XV ~XVXV.K.r N.k.k NXk.z N.^.k.k NXd.kXd.5.u.k.uXI cXHX5X1.M.eX-.aX-.a.a a t.a TX,.3.5.u.HX9.5.X.k.XXk.KX*.K.k.k.u.kX*.kX*.k.k.k.K.k.k.k.kX9.r 3.H.u ~.H.8 3X*.HXV.H ~.8.u ~XVXV 3XV cXI.u ~XVXV.H.u.HXVXI 3XV.8 3XV.H.HXVXVXV $XVXV 3 ~XV 3 ~XV.r.HXV.r.H.r.u.rXV ~.H.8XV.r 3.r.H 3.HXV 3.H.H.HX1XV.H )XJ.2.2.2.0 g.0 s.9X0.q J OXe.M 1 R.wXH.9XnXs o y vXD.uXI 3 DX3XMX3XM.}X, hXI.`XX ).$ ~X*XX )X*X* |XJ.-.pXq.m h.a.aX-XX cXI.a.}X-.e.aX-.} RXl RX- a RX1 R.a 3X, 3X1XDX-XDXI BXI.a.e BXI.} R.a R.a RX-.aXIX,.e.aXI.a $ c.wXl $ $XI 3XD.a R R R a R RX-.a.a.` 3X-.uXl cXIX1X- 3 3XNXlX1XDXNXlX-XI., c.a R a R.eXK : cXDXIXD 1.~XIX-.aX-.aX-.ZX5 mXNX..e R.a R RX1 BXK.%XJ TXc : $ $XD h RXD R.aX-X,XcX.XHX5 hXDXl x cXDXI $X, 3XIX,X,X,X,.Z.Z h 3 3 hXI RXV $ 1XlXl $.wXc RXIX,XDX-X, $ R.aXD.a aXI RXD.Z.ZXD cX5XDXD $ R.a.aX,.a T 1XJXcXcXcXlX5X,XDXDXD x RXD RXDXD RXD B 3 c 3 3.a.a.a.}Xp E [ vXc.uXl.0Xx TXlXD.8.r.r F.H.`XI.8.H.8 3.`.`.kX*.HXVXV.8.r.H.H c.5Xl h.j ",
+".)XnXe UX, RX5 $X, R R.a.a RXD.M hXS.Y u U.) UXeXpX+.YXLXe.s.s.s.E.Y.YXw.[Xq 1Xq.Y &Xe.s $.w.9 :.M U t h x._.@.@XC.j...MX,X1.X : 3XI.k ) F.`.5.uXx.`.HXx.K.8 3 #X9.u.8.u cX*.a 3X1.u.8 3.a.MXpX4.....).sXnX4 v 0 O.@.j.M 3.aX*XVXt ~.HXV 3 3.MXl c DXd.r.H.u 3XVXV.H.HXt ).k.k.k.kXj.k.^.kXt NXt.k.^.k.k.k.k.k.rXVXDX.X..Y.a t.a RX- R R R R.a : c : '.HX9Xo )XoXkX9.k.k.k.kX*.k.K c.k.k.K.kX*.k.k.k.k.K.^.k 3.r.rXI.r 3.rXV.H 3.H ~XV ~.u ~ 3XV ~ c.u.rXV.H.H.HXV.8XVXVX*XV 3XV.H.rXI.HXVXVXV.kXVXVXVXV.HXI ~.uX*XV.8 3.H.H.u.H.H ~ 3.rXV.u.H.8XV.H.H.H.H.H.HXIXIX5Xl.2 ] m.2.> @ g.w s &.>XC 0XL.sX,XDXDXJ =.wXL.EXG 9.aX1 3XV 3 VX3XMXM 3.a.u.}.8.aXVXXX9.8.`X9.K.f q 5X3.gXB._XeX, <.8.`.5X5.5.8.~.aXI RX-X-X, h.aXI R.a R R R R.aXDX,X5XD R c R a R R 3 $ c c.aX- R 3.uXDXI.a.ZXIX-X1.,XN.3 K.G 3XD c c R.a RX-X1XD 3.eXIX-X- R.`X- 3 c.5 3.`X1XMXNXJ.u $XN DXJXcX5 c $.uXl.KXH $ 3 cX, 3 3 3XIX-X-X-X-XI a D kXD D k R 3X, 3 RXIX, cXlXK.ZXl.' :.'.Z $ R.a.aX-XDXDX-XIXD.Z cX,.uXlX, cX, 3 c x 3 R.M R B R R R RXDXI cXD.eXK.9XK T TXlXlXlXDX1 $X,X,X,XD RXD RXD.aX, RX,X,.ZX,.ZXlXD $ RXDXD $ RX1.ZXD.Z.Z.eX1 8X-XDX,.Z $.Z R 8XDX1XD RXIX1XD $XI.a.a.aX,._ v [ R.0.] g ).Z 3.H ~.H.H.r.H.8.uXV.8.8XV.8XV 3X-.u.K.HX* :X9XX.$.] `.3 :.,.Z",
+"XrXG UX, h c.} R R.M <.M.aXDX1.~.% m.O t._.M h ` x.KX5 cXD B.M tXD xXhXc.WXG.jXnXp v._.9XrX.Xc.YXG.@ v._.s %.s vX+.W R.M.a.aXV.HXIXI `X5.8.8.5.K.uXVXVX9X5.8XV.5 #X*.8.u ).K 3.`.HXdX1X1X, >Xp 0.m.s h < h.M.N.s O o y.WXDXI.u ~ 3.r ~XV 3 3 cXD.5.2.H.H ~XV.rXV.r.H.r ) ).k.k.K.^.k.K.k.k.^Xt.k.k.k.kXd.kX5Xo.uXI c DXH.9XD.M R RX- < R < t.}.u R ~.k.kX9.r qXX.k.k.k.k.k.k.k.k c.k.k.k.k.k.k.k.kX*.k.kXo.K.r.uXt.8Xo.kXVXV ~.H.rXVXVXV ~XVXV ~XVX*Xd.HXV.rXV.r.uXd.u.k c.r 3 ~XVXV ).5X5.HXV :.HXVXI.8XI.uXI., ) ` DXK.$ $.$ ) 3XV.8XV.H.uXV.8XV 3.rXV.8.8.8.HXo ].|.2 mXw g !X.XPX,XP g &.q J.s.W U 3 R.ZXs.s.W b.9XDXIXD 3 3.} c., :.K 3 3.KXI c ~XVX9.8.`.8X-.KXx V., |XpX+XqXeXMX-XI ~XX.k.KXV.~.`.a.~.a R.u.aX, a.a R R R R R R.a R., :X5.- :XK :.'XJXcX.XKXJX, hXI.a.} 3X1 3X,X1X-X5XNX, $XN.ZXD hXl hXD aXD.a R 3 R.aX1X-.` R.a.`XIXVXM.K `XVXN.2X, cXNXJ 3 c $.a 3X1X- R 3.5X, RX-X-.a R.u R.a.`X-.}.~XX 7 KXHXD.a R.9XK.9XK.9XcXw TX.Xw TXlXKX1XD $.Z $ c h $X,X,.Z.aXD.a.a.aX, R RXI.a RXI.uX1 RX-.a RX-.aXI.a.a 3X, RXl 3 $ RX,.uXDXl R 3X,X,X,X,X-X1.aX1.MXDX,.aX,.ZX, $ $Xl R $ RXDX5XD.aXDXDXV $XDXD.a R.MXDXl.ZX5.`X1XDX1XDXIX-X1.aX-.a.a a.}X,XqXqXK.MXDX,X5.`.`.H.H.H.H F ~XV ~.8XV ~ 3 3 3.8.K.5 ) :.|.|.5.] 5 D qXl c.5XD 3",
+"Xn.M h.}X- R RX1.a.M.a.a.a R.D TX$.GXNXl.M $Xw x c cXoX5.K : $ c.aX-.SXN $.NXhXpXe E.W.W.YXG.Z.MXeXq p % ... ..jXG $ $X, h 3XV.H.8XV.u.8.`.`XI.` 3.HXIXV.`XV.8 #.uXIX-.k c cX1.HXd B.HXlXpXr . % v U <.a :Xl.M.w.s.vXp.pXc.- :.` 3.H 3.rXV 3XI.u.DX5.8X* 3XV ~.8.H.u.k )X9.k.k.kX*.k.k.^.k.K.k.k.k.k.k.^.5.k.K.k.u.u :.%XJ $ a.} R.a t < t.aX,X-X5 5.kXx.rXV.5.5.k.k.k.u.k.k.k.k.k.k.k.k.k.k.k.k.kXd.^.HXx.k ~.H.rX*X9Xx.H ~ c ~ 3XV.H ~ 3 ~.HXV ~X5XV.rXVXt.u.k.k.u.k.kXt.uXV ~XV ~ :.K.$ D 5 DXJ 5 ) D I ,.% :XlXJ $ `X3.Z : ) c ~ 3.8.uXV.8XVXV.HXV.H.HXV.r ( ] ] ! m !.! sXGXc s.ZXK 9XO & o.B 2.M RX1XD C.N._Xn ' R.`.8 3 c.a $ V ` :.KX-.KXxXM.rXX.rX9XX 3.8.rXX V.[.SXq $ hX-.a.K.`.K.uXV cXI.`X1XIX- R 3XI 3XI R R.aX- RX1.aX-.aXKXcXJ m $ :XcXlX5 :XK $ $X-.a RX- R.aXI R.~ RX1 $XNXJX.X..MXD :.- $X,XD.aX-.a.aX-X1.~.a RX-.~.aX-.a 3.a.uXl Y 6 3X,X$XJX-X-.a.uX- RXIX1X1 R 3 cXlX,XIX-XI.~X-.a.`X-XIX-X- RX-XIX1.M $Xl x h $XlX,Xl 1XlXlXDX,X,XDXDXD R.aX- RXI.a.aXI RX-XDX-X- c a RX-.a 3 RX, $.u RXI R.` aX- R.aXIX, aXIXD.u `XD 3.a :XIX,.ZX,X,Xl.ZX, cXlXlX5 n $Xc h $ $.Z xXD R.a x.ZXD RXDX,XD.ZX1.a.a R UX,X,.D.ZX,.u.D $X,.ZX,.aXI.a.a.a.MX, 1._.- UXDXIXIX5.H.` ~.r.`.u.H.8 ~XV ~XV ~ 3 ~XV )XJ IXJ.2 D.5 'Xt 3XV 3XV.8 3.H",
+"Xs U t.a 3 $.ZX,X,X, 3.} RXIX, ` : x.3.1.Y xXD 8 RX1.`.8XIX- 3XI.aXD.% tXh K.hXs u.a U U.M.a < R R C *XbXb . y.9XN :XI 3.H.`.8 3X1XV.`X1.8.8 3XV.K c.H 3XVXIX* 3 #.uX5XdXV c 3.5 cXo.uX,X+.x.@ O.M.M R RXI.u.M t u...s.sXr $XD 3 : :.`.`XV 3XV 3XoXV.HXV.8.uXV.r ~.kXxXx.k.k.k.k.k N.k.k.k.k.k.k.k.k.k.kXx ).&.% 5.| k I.3 Y mX. Y.3 KXw h <XDXHXxXx.5.kXxXx.K c.k.k.k.k.k.u.k.kXdX*XdX*XdX*.kX*.k.kX*.k.kXV.rX9Xx )Xt.`X*.H.8 ~XV ~XV ~XVXV.uXt.k.5.k cXdX*.k.k.k.k.k.u.kXd.u ~.HXV.8XV 3.H cXV.HXI.H.u.`.5XV ` :XcXK ).u 3XVXVXV 3 ~.` 3XI.`.8.8XI.8.u.H.8Xo ] ] ! ] gXK T =Xc.Z.w.9 s TXm.>.q w 0Xa.'XUXD.M.w o v.9XIXVX-X- VX3Xl V.%XMXX.kXX ).5.uXXX* 3.$.KXXX3 # [.-.9 `X,X, 3.5XVX1X1X-X-XIX* 3X5.e RXIXDXl RXIX,X-XI R R.a.e RXDX-.a.a BX-X,XI.eX- R.aX-X,X1 RX-X- R.aX-X-XI RXI.a 3XNXl $XNXJ a.aXDX,.u c.a RX1 R RXI.a.~.aXDXI.aX-X- RX-X-.a.~XKXDX-X- t a 3 a.ZXD 3XD 3X,XI.u 3.u.} 3X5 ` cXDX1Xl c 3XIX- aX-.a a R R.MX-.a R R a R.aX,XIXD $X,X1 RX1.aXDXD.a RX- R aX-XD a RXI.e 3.M c 3XD.Z c RX1XDXDX-.aXI.aXI R R R.u.a c $ 3.aX1.M RXD $XlXD.-.9XlXVX,.ZX,X5.aX1X,.Z.a.Z h.Z $.ZXD.ZX, xX1XDXD c.9Xl :Xl g xXJXK k D TXD RX1 RX,.aXD x.a.a RX,.M._ .X7 x.a.}.8.`.u.`XI 3XV.8.u ~ ~ ~.8.8.8.8.8 3 3.rXVXIXV.Z.5 ( TXJ ) I I.] 5Xc",
+".M.M.aX, c.a RXD.a R RX- aXIX1.aX, h.MX, 1Xe.*.M R RX-.e R 3 3.a 3.$XS :.'XSXH R <.MXD.aX- RXIXDX,XD.W.sXn H x.SXw YX-X1.`.`XI.` 3 3XI.8 R 3 3XVXDX$ Y.3 )XIXI.`X- B.8X1XD.HX3.K qXX s U.j HXpXn : '.D.DX,.u.i h U.m.. vXr.M.a c `.D.H.`.8XVX- TXx.8.rXVXI 3 3.H.u.5.R.k.k.kXo.k.k.kXt.k.k.kXo.k.k.k.^.k.k.k.kXoX9.kXV c IXH.2.%.,X. nXK $.MXD `.u ).kXxXgXx.k.kX*Xd.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.uXtXt.k.r.k ).8XV.HXV ~ ~.k.H ~ 3XVXV.r.uXt c.kX9X*.k.k.uXd c.k.k.kXd.k c.rXV.8.u.H.u ~XI.k.u 3XV.8 3.8XlXI c.u 3.Z 3.Z.H.H FXI.HX1.H.` 3.8X1.`XI.H.8XV.u.r ]Xy ]Xy gXU = [.Z $.u.9.Z y.n.qX0.q 0 vXa R RXs.WXe.E.ZXI.~ 3XI : :X3 ,X# } IXM `.$XX.K ) I., 5XXXX.[.,XJ .9 1.uXV 3.u.k 3 R h c 3Xl ) :.KXIX-.~X,X-X- 3 R.aX- R R.aX-X- R aX1 3 h cX, 3 hXIXIX,XD.a R R R.aX1.aXI a RX- R :X$X.X, `.%.YX1XIXD x.MX,X,.aX- R RX1.a.a.a R.aXD 3XI hX,X,.uX3X5 cX, c 3XD 3 cXIX-XDX1.aX- R.a aX- RX- R :XIXI.K.uXl :X1 c R.eXI a.a a R R R R.a.a R B h RX1 c $XI R.aX-XI.aXI.aXI RX- R.aXD aX5.M.uX,X-XIX- R cX1XI cX-XI.e RXDXDXDX1 RXD :.u.Z RXDX-XD RX,X,X5Xl.Z : $ x :X, RX,.M.wXe.Z t.9 $Xl.wXD.Z.ZX5XDXD.D : T :.' 1 :.ZX,XDXD.aX,X,.M.M RXDX,.M.a $X,X,XJ U._XqX+XM.aX- 3.8 3.u.` 3 ~ 3.8 ~ ~XV ~XV ~XV ~XV ~ 3XIXV 3.k.2 IXJ 5 (.0X9 :XV.k",
+".a.aXDX, RXD R RX1X1 RX-.8.a aXD h.M hXG E t.M C R R.MXIXI.aXI 3 3XJ.,Xl :XKXw B.a $ R.aX, ' 3 3.HXD.sX>Xp.EXwXSX#XSX, 3XI.HXIXI.uXIXI.}.`.8XIXI.` 6 :.DXN.5 3.aXI 3XI.`.kX5 3 3 3X,X, oX4X>.j v.aX-.`X1X1 x c U.iXp.;X0X>.Z c.u.Z $.u c c $XK.2XK.8XV 3 3 3.u.H.kX9 )Xd.k.kXt.k.k.k.k.^.k.k.kXt.^Xt.k.kXt.K.kX9X5.kXlXVX5.uXIX, : 4X. m.9 : T $ ( ~ NXkX5X9.kX*.kX*XdX*.k.k.k.k.k.kX*.k.k.k.k.kX*.k.uX*X*.5.rX9.u.r.H.r.uXV.H.rXV.r.r.uX*.k.k.k.kX9.r.k.kX*.k.kXd c.k.k.u.r.r.H.u ~.8XVXV.HX5.8.u.` 3.H.u.8XIXV 3XVX,.HX,XV.HXVXV.`.`.8XIXVX1.8XI.8XIXV.8XVX9.2 ]Xy !XOXU s x x h.ZXK :XG g.jX0.E 0 2.N T.a x.W.=.n.9 UXIX1XI 3X,XI D.,.%.%.% } I D.KXXXX ) DXXX3.gXpX+ yXpXc `.u ~XV 3X5.u.a a.a 3.uXD B $X1X1 3 : 3 3XD a R R RX- R.aX-XI hX1.aX-XI.a.~ R.} R 3X, RX- RX-X-X-X-XI 3.ZXI $XD cXDXI RX-.} TXcXl.w $ $ $Xl cX,X,X,X, 3XDXDXD.M.aX-XDX-.aX5 hX1X- aXI a.a.a 3XI aX- R.aX- t RX- <.a.aXDXl $Xl #.Z.5XI 3.~ 3 RX-X-XI RX- R.aXI aX1XI B.u.a.eXI ` 3X1.aXD R.a R.aX,X,XDXD 3.Z R 3.Z :.~XI RX1.uXD c 3 :.aXl $X,XcXc ` D DXH mXI cXIX,.e.M RX,.a U RXDX, $ RXl.M.MX, $X,X,XD.ZXG c xXD R h.Z $ RXD $.ZXI R.*X,XDXD.MXD.M R hX, R.M.aXD R $XK $.SXD x...FX+XeXI.8X-.8.a 3 c.a 3 ~.`.8.`.8XV.8.r.8.H.8.H ~XV ~XV.k.u.5.kXl.kXI.H.8XVXV",
+" 3 3 c.a.M RX, 8 R R.`X-X- aXD h.M.MXn.w u.M R < R.a aXD 3X-.`XV RXl c ' : T $X1XD R.a.e c 3 RX-.~ R u p %X8.LXc.YXN.5X1XIX-.a c 3.aXI.`.}XIXIXIXI K : 3XH I.~ 3XIX1X1Xd.D.uXIXDXDXeXpXp J.sXSXw.H `XlXIXDXD t U p p...EXpX1X- ~XIX1.`.HX, s.E.9XJ.uXVXI 3X,XdX5.XX@XxXxXx.X.XXxX9.X.X.5Xo.^.X N.5.^Xo.^Xo.^XtXx.k.k cXd.u.u 3XIXV $.3XcX.XJX.X9XoXo ).^ N.X.rXo.k.k.k.k.k.k.kX*.k.k.k.k.k.k.kX*.rXV ~Xx ) F ) ~.H ~XV.k.k.k.rX*.kXtX*.k.k.k.kX*.K NX*.k.k.k.k.k.k.uXd.kXtXV ~XV.HXV.u.u.8XV.KXV.8 3.H.k.5.uXVXVX5XD 3 3XV.uXo.`X1.8X5XIX1.H.`XIXI.8XI.H.H.u.kXy ] g gXK.' $XDX,.Z TXGXO.9Xw.qXC.WXa CX,.' tXsXsXLXG.ZX,.DXJ )XV.uX3 I., V VX. | VXH }XJ I.,XJXc.- 1X+ .wXc xXM.uX*XI.K.u c.aX-X1X-X-.` 3X5X,.~XI 3 RXD aX-X- R.a a R 3X,.a.a R.a R R.}XD.a cXD.ZXD 3X,X,X,.u.ZXlX, 3.u h.u.Z.5X,XD.uX-.9XcXD $X,X,X5 h.} cX,.a t.a.a R t R.a.a.a RXD $.a 3.a R.aX-X- tX- 3 hXI R aX-.a x xXl.u.Z cXK.KXlX5.KX* R.8X-.e.` R RX- aX, 3 :Xl.Z 3 $ c $ cXl 1.]Xl 1X-X1.aXIX, $X-XDX, 3 R RX, RX-XIXI RX-X1.~XK `.K D mXJX- c.' TXc :Xl T hXIX,X, RXDX, a.MXDXD.aXD.Z RXD.'XD.a.Z $.MXDXDX,X,.wX, x.ZXDXDXlXl.DXDXI $XDXD.ZX,X, R.M <.M.a xXD.M.a.a.Y.ZXw.Z sX,.MXnX4.- h.aXI.8.8.8XI.} cXI.8.`.8 ~.`.8.8.8XV.r.H ~ ~ ~.H.8.8.r 3XV.8.k #.r 3XV ~",
+"., TX-.a R t.M R RX1X1XI.a 3 1 x.d.s._.M t t.a < a h $.aX-XIX-XI :XD :X. :.Z.`X1X5XI.H cXIX- RXIXI R.M UXf.J 0.j.w.] T 3XI.a 3 3 RXIXI.`XIXIX- 3 3X$XVX- K.K 3 R.a.a.8XVXVXVX1XGXKXp.@Xn %Xr =XZX- 3XIX, h t.)Xe..Xn HX+.Z.M 3.`.8 ~ c 3Xe.j H.@Xc.M.}XIXIX1.H.HXd (.r.k.k N.k.k.^ N N.^ N N N.X NX9.X.XXx.5Xx )XxXxXxXX.XX9.5.k.u.5.%XH Y.3 5Xl.5Xx ).^XxXoX5.kX5.^.k.k.k.k.kXt.kXt.kXt.k.kXtXtXV.8XVX9 5X5.8 ~Xt ~X*.k.u.k.k.k.k.k.kXt.k.k.kXt NXo.k.k.k.k.kXt.k.k.k.uXV.r.H ~XI.r.5.5 c.8.KXIXVXVXVX9XJ I ( mXJ I.] D.2.u (XxXI : ).8.H 3X1XI.`.`.`XV.H.8X5X@XOXPXOXO.'.w.-XJ.wXw !XPXK sXmXw 9.EXs C.a.MXDXLXs.sXUXG 1X1 :.2 fX..% } Y , } V `X3 }XS 5XM 3X1X, R.M .Y X7 1.iX. m., :X-X. '.5.,Xl T T T m.3X3 T.$ T IXl hXD 3X,X5Xl cX, 3 3X, 3X, 3XDXIXIXDXDXD c RX1.a R R 3X-X1 aX1X-X-X-X-.K R RX-.a RX, $.9.'XcXl :Xc : ` c R R R.a R R.a B.a.a #X-.}X-.aX- R.`XIX-X- RXI 3.}.a.e.M 1 T x D.,X5 `XJXJX- 3 `XV R 3XI.~ 3 3 cXIXIXl : m `XJXJ.,.2 ` TXKXV $ 'XM.DX5X,X1.ZXlXlX5Xl :XJXD R R.Z RX1XDX-X3 ) m 3 #.uXD aXD RX1XV c.u RXD.a xX,.M R.MXD.a RXDX, 3X,X, 1.MX, x.ZXD.Z U RXD.ZXlXD.ZXDXD.wXJ 1 R RXD $ RXD.M.MX, R.a tXlXKXcXc ` sXJ hX, R 8XDXeXGXqX+Xl R.H # )XI.`.` c.u.`.H.`.8X-.` ~.` ~.H.H ~XV.r.rXV.r.8 ~.r.r 3 NX* ~ 3 ~",
+" `XKXK n XK $X-.aXIX-X-X1 U :Xn.jXrXc.M R.a < cXKXX h.a RX-.` RX- $XJ ' BXIX1 T.k 3.H.8X-.` RX-X-.aXD E.. %.P o 8X-XIX-XI.}.uXIXIXI.` 3.`.8XIX1 :XN I m.].H RXI.8.a.8.8X*X1 : TXn .Xb...sXS.-XN $.a.a t.a u.W....Xf.x M.Z 3.`.8 3 3 R 1.@.@.C ^Xr.a.}.8XIX1.H.HXxXx.k.k.k.X.KXx NXk.zX9.zXx.kX9.^Xk.X.k.X.^XkX9.kX*.k.k.kX*.k.rXV.u.K.5 I.] )X9 5.XXoXx.z.5.XX9X9.XX9X9.XX9X9XxXxX9XxX9X9Xx.5.5Xo.5.5.5.5Xt.K.K.uXoXoXo NXo.KXo.KXo.K.^.K.K.^XoX9XoXo.k.k.kXo.k.k.K.k.u.rXV.rXV.k.KX* qXV.rX5.H.HXV.8X9 :.5.].K :.] :X5XxXDXoX9XV IXlX1XI.H.`X1X1.HXI.`.rXVXV.2.2XyXO.' x 1.jXw.OX;.GX; @.O.qX0 o v.' U.MXDXDXsXGXm v xXl.0Xl.2.%XxX5X3 ) k.%., |., k ` h c $X5Xl.wXl h.iX%X7.T.SXHXH mXJ.u.0.] DXJ m.0XcXKXJ m.2X# DXM.%XI RX-X-XI 3X-X- RX- RX- RX- RX- R.aX- R a $X- RX1XI.aX1 3 R RX-XI RX1 3XXX-.`X1X-X1XDX,.Z RXcXcXJ 1 cXK hX-.a.a R R.aX- RXI a.5X- 3.5 RX1 R.~X-XIX-X-X- RXDXI.aX- x c.9XlXlX,X5XK 3.`XIX-Xl.5 3XI.uX1XIX- R R 3X,.u.aXIXIX1XIX5XIXIXI a c ` :XJXJ.2.,.2XJ kXlXK :X,.MX1XIX,.` RXIXIXMXX.5 #XIXI R RXDXD $X,.a RXD.aXDXl.aXD.a.aXD.M h xX1 $.aXl : x 1 1 1Xl.'XcXc.w x $XD.ZX, $ TXJ.2 $XcXl 1.ZXl c sXl s a.9XJ x.3.9 :.W $.wX, UXD xXn vXK UX, ` cX3X- 3XI.`XV c.8X1.8XIXV `.8XI.8.r.H ~.8.r.8.r.r ~ 3 ~ 3 ~.K.k ~ N",
+".5.ZXI $.wXq h.aXIXI.~XIX,.9.w EXwXLXn.M.aX- R 3.a.a aXI a R 3XV : 1 : 3 RXVX5.5X-.uXXX-.`.aX-.aX1 c < C..XbXnXGXDX1 3.8X- c.H FX1.8XI.` 3.` 3.8.HXI.D.`XI.`XIX1 3.`XI.u ~.` c.- JXbXi p WXB.w YXcX-.M.a <.N...s.4.; M.p.YXD.HX1XI.} $Xw.J.@X6 w M.iX-.}XI.` F.H.z.k.^ NXt.XXg.$Xg q qXk./Xg N.f.^XkXk q N.$.$.RXo.^.k.k.k.k.k.kX*.rXMXkXX.KX*Xx ).K.^.k N.k.kXd.k.kX*XtXt.uXt.k.u.kXt.k.kX*Xt ~X9XX.kX*.r.uXVXtX*.k.KXo.KXoXo.^XoXoXoXo NXo.5.5.zXo.5.5.X.X.5.5.X.kXo.k.k.K.5.5XxX9.5.5.k.KX9.K.KX5.KX5Xo.K c.K c $.u.Z.u.u.k.u.k '.5.u c $.u.u.u.u c.uX5.k cXx 4X;Xy y g.YX.XcXy ! 4.O K K.GX0XmXL.9 h $ xX,.MXa.w.W.w xXc :.HX5 cXo.u 3.u 3 V #.}.M.}.Z x $XDXI.H.a .Y.FXB.p.j.Y 1 $ $X1XD BXDXD.aXD RX1X1XI R cX-Xl., c.M 3.Z 3 RX1 RX-X-.a R R R R a R.M R R RX,XDXDX,XIXD 3 RX,XI t.aX- R.K c R R R RX,Xl 8Xl 3.MXD.MXI aX- 3.uXD R RX1X1 R RX1X- cX,.aXX 3 cXVXI R.`X1X- RX-XI a.a.a.a.} R.~.aX-.a cX1 RX-X-X-XI cXI.`X-X-X1X-X- R R.` R RX- R R 3X-X1XD.u RXD T 3.uX,X,XD 3 R.ZX, $.Z.u.a RXIXDX1.aX1.u : 3 : 3XI RXDXIX5.uXI.aX-XD RXD.} x.a.a R $X,X. T.9.,XcXKXJ.'XK.9XKXcXK.- x $.ZXl UX1XDX, R x D.9Xc 'XJXl.9.9XKXK 1.Z 1 $XlXl TXlXl x.ZX,X, x.[.YX0XH.Y x.M $ c cXIXIXI R cX, RX1XI.8 c D.H 3.8XV ~ ~.8.r.8 N.rXx N ~ ).r.K NX9",
+"XJ.0 x xXe.} a.a.} 3 $ hX,.MX+ yX+.M.-XDXD.aX-X-XIXD cX-X1 3X5 3 $Xc.}X-XDXI.8X-.u.5X*.KXX aXI 3.u BXD._ p...EXe RXD.8 RXVXVXI.`.HX1.8.KXX ~XI.` 3.kXI.8 $.H 3.`.` 3.`.u.` 3XI.w.;.@ %Xn.gXe RXc.O.Z RXI U.M v JXf.;X>XGX+ $ R R $.Y.[ >X6.B ;.P.x h.} 3X1XI.HXV.U.kXt.k.^Xk.X.^Xk qXg qXx qXg.z q.zXx qXx.zX@.z.K.^.k.k.k.^.k.k.kX*.k.r 3X*.rX*.X.k.k.XXo.k.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX9.r.5X9 3 ~.u.u.r.u.k.k.kXd.k.k.k.k.kXd.k.uXd.k.u.X.uXdXd.uXt.H.H.8.r.`XV ~.8X9 ).k.uXVXV 3 ~ c.8 3XI.5.u.H.uXIX1.` RXD 3.8XI.`.8X-.H.8X-.`XIX1.`XI.`XI.`.H 3.H.5.2.2XU.9 g s.DXG gXP 4XyX; = @.>.O y n 1Xc TXK .Y n.1.>X..2.DX1.k.`.H cXI 3 3.a.a $Xc.3.- K [Xw.% mXcXc.-.FXeXp E.i.M h.a R R R.a RX1.a RXI R.DX- c.8 a R c 3XD R.a R R R R R R R a.a R.a RX- RX1X1XD.uXD B R a 3XIXIXDX-XI.a.a 3 # 3X1X1X1XDXw $X, sX,.a 3X, c 3X-.a.Z.uX1 R RX1X-.aX1.5.~ 3.K : 3.5X5.KX- 3XV 3.`X-X-XIX-X-XDXDXDX- RX1X1XDX- RXIXIX-.` cXV.uX,.uX,.uX1X-X-.a RXI c 3.Z `XI RX-XDXVX-X,XDXI R.~.a R R.aXI RX, $.D RX,X1XI.u DXl.K c.a RXIXDX- T cXD BXIXIXI.M.a.ZXDXD hX5 1 : V.]XM.ZXl 1 $.'XDX, x.ZX,.a RX,X, xX1XDX,.a B.M.u.wXl x.9 $XqXlXKX5X5XD.u c $ cX..9XJ.9Xw.[., nX..1 [.jXrXB.YXK V RXIXXXc `Xw XM xX, ` 3XH.uXI 3XV.8XV.rX* )Xt ).K.kX9 ).`XoX9",
+" c.'.0XcXK $.} <.u.a R.e C.M M nXK.Y.3XJ :X5 : $XV.].}X- R.u 3 3 ` h R.aX- 3 :XKX3.K :X- 3 cX,.aX1 a._.s % .Xp u UXDXD.M.u 3X1.HXI.`.`.5XX 3.8XV )XVXI.`.5X9XI.8XIX1 cXV.8.8.}.}.s.@ %.m t <XI R RX1XDXDX, U._.sXpXn._ . W.+XG.9X>X>.j..Xb.P L.4 =.wX1XI.a.8.8.kX9.k.k.k.k.k.k.k.k.k.kXt.^X*.^.k.k.^.k.k.^.5X9.^.k.K.k.k.k.k.k.k.k.kX*.r.rX*X*.k.k.k.kXx.k.k.k.k.k.k.kX*Xt.k.k.kX*Xd.k.k.u.kXt q.u.k.K.H.r.uXt.kX*.k.kXdX*Xd.kXt.kXdX*.kXd cXd.k.X c.k.u.r.u FXV.rXV.r.r.u.r c ).u.rXV.r ~.u.k.HXVX5 ).$XJ 5.] `.] : cXc cXV.u.uXI 3.8X1 3.8XIXIXI.`X1.8 3.8.H.5.%.|XyXPXc o x g.'XPXUXO.2Xw.G.>.q.>XH VX3Xl 1 !X.Xw yXUX.XJX1.HXVXI.KXxXIX- 3XIXMXcX#Xh n n M.G.3.3.GXh nXp.W .WX, < cXDXD a R < a R R B.~.~ :X3 $ R.`X-.u aX-X-X- RX1.a RX-X-X-XD R a $ $ h RXD RXI $ 3X-XIX-XD 3 RX, R.a RX-X1.5.uX- RX-.ZXl.Z R xXDXD R aX-XI 3 R aX1X, 3XI RX-X1X- #.5 c.u.5 $ 3XV.5.u ( c :XI.`X1X-X-XIX-XI 3 B R.aX- 3XDXDX-.eXI RX-XI #.` RX-X- cXI aX1.`.ZX1 RX1 R cXV RXIXIXI $XIX-.a RX1 R R.a RXDXDXDX,.ZX1 3XIXI cXJ 5XJ.] )Xc D.2 m `XVXI tXD.a.a RX, h $ c $XcX5X,Xl RXD 3 x $ hXlXDXDX,XDXDXD $X,XD $X,X-X,XJXD $ 1XcXc.9 $.w.W $ $ $.Z `Xl : :XcXJXcXK.9Xl $ h UXK ._._ .Xq .9X3 $.a kXp.FXrXwXH.[.9.-.S k.9XIXIXI ~.8.k.$.rX9.k.k.r.H.r ~X*",
+"XD a.a.MXD.a a c.} < < u U.wXqXe # : : c.K '.uXlXJXJX5.` R.u.- `.Y.a.a RX5.' c.u.~ 3X-X1 R aX-.a.a.M.)...x.;XpXnXpXpX+.wXD.MX1.`.`XIX1.u.u.` ~.uXVX5.8XI.KXI.8.8XI.H `XI 3.8.a.a...@..Xe < R tX1XV.D 3XD.M R U.WXn._X> n HXhX0X0 w M MX4.C w.{.@Xw xXIXV 3.8 3.XXX.^.k.k.k.k.k.k.k.^ N.X NXg N.^.k.k.^.k.^XxXt.K.^.k.k.k.k.k.^.k.kX*.r.k.^.k.k.k.k.k.kXxXt.k.k.k.k.k.k.k.k.kX*.k.k.kX*XVXdXkXo.5.k.HX*.r.kX*.kX5.kX*XdX*Xd.k.k.kXt.kXd.k.kXd.k.KX9Xd.r.rXV.rXI.rXV ~XV.5.k.H.r ~XVXV.8 ~ 3XV.k 3.H 3 ( :X5 ) : ` 1Xl $ :Xl : D.8XIXIX-.` 3XIX-.`XI.`XIXIXV.H.HX5 ).].> !.!XU !XPXU ] !.] ' ! !Xw v 1 c.K.aX1.M x v.WXa s.2 $X1.`.uXV.`.K 3.5 D.] k.-Xw.1 y.Y.pXc., 1XcXL.WXe.W U U R 3XD., ` 1 1.' : 1 ' ` T `.% c.K 3 RX- 3 R.a.a.` R.~X-X- R.a.a R R aXcXJ $ ` DX. mXKX1.a RX- RXIX-XI RXI RXIX1.~ ` :.%., $X, 3.w : $ hX-XI.a RXI c cXIX1X,XV 3X-XD.u c.e.u 3.u c.5 `.K c c c.k 3XIX- R RX-.~X- RXIXIX- R.a 3 RX-.a RX- RX1 R $XV.aXIX-.ZXIXD.Z R.eXD aX1 $X,XIX1 R RX-Xl.H RX1 R.aX1X- RX1 R RXD c.DXD TXI c D } }.$XKXX $ c cX,.Z.aXIX,X,.M.aX, $ :.aX5Xl.KXKXcXl.-Xl.Z 3XDX, $.ZX,.aXDXD RX-.a.Z $XD R 1XK.9.YXGXcXs U U.MXsXDXDXl :XlXl cX, $X,.Z $ UX, h h x U.m._._._._X7.-XB UX7X+.J.pXh.[.,.[ xXc 1 VX, 3XI.r.8 ~ ~XV.H.8.8.rXV ~.H",
+"Xl $X1X1.a R h 3 <.a t.M.W v.W h.].5 c c R RX-.`X-X5X1X- RXM.a x xX-X, $.wXIXD.~XI.~X1XI.a.eXD a a hXpXf.4.4.@ ^ ^XAX6.x o $.}.}XI.`.8.8.` 3.8X1 3.~.8XI.8XI.8.a.8.5 $X1XVX*.a.}XnX4.sXn x : $.Z 3 R B RX1 R t h xXq.) E v.@Xp.E.@ M.;X>X2 r S S.>XKXVX1 3 3 c.rX9.X.^.k.^Xo.^.k.kXt.^./ N./.X.k./.k.^.k N N.k.k.k.k.k.k.k.k.k.k.k.kXt.k.kXt.k.k.k.K.k.5Xt.k.K.k.k.k.k.k.k.k.k.kX*.k.r.r.KXkX9 ~XVXt.K.k.k.kX*.k.k.k.k.k.k.k.k.k.k.k.kXtX*X*Xt.kXoXVXV ~ ~XV ~.H ~.k.5 ~ q 3 ~.u ~.rXVXVXVXt c.HXV.uXI.HXI.`X1 R c.aX-X- R k cXI.`.8.a.`XIXIXIXI R.8X1.`XI 3.8 3Xx.2 ! gXP.'Xm.0XO.0.D.D.uXcXPXL s $ 3 :.5 $Xa.W 9 y 9 'X5XVXI 3.8.KX5.u.HXI.% m.3.GXHXH.1.T.+Xr.hXM.iXp.w.W C.MXIX- :.] 1 :.Y xXw 1.9XD T $XK : c.u c.~ R c.e.~ R.aX-X-XI.aX- a a.aX-X, $ x.aXl 3X-X1 3.a.~XDX-.a.a R R R RX1 R $ D D mXl.%XcXJ k.2 `XDXD R R R RX-XI c 3 RXI 3XJ `XV RX1XI R R.uXIXMX5 3.u c # cXIX-X-XIX-.a RX- 3X1X-.aX-XDXI R RXl x.~ R R.~ $ T R.~X- 3 $X-X1 hX1XD R.e TX5 RX-X1X1.eXl :XIXDXIX,X, :X, :.9 TXJ.-.3 m D RX- c c c )X1X1X1X-X1.uXDXI.aXD R.a RXlXlXl c.5 T :X5 cXlXlX,.DXDX,X,XD $ $X-X-XDXDX, cX,.ZX,X, h.M.M a < t.M.M.M UXDXD.} c `XD.aXDXD.Z s x $ h.} R.M.} u U.mXqXq.YXpXcXB.YX4.FX4X7XwX%Xr k E.Y .Y `.}XIXVXV.8 ~.8 ~XV ~XV.8.8.r",
+"XI.KX,XDX1XI c.e.a.a tXs sXe.M.a.5.5.K B.5 1XlXDXV.~.`X1Xl U $.9XD $ $X,XD.aX1 R.~ T #X1XD.ZXD $ $ h p.).@...sXi.B.BXf LXp.pX,.Z 3.`XIXIXI.8.a.`.8XIXIX-XIXIXI ~XI.KXI.5 c 3 3.aXp o.. y x cXI a a.aXIX- R.aXDX,X,.} C u.WXe.sXe.).Y.W CXF .XfX4.E gX5.8 3.8 #XV NX9.k.k.k.k.k.k N.k.X qXk qXkXx.I.X.kXtXxXj.K.k.k.K.k.k.k.k.k.k.k.kXt.k.k.k N.k.k.k N.K.k.k.k.k.k.k.k.k.k.k.k.k.r.k ~ q.r.5 ~.r.r.K.^.KXt.kXt.kXt.kXt.kXt.kXtXt.k.k.k.k.k.k.kXo.K.r.rXVXV ~X*.8 )X*Xx.K.8X* ~ 3 ~.8XV ~.H.u.u.H.HXI.H.8XI 3XD 3X1 1 x 1 1XMXIXI.aXI.`.aXI 3XI.`XIXIXI.`XI.H.H.H.K DXO 9Xm.'XK m (XD.u.uXI.5.!XL s.9.5.HXd :.' b H &.q.DXD.HXIXVXIXoX9.5.` ).%.%X.XUXw.+X0 W W.y W.g Xp.WXe.aX1.ZX1X5X5 $ t t.* h $ R a a RX-X-.`XV # cXI R 3 R RX-X- R.aX-X-X-XIX-XI a.aX-.e RXIX,XI R.u RXDX-XI RXI.a R R RX1 3 `XDX1Xl.e #X,XD xXI $X1X-XDX-.a RXD.a a 3 h c :XlX5., ` :XJXJ., mXc cXVX-.`X-.` 3.k #XD RX- RX1X-X- R R R R RX, tXI $XlXK :.2Xc 5.3XJXJX1 R mX, :XJ 1XK.]., D.,.2XI.a.` $Xc.3 TXJXH.,X. 1XcXKXK 1Xc.Z.ZX5X5X1XI.u.5X5XIX9 3.`X1X1 R.u RXDX,X,XIX, cX5 c.u #.5X, 3.5XMX5 $XM $X,XD.a RX,.Z.aX1.ZXDX,X- hXD.M $X,.M.M.M U.Z._._.w h UX,.}XM $.aXDX1X1.wXD.a.aXD.} a.M.M.M uXe._XG xXqXp.FX4.m._Xp MX<.Y >.F U.p.F .-.a R 3XV.8.r 3.r.8.8.r ~.u",
+"X- 3.u.uXV.uX-.a R t.N x._ C.a R.K.XX-.5.u 3X,.u :XV.`XlXl $X+.p 1 )Xl 3 3 RX- c : :.,X. D ` T $ h.ZXeX+.s.s.sXb.s.P.J % %Xp 'Xc $X5 c.`XI.`.` 3X1X1.` 3.`.8.}.`Xx.KXl : #X5.u.'Xw.; vXa.M RX-XI.a.a < R.a.aXDXD.Z R.M t.M.M u.M.M.Z C.W.m.JXb.@XwXU.DX1.` 3XV.HXo.5.r.k.k.kXd.kXd.K.k N.K.X.kXg.K N.k.kX9.k.K.k.k.k.k.k.k.k.k.k.k.k.kXo.kXd.k.k.k.kXX.k.kX*.k.kX*.kX*.kX*.k.k.k NXtX*XxX9 ~.r.u.k.XXt.k.k.k.k.k.k.k.k.k.k.k.k.kX*.kX*.k.k.kX*Xo.r ~ 3 ~ ~ ~.5 3Xk )X*XV.rXV.8.r ~XVXV ~.u.kXd 3.HX1XIXI.8.0 )X- x `.9 ` 1 `XIXI.8XIXI.8XIXIXI.`XIXI.`X1X1XI.HXI.HXa g !XP g.2.9XDXI.u.u 3X5.> 9.9Xs BX1.H $.Z.W 2Xa TX,.`.H R 3 3 : 3.8XI :.2.5 RX, x.9X2X>.jX>XnX>XrX4.F h.W a.uX1.H c cX-X-.} a <X- RXDX- R.`.a.` 3 3 c 3 cXI $ 3X-X-X-X-X-.a a.aX- a.a.a.a.aX- 3 cXD.u.aXIX- R a B R.aX, $ $ $.2 :.a RX-.aX-X-.a.u.}XDXD RXIX- R t R R.aXI 3 `XMXl.,.Z.9.D $X,X,X5XD hX-X-.aX-X- aX-.u c RX- R RX-X- RX-.a a.}XD aX, $.9 $ $ $.D :X1 c R.Z.]XJ.9Xl : xXl.w.9 D.u cX1X-Xc.5 cXlXD.ZXDXI.ZX- RX,X- aXDX,.w 3XDX1X1.5XlX9XV.5 3X1X-X1.ZXDX1XDXD R 3.Z # $Xl.] ( )Xl T mXK ).9 $ 3XDXD.uX,X, RXIX, cX, R.a $ c U.a.a.W x._XnXG.F vXq._ h E h h.aXD U 8X,XlX,.ZXD RXIX,.a.M R U.Z x._XGXnXqXq._Xr.YXq.p M W >X4.i > 1.YX3X-.8.8XV ~ ~ ~.kX9.r ).k",
+" #X3 #.5X5.HX1.a R.M._ y U.a RX-.k.`.` 3 a R.K #.kX9XlXD._ sXn uXDXV 3 R.uXIX, 3X-XX c $.K 'X9XcXKXwXKXc.j u * v ..@XF p.. .XwXG :.2 `.`.}XIXIX1X1.8XI.a.aXIXI.uX* D :XJ.,XcXKXw.+Xr.;XKXK T #X- <.a.a R.a R.ZX1XD B R.M.a t.}.M.a $.M.WX4 -.PX4.E yXDXV.8 c.H.8.u.XX*.k.k.k.k.^.k.k.k.k.^.kXo.k.^Xt.k.X N.k.k.kX*.k.k.k.k.k.k.k.k.k.kXt.k.^.k.k.k.k.XX*.k.^X*.k.k.k.k.k.k.k.k.k.rXo.K.k ~ ~.k.kXtX9.k.k.k.k.k.kXt.kXt.k.kXt.k.kXt.k.kXd.kX*Xt.kXV ~.r.rX*.u q.X.K.8XV.r.8 ~XV.8 3XV.H.r.u.KX*.HXD.HXI.` :X3.ZXDXK .-Xc 1.a.}.aXI.8X-XI.8 3XIX1.a.`X1.8.8.`X1.HXIXVXD.' g T x.H 3XV 3.u.8 R TXPXa.=.D 8.K.K.WXG o.s gX1.8.H :.5X1 ) )X1XI.uXVXD.ZXD CX+.YX>X8.CX>.<X>Xr._ hX, a 3 R.`.8XI.`.a.a.a.a.a <X-XD.`X- R.`X-.`X-XIXl x cX5 # $X5 #.uX-.a.aX-.a R R R RXIX1 R.a c D 1.Z $ : 1.,XJXJ.,XKX. Y.5 aXIXIX-.a.aX- RXD $.a TX1.M.a.a.a.aX- RX-X-.aX1 $X5X1.M RXD.a h 3X,XI.aX-.aX-.a R a.u hX-X- RX1X-X- R R R RX,.a t a R RX1X-X- $X1XIX, RX- R R RX1 R R.aX,.H.ZX- cX1 :.aX1XIXIXI RX,XD.a.MXD UXDXDX,XD.DX,.H 3.5XI.5X*XVX5X1X1X-.u RXDXDXD.M.aX, $.u.K )XXXlXl :.5 x.Z $ $XDXDXI xX,XI.aXD h.uXD R R.M hXD hXe.iXe._XnXqXn ..mXq._.i.l $ $.ZX,.w.ZXl.ZX,X,.u.D R.a RXD h.W.WXe xXe.MXq xXeXqXq._.pX%X4 >.p.Y.F.YXMX-XI ~.r ~.kXo.X.k 5X9",
+"X,X..,X1X. 5.a k <Xe yXL t R R.]., 3.0 R s xXXXV.~.8 R.a.W v.W.M.a cX-X-X1X1X1X- cXDX1X-X1.`.`.K c.a.}XeXe.W v v v u CXs.s.@.;.j.WXD ~ ~X-.8.8.`.8X1XI.a.}XI.`.$XJ., ).}.8 3 $XH yXGXGXG.,., :X- RXI R 8 tXV.a c 8X1X1X1X-.a tXD R h vXnXb.P L.x yX.XV 3.H c.` 3.rXXXt.kX5Xd.kXd.k.k.k.k.k.k.^.k.k.k.kX9.kX*.K.k.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kXt.X.5Xt.k.kXt.^.k.kXt.k.k.rX*.K.k.rX9.rXVX*.kXt.k.X.k.k.kX*Xt.k.k.kXdX*XtXdX*Xt.kX*.kXt.k.k.H.K ~ ~.u.8X9 ~.5.KXV.r 3.H.H.H.8.H ~.H 3.u.k.5XV.8XI.H.HX5Xx.5XI `XpXp.jX%Xe $ h c 3X1.8X1X1XIXI.8.`.8.` 3.8.`.HX1XIX1.HXI.HXI.8 3X1 3X1.5 cXI.uXPXL.=Xs C 3.}.}.).=XLXK.a 3 $ TX1XI $X, 3 R s.9XKXDXD.a v.@.@ L w.4.{.;X>...m U <.}XI.aX1XV B.u.K R.a.aX-X-.` RX-.`X-X-.a R.a.aXDX-X- 3.u 3XD :.aX-.`.aX- R R.aXD RXl $XlX-X.X.XJXJ.,X5X.Xl : $ : :XI.aXIX- R.aX-X-.a.MX-X,X,X. x.,.w.-.a 1XK.l T ).' :X. T.,.]XKXw :Xw h a $ R R.a tX- <X-.a # R.a RX-X-X1.` B.`X-XD 3.a R R.a RX1 B 3XD.`X,X,XD R R R.aXDXIX1XIXDX,XIXIX1X5.K.a R 3XDXIX,X,.aXIXDXD.DXD.DX,.Z R.u B.uXI 3 : 3.KXV.8X1X1.u RXDXDXD RXD c c cX*.K hXD.Z xX5X, $X,XD.ZX,X5 RXI.aX,XD.Z R.a a.a.} hXeXe..Xn.@.x.x H.<.J ..F._._.FXBXq.M U 3X,.M $XD.ZX, x xXD 8 tXs $X,XD $X,.Z $ R h x 1 v.F z.[XpXB.p X4 >.l.a.8 ~.r.rXx.^.u.kX*",
+" $.2XJX- T.i :.1.Y.EXe <.M R 8 5 m.5X;X,X; x m.5.K.5XD U._ v.*XwXlXK $.] 3.] ` D.KX,XIXVX-XI.H cXD.}.iXe vXn.W.NX, CXD.MXn . . S MXJ T cXM hX1.8.` F.} aXIXIX5.%.|XlXIXIX,.aXK yXG sXp x $X1.KX1X1.a R RX1 h.a.u R BX1 R RXD.}.a.a $.W.@ %.CX>.+.+X. :X5.5XlXIXI 3.KX*.kXdXo.k.^.k.k.^.k.k.k.k.k.kX*.KX9.k.k.k.k.k.k.k.k.^.k.k.k.kX*.k.k.k.k.k.k.kX9.kX*.k.k.k.kX*.k.kX*.k.k.rXx qXtXt.r.kXd.k.k.K.5Xt.k.kXd.kXt.kXt.kXt.kXt.kXd.k.u.kX*.uXt.H.K.rXVX*.XX9X9.r ~ ~ 3.H 3.HXI.8.H.8.rXtX*.u.5.r 3.HXI.`.5.k.$Xl `XpX+ WXr > 1 :.5.8X-X1 3 3XIXI 3XI 3.`XVXV.HXVXV.H ~.8.8.8XI ~ 3.~ ' mX5XDXV.0XL.=.= 8 < E.M.=.=XaXGXDXI.0 'XDX1.KXDXD U.YXGXGXc U UX+ ^.@Xf.C L 0 LX> . E h.}.}.M R.DXD.8.u q.} tX-.aX1 R.`X-X-.~X1X1 a R.e h.~X-.a.e.a a c.K.a.a.~.u c.u :.5 kXKXlXJ a :.ZXlX1.a R.KXD.~ 3 cXI RXIX-.a.a.a R h : c R.a.ZXD tXUXc.O 1.3XKXcXc :Xl `.2 :XcXl.Y.iXeXH 1 `.M.a.a ` R <.aX- a.u.a aXI RX1X- BX- RXI.e.}.a RX1 RX1X-X1 c 3 aXI 3.uX3 x cX1X1XDX,X,XI $ : $X3XMXl 3XI.~X,.ZXI h R.M.Z.Z.DX,X,X,X,XD.aX,X-.` R.5 # 3.5XI.`.`XI.D R.a.M.MX,.Z.KXV.KXVX5X, $ x.wX,X-X,XD.Z 3 xXD.a.aXDXI 8.a.a.a.a RXpXp.xXr.x.@.@ ^.P.C.4X2X2.x.<X4..X+.-.Y xXcXl.'XwXJXcXcXlXDXD t.a.Z.ZXD.Z $ $ c.uX,X,.WX,XeXG.pXp.[XeX+ >X4XBXcXIXI.8.r.`Xd.8.8XV",
+" R $ $ $ $XD sXe n.YXe UXD $X- : ` :XJX..2Xc.OXlXM.a.a yXG.N tXJXH.| DXc 7 5 IX. ' ` mXK 6 x kXD.Z.W vXp.. U t h.a.a.} hXsXe vX>X>X0.9.9.iXc.aXI.HXI 3 RXDXIXo (XlX1XD.M.}X+Xp b.sXe.* #XIXXX5X- RX- R.M.} 3.a hX1XI R R.a aX-.a.} x.W ^ %..X2 y =XJ D 5 mXJXM.}.r.K.5.k.k.k.k.k.k.k.k.k.k.k.kXd.kXt.5 N.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX*.k.k.k.kX9.k.k.kXt.k.kX*.^X*.kXt.r.5 ~X9X*.rXt.k.k.k.kXo.^.kXt.kXt.k.k.k.kXt.k.kXt.kXt.kXt.k.u.rXV.r.kXI.r q.5.k.u 3.r 3 ~ 3 ~.8.8.H.H ~.u.k.k.k.5.uXV.u c.u qXMXXXHXHX+ W.p.pXnXp XB cXIX-.`XIXIX1X1XX.k.K :X9 :Xo :X5.5X9X- 3.8XI 3Xl.]Xw kXl cXIXDXGXL 2 2 h t uXa 2 OXKXK 3 `.KXVX-.]X- kXG =.+.j.j.1XGXS = S M H.4.{X:X> ^ . E E.} h.MXDX-X,.u.KX5X-XDXIX-X- cXVXl.u.eX-X1X-X-X,XD a RXIX-.aX-XMX1 3XHXc :.]XK :Xl.u h $ a.aX,XD $ R R RX-XIXI.u R R.a.~X1X-X-X-X- a.a tX- hX,.M $ $X,XDXD.a.MXI.a RX1.}.a a < a UXq.FXnXq h hXe hXD.a.aX- #X5.8X-.a a.aXI RX1 RX-XIX,XK 3 c B R R c.u B RX-.a RXlXJX. `XcXJXJX.Xw 1.OX3.%.5XI.`X-X- RX1 hX, $XDX,X, hX,X,X, h $X1.u RX1 RXI cX1.KXX cX-X- cX,XD.aX1 cXDX5.HX5.HXlXD.Z $X, $XDX1XD xXlXD.a R a.a R R.a a.a.M <X+Xp.@XnXi %XbXb.v.s.vXi ^XfX>.x SXpXrX< [ xXl x c hXD R tXDXDXD.ZX,X,XD $ $.Z.ZX,XD.a 8 U.M.- n.-.F <.i.Y .FX+X, 3XIXV.H FXV ~",
+" :X.X, $ h U.W x t < R R.*X1X-.` a :X1X,XD.a c cX-.Z.9Xe R.aX1.ZXI.D )XJ D.5XxXlX;XJ kX#XH.O.W.WXGXL U C < U.}.a cXD R R u.W.s.. vX4XnXqXeXsX1X-.` RXI.8XVXVXVX1XD.} 1 yXn 0.s.s.M.a.a.KX9.KXIXI.a.a.a h.a R h.M.M R R a cXM.M c.WXGXn.s ..+XrXw.-XDXV.Z.Z 3 3 3.KXxXtXo.kXt.K.k.k.k.k.k.k.k.k.k.kX9.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k N NXt.k.kX*.k.k.kXt.k.kXt.K q.r ~Xt.k.kX*.k.kXt.X.k.kXt.k.kXt.kXt.k.k.kXt.kXtX*X*Xt.u ~.r.H.r.u qXo.uXx.`.rXV ~ 3 ~XV.HXI.8.H.u.k.k.uX*X* N.u.H ) kX3X. ) I.3XH.[.L M.yX<X% [XKXI.8XIXIX1.HXI.H.kXX.5Xo :.5.u.Z.5 :X5.8.8XI.8XJXHXH g mXDXIXIXD $XG 2 bXeXeXe /.=XLXmXl R 3 c 3.H ) D.9Xw.j 0.@.;.; M.+.;X0XC.;X: S SXf.x...s p p.F $.i.aX-.a R.a #X1 B 3 cXD :XIXl 3.a R R RXI R.a RX-.a.eXD.~ :XK :XJXl cXlX,.uXD.eX-XDX1 3 BXD c RXIX1 RX-.a.uX-XI R.aX-.a.aX- R.a.a RXDX,.aX- R.a R.a.a aXD.a a h.a a.} hX7.iXAXq >.F.-Xq.i h x h 1 $XD.`X-.a.a $ UXD EX,.aXD.aXVXc T.Z.wXl.5XJ `XJX-X-XI R a x xXlXK.Z.ZX,X,.a.Z cXl # R.aXIXD RX,X,XDX, xX,.Z $ $.Z hXD $X1X1.uX1.`X- 3 3 3.5 c.}XI.a 3X,.D.ZXDXDX9XIXxXo.D xX,.ZXD.wXD $ $.Z RX-.a tX,.a R.a R R.M.a.M._X+X> .XbXbXb.s...v.v.v.v.v.v ^ H.x >.. x < a.M.ZX, a RXD RXD RXD.aX,.aXDXlX,XD.M.MXD 3 $XlXqXe.FXB 3.a.} 1X4.FX+X,.}.HXI.rXI ~",
+"X,XU 1.,.[Xc yX0.j x 1.}XDX,.e.a.a.a.8.aX1X1X1XDXM 1.[.' RX, cXlXD.u `X9.5X-.DXVXI RXD.YXpXqXnXp vXeXs C u t U.a 3XIX1XI RXD u.W ..@X6.JXf.@XK TXD.H 3.8 RX*.H R 3.ZXm HX>X6 p.s.M t.}X-.uX-.`.~ R R R R 3.a.}X,.W.}.M U.a R.}.a h U.s J pXb.x.@.xXw h c.DXV.H.r ~.r.5.k.^.k.k.k.k.k #.k.k.k.^.kXd.k.X.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX*.X.k.KXt.k.kX*.k.kXt.K.kX9 ~XtXt ~XtX*.k.kXt.k.kX9.k.k.k.kXtXt.kX*XtXd.k.k.kXt.kXt.u.r ~XV ~.uXtXo q.kXI ~.u.r.8XV ~XV ~ ~.H.r.u.k.kXdX*.uXo.8 3 $Xl ).u : #X..[.SX2 W.pXpXr.[.i 3X-.`XIXIXIXI 3.8X-.`.8 3.8.H.HXI.`.8XIXIX1 cX.XHXJXGXw.ZXVXI 3.M v b 2XL b oXa 2 b g hXI.K.8 )Xt.8XV.MXGXn.@ ^X6X6 0X6Xf w.CXf.4 %XbXA.4.P....._ vXq xXeX,.a.a.aXI x 3 c RXI.~X1 R.ZX1 a.aX-.aX, R R R.aXIX-X,XlXJ : c #.u xXI cXl :XI 3XD :Xl.~XIX,X1.Z $Xl : $XD RX-X-X-XDX-.a RXD RXD.a.Z.a 3.` RXI.a.a.a a.M tX,.}.} U.}.i.m.J.p WXrX<.y.S.1Xr.,.OXKXh R.a a.MXHXHX%.SX<X< kXwXJXJ.%XcXJ x.,.|X3 k 3.a a.aXD.eXD.aXI h R RXD t.Z cXD :Xl.K B.~XDXDX,X,XD.MX,.WX, h.WX, 3.ZX, RXD 3 RX1.~.u.} R #X5XIX1XIX1XI.eX1.H.5XVXV.5X,.Z.w cXD.Z.ZXDX, RXDXD.eXDXD tX- R RXD t.M.M pXG H.{X6...BX=X= /XaXL 2 2.B.BXiXf HXn._Xe $ R.aXD.aX1 R BX1 RX,XD.ZXD.} x.a.a.M.M.MX-X1 :X,.wXqXB :.MXI < >.FX4.-Xe.a.}.r ~ ~",
+" R $ cXe xXn.jXw.9.9 TXJXKX3.a.a.a.a a.`X1XI.D.i x XU.9.uX*.]X3.`.KXJ ).`.5.k.` RX5 1.M UXeXn._ u C t < u $ h.ZXD BX1.` cXI.u U._XbXb.BXA . oXl R.`.}.8 c ` T.9 y.YXn v 2Xp v E.} a <XI c c :XVX-XI.` R 3X,X, U.MXsXnXn.d < U.a vXnXn p p.. w =Xr ` # B.8.r F.8.8.^X9.rX*.k.k.k.k.k.k.k.kXd.k.kXo.5.k.k.k.k.k.kXt.k.k.k.k.k.k.kX*.k.k.k.k.k.kX9Xt.KXt.k.k.k.kX*.kX*.r )X9.r ~X*.kX*.k.k.k.k.k.XXt.kXt.k.k.kXt.kXt.kXt.kX*Xt.u ~ ~XV.8.rXI.k.u.u.H.8XV.HXV.8XV ~ 3XV.HXV.H.u.k.uX*.k.kX*.5.8.5XV.HXI.8.K c.,Xc yXcX+.pX+X7XB.MXIX-.`.a.`.HXI.`.`XV 3.`.8.].XXJX9XJ : :.5X3XlXZ.,.+.9Xw kXMXI.a.M 1 J 2 &XGXmXG.q.' 'Xc c.uX9.`.8.` $ 3.jX>.;.;.;X0 H H.q M H.@X8.sX6 w.CX>XfX> .Xn.p._Xe .M RXD RX1XIX- RXD.aX- R.,X..u m.DXH.Z RX,X1X,XI c ' 3 RX-.` R R.` R RX-.`Xl.% `.3X5.]XlXHXJ., k.u BX-XD c cX,X- aX1 a :.- R.aXDXDXD R R.a a a <.a.a t.}X,Xe x E._.m.F.<X<.gX<.L.S.TXH [X%.[Xq.-XM.M.M.a.[X%.g.TX< nXh `XlXD.9 3.M.a.a cX5.u : c aX- R.}.a R tXD $.a RXD.a $XDXV :XlXI.a R.a RXD.aXlX,.aXDX,X5 x.ZX, cXDX-X,.uX- R 3 RXI cXM.u 3 R RXIXIXI.5 TXV.u $X1XDXlX, $XD RXDXD.D.aX,XD.a.MX- RXI.a R R.M t s._.@X>X> ^..XbX= C.D.N G.N.s.m.v % ^.4 ^...W x.i RXDX,XD RXI RX-.u.aXI R.Z.w.}.wXe.w c.}.8 ` a hXe.F.[X,XDX1 EX+XnXp.p.l.a 3XVXt",
+"XD.* < U CXe v u h RXDXDXV.ZX-.aX,.a 3XI.u.uXIXD uXqXeXDX9.KXX.HX5.KX5.`.8X-.` RX-XlXl xXG...).d.a.a <X,X, $ R R B.H BX1.DX-.a.a < u % %XbX4XGXI 3 3.a 3Xl gX>.@X> v 2.s.w.M R.a h c 3 $ $X5 cX-XVX5 3.u.DXD R.d v...JXp v.M u.M.)Xq .Xb E uXi.;X>Xw [ ` :.HXI ~.8 ~.u.5.k ~Xt.u.kX*.k.k.k.k.kXj.kX9.k.k.k.k.k.k.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.kX9.k.k.k.k.kXt.k.k.kXk.^ ~.K.r.rXt.k.k.kX*.k.k.K N.k.k.kXt.kXt.k.k.kXt.kXtXd.r.r ~ 3 ~.H.r.8.kXV ~ 3.r.H.8.H.8XVXV ~ ~.H.r.uXdX*.k.kX*.kXV.5.u I $Xx.].5X5.]X3XJXHX< M =.j MXn <XIX1 3XIXI 3.8X1.8.`.` 3.` T.5XJ ' : ).,XJXc.-Xh n.OX+Xw.9XIX,.u `.> b bX0.O.+.O !Xw., D )XI.k.HXI.HX, t.9Xw.EXCXCXm.q.qXCXCXU M.;.; S H ^XiXfX6X>.CXrXpXqXq < <.aXIXD RXDX1.aXIX,X, mXH.D D.O IXJXJX.Xc.9 mX. k KX,XD a R R.a R RX-X1X-X1 :.| k.3.2 I D ` : c.aXIXIX- hX, 3.a.a.a aX1X, R hXD.ZXD.3XlXc 1X, uX,.[.W.9 1 = Xr.g.[.1.h.[XB .-X+.gXp._Xq E._.FX+Xn.i._.F.<X%.p.F x U R.a.a cX-XIX- c $ 3.~.aX- 3X-.aX-.M 3 RXDX,X1.Z B c $ ` 3XK.uX,X5.Z.9XJ.9.-XcX, 8X1X, $XlXlXD h R.M cX,.Z 3XI 3 RX5XMXI.~XIX1X1 3Xl.K.u cXIX, hX,.wX1XDX-X,X,XD 8XD.M RX, 1XlXDXl x.uXD $Xe._ v .X>.C.B 2.s.MXD.M.a UXe.s vXb 2 ^ w.E v EXp.M R.aX,.}X- RX1.ZX-XIX,.9 1 1Xc 1.[XHX, DX*XDX,._XeXp.[X,X1XI.Z yXqXpXB .aXlX9",
+" R.}.M t.WXn.) tX,XD RX1 RXI h c c #X,.u BX-XD t pXn U 3.k NXo.kXV.u ) 3.~X1 3 R 3 `.-.9.W U t < a.} 3 cXM.} RX-X1 B 8X5X-X-.a.a < <XFXA...YXD.}XI #X- h xX+ ..s %.sXe.).*.a.a.`X-X-.a R.a BX-.Z.H.k.uXx $X1 <.w.sXpX+XnXnXG vXp..XnXe u <.MXe JX>.+X#X<., 3X1.H.H.H FXtXx.r.r 3XtX*X*.k.k.k.^Xd.kXxXt.k.kXt.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.k.X.kXt.kXt.k.k.k.k.kX9 5.k ~.k.k.kX*.kXt.k.k.kXo.k.kXt.kXt.kXt.k.kXtX*.kXt.kXt.r.u.r ~ ~XtXV.K.8XVXV.H.H.HXVXV.H.H.8 ~XV.rXt c.k.kXtX*.kX*X9XI ]Xx m ( )XJ I.3.GXh.O.OX<.1XZ.-.YX,XIX-.`X1XI.`XI.8.`.H.`.8.8XIXI 3X5 3X1 R.MXD.[ yX+.YXw x x.]XJ.3Xh.> &.nXc.W cX, 3.uX5.HXo.`X1.8X1 cXD $ =.> &XO 4 !XOXOX;XUXh.O.T.T ^.@X6 ^ 0X6Xn.@X>.@._ U <.a.a.u R.aXD $X,XDX-XD.ZXIXc :XK.'Xc.'XlXl.' 1 $X5XI RX1.aX1X-.uX-.`X- R.8 3 '.K 3X-X-X-.aX- R.a c :XKXJ # $ c RX-.a.M R RXDX,X,X, U.YXq.Y = [ [Xw.1.[.LX<.h.1.TX#X#X# | ` XB .p.g.FXq.J.F._XqXqX+ X7X%.gX7.FXeXe U.a <.}.} <XI.u.eX-XI R RX-X1X-.a R R.a :Xc m `.9 :.,.%X.XJX..2 T.jXJXc mXcXPXIXDXDXDXIX, h $X,.a.}X, x tXDX,XDX,XDXl $XDX1XV c.k :XoXlXJ #Xc '.a.a $XDX,XD.DXDX,XD RXl.YXDXcXJXc.]XH x h.M E E..X>X>...v.s R hXD.a.M U.M U v.s.v.v w.<._.F h U <XKXKXD :XK IXKXwXJ.3Xc.-XG h 1 h h | cX-XD h E .X+ yX,.`X1.ZXUXpXpX%X7 1.2",
+".a a t.d vXe <.a.}XIX1 RXD.u h.}X- a.a RX1X- R.MXn 2 $XM.X.5Xx.K.r.k.5 BX5X, x $ $.Y $X, t <.MXDXD 3.` h.K 3.` c cX-.ZXI R R RX-.a t.. {..XpXs RXD.a 3 hX,X+.<.. p.N tXlXlXIX-.`X1 B R R.aX, cXDX1.`X5X9XlXDX, sXn ..E UXeXe.ZXK x.W.M.a.a < v O 0.+.h.F.j y y.Z 3 F 3.H.K ~.u ~ 3XV.8.kX*.k.k.k N N.k.k.k.k.^.k.k.k.kXt.k.k.k.k.k.k.k.k.K.k.k N.K.k.k.kX*Xt.kX*.k.k.k N ~X*.kXtXt.k.k.k.u.kXtXx.k.k.k.kXt.kXt.kXt.kXt.k.kXt.kX*Xt.k.u.k.u.rXo.H.H.HXV.8XV.H.H.r.rXVXt c.kX5XtXdX*.k.K.rX5.k.`.D.HXVXDXIXIXl $XcXJXK [.wXpXpXe.Y XDX1.a 3XI.`XI.`XIXIXVX5.u 3XI ).Z.K : ` x.,XH [.O = =X.XJXH.%XHXH g.n.' TX1XIXI.}.`XXX*XI.8.`.8XI cX1 x.G = g yXPXPXU.q.' yXG.E.+ H ^ 2.)X= .Xn / ^.@.E._ E h xXDX, RX, 1 c.Z.Z $XcX5 RXDXIX1X-X,.e R a hX1 R RX- R R R R RXI 3X1X-X1X- c.KX- 3X1.a RX-X-.a.a $Xc ` TX. `.GXD.aXI.e.a.M 3.Z.}.WXe x M.p.YX+.jX+ n.pXHX<.g.gX7 VXMXXXM 3 h.l VXBX% >X%X7.g.< > .mX%X%XB.gX7.F.F.iXeXeXDX, 3X-X-.u.D.HX-X1 c.e R RX1 RXI RXK.wXlXw T $XlXK x :X,XlXD RX,XD UXDXDXD 8X1XDXIXDX,XD h.aXe h.-.M.w.W.Z 1 1XwX. `.u # D.$ }XJ.,X3X.Xw.Y RX, $ xX1.Z 3X,XDX,X, TX,XK 1 c.Z 1 : h.a.a <XeXqX4 H.. O.).M.M.u.a R.} h UXs.s O 2..X2XA >._.i t.-.[Xw kXc.-.u $ xXl R.MX, $ $ :X5X,X3.a 3.MXe v >.jX. c.kXV x.[.F.FXBXp.}",
+" <.a U v.s.M t < a c 8XV :XM a aXI.M R.a RX1 8XeXn.M x :Xx.r.`X9Xt.X.5.5XlXl.-., =XlX,.9 3.uXDXIX1 R.~XV.8X-.`.uXVXI.uX-X1.a.a.M.MX,Xb.s.E vXDXIX1 3 3.} xXrXrX8.Y XBXM cX* :.DX1X, $ $.u.}.aX-XI R :XlXDXD.WXn G xXq U.Z $ sXl $ R.a tX,Xe 0 0X:XAX4XpXnX+.-X5XI ~XV ~.8X*.8.rXV.r.k.k.k.^XjX9.k.k.k.k.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.kXt.kX9.k.k.k.k.k.k.k.k.kX*.k N.rXt.kX*.k.k.k.kXt.kXtX9Xt.k.kXt.k.kXt.kXt.kXt.kXt.kXtXtX*X*Xt.u.kX*.k ~XVXIXV.rXV c.rX5.KXoXo.^X5.k N.K.k.K.kX5.kX5XVX1 3X,X5 `X,X5.} 1X,.9Xq $._XqX4._.Y.aXD RXIXI.8X1.H.`X1XVX3XIXl.KX5 DX3 V m.9XJXw.1 M.>.GXh.3.%XHX.X5X,.nXD h.uXM.8X* N 3.K.8XI.HXI.8 h 3XB.Y.j HXw g 9XaXL b.w b.qXm b.s /.W.).).s b ^.vX>...F .-.,X. TXJXcXw.-XK mXKXJ 3X, $X,.Z $.ZXlX5.ZXD R R.a R 3X, RX-X1X,X- 3X1.a.K.5 R.u.~XIX-XI R t RX-XlXIXD 3XDX- c.}.ZXJ cX1 h $ RXe._._.mXq.J.FXpX7 [ k.g V .lXM.5XM.8.a.a 3.g `X7X<X%X<X%X<X< > X%.[ >.[ kX+Xp._ pXB [Xl $Xl.5 c TXKXJ.]X3X1 RX- RX1X- RX1X1 RX,X1.a $X5X, R.Z RXD.aXD.aXDX,XIX1XIXDX1X1XD.} U hX%.j [ z [ nXh n M n 1Xe.3 :.5X5.5X3 : : $X, h $.9X,.w xXD.9.w 1XKXK x t.a.MXDXD xX,.a.} < <.iXGXnXr.@X= 2.M.M U.Z 3 RX, $Xs.W.vXn 2Xf W >Xq.m xXe < x c hXD x R TXHXcXJXJ.,XcXJXK 3 `.u hX,.Z._XnX4.[.-XIXI R.lXB >X% n.-",
+".a <.N vXs.M <.a.a a.5.'XJX5XMXl ` $X,.ZX,.MXDXGXs._X, `X5 F.H.u F.K.uXI hXq.9 x.Z.MXlX5X*XI.`X-X1X1.H 3.8.`.8.a.8 :X-.aX-.M R tXD.s ^XfX+ U RXD.` 3 c.aX+X> H yX..2 , 6X# I.GX.X,Xl $.uX-X5.a c.9XI : h.i.MXL v 8.9 < $ #XlXl.uX5 c BXD t._..X>...{ W.LX: MX0.wXDXI.u.8 3.k.`.u.r 3X*.u.k.k.k.kXg.k.k.k.k.^X*.^.k.k.k.k.k.k.k.k.k.k.k.k.kXt.KXx.k.kXt.k.kX*.k.k.kXjX*.kX*.k.kXt.kX*.k.kX*.k.k.5.kXt.k.k.kXt.k.k.kXt.kXt.kXt.kXt.k.kXt.k.k.uX5 ~.8Xd.5 m q D 5 Q ) 5.& 5.A q ] q }.k.| q 5 `.u.] D.OXhXhX. 1 < #XK 1Xp.-.<.F E x R.}X1 3X-XIXI.8XV.5.5.K.uXl RXIX-.8X5.a RXl nXmXwX0.OXJXl : m :X1X1.HX1.H D.5.8XXX*.8.uX*XI.M.iX%.[X2.p.<X2 WX0.9 bXPXL.0.O.> HXmXC b uXe.W.N 2 O bXC.E [.pXw $Xe.M hXD.aXDXDX-XDX,XDXI tXI aXHXKXH ` :.- :XlXc TXlX- a.a.eX1X,.~X-XIXl.~ RXI.8.e R aX1.a RXDX- R.aXI RXIX- c.a 1X,XD $X,X, EXe.F.pX%.g.gX%.g [ X3 XM.l # h.a 3.aX-.a.aXMXBX7XB XBXBX7.g.[.g.g.[X3 XBX7X%X%.F v.Y =.-XH.'XKX3Xw ) T.u x.uX-.aX1X- R 3XDXDXDXI x 3XDXl.ZX,.w.ZXD.aX,.ZXDXD $ c $X1.DX1 t.M <Xp.S [Xr nXh.x.YXp.YX+ v x h : :XlXVX5.HX1 $.,XKXe.-XK kX..9XlXKXKXU.,.'XDX,.M.MX,.a cX, <.a < E.FXqX>.@ O v.)XD.MXe.wXlXDXD 'X,XsXn JX4 S z z ..m EXe EXq xXcX. x.[XK.-.9XK.0X5.DX1 # ` $XIXI RXD E._.F.p XI.`.a XB.p E E",
+" <.WXG.W t <.aX- RX1Xl 3XK `.,XcXwXJXJXc.-., &Xw.jXl #.$.`.`XV c.k.k : `X, `XGXq x R.H 3.`.~.`.8XK.H.D.8 :Xl.5 :.$ 3.a R.ZX, x $Xp..Xf w.EXGXlXIX- )XDXD.E b.sXeX5Xx.u.K `.i # #XI R.~XI.~ :Xl.,XcXw k [X+.jXe U a.5.K ) $XK.KXX '.ZXe v .Xf.{X8 S MX2.jXG.Y.M RX1XV.8.K.r ~XV ~X*X*.k.k.k NX9.k.k.k.k.kXt.k.k.k.k.k.k.k.kXt.k.kX*.k.k.k.k N.kXt.k.k.k.kXt.kX*.kX*Xt.kX*.k.kXt.k.k.kXtXtXo NXt.kXt.kXt.k.k.k.k.kXt.kXt.k.k.kXtX*.k c.k.k.k ~.H.8.kXxX9 (Xx.$Xx ) ) ( 5 ) 5 ) ).5 q :XJ.].] DXhX;XHX<Xc.1X# h x ` XMXp.F.m .Xq.Y U.aXI 3.`.`.`.H.`.`X1.`XI.8XDX1 3XIXIX1X1 xXKXU !XU $Xl D.2 DX1.H.u.D.HX-.5XX.k 3X*.5 qXJX3 R.l.[X<.pX2.xX2X: M y v.!.nXU.G.+.qXCXC.j y.jXK H ! 2 0.@X>._.iXeXe.M <.a t RXI.ZX, 3X1.MX5XJ.a $ $ :XK T.'XK.9Xl T cX,.aX-X-X, 3.a.aX1X-.u :.u.K 3X1X-.a RX- a RX-X-.a RX-X, aX,.aX-.aXD cXD.W.}.m.pX<X7 >X7 .lXBXB VXM h a.a.a R 3X-X-.a.a 3 ` 1 #XBXMXM #.[.g [X3.l X3X3 XBX+ n.<XG._.9.Y h R.MXI.e.a.a R cX-XI B : 'XHXlX5 x : mXDX, $ $.ZXD $.Z xX,.aXIX1XD.ZX1X1XI cX,.} x.FXq.xXr y n.jX+Xp.<X+X4.Y 1 x : 3.u cXDX1 h.MXeXc 1.YXK.'Xl.MX,X,.Z tXDXDXD U.M h.W hXD U.}.} U.FX4X+X>.@.sXe u.w sXlXw TXK gXc.>Xw M W.4 z WXr....XqXnXpXr.Y._ x $ x.Z tX, 8X1XD B.MX, xXIXI.~.}.M._.m >X% c c : U.[.[X<XB",
+" u xXL uX-.a R.aX-X,.}X1X-X- B $ :X,X, U U v oXG $ cXK 3 R.8.`X9XV.uXl `X,XrXp s x : :.K.k cX*XV.u cXIX1X-XI.H :XD.a a c.}.a.a.MXnXnX:X0Xn.0XJ.D.HX5X1Xl J..XL.}.KXoX1X-X1 t.a.a.aX-X1X1 BX1XVXDX1 $.a.FX7Xe v v $ c.a VX9XX DXw x.- U.j.Y.E.+ M.TX: ^X2.;X>X+ n.9.WXDXI.8.5 ~.r 3XV.r c.kX*XtX9.^Xj.k.^Xj.k.^.k.k.k.kXj.k.k.k.k.k.k.k.k.k.k.k.K.k.k.k.k.k.k.k.kXt.k.kXt.kXtX*.k.k.kXt.kX*X*Xo.KXt.k.k.kXt.k.k.kXt.k.kXt.kXt.kXtX*.kXtXt.k.kXt.HXV.r.8.rXdX*Xd.uX*Xd.uX*.kXd.k cX*XV 3.H : 'X1 $Xy.O.j.9X+X<.,.[.a 3X, <.FXqX4 E._XG .w.aX, 3X-XIX1.`X1XI.` 3.`X-.8.` 3.`X1XV.H.0 m g ! g $.9X1X1Xl.0.|XJ.`.H c.K 3X* D VXX : DX3XJ | [X% W [ W n n nXwXC J.q.> & b O v.WXD.w $ xXG.n O J v.<._._Xq x t.a t R.a R cX- aXJ a.9 :Xc :XH aX,.a.e R tX-.* RX- RX- 3 RX-.a R a.aXI :XV 3X-X1.a.e.a.a R.a.a RX-.aX-.M 3X1.a.a.uXDXD 3Xe._.FXBX%X7X7 XB.,XBXMXM :Xc xXc.-XlXc ` c <.}XM # $ h #X9 XXXBX3XX h.a cXB ` X7.[ >.F._ 1Xe.a t.MXD tXI R.a $ a.a `XJX.XcXH T.,XKXIXl RXlX,X,X,.MXD $ aXD hXD.uXDXI RXDXD.M UXeXqXr n.j &.+ nX>X+.xXpXn.Y.Y $ xXV.a.a U $ h u.M.}.M U.M h 8X,.Z.MX,.a R.M.M U._ 1._ 1 U.wXeXp.1 W.x z.;.;Xr nXU = nXPXc.].'X5 xXeXGXL v 0Xf.;.;X4.@ . v.<Xe._Xe EX, h.aX, CXD BXD a.a.i.}X1 RXVXD UXq.JX4XH 1 DXJXw.O.1Xw",
+"XGX+ <.a.aX- RX-.ZXIX-.a.a RX1 BX1 R.a t uXq...* RXl.$ 3.`.}X5X5.K RX-.M.9 1.W.Z $ c.K.5XX.KX9.KXlXX.~X1XIXV $ : : 1XJ 1 RXJ x.9XeXi ^.E.W h : 3.uX1XD 1Xp.s._XI :.`X1XI 8X-.a.aX-.}X1 8XIX, D #.DXD 1 h.1.<.@ b y c.`XV ` x x.Y.9.i.w v.EX> z.T z.;Xn.@ H S S.@XpXcX,X1 3.KX*.r.r ~XV.k.k.k.kX9 N.X N N.KXj.kXj.k.k.k.k.k.k.kX*.k.k.k.k.k.k.kXt.k.kX*.k.kXt.k.kX*.k.k.k.kXtXt.k.k.kX*.kXdXt.5.k.k.kXt.kXt.kXt.k.k.kXt.k.k.k.kXt.kXt.kX*XtXoX*.H.HXtXo.uXtX5.r.k.kX*.k.kX*.u.H.rXV.H 3.`.3 Y.%Xy K.GXh.OXZ.[Xc $X-XK $ :XcXHX4.xXpX+.i.9.l.aXIXI.`X1XI.H.8 3X-XI 3XIX-.8XI.8X1X1X5 !.0 gXw.2.'X5.].2 D.2 g.5.H c )X3XJX3XMXMXMX3 V 5 V V XB.9XB .- n.>X0 & b 0 0.WXs.MXK.%XlX; = 9 & M.x zXpXnXeXnXq.M < a.a.` hX1X- a.MX5X, #X,Xl R t R.aX- R R R R.a R.a m hX,XDX, c.u 3XJ :X9 c.aX-.aX- a R a.aX-.a.aX-.~ h.a $X5 h aXD hXr >XBX7.[X7X7 `.SX3X.XcXKXUXl.9.,Xl $ ` `XI.a.aX,X- <X- a.} 3 c #XM h.a a.a.a XB [ >.m p xXe t.} h.}.a.a.a.a $ $X,X, xXD $X5XD RX,XIX, $ x.M.Z $.Z $ R 3 <XDXD $ 3.ZXD.} UXqXpX+Xr H.9 9 y nX0XrXrX2Xp._.Y h.M.M h xXpXpXq.w.FXeX, U.M.M xX,X,.aXI.MX,.} UXpXq.YXp o._._._Xp.TX%X:.TXh.;X>.w._ hX,X, x $ xXlXl.Z.Z.WXa.=.s...@ H.x.;.J SXn p._Xp.9 U.M U R.M < U.i U 1 x.aX1XIX,.}XeX4.F.-.j $ $ $XlXKXK",
+"X0X0 h 3 <X-.` B :XI a.}XlX-XDX1X1 B a UXe.. E.M R.k.5.$ #X*.~.u :.a.a.Z._.M.M t R.8.~.k.`XI.a cXX.a 3.} `XI ' : 1XJ.M x $ 1 g.9Xr M SXw 1.a.u.uX*.8X, yXAX6Xq h #.u.aX1X1 BX1X-X1.a.eXD a R.KX5.u.u.Z .p.;X0 zXw.ZXI.} cXe v.).aXD c U vXf.C.<X4XA ^.. ^.x.4 vXG y hX,XIX*X9 ~XV ~.r.k c.k.K N././XkXkXk N.k.k.k.k.k.k.k.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.kX*.k.k.k.k.kX*.kXt.k.kXt.kXt.k.kX*.X.kXt.k.k.kXt.k.k.kXj.kXt.kXt.kXj.k.kXt.kXt.k NXt.r.k.k.u.k.k.K.k.kX*.k.kXV ~.r 3XV.HXV.`XI.2 Y.O !XOX; @X;.O.>.Z.HXV.k.~.2X,Xh._Xp.LXe v 1 1X,XI.`.8XI.`X1.`.` 3.` R 3.r.`.`.H.H.H.5 g ! T.] Y YX.XO.2 g ] @.%XJ }.$ | :.l ` k V | `.[.,., [XH k Xc.j.E b.v.v ^.vXL.NXDXcX. : kXw.9X0Xh H.y.x.<XnXe.F.M tXDX- R.8.aX1XI.a.a UXD.aX,XI.a R B.a R RXD R R R R T.9.OXKXHXJ mXJXc }XHX$ cX-XD aXD aXD tX- <X-.a.aXD c T :XDX-X,X,.wXh.YXBX+XB.[X% ` `.}X,.eXl.a R.aXDX-.a.~XI.eXI R.}.a R R.aX-X-.` RXIX- R R.a.a.aXXXM XB.g.pXq._Xq h.WX, < t.a.a < RX-.a.a.} $XD.aXl $ 3XDXD hXl $ $X,.aX, x h c.i $ $ $X5Xl x x.YXq.j = HXmXm ' ! v y.@X0 WXpXn.i x.iXn.Y.FX4.< .W x._ h.MXDXe xX,X,XDXD.aXD._.F.[.x.YXpXn J.<X4.< .X4.<.y.EXp o xXs UXDXDX,.ZX,.M.} c.D 8Xs 2 2Xi ^ ^X6X>.C W.@ .Xp._Xq U.} U.a E h._.mX7 x UXD R B.n BXGXp > [ 1.0XJ.|.DXc",
+"XC.M < c.u 3X,.5X, #.a cXI 3XI R R.a.a.M v p C.a.u :.8XX.`.aX- $XM R.N 1.W < a.a.`X-Xl D 3.uXM $X3.} 3XIX-X1X- aX- a.aXI.a BXD.W EX>.T M.YXIXIXV 3X5.Z y.4X: MXw # :.'XJ 8X1 TXcX1X, T.9X5.Z 3.K.0X-.a.MXsXr.EXG.j.MXX $.YXp.< v.MXI.a U v.W.sX4 % %Xb %.<.;XfXi.@.- R.aX* ~XXXt.r.rXV.u.k.kX9.K.XX9.K N.X.kXt.^.k.k.k.k.k.k.k.k.k.k.k.k.k.k.K.k.k.kX*.k.k.k.kXtX*.k.k.kXt.kXt.kXt.k.k.kXtXtX9.r.kXt.kXt.kXj.k.k.k.k.k.k.k.k.k.k.k.k.kXt.k.X.k.k.kXtXt.k.rXtXtX*XtX*XtXV.8XV ~ ~ 3.` 3X5 TX.XP.0 'XU s 9 TXOXDX1X1.`.` ` D.1.p.j MXw.p.-.[ 3 R.}XI B.HX1XIX1X1 3XI 3X1 3 ' (.2XlXU gXO @XyXyXy @ 4X; @ !.G Y K 6 |X#XXXMX,., XHX# 1 |X# .3 k kX3 V 1.[ o J 0XiX=.WXsXs.MX1 hX1X1.a R.WXn.s.@X6Xp.<._XeXGXD <X-.a R 3X- aX, R.aXD.a.aXD a R.aX,X,.a R.eXD.a RXcXl 1 x c 3 h.K :.KXlXlX-.aX-.a t.a a R.a R R RX-.a 3XD.a R RX, R U y z.h.hXhXHXH.[ 1 R RXD :.Z.aX- R $X-.aX1.}X- aXDX, R.a R RX1X-X1 R R R t.aX-.8.}X3 XMX7X%.p.FXn.iXe.i.i h.M.}.M h.i h U.a hX,X,XD $XI c.a $ c.9 UX,.M.MX, xXq x hX,X, UX,Xe xXBXrXr M =XmXmXP.0 gXG.w M = [XpXGXpXpX+.<.x.p.-.j.-Xq x.wXq 1.M x x x U.MX, xXpX2.p M MX0.; M M MX>.xX>.xX4...WXG.M h.} h.}.M.} $ 3XIX1X,.Z 8.N /.s.v.sXb.v..Xf r WX+Xq._.m U U E.m.m.FX+X<Xr.Y.j.w 1 DXc k z.g.1Xw T (.0.kXV",
+".M.M RXD c $X,XD R.aX5 1XJ :.O.Z.M.M.W x v U R R.Z.8.5X9.a.aX-X5.-.}.w xXsXMXMXMX- :.u.|XI aX.X3 :.}XM.3.0.~X1 ).u cX5XMXDXI RXD.sXn.JXn.E hXD.uXM :X+Xn...y 1 xXl DXJXH.ZX-XcX3.uX1 T.% xX1 h YXo BXVXK.M.) v.EXG.d.M U.-.@.s._.d.} UXD.W v vXG p U u.d ..xX6 % y s.MXI.8.rX*X9.H.H.H.r.KX*Xx.k.kX*.k.^.k.k.^.^.k.^.^.^.^.^ N.^.k.kXt.k.kXt.5.k.u.k.k.k.k.kX*.k.k.k.k.kXtXt.k.k.k.k.k.k.k.K N.kXt.k.k.kXt.k.k.k.k.^.k.^XtXtXt.k.XX*Xd.kXtX9Xt.kXt.k.kX*.k.k.kXt.k.r 3.rXV.HXV 3.8 ~X- D kX; @.O.qXy gXK m.G.5XIX1 ' :X,.iXwXn._ vXeXG x.F h.}.}.`XIX1XD.D D XJXK.S.% =XKXU yXO.> s gXUXOXU.].0 TXl.'.'XK gXHX..Y.3 h.a.} <.- `.9XcXK :.9X, xXKXMXMXMXcXr.s.v / 0 vXq $ 1X1Xl.Z : x x x M pX>X>.< ..m p._XqX,.a <.} 3 < R RXD 8 R.Y.aX,.aX-X,.w.Y $Xe.9Xl :XlXl.} tX-X1.`.`.u c R aX, < t <.a.a < t <.M R a.aX-X1 a.a.a.a.aXD.M.M._XG.[XhX%.SX<X. kXM x 3XDXI aX,.a cX-X-.`X- R.aX-X,X-X- R RX1 RX1 R RX- RXI R.aX-.} `X3 1XB.g.[X4 >Xe._._.i.m.i E.l._.iXq E U h.ZXD R.Z RXIX, h $X, U UXe x x._Xq._XeXq xXqXqXeX4X7 WXr M M.qXm '.9XKXL y.j = =Xw H.jXw MX0 & =XwX0X+XGXGXpXnXqXqXpX+.FXqXp.p.jXr M.;.j.j HXm H.q H HXC M ..Y.Y.jXw.Y.9XK t RXD $ cXD.aX- $ R t CXD 2.s O.= 2.v 0.4X8.< ..m._Xq EXq.JX2X% r z W.-.-.,.-.' 1 y xXr h.i.H.8XV.`",
+".a R < t t R R R.a.a.M :X. 1.,X.XH = n.1XU.9X,.ZX- R # 3.`X-.uX5Xe.M.' U.aX,XV c.` 3 5XJ.u.5XH.% #XI.e.,X1.Z.0 YXl 3 c | `.aX,X. C p M . J vX,X5.w.YXn.s.s.).j 3X-X1.K : 3 3., `X,.~XJ D.0 cXlX. :X1XlXcXD.M.NXGXnXpXe p vX>Xe u U E.MX,XDXa._.) * C *.d.).J . ^X+ x.aXI 3XV.k.X.r.H.u.HXV.kX9X*.k.^.k.kXj.^ N.X.X.oX9.o.X.oXg.o N NXj.k.kXtX9.k.k.k.kXtX*.k.k.kXj.k.k.kXd.k.k.kXt.kXt.k.k.^.K.k.k.kX*.kX*.k.kXj qXk.z q./ N NXo.X.kX*.k.k.XXt.k.k.k.k.kXtXtX*.kX*.u.r.H.8XV 3.H 3XVX-.] DXy @ @Xy.OXw.2 4.GX5XIXIXDXc.9.9.p._XqXe $XnXe._ <.}.aXIXIX1XD : 1XH XrXrXw y.q 9 o 9.! x.n.' $.n.' $ 8.M '.9XwXy.YXl X,.a.aXDX-.ZX, t RX,XD.*XD a a 1 x .jXn 2 /Xp.>.j v.-.w m ` n '.Y.E.T.) ^.J %Xb.mXAXn._ E E < h a.aX- RXI RXl.-XwX,X-X-XcX, 1.-XcXc.9Xc ` :.a.a.aX-X-.` c 3X- t < hX, h.iX,X, U.M.} U h.} < < <.} t.a R.M < UXeXB.p nX7XB.Y 1 1XK k.-XJ TXKXJX1 cX- R.aX-.a aXI RX, R R aX- RXD.~XI BX-X-X- aXI.a.aXlX7XlXB.p.pXB >X+ >.m._._._.FX4Xn.FXq._.WX,X,XD c cXI.a.M U.F xXn x xX+.pX+X+Xp.@XpXpXpXq.FXpX+Xp.j &.>.Y ' s.0 CXl g.jX0 = =X0X0.> yXmX0Xw ! = MX0.YXnXnXpXn M._._Xp.YX> &X0.jXG sXG b o & o &.+.+.+ zXr.jXG.9.M C.M RX, h.ZX,XI R h.a R.a 8 tXs 8.N.=.v 2...@.x.< % %._ . . S.<...{X>Xn.F.W.}.a t.M s xXqX4 hXlXoXV F",
+".WXe.W.W U U U U u.M u UXe t t U u.j.9 n x y.Z 3X- 3X5 cXIX- xX5 hXGXeXD a R 3 BXI B.~Xl.5XDXl.a 3.a 3Xl.H B :.9 `.a hXH.,XV 3XJ tX,XGX>.xX> vX+.[.jX>Xn._.Z R 3.u hX*.e.` R.e a.a 3.} 3X,X1XJ c :.K.Z :.M 8.M.NXe.@XnXn ..YXnXGXG x.YXpXp.<Xf .XAXiXn v bXp.+Xq y.ZXDXI ~.8 ~.kX9.H.H.HX*X9.K.r.k.k.k.k.k.^ NXg.XXgXg.X.oX9Xg.X.b N.^.k.k.k.X.k.k.k.k.k.k.k.k.k.k.kXt.kXt.kXdXt.k.k.k.kXt.5.k.kXt.k.kXt.kXt.k.kXk NXx.XXk.k NXgX9.k.^.kXd.X.kXd.^.b.bXo.kXjXd.k.r.r 3 ~.8X5.k.KXV c cXI.w s ! !XO T s '.0XyXVXIXI `Xc XeXn._Xp x.WXp h Xp.9 ` 1.a.`XIXIX-.MXwXwXGXL b 9 & b.n v s.9 $ : R R B.Z.Z RXK n KXH.G VXM c 3XMXI R RXD.ZXIXDXIX1 R $ x ` .-X+ v.s / 0Xn v vXLXe.WXL.W U.W vXn.v ^X4X4.<X>.p.xXn.mXeX, < h a.a.M RXc.9Xc.e.u.a RX-X- R.M t R R t BX-X-X-.a aXIX-XMX5 < <.M x E hXe.i EXeXe E.i E h h < < < < UXe.iXeXe.m >X<.gXpXB Xq.} x $XDX,X1 `.] c R 3 B R 3 c 3 c 3 cX-X-X5XlX-XH :.] 1Xl : T $ R RX- < c., 1XB.gX7X7X%.[X+.FXq.F.pXr.g >Xp._._Xe x U <.M h $Xe U pXnXnX4Xr.j z nXr nXrXw.jX+ v .XnX+ J o.E & gXK '.9.Z sXUXUXU & M.> n.9 yXU.' y vXP.j.j nX>XpXnX+ & vXp.j M M.>Xm.Y.n v s s b H J o J.E 0X=.N C C.W U.Z.M t.M $ hXDX,X1.aX,.e a a R CXD.N.NXeXGX0..XfX2.@XnXi 0 S ^Xi.vXf HXiXnXG h UX,XD vXc nX<.-XH q.$.u",
+"._....._...s.m.s._XeXe..Xe p p.N.W._Xn vXG.9 h.W $Xl 1Xw.S xX, sX+Xc h.ZX, B.ZXo.0.kX1.~.8 #XD.~X-XI.~ R.e.a.a R.a t.aXI.aX-X1X1 RX, s v._.@.< ..sX4._.W v $ RXIX- R cXV # I q.KX-.a h.a.}XD 3 3XX.l $XD R.N.M u uXF * *.W u C 8 C.N u t.d.x % { %Xf.@.EX>.EXG 1 XDXIXI 3XVXVX* ~.5X9XV.r.5.r.K.k.k.k.k.kXj NXg.X.oXg.X.XXg.XXg.oX9.b N.^ N NXt.k.k.k.kXj.k.k.k.k.kXj.k.k.k.k.kXt.kXd.k.k.XX*.kX*Xt.kXt.kXt.kXj.kXtXjXj.kXj.k.k.^.^ NXo.^ N.^.X.X.X.X.b.X N.k.k.k.r 3 ~XV ) ( I `.AXJ.2.G 4XyXy !X;X; ! YXJ x 3 1 $XwXwXGX+.j.gXe.FXB.F._.i._Xe : c.a.` 3 3 x.O &.q.+ b y &.+XUX.Xc.3Xl mXw $ g mXl TXPXJXc `XSXHXH., c : :X,X1X1 R R 3 $X.X. T.].[ `XB.jXG.v.. 0.s 0XG . J v 0 v 0 ^.. 0Xf wX>.@ >.JX+.x.pX+._ EX,.M aXH.9Xl.a t.a hXIX5 c.~ R a RXD t R t c R.aX- 3.5 c.~X- R t.a UXqXp.[.-X% >XBX7.g.[ >._ E E._XpXp.FX4.F.F.m.m.F.F.F.g.gXB 1 h.a aX-XI BX-.aX- c 3 cX-.`X-.eXDX-X,X- mXcX,XD RX-X- aXI aX-XI.a.aXc `Xc V.h.S.hXZ.T.SXBX%.g nX+ X+Xr [.-XpXe.FXqXe x._ EXqXqXn.j [.+ [ =.YXrXm.j.9 o &.> z = MX0Xr &X0.> g s s.DXD.DXI U.w.'Xc y.9XGXD $ s s.Z.j.9XmXGXU.+.>X0.+ = = nXm.Y o.9 xXs 8.MXL b.!.q O 0Xi 2 2.s.=Xe.W.w.s tXD t.w.WXDXDXD BXI.Z RXDXD hXl.9XKXGXe C.s OXnXi 0 ^ 0 ^ 2.BX= { HX> v.;._ 1.W $XeXGXG >.MXI.8Xo.H",
+".@X4X4 0.. .....Xb % %..X6.s.m...mX4..Xq.@Xr.jXpXp._X+.YXr.)._._ v.-X, h 3.uXVXl DXVXl.K h c a h :.uXI.e R R.e a R aX- R RX-X1 3XV $ C.W v.JXA % %.. v CX,X1XI.~.aX1 a.uX9.KX-X-.a.a c h.a xXI.aXM 3 uXD v vXe p...sXb p %...).) u U uXFXAXfXi.J.j XeXeXL.Y =.OXl 3.u 3 ~ ~.8 ~.u.8.kX9X*Xd.k.k.k.k.k.^.k.k N.XXg.XXgXg.oXgXg.XXg.XXgX9 N.z.kXj.k.k.k.k.kXtXj.kXj.kXd.kXjXt.k.k.k.k.k.k.k.XXt.kXt.k.k.kXt.kXt.kX*.k.k.kXt.kXj.kXt.^ N N N.^.^.o.X.b.b.X.o.o.X.^.r ~ ~XV.8.u.8.u.uXVXV 5X.XU.0.0XO m.' $ !.2XKX. kXw.S [Xr.F.WXqXe < t U._._ x 1 1XD.8XIX-.aXcXmXr.+.h.q.q =XyXw., :.O #.3 mXKXw T.O $Xw.D sXK n mXXXc c R R.~ RX-X1.aXI.ZXV $XJXh }., [X<XG o & S H.;.x ^.@X6XiXf %X6Xi w.@.@.@X4 >Xn.pXpX>.p.F.. E E.-X, h.a R.a.aXKXl V.]X3 D.]XcXKXK., TXcX,X-.8Xl.`.aX-.} R.} EXe.iX+.gXBX7 [.gX%.g.[.p.<.F.F.F.m.m.FX+Xr W.g._._Xq.FXq.FX7 V x 1 R.a.~X-XIX1.a R.a 3 R R R.aXI R.u c 3Xl.e $ B.}.Z RXIX-.a RX- RX-.9 :.9XM 1XK.[ nXH.,.-Xw.,.[.-.,.,.- nX< WX7.[.p.[XpXpX4X4X4X> W.+ =.9XGXG.9XG 9.' s vXG.!.jXC y.j & H y.9 '.Z.D 8X, sX5.wXe.ZX, 8 R :XK g gXPXwXwXU.+.>X0 y.jXm.'X0XmXm.9.w.D RXDXD C.D v.q & b 0X=X=X= 2 O 0 O.sXL v.N U.Z.Z.Z.MX1XI BX,.aXKX3 `Xc k $ R.M u C.N 2 b.v b.@.v.= 2X= 2 ^ H ^Xq._ U h R.M ._X+Xq 3XV.HXo",
+".;.;X8 H.4.xX>X>X>.;.x.@.xXfXfX6XfXnXf .X4XnX6XpX> M zXr p...s ..-XpX, 3XM.aX-XIXI 3.KXI cXD $Xc.9 $X, $ 3 hX,X,XD 3X,XIX,.Z.Z.D.uX-Xl vXn.C pXb.d u.Z a RXI.~.8 R R.KX3.~X* ~XIX1XI $Xw x h aX, hXK x v._.. v......XiXb...J %._.s p pXAXb.C.@.EX,.}.M.aXq oXr.Y 3.`.H 3 ~.u.rXV.8X*.r.5.KX*Xd.k.k.k.k.k.k.k.b.XXg.X.X.o.o.X.o.XXg.XXgXg.o.z.^.^Xo.b.X.b.^.^.k.^.k.^Xd.k.kXdXtXd.k.kXt.k.K.5Xt.k.k.kXt.kXt.k.k.kXj.kXtXtXt.k.k.kXj.k.^ NXg.^ N.o.b.X.X.o.X.o.b.X.^X*XV.r.8XV.HXV ~ 3XIX5 4 ]XO ! TX5 B R 3XD $ $Xw.[ nX7XpXp.<XqXq UXq.Y p vXn.9 UXJXc cXlXc.O.>.jXCXZ.G.+ y g '.Z.Z cX5 $X,X,X, $ 8XD.'XD.'XlXw.,Xc : `.}X- 3.aX-XI RX- c.a RXDXKXMXhX..1.L.+.T M S H.@.4.{ w.4.4 w w.;.; SX>.x.jXnXq.<.<X+.xXn.m._Xe.F.M < < t <.aXD.~Xl c : c.a : x.Z $ x $ RXIX-Xl.a.aX-.M U E.i.m.F k.p .[XBXM.F.FXB.[.p.FX+Xq.FXrX%.g WX% > > >.gXBX7 kXB # aXI RX1.eX-X1 RX1 a.~ c R.~ R $ : $ D.eX1XD 3Xl aX-X1.e R RX-.M.a.aXI.M 3 n $ xXw 1.9Xc.,.,Xw |.S [Xc V k.gX%XB.F W.pX4XnXp.<.E z [.j y.'.W.D.ZXD.Z.'XGXP b.' bXG.9XmXK.9 g 'X, 8X1 'XD B R.MX,X,.aXIXD.0XJ $.Z $Xs.Z.W sX+XK.' y.9 9Xw.n.DX1X,XDXDX1 8XD.'Xm H.q.v 0 0 O.E &XC.@ O.v J.).=Xe.WXaXD 8XD R.HXIXK : : 3 3.}.a R tX, C.NXL O v.N.W.N.N.=X= 0.4X2 .._._ < R R.wXpXqXBX1.8 ~.H",
+"X>XmXC y H H H & HX0.; HX0X0 M M r.+X: SX:.+.+.+ r.;.y.;Xn .X6Xn W.Y 1 U.M.M t.a.a < <.a UXD.- x x.W t <.* aXI aXIXIX1XDX,XD 3 x 3.D xXw M.TX>.pXn.9 nXlXlXlX, h.DX1X,.~ 3X- RX1.~ $.D 'X.XG.Y.[Xe y.jXpX>.<.<.J.@X4XpXn.xXnX6 {Xi 0.<.sXpX0.Y.w R 8X1 y.E.E =Xc.}.8XV ~.HXV ~ ~.u 3 ~XX.X ~.r.k.k.k.k.kXjXj.^.XXgXg.XXg.XXg.o.X.o.o.XXgXx.z.X.X.o.XXg.X.X.b.X.o N N.b.X.bXo.k.k.k.kXt.k N NX*.k.k.k.k.k.kXt.k.k.kX*.k.k.kXt.kXt.k.k.^ NXkXd.^.X.o.o.o.X.b.b.X.b.k.r ~.r 3.r.H 3XVXV.`X1 T T '.DX1X1 ) ) RXDX, xXc y.SXc.L.1.F v xXq.1.+X+.Y.- U.Z :.9Xc =X;.OX0X0 o.; =.G.+ ! 8X-X,X1X, c.M < R RXD.M.DXm.w sXKXw.- `Xl `.aX-X-XIX-.aX- c B.aXIXD hXM Xw.S z z.+.hXf.@Xf.@X>.C.@X>.xX>.@ MXrX+Xq.M uXeX4XpX2Xr.<Xn.m._Xe E hXe.}.a.} hXDXI aXI.a 3 aX- R RX- RX-.` c c.a.i h.iXeXq X+X%XBXM `XX .lXM.FXB.[XBX%.[.[.[Xp XBX7.gX%.g.y.S.gXBXBXl $ a.aX-X- :X- B R R.~XM : $ #X5 `XJ mXJXKX3Xc.,XJ I : xXl.Z 3X, :XDX, h.aXc $ nXcXH :XH kXJ k mX3 $ #X3 VXcXB kX< [.SX%X>X> H M M =XU.j.] g $X,.wX,.Z :.0Xl.'.'XG.' s x.w $XD.w.Z.ZX,XlX1XD <X,XDXD $ $ 1X5X,XDX1X,XDXD.ZX, s $.W s.Z.M '.DX1XDX,.H RX1X,.Z.!XG y.q oXC.; HXC.q H & H J ^ ^ 2 v.WXs.ZXDX1XIX, K.Z :X,X1.~XI.-.e R t.a 8 t 1 U.M.M t.*.NXa 2 ^X2X4 ..i <.a.M hXGXqXB 3XV ~.H",
+"Xm 9 s v.n 0 s 0XG oXG oXGXmXC.O.h.+.TXh.T M M.+XrX0 z.4.;.4X>X0XL y v.w._ UXe < < < <XLXeXe.YX+ v.sXeXe U.a aX1.`X1X-XI.Z.a t c R R.WXGX> .._ s.9Xc I.%.-.9X.XU D m.DXlX5X,X,.u $ $ $XKXw.Y.-XrXGX0Xr.TX<X+Xn.YX4.Y.pXrXr.<X+X>.@.EX>.< W xX, R.H 3 s o oXrXG hXI.r 3XV.rXV ~XV ~ 3.rXX.K ~.KXd.^.k.k.k.k.k.^.X.X.b.X.o.X.o.X.o.o.XXg.X lXgXg _.XXg.X.o.XXg.XXg.X.X.X.X.X N.^XtXt.kX*.kXo.k.k.k.k.kXj.kXt.kXtX*Xt.k.k.kXt.k.k.kXjXtXd N lXd N.o.b.b.X _.X.o.o.X.kXtXV.r.H.u.k.r 3.rXIXI.HX1X1.HXIX1 DX1., D.9XwXc.[XH.F n nXG XwX<.jXw xXqXGXB.i <X, sXG 9.q & M.TXr & y gXKXO.'X1 $.a cXD.a R R.a.Z v.'Xm o.qXrXU.Y `XM : #.}.aXI.a.a cX-XI t 3.a #XM `XrXr.YXpXpX4X4XpXnXGXp.@.@XG.YXn [Xr.YXe < <.WX+Xn.<X>X2.xXp p.m._ E E E.W < U $ h R.aX-XDXD R RX-XIX- RX- c h $ h._Xq.F >X%.[X7XB.l hXXXM 3.a #XMXMX7 k.[XB.[ XM V [.1 [.SX<X#.T k | 1 3XI.aXIXIXlX, h 3 h c.9 kX..%XK ` m., DXK : 1.uXl 1 : $X1XIXDX- $XD R aX,XDXK.Z : $.Z c $XD 3.a.aXIXIXD 3 `X3XXX7XH.[X< W.; M &.j.j yXP !.w ! g D.]X5.`X5XD RXD 8.M R.MXD x x.ZX,.uXDXI x.ZX5XK $ h $X5X5.].K ` ' k `.,XcXH.3 yXD.wX,.Z.w x 8X,X1XI RXD $ RX, s sXC.qXC oXC H.q O 0 wX0 H J 0 0 v UXD hXI.a $ R.aXI B cXK TXlXDX-XD.aX- a c h < h hXJXsXe.s .XfX+ .Xe UXD.aXe.F._X+.uXI.H.8",
+".DXl '.w.nX5.n s.0Xa s.w.n x s.!.'.j.! b s b b b 9.!Xm.!XmXCXC H y vXmXp.s..XpXb E.dXeXnXGXn g.Y ...._ pXe E R <.eX-X1 3X1 R a.Z R 8 U._Xn u t RXI.uX5XI aX- R.aXD cXDXD R R R.MXDX,.Z.9Xe._ vX> 0.@.jXrXq $ hXe xXG s h $X,XV.9 s v $ 1 #.aXV.u 3Xe.E.YX> U hXI 3.8.r.8.HXV.8XV.8 3.r ).k.r.kXt.k.k.kXj.k.kXd N.XXgXx.o.o.oXg.o.XXg.o.o.QXg.XXg.XXg.o.X.o.o.o.XXg.oXx.b.X.X.XXt.k.k.kXt.X.k.kXt.kXj.k.k.k.k.k.k.kX*XtX*.k.k.k.k.k.k.k NXkXt.b.X.X.b.o.X.o.X.b.o.^Xt.r.8XV.k cX*X*XI.r #.K.` cXV.H.H.u.5Xl x 3 x h.-Xp.Y.9X< n.1XHX.XKXG.9.Y ` #X,XB.-.w vX> =.;.;.+ & HXG.!XDXa ' D D.Z $.} a.} U.Z b.n yXC =.q zX0 nXcXB `XM x.}XIX- hXIXIX-X,.} h XM.- [.xXpXp E u uXeXe v x x._Xq.w [ [Xw 1 $.MXD.w.pXpX>.<X2.< . ....F ..m.iXe._XeXp <.a R R 3 RX- RX1XDX-X- hXl EXeXp.p.p.F.[XpXMXB.}X-XV.`XI.a.aXM ` XcXBX3 ` `XMX3X..S.SXHXH.3X<XH.l $.}.}XIXIX- c.u 3X-.aXD 3XDX-X- a R R x a $.eX-.a.a.a.a.~ R R 3X1.aX1.a R R aX-X-.eX1X- RX, RX1.aXI a.aXDXI cX3X3XX XB n M HXC M &.j 9X; !XU g ! D.0XVXIX*XVXIXIXDXDXD RXDX, h $ R.MXDX,X,XJ 1XwXJX.X. mXJXJXw.%X..-Xc.' $Xw Y :.a x $.a $ $X5.aXDX, T 3XI R.Z.O.n.' v.n v v b v v O b ^ H H w O v.W.M.a h.a 3 $XDXD xXK T c BX1 RX- 3.a R h h kX3XKXJXL.N.s.vX6.xX4 p $ 8 t hXnXqX+ 3.H.8.H",
+"X5.0 '.Z.Z.n.Z g D gXK.n.Z.wX5XG.' '.' '.wXL '.nXL.!XaXa b.nXL 9 y &XrX0 0Xb.B %Xb...JXe.E =Xh M n.xXpX+.< E.d tXl x RX1 R RXDX,X1 R p v.m u.MX1.`.u.eXI.M <.a.aX1X-X1X,X- tX1 aX,XD xXw.w v ..@ 0.EX+XD h 3X,XD.wXc TXK.w 3.uXVXI $X, $ 3 c c $ $.-.jX2.j k.O 5.KX5X5 cX5.k.K.u.KX*X* ).KXt.k.K.k.k.k.k.k.kXt.k.b.X.X.b.X.o.X.b.o.b.X _.z.X _.X _.X.X.o.X.b.X.b.o.XXg N.X.X.XXo.k.k.kX*X9.k.k.k.k.r.k.k.kXtX*.^.5.X.X.5 N.^.^.k.kXt.k N.zXoXg.X.o.b.X.b.X.o.b.X.X NXdXtXt.kX*X*X* ~.k.KX*Xx.KX9 cXoX5XIXIX-.M # #XK n.1.1.1.SXH `., $ $.Z h 3.a.l VXB.- v 0 = w =.+ =X0 s 9.DXI BXl : m.-XwXD.M.w.n.9Xm &XC M.E =XhX<.TX< kXB.-X3 x h.u.}XI hX,.} ` X7.gXw.[XpXBXe.M t C R R t t R.M.e.9XB.O $XJX..9 n.MXLXnXp.@X8.j.x.<.{X+ . p.m.m EXp x U.M RXD 3 3X1XD 3 3X, 1 Xq.F.g WX<.[ [.gXc V hX* 3.5XI.u 3.uXM ` `XMXM.}.}.a R $ $X5 hX, $ a aX-X-.aX-.a.u 3.a R RX-X- c RX,.ZXD R.a RX1XD.a R aXI.~.e RX-XIX,X-X,XI.a.aX, TX-.5XM aXD a 3XD RX- aXDXIX1XDXl #X* # V.[ n.T 0 ^.q.T =Xm 9 g.! sXU.9.'.5X5.u :.KXIXVXDXDX,X,.aX, hX,.aX, 3XD.9.- 1.Y s s.9 R.ZX,XD.aX,X-XD.ZXl xXDX, $ xX5 mX,.w.ZX,X,XHX-X-XDXl YXK x.n sXa s s s.n J J H H HXC wXn vXe.} a 3 t :XcXcXJ.ZX1 RX-.a R c R c #XMXJXK.-X, 8 tXa ^ 0.C.4X6Xq v.M.MXeXpXqXB c.H ~.H",
+"XK K :X-X1 RX5 m.2.Z c D $X-X-.HXDXD 8X1XD 8XD.D ' TXa.w.Z.n T.' vXUXC.jX8.@Xi.P.PXA . S M.O nXJXr M M.yX: M W u.j.- :X5 cX1.8XV 3XDXG.F.) tXDX-.`XVX- R.a.a R.` aXIXD 3.aX-.a.}X, uXeXpX4XqXn n y y hX,XD h 3XDXD.DXK 9XK sXD.}XV.HXIXdXIXVX1 RXp.@X>X2.j.jX5XI $ cXI.H 3.u ~ c.r.u.K q c.kXoX9.XX9.XX9XxXx.XXxXx qXk.z.I q l.IXk.U.z.z.6 l.z.U l l l.z lXk l l.X.o.X.b.^.^Xo.^.k.k.k.k.X.k.k.kXt.k.kXt.r.KXtXtXt.K N.X N.X.X.X.^.kXt.^Xk.b.X.b.X.X.o.X.b.b.X.b.X N.^XdXtX*.kX*.uXV 3.k #X*X*X*X*.r cX1XIXIXI xXHXJX#.3 `XDX,XIXIXI 3.`.} 3.}.a h V X7.gXp 0 v.@X>X>Xh.+ !Xw 8X,X, BX, $XK U.ZXL 9XC.q HXC.T z z.p zX%.hXh.L.1XZ.Y 1 #X7XHXhXc.,XB.,.gX#.S.yX<Xp.9.M < R.aXIX1XIX1.aXDXD U hXc.2.5 : $.9 U UXG.j.x.xX2X2X%XrX:Xr.xXr.pX4.<X+.Y.9 hXDXD c.u.u.aX1.a ` U xXq.gX7Xp.[ kX7Xl.lXI.eX-.`XV B RX-.a h h c.}.} a a.}X-XIX- B RXIXI $X, RX-.a.e.aXIXDX-.a a.a.aX- RX5 $ RXDX,X, $.a RX,XlXK a xXH.% T.eX,X1 Y s.aXI tXH.% xXl.~ R R.~XD a R R.a.M R 3 hXl 3 3XB [.pXp J ^ ^ z &.;XC HX0 bXmXPXKXl :.5 :.5Xl hX,.ZX,X,.MXDX,.MXD a hXDX, x $ xX,.Z x.wX1 1 n.Z.ZXeXD 1 T.-.9.ZX, $ x nXD $.wX, tXH R.aXIXcXDXw 8XDXD 8XaXL bXm &.qXC b w J ^ J v.MXeX, <XK c 1Xc 3 R.aX-XD R.u hXJXH :.3 x.aX,.a.N.W.s J ^ %X4Xp._XeXD.M EXn._X+ 3XI ~XV",
+" cX5 ` RXD 3X. D.%X. :Xl m., ` ` :XJ cXc.5Xc.u $XK T.*.MX1 1Xl $ sXL.9XrXr.;X8.;.@.@.< nXBX, hXD c EXe MXn.JX4.)X>X+Xw : `.~ cX*.0 $ [X4.M U aX1XI.8 R.} `.a c 3XI.aX-XI.8.a.}X,.M pXnXnXn M.p v <.W._ XK.Y.9.wX,X,Xa T.!.9 .aXIXV.u.uXV.`.a 1.E.P.x.< HXrXw.2Xw D cX1.u ~ 3 ~XV 3X9X9XV.r.kXt.k.kXtXt.uXt.u.kXd.^.^.X.bXg.XXgXgXxXg l.z.X l.X l l lXk.U lXk l.z.QXk l.b.X.X.XX9.X.XXx ).XX9.XXkXxXkX9X9 NX9X9X9Xk.z.z.z.z.zXk.zXk.XXx.IXk.zXk.z lXkXkXxXkXkXk lXxXx.X N NXoXoX*.u 3X*X* ~.8XV.8XVXI.HXVXVXlXJ.3XK xXlXD 3 h cX3XXX*.}.8 h.a c.[ VXB .[ nX> H.E 0 y.>.1X;XH Y.2XJ T RX,.ZXD v.n.q &XC & H.+ zX>.xXrXr n z M =.TXw.g nXH.SXH.1 kXhX#.hXh z.1Xw.j.9 h.ZXDX,X,XDXDXDX,XDX, hX,XD 3X5XDX1X, $XDXeXG.j.Y SXrXfX4.<.pX2.x.x.pX4Xn._._ 1 h 3X5 3X-X-XIX1 .}XeXq.p.p.FXB XM 1 c cX- R BXI 3 a.a RX-.a.a <.a.a.a.e.a R.e R RXI RX,XI.a $XM cX,.ZXI kXD.a RXIX.XlXc a.a 3.G.e Y R.a $ 6 xX- $Xl.% RXDX- cXH.3X-.M.eXJ xXN s R R t.aX,XI.aXD.aXD 3XDXI : : cXB [X> ^X6.v ^.sXn.E M M.q =.q gXPXc 'X-XV.'.K $ $.Z $.ZX,X,X,X, xX.XlX, xXG.G.YXc U.Z $.ZXUX,.Z R.MXD.Z = $XK h.wX,.ZXHXKX, $X, R xXDXI R RXDX1 R R 8 8 s.nXC.q b O.v.v.v O.vXGXe.W <.MXJ xXK.u.a $.aX-.a a.u.a xXJ T 1.Z.MXDXDXe.* s o.@X>.@.<X+ v x U t.WX4XqXBX,.HXV.k",
+"XIXD 3X, $XKXJ.9 x.uXl cX.X3XJXJ.- m D :XM., h.GXJ.wX1 R R.aXD 3.D sXm gXm &.j H M MXG 1 .a RXI RXDX,X+Xn.J.s...d.M t cX1.H cX5X5 sXH.jXpXB.9 `.5XDXD : $X3XJX5 RX-X- 3XM.5X, UXe._.@Xn.x.s U pX4.x.<Xf . vXpXK.a 3.HXD cXoX,XI.8.8.K.H.HXD sX+XpX2.J %.<XpXZ.j y.YXcXD 3X1XtXV ~.u (XV ~.8.k.k.k.K.k.k.k.kXd.k.k.^.k.^.^.X.o.X.o.o.XXkXgXg.oXg.X.o.X.o.X.XXg.X _.bXz.X.^.kXdXt.kX*XtXo.K.kXtXt.R q.X NX* NXtXt.k.k N.X.XXgXx.o.X.X.b.XXk.XXg.oX9Xg.oXgXgXgX9XgXgXxXg.X.^.kX*.u.rX*.8.uX*.K.r.8XV.HXV.8.K.5XI.u 3 3 3.KXM D.K 5 #XV 3 3X*.5., VX3XX XBX0X0 J.@Xm &X0 v s.9XK ` 'X1X, 3.a $XG bX0X0.q w MX8 . . . p...s ^X8XrXr [.[Xr k.-.[.-X+ kXr.-X4 v U R.* t RXD $XKXKXlXlXc.9 t.,.9 R T.% cXKXJ.aXh.9Xw vXZX+.YXpXpXp.< >X4.x.x WXnXq.Z.M.a.~XI cXIX1XDXl h U.F Xr 1.l x # a.a c RXD.e.Z aX-.a a a.aX- < a a., $XJXIXD.e Y $ 3 RXD `.G.Z h 3.u.GXMX1 R.a.3XHX-XDXD RXhXJX# R.aXDXK.O $XDX,X.X- RX1XcXlX# : R.e.,.M.ZXl a R RX- RX, 3 $XIXI 3X, : `XK `.FXH WX>XfXi 2.) vXn z H b HX0 &XCXP.' $.DXIX,XIXl.,.'XU.ZX,.w xX. :.a.a.Z hXH = nXD.ZXD.Z nXJ.Y RXDXD CXl.'X,.w $XD.a t R.MX- h RXD.eX,.aXD RXD 8 R 8.ZXa b.qXC O O 2 b.v.s 2XL vXD.W 8XD hX1 RXD.K.uXI 3.u 3X-X..Z $ R R R BX, $Xe J.s.@.4.) E.p.i.l h.MXeXn.F.pXK.kXo.]",
+"X, hX.XcXlXJXJ.Z R.a B cX- x R 3.ZXD h $XD xXl.%XU RXD RXD.} c R 8.D.n 9.9 gXw.9 'Xs.a.u RXI.8XI.8.` h sXpX>...s p t R.a.e #XD.a 8Xe 1 UX, $ cX5Xl 3.}.} 3.K 3.KX1 3X- a # x hXp ...X>.C.m...@.<.< L.JX6 . .X>.YX1.aXV.8.H 3XVXI.r 3.K.`.H $XmX> W ..JXfXn .X2.+.Y y $.a `X9 c.K.K.] )X*.5.5.r.KX*.kX*.k.kX*.k.k.kXt.k.k.oX9Xg.o.X.X.o.z.oXg.X.o.o.oXg.X.o.o.o.o.X.o.oXg.b.bXo.k.kXdX*.X.k.kXt.k N q 5 N.r.r.k.k.k.k.k.^.b.b.o.b.X.o.X lXx.o.X.X.o.X.o.X.o.X.o.X.bXg.X.b.kXt ~ ~XVXIXVXIX5 ) #.u.kX1.8.8 3.` 3X1.u.` 3.K.8.k #XV VX3.`.}XI V )XXXM.l # h.lXM X+Xw & y.j =XKXUXK.> 'X,XD RX,.aXD v s.q &X0X> H zX>.CX: r.P.@ SX0.y.x.[X+.g.g.[ n k =X7 n.g.j n v RXD 8 R.M.a.M.[ xXG x K.9.*XH s.eXJ.3XX D k.u `Xc.9 a =XG U UXqXp.9.@X+.<.<X:.< p.i.M R RX-.` cXI.5.- `.Y n.gX< [XBXH : ` VXHXI R.aXIXD.uX-.aXIX- R RXD.e.-.% $ aX-.ZX.XH a.Z R :X.XI.u.e DX. m aXI RXh mXwXD.aX, Y.e Y RXIX,XHXJ a R $Xc.eXDX1 $XDX, 3.M.a R.aX- aX- R R R.a x $X1 `XHX, `XcXJX3.,.SX% MXn 0 0 oXGXnXL v 0 2 0.+X0 & g.! '.ZX,XDXD $.GXHXw.M.ZX, $X;.,X,.a xXDXw.Z 1X, $ $X, RX,X, R R.aXDXD R h.ZXD.a.a.M.aX-.M RX, R.M R.aXD RX1 CX1Xs.w b JXC b.v /.) J.Y.N.WXs.w.W.D $XDX1XI 3 #.~ 3 : cX- R RX-.a.M R R.eXD.a 8 vXn..X>Xp.@XeXqXe $ < u.M._X4.S xXJ f )",
+"XDXKXcXc.OXhX..9XK.'.'.9 $X.XlXIX1 RX,XDXD a 'Xc $XD BXD.HX5.`.u.w.n.nXPXO '.HXIXD.HXIX1Xo.u.`X1.8.` $ U v J .Xe.W a.} RX- : R R C x.WX,.}XI RX- R 3.a.8XIX-X1.H RX-.a.M < U pXLXn M.<..X>Xf.. .X6.C w H J.j.9X,.a 3.` 3X*.8XI.DX1 #.r 3XJXU ^.@.P.J %...BX6.C...x.jXs 1 ) ) I.$.| f ) ) D 5.kX*.k.k.kXtX*.r.H.u.r.kXtXt.X.b.bXgXgXg.X.z.o.X.o.XXg.o.X.o.X.o.X.oXg _.X.o.X.X.b.^.k.kX*XxX*.k.k.kXtXt.k.k.k NX*.kXtXj.k.b.b.o.X.o.X.X.X l.o.X.b.b.o.b.b.X.b.X.X.o N.b.X.b.kXt.r 3 ~.H.HXV.5.K.5X5X3.8XI.8.`.HXV ~ #Xx.8 c.K.`X* 3XX VX3 :.5XJ VX3XXX, ` hXK `XM .p.[ y.O.1.OX;.OXP.w $ RXD R R.Z v b.j & w ^Xf ^X>X>.4 . w.;.; HX:X:XrX<.h [.T.1 [XZ.T z.1X>X+X,.D.a R.}.W xXH MX%XcX<Xw h $XKX, x 3Xl 3XMX3.5X- 3XDX,.Z.a.M.M U.d E.pX>.x WX4._Xe < R.a.a a 3.2.% ,.-X.X<XH.hX#XHXHXc $X..YX. <XI.eXV 3 cX-.`X-X-X-X-.~ RXc.%.S.a aXKXXX#.Z h.e YXJXc $XV.2.eX. 3.a.aXJXD :Xl.a.a.wX,X,.MXI t.aXD R R a.e R RX-.a aX1 RX-X-.aX-.a.a.a aX-.}.eX5 3.aXDX.., Y.3.3.GXZXHX# WXr o 0XG v.M v.YXG O.@.@X> M & g.! sXDXDX, xXK :Xw $.Z.w $X5.'X1X1X,.ZX, x $X,XDX, 3 c 3 a.}XI 3X,.a.a $X,XD.M R R.a.a.aXIXIXDXD R R s $XeXDXsXL s b o H 0 2X=.s._.N t.MX,.}X5X,XDX-X1 RXIX- RX- 3XI cX1 3X1 t.u.M.aXK.e.w U v &.s ^.@.pXn .iX, < U.).mXqX+ :.H.uXd",
+".Z RX, sX.XP.Z 'XK.Z 'XcX5 m $.Z RX1XDXDX1XD DXK T.ZXl.5.'.KX5 : '.0XP gX1.D.8 c.`.HX5XJ :XVXI.8.`.8XI RXL o.s.s C.M tX-XIX,.a RXs v h.MXI 3XIXVXlX1XIX-.}.aXI.aXX $.a.M.N .Xe..Xp.x ^X>XiXfXfX6XfX8.;.E.@.wXDX1XD.` 3.a.8 3X5X5XD.K 3 3.w.@ 0.P.PXA LXi %Xi SX8 JXw.jXl `X3.5 ).X :.uX5.KXVX*XtX*.k.uXVXV.8 ~.u ).A 5.^.X.XXxXgXg.XXg.z.o.oXg.o.X.o.o.o.X.X.o.o.X _.o.b.o.X.X N.k.uXdX9Xt.kXt.k.kXt.kXtXtX*Xt.k.k.k.^.b.X.X _.X.o.b.bXkXg.X.o.o.X.o.X.o.b.o.b.b.b.o.o.X N.kXt.rXV.H 3XV.HXI.`.8.`XV.`.`.u.5.k ).5X*.8.`.`.8.8X*X* VXXX3X3XXXM.5XlX,Xw $XH.- V.[ k.S k [ k.> =X;.j.n.w 8.Z.a RXs.9 T.q HX0.4.@Xn.xX2X>X> ^X>.xX8 W.h.T.1.h =.1.+Xh.hXhXh.T & yXG x x.9XpXpX4X4X4Xq >Xp y.9.M t RX-.a.aX-X- 3.` cX1 RXD.*XD t R t.M.MXn.{ WX:.xXeXeX,.a aX-XIXl.k.u ` :.S XBXh.- X< `.i.a < 3.aX-.a 3X-X-.`X-X-X-.a R R.~.0Xl $.a.a .aX,.Z.}XDXDX,.aX-.DX,XI a a.a.a.~ RXDXIXD tXI aX1 RX1 3XDX,X-.aX-X-X- RX-X-XI RX- RX-X-.aX- a.a.a aX-.aXD #X- hXl hXcX.XJX. [Xw n MXr J vXL U $.M 8.N.W...s HXm &X0 oXOXL $XD cX,XD.a 8XDXD $.Z RXIXDXD $ h x.Z.Z xXlXDX, cX,.aX,XD R.a.ZXDX, RX5XDXlX- $X1.9 $.9Xl '.-Xw.w.n.nXa s 9XCXC.@Xi.)XeXL x <.}.aX,XD $XlX-.aX1X-X-XIX-XDX5XDXl.a `.,XI :X,XI DXDXl.M._.j.@.v ^ HXpXq.i E E U u._._X+ c 3.H.u",
+" R 8XD.9 m.w.wXD.DX,XD.Z.]Xl $ R RXDXIXD 8XlXcXl.0.%XKXK.] mXc.G gXU.!.n.].'X,Xl $ D.2 :X,XI.`XI.8.`XDXDXp ^.v.s u uX-X- 3X-X-.D.w T C R R.`.a.5Xl R `Xl.a # $.aX, u U..._ 0X> S wXf L LXi %XbXA LX6X>.' 'XD.HXIXI.` 3X* :.0.]XD xXD.Y.EXn ^ {Xi {.J L.PXiXf.@.;.Y x s.| ).2 )XJ.] (Xl q : )X9.u.5.5X5.5 3 ~ c.r.u.& P NXx N.X.X.b lXk.X.b.X.b.b N.X _Xg.o.X.o.o.b.o.X.b.X.XXd.k.kXtX9.kXtXt.kXt.k N.kX5.kX*Xt.X N.b.X.bXg.X.X.X.XXg.&.I.z.o.b.X.o.X.b.X.b.X.o.X N.b.o N.^Xt.r.r.kXt.k.u ~.8.`XxX*Xo.5X9Xo.KXV.8.8.u.KXX # 3.} 3.,XMXM.KXMXM hX-.a $ R.,XD |Xc ` [.S ` 1.3.3XZ mXK.9.'.w x D :.ZX,Xw y =.>.OX0.j.SX7 k.gXrXC.@.y >.p.p o.j.j.jXwXw & z.;.jX2.p y.[.Y.-.j.xXr W W W.x.<.Y.Y.w t.a < R R.a.} aXI R 3.uXI RX- B RXD R v.<Xp.<.{ W.< x U R RX- h.aX-.8 a R hXUX+ WXB.F 1.lXM U h.a a.} c c.} R.}XI.a a.a a.a.e RX-.aX- a.a a < RXD.a a.`X-X- R R R R RX- 1 $XI.a aXI a R R 3XV B R 3.a.aX-X-.aX-.`X-X1 R.~X1X-X1 R.a RX-X-.a.a.aXD hX,.a 3 hXM VXwXH.EXC.4Xp ^.s v U.MX, c.Z.'XqXw.>XG JXC M &.OX;.n.Z.DX5.D.DXD.DXDX,.Z.Z.a.a.MXD #.aX, :.2XJXDXDX1X, c.aX,.aXIX,X,XD.' T.-XKXJXKXK.]XUXcXU.9XK.!.9 o b O OXCXC O.v 2 2XGXG U R.aXDXD.aX, $ RX, T.9.e.' hXDXc.ZXlX-XlXl.aXMXD.a R R.MXD.}Xs.E...v ^ HX4._.m._.m p._XqX+ 1XI.uXd",
+" $XDXlX. g mXJXUXU D DX.X$.GXH ) 'Xl.w.DXlXl g $X,XD $XlXlXl T.0 D.2 gXUXO 'XU.2 m.GXOXO.]X1XI.H.DXd c U.jXp.B.sX=.d UX,X5 RX1 ` v.'.M.MX-.aX1X3.H c.5.,XK.,.,.[.9XpX+.<.. ^.j HX0.@ z w S rX>X:.CX2.@.@XKXI 3X1.H $ )., I.]X5.] :XJ.9.1 y.jX>Xr.x.x.xXr.@.@ J.x.jXLXUX, :X5 ).5.KXJ `Xc (., )XJ ) 5XJ.$ q.u 3 ~XVX*X* , ]XxX@.7X@.zXk.oXg.o.oXx.z A.&.z.b.X.b.o.oXg.o.X.z.z (Xx.5X5.k N.rXt.^.k.^Xt 5.k.kX5.5 qX9.o.bXg.b N.X.XXk.X.( A.XXg.X.o.b.o.X.o.X.o.X.o.b.o.b.X.b.^.^.kXt.kXt.kX*XV ~.8Xx.k.k.k.KXV.`.`.u V.$ V V., V V VXJXM.l # h.aXI.aXI RXI cX,X,.a.aXD c $ 1 [ K KXh.> @ =X.X;XU !XD.wXU.O =XhXhXZX#.h |XZXB n.+.x.T z MX0.+Xh.T KXh.+.TXZ M.;.;X>.;Xr.; WX8.;X> SX8 WXr WXrXr =.F x $ hXqXD tX,.e RX-XIXIX-XD.aXD.M sX+.xX2X8 W M._.Y c R.a.K hXIX-X-XIX- RXqXK >X+.[X7.[ .l.l h.} # #XM ` #XXXM.l #.a.a R RX1 B R R a a.a.a R R.Z.eXIX-.aX-XI t RX-.aXI.aXD RXIX-.aX-XDX- 3X-X1 R.aX-.~.aX- R.`X- R.`X-XIX-.`X- RX-X-X-X-X-.aXI c.a c.aXl : #Xc V M o 0 0 0 v.s U 8X,X,XKXwX. g.9XKXn o.@ M &.E gXaXD.'.]X5 CXDX,XDX1XD.W R.M 3.M $X1X,X,XKXKX..9Xl c.Z.9XI R.MXDXD R aXD.ZX,.ZX, BXD C 8 sXs x o &.qXCXC J H.E.v.v / v v x aXDXD R RX,XD R $.M.-XK a.w.Z RXDX1.a.a.aX- a 3.a a : $ :Xl.9.YXs J 2Xi.4.x.F.J._ p.m._XnXc :XI c.r",
+"XwXlXc D.n $.wX5 '.'.0XJX.X. Y Y.G Y YX.XUXJ.'XD R RX-.aXI 'X,.n.'.! s s.!XU ! s.!X;XUXP g.0.n.] g.]Xw x.j J...s % . p .Xe u < xXe [ U RXD.a.` 3 cXl ' T.] 'XK : TXJXr.@.h.yX> y HX0 S S S M.;X0 ^.TX> o h.a 3 : mXK ` D.' :X5 I 5 q c :.uX, $XG x x.YXwXp.-.jXwXrXUXhXKXK cXIXI : c 1X1X,Xl.u cXV cX* cX5 ~ 3 3XV.rX*.R j qXo.&Xz.b.I.X l.X.b.z ZXk AX$.bXgXg.X.o.bXg A.z.R j ) ,X@XoX5.k.k.kXtXtX9.7 I j I.$Xo NX9.b l.XXg.7 X (.R 7.Q.X.X.o.X.X.o.b.X.o.b.o.X.o.X.b.o.X N N.^.^.^.k.5.^Xt.r 3.K ~XV.8 ~.`.8 3 3.$ VXX.KXXXXXXXX.lXMXM.a.}.a.a RX-.aXDX1 R.}X,XD.M., `XBXJ = = yXO.q !XmXO sXK @XOXLXH.GX. nXw n n., [.1.LXZ M =XrX0XhXh K.GXhXHXZ.+.+XZ S H H SX0.;.;X0.@ ^.@X6 z.T.+.h.hXHXHXcXwXH [XH h.MXD.a.}X- #.a a.a U v.jX2X2 WX: [ WXh.YXlXD 3.] :XI 3.~ R R t.MXqXc.[X+XB.[.[ .F # ` # 1XXX3 XX.,XBXMXX x.aX, $XD B R.aX-X-X- a RX1XD.aX-.a.eXI :X,X,XlXDX-XI.a R.a.e a a 3XI BX-X- RX-.a.u RX- R 3.`X-.`X-.u cX5.k cX5 c c.kX5XlX5 R.uXD.uX,X5XJXB.1X> J 0.vXeXe v $XK.9XJ.nXIXDXD.WXL yXn.@X0X> 9.' 8XPXKXD.D $ x $ 8XDXD.D.a.a.M c hXDXD R.W.Z T.YXKXKXcX..-XK :Xl $XlX,.M.*X-X-.} a.a R.M.ZXL.9XC 0 bXCXCXC ^.v /XL vXG.M tXDXD.e RXD.*.MX, xXD RXDX1X-X1X- $.aXIX, # D.eX.X, :X3XKXKXKXH.) v 0.B 0 H.@.p.[X+X%Xp kXcX3.R 5",
+"XD.9XU s.w 8X,.wXI RX,.9.ZXD R 8.u ' DXO.G.O mX,X,.Z.a.ZXDXD.'.] sXl.n sXL.' sXU s 9XU g.!XP g g g g g m.9.- o.@Xn . . p.m._ EXe.M.1.j h t.a.a.a.Z.uXI.~X- 3X-.HXDXDXG.j.yX:.@ wXZ =.O & M.O &X>X>.@ oXr $XM # m c TXl.% m : m `.5Xt.8 ~.H.`X1X1 RX1 3.Z.].'Xl.9XGX+X; $ T `XD c.,.]XcXKXJ 3 I 3XVXV.8.8XV.8.8.8.r ~.k 5Xk j q.6.X.o.I.b.X.oXx.7 d.X.o j qXg.bXg.b.oXk.b.XXkX$.r Q.|.k.K.k.k.r.XXt.z.kX5 7 3.k.k.^.^Xd N.X.b P AXo.t.tXx.X.b.X.o.o.X.b.o.X.X.o.X.o.b.X.o.X.o.b.X.b.5.^Xx N.k.kXt.r ~ ~.` ~.8.8.` 3X3.$X3X3XXXMXMXMXM #.}.a.}.a.a.aX,XVX1 aX1.}X, 3.}.S., K nXh.OX0.>.> & 9Xm b bXm gX.XwXw.-.9.9.9 x x XHXh.OXw y HX0.>.G.O K.O.jXG &.+.q o J H.E S z.E w JXb ^.@X>.<.<XrX<.1.Y.[.jXr y y.9 $X-.} 3 cXM <X, hXpX+X4X4XrX+XnXr W.O.3Xw.| D.2XJ.,X-X1 R R t.M.M.i.YXB XqX7.[ XMX3 : V V.- 6.% 6X#.SXH kXJ.,XcXD RX-.~X- R RX-X-.a 3 aX-X-XM 1 ` : `XcXD 3 RXIX- <.a.a R.aXDX-X1X-X-.a.eXl 3Xl.KXXXl.K.~ 3XV.k :XV.uX*.u.u.u c.k 3X1.~.ZXDXD 1 .,.gXG O.).).N.[.-.9XcX1 8 8.a.a.M CXs.sXn b.j J.9 v.'.' 1Xq $.j g.M.M.Z TXDXD R R.a h R U.Z R.MXD aXD.MX, $ $Xl.9XKXK 1 a R.a.a a.aX- R R RXD x s.q & 2 O.vXi 2 2.sXGXq.W.aXD RX1 RXD.aX,XK 1XlX,X,XlX,.9.Z `.%XJXK.|XKXl.e T c.% h cXD h hXe.s 0 2.B wX2Xn.1.1XwX<X#.GXc ) ).$",
+"XUXUXK xX.XD.Z.j TXcXl Y :Xl.] :Xc.ZX,.w.2.3 1XJXc :XD.ZX- c.2.w.aXsXD $.w.9 9.'XmXG.nXwXyXUXU g.! T gXJX. $ s v.E.E.<Xn.@.E.jXp._Xw [ [.[XKXKX,.a.MXDXDX1 R R 3 : 'Xp v.PXf.@ M =.> =X0Xh.+.+ M.y W.hXr.Y.3XlXl 'Xx.] x c h.Y h.u.r ~.HXV 3.8XIX1 : TXc ' RX, DXwXp x.M cXV.a cX5 $.Z.uX,X1XlXV 3.8XV.r 3.8 3.r.8X* NXx NX .:.zXxXgXkXg.o.XXg jXxXk.X.: l.bX9.bXg.bXgXg.X./ 7 P P.uXxXd.kX*.k qX9.RXd 5 PXV.u.kXtXj.^ NXg.X.7 Q.& jX@Xk.oXg.X.b.b.o.X.o.b.o.X.o.X.b.bXg.o.X.b.X.X.o N.z.X.b N.kXt.k.k.HXV.8.8.`.`XI.u # V k.,XX.l.K h a.}.} aX,Xl.u x.D 3 U a $ hX5.,.-.[X;.1XZ.+XhX0.>X0 =.O.O.O.O KX;.O.1 D.-Xc ` `XwXc.>XwXmXUXU gXy.G = @.1X;.+ KX0.T H.+.+X0.+ z.v.v ^ 0 0 ^ w ^Xf.j M z.1X+.pXw MXU &Xw $X, ` hX, #.FXpXp.@ >X>XrXp.Y.1.S [ nXJ.9 $XXXx.5X- RX- RX- t RX,.i.-XpXB.l.-.-XMXB V D 3 3 cXl # : |Xc 1 xXI 3.aX- R.aX-X-X- R R.`.u.5 3.}.8X- a.a R RX1X-.~ a.a R R.a a 3.eX-X-X-X1XIXI.uX,X*X*XV 3XI 3.K 3 c.~.`.` B.`.`.` R.`X-XIXD cXD $ `XcXM [X> bX=.) U.9.-.M :.wXD.DX, $.w xXp y S.@ H H o JXmXG 9XG vXG.9 'XLXK.>.wXDXJ.ZXI.a a.a h t.M.a.M R.a t RXDXD xX, R R.M R t R.a a.aX-.aXD t.nXG.q o J 2.vXv.v.) xXp x.M.a.a a.eXI R.e.9.Z.,XHX.X.X..,.,X.XKXK.,X5XM.D.eXIX- RX5.KX-.a a.W v.. 0 w 0XnXw v `XK kX. [X5 3.8.rXV",
+" y g $.wXc s.Z D :XJX. Y TXcXl : '.] DX,XJ.' RXD.Z :.,.uX1.w D.ZX,.M R.* $Xe 8.w.w.n gX;.].OX,.D 8.n.].H.uXoXc '.'.j x y.jXn.Y U C.dXe.-Xw.YXwXc.YXcX,.MX, 3XD.2Xc x v . w w.; = 9 oXP.j =.; ..@.. pXnXpXp.O m 1 ] m.0X1 h.Y.Y xXD ~ 3XV.8 ~.`.`XV.5 'XcX1XI $ xXKXGXDX, R 3XIX1 c.a RX1XI 3.` ~ 3.r 3 3.8.8.8 ~.rX9.&X Xk N.7.X.o.z l.X.X.XXg XX XxX .&.X.XXgXg.b.o NXg N P IXtXNXxX9.u.k.k.kXk q.RX* f (.k.k.k.k.kXt.b.X.XX$.X N.7Xk l.X.X.bXg.X.o.o.X.o.b.X.o.b.X.o.X.b.X.o.X.o.X.b.z.X.b.X.b.XXo.^.^.k.r.H ~.8.8XI 3 3.KXX VX3 XX h 3 hX,XJXKXKX.XH cXJ.,.Y `.YXh [Xc [XrX0 =X0 J y.T.O.hXh.+Xh = n.3.O.O [XH.O [.3XcXH y.9.!.!XP gX; TX.XHXU.+ = b J & v v .XnXn v v.sXG.s..X6X>X0.T.T.1.y =.T.+XZ.+.O.1 =.[.M tXMXnXp JXpX+ yXq x._XqXp x xX, tXD.u.eX-X-X1 a 3 xX5.a.M.M.M < Xc.[.- k `.,XBX-XIXI.8.}.`.a `X3XM #.} a.aX-X-X- RX-XIXD 3X1Xl.K.K.5.a 3.aXDX- RX, R R.aX-X-.} a $XDX1X-.uX1X-XlX- c.8X- a.`X*XI.uX* c ~ 3.`X-.`X-X-.` R R.aX-.a $X3.9 `X7 kX%.j JXLXL UXcXl 3 TXc T g.Y kXK 1XLXpXp 0.@ H &.q &.>.q HXC oXG 9.'.'.9.DXaXKXDX,X,Xc RX, $.a R RXD R.a RXDXD tXD.M R t R.a.aX-XIX-X1.a a R 1.w.j H J.v /.B *._XG x.M.aX- aXIXD B.*.a.ZX.XK TXK DXlX5X. #XIXIX,X1.~X,X1 BX1.`XIX3XD R.M uXe 0 ^X:XCX> n # RX1 R.u cXIXVXV.k.k",
+"XcXH g.w.MX- R hX, `Xl c R.Z 3 $ $.ZXl.ZXJ T.e RX-.aX, TXc.|XKX1.w.- xXl nX,.Z.w sXKXJ.ZXK., T.D 'XUXU sX3XXXD ' m TXD <XG JXp.s.M t.N.WXn 1XeXn xXw.j.-.j <XGXq._.x W r z.hXh & @XO = = KX:.<.J.....s .Xp x n K.2 TXVX,XG.[.<Xe.}XI 3.8 3 3 3XIX-XlXKXl.u.M :XBXlX,XD RXIXIX-.uXV.`.HX1.8.8.HXV.8 ~XI.rXV.r ~.r.k.^ NXk.oXg.X.X.o.zXg.bXgXk.b.XX@.t.z.XXg.X.b N.XXg.X.b.$.& IXo )XNXx.k.k.kXt.kXx.XX9 j 5Xo.k.uXtXjXt N.^.z j.IX@XN.RXk.X.b.X.o.b.X.X.b.o.X.o.o.X.b.o.o.X.o.b.b.b.X.b.z.X.X.X.X.X.X N.XXoXdXd.8.`.8.`XIXI h cXJ V :XM.a.} 3.a `X,XKXJ.2XK.9 :.9., k k.O [Xw MXZX0XnX>.E.LXh.+.S = [ =XcX7.- k nX. [., [ nX;.1 !X;.O.O.OXPXc.O =.>.+ o OXs.W tX,.W.MXn v.W.NXe v.s 2.@X2.T.x.y W.jXr.1Xw.j.jXUXw.j XqXpXGX+.j y.Y xXD x.Y xXeXn U t UX-.ZXV.` aXD x : T :.- :.-.M.} .Y [.- k # $.`.}.8X1XIXIXI 3.,XM x 3 < aX- a <.} cXM :.K ` q.5.K c.uXK c.eX1X-XlX1 TXl `.9 `XcX3Xl R 3 :.u.u :X5.K #X5.K : c.K 3.u cX1X- R RX-X-X- RX-.a.a.a hXM.[ `X7 kX< zX0 HXGXe.M RXD 3XDX1XD xXD.ZXD h t.M.W v ^ b J oXCXCXC H.; & HXm v s s.w.D.Z.ZX,.2.,X, $.- x $ cX,X,XD R.eXlXD R RX, aX- R.a R R R R B R 8 mXL b o H.@X=.B.sX+Xl.} R.a.a a 3 BXD R R R U.Z xXl.' $.eXI R.~X- a c RX- 3.DX-X1X1X1.ZXs.M.)Xe % ^ w = n.S 3 3 ~ 3XV.HX*.rXd.u.k",
+"XU !.9XKXJXJ.- : cX. :XIXIX-X1XD R B TX.Xw.ZX,.' 3 R RXl.%.O.Z R.a x $ 1XH.' s sXK.2XcXMXI :.5., g y.'XJ m #.HX1.Z.5X-XI.9 &.jXrXGXL.M CXeXp vXpXpX> =Xr S zXG._..Xb . ^X> M.+.!.j gXU.O MX2.T.y.@....X4XrXn._XwX. s.' TXwXwX+Xp R.aXI 3 3 3.8.`XIXI.H $X, #XMXM :Xl.Z 3X- 3XIXVXI.H.`.H.`.8 ~XV.8XV ~ ~.rX*.k NX9 NXgX9.b.XXg.o.X.z.o.o.X.b.XXg.XXzXg.XXgXg.XXg.o.X.X.X.5Xd.r.k c.R ,.k.5.k.kX*Xj.k.kX*.^X5.r.kXj.kX9.^.^Xk.XXx l.X.I.o.b.oXg N.o.o.o.X.o.b.X.b.b.o.X.b.b.X.o.X _.X.b.z.b.X.o.b.X.X.b.X.X.X.b.r ~.8.8.` 3.`X-X3X3XMXMX5.}.a.a.aXDX1 RXDX,X,.aX,XM., [., k.jXr.+.; o ^X0 H M.1 M zXwXr.1.1.1XHX< kX< n =.1 [X..> nXO.'XJ.j gXw y & & OXa.W UX- < < hXs.MXD C.M.W v.v...<X4.F.< z yXcXe g n n.jXpXpXGXnXp.YX+XeX,X1.`XI x.9Xq._ E.. U t t.a RX1 xX- hX5 $ c.Z.Z $ x.} E 1X#Xh k `X, 3.aXIXIX-XI.` 3 3.,XMXM.}X- < < 3 #XM #XMX9XX q.k.KX*.K 3XIX,XIXDXlX5 : :.Z c cXI $X, c RXVXl c.5 cX9 3 c.uXVXVXI 3.` c.KXIXIX-X- RX- R R RX-.a.a x .-X<X<X7XB.p HXm vX, RXD R.uX, 3X- g.-.-X3Xc $ C.)XL 2 O O b b 0 0 0 J oX> & & oXm 9 sXDX,X,XD.ZX,XDXcX,XI.9X..ZXDXD 1.a R.a R a 3.a a RX-X-X-X1 RX1 RXw.9Xe O H.@.s.)X>Xw.}.a.a $ RXI BX- RX-XD.Z $X, $X,Xl $ RX-.a.a R RXDX, BX-X- RX1XD 8XD xXL v.s.sX> W.pX< |X* ~.HXtXtXt.k.rX*.^.r",
+"XK x.Z 1.'X,.u ` c.,.,X-.aX-XDX1.a BXJ @X. R $ mXcXlXl., DXc $ B R R.aXJ $Xl.'.0XO g.'X1 3Xl 4XyXw s.nXO.'.,.] 'X1 mXI.}.w M & n.j.[.-Xr n MX>.T M.s.x M MXh.v v.B ^ SX8 z M g.YXK g.9XwX0Xn..XnX>XGX>XrX6.{.CXf.j.-XHX.XwXcX.XDXI R.8 3 ~ 3.r.`.8X1.`X1X1XI.8 c ` : : ` ) :XI.K 3.8.H.`.8.H ~ ~XV ~.uXt.k N NX9.o.X.X.o.X.o.o.X.o.Q.XXg.o.oXg.o.o.X.o.X.b.oX9.oX9.b N.^.k.kX*.k.k.k ).& q.k.kXt.k.k.k.kXtXtXt.k.k.k.kXz.X.X.X.b.X N.z.X.b.X.bXg.b.X.b.o.X.bXg.b.X.b.b.o.X.o.o.X.b.X.o.zXz.o.b.X.o.bXg.bXg N.XXoXd.r ~.8X1.8 3 3X3X3Xl # #XD.a RX-.MXIX1XDX,X1X, `.,XZX#.h.1.+.;XC SXC.; S zX0X0X:.<.; n M [XhX< =X< [ zXw M.h y.YXK.>Xw o = =.E.q.E O.=.W.M 1X3 `.-.9 sXlXJ.w y H oXrX>.<X4.p M k.w R.9 n.-.[ n.j.pX+X+.- U.aXI.` F 3 R .p v E.i.M t R R R R.eXl RXD $ BX-.a R t U hXcX<.OX#XJ.,XK.5X5.5.K cXIX- #.,XMXMX, < a h.lXM.FXB.-., #X9X* qX*.z # 3XI.}XI 3 3XV RX-X- RX-X-XD 3.aX1X-X-X1.~.Z.~ R.`X-X-X-.` RX-.k c 3 3.a.}X- R a.a t.a < x Xr.1X+X+XpXnXn &Xm.w sX-XDXDX5XVX,X,X,.ZXD.M.M t.MXsXL.N 2.W O 2 2.s.=.s.. bX> & & 9.'.nXs.DX,.ZXDXDXDX, R $Xl RXD.Z :X- R R.a.aX- RX-XI R R B BXD B 8X,XL s b.q ^ vXn u U a.M a B R R.a BX- RXD t RXD hX,.Z $X- R RX-X- RXIXDX,X- R.`X,XI B.W v.=.W ^Xn.@ MX7 |XX 3XtXtXt.kXtXtXdXtXt.k",
+".Z.DX,X, R a.a.e.aXI x.KX-.a 3.~ RX, mXJ '.ZXD $XK.,XK T $XJ.0XD RX-X, $XD.n.nXO g.]XD.H '.2XUX;.!.n.nXOX5.` ' : DXJ.}.} 1.jX+Xn._ pXnXnX4.jX2.T.+.yX0X>X0.;XC ^ S S M H K.O =XyXHX;.> K.jXG.@.;.E.YXn SX8 wXf.C.x.p.jXH.%XK 5 ' :XlX-XI 3 ~ 3.H.` F.8X1.`XI.`.aXI $.l $ hXK.a I : D 3 3.H.8.u.kX*.k.k.k.kX9XgX9XgX9.o.X.o.X.o.oXg.U.o.o.o.oXg.X.o.o.X.o.X.o.bXg N.^.k.k.kXdXt.uXtX9X5.r.r.k.k.kX*.kXt.k.k.kXt.kXtXt.k.k N.X.o.X.o.X.zXg.XXg.b N.b N.o.o.X.b.X.o.X.o.b.b.o.X.b.b.b.o.b.z.b.X.b.o.X.b.X.b.X _Xg.X.bXdXt.H F.8.`XI.u `X3 1 #.}X- <XI B R 8 RX, h.a ` V.SXZ.S zXr M M M.4X0Xh.h = z.+.+ z z.+Xh.TXZX<.+.T.j z.;XZ.OXZ.+.OXh K.O.G M.;.E 0XL.WXs k k D 1.2.%.' m.9.9XwX0.;.+..Xr.x.jXmXIXIXI.} 3Xe._.p.p W W $.} RXI.8 3.~ x.[.F._ E.WX, a R.~XI.Z 1.,XwXJ.uX-X1 a t.a hXe.-.- $ c cXl ) ` I | (X3.$ ` k kX3.l c a hXM.FXB.[.,X7XJ k.&XkXx.5 ).5.5 #X-X-.aX-.~ 3 cXD.}X-.} 3.a.`X-XV 3XIXI 3.H R R B.` R.~X- R RX3 3X, 3X, 3XD.eX-.M.aXD h.-XpX<.1.jX>X> J.+XrXK m.] mXJ D hXH RXD t R R.a R.M C CXsXs vXs.N.) 8.; v 2.s OX0 = y O sXsXD 8.MXD.MXD.DX, R RXDXDXD.WXDXDX,X1X-XDXD R R B R R $.'X, R.M s bXmXm 0 o.;._.M R a.M R.eXIX1XD.e.aX- R.a cXDXDX,XD 3XD.a R.a.a.*.a $ R.a.aXD h.aXaXs o.v vX2.1X< k.,.rXtXdXtXjXtXdXtXt.kXt",
+"X, $XD R.a R R.aX-X,XlXIX-XIXI RX1X5Xc 'X, 8X1.* R t a R R $XJ $ RXIX5XDXI.Z.0 gXO 8X1.D g '.0XPXc !.0 g.`.HX1.Z =.S.g.i.pX>Xn.s v.m v..Xn.4 H z &.; H H =.> &X0 & &XmXUXO ! gXU =XKXwXy =XU.9XeXe.d v.x w.CXfX0.C y.- 1XD.u T : : T 5 )X9.KXd.8.H.`.`.`.`.8XIXI.a ` $ h $ h.} 1XK.5 D (X9X3 ) :Xt.^X* N.XXgXg NXg.X.o.X.oXg.X.b lXg.oXg.o.o.o.o.o.X.o.X.o.o.X.b.^.kXj.kXtXt.uXd.u N.k.K.k.kX*XjX*XjX*Xj.kXt.k.kXtXt.kXt.k.^.^.XXg N l.b.b.X.oXgXg.oXg.X.b.b.X.b.o.X.o.X.b.b.o.X.b.X.oXk _.X.o.X.o.b.oXg.o.X.o.X.oXo.^.r.8.` F.8.`XX VXMXl 3 <X-.a tX1XD RXD xXD ` XJXZXh.h M zX0.;.+.+ =.+ z MX2X>X8 M.q &.+ n z.h.h.T.T z & &X0Xh.+ &.j.EXr y J 0 /.v.s.w.Z $XD.DX1X1.ZXDX,XsXL o.s.E.C.4.xXrXI.HX1X-.a 3.}X+.j.p.EXG y.a.`.8.`XI.aXBX4XqXe._ $X,XV.5XK DXc x sX,XDXD.a R B.M.M h.i.Y U.aXD.`XIX-.KXI 3X*., | | kX3XBXM # a.l xXrX%.pXB.-., h.AX3 N qX*XXXMXM $.a a.a.aX-XIX-X, cX- aXIX-X-X- 3XI 3XDX5 3.uX,XIXD BX-XI R.%XMXXX- aX1X, $ B RXI.a h 1XcXw =.jX> v J.>.9.' 1.n.wX, c.a 3.} RX,XDXJ RX,.' tXsX, vXU U.M u UXc._.N.s.sX>.E &.E s vXL.Z.Z.DXDXDXD.wX,.W.Z.Z $.ZXDXDXDXDXDX1XDX,XI.a R 8XlXU s.wXL.w oXC 9XC.E v.M R $Xl R RXD s.Z.Z c RX1 RX,XDXl.uX,XDX, 3 t.aX,XlXD.-X,Xl a aX3Xc xXmX0.>.O M.1.T.hX3 k.$.K.kXt.kXdXt.^.r eXt e",
+"XDXD R aX-X- R R 3X1.5X-XDX1.HX-.'XJ.].].9XK TXlXJ : D.Z.u.9.2 T RX,XV.~.Z.0 g gX5XD.D g.! '.w 9 g.>Xy.D.HXI.a.nXp W r +XrX> . yX>._.. 0.@X0 &.EXn vXn.9 &XG yXGXm s.! '.!.' bXP.! T g !.] R 8.NXG.jX>X4.@.E.4 z.1X+ .uXD.DXV.`.DXVX5X5 ( D.A D )XV ~ 3 ~.`.`.8X1 h x 1Xc x 1 x.a.Z : `XJ I.$ I.f.$.^.b.X.X.XXgXgXg.b.o.o.X.o.o.U.o.oXg.oXg.oXg.oXg.o.b.XXg.b.^.k.k.kXt.k.k.kX*XdX9Xt.kXtX*XjX*XjXt.k.k.kXtXd.kX*X*.k.kXtXj N.b.X.o.z.XXg.b.o.o.b.b.b.o.X.o.X.o.b.X.b.o.X.o.b.X.b.b.X.z.X.X.o N.b.X _.X _.o _.X.o.b.^.k.r.8.8.8.}.K V :.l c <.a a R.aX1.aXD $X-XlXc kXZXSXh.+.+.h.+.hX0Xn.E._X+..Xn ^ o J H oX0Xh W M MX0 = HXh.+ =.+XhXwX0.+ z.; O.. 2.N.= uXDXsX,XDXDXD.Z.ZXsXL J.v.E M.E M.w 8.8X-.r 3 aXK [Xw M & MXw.2.0 ` D T .YXq._Xe.gXc D :.%.]XDXD.-.Z hXD B.HXDX,.aXqXqXpX<X,XI.` 3XIX- cXIXI.5X3 `XXX3XX # h.a x .[XBX+Xp.FXK 3.A.5Xt.5 3XX V.lXM $.a a.a a a.a.a.} $.a.a aX-X-.~X- R.~ 3 R R R $ 3.u 3.~ xXMXc 1X.Xc RXD R.u.aX1.}XI 3Xc.-.> [ J S.E.; gXc.]XU DXKXIX,X,X,.ZXD 1.>.Z.ZXK R RXDXeX,.M t.a.}.i.M.d.M 2 v.v o.q oXG b v v s s s vXGXG s x s s.9XG.nXsXD C R RXD.DX,X,.w.w.'XL v.w JXC &X0 o 9.N.M.M $.Z T.9 TXwXKXKXlXK.}.aXIXJXKXw 'XJ xX.XKXw.[.>.j.O s.[X,.3.9 Xc = H =.+XH.T.S [ VXJ.,XX.5XtXtXtXtXd.k.k.k.k",
+"XcXc T :.'.5X5 $ :XD.]Xl BXIXDX1XK.].' T D gXcXU YX#.G.O 4.GX.X; ` )X,.D.Z TXc T 8X1.'Xc.n.n.n.nXU.j.> D.Z t.wXp.JXbX2 r.{XA b 0Xp.@ HX>.O.+.+ =.q.> !.9.9XO @.!.'.'.n.n g.OXO.>.q !.0 'XD 8XlXr.EXnXp y M yXl x cXK.'Xw T )XD $XVXIXIX-.8.8.8.uX* ~ 3.8.8.}.8X- 3 a.a.}X,.i.9 `XD 3.u.k cXtX9.K.XXg.k.XXxXg.bXg.X.o.o.X.o.o.o.X.z.bXgXg.bXgXg.o.X.b.b.X.X.o N.kXj.kXj.kXtXdX*XdX*.X.rXt.^X9./ N.kX*XtXtXd.kXtXtXdX*Xt.k.k.k.bXx.b.X.Q.b.XXzXg lXk.U lXk.b.^XjXj.b.b.o.X.o.b.X.o.X.oXg l.XXzXx.bXg.o.X _.X.b.o _.X.X.X.^Xt.8 ~XI.8 3.,X3XMXl.aX- R RX-X1XDX1 x h c h `X..O.1.h.+ z M M.h.YXe v._.)X= 0X> y s.Y.T = W.@XCXn.+ &.+Xr.1 M M.+X0.T = MXp 0 2 2 pXa.NX,XDXe $X5 x.wXG O v.= H J & JXGXDX1.`.8X-XV 3., M.>.+X;X; @ YXJ.5 xXc XpXn.S n., 1X,X1.aXD `.-XwXK.2XJ T :XwXJ n = [Xc < 3.`.`.8X1.u cXI 3XJX3XM.lXMXM # a.a #._Xr.jXnX+Xn # # |Xx ).$XM.,.[X7.lXM #.} h h # #XX.lXMXX.a.aX-XIX-XI R RXDXD.~.a k s hXD h 3XD $ ` `.,XUXK.2X,X5 c cXMXMXM.,.-.1 zX0 bXw.jXcXJXKXUXw : ` $ 1 $ T mXl xXl $XDX,X, h.a.} RX,XD.a.a.W C UXL v bX> HXC o J J J 9 b bXG.E J o J.E 9 s s s sXaX, 8 C TXU vXG v o yXC & HXm & o J.W.M.M RX,XlX,.Z.Z.Z.a.aX-.aX-.uXD sX.XJXcXH :.Y x 1 sXGXe &.W.M C.Y h.M.W._ o o n.- k.[X7.9.,X3XJ.5.5 NX9X9.r.kXtXtXd",
+".9 :XK.]XKXcXUXJ.2.2 ! D.uXlX5XI.'.2 $.'.w.] $ c x 'XlXcXK m 4.|XKXK.Z $.w T DX1 cXDXJ.'.n.n s s &.'X; =.wXD._.@XA.B.PX:.y M.E.9 v.9.WXL.OX; & @.'.G.% g.w T.>X; sXPXl ' g.O.OXO.M.DX1X1.H.M.-XGX> ^X+ x.9 g `XI 3X1XIXD T.9 ).,.5X9 : )XK.5X5 3X*X*X*X*.8 ~.8.`XIXV R.}.a.a h 3 3.H.K.k.r.K.k.^.kXg NXg.o.o.X.o.o.XXg.o.o.o.X.o.z.b.o.o.b.o.o.o.o.^.^.b.X.^.kXj.k.k.kXtXt.kXdXd.kX9Xj.KXj.fX*.$.kX*.k.kXdXtXdX*XdX*.k.k.k.kXz.o.XXg.z.bXgXg q.6 iX@.I.I.b.^Xj N.b.b.b.X.o.X.o.b.o.X.XXk.X.X.I.z.X N.b.X.o _.X.X.b.o.X N.kXt 3 ~.8 h I VXMXX.a <.a R RXD.aXDXlXD cX, `.-X<XH =XZ.j.E 0XpXn v.M.M.v.s b &.9XJXwXKX+Xw.;.;.TXZ.hXHXh.T.O.h.Y.+.YXr..XpX> . 2 O 2XL v.w xXq x.w xXeXe.W 2 o 2 vXC.9XD 3XI.`.8 ~X- 3 B.9 y.j.>XK.DXDXIXIXDXB .iXe E xXD R RXDX, xX, $ $X,XDXDXD._ ._X+ U.}X-.8.`.~.8 3.K.,X3 V VXMXM.i h aX-.aX, .[X+XnXn u < x.5X*XV $XJ .g.gX7.F.lXMXMXMXMXM.l XM.l `X, 3.eX- RX-X1.a.u.MX,X.Xc ` x.9 hXc `XM .,XcXB.% ` `X3XX.[ ` .- [XwX> v o.w h.Z.Z.9 s.[X. x $ :X.Xw vX,X, xX,.u h `X,.,X3 1 xXK.9 1 x.W 8 p b O ^.q H H.q.;.q.;.q.q M & H &XC.q H b b sXa s.n.W.9 & b o HXC w ^.@.@ H.;XC.W.W.M R t R.e R.a.Z $.a a.aXI RX, $X5 $XD 3 hX,.a x.WXs.s.sXL.s v.W.-XpXpX+ H =.+XZX<X# kXK.,X..3 } I I 5.A.&Xo.kXt.kXt",
+" RXD R RXD.DXD.n.Z $X5XUXJXJ.2 T D.2 T 'XcX..O ' m.e.eX- RXlXU :.D.' =.n.'XP.nXDXK RXHXK.!XG y.! g !.!XUX, u.YXn.v.vXnX>XH 1 R 8XIXDX,XU m g.] gX5.nXU.].nXK g ! = !Xm !Xw g y 1 $.8.`XIXI hXp.@X>.E x.} cXlXc (XXXXXcX,XD 3XV.uXX.5 ( :XxXJ 5 )X*X*.kX* ~XV.8.H.`.`.8 R 3 3 3X1.8XtXt.kXj.^.k.k N.XXg.o.b.XXg.oXg.o.o.o.o.X.oXg l.bX9.o.X.b.X.X N.^.k.^ N.kXtXj.kXj.k.kXtXt.kXt.k.bX*.r.kXg.z./X*.kXtXtXdXtXd.u.kXdX*.uXtXdXd.b NXg l.b.X.b.oXkXg.bXz.^.^Xj.bXgXg.o.o.b.X.o.X.X.X.b.X l.X.XX@X@Xx.X N.o.X.o.o.o.b.X.b N.k.u.r 3.8.KXJ V 1 :.}X-.aX- RX,X,.Z c.a xXD `XwX#XZ z MXG 0 0 v 2XLXn.WXLXn =X;XUXKX- 1XKXrX+ H.O.T.O.1.S.SXH.1.1XZ.1Xr.g.<X%.@ ^X8X> J.@ vXL.W U v v H v &X+ oXLXG 1.Z $X,XV.kX5.zX5.uXDX3XH.3 T `., :Xx.8 3 c x XpXpXq._Xq U.M t RXD.a $.MX1X1XD U.M._.m.FXpX,X1.`.8.8XI.`X* cX3 VX3XM.l a < aX-X-XI.l.p.pX+Xp.M <.a 3XlXl.5.j.pX+.p.gX7XB.F XBXB X7 kX7 .lXX 3 #.aX- R.a R 3XD.a.a hXK.,.,.S kXcX7 .lXM ., [ V kXM XXXB .Y.g z M oXL.M $XK.a h xXKXc .>X.XK.-.ZX,X,XDXDX,XD $ $ 1 yXcXy.] T T.9.Z 8.N v.v OXi 0 J ^ ^ 0 0 ^ 0.v J ^.; 2 b.E &XCXC o OXLXLXL b wXC b.v.v.v.v.v w 0 OXLXe.a.a.a aX, R.MXDXD t R aX-.a RXDXD BX,X, $.M.M.MXe.W b 0.E.=X0 HXw M W MX0 M.OXh k [.,X#XhXH.3 6.,X9 qX3 q.kXtXt.kXd",
+" R a R R RX1 8XDXD.n tXl ' $.].2.0.ZX,Xl R.w.Z xXKXDXc.wXD : !X,XD.DXw ' s gXDXIXJXK KX; =XUXw !.> =.'XU.W.EXp...s..XC.Y x.9 D T.ZXD DX$X; DX. 4X5.G m.'.9 g 'Xm g.OX; mXl R 3 x.]X3Xo ~ R x.jX>X+.W.MXI R.8.uX3XX D ` D.,.5.8 ~.8.r.u.kXo )XxXx.k.kX*.k.k.k ~ ~ ~.`.8X1.8 3XV.8.H.kXtXd.X NXgXg.o.b.X.o.X.o.o.b.oXgXgXg.b.oXgXgXk.X.o.XXg.b.o.bXjXj.kXjXd.k.kX*XtXt.kXtXt.kXt.k N.KXj.k.kXjX*.^.kXt.kXtXdXdXd.k.k.u.kXtXtXt.^.X.oXkXg.oXgXg.b.oXgXj.^Xj.X.bXx.oXkXgX9.o.b.b.o.X _.XXgXx.X N.& 5 QX@ ).z.X.X N.X.X.X N NX*.r.r 3.` : VX3XX #.a.aX-.a < $ hXD 1.3 1 : [.,.S.1X0.Y 0.sXG JXL O y.sX>.j &XwXDXlXV h $.- MX+.jXh.1 k [X7XHX<.1.- .hXh.yXrX: MXhX2.@.v.s vXe vXs.Y.T n M M = M.> kXKX.., D I.| IXo ~.H 3Xl # ` | :X3.$.rXV 3XV $.l.YXpXGXpXe x h.}.WXDXJXJXK m xXc tXeXeXq x XI.8.8.`XIX-.uXI.u V XM.l.} < <.aX-.a.l.-Xr Xp._ t.a.aXlXcXG.j.y W.<X7X%.g.[ kX%.[X%.g.[X%.[XBXMXM h 3 RXI.aXDX,X,.a x ` 1 ` [.3.L.L k.[XB X7.Y [X#.-.,.g., [ [Xr MXr.E.)XD x ` x.9 $.9Xw g.2.w.D.wXD U h $ 3 hXK.Z s.ZX,.DXsXDXDXDX- R.a CXa.s 2 2.v.v 2.v 2 2 2 2 2.v 2 0 / 2 O 0 o o H HXmXC JXCXC.v.B 2X= 2...s 0 v O 1.M.} a.a 3XD.MXDX,.Z.a a.aX- aX- RX1 $.a.M.aXI.M.M._._ JXa 9 b.s.)Xp.) v 0Xp M.[ `X3XM xXcX.X. }.K 3X* :.r.kXtX*.k.k.^",
+" R.aX-.a a RX, R xXl :.Z.wX-XKXHX.X-XDXDX-.M R t.eXK $ : m.'.OX.Xw.] T sXO T BXDX1.' g '.9Xm y s.E.>X0X0XpX4 ......@X>.E = !Xm.2.OX. !.2XcXy 'XJ.' 4X;.9 g.'XwX; gXU.]XUXK $XDXIXV.]X3 `Xl $ 1 x.M R.aXIXIXIXI.`X1XVXV.] 5XoXV.r.k.k.kXt.kXdXtXt.k.kXj.kXj.k.r.8.8XI.8.`XI.u.`.H.r.uXd.^.b.X.o.X.o.X.o.X.bXg.X.o.o.o.X.oXg.X.b.z.o.oXg.b.X.X N.^.kXt.k.kXtXt.kXj.k.k.k.kXtXt.kXt N.k.k.kXt.k.kXtXtX*Xt.kXt.kXd.uXdX*.k.kXdXt.^.XXzXgXx.b.X.b.X.X N.kXj.k.b.oXg l.o.X.bX9.o.X.b.X _.XXgXgXz.k F.rXx T 5 ) ).k.k.k.u.kX*X*X*.r 3.8.`Xl VXMXM # R.a.a a.a $ h x x.3 x = xXc.-X<.[.j JXmXmXP.9.w.x HXr.E v.E U g .% 1 YXl k yXZ.h.1Xh [X#X<X#.T.F WX%XrXZ.jX%Xh =XC.j.EXn &.Y.jXn.1 n.T.1.1.jXJ x x ` cXVXl.kX5.k ~.H.rXV ~X*X*X*.r.rXjXt.kX*.u.uX, TXw.[XG.FXe._.FXe y x x hXl x.M UXe.w gX3 3.8.`.8.8XVXV.`.KXJ .l.l h.}.aX- a.iX7.j yXn x < u.i.YX+XpX2 z.yX4X%.p.g.p.pX+.[X+.{.x.p W.pXB.lXX.} cXc 3.u.ZXM ` VXB X+.FXp k n.+X: zX% WXH [ [ MX< n M M M [Xr.+.x MXe.M U R.9 1.9XJ.9XKXD.ZXDX,X,XIXDXDX,XDX,.}X,X,.M 8X, R.M.a.M.M t 8 C 8.WXa.sXa 2.W.= 2Xs.W.)XsXLXL.N.N 2.s 2.v O ^ w wXC HXi 2 2.).N UXe.wXe.Z h.wX,.a.a h.u h RXDXD $XD R a tX- R RXVXD.Z cXD 8.M.}.)Xn s.M 8.w J 2.sXb.s v.j.[XcXB.-.lXcXK [ mX. c.KXK 5XJ 5.5.XXx.^Xo",
+"XD 3XD.aX-XDXD.e hXc.'XJXJ c.0 KX. D.9 TXKXJ : ` R.9 m 1XUXJXh Y Y.O.O 4.G.ZXI 8XDXO.0 x.w.9.> vXGXmXZ.+ & M.+.jX0 zX+X0 = y vXaXyX;.%Xw mXwXJ.9X,XKXPXK g sXyX;X; TX,.u T D ` c :Xl 3 :.]XJXl.uXIXIXIXI.`.8XI.` 3.8XI.r.KX*.r.KXt.k.^ NXjXtXj N.o N.b N.k.kXt.u ~ ~.8.`.8.u.` ~XV.k.kXj.^.b.X.o.XXg.bXg.b.b.o.o.X.o.X.oXg.b.o.z.X.o.o.X.o.^.k.^.kXt.k.kXt.k.k.kXd.k.kXt.kXt.k.k N.k.r.rXt.kXt.k.kXt.kXt.kXtX*.kXtXt.kXdXtXd.k.^.XXkXg.XXg.X N N.kX*Xj.k.XXg.cXg.o.X.X.X.o.X.b.b _ _XxXx.kXtXV.8XDX1 cX3 I 5X9.K.k 3X*X*X*.u.r 3XIX3XX # #.} 3XI.a.a.}XqX7XcXK.,X7.lXM.Y ` [.S M.j y 8XD.wXc o ^.@.@.s J.Y.-XcX5XJ cXc.OX. !.TX<XwX3.g.SX<X%XrXpXq.j.h.S.O.hXSXh M.+ = = =X0.Y = k n.YXw.-.9 R.aX* 3XV ~XV.r.H.r.rXdXt.k.kXt.k.^.k ~Xt.k.kXt.k.K.KXH.3.1X% MX>XpXq.j.-Xw.[XB.jXc = .YXq 1.- h.a.}X-XI.8XV.H.`XX VXX.l.lXM h c.a.i .gX+XpXp U XpX4X2X2X+ rX+ z.T.xXrX+.<Xn.<Xf.<Xf.<.pX%.[XBXM cX-Xl.,.-.KXH.SX%.T.g.gXr [XrXr.J.x.h.h.j WXrX+Xr.jX>XpX0.E S M.y zXr..Xs U a xXJXK 1.M.Z $X,.Z.uXI.ZXIXDXDXDX,.M.a $.a.a R R R R.a RXD.M.M.M 8.M.M.MXs G 8 C 8 C t t.NXe C.N.N.).)X= 2.v.vXi.v 0.v 2.) C C.M.Z xXlX,.ZXD x.a 3 3.ZXI RXD.w h.W.a a.a.a.e.ZXDX,X, RXoX,.M.MXnXn.9X1X,XDXC 0X=X=.s JX0 k.-.SXHXH [ K.3X#X3 I ,.$.| I }.HX*XV.kXt",
+" 1X.XlX.XD.- $ 1 ' x.a.Z R R $ mXl.D c $.ZXcX5.Y hXlXD RX1XD TXy cXKX. g 4XI.DXI.0 T.n.nXD.Z s s K !Xh.O.T.jXwXr =X0.>X;.G.! s s mXH.2 g.2.'.' mXOXwXwXUXK.'.'.> D.DX5X- cX5 ) DX3.5.H R 3.k D.uXI.8.H.8.8.8.8 ~ ~.r.kXo.k.kXtXt.^ N.X.b.^XjXz.X.oXg.X.X.^.kXjX*.r 3.8.8.8XV.8 3.r.k.k.r.k.b.o.b.o.X.o.o.X.o.X.o.o.o.b.X.o.XXg.U.bXg N.b NXjXt.X.^.kXdXtXdXtXdXt.kXtXt.kXt.kXtXtX9Xt.k.^.uXt.kXtXt.kXt.kXtX*XtX*Xt.kXt.k.kXjXt.^.bXk.b.X.o NXjXjX*.k.k N.oXkXg _.b.b.o.b.X.o.o.X.X.X.b.k.u.rX1 3X, R R.~ 3 c T ].].kXV.r.8 3 ~XV.` V `XM.u.a.8 3X-.a h.Y.[.,.[XJ ` :X3.-., nXhXc R.DXVX,XD.Y v.) 2.s JXr.TX;XK ! D I (.O =.O MX.XwXwXZ.L.1.FX4X4 hXrXp.-.1.1.1.gXHX< zX..1 kXB 1 .9XcX..8XI cXV 3.8X* ~.kXt.k.^.k.^ N.X.X.k.kXk NXg N.kX9.rXX.].,.> =X0.+.+ SXr W z WXH WXr.pXrXn._XnXB.i.a.8.`XI 3X5.8 3 cX3 VXX VXMXM #.l #.FX7X#Xr.p y M.<.x W M.<.x > zX2 W.hX+Xp XnX4XnX4X4.x.p [X7.FXM < #XDX,.}XcXBXBX%X2X2X2X2X: zX>X6 z.4XnXpX> yXM EX,XeX4.x.yX2 w S HXG.W $ x.w ` $ h cXD $XD 3XDXlXJXc c $ $XD.M.aX,XDX-.a.a R R.a a 1X1 R t.MX,.MX,.*.M.M C 8 < 8 t.MX,Xs.*.M.N.N.N.).) /.)X=X= 2.N C._.9XD x $ D :XDX5XlXcX,X,XI R.M R.MXlXD.a.aX-.a 3 R.aXD 3X,.% mXeXmXr.jXU m.%X. K b J ^XC.> = =XS.GX#XJ.,.3X# 6 `XMX3 ) ) :Xo.u.k.kXtXt",
+"XJ k.,Xc.9X.XK.,X..' :X.X1XDXl m.2XD.* R.eXKXw aXl :Xc.wXKX5XJ.2 8.w s.0 KXDXI TXU '.w s.Z.n vXPXOXm g.w.DX, h.Z xX.X.Xw g.' '.D.w $ 8X,.Z 1.'.9.GXU 'XU s 'XPXw D.]XcX5X1 RX1.u T IX3.K 3X- 3XI.8 3 ~ ~ 3.r.r.r.r.k.rXxXt N.b.X N.X.XXg.b N.bXg.b.b.X.o N.^XtXjX*.r ~ 3.`XV.rXtX*XjX*XjXj N.b.X.o.o.X.o.b.o.b.oX9.o.b.X.o.b lXk.bXg.b.bXjXt.^.X.kXdXtXt.k.kXd.kXt.kX*.k.kXt.k.kXx.r.k.H.^.r.kXt.kXtXtXtX*Xt.k.kX*.k.kXt.kXtXt.k.b.z.X.X.b N e.^.^.^.^XgXgXg.o.b.o.oX9.bXg.X NXzXd N N.k 3 3XD 1.9.9 1 1 x.' xXl g.,XK.}XI 3X-XI #XcXMXl x $ c # c.} $.- k [X.., k V `XKXc.GX# `Xc.2.$.0 : :Xr & s.s.s 0 0.jXm y.H.Z.D DXlXU n.-XH.-.Y.O.+X0 [.1 W.F.jX<Xp.[ n.gXBXB.-XJ.Y.Y `XB ` ` : ` D `XI ~X*.u.rXx.z.k.XXtXg.XXk N.k.f N.k.k./.^ qX9 N./.k.k.KX,Xl.'.E y.; z SXr.pXnXn.jX4X4._.F._Xq.p # <XIX1.` c.k 3 3XI.8X9X3 V VXMXM x .lXB.h.T.1 z.h zXZ.T.+ z WX>X4Xf z z UXr E.M.M u UXGXp >.[X% 1.l 3.aX-.i X7.pX:.<Xf %X6.<.<X8.@.JX>.@.@ o y.YXG >.xXfX8.4.4 M.; J s.W.WXD $XDX, 3X,X, 3XI `.2 kXlX. 1XJ ` RX-X1X,.a BX- R R R.eXc x X5 x a.M UXD.a.M t < R a R aX, h t t t t t.M u.M.)Xs.).).N.*XGXH 1X.X.X..G.%.%Xw.G x `X,X-XD R.Z h.Z.a.aXD.}.a $ $ :X. cXh.O.OXh & M g.] ).' K 0 JXm HXKXK k.3 V.,.,X3.- V., #.a 3X1.u ~.5X*.kXo.z.5",
+"XDX,XlXI $.aX,X,.Z 1.' TX,.D DX.XU.] 1.Z h $.9X1 R.M.Z.3X;X.XU $ BXD.nXU ! ' gXU.'.' s ! 1.' y yXD 'XD 8XDXs.n g.>XwXPXK g :XK mXJ g.,Xw m m T.0X. T.'.' s.wXy.G $ : :XK :.u.Z 3 3.uX5XV ) D.KX*.rXtX*XtXj.k.k.kXt.k.^Xk.^.X.XX9.o.X.XXg.XXg.XXg.X.b.oX9.o N.^.k.kX* ~.r ~.r.u.k.kXt.k.^ N.b.o.X.o.X.o.X.o.X.o.X.o.bXg.b.o.X lXg.X.o.o.XXjXj.^.X.^ N.^.k.^.^XtXtXtXdXtXd.kXdXt.k.k.k.5.I.r.kXt.kXt.kXtX*XtXtX*Xt.k.kX*.k.kXt.kXjXtXk.X.o.o.b.k.^ N N NXg.XXg.oXg.c.c.cXg.b.b.^Xt.kXt.5.K 3 xXGX+ .X6.<Xn.@Xf.@X>.E.E M nXGXpXGXG.pX7.YXq 1 xXB.Y #XK k mXl 3 #XM : I.2.%X. D., D D D D I DXPXw 9 o 0.@ ^ 0.; &.wXdXV.RX5XJ Y.OXH KX;Xh.OXr v.1Xr z W z.1Xp.g.S k.-.Y .9 : `.l xXKXc.,.8 ~X*.8Xt.r ).$.X q.XXx qXxXx.XXk )X*.X q N.z.o.XXx.kX5.k.uXl 3 $.Y y H H M z.jX2Xr M W.xX4Xn.FXpX7.i c.uX*X*X3X9XXX9.k.K.KX9 VX3XKXBXK.F [X7.pX2.xXr W.@Xn.;.+ W.<XpX4XnX4Xr.M U < <.M hXpX+.pXr.<.FXM.} h h .lX% z W rX8.4.x.y.<.x.x MX+ =X0.j nX+ nX:.T.4.4.4 S.; & H v.W.D.DX,X,X, R.a.aX-XI 3.Z x.u :.ZXIX,XDXD R a.DX1.aXD.a RXD.aX-XD `Xc.Y ` :X,.}XD.a.a.a RXDX- R.a cX-X-.a R < a t t t t C a.M < $XJ : m $.Z.ZXD.ZXlXJX5X5X. cX,.Z $.9X. `Xl $X,.ZX,X,X;.OXl.9 s.= o JXO $X1.` :Xc._ =.+.].O # 3XIX-.u k.3.[ 6X# [ `.9 kXJ.| ) P.|.A.A.|",
+"XIXD T.9.2XUXJ.2Xc TXUX5.O TX.XKXJ T.' T.2XwX.X.XJXKXlXwXl.wXKXKXD 8.w T.9 'XlXl.n.Z !XK gXK.9 gXJXOXUXU T s.! ' T s.n.9.0XUXDXDX,.]Xc.,.'.0.9.9.n.O.>.DX.XNXUX;X; 5 `XIXI.uXl.K (XI 3.8 3X*X9.X.kXjXj.k.^ N.b NXg.b.zXg.X.o.o.o.X.X.o.X.o.oXg.o.o.o.X.oXgX9 N.^.kXtX*X*.kX*Xt.k.kX*.^.bX9.o.XXg.X.o.o.X.o.b.o.o.X.b.o.X.o.o.z.oXg N.oXg.^Xj N N.oX9.o.X.X.b.^XdXd.k.kXt.kXtXtXoXoXdXt.k.k.kXt.kXt.kXtXtXt.kXt.k.k.kXtXt.k.kXt.k.kXxXt eXj.^.b.o.bXg.o.o.o.cXg.c.c.cXkXgXg N.^Xt.kX*.K c.iXcX> ^X6.P.P.J ^Xf ^ ^ ^XfXp.EX>XG .X> W M W M M.jX%.g.-.g K.G D.$.,XXXJ }.] m )X.X*X* c.k.uXo DX1.] $.9.qXmX>.;.; =.E =XIX1.`.8XIXI 1.K.9XcXhXU.9.jXr.jXpXn.j.x.[.y.T K.SX.Xc [XJ k [ [X..S.O I ) 3.r.kX9X*Xt.kXdXt.k.k.r.k.k ~.uXV.r ~ ~.r.k.kXj.kXdXt.k ) D mXl D =X> HX> H.T JX4 0Xn M.T WXr . .-.,XD #.r 3X*.r.8.8.8X-.KXJXK.' 1 xXrXBX7X2 >X2.x.. v.W / /.vXf z.;X>XpXpXp.[XhX,.a h.* xXG >.xXr [ ` XB.l.[X< W W SX: H r r SX>X6.<.xX4Xn vXn oXn .X>.4.4.4X:.C.EXn.EXG.W 8XD 3X, $X, h cX5 x.aXIXl 3X, xXKX,.u.-.' 3XIX.X5.eX1.a.e RXD RX,XI :XDX, $ :.[XKX3.MX- RX1X1XDXI 3 aX-.a R.a.a.}XD.}X,X,XDX,X, c 3X5X1XVX,X1XDXDXKX, :.ZXIXlX,X,., $.Z h.ZX, hXDX,X, :XD sXs.s O & !.~.u R 3.aXK.G.n RX-.`.a.`.8X-X3 6., VXXX<.,X<XJX,X9 c.u.kXV.u.r",
+".ZX5Xl 1X,X,X,.Z.Z $X,XD R.'XJ T TXUXJXKXJXc Y.O.G mXJXKX,X,.Z.2XK R s.!XJX.XJ g.].9 g.- sXw.OXw =XUXw s.n.'Xl.9XD s 1XD.MX,.wXlXc.>X,.9 T sXK g.-Xw @.2XyXy.G.G kXl D mX3XlX1.u TXVXV 5 )X* c.k.k.k.^.^ NX9XgX9.o.b.I.bXgXg.o.bXg.oXgXg.o.o.b.o.o.o.o.b.oXgXgX9.^.k.^.k.XX*.k.k.kXj N.XXg.bXg.b.o.X.o.o.X.o.X.o.o.bXg.b.o.X.z.oXg.X.b NXjXj N.o N.b.X.X.X.X.X.^Xt.kXtXt.kXtXt N.^.rXt.k.kXd.kXtXt.kXt.kXt.kX*XtX*.k.kXtX*XtXt.kXt NXt.b.X.o.o.b.oXg.cXgXgXg.U l.c l.UXgXg.b NXtXt.kX9X*.}Xc.E JXf ^Xf ^.J 0 p.sXeXL.W.MXe x sXG.@.J.x.4 WX:X:X2.y.1 nXH ` c 3X9 c.5.KX9XxX9X*X*X*.rX9 5 ).K c 3XD T &Xn.s.... v.! TXIXI.HX1XI.8.}.`Xc.2XhXw.OXh.T zX0X2.;X+ M [XZ IXcXc.3Xc.- V X3X7.-XK aXV.rX*X9.k.r c.^.uXd.k.H.u ~ F.`.uXV.r.r ~ ~.r ~Xt.k.k.k.2 5X. T.,.O &.q w yX0.@ b S M.x.h M.h.+ MXHX<XHX3 #.H.5.8Xt.8.u R ' : 1 RXD.wXpXr.p W.p.CX> 0 2 /Xs.= / 0 S HX8X>.xXnXpX+ xXc c $.}XGXp.<Xp.[.[XB.SX7.SXS z.h M.+X:.T.TXh.y z.;.T W SX4Xf.CX> w.4.; S S.4X>XnXaXs.w 1 tXDXKXDXD k ' RX, m R R $.Z a c `X, RX5 $X-.Z $.%X5.~X1 RX5.* 3X,.ZX, $.ZX- RXD :Xw.2XlXDXD.Z.Z $.K.D 3XDXDXDXD.a.a.a a.a a a.~.~.`XlX-X1XIX,.`.a.e RX,X-X- $XD RXDXH.3XcXl xXD.Y xXK.] `XZXwX0 o =Xw D.uX9XI.} DXJX, RXI.`.`.8X-.` 3., V XB V [.Y.9XJ c.uXD.8.K.HXV",
+"X.XcX..2 kXUXJXK.9 : ' : '.'.2X, R B sXl.9 ' T.ZXK.GX; D.eXlX,XDXw.wXK T.].' TXcXK m g.D x.Z sXK yXw.9Xl.w TXw TXJ yXJ.MX,X,.F n.9.Z : s.'.2.2XU ' g.2X;.ZX1Xl DX. 3.aX5.9 D.].uXVX1.K (X9.$.& N.^.kXz N.bXgXg.b.oXk l.bXg.bXgXg.o.o.b.o.o.o.o.o.bXgXg.o.oX9.o.o N.^ N.k.XXt.k.^Xt.k.XXg.X.X.o.o.X.o.X.o.b.o.X.bXg.X.o.o.X.o.z N.bXgXg.^.^Xj N.o.X.XXg.X N.b NXjXt.kXdXt.kXt.k.X.kXt.k.kXtXtXt.kXt.kXt.kXt.kXt.kXt.kX*Xt.k.k.k.k.k.5.r.X.o.b.o.c.U.cXk l.UXg l l.c.U.UXgXg.X.^.k.k.rXMX*.a.YXC.@X6 ^X6 ^X6Xn.) u u.M.MXD.M 8.Z vX4..X4 . ..C.{ ; W.;X<.O :.`XD 3XV 3XxX*.uXtXtX*XtX*X9.$ I ~.5 cXcXcX. oXp v v & = yXc.u.D 3XI 3 3XI )X. m.G K K K =.hX0.+.@ S nXH.3 YX#.3XHXS k.- [.,XH., :XI 3.r.5.rX*.rXV.k.HXV.XXJ DXJ.]XOXx.`XV ~.H.r.u ~XtX*.r.uXVX5XV 8Xl 0.v 0.@ b.v 0.+.h ^.+.4.+XZ.T.+ z.1X;X,.`.k ~ ~ 3.HXDX1.9XlX, U.wXLXp.[X:.x.4 w 0.NXs C.N.).v H.;.; M SXr.@XpXp 1.MXHX, U._XpX+Xr.[X<X<.[.h.h.; z z.L.h.h.LXZXZ.h.y.+X: r.{.4X8 w.4 z S wX>.@ vXeXe.M.ZXc.u xX5 RX1 hXD.MXDXDXD RXI R R R BX-X,.uX-X1X-X- D :Xc :.0 g D.'XwXJXU D.wX,.ZX,.D xX5XH.DX, RX1.ZXDXIX-X- RX-X-X- t R.a.eXI RX- R B 3 c R RX,.a.M.a aXIXDX-XVXD R.ZX5XH.YXcX#XJ.%XwXJ.,XK.1.L MXLXsXK D D.2 m `.3X5 DXoXl.`.~.`.`.8XV.,XXXX VX7 kXp x.-XZ.u ` c 5 : )",
+" $XlXKXl :.'XcXKXKXy DXy.GX. !.0XDXD.'.% ! :XUXIXJXU :XcXw.ZX- 8XDX.X;Xc 8 RX-.a.ZXw 1X-XK RXD t.MXD UXDXJXh m nXlX,X, h UXcXw $XD 8 ' sXc.>.O g ].2XK TXJ cXDXVXl I : c.u c.] (Xo.H.5X5.^ ( 5.X.o.X.oX9Xg.bXg.X.b.UXgXg.o.o.bXg.V.oXg.o.o.o.o.o.o.o.oXgXg.o.o.X.o.XXg NXx.^Xt.k.k.^ NXg.X.b.X.b.bXg.o.X.o.bXg.b.o.b.X.o.bXgXg.oXg.X.o.b.b.X.b.X.b.o.^XjXjXj.kXj.kXtXt.k.kXdXt.X.kXt.k.kXt.k.kXtXtXt.kXt.kXtXt.kXt N NXt.kXtXtXt.k N.^ N.oXg.c.c l.U.c.cXk.c l.c l.U.cXk.c.b.XXdXt.kX9X* 3 g.q.q H.4 S.;Xf...m.).M <.}.a.M h U.MXL v._XGX4.C.P ; L.<.Y.G k.0XJXJ ) 5.2.R D ]Xx.|.k.u.r IX. : DX5 m : $ T n = nXw.+ =XhXh.G.OXI.u 3 3XVXV.8 $XU.OXhX0 H.+.T.@ y.j.1XH.S [., kX< [ [ =.jXw !XJ.D.8.5X*.u ~.H.8.H.5.2.%.0.0.'Xy gXUXP mXV.H.8.H.r 3 ~ 3XV.H.KX,.DXP wXCX0 H.@ O ^.@ MXfXi ^Xf.4 S M.+ M M =X5XJ.^ )Xo D.K.9 D.3 c :X,XL v.@X6X6 ^ 0.vXs.N C C.= / 0 O.vXn.s wX2XpXp v $.-.e.[.wXn.-.[.-Xp [Xp nX:X0 z z.x + [X2.;.; M.4X4.<.C.4 SX8X: r H J 0.v v v h U.a $.Z c.aX-X-.aX- R R.MX1.MXD.aX,X1 3 3 3 3X, : 3X, 3 DXJ TXK $ $.Z.w.Z 8.w $ R B 8.MXD.DX, R.wX,XD R RX,X5 R RX1 R.aX1 R B RX-.aX- RX1X-XDX5 RX-XD RX-X, a a 3X-XI #X1X,X,X. $ 'XK.9 xXl n cXl x v v bXDX-.H c mXc : `X3 I D D.`.`.`.`.8X-XX V., V k.gX< n 1XhXh.1XcXH I.%",
+" BXl.Z.e 8 R.a c 'XcX.Xc D.2.GX;.2Xl T.9Xl.wXD s m T h gXJ.ZX,X,X,X..O.'X,XDXDXI '.2.wXcX5 $.a R R RXl.9.GXwXcX1 8XD x.9., kXc UXDXs.0 T !.2X;.%.O DX1 #.] ` IXJ :XV T ( : (X1XV T.X P 5Xx.X.zXx.X.o.XXg.b.XXg.o.o.z.o.X.oXg.cXk.U.U l.c.c.V.o.o _Xg l.U.z lXg.b.X.X.X N.X.kXt.^XtXj.k.b.o.X.o.o.X.o.b.o.X.o.o.X.o.o.X.o.oXkXg.o.X.bXg N.o.XXg.b.b.X.b.^.^XjXjXj.k.k.kXtXt.kXt.5.kXtXtXt.k.k.rXtX*Xt.kXt.kXt.kXt.k N.X.k.k.k.k.k N N N.oXgXg.U.U.c.U lXkXg.c l l.c.UXk.cXk.X.b.k.kXj.XX*XIXc.qX0 M MX:X0.;X4 v E h.} hX,.aX, $XD.Z 8.Z U.)Xn LXA {X4XrXw IXJ.5 m.] 5.$ I 5 5.R Q.kX9X9 | PX5XJXK.K.,.'XJ $ Y.>.q J H.j.jXmXm $Xw ) c.KX*X5XV 'XN.GX0XGX>X> 0.@.;.1 zXH =.1X< n [ nX0Xw 9.0XOX1X-.|.5.].| :.2 m.G.2.OXyXO.>Xy 'XU g.2.2 TX5.8X1XV.H.H.HXI c B.DXU & M z.+ & H.; S H S.xX6.;.4.;.T.+ = z.OXU.,XJXJ ) D.] DXlXK x hX,XeXe.v 2XbX=X= 2.N.M t t.M.=.s 2.)X=Xb.v.{.xX4XpXq t hXK x <XG.Y.9.g.j.pXrX2 M.JX2X2X2.x.{X8X:X8Xf L.P.4X: S.4 w w.E w b J.W.w.Z h c $ 3 # c.u 3X,XD hX,XDXDX,XDXIXD.aX1 R.aXDX-XIXIX1 R RXDX- B.a R R R.aX-XD B tX,XD.D.Z $.w $.MX5 $.aX- aX,X5XIX-.aX1 B.eXD RX-XD R t.e RX-XD 3X1 a.aX- a R.aXI R R x.eXIXD c.w h $.M x `XD.Z c UXL 0 s s.Z 3XD.MXDX, c 3 '.u 3.`X-.8.8X-.8X*., k VX7 kXhXh.p =XcXH 1 x $ c",
+" a.,XlX,X,.a R s $.aX,XD.Z.nXH.] TXl TXKX5 RXIXD D.'.u BXJ., a.a.aXJXyX..ZX,.MX,Xc.O.2 1X,XK.3.'Xl.'X..%.O.].n.D.Z.Z.ZX..w 1 KXJ.'.0.0.GX;XO.D.]X# T cX-XV.8X3 5 T.u.8 c.2 I 5XxXoX5Xx.R fX@ QX@XxXgXgXg.oXgXg.X.o.U.o l.c.c.U.U.c l l l.U l l.U l.U.U.U l l.o.bXg.b.^.b.b.kXj.k.^Xj.^.^.X.o.b.b.X.o.b.X.o.X.o.b.X.o.bXg.bXk.o.X.I.U.I.#./.o.o.X.X.oX9.X N.kXt.kXtXtXtXt.kXt.k./.z.KXt.kXtXt.k.kXt.kXt.k.k.kXtXt.^.X N.^XtXtXj.k.X.X.b.X.c.c l.c.U.c.UXgXgXgXg.U l l.cXk.U.b.o.^XdXt.XXtXV.9 g.jXm.EX0 M.; wXn s.MXDXIX1.uX,.a.aX,X1XD.Z.W.< 2.P.@.j.GXD 3.HX5XVXdX5.kX*XtX*.k.u ) IXXX.X3X,Xl : D :.uX5X1.0 T.9.EXL..Xn v y s.' T D I m I ].G.G K.+ o.+.+ S.T.T.+.h z.hXZ.+ KXhXh K.> 'XPXO.2 ( ! ( @XyXc.G @X;.%.OXyX;X;.>.>.9 b 9.!XUXOXU TX5 $ : gXc g.2.% n.>.>.OXh.+Xh = &.x.<.;.y S.4 z ^X> ^X> y n s xX1XI.uXV.` R c x h.w.).NXb /X=.).N.M.MX- t < C.NXL *X=.)Xb.P.;.C.<XnXq.W < UX. h.M h.YXpXpX>X8X2 r rX: r r + r ;.{ ;.{X8.y r H ^.4X>X>X> H b vX,XGXl 1XDXDX1.u a.a.a a a aX-.a.e a R R.a R.aX-.~XD.ZX5X- RX1 c R.a RXDX- RX, R R.a RXD R.aXD.M.Z $ h.M $ hX5X5.a $ $X1XD $.9.9X,X, hXKXlX5Xl.'X5 kXD a.a.a <X- t.e.a.Z RX5 a.aXD.ZX,XD.DX,.9X. nXl T.W vXC b yXU Y.9XJ.YXH DXw., 1 RXD.`.`.`.`.8XI.8.}.}.a Xw.-XGXp._.9.[ 1 xXJ",
+"XD ' $XJ mXc k.,XcXUXD TX,X1.2X..,.9 :X,X1 R B B.'.2 $.Z cXlX- RX-Xw $.D k D.eX5X; mXDXDX-XD.DXcXI.2 gXU.2 !.2XUXOXUXPXO.!.0Xy gXPXU.>.O.O D T.DXJ., , ( :X5.r T I.%XJ.2.5.0 5.| DXx.^XxXx.&.&.(.X.o.XXg NXg.b.b l.#Xk.U.z.U.U.c.U.U l.U.U.U.U.U.U.U l l l.U lXg.b.b.^Xg.XXd.^Xj.kXjXt.^.b.o.XXg.o.o.X.o.o.o.X.oXgXg.b.X.o.z.o.o.6.I.6./X@Xg.o.o.o.o.b.^.^XtXtXt.kX*.k.k.kXt.k 5.&.zXoXt.kXt.r.kX*Xt.uXtXtXt.kXj.X.X.b.X.kXjXd NXk.XXgXgXk l.U l.cXkXg.o.b.o.c lXk.cXg.cXkXg.XXz.X.^XxXt.H.n !.!XU & M &.E.vXe.N.M 8XDX1X-X1XIXD.H 8XD RXn .X>X>XmXlXD.HXtXdXt.kXdXVX*X*X*.k.uXdXV.5.Z h.9 hXl.] :.uXV.Z.8X1Xs.D vX>XG.. O JXG.YXP.Z.kX5.H.u.0X;.> = &.; z.+ z =X: M zX0 M MXwXwX..> ! g gXPXO.| ! !XyXUXOXU.'.' s.D.WXDX,XD $.w.n s.! 9.! !XU !XOXU.9XOX.Xh.1.O.OX. = nXyXh.1 MX0 W.xX2X>.@.xXC 0X4 v...Y.+Xh T.H.5Xo.r.5 $Xl.WXeXs.;.EXe.N t u t t t a t.e C C.W C C 2X=.sXf S.x.@X+.p x sX<.ZXB h.j H WX8 r rX8X: rX8.{ r ; ; ; ; L.4.; wXf OXf vX>.j MXe y gXwXcXlXDX1XI 3.a a.aX- <.aX-.a.a R R t R.~ RX1.a.uXI 3 R R.a.MX,X- $XD ` $ :X,XD.MXI RXDXDX1 R.M.Z x $X,XD hX, $XlXD.}.ZXD., $XJXcXKXK.9XK TXcX,Xl 3 R.}X- R.a ` $.eXMXD #.aXI hX5XKX, R.M R.aXc T mXm.E.>XC 4.q ! MXcXl.9XKXUXw oXDXD 3.`X-X-.`.`.a.`.}.a.a.9.YX%X+ zX<.p.1.O.9",
+" $XDX-XD.9 R $ $ $XJ.ZX; 1.n.,X;X5XJXJ.,Xl B RXI $ mXl $ T.ZXlXD.u D 8X1.DX,X- D.O $X1 R B RXI ' m gXU.].0XOXU g g.2 g.0 ' ' g !XO.2 K 4 :X5XK :.H.u.] I 7 ] :.R :.5 I f.5 q )Xx.& ,.7.R q.R.z./.I.z l.U.U.z.I.U.I.I.U.U.U.z.U.#.U.U.U.U.c.c.c lXg l.c l.c l.o.bXg.o N.z.o.^ N.^.k.^.k.^ N.b N.o.X.o.X.o.X.b.bXgXk.c.X.o.oXk.o.X.o.oXg.b.o.b.X.b.X.X.^.kXt.kXt.kXtXdX*XtXt.kX*.^ )X9.kXt.k.uXtXdX*Xd.kX*XtXd.^ N.X N.b.X.^ N N.XXk.o.XXg l lXk.c.U lXg.o.oXg l.U l l lXk.U.cXg.X _.XXxXd.DXo gXm.'.q.> J O O 2.WXD.ZX1X,.D.DX,XD R U R pXe v n.WXD 8XV.H.rXdXdXo (X9 cXtX*X*Xt.k.DX5.'XG.9XG c #.2 ).Z.kX5 ).5.Z.D @ y.E b 0.j.q nXwXy D ).2XyX;.O =.y.;.@X>X>.; HX>.;XL.Y.wX,X5Xc.2 g g.DX1.`X1.! !.> ' 9 ' s 'XDXD RXD x., $.a y.ZXGXG g gXm.'.' '.0XU g @X; g $ $ : D.>X;.>X0XZ.hXp W.;.@.h z W S M.x W.+.O :X5.XXx.K.K $.' bXn.=.jXe & .9 ` $X,XDX,XD hX,XDXeXD.N.W.s.s.. H.4X8.xXnX+ v h U =XGXp.{.{X2X8.JX2.<.x.C ;.{X8X8 ;.4 SX:X8.4 ^ 0 v vXcXG g.-.[XK.Y : $ R c B 3XI R R t tXI a aX-.aX- aXI.a.e.aX, RXI R R R R R.Z tXl `.Y $X, $X, $ 1 $ $ UXD.a a R h.ZXD x.Z h c $XM RXIX, $ $ $XD tXD R t.*.* RX, h.~ a.a.a a.]X,Xw :X.X.XJX3.%XJ.>.3.' RXD.M.9Xl $XD xXKX,.WXs.EXG.W.MX,.E.s 0 bXnXG.'XDXI.HX1X-.H.a.`.a #.a `.h n WXr k nXH x",
+"X. RXwX,XJXl.YXD R.e.MXD R $XU.u hXDX, :X3.DX-X1.Z.% D.9 : 1 DX, :.Z R R R R T.3XJ 'X1X-X1 BX,XlXOXU.0.w.Z !XwXKXPXU s '.nXP g ! @XUX; Y.'XVX5 5XJXx.5.5.| ).5.R YXxXV ).5 5.$.RXxX9./ q.z.7Xx.I.zXgXgXk.U.#.#.zXu.I. .I. . .I.6. . . . .6.6.6.6.6. .6. .6. .#.z.U.U.U.IXkXgXgXk lXkXgXgXgXgXgXg.o.oXg.o.o.oXgXg.UXg.o.bXg l.b.o.b.o.b.b.b.o.o.X.b.X.^Xt.k.kXd.rXt.k.k.u.k.k.k.u.r.rXVXdXt.k.kX*.u.kXt.kXtXd.^.XXg.X.o.X.b.b.X.b.z.XXg l l.U.cXkXkXkXg.X.oXg l.c.c lXk.cXkXkXgXg.XXg.XXV.H TXK @.O K.+XC M HXG 1 yXl m.|.w $X, hXD.M U..Xe.@ nX,XD.H.r.HXtXx.z.k.R.R.KXtX*Xt.kXd.H.w.'XL bXKX, : P.| Q I P 5 I.2.O RXG vXG.s.E & =Xw.2 g TX5.2.O.+.O M H.@X6X6.; y yXw.ZXDX1X1X5.` 'XyXOX5 g :XcXw.!.q s.nXeXa C t.M 1XDXHX.XK.,.3 1.1X. !XZXOXmXOXUXP yXU.O.>.> m.GXy K K K KXhXZ z M W WX8.h.+.h.h.L M.hXpXG.wXVX*.KX*XVXVXl vXG.sXG.NXK.j 1 } h.] 1.M R t.eX-.} R.M t CXs 2.sX>X>X>.CXpXpXn.YXq n.< WX2X2X2 + + r r.yX:X:X2X8.y M r S.4X6Xi.v.s.WXe UX, R <X, a.M RX1X,XI R.Z.e R.aX- aXD.aX-.e.a a.eX1.a 3XIX1.e.MX-.a.M $X. 1.w x.Z U.Z hXl.Z x.M $ c.Z $X,X,X,X,XD.aX, R.uX, :XD.a a tXDX,X, h R.MXD.aXDX- 3 3X-.` a R B s xXc : 1XlX3 $ cXDXlXD RXDX,XDXI x.ZXD.e c aXs v 2 2.E yXKXU.v.v 2 2 v.w :X1X-X-.HXIXIX- aX-.5Xc.[XnXq UXn x .9",
+"Xw :X.Xc.9.,XcXK tXH.% @ RXJ.'XKX.X. VXJ.GXJ $Xl DX..2XI RXDXD.Z :XD B 8X5XJX.X. gXc.Z $ '.u TXU 5 Y.ZXlX.X; n gXK s.9.'XU ! ! ! K 4X5.2XJXX :.5XX I ]XX.uXdXl 4Xx I (Xt.k q.f.& }.6XkXgXx.t.z.& l.b.b.c.UXk.U.U.# l.U.U.U.U.c.U.c.c.c.U.U.c.c.U.U.c.c.U.U.U.U.#.U.#.z.I.UXkXkXkXkXkXkXk.UXk.z.U.z.z.z.z.z.z. .I./.I.z.U./.I.z.z.U lXk.Q.z lXx l lXx.bXo NXo.K.KX5.k.kXo.k.HXo.kXVX5.kXV.k.u.r.k.k.k.kXtXt.k.^.^.X.b.X.b N.b.XXz.z N.oXx lXgXgXgXgXk.cXgXg l l.c l l.UXg l.c l.X.bXoXoXV.H g.'X;.OXZXZ M M HX4 [.S ` mXHXlX, t.M.M u....XnXpX,.~.H.H.`X5 (X3 `X*.k.k.8X*.k.r.rXt.`X1 s 0 O.EX, c.KX9 D (./ )XxXx :.D.HXD 9 b.sXCXe 1.'Xl.w.H.wX..> M.;Xf.v w.@ HXeXU ! ]X5XVXV.u g !.2XOXOXUXw.2 g.9Xw g.w.ZX,.Z.Z g.3X.Xc.]Xc TXw.YXcXK sXJ.Y T.9 x.w.Z $.-XcXc.n gXl yXUXw.> M z.pX2.x S SX:.CX2 M.xXn.jXG a c 3 ~.8.8.` RXIXD.@ p.WXs tXD $ ' cXh $.' sXlXDX-.a.a a B.*.=Xs.=X=Xf SX8.CXpXpXpXp..X4X2.<.J.JX2.J.T z.y M M z W M.< ..<.xX>XfX6X6 vXeXs.WXD 3 c.Z.M.ZX1XD.HX-.D $XD.a.M RXc '.Z.Z.ZX5Xl.,XVXDX1 a.a.a.Z.-XKXw $ x.Z.W.D.Z R.9XU x.ZX, $ $.W hX,X,.w U T xX,XDX, 8XD xX-XD.M.aX- tXDXDXDXDXD R RXDXV.aX-X-X1.e.* R R.aX, h c.aX- R.ZXD 8XD hXD.M T :XlXw c x.a x p.+ v M 9X0 MX2.4 2.j.+.9XDXV c.uXx.5 DXX )X-XK XnXnXc.pXwXpXZ",
+"XD c aX, hX-.ZXDX,XN xX,X5XU.ZXJ mXNXH.|XD RX- RXJXN.'X1 RX-X, : KXJ.2.w.3 !XJ.]XcXO mXU DXc D.O.0XDX,X, n mX. y x.nXG @.G K KX;X;XJ.ZXI TXJ.|Xo.K.K q.A ].]Xo.X.5 Q Q 7X@.t.X.z./.&X .fXk.XXg.z.U.oXg.U.U.U.c.#.I.U l.U.#.c.U.c.U.U.U.U.U.U.U.U.U l.c.U.U l.c.U.c.U.#.#Xk.UXgXg.o.X.b.o N.o.b.b.b.o.b.b.oXg.cXkXg.b.o.bXkXg.b.o.X.o.oXg.XXgXgXxXg.X.^.K.^X5.k.kXd.k.k.K.k.uX9Xt.k.k.k.k.k.u.k.K.X.5.5.X.X.X.X N.zXk.z.U.I.z.z.z A l.I A. .I.z.#.z./.I./.I.6./.Q.I A.6.Q.I.R.I.I qXk (Xo $.2 gXU.> z =.@XpXnXe h # xX5XKXl E.w hXeXnXp ^.jXGX, c c.k.2.3XKX5X3.K.5 NX9X9.5X9.X.5X5.w.! o bXw `.$X9X9 N )XxXk.5.5.k.kX9.Z.'.9 o.jXe.w.ZXU.5 $X5Xl = =X> wXf ^.CX0XaXl.]Xo.u.uXt 5Xd.2 g 9 9.' s vXl s.9X,.M R.aXD RX,.,XlXD B.a B.ZX,XDX, xXlX,X,XDXIX,X,.Z.YX,.M x.w C.Z.9.!XmX0.1.yX2 WX2.xX: S z WX0X+ y.>XD c 3 3.8XV.8.`.8.a.YXe.WXs C B t R.MXD sXKX.XcXK ` h c R RX1.* 8.).WXF.v.@X: wX>.@Xp.x.<.{X:X%.J.p.y.pXr z M.jXSX+ M.x.[.pX4X:.@.4 ^.J ^ vXsX,X1XK :.ZXc : T., : `.,XKXcXJ RXKXKXJXKXJ.-X5 `X- R RXIX- m `Xl.wXD.ZXGXe.ZX,XDXs $.9 nXcXc.wX,.aX, c.W.Z xX,X, h.ZX, cXDX5X,XD R.a.MXI.M R.ZX,XDXIX, #XI.e R R B R.a.a.a.a.M 3.uX, RX1X,XD RX,XDXD $ ) x 'Xc.| | DX<XsX+ O =XmXC r W H.s.> x k D IXJ 5.2 D ] ( (.`XI.-.1.-XrX<.h.[Xh",
+"XD RX1X-XIX, RX- RXcXNX.XcXc RX, : K : R RXIX- R.3XN D R RX1X5Xy.2 KXyX.XJ.2 m.'XN.% @.9XJ g T.].3 Y.3 'X.XwXl x.!.9 !X;X$.! @X$ !X5XJ.u 3.5XJ 6XJ ( DX5Xx 5.kXJ.X.XXx.R.&.:.z.oXgXk.IXu.o.X.XXg.b.oXg.U.U l.o.I.U.U.U.U.c.U.U.c.U.U.c.U.c.U.U.U.U.c.U.U.c.c.U.U lXk.6Xk.UXk.UXk.UXgXg.o.b.X.o.o.o.o.o.bXg.U.UXg.o.o.b.b.I.o.b.X.o.o.o.b.b.o.X.b N.k.kXjXt.k.rXV.8 3.r.H.r.H c.H 3.8.8.8.r.8 ~XVX*XtXtX*XtXtXt e.^.b.b.X.b.b.b.b.zXz _.o.b.b.b.o.bXk.cXg.U.U Z.t.t.t Q.R Q.t.R 5.& ) I.H.0XU 'XPX0.> M w.j nXM.- D c.]XD.' x $Xq u._ vXnXp.M.}.KX3XJ D.'.0XD cX* FX*X*Xt.rX*XVX* 3XI s bXa 9 $XXX9Xk qXkXk.zXg.I.zXx.^XX.5.!Xa o 8XD 3.H.8 ~.8.5XH y H.. JXfXi.j.-X1XlXV.H.kXVXxX5XJXOXO s s.w.w.Z.MX, 3.a.a R.aX1 RX1 3 hX-X, 8.Z.D.ZXl h.a.M.a.M.Z hXI.a cXD h.WXDX,X,Xa.n g =.>.[.1XrX2.< W zX%.[X%.jXrXG.a $.H.r.8 ~XI.`XI.a R v.s.NXs u u u.M.).NXsXeXq n U [ `XlX, B B R R.N.N.).sXf J S wX>.<.<X+X%X2.g r.T +Xq.jXrXr.pXr.j.y W.T MX%X2 M.4 wXf.. v.WXDXK :XyXU.'XK T `XKXlXMX5 hX-.uXDX1.aX1X1 RX1XD R R RXD $XD.Z hXDXD.w $.w UXD.M.M R 8 $.9XJXJXKX, m $.w.Z.' s.ZXD $ U $.wXl.Z.u hXV $XDXDX,X,X,XlXD R.a aX-.a.a R R t R.a.aXD $ cX-XIXI.aXDXDXDXDXD R a a R hXV # `X1Xq.'XeXs.W.)Xn J.>.w m c.K c.5 (XIXIX1X1.~ FXV.5X#XwX%XpX+XBX4",
+" B R.eXI a.u R R s TX,X$XwXl R.a.Z K 3XD B.*XD.ZX$.OX$.DX1.H g (.'.GXJ m '.Z mXl K B.wXlXPXl g.wXNX5 mXy.] s $.'.'XPXO !.G.%.2X. Y cXl.2 5 c.k ( I 7.R ).5XJ.5.f.AXoX@.X.z d.X.oXg.o.o.UX9XgXg.b.oXgXgXg.U.c.o.I.c.U.c.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.c.U.U.c.U l l.c. .U.U.U.c.U.c.cXg.o.o.o.o.o.o.o.oXgXgXkXg.X.o.o.X.o.z.b.b.o.o.b.o.X.X.o.b.^Xj.r.kXt.k.rXV.r ~.HXt 3.H.8.k.8.H.rXV ~.8XV ~Xt.u.kXtXt.k.kXt.^.b.X.o.b.o.X.o.o.U.X.bXgXg.oXgXg.c.c l l l.z.t AX@X@ fXx.z ( I.& 5 I }Xl.].!XP.q.> w ^Xi._.y $ m.] ' @XD k $ [., u..XL.E.n.} 3X* | '.Z.] DXVXIXVXVXtXtXtX*.k.kX*.uXI.n '.nXP $XM N N.b.^XxXgXg.b.^.X.X N #.' s b T 3.8 ~.r ~ ~.8 TX;XU.E.x.TXn.;.G :X;.u `XxXV D (.].wXO.'.n 8 t 8 RXD 3XDXI B 8X1XI R.aX5 3 RX1X,X,.ZX,X-.M.a R RXI $.uXIX,X,XDXD U.a 8X1XP.0Xw.O y.[ z [ z zX%.[XpX<XrXw.Z RXVXV.8 ~.8.rXI.` R.}.9Xa b.).N EXe.Y.N.sXp.).M.NXGXeX<.9.'XK.Z a R R U.N /.@ MX6.@.;X:XfXrX2 r r WX%X+X+ >X:.1 zXr ..pX+ [Xp.hX: z H S w v v x $.Z 8XD 8XD R.MX5.a R.a h.~ a.a BXI R R R R RXDXIXD.Z $ BX,XD $ 1 1 x 1XeX,.M R R.a.a 3.eX,XDX, 1 x gXcXcXw 1Xe.ZXD.nX, 1XJ 1 xXD hXD : hX1 $XD.9 R R RXD.aXDXI a.aXD.MX- R.a cX5 R R.aX1XDXDX,X,X,XI RX-X-X- cX1 #X.Xl 1Xe.WXn.v .XUX; R 3XI.`X-.u.8 3.`Xd cX*XtX*X1 :XB x.FXqXA .",
+"Xl c $.ZX, $X1XD : K @.O DXD RX-XDXNXD R.aX1.e m.-X;XN $.D T ( g DX;Xl.5 R.a BX5XN.3 :.D D TXKX-X.XN.O TX,XDXy.' @.w gXU KXy m.2.0 DXI.u.2 I.XX*X9 ) P I f qXt.k ).&.z.X l NXg.b.o.o.b.o.oXg.bXg.oXg.oXg.U.c.c.I.c.U.U l.U.U.U.c.U.U.c.U.U.c.U.c.U.c.U.U.c.c.U.c.U.U.I.c.U.U.UXk.U.UXk.c.o.o.o.oXgXg.c l.cXg.o.bXg.b.oXgXk.b.o.X.o.b.b.o.o.X N.^.kXj.kXt.K ~ ~ ~XV.8.r.H.8.H.k 3.8.8.8XV ~.r.8.k.kXtX*.kXtXj.kXj N.o.X.b.b.o.XXg l.b.oXkXg.c.c.c.UXg l lXk lXg.XXk.k.rXgXoXoXxXxXx.KXo IX;XK '.!XC.q ^Xi..X%.F.[X,Xc.9 1.-XM hXB CXA.sX>XeXD.} 3.KX,.H.DXD.8XV ~.rXt.k.k.k.rX*.u.u.H '.n gXUXIX*.KX*.k.k.z.bXg.XXgXjXtX*.8.}XGXG TX5.KXt.r.8.k 3XV.9 =X+.; HX> M.1Xc DXJXx D.H ) D.] 'XOXP.'XD 8.MXs.ZX,X1 3XI 8 RXDXVXI 3XI $X,.Z T c tXDXI R.nXl.u : 1 :.2Xc 8.DXDXJ :Xl '.0XPX.XHX7X7 kXw.[XcXp., k.[XH hXD.uX5 ~ ~.8 ~.`.8.} aX< &XC.q.;.j z M M =X0XeX0X>.).WXs nXGXU.wX. < t.M.M *.E ..+ M.h.T.h.T.T.h.T.h.x.<X4X+.+ SX0 zX2 . .X4.p zX:.T r.;.4 0 vXG.ZXDX,XDXD.MX, BXl R R B.uX-XD R.a.~ RX-X- R R R.a R R 1.aX,X, $ c T.w x x.Z h.M RX-XDXDXDX-.aX,XI.M.a.M.M.Z.Z.wX,.ZX,XHXKXH TXJXJXK.,.ZXl xXD 3XDXD.e R.a R.M xXDX-.aX,.M R R.a :X1 RX-XI.aX, R UXDXI R R.~X-X- :.5 R T.wX;.E..Xi H.>X5 BX5.u.K N.K.~X9 3.u.5.5 )X*.}XlXBXq._XAXqXA",
+"XU mXUXJ.2XJXKXJXK gXJXJ.9 B.a RX5 `X5 aX1.aXl.3.uXKXNX. D D.0XDXI D.e R RX1X1Xl 6.e aXJXwX..].0 mX.XNXK.DXD 1 sXU.q.' !.%.2.OX5.HXI 5.5.k.5.5Xo ].X ) ( Q ,.R f.X.z.I N.b l.b.o.bXgXg.X.oX9.bXg.o.oXg.c l l.U.I.U.U.U.U.U.U.c.U.U.U.U.U.U.c.U.U.U.U.c.U.c l.U.U.U.U.IXk.UXk.U.U.c.U.cXk.c l l l l l.U.UXgXg.o.bXg.X.oXgXk.X.b.b.b.^.b.b.X.X.b.^XtXd.k.r.kXtXt.u ~.8.H ~ ~XV c ~XV ~ 3 F.8.H ~.uXtXVXdX*.rXt.kXt.b.X.b.b.X.o.bXg l.bXg.U lXk.cXk.cXk.cXk l l.b N N.b N (Xt A.R.&Xk ).5 YXN ! s O o z.EX6XA.d U <.a.M.aXI <.aX, C uXbXbXGXGX,.a 3 ).HX1XD.kXV.k.u.k.rXd.k.rXd.rXtXtXIX9.0X5.%X3.KX9.u.u.k qXxXk l.XXtX*.r.}XDXqXG.] :.KX9 qX9XgX9.5 DX, yXmXpXiX> nXcXcXD 3Xo c.`.`X1XD.ZXO.9.nXD.DXD.u $.,X. $ RXI B.,X*X. R.*X1 : m.- R t.MXI.3 TX1 )XVX1 ] gXDX1XD :.%.D.n.].!XwXHXcXMXBX7.-Xh.S.-Xh [XhXU cXDX*.`.r ~ ~.8 3.8 3 :.q b 0 H &.p.j =.1 MXG.+ =Xs 2.=XL.s.D.- tXc :XD t tXeXGXeX4X>.; H =X2.x.; WXpX>XnX+.+ n & =X:Xn.< >X4XnX2 S z w w 0 J o.w.WX,XDXDXDX1 R s.D $XlX, x RXDX, t.a R.a R a RXDX, RX5.aX,X,.Z R U.a.M.MXD R.aXDXIX, R.eXD RX1 x.* R.a RX,X,XDXD.ZXlXcXJ.] n., 1XJX.XJ c.Z.a.aX,XK.e 1X,XK ` g.3.9.- `Xc R RX- cXl BX- R RXDXDX,X, RX- aX-XIX- c 1 R.eXDXs v.N.; &.O `X1.u.uXoX* N.K N.k.K.8.r.`.` 3.a.YX<.y._Xn >",
+"X.XJ D 1 D mXl.'.0XK g.2.Z R BX- BX- aX1 a R.M.a $ TX.X..2 TXDX-XD.].ZX5 $ $ BXJ.GXy.O.2X; YXUX;XN Y.G.Z c.}X1.M.'X;XO.> 'Xl.% DX5X5.| I )X9XxXx.R.&.& A Q QX .7./.&.^Xg.X.b.o.X.o.oXg.oXg.oXgX9.o.o l.# l.U.I.# l.c.c.U.c.U.U.U.c.U.c.U.U.U.c.U.U.c.U.U.U.c.U.U.U.I.#.U.U.c.U.U.U.U.U l.U l.U.U.U.UXgXgXg.b.X.o.b.b.oXk l.X.b N.^XjXj.^.b.X.X.^Xt.kXtXt.k.k.k.r.H ~ ~ 3.8XtXV.8.rX5X9.k.u.k.r.`X*.k.kXtXdXtXtXt.X.b.o.X.b.b.oX9.c.X.oXk.c.c.c.c.U.UXgXk.cXk.o.o N.XXd.tX@.t Q.t.&.| )X9X;XP.nXLXC & JXi.s.d t.a R R R 8XD 8X1.M *Xb.s..XpX5 3.a.KXV.u.rX*.rXt.r.R.X.I ~.^XoXg.k.k.r ~XI.uX5 5 I I.2Xx.5.kXVXtX*XtX*.r.} # # v yXIXo.k.K N NX9 NX9.5.Z.'X+.E.x H.@.j nXUXXXVX*.H.HX5 :X5XU.9 s CX1.M R 'X1 D BXI R B m.ZX.XVXI.a hXHX3 R.M.aXDX. ]XV 3X9.uXJXOXDXa.DX5.O c.Z.0.!Xc =XH VX3 }XK.- K.S Y.3.SXJ.`.K 3 ~.8 ~.H.H.8.a h vXa.= J.j kX<.-X+.j n M yXn.s 2 b.s.)XeXG g x., $ $ <.*.).N 2 J ^ w.;X0 MX2XrXpX>.EX0 MXCX0 =.@Xq.s.p.x M M S.4.@ ^XfX4.s.wXe 3XD UXDX, 1XlXKXc.9 DXJXB `.a t a.a R.} $ h hX,.a 1 R $.- 3.9Xl RXJ.Z.MX,XD x R R R.e t tXD.a R RXD.ZX,XDX,XIXD.DXD.D cXDXDX, #XDXD 3.u.Z :XJ $.%XcXw.9XKXK.9 DXl.9X-.a RX1Xl 3 :X5X1X5Xc RXDXD RXI D R :.u : ) :Xc R.N.).) v $ cX-.8XI.8.H.8.`.~.`.`XI.~.` 3 $ 1.g n._X4.g.p",
+"XK T.9 ' kXJXD.eX- BXw.2 ' :.'.'XlX5 $.ZXl xXl $ $ TXJ.' D TX5 $.ZX1XK.2.0XHXD B.DXK m.2X; T.'.Z.Z T.]X,X,.a.MXD.n.> @X$Xc.2 3 `XJXx ) :.&.& )Xd NX@ ]X@.z NXkX@X X@.(.XXg.X.o.oXg.b.o.o.oX9Xg.bXg.b.U.U l.U. .c.U.U.U.c.U.U.U.U.U.U.c.U.c.U.U.U.c.U.c.U.c l.U.U.U. .U.c.U.U.U.U.U.U.U.U.U.c l l.UXgXg.o.o.b.b.o.X.b.XXkXg.b.^.^XjXtXt.k.^.^.^.^.k.kXt.kXt.rXt.r.8XV ~ ~.HX*XV.HXV.kXo.8.` ~.H ~.HX*.uXt.k.kXt e.X.b.X.o.X.b.bXgXg.X.o.o.bXg.cXkXg.UXg.U.cXkXg.X.o.X NXg.X.XXz.X.b NXo.D.]XU.0 b & &Xf.s p.d.a.aX1X1 RXDXD 8.*Xa %X= ..E xXIX-XV.H.8.8.rXt.k.r.^ lXxXx e.r q.bXt.k NXx.k.H ~.uXo.K )X9 5 5 DX9 ~XV R 3 3 h $.' T.HXI.8.k.rXtX*.r.rXoX5.wXGXpX2X>X>.E.9X#.GX*XI ~XV.uXJ.2XJXO sXa.D $.ZXlX,XJXD $XIX1.Z.5 xXI R aX,X, $.M RX, 8.DX1X*.` 3.5X1.0 8XDXDX1.'.0XK.9XK y nXHXMXX.K R.uX,XMXcXc.-X. xXI c.r 3 ~.8.8 ~ 3 3.a bXa O yXrXp 1Xq 1XpXcXw.g &Xw o..Xp.) 2 u.w.9 $XH R t <.N.W 2.@ H.EX0 &.jX> HX+XG &Xw &.!.q.+X>Xp.jX+ M M = r z SX:X>Xf..Xn x.W $.Z.Z $ : 1XD $X,Xs hXD.a.a.MX, hX,X, $ $XlX, hXK.aX5 T.a.9Xl RXGXDXlXD :.ZXcXl a $.aX1 h.}XDXDXDXDXD $.Z 8X,X, $.Z.wX5X5 $ $.u hXD 3 x 1Xl 1XD.Z.9.9XDXD a t R aX-.a.~X-.uXl YX# R.ZXJ $., DXKXJ.-XJX.XJ.|XHXKXw C 8 2.) o hXVXI.8.8.`.` B F.H FX-XIX9.K.2XXXKXJ.-XcXK [ 1",
+" B R.aXDXI xX1.aXDX, DXcXUXJ gXJXUXJXwXU.2Xc gX. g.> m gXOX. g.2.2XJ.2X. m.2 mXUX.XOX;.O m.' sXlX5Xl $.D.uXD RX, v 'Xy.O DXIX1.HX5 5 :.rXo ).&.f.XXxXx.I.IXxXg.XXk.& Z NXgXg.bXgXg.oXgXg.b.o.bXgXg.oXgXk l.U.I.c l.c.U.U.U.c.c.c.U.U.U.U.U.U.c.U.U.c.U l.c.U.U.U.U. .U.U.U.c.U.cXk.c.U.c.U.U.U.UXgXg.o.b.o.b.o.X.o.b.X.U.b N.^XjXjXt.kXt.kXt.kXt.kXtXt.kXt.r.^X* ~ ~ ~ 3 ~.kXV.8.8 ~.H.8XV.H ~.H.8XI.r.r.u.k.kXd.b.X.b.X.b.b.XXgXg.b.b.b.b.oXgXg.cXk.cXkXk.cXg.X.^X9Xz.X.X _Xg lXx.X.X.uXI gXGXL H & J.s...MXD R.8XIXDX,X,XeX,._ 2Xn.x vXDX,XI ~.8 ~.rXtXtXt.k.kXt.k.^.kXt.z.5.kXtXk N qXt 3Xx.5 F.H.8.u.k ).,Xw.9Xa.w.n sXKXcXD.H ~.rXt.K.k.^XtXjXt.k.5 tXGX>.@Xn.E.j.O K Y q.0 ).u $ T m !.]XP $X,XD.wX1 :XDXI.~XIXIX- RXIX-XD.a.a tXDXD 8XD.DXIXI.u ) h RXe.'XG.0.!.w sXKXmXGXmXwXHXHXMX3XIX1XI.a hXK TX. `.~ 3XI.8.r.8 ~.8.8XI a.9 v v.jX7XM XM x XMXB .pXrXwX+Xn /.).NXsXDXV.e.M u.).) O & o & &.j &X0Xw HX0.>Xm & vXm =.q.EXG.; M M.y.TX:.4X8 S.yXf.m...WXeXqX, XK cX,.ZXD RXD t < RXD $ $XDX,X,.9 k.ZXI.' $ x `X, $.w $XlXlX,XD : xXl $ RXJX,X,.Z $Xl x $.Z $ c.ZXl RX,X, $XcXJ $ RX1.aXD.ZX,.aX1 $XS.2 RXJXUX-.MXDX1 R.a R B.a.eXDXl.%.GXlXl k.9Xc T.Z :XD.u #.`.}.8 : :XhXe.D 2 v.w RX, RX-XIX-XxX5.DX9Xo.|XJXK T I ).8 `.$XK )XV",
+"X,XDXDX- R.a cX-.~.DXJ.'.DX1XD 8 $.D sX. T.9XUXyXH.'.'XU.%.nXl ' ' TXK T T T T g mXJX;XO ! g.2 gXUX. gXKXcXJ T 1.n 'XU !.3 TX3XI 3Xo I.$X9.^Xk.R.z.7X@X@Xx.o.XXgXg.bXgXg.b.bXg.bXgXg.b.o.XXg.bXg.oXg.o.o.U.U.IXk.cXg.c.U.U.U.U.U.U.U.c.U.c.U.c.U.U.cXk.U.c.c.U.U.U. .cXk.U.c.U.U.U.U.U l.U l.UXg.o.b.o.b.o.o.b.b.X.b.o.z NXjXjXt.kXtXt.kXtXtXt.k.kXt.k.r.r ~.X.k ~XV ~ ~.8 c ~ ~ 3.H.`.r.uXt.H.`X9Xx.K.HXtXt.r.^.X.b.b.X.o N.oXkXg.b.X.o N.o.oXgXg.b.b.o.X.o.b.b.X.b.XXzXg l lXx l.oXo.u.Z.2 s.9 H H ^.. v u.M 3XVXIX,X,.W E.W ...Xn.EX,.}.u.8.HXt.rXtX*.kXt.k.r.kXtXjXtXtXVXdXtXj N NX*.HXVXx.u.HX* q.k 3Xl x.' JXG b b '.D.u.H.H.HXt.r.$.5 N N.bXo ~X5 x.9.@ JX>.jXqXc.,XJ Y f ( D f.$ K.G.0 s.w.Z R :X,X5XD 'XD RXIXDX- BXD RX1XDXD.w xXl.w.wX,.]Xc `X5.Z 1.nXGXL 9 HXm.q M y & MXwXH V : c 3 hX,.} `XBXc k VX3.5.a ~.8XVXI.8 3 3.aXc n k.l .}.}.} h 1 1XM.Y.p z.<XpX=XaXsXs C t tXs.).vXm y OXL 0XG o yXr gXm y.9Xm.OXy M M H M.+.T M.y.;.4X>.h MX8X: MXp.E.sX,._XKXc.a nXK U :.M c $ 3Xc.9.MXD $XDX,.ZXDX, R cXlXlX5 cXDXD R $XDX,X1 B.a c x TXc `Xl n T 3X, $ $X,X, $XDX-X,X5XN.]XlX-X1X-.aX-X, RX, t.O KXHXlXw a.a t.a t RX- a RXI.e., YX# Y $Xl $X,XIXl.9 ` :.}.`X-X- aXI s 8.N.=.s s s 1 $.aX1.~.2 D.0 7 :XxXVXI.H ~Xt ~Xx ).5X*X5",
+"Xc DX.XD.aX-XDX,X- 1 DX5X,XDXDX-X1 $ $ TXcX;.G KX;XJ TXc !.2 $ @Xc.D.~ BXDXIX5 c '.,.GX. DX5.n :.n D T.9.3.2.-XUXUXPXU.2XJ.5.]X9.u c.$.|.A )X9XkXkX@.& Z./.X.XXg N.o.X.b.oXg.o.o.o.o.b.o.o.o.b.o.bXg.b.oXg.I.U.U.cXg.c.U.U.c.U.U.c.U.U.U.U.U.UXk.c.c.U.c.UXk.U.c.I.U.# l.c.U.U.c.U.U.U.U l.cXgXg.o.o.o.X.o.X.o.b.o.X N NXj.kXtXj.kXt.kXt.k.k.kXtXtXd.k F ~ ~XoXkXx ~XV ~ ~.K.8XVXo.kX3XxXx ) ).5XV.H.8XV.rXtXj.^.b.b.X.o.b.b.bXk.o.b.b.b.b.b.b.b.b.b.o.b.b.b.^XjXj.k.^.XXg l l lXg.XXo.H.D g.' y &XfXi %X6 vXw.w.WX, x.jX4 . ....Y.jXJ.aXV.rXV.uXt.rXt.kX*X*.r.u.u.kXtX*Xt.k.kXtX*X*X*X*.8 3.D.kXI.^Xo.8.8 3XK.Y v.n OXLXU.DXVXVXt.r.kX5 qXk.zXkXkXg.rXV.HXGXp.sX>.E.j.'.a ).uXx (XV :X5X5.5 s '.' T.w $ 1 TXl 'Xl.w 3X,X- RXD.w sXyXw.] y.!XP 9.' y s x vXq v.j & H.q.q M HX+Xr MXrXw.1Xw.iXc.aX,X,.} # :.,X3., |.SXM.8.} ~.8.8XI h hX3 V ` h.a.M.M.a.} h h x XM .gX2.pX2.sXsXs.D C CXsX=.v H.!XLXL.n v v vXG xXG sXh s.>Xw z.;.+ zX8.xX4X>Xf.J.; M.@XrX0 HX0Xp H._ U.[ $XKXlX, $.9X,XJ TX,Xc :.a 8XD RXDXD.ZX5X, c.ZX,X1XcXHXlX-X,XD R.aXD.Z.Z cX,XS.' aXS xXDX,X,X5.ZX,XD 3Xl $X1 KXc TXDX,.w.D $.Z $X,X-.% 1 K K m.a a R.aX-X- RX-XIX-.e Y :.ZXNXcXDX,.ZX5XI :XMXI aX- a aXI.e RX,XeXs.W.=XLXLXK s a.a #.5.r.8.`.`.`XI.`.`.rX-.k.5X-XV.5",
+"Xc R xX- RX-.K.Z.Z TXKXIXDX1 RXD RXDX,X-X,Xl.%.,.wXDX, :Xc :.u cXDXI RX,XlXl ' mX;.%XK 3.D $XDXlXDXD 8 8.' m hXyXP !XU ! 'X-.5 D.AX5 )X9 q.A Q.zXx.X lX@XkXgXg.b.oXg.o.o.b.b.o.b.o.o.o.o.o.oXgXgXgXg.b.o.o.U.o.cXk.c.c.U.U.c.c.U.U.c.U.c.U.c.U.c.U.c l.c.c.c.U l.I.U.U.c.c.U.UXk.#.U.UXk.cXg.o.b.o.X.b.oXg.o.X.b.b N.oXg.^XdXt.kXt.kXtXtXt.kXt.kXt.kXt.rXdXt ~.kXo.r.uXtX*Xo.r c.&XJXx (.% 5 D.$.H 3 ~.rXt.kXdXj.X.X.b.b.b.X.X.z.b.X.b.o.b.o.b.b.b.b.b.b.^ eXtXjXt.^.X.oXg lXg.o _Xo.kXVXd.,XKXm n HX4.sX:.@.;Xw =X0 W MX2.y ..<Xm.DXIX* 3.kXtXtXt.rX*XtX*X* 5.5 q 3.5.K.kXtXV.KX*X*.u 3.Z s 1XlXI ~.u 3.` : xX, s.E s.n.!.H.uXtXdXd.r.HXd.rXtXtXd.bXt.uXD.Z.9XG.E & x 1 RXV c FXVX*.`.8.5 $.2 !XPXUXl g.'.].0.' ' ' ' $ 8X,.n gXOXU !.G.OXhX;X0 @Xy.j yXm y HXC.E.E.E ^.;XnXnXn.j.j & [XH., `XM.} 3 $ $.} 1.,.[ V.,X.X3XVX-XV 3X*., |.[ VX3 ` X,XD.a.9 tXK hX,X-.,XBX<.p.[.j.@.s.N.= 8 / G 2 0.q vXs.N 8.M.w s ' nX. sXwXw TXp H z r.xX8.{Xf . . v pX+ y =.; = z.<XpX+X>.j.WXq.- `X,X5 RXDXl.Z.ZXD 8 R R R $XD $XDX,X,XDXIX..2.-XJX-XD c.ZXlX-XIXDXD.M.GXHXwXNXlXDX1X,X,X,.u $ $XDXD.Z Y.' s.DXl $.Z $ $ $Xl RXH.ZX,XH [ aXD aX- R R RXD.~.3.].,XcXl $X5 RX,XD cXcXc.aX-XI a.a.`.e.aX-.* U.nXe.= /.=.E b h.a.a 3.K.KX*.u.K.e R.`.`.~.]X3XXXl.%",
+".~.u.~ RXI cXc 3X5 m.9.Z.Z.aXI RXI.~X,XI BXc., $ RX-X-XcXK.,X5Xc :Xl $ D T DX; DXc.w $.DXc 'X,.D.ZXD 8.w.9 R.0 1 !.>.2.ZXxX1XIXd D.A N.k N.z.$X .b.z.RXkXg.bXgXg.o.o.oXg.o.o.o.oXgXgXgXg.oXg.c.cXgXg.o.o.b.z.bXg.U.U.U.U.UXk.U.U.U.c.U.c.U.U.c.U l.cXkXgXgXgXg l./.U.U.U.U.U.U.U.U.U.cXgXg.o.o.b.o.o.o.b.b NXz.k.^.^.X.X N.kXdXtXtXt.kXtXt.kXtXt.kXt ) qXkXx.rXtXtXtXt.kX*.5X*.K.5.5XXX9.5 ` )X9XV ~.r 3XtXtXjXj.b.o.X.b.b.b.b.z.b.oXgXg.oXgXg.b.b.b.X N.^ e.rXjXt.^XzXz.XXg.c.o.b.^.^X1.5.0.0XJ v.ZXp.@Xf.sXf 0XG v J.@.@.; vXrX, 3X*XV.k.kX*.u.kX*X*.K 3.u }XJ 5 | 5 V.A }.,.A :X* c $.9 1XwXhXD ` 3.H.H c.kXIXIXlX.XcXl.DX*X*.rXtXt.kXdXd.kXtXt.b.k.k.uXD TXK y.Y.wXD.H.H.u.uX9 q.KXV :.% ! Y @X;XyXy.O @Xy.2XU.0.0 '.n '.wXPXy ] !X;Xw ! =.>.>.q.qXCXC w.E.v.s..Xi w ^.@.F._X<X+ =XG.1X<X7 [ ` $ xXD.} $ `XB.[ V | | [.,XJXJX3 `X3XM kX#X# 1XwXJXw., n.9 nXU nX3X#X7.FX7 yXe.=.= O.=.v 0X>.j.nXD B C.* t.9.Z.W.2 RXa.*.w g.j M z w %Xf.J %.. %.s vXn.;XG MX+ M.x y ^.E 2Xe.n.jXl # c.K c c $ B RXD.MXD.ZXD.aXDX- B x.u.3X,XlX,.YX, :XI a.aXD $X1.M Y.,Xl K.9.}.ZX- RX, : x TXl $ a.G DXlX,X,XlXD.Z.Z.ZX,XlX. ` $ R $XD.a h 3.a aX- kXcXl.a R.ZXDX,XDXlXl s m : c a.a 3 aX- a.eX- RX- a t.wXs.W 0.WXn s hX- #.KX9X*.k.K.8XIX-.} R.5 h.]XHXH",
+"X1 T ` : $.aXIXKXc D.DX, $ cX, RX1XDX,X1 1X.XK.' :.w :XK TXJ T D.2.% m.]XJ.] TXKXJ.0 :.n.Z.DXI.w.Z R BXKXOXK.9 ' gXUXJ m.5.8.8X*.kXx.A q.f.X N AXk.&.tXg.IXk.o.XXg.o.cXk.cXg.oXg.cXk.U.UXk.U.cXkXg.o.o.oXg.U.oXg.U.U.cXg.c.U.c.U.U.U.U.U.c.U.U.U.U.cXg.b.o.X.oXg. .U.U lXk lXk.c.cXgXg.o.o.o.b.b.o.X.o.o.X.o.b N.^Xj.X.k.^XtXtXtXt.kXt.kXt.kXtX*Xt ~.k.r.r.kXtXt.r.kXt.k.k N.u.K 5.| )XJ.% 5.$XJX*XVXV.rXt.k.b.X.b.b _.X.b.b.b.UXg.c l.cXk lXg.o N.o.b.^Xt.k.kXdXtXj.^Xz.b.o.b.^Xd.rXd.u.HXIX1.HXIXD 8.jX4.s.. vX>XwXr.j &.j.j 1X1 3.rX*X*.kXt.r 3Xt 3 # IXJ.%.3XHX#X3 }X#X. }XH k VXw.[XGXL M.hXwXH :XIXo.uXo.r 3 : )Xl.].5.u.rXt.kXtXtXtXtXdXtXt N.k.5XoXVX5.Z TXK :X1XV.HXx.r.5.r.u.u (XJ.2.%.2 YXyXO @ !.D.Z.'XPXO.n.0.!.] m.0.n T T.WXw.q o b 0 o.v 0 O.v 2.s ..4.@Xn._X+XB.S.T [Xh.1.h.h.h VXB x #.MX,X, $XK.- xXc IX.X3 T : :XXX3 [.OXJ gX.XJXJ., :.9XK.nXcX, h .F.-Xr vXs 2 2 b J w H ' $ 8 t R.wXDXKX.XD UXDX,.M.w.9 H 9 M.;Xf ^ {X:.<X4 p.@Xp.Y &.+XqX+X> z.@X> O OXe.Y.[ $X5XM.5Xl.M RX,.ZXDXD.aXDXD.a tX5.9 :XNXD R.aXDXI.MX,.a BX- h R.e.%Xw.Z KX..ZXDX,X,XDX, xX,XIXcX5Xc 1XD : 8 $ : $XIXD $.aX,XD.Z.}.a.aX-X-X-X, cXcXJ $XIXD.aX,X,.aXD 1X.., :X-X1.a a tXDX-.`.a.eX-X-X- < R.i xXG.= O._Xq.a h.8.8 3.8X-.`X-.`.~ R RXIXDXK $",
+" $ D ` T ).2X1.%XHXH TXcXcX5.- RX-.DX1.ZXO.2 g gXcXO m gXU.2XJXUXU.2 m DXU g DXy gXwXO mXc.'.D $XD.M 8 8.'.OXU T mXP D.KX*.8.uXd.k.k.I P./XgXg.XXg.I d.I dXk.b.c.c.c.U.#.U.cXg.o.c.c.U.U.U.U.U.c.o.b.X.o.UXgXg.oXk.UXg.o.c.c.c.U.U.c.U.c.U.c.c.U.U l.o.o.o.o.oXg.I lXk.c lXg.o.o.X.o.b.o.X.o.X.o.b.o.o.b.o.oXg.X.b.k.XXj.k.r.k.kXt.kXtXt.kXdXtXt.r.X.r.HXt.kXdXt.kXtXt.k.k.5.u )X9XMXX :.K :X9.5.KXt.r.rXj.^ N.o.X.o.X _.b.X.o.zXg l lXg l lXg.b.X.o NXjXtXjXt.r.^XdXdXj.^XjXjXj l (.z.5X9X5 cX5XV : $ XwXnXpXw.9.}X,X,XDX,.H 3.8X*Xt.rX*.kX* #XXX3 V }XZ.S : : `XHXJ.,.-XcXH `XX.[Xw.jX>X=.. z.YXHXM D.2.2 ).| FXIX*XI.~ DXXXtX*XjXtXtXdXtXdXtXt N.k.K NX5.r.HXMXI TXI.H.`.H.H ~.k cXV.8XIXI.H 3 cXy g 4 (XD.k cX5 gXPXPXP ! :X1.DXI 8.9 ! & 0 O.= O 2.W 2 /.v.vX>XfXnXb p E 1 x $ 1.j y.pX%X<X<.[.9X3 hX,X, $ U h.-.[X3Xh 6Xw.,Xl.9.' x $X,X,XDXIX-XDXI.~.a a 8 RXDX, # `.FXwX+XG 0 2 O &XC s s s BX-.ZXDXJX,.9XD.a.wX,X,.Z sXmXGX0X0 ^.P LXf.C.CX2X4.... MX2.j.h &Xp.@.E O.s vXp.w h : xX1 RXIX, hX, RX,.MXI R.MXI.a.}.ZXHXSXHXc 3.MXD :.a R.M R RX,XUXJ x.9 : xXlX, $X,XD cX,X,.ZXlXl R.a.Z $.a R.Z xX1XD $ $X,XD $XDX,.Z x $ T x.G xX,.M.a R.aX,X, :XJXlXDX- R.a a t.a RXD.eX-.`X- RX-X- a.K c hXe.W O v h RXI.`.`.`.`X1.8.`.`.` F.~ F.u m",
+"XV 3.Z c $.ZXD.9Xy DXKXKXK `X.X1 RX,.Z gXc.nX1Xs.Z.'.2.0 D.nXlX5XU ' '.0.'XKXU.0 x.D.Z ' T.2XK., xX1.M.w.nXU g mXyXVX5X* ~XtXtXt.k N NXk.X.o.XXgXg.o.zXg. .#.U.c.U.U.U.U.U.c.cXg.U.U.c.U.c.U.cXkXgXg.o.o.I.bXg.b.c.UXg.oXg.c.U.U.c.U.c.U.c.U l.U lXg.o.b.o.o.oXg.z l lXgXg.o.o.o.o.o.o.b.o.o.o.o.o.b.X.b.b.b N.XXg N.X.kXtXdX*Xt.kXt.k.kXtXtXtXt ~Xo.X.rXtXtXt.kXtXt.kX*.kXoX*X3.$ ` )X3XXXM ` :XX.XX*.k.k N.b.b.b _.b.b.XXgXg.IXg.c.c.c l lXg.X.b.^Xj.kXtXtXt.k _Xo.^Xd e e.^.XX@.R.7 I f ( I.$Xo D `.,.TXw.jXD.} 3 3XDXV.H.r.8XVXtX*.rX* c.5XJ V k V.[X#XJ T.-XKXK.9XcX.XH., VXB [ =X>Xi.s .X+X+ U.M.ZX5.HXdX5X*XV 3 DXl ).r.kXt.^XtXtXtXdXtXt.k.K.kX*.k.^.k.k.rXI.XXV.H.H.H.8 ~.8X*.`.u.HXoXJX*.u.D ) 'X5.uXV.u.uX5XPXP.]X5XIXI.HXIXD s &.E O.=Xn.WXL.s.NXs.s 2 ^.@Xn._._ < 3.} <.ZXlX+ WX%X7.SX<.,Xc.ZXD RX,XDX, $ $ 1Xc.3Xl k.' x h $.MXD.M 3.Z.uXIXIX- B.a B RXD.a $ ` .[Xw.j.q oXC &Xm s.nXDXD T., xXlXDXD a.Z x.Z R U T '.!XC M.;.C.P.4X8.CX>.<.@X0.;X0.>.OX0.OX0.E.E ^ 0XpXc v xXD #.Z $XDX, R.MX,XD t.a.a x.M cXe.a x $ < 1Xl.} t 3XDX-XIX,X,X,XD $ s.M.M $ TX, hX,X,.Z.e c $ :Xl $XDXlX5XD.a.a h.uXDX, hXlX,XD.M 3 x 1XcXD $.ZX,XDXD RXD.,Xc m 1.MX1 RXI RX1 a R aXIXDXD.~XD.~XI RX1 #.KX-.'XGXGXLXGXDX-XI.`.~.8.8X-.` F.8.~ F.`XI.5",
+".u.D.u.HX-X1 R.' g.9 8XlX1X, h.}X1.u D.2 $X1XDX-X1.,.' RXI $XV : DX,X5.Z.D '.]XlX1X1 $XDXD T.' m VXDXD s.w T @.O 4 D.uXV.rXtXoXd.^.XXg.oXgXg.b.o.oXg.QXgXg.c.#.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.cXgXg.o.z.o.o.oXgXk.UXg.oXg.c l.U.U.U.c.U.U.U l.cXk.b.o.X.o.XXkXgXgXg.o.b.b.o.X.o.X.o.XXg.X.o.b.o.o.o.X.o.X.b.X N.^.XXtXt.k.rXdXtXtXtXtXt.kXt.rXt.r q.^.k.k.k.kXtXd.kXtXo.K.uX9.K :X3XX ` V I V q ) N N N.o.X.b.b _.b _.oXg l.I l l.U.c l.c.o.b.^Xj eXt.kXt.k NXo.b.bXo NXz.X.X.z.z (XkXx.5.KX9XlXl 1Xp n UXD 3.8 3.H.Z.HX1.r ~ ~X* #.8 V.,XJ VXBXBX3 .9 Xl.YXJ [XhXHXwXMXB.[.[ MX>XiXbXA.xXr 1XUXK T.0X9Xx : |.5.G.2X9.r.kX9.z NXt e.kXtXt.u.k.5X*X*Xj e eXt.r ~Xd.H F ~ ~ ~ ~.`.u.u.H.8.k.uX*.u ( Q.2 ) ) ) ( (X9.5X1.H.HXI 3XVXI 1XGXG ^XpX>.9XeXw $.9 &.v.BX>X4 pX,.M.}XI.a.Z.j.+XpX% rXZXHXH K 1.DXD RX,XDXq.w x x.} 3 Y.SXlXH.a.M.M.u.uXI.HX, BXIX-.`XI RX- R $Xc s.,Xw.EXG.qXm b.n.'.ZXIXDXc.'X5.eX, RXl $.Z.aXwXw.YXm.!X0.; wX6 L.{ ;X: M S = M = H &.O.>.OX0Xh zX> vXpXC._.Z $ $ #X,X,X,.M.} R <.M.a U.}.a < R.} <XDXM 1 h.ZX,.a.M 3.wX,XDXlXlXl.ZXDXD.MX5.9XlX,.M $ h a.M $.Y.Z x `XD 3 $ c.aX,X,X-XIXDXD xX, $.GXK k.aX,.M R c R.9.9X.XKXKX,.M RX-XDXKXc.Z.Z 'Xl.,Xl m., :.3 #XI ~.~X1X,XUXeXLXL s.* B.u.uX-.`X1.`.~.`.`.`.~.H.`",
+"XJ D DXK T T $ D T.% sX; x.OXD.uXDXJXJ c.DX-X1 B $ m.K RX-.~.Z 3.].DXDXD.Z.D.]XK.D.D.2XV.9 c.a :.9Xl s.w.9XU.9 DX; ).u.r.KXtXt.^.X.o.X.o.o.bXg.bXg.#.#.c.U.U.c.U.U.U.U.U.U.U.UXkXg.cXgXgXg.o.oXgXg.b.oXg.U.o.bXgXg.c.UXg.bXg.U.U.c.c.c.U.U.U.U.U.U.UXg.o.o.o.o.UXg.bXg.o.XXg l.z.o.o.b.o.o.o.X.o.o.b.b.o.b.^XjXj.^XtXoXt.r.kXtXt.k.kXj.kXjXt.kXt.kXt.kXt.u.r.k.rXd.kXtXt NX*Xt cX* cX* cX*X*XXX*X9.K.X N.X.b.b.b.b.b.oXg l.UXk.I.c lXg lXg.oXz.^ eXtXjXtXtXt.K.X.b.X.b.b.b.b.X.b.XXoXo.k.r.kXV.8XVXl 1.} M 1XGXD 3 3.8.HXI.H.8 ~ 3 3 )X3 DX3 `XM `XXXB h x.Z x 1XHXwXKXl UX, h MX>Xi.P ^.{.j H.9XK.5 ) D.K : :Xl D.u TXx q N ).kXt.kXk.^.kX*X* N.rXjXtXjXjXtXt.H.r.uXd.H.`.8.` 3.H.`XV.H ~.u.rXt ).R.f 5.$ IXJ IXJ I c #Xl qXIXIX, v.Y OXp = t n t.3 xXG.T H ^.{XnXe._ t.a c.~ R aXG.jX2.g.TX#XHX.XK.HX,X1XD R x.w.}X,Xl.a `X# }XH :Xl c 3 3X-.8 $XV RX, 3 3XI RXc.]Xw D =Xh.+ 9 v.n.n.n 8 RX- D $ : s xXDXc.wX,XDXw nXh g gXm.;.;.@ L.4X8 S.y S H HXm.>.>X;XOXwXwX+ =X0 =.; ^Xp.s.w U h.i x.9.W t.d U t.i x U h U.MXq._ x.i.9 k $.aX,XD.aXD R.a.Z x.wX,XD $ x.w 1XK.uX, x.ZXI tX5 $X5.Z 3XDX- R xX5 RXD R.MX, R x tXlXU.a $X,X, nXwX..-XJ h $.ZX, RX- RXVXcXK DXc k.9 : :XK.5XMX, R.~ B.`.~X1 U.> = bXm gXl : : D.].$X5 RX1.`.~.8X-.`",
+" T :Xc.0 T D gXUXKXD $X,.w $ sXD D.2Xl RX,X1.a aXcXK.Z.~X-X1X-.u D RXDXDXIXIXl.].ZX,XUXK T $.n.'.w.'.n.9 g.wX1.a 3 ).,.f.X.k.k.b.X.bXg.o.oXgXg.c.U. .c.U.U.U.U.c.U.U.U.c.UXkXg.o.oXg.oXg.oXg.oXg.oXg.bXgXgXg.X.bXg.c.U.cXgXg.U.U.c.U.c.c.c.zXg lX@.QXg.b.X.o.X.z.bXx.z.^.X _X@.o.o.X.o.X.o.b.X.b.X.o.b.o.XXjXz.kXt.z.z 5 (Xt.K.rXtXjXtXtXt.5 q IXt.kX*.k.k.kXtXtXt.r.kXtXx.u.kX*.kXt.r ).^.kX*.o NXg.o.X.b.b.b.o.b.o.b l lXx.U.I.z l.UXg.b.X.^XdXdXtXtXdXt.k N N.b.b.X.b.X.b.b.b _XoXzXdXd.k.r 3.8.K 1Xe yXn.@._.M.}XDXI cXIXI 3.8XXX3XM :XX : x x h h h $ x : :.SXc 1 R.WXDXe hXBX+ W.<Xi ^ .X> JXG x tX1X-.8.H FXV.`.HXI ) (.2 )X9.KXtXxXkXkX*XtXo ).k.kXtXj.rXjXtXV.8 ) D D.9.9 T $.kXDXo ~.8XV.r.kX9 ).X.]Xx ) :XX ` [XZXZ.SX5.HX1 3XDXG v O v.M hXD UX,X, v J.PX> ..m U <.aXI.} RX- E.iX4 WX% k.Y `.Z.Z.DXD.D.M.DX,.MX, : c 3 `.] D V.3XK | $ ` R R 3 R.u.a.ZXD c VX3X#.1XH.G.OXm.O.'.w R.~X5XD.9Xl xXZ.wXH.-X.Xw gXc 'Xw sXC gX0.4.C.JXn.xXn.y zX0 o.9 yXm mXP ' gXP g.T.+ HX>X8 v.dXeX,.w.iXrX+XqXq.<XAXr.<X4XqXq.mXp Xp 1Xq x.YXl h RX,X-XD RXD.a 8X, x $Xe $.wXl $X5 'X5 T : TXl g.-XU D.wXD.Z R R.a RX,XDXIXDXD.Z.Z R.a.a R.aX-XK.ZXJ $X, $ $ #.M c h R.aX,XD RXD 3XD R.aXIX- cX- RX-X-.`.~., TX.XZXm.O [.>XJ ` :X9XJ.5.`.8.`.8X-.8.`",
+"X1 BXIXD RX,Xl D.2X, BX1.eX-.e.Z m $X1X, R.* R.ZXJ :X- R RX1 3.DXJ $XJX,X1.e.Z.] :XDXDX; T.'Xc.9 gXPXU m x.uXD.aXI ) 5 5 q.^Xk.X.o.o.o.o.o l l.U.#.I.c.U.c.U.c.U.cXk.UXk.cXg.o.o.o.o.XXg.o.b.oXg.b.o.o.oXg.oXg.o.oXg.cXk.cXg.U.c.c.U.U l l.U.z.#X&.X.b.o.X.o.bXk.o.&.(X .t Q l.XXg.b.oXg.X.z.& A l.b.o.b.o.b.XXjXt.5Xo.H P q.r.k.k.k.r.kX*Xx.k Q.|Xt.kXo.u.k.u.k.k.k.kXtXoXx.k.r.r.k.X.z.^.XXg NXg.^ N.o.b.bXg.b.b.b lXgXg.o.z A.I lXg.b.X.b.^XjXjXt.kXtXtXt.kXd.b.bXzXg.b.b _.X.b _ _XdXtXtXt ~ 3XVXD.NXn.).v.EXp s 1.'.0.'Xl x V V :XMXl 1.ZXD.} hXD.M.}X. sX. h.M R 8.Z $ $XlX7X7 WX+Xi.@Xf.E..XG v.aXIX-.H.`.H FXV.8 ~.8.uXo.$ I.$X9.K.KX9XtXt.z q.rXtXt NXtXt.k.rXVX1 $ $XK DXKXKX3XV.8.8.rXjXt.k.R ( 5.| D 7X3 IX#X#.SXhXc T 3XV 3 3XG b.s.s.N C R R R C._Xb ^.@.. E x < <X-.u a R UXe.F.pX7.9 V xXI 3X,XD.M.D U.ZXD x 3X5 cX1XVX1XD.a : m DXH :XD.uX-.uXD R R.a cXXX3.-XwXU.9.9.w.ZXDXI : D.| $X, xX.XwX.XwXK T DXK o.n.q.O & S.4X6.@XnXrX2.LXh zXm s 9.' T :.0.D g T.!Xh zXfX2 S.YXn x U U .XqXAXA.d.m.m.d E.m E U.d u E u.M a.M tXD R.aX1.aX,.M.a h h $.wXl sXl $X5X,XDXcXJXwXUXJ T.9XK x 1X,.a.ZX,.aXI.Z.a.Z R.ZXD UXlXD R R R RXKXlX,XD RX,.e.ZX- R 3Xl RX-.aXI.a.aX-XIX-.a R $X, a R.eX- 3X3X5.w gX0 M oXpXH h RX1X5.8X-.`.`X-XI.~XI",
+" R.eXDX1 R BX,XJXK.0Xl.w.9 'Xl.0X..] 'XlXK.ZXl xXJ.w RXI BX1X1.ZXJ.Z.2Xl.]Xl sXc g $X,.' TXwXJ !.GXOXU mXK DX3.].8X*.k.k.X.^.X.bXgXgXg.cXg.U l.c.I.#Xk.U.U.U.U.c.U.c.U.UXg.o.b.o.X.oXg.b.o.o.o.o.oXg.X.b.b.oXg.b.o.o.c.U.c.c.U.c.U.cXk.U.U.zXg.: Z.bXgXg.b.oXg.z.^ f.X.(X XzXzXg.b.oXg N.oXg j.IXg N.o.^.b N.b.k.k.XXtXo ) 7.k.kXtXt.kXt.I q.r.k j q.k.R PXx.kXV.r.k.kXt.5 ,.& f.AX@ ).X.o N.b N.o.X.t.(./.o.o.b.oXgXgXk.o.RX@X . Xg.b.b.b.b.kXtXtXtXtXj.k.rXt.k.XXzXg.X.^.b.X.^.bXz.XXz.kXt.uX*.8.DX1.n 0 /.W.. vXL J bXL b.9X+X3 .lXM.} cXD.}.Z h <XcXHXl x R tXD.a.Z $.wXlXB.-Xr W.j.CX6 .X> v.Y xX,X-.8.`.`X1.H.`.8 3 3 ~.8XVXo q.& q.r.r.k.kXk.zXt.k.^.z.kXdXdXxXo.k 3.8.} 3 h 3.`.8.rX*.rX*XtXtXx NXxXo.k.5Xo : 5 m DXcXD.8.8.8 3XI.jXw v.).WXs R C.a * vX=X4X>.jX4Xq <X, #XIXI.a U EXqX%X7 .Y 3 $X,XI.ZXDXDXD.ZXD 3XI cXV 3X5 R.~X5.u $Xl :XI 3 BXI 3.H RX1.aX- hXX [ nXw s.w.n.a RXIXIXJ ' c $.w UXD h RX1 $.Z.D.ZXG.j.> H.4XfX4 vX+.j.;X0.+.+.jXm.9Xa $X, sXl.DXU gX0 M.; H.@XnXG x s E E u <.m E <Xq._Xe u < UX,.}.M t t < t.aXD $ h $ $ $ $ x $.W xXl : :XK : $XD.DXD.Z x h h 1X,.a $.Z.a.ZX,X5.M hX1X,.aX, hXDX, 1.eXDXDX, a.a R aXD t 3X,.a R a $X5.Z.eX- RX-.aX-.aX- a x ) 1X-X1 a.8 c.eXD v.! b b v.9 `X1.HXVXVXI.`X-X1X-.`XI",
+".3.eX5 $.~XI $.,.2XK.2XJ DXc D ! mXJXUXc gXc ! D TXKXl.0XIX..e.5Xw a RXcXwXP 1 m.OX. mXKXHX. mX.XPX5 $X5Xl :.5 qXVXVXd.k.^.X.bXg.b.bXkXg.z.U.UXg./.U.U.U l.U.U.U.U.UXkXg.X.o.X.oXg.bXg.o.o.oXg.o.XXg.o.o.o.b.o.o.o.oXg l.U.U.c.U.U.U.c.U.U.cX d jXk.U.U.b.b.UXgXgXx.b.7.RXgXg.XXg.bXg.bXk.o.:.X.bXgXg N.^XjXtXdXtXo.k.k 5.7.K.rXtXjXt.k.K q.KXo.fX$.kX9X9.r.k.kXt.k.r.K.z q.k.:XoXt.^ N NXz.X.o NXg./.7XgXx.U.U l lXkXg.(X&.I.7.z.o.b.X.X N.^XtXtX*.rXtXtXtXt.^XzXz.XXz.XXz.b.b.b.b.XXo.k.k c cXVXD 8.' 2.W.s.)XG v 0 O 0 0 2.@.[ XM c a 3X, cXc hXK s $.a R.M.a h $X,X5 $XMXc.-X%X% MX>X4 HX>.j.Y 1 3.u.8.`.`.`.HXV ~.8.8 3XI.H.H.rXo.^.kXjXt.kXt.X.r.^ N.zXj.r.^.zXx.K.K.uX* 3.r #.rX*X*.rXtXtXj.k.rXdXoXdXdXdXdXo P.0 ) : : )X9 )XJ 3XJXr.j 0.=Xs.* <.W.N.. v.E.@XqXe x $X-.uX1 c B U._XqX2X+ XB hX5XD 3.ZX,XD UXlX, 3 R RX1 3X1.u.ZX, aX-X5 R R cX1.e RX- BX, 3XI.i `Xc., nXU v.w 8X1 T $XVX, x.ZX,.a.Z R.Z.D c.Z.w.Z s.'.+X0X>.x.+.1 =Xc.< 0X2.;.; 9XG.9.nXDX,.2.Z.w y & =X0 &X> v v.W hXn.[X7Xq._.F >.pXBX+.a.MXDX1 R R t.a.MX1 t.M c.MX, $ $.Z.MX, h $ $Xl : x.9 :XlXDXD.Z.w : 1.MXM x RX,XlXD.a $.Z.ZX1XDXD h.M.Z h.* $.ZX, $.Z $X,X,.} R.aXDX, cXI.} T kXJ 1X-XIX-X-X-.~XIX- : D T.,Xl D.a.K $ RXaXLXC.q o.9 !XD Y $ ]XX 3 D.5.| T I",
+" 3X-.~ 3XD R T D $ :XDX5XI.Z $XJXl BX,XDXDX,XlXw sXl T.9XJ.] :Xl.,X,X, UXD.D.Z $Xw.9.0XcXJ gXw.]X1X1.`.`X-.8.8.8 ~XtXtXoXg N.o.oXgXg.UXg.U l l.U. Xk.c.UXk.U.UXk.cXgXg.b.o.XXg.X.o.o.X.oXg.X.oXg.o.o.b l.o.o.o.o.o.b.V l.U l.U.U.c.UXg.U.U.IX&Xu.:.#Xg.z.zXg.U.oXg.X.o.:Xg.o.b.oXz.cXz.o.b.z j.bXg.zXz N.b NXt.k.r.X.uX@ ) j.X.KXtX*Xt.k.k.k )XxX9.$ 7 ) N.k.rXt.r.u.k.k.5.k.5.:.k.k N.o NXg.o N l.X.(X&Xg.UXgXg.cXg.U.6 jXx.z A.o _ N.o.b N N.^ N N.^.^.K.^.^.X NXkXzXoXg N.X N.b NX Xk.5 ).u $.5XIXa v.=.WXeXs =XG.jXCXpX=Xb.@.[ x hXM : xXc x T t R 8 RXIX,X,.ZXDXl x ` `Xw [X+ M SX0.;.T nXKXwX3XcXl.`X1.`.`.H.8.8 ~.8 ~ ~XV.k.u.rXtXtXtXt e.X.r.kXt.kXtXd N N.X.rXdXVXtXVXt q.5Xt.k.k.^X*.k NXj.kXoXtXt.rXo.r P.|Xy ( I : PX3 q kXS MX> 0.v.N.NXD.s / ^X>XnXe p h.M.}XI cX5XIX, h._._X<.gXB XM .}X,XM U RXl 1X,X, RXIXI 3X, 3X- RX1 R.}XD 3XD R RX1.a R :XlX,.aXM.-.YXw y 1.nXD.D ` DXDX5 RX1XDXDX1X,.u.HX,.Z TX1.> o.+.h.y.y [.[X, 8.WXn.C S M.; & 9XG.'XU.w ' $.'.0 9 MX0 &Xm.9.9.Z.iXqXp UXe.iXeXq x UXDX1 RX- $X- R R.M.} R.eX,X5Xl t R h.M $ U x #.iXMXM 1X, $ ` x hXD $.n TXD x 1 U 1.Z.aXD x c.MX, t $ tX, x.Z xXK.a.MX,.aX,.ZX,XDX,X, h $.M.a.9.G.,XK : `X1 RX-X-X-X-XIXIXlX3 )XJXcXcXUXwX, UXK.EXG 2 ! g T.% mXJ D YX3X3.]XH",
+".~X1.e.e.a c D `.`XcX1X..DX1.u m $ hX5X- 8.a.'XUX, R.e aX5 # c :.- $XJ.Z :.Y g.w gXc TXw.0.%XlXI.8.8XI.8.r.8.u.8Xt.kXt N.oXg.o.oXg.c l.#.U.z l.z.I.U.U.UXk.U.z.UXg.X.o.XXg.o.b.b.oX9.o.bXg.o.oXg.b.o.o.U.o.b.o.o.o _Xg.c.U.c.c.c.c.I.U.cXkX&.U.I j.t.I l.U.U.I.UXgXg./ jXg.bXg.oXg.o.b.b.b.(X .b./.f.oX9Xg NXt.kXdXoXxX9.k f./ ~.^Xt.k.r.r.k.kX9 N.r f ,XtXt.KXt.kXtXV.kXo.kX9.7 ~ N N.X.b.b.^XgXkXg.7./.cXg l.UXgXk.o X.(Xg. .X.b.X.b N.^.^ N N.K.k.kXt.kXj.^.^.oXjXg.b N.X N.o.XX9.& 5 PX..3XwXc x ! vXs.NXe.[XG U n nXq.) 0XiXrX+ $ # 3XD 3.Z CX,XDX,XD h hX,XDXD # cXX k y.xXp.<X2 H.;._ x x.w.uX5.`.`.HX-.8XV.8XV.8.5X5.8.HXt.K.kXt.k.k.r.X.kXt.rXtXdXtXt.rXdXd.r.k.r.kXo )Xt.r N.^XtX*Xk.zXtXtXx.^Xo.X.XXx.X.5.X.0.X.5 (XxX5X; KXh.+.@ M . v.s .Xn.;.xXGXq 1 1.}.a.u 3XI.~X-.YXH [.T.T.S [.S.S., 1XH `XcXH ` x R.aX1 RX,.uXDX-XI.a R R RXDXD.e.a RX- RX, 3 cXDX,.,Xc [ g s.Z y.wXDX,X,X1XDXD R.Z.ZX1.D.ZXD $ gXw.1.+.h.TXfXp x.9X1X,.W vXn ..+ MX0XC bXL.nXKXl $ gXwX0.> K.j o.Y x.W.M U.w U E xXe.M.ZXD R RX1X5X- RXDX,XDXI.MX5 1XlXIX,X, $X, $.Z xX,.}X, $ 1 : x cXl 'XDXI.Z 1XlXD $XKXK.YXK t.Z 1XDXI.M.D h $ $Xl $ $.' R.MX,X,.MX,X,.ZX, $ $Xl $.Z x hXJ.2X. : :X1X- R.`X- RX-X1 RXD Y.'XJ.-Xc 1._.j b s 2XK ` $ c.H 3 3XIXIXI.0",
+" R.e.u.Z.~X1 D `.DX-X-X- B c.2 :X- $.ZX, aXlX..wX-.ZXD RX. kX.X#.] a.*.a.M 8X, x s.2 gXI $XDXD.`XI ~.8 ~ 3 F.r.k.rXd.bXg.bXg.b.U l.z iX XuXuXuX i./.f i./.I././.I.U q.U./.^Xj.^.o.b.X.o.bXg.o.o.o.o.o.U.oXgXg.cXgXg.c.U.c.U.U.U.cXg.U d. .U l l l l.U.c.c.z.I.U.U.U.c.o.X.bXgXz.b NXgXg NXz N.b N.o.kXjXjXj.kXd.^.kXtXd.k.r.rXkXtXt.kXtXtXtXt.kX*.k.kXt.kXjXtXtX*.kXt.5.kX9XxXxXx N.b.X.b.X.o.b.o.I./. XkXg.#Xg.UXg.cXkXu.t./Xk.bXzXd.^Xj.k.^.kXtXtXtXtXj.^ N.^X XzX ].t ]X@ ,.f.f IXJXJXl nXwXU v H.W.).M <.MXD.M v.M.).W..X4 W.p x x.} 3X- aXIXD.M.M.M.M.}.aXI R R.a.a.a # XcXpXp.s v.s pXi.@.E.Y.M RX1XIX1XI.u )XV.5.2.R :.^XVXt.rXt.r.r.kXd.rXoXdXVXd.k.r.kXtXt.kXt.rXdXt.rXd.kXtXd.k.rXtXt.kXtX*Xj.K N.f I q 5.RX9 ).5X5.5XxX5XdX.Xw H ^X=.@ 2 ^X> H.4Xi >Xe.d U U.a aX-.`.~XI.Z.aXq U x .[ [.T.- [X3 .} h.}X, $ 3XDX1 c c.2 $ `., `.9.,X5Xc ` ` B.aX1Xl : $.aXD.a `XKXcX. yXU.'.D.D.MX-.a.a RX5 3XIXD.HXD.D.wXlXa '.EX0.;.@ E n.- ]Xc.>Xq.xX4.<.. 0 o.q & &.nXw T gXUXm & J OXGXL.w $ x 8.DXeXwXw C U.M RX,XIXDXDXI.Z 3 $.ZXKXDX5XDXJ T., g mX..- nX..,X.XJ $XD.a.}XI c c h.,XJXJX;X.Xc U h T xXD $ U $.MX,X, 1 s $ x.w T $X- $ BXD RX, R.- 1XK 1Xc `XK :X, R R 3X,XI.5XH c RX-X-X-X-X-.uXVX-X- R t UXKXwXhXw <.a.a c 3X-.~X1X1X-.` 3",
+"X- B 5 $ R R D.0 3XDX-X1XD.2 T 3 B $ :Xc.2XH.GXl., TXlXc.aXIXJXH kXc `.wXD R.w.w TXU.ZXD.uX1.8 3 ~ 3.8 ~ ~.rXt.k.k.k.^ NXg.o.c.U l.#XuX X&.fXuX X X X&X .t./X .t.(.t.t.&.tXj ~.r.XXg.b.XXg.o.o.o.o.oXg.z.o.c l.U.U.U.c.U.c.c.U.#. .6 i.I.c l.U l.#Xg.U.U l.#.U.U.UXkXg.oXg.o.bXg.oXg.o NXg.o.X.o.o N.bXjXt.k.kXt NX5.k.kXj.k.IXk N.rXt.k.kXtXt.k.^.r.k.k.kXt.kXtXt.kXt.X.kXt.r.kXt.^ N N.o.b.b.o.b.b.zXg l lXg.U.cXg lXgXg N.z.^.b.^XtXtXt.rXV ~.r.r.r.k.^ NXg NX@ d.| A ] ]X@.A 5 5 ) TXKXUXy oXpXe.) U <.MXeXDXeX, xXD UXe .XiXp.j.FXq 3.}.aXI.aXD 8XDXD.a.MXD.M.M.MX-.a.aXM xXcXwXGXn p %Xb.v.. 0XGXGXq.aX1XI.u c D T ) :.HXI ~XI.r.u.k.r.kXt.uXtX5.k.k.rXV.u.r.HXd ~Xt.k.kXtXjXt.rXd.r e.kXt.kXt.kX*X* N.kXVXt.H.5.5.5 )X* '.u T.5 '.2X0.E 0XbX= 2.@.@ ^.{ pXn u < < t t.a.~ RX1 $ B.uXDXl.iXp.-.Y.- k.g k.9 h hXD $ R RXD $XlXHXJXcXJ YXJ D.- m.9.9XI.a.a c 3 $.a R.a #.Y `XwXOXh !.w RXI.M.MXDXI #XDX1XIXDX1.Z.'.nXG vXG S MX>._ hXKXlX5 sXw z.1X2.x ^.@ &Xm.OX;.ZXD xXPXy &Xm O.=Xn.wXe.w BXD.ZXc.' 1XD RX,XDXK.e 3XI.a RX, h.a 3 x 3 $XcXc k.-.'.9Xw.9.n.wXl $Xl $X5X, < c xXB.9.w.[XG x.a.MXe.-.MX,XD 1XD $Xl.' x 1Xc.- x nXc.-.9 kXc.,XJXHXJXJX,.Z xX,.Z.9X, 3XV `.8 : )XV ).uX-X-X-X-.5.e RX- R R.M.WXs y o o.9XqX3XJ.u.u.H 3XVXV 3",
+"X1 RXK DX5X5 :.]X1XV BX-.5.2.ZX1 R $ $.Z TXw m s T.'XlXlXD R `XKXDX,.9 T.-XU.2.2.2 $X1XDXV.` 3.8.8 ~ ~ 3 ~X*.kXjXtXj.^.o.b.oXk.c l l l l.U.U.#.I.z.I.I.z./.U.zXkXgXxXk l.^ q F.^.o.X.o.b.oXgXg.b.o.oXg.cXgXg.c l.U.c.U.U.U.U.U.U.I.#Xk.U.c.U.c l l.c l.c.U.I.U.U.U.UXk.o.o.XXg.b.bXg.o.b.bXg.o.X.b.X N.kXj.kXtXt.5.^XdXtXtXt./ q q.kXt.kXjXtXt.kXjXjXtXj.kXj.kXjXt.kXtX9Xt.kXtXt.kXt.^.b.X.o.b.b.bXg.c.c.cXg.c.c.c.U lXgXg.o.z NXjXjXjXt.k.r F.8Xt ~Xt.^.X.b.b.o N.^XdXd e.HXt.5.kXV RXI xXL s.NXs.) U t h 1X,.w $Xl.W hXe.sXr.WXnX+.Y x.l.u RXI R R 8.M.M R.a.M.a R.a R.a < h x .YXrXn.sXb p %XiXb 0XnXwXm.Z s.G.2XlX5.uXV.HXI.H.8XVX*.rX*XtX* ~.H.r.u.H.DX5 :Xo.u.`.H ~.HXtXtXtXt eXj ~XjXd e.rXt.k.r.k.5.u.kX5.8.]XJ 5 f T 5 D f.0.%.2.>XCX6Xi LXf ^Xi.sXf p . E U u.Y a tXlXJX5.5XD.Z k RXlXpX< [.[.Y.[ [X7 `.i.a.MX5 x.Z R.aXI xXlX5.a.Z hX, RXD.a.a t 3 R.a RXD R.a 3X, V : nX.XKXK sXD R.a RX,X,Xl.uXDX5XD s.'.nXG y.j.qX0.;.EXq x UX-X1X1XD 1 UXr.{.; S.> &Xw.Z.a aX,.O.O @ & o O 0XnXL $ $X-XD x $.i.Z.9XD hXK :X,.a c a.2XcX5 c $.Z :Xc R $ RXD UXl.ZXe.D.Z.W.a.a.} h x UXc xXn U.w.W.-.M.M.}XK RX,Xq s x.Z x sX..9XcXKXcXJ :.9XlXH '., $.9X,.MX,.MXD x., D mXl c )XIX5 D.u :XIXI )X3.8XDXV.Z.}.D.WXL o O 0 O b.E :.8X-.`.`.`.`X-",
+" R B $ RXIX,.] TX-.ZXV '.2XJ.].]XcXK 8XD.ZXl.'X;.'.D.Z $.'XKX;.9X1 R RX5XU.]XU @ m ! D D DXV.8 ~.r 3.r ~.rX*.k.k.k.k.k.b.XXg.U.U.U.U.U.U.U.U.I.z.U i.f.UX .tXgXkXgXg.X.X NXz.^ N.o NXgXg.b.o.o.c.o.o.#.cXg.c.U.c.U.U.U.c.c.c.U.c.c.c.c.c.U.c.U.U.c.U.U.U.U.#.UXk.cXgXg.o.o.o.o.o.oXg.o.o.o.b.^Xj.k.^.^XjXj.kXtXt NXtXtXd.kXtXk.X NXt.kXt.k.kXtXt.kXj.k.^ N N.k.kXjXjXt.XXt.kXt.kXjXt N.b.b.b.b.b _Xg.cXg.c.U.U.U.cXg lXk.o N.zXjX*.^.k.k.rXd I.H.H.r N N.b.b.b.b.XXdX5 e.0.XXxX9 5 : :.'X0 s.!.jXL.9 x [ 1 h x.ZXeX,.W.w & 0X>X=._ >.j x 1.}.}XDXI t R.M.M R.a $.w x <.}.a.} x 1.Y XrX+ 2.mXb.B {Xb.v J HXmXUXw Y.3 D.0Xa.HX1.5XV 3.8.8 ~.uXV.8.HX1X5.D $ D g D gXJ T.D.8.u.r.^XtXtXtXtXtXj.rXdXtXd.r.k.HXoXo.u.`XIX5 : :.0 :X9 :.0.K.2.>.>X0.h.4.T.4X: w.4 S.4X%._._.WX%.* <X,X;XlX1.e : } xX, 1 k.-.1Xq.YX7 [ `.- c h $.M $XD.a.a.D 3 h R.aX1X,XDXD.a.MXI t.M R 3 3 R.ZXD.aXKXB VXwXcXP $ sX,XD h., ` m.,XDX..w sXG J HXr &X0 H oXpXp U 1 RX1X-XKX,X% % ..h wXC s sXDX, 3X5XG.>Xm & J J H.v v x R.' 1 <.W hX, xX5XDXlX, :.Z : $XH : RXK $X,XwXlX,.Z x x.Z.2 n.Z yXe.W x.W > xXq x._.YXe.[XpXqX+XH.Y.Y.[Xw.M $ xXl.9 $ x.w $ t.M.Z.MXDXDX,X- R $XD $X, R h $ $ xXlXJXJ.] cX3.H :XVXX.uXIXV 1 ) 5.r.`X1.e.~.M.a tXs O 2 / / 0.Y s.8.8.`X-.`.8.`",
+" R B.eX1.e.DXKXl B B B T D TXU ( TXP TXP TXyXKXyXy.OXyXy.OX; @.Z t RX1 B $ $.'.2X,XD.HX5 ).`.HXV ~.8.8 ~XtX*XjX*XjXjXj.b.o.oXk.c.c.U.U.U.U.U. .U l.6Xu./X .f.UXk.bXg.o.o.o.X.b.X.o.bXgXg.o.oXgXgXg.b.#.U.U.c.U.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.c.c.c.U.U.U. .cXgXgXg.o.b.o.oXg.o.X.b.X.bXg.X.o.bXtXt.kXj.k.kXtXtXk.r.kXtXtXj.k.^XtXt.k.r.rXj.^ NXz N.^ N.b N.^Xj.k.^.kXxXtXt.kXtXtXt.^.b.b.o.b.oXg.c.c.V.c.cXg.c.U.c.o.o N.oXkXt.^.^ N NX9.k F.8.`.HXo N.b.X.o.b N NXtXdXx P 4.fXlX.XwXH.n =.j.WXy v YXlXKXsXa x.Z x.j.j.@ 0.sXb pXGX7 1 1 3XD.a.aXDXDXDXDX, x 1 sXJXc., `.YXc.[., n >Xr.<XiXbXbXi { ^ H y v.w s s.n '.] ( '.8 ] D :X9X9 : q qX9 :Xx.]XOXU.2.'.w '.nXKXPXIX1XV.`.HXdXt.rXtXt.kXt.rXd.rXdXoXV.8 (X9.0Xo $.5.u.5 TXM.5XX.2.3 = =.TX: S SX8X0 r r.T SX4._._.pXeXe x $ h R.a $.u.u a.a C.Y .[.,XBXc.}XD $.,X,X, RXD xX.XJX-X-XD aX,XDX..a.a.aXDXI.aXH.9XKX-.} 1 :XcX..> n.'XlXGXc :.-XJ : #.Z x s o.j.>XZ.;X0 HX0 & yX+XwX+Xc.0.] 5 h.- p %.s.@.>Xm.0 xX1.a RXD.9 9Xm.q o w.@.EXn oX+ n.j.- y nXH s R c.uXD cXM 3 $XDXDXDXD.Z.,XK $.wXlX,X, 1.9Xe.pXp.pX4.pXr MX: WXn.< >X4 WXp xXw x.w xXc.9.a x xX5 x $X,Xl $X, $.ZX,.Z x $ c 3 $ : h $Xw., mX.XH :.Z 3 R.u `X5.`XIX-XIX-X- RXx.`X-.`X- R RX-.} U C.s.WX=XiXGXK.8.`.`.`.`.~.`",
+"X1X,XD.DXD '.]XDXD.uXl T.]XD m.2XyX; !X.XyXy.2XUXU '.'Xa gXm g.nX5.D.ZX,.n.wXc ' R.HX1.KXV.8 ~.8XV ~ 3.rX*.k.kXj.k.kXj N.XXg.U.U.U.U.U.c.c.c.6.I i./.U.6.I.#Xu.z.I. .oXkXg.c.o.oXk.c.b.cXg.o.cXgXg.U.6Xk.U.#.U.U.U.c.U.U.c.U.U.c.c.UXg.U.c.U.U.U.U.c.c.c.U.IXgXg.o.o.o.o.o.X.o.o.oXg.o.o.b.b.X.bXj.kXjXtXjXjX*.^.X.r.rXt.kXtXj.kXtXtXj.kXjXtXj.X.X.b.X.b.X.o N.^.X.o N.z.^XjXdXt eXj.^.b.oXgXg.c.c.c.c.U.U.c.cXu. .fXu././X@./ qX9.& 5XX q.R q )Xx.^.b.X.b N.o N.X.kXdXV ( (X@X3.|XlXU.j.q.9 n vXK T.'XU s x s.n y.Y.+.EXnX>Xn.@X+.jXcXp $ h.aXD R.aXD.a RXDXD.D xXD.9 # < $ h x x.[XM.YXr.< {Xb.PXf wX> &.E s.w '.n.nXa 'XU.5XJ D 5 ).] I.$XX (.2 D D 4Xl g.!XK.> yXOXwXy !.n.nX5X1XV.kXVX*XtXt.kXtXd.r ~.r 5.]XJ D.5 m ]XJ.%X3 I.,Xc 4 K !.pXf % {Xf w.x.x.xX>.pXr >Xn EXe.) E E.M < R a.uX-X1X-.a aX,Xp X7.S V h.}X-.OX, hX,XDXlXHXKXlXD RXD a : Y.'.a.M RXDX-XJXc D a.MX,Xc 1.,X#.O @X;XwXU 1 3.a R B R.wXLXmX0 M.;XhXr &.T.O nXrXHXK g m D 5 h u EXiX6Xm & '.' sXDXI.a.M s.'.!X0 =.+ =XnXeX0.j yX>X>XGX0.9 1.Z.ZX,XIX1.a.aXDXDXD RX,XD.aX1X,.a.ZX,X,.w x._Xp.FXe.FXn...JX4.<.<.JX4 >.d >.MXGXpXD.W.-.9XK x :.9.9.9X5.w xX,XcX, xXIX5 $X1 $ 1X1XD.aXJ.- x.9X, R.aX1XD.8 c.8X-.8XI R.aX-X-.5.u.k.~XI a a.a a.a t.M.W.).s v T.H.~.`.`.`.`.`",
+".w.n $.wXl s $.w.n.w '.0.2 KXy Y.O.> ! g mXU g mXOXUXO g.wXLXPXU !X;XJ ! 1.0.2 $X1XDX1XV.H.HXV ~.8 ~XV.rX*X*.k.^Xj.^Xj.^.bX9.cXk.U.c.U.U.U.U.6.IXuXu.I iXu.U.(.6.U. .bXu.6Xk.o.b i.zXg.6 iXg. .6.cXuXu.U.U i.U.# i.c.6. .U.#.c. . .c.6.U.#. .U.#.c.#.# l.U. Xg.bXg.o.o.X.oXg.o.b.b.b.b.oXg.XXzXdXdXdXt.kX*Xj.kX9.$.k.kXtXt.k.rXjXtXtXtXjXjXjXj.X.o.X.o.b.X.b.o.X N.o.X.z NXj.kXjXj.k.b.XXgXk.c lXg.c.c.c.U.c.#.AX X&./.f.f f }.A ).f I./.A 5X ././Xx N.X.b.b.b.^Xj.r.rXdXdXV.rX* 3XD s sXLXs.*.M R 8XDX-Xl.w.M._XGXLXn._ &.p.[.[X7.[ X, $.aXD.M.a.M.}.M R R R RXD.a RX, < R t.a h.lXqXpX2..XA.@ H.E O H.'XP.W R 8Xs.w 'XcX5XIX1.H R.8X9.K.8.HX-.HX5XU $XO.w y.'XPXK ! !XU g gXO.'.D.Z.uXV $XV.u.r.kXt.r 3.k 3.KXDXIX1X1XI.` 3.}XI $Xw 1.9 zX> %.4 r S.; M.xX4X:Xr WXrXrX2.F._XeXe E t a RXV 3 3XI a.a 1 x k.[ `XBXX : h.S 3XDX,XD 1XJXcXIXl.a R.~ `X,.-.aX, a RXIXJ a $ R R.a ` 1 :Xh.3XZ ! sXl 8.DX1X1X1.M.w v H.E.E ^ o.@XnXLXe.M.'.w E RX- 3 R R.d.s ..@ &.! b.nXsXK R.MX1.ZXeXP y & o = M.@ O..XnXi vXn v.OXL.jX1 $X1 hXIX- t R R R.9X,Xc x.9XJXJ.wX,X,X, x xXq.W...@ M.; S.C SX2X2X8.{.J.p.M.- U.wXhXwXK xXc.' k.'XHXK.%.-Xc k.%XcXH ) KX,XVXDXI BX5X,.a.M.aXDXIX-.H : : c R R.~X- RXDX-XV.uXM 3XD.~X- aX-X,X,.a.WXe.) v T.H.`.`.`.`.8XV",
+".'XKXU.0 T g 1 'Xl.0 g ! D gXU.0Xy.]X1XI.nXl.' $ 8XDXc T T.'XP.> @XwXOXUXyXU m s.DXI.Z.K.` 3.H.8XV.H.H.rXj N N.X.X.X.b.bXgXg.c.U.U.c.U.U.U.#.#.#.c. .cXu.U.U.#.#.U.#Xz.U.U.o.c.c./.I.c i. .c. Xu.UXuXu.#.I i.U.6X&.c iXu. .U.UX& i.UXu. . Xu.c i.U iXu.U.U.I.UXg.oXg.o.o.o.b.X.o.^Xj.^Xz.X.oXz.k eXt.kXjXj.k.^X9.A qXtXt.kXt.kXtXt.k.rXt.k.^ N.o.b.b.X.o.o.b.b.b.b.XXgXg.bXtXjXj.^ N.o.oXg.UXg.c.c.cXk.c.c.cXg.zXgXkX9.&XxXX )X9X9X9 ).X qXx NX9Xk.b.b.X.b.X.^Xt.k.k.kXdXt.k.k 3.uXDXGXLXmXe nX,XDXDX,XlXMX, U nXn ..EXr.g >XM .9 x xXDX,.M.a.a.a R R RX1 RX1 R.a R.a.e R.a.a.a < #.lX4XrX6X6 S o v vXL.w.9 xX5.w R 8Xs T g RXI 8XV.H.`.H.H.H.HX1X5 m.w TXs B RXsX,Xa s sXLXG.>.9 ' s.w x $ 3.H.5.8 #.8XVXJXHXJXlXUXl $ BX,.~.a.M.ZXO g.EXn.. w.{.TX:.y z WX4.1 z z M.y.TXrX4XA EXe U < < aX1X1 3 c.}.Y `.g.[.[X3XMXMXX ` # h.MXI 3X1XIX,X,XV aX, R R.aXDXD.MX1XI xXlX-.a R a.Z xXMXcXwX. y.n.wXI.DX1X- BX,.wXGX0X>.@.sXpXe t.M.M.M 1X,.ZXD R.Z R.M p.s 0 &XC.nXa.D 8Xc.aXl h T gXlXU x s & K.+X> S H M M yX0.+.OX; s x xXK.9 xXl x n 1XHXwXcX..SX.X. TXHXD hXD.WX,Xe.wXe w z.y.;X8.4X8 WX8 WXnXL xXL 1Xw.9X;XH m.3 n.%XhX.XH mXKXK `Xl Y T 3.~ R.u $X, aX,.MXDXl B RXD.Z #X5.K.~.`.a R.e RX-Xl 5 I., c.9.'XK.9 : kXlXh & &.+ m c.`X1.`X-X1.k",
+" @X. KX;X.XO g gXOX.XOXwXO.2XOX$.GX. ' cXV 3XVXV.uXV.Z.'X. gXK !Xw !.O g !.O.OXKXwXc.%X.XJXJ I.u.8 ~.8 ~.r.^.bX9.o.X.b.b.o.b.o.c.U.c.U.U.U.#.U.U.#.c.U.c.U.c.#.c.U.U.c.o.o.o.b.b.o.o.bXg.o.b.U.U.c. .#.U.U.#.c.#.I.U. .#.U.c.U.6.#.U.6. .UXu.U.6.U i i.U.I.#Xk.o.o.b.o.b.o.X.o.b.b.^.k.^.^.^XjXjXdXdXj.kXj.kXj N q NXjX*Xj.kXtXtXtXjXj N.o.X.b.X.b.o.o.X.o.b.b.b.o.oXgXx.b.^Xj.^.b.b.X.bXg l.cXk.cXk.c.cXk l.cXxXg.X N.&.$ I.% I kXJ 5 |.RXx N.b.b.X.o.X.b NXdXtXt.rXtXt.kXt.r.` c $.YXmXwXGX, h.}.Z xXq $Xr v o 0 0.jXrXB ` 1 1 x c U R.a.M.a.a.}.MX- t R R RX1.u.aXD R.a RX-X-.a.a # .x.@ ^ & b.sXL.* RXD c # ' xXa.Z.n g.'.kXd.HX1.H.H F.H.H.H 8 D.0.nX, t B R.*.M.Z.W.nXm @Xm oXK y 1XUXUXc m T.9 :.>.1 s.9XL.Y sXK.'.ZXeXLXGXPXU.q.> JXiXiXb ^.;.;X>.x < v.p.YX+.<.x.x.{.p.J E EXe a.a a.`X-X- cXB.l k., k.[ k V X3 ` 1 $X,.M hXDX1 3XlXlX-.aXDXD a.a.MX, BX.XK :X,Xl $ 1XX., |.,X;XKXL.D 8.DX1XD.Z.w s b.; o HX2XpXr xXe 1XJXJ.9.]X- cX- R u.).@ w &XP s s 8XD.-XK kX.X..%XwXPXU.> @XhXh.1.1 nXrX%.+.j n.jXw o.'.1XwXwXw.9 `XHXwXl xXlX, $ sX,X,X5X5X,.ZX, $ y n oXh.+ =X0.+ M w ^ ^X> v.YXe.9X,Xw.[.' 1.' hX5 $ m.9 xX..a R B 3XlX5 RX1XI RXIX, $XDXD RXDXDX, c.H.u.u.uX-XI a.eXD.} RXlX3 `XJ.9XHXc.9 :.5 ` ` yXm O.q ! c.~.`.`.`.`.K",
+"XwXy K g 8 8.D 1.]X, g.]XO.0 TX;XJX.XlX-XIXI.8XI 3XIXIXD 5Xw D.D.nXK.0.'.9 g n $ 1 :.] )XK ) q.KX5.k.k.k NX9XkXgXgXk.cXgXgXg.c.U.U.U.#.c.c.6.U.U.c.#.c.U.c.U.c.UXg.U.o.oXg.oXg.oXg.oXg.oXg.U.U.U.U. .I.c.c.#.U.c.c.U.c.c.U.#Xk.c.U.U.U.c.U.c.#.c.c.U.U.U./.cXg.oXg.o.o.o.X.o.b.b.X.oXg.X.b.^XdXj.kXtXjXtXj.k.k N.o.kXt.kXt.kXt.kXj.kXt.X N.b N.o.o.b.b.o.X.o.b.o.b.XXg.o.o.^Xj.b.X.o.b.bXgXk.c.UXk.c.cXk.cXkXgXkXg NXxXxXx.$ ) ) ).$ I q.IX9XgX9.b N.^.^Xj.k.rXdXt.^XoXoXt NXxXXXJ.%.j.EXG 8 U.aXe.i x.Y uXnXnXn 0.EXp.-XBXMX,.}.a.a < R.aXD.a <X- <.a.a R R B R.e.ZX1.*.a.aX-.a.aX-.a.lXM.pXp ^ HXmXL.w 8 aX- a.a.a $.w '.9XKXU g g.2 TX5.HX1.H.HX1X1 D.'.wXa B R.e.a R.*XD.w.q.OX0X0.E.>.E y nXyXwXUX0X; y.OXG g v b.' &Xm s s s v H.q &.q.@ %X6.PXi.@X2XrXp E.*.Z.d vXnXn.<Xf.<.p.J._ U h.M tX-.aX-.M 1 xXq.[.S.,XX.,X3., `X3 1.a.aXDXDX,XDX1X1Xl a R.a.M R.aXl : `XcX.., xXc.-.3XHXH k.j.9.!.'.'.nX5 :Xl s s ^.; S M M M =.-Xw.[XK TX.., #Xl 3XDXn.xXf H.q 9 s.ZXD.a R RXI $.K.0 D.!X;Xy.G.GXZXw n.[.Y.[X<.1 n.j.j.Y.T.jXmXpXwXwXc 1.,X. 1 $ s xXc.wXl s x T 1.Y = n =.OX0X0.>X0 M = M.; 0 0.jXq yXnXe C.Z.W $.ZXI.Z.ZXD.Z $.u 1 x `Xl #XDXI R RXDX, c.0 1X1.aX,X, $XV 3 : :X9.Z.uX- R R R.a 3 a.a <.a R tX-X- RX- R tXa.= o.'.u.`.`X-.8.~.`",
+"XJ.0XKXJ DX- RX1XIXI R D.2.2XUX. (XV.2 ( 3.HX1.H.HXI.`XI 3.H.aXI RXP.n.wXa.'XK RXIXD cXI.8.H.8 ~.r ~.r ~.XXgXk.oXkXgXgXkXk.U.U.z. . . . .6 iXuXuXuXu.t. .6. .6.I.#.#.UXk.cXk.c.U.cXgXg.cXk.U.U.U.U. .U.U.U.U.c.c.c.U.c.c.c.c.U.c.c.c.c.c.c.U.c.U.UXk.U.c./.cXg.oXg.o.bXg.o N.X.k.^.^.^ N NXo.^Xt.k.k.kXj.k.k.rX9Xd.k.kXjXtXjXjXjXjXj.^.b.o.X.o.o.X.o.o.X.b.b.X.o.b.b l.o.X.b.X.b.b.b.X.bXg l.U.c l.cXg.UXg.UXkXg.o.X.b.X.b.XXx.X.^Xg.X.b N.X.b N.X.^.rX*XtXt.uX*.r.|.f.$ I.f VX9 k xXL.s.s.iXeX, xXp.YXe v v v ^.EXwXr.[ xX3.}X-.a < R <.a.a R R <X-.M.}.Z 1Xl R.9X5XDX, t t R.aX- <.a #XqX+.@Xn.q o x.w R R a RX- B.a 8 'Xw.> s.'.n s.0 g gX5 8XD.D.DXO.'.w.9.w RX1X- a R 8XL bXP J.s.s *XsXs.W.W.W.WXa O /Xa.N $.'XK v.ZXGXp JXm J y & M H.4 M.4 r S S.+.TX<.Y aXDX,.M.M pXqXp.J.x.p ..m E U.} t.e t U h E .gXH.S.3., | }X.XJ.- k $X,.aX,XI 3X,.5.Z 3X, h hXDXDX,.Z.u x x 3 c c.,.- mX;Xw.j.!.'.0.! 1 o y.E.j &X0.;X> JXe U h R.a R 8 $.~XV.rX- aXpX=X6 HXG.n.w R B R R.a RX,X-X1XDXI.D TXU.>Xh k.[.,.[XB [.,.g n.9.Y & &.T = o.- y k.9.,., x R 8Xs.MX,.W.w.wXG.j =X> &XC =.q.> o HX0 & &.E J JX0XGXG y.M U.ZX,Xl 3.ZX,XD.ZX, : TX5XDXD RXDXD R.a.ZX,XwXDX.XcXK T.GXJXwXJ mXw.3.,., R R R a BX,XI.a.}.a.aXDX1X- 3.a < C.v 2 b :.8X1X-.`.`X-.`",
+"X,.uX1 I D.5XI.`X1.~XIXV : c D.` 4X5 B q.2.8 ).u.8 3.8.`XI.8X-X1XlX..'.!.9 yXwX,.Z.u.u.H.8.8XV.8.8.8.r.^.b N.o.o.X.b.o.b.o.X.o.o.c.cXk.c.#.I.6.6Xu i i.#.U.U.U.U.I.U.U.c.cXg.c lXk.U.U.I.I. .I. .6 d. . . .6.6. . . ./. . .I. . . .I. .I. .I. .I.I.U.I.# i.z.UXkXg.cXgXgXxXgXg.^.k.k.k.^.k.^.kXtXt.^.rXt.rXtXj NXjXtXtXj.^.b NXj.k.^.^ N.b.b N.b.b.X.b.b.b.b.b.b.b.X l.X.o.b.o.b.X.b.o.bXg.c lXg.U.c.c.UXg lXgXg.b.b.b.X.X lXg.b.X.b.o.X.b.b.b.X.r.k.k.r.8.8XtXdXVX@.2 qX3.5 c cXI UXG vXn.).W h._._.YXp.s.W J.j.>X+ ` XM h h.a.a R a R.aXD < R.M t.a $Xl 1 x $Xl TXK `XcXJ.M <.a aX-.i x.Y.p o H 9XL.Z t RX-X- R R R R a.D.' TXwXKXU s.'.' T gXD.D gXK.D x.D.w B.eX- a tXDXL bXC 0 /.) C u 8 8.).N.).= /.NXe 8 R.jXU.> H H & 0 o.E J wX0 S S.CX>Xf H.; MX0 [.iX1.ZX5X,.M U._Xn.p.<.x W.< . .._Xe hXe._XnX+ zXS.3X#.,.] 6XH.3 K.S [X,XD c $XJ.].K : :.aXl.}X,.}XIXI.a.a.a.a 3.aX-XK :.- n y o.EXm 9 H.j M.;X0 H w J.4XfXG._ hXD.a.M.a.M sX-Xt #.uXe._.vX6 H 9 xXD 8 R a R BXD 3 R RX,.*XD.w.9XwX; k.-.[ kX<X#.g.- [.1XrXGX+.E = M n s y n 1 y x.MXLXeXG o y.j &.T z H.@.q.>X0XmXw.j y.q.q.; H w =XhX0XGXp v.* $ hXl c ` R.Z $X,X3XI.}XD 3X, U $ UX,X,XD.9XcXJXJ.,.9XK :Xw xXlX,X,X,X- RX,.aXc.9.5XD.a h.a $ :X5X5XJ $.j.W.) 0 b $.`.`.`.`.` R.`",
+"XIX-.8 R ) m.5XIXI.`XIXIX-X1.u R.u.8.HXI.` )X5.$.`.`.H.`X-.`XI.~ DXyX;XU !.GX;XK D ).%.`XV.H ~ ~ 3Xt.r N.X.o.X.o.X.oX9.o.o N.oXgXk.U.c.c.I.U.U.U.U.U.#.U.c.U.U.#.U.UXkXg.o.oXgXg.o.oXg.U.UXk.cXk.U.#.cXk.U.c.c.U.U.U.U.c.U.U.U.c.U.U.U.U.U.U.U.U.#.U.I.I.6.UXkXg.U.UXk.UXk.UXk N.o.X.X.XX9.X.XXx NX@XxXkXxXx.X q.XXgXgXk.U q.z.U.z.U.z.z.z.z.z.zXk.UXk.UXkXk.cXkXkXg.IXkXgXxXgXg l.cXg.c.U.z.I.#.z.U.#.z.#.U.z lXgXgXgXg.b lXx.o.o.XXgXgXx.X.XXdXoXdXdXt.H.rX*XtXV.kXV.H c.kXV.H.DX, o.s.).N.W.= MXpXG.s.sXn.jXcXB XMXM #.} 3.a a.aX-.a RXD R.a.e.a.a R.M $ $ R xX,X5 hXD xX,.a.M.a.}XM x.-.;.jXC bXaX,.a R R R R RX-XD.M.aXD.W.w 'XK g.'XU.' gXOXU.] gXl.wXD RXDXIXD 3.a.n s.!.q 0.s...)Xs.ZXa hXLXeXL 2Xa.nX,.wXK =.O.>.> H H.; &.;X8 zX0 wXfX6 ^.4.;.pX+.Y CXDXIXD.a.M.M.M.dXnXG >X+.x >XA E EXe p p._.@Xr.1XZ T V 3X5XVX3XJ.3.-X,XM.G.a m.,.% T.] T.% :XcX-XI.aX1XI R BX,XD aXM : `.[XmX+.4 &.;.4.@Xf.J.@.@ 0X6.@Xn..Xe.Z.ZXIXDXDXD.Z.aXlXM.aXL.sXi HXCXL.>.> cX,.ZXJ.a :.ZX-XDXI R 8.D sXKXH.-XK.-.SX#XH.-.gXr n [Xh M.T.1.j.+.>.E yXw.YXG o JXnXC W.j z.+.;Xp J H & &.j.jXG gXe J.jX0X0.>.+ H.T n M =Xs.9 $ # D.]Xl.Z.Z.ZXKXDXD.Z $ h.wX,XD.MX,.aXDXD.ZX1X-XDXI xX5 t.a R.MXD $.*X. :Xw :.,X..- |.9X. T.2XJX.XK n.).= b vXVX1.`.`.`.~.`.`",
+"X-.`X-.8XI V )X3.u.` R.`.`XI.u.`.8 3 ~XV.u.K.$.$ ) :.8X1X1.8XIX-XVXUXOXKXmXPX. : :X3 D.uXV.8.8 ~XtX*Xj N.b.UXg.bXg.b.oX9.oXg.bXg.U.c.U.U. .U.U.U.c.c.U.U.U.U.c.U.c.U.U.o.b.b.o.o.c l.U.U.U.U.U.U.I.#.c.U.UXk.U.U.cXk.U.U.c.U.c.U.c.c.c.c.c.c.U.U.U.c.U.U.I.cXg.o.b.o.o.X.b.bXz.kXtXt.kXtXtXtXtXt.k NXkX9.rXjXtXz.k N.X.X N.b.XXg.o.X.o.X.o.X.o.XXgXgX9Xg.oX9Xg.oXgXg qXgXgXgXgXgXkXgXgXk.#.z.#.z.#.U.Q.Q.Q.z.Q.QXxXg.z lXx.Q l.zXk.zXgXk.X.z.X.^Xo.^Xo.5XoXo.5.5 N.K.k.K.5XoX5X5X5 $.Y.s v ^ oXp.E y H.Y.E n [.[XB.,.l.l 3X, cXlXDX,X,XD 3 hXDX,X,.MXD h hXDXDXDX,XD 3X,X,XDXDXDX, 3.}XX .- MXw yXL.wXDXD.a 3XD.aXI 3XD cXD.aXD.MXD.M $XlXPX5.n.0.0.w.' $.a tXD RX-.a.aX-X,XL s.q OX=.) u t.M 8.M t.w t t x hXcXcXwXOXL v o o 0.v.).s v.; wXiXi {XfX2 ^X+XGXG C R RX1X-X- R a.*.a._.FXn.<.pX4XA.m.m.m.m...jX+ M.O :X5XlX-XI c x.-XJ.lX,XMXKXJXJ mXc., cX..]XKX,.a RXDXD 8 R.*X-X- c `Xr WXp 0X6 ^.BX:.{ % M.. v.;X2 vXr vXcXcX,.,Xw.MXc.[.}.1X+X>X= 0 w.E.WX; 1XHXHXlXJ mXJXl I.eXIXD.aXD.n 1.>Xw n [Xw.1 n.-XwXH [ n WXHXS MXnX> &X0.+Xw.E J ^.@ ^.y zX%X%.j.4 0 0 H H b s y.w oXG =XG.>Xp H.T nX<.1Xh.jXh n.,.% `X..2XUXlX,XcX1 hX1 hXDXD hXD R.MX,.} c RX,X, R.M.ZXD.aXD R RXDX, RX-.e : RX5 : 3XcXlX,X, 8XI h.a.E.w.s.s.!XD.`.`.`.`.`.`.`",
+".8.8.aX-.8.~ 5Xl }XI RXI.`.u.8 3 ~.8.r.rX*X*.`.5X9 qXV.`.H R.`X1 8 T.0.n x gXw m.aX5X*.H.`.8.k.rX*Xt N.bXgXkXg.b.b.b.X.oX9.b.o.oXg.c.UXk.6.U.U.U.#.U.c.U.c.U.c.U.c.U.c.c.oXg.cXg.U l.U.U.U.U.c.U./.U.U.U.U.c.c.U.U.c.U.cXk.c.U.c.c.U.U.U.U.c.U.UXk.U.U.I.UXg.o.X.o.X.o.o.X N.^XjXj.kXj.k.kXj.kXt.kXtXkXxXj.k.^Xx.b.X.o.X.o.o.b.X.b.o.X.o.X.o.oXg.X.o.o.oX9.o.bX9.o N l.b.X.b.o.b.b.bXg.cXk.c.c l l.U l l l lXx.z.bXz.XXo _.z.XXz.^.b N.o.X.^XtXd.rXdX*Xt.rX*.k ~ 3.8.8XI.H.H.` FX1.nXa.N.s...s oXrXrX0Xr n.[.9XM # a a aX-XD s.~X- a a a 3.* a aX- R a a R < a.e.a a a.a.e t R a.a a h.lXl.Y.jXm.D.W.*X- a a.~X-.~ R aXI.e t R t R R.* t R.D.wX5 $ $ $ R.e.MX5 RX-X- aX-.aXaXLXm o.s.).d C t R aXKXqX, n `Xc k :.9.'Xa 2 J J.s 2X=X=XiX8X> w.P ^.4.<XpXqXnXs R tX-X,X-.~X-X-X- a RXeXpX4.<.{.{.< >.J.<.@.; H = K g kX5XX ` I V 6 V .u h c 3 RXIX-XD :XIXDX5.H $ cX,XD 8XD RXDX-.} hXXXBX<.x ....sXb.y S p.+Xr.MXh.j <XwXl T !X1XlXl t nXZXeXr.{.;.B b.q 9.w gXUXDXc $ xX5XlX, Y mXI 3 BX1.n.wXU.>Xw !XH n.,.-.gXZ [.-.,.[ [Xh.1X0 o zXC &X>XG.@ ^ ^ SX:X:.y >.x & H =.q.q.9 v.Z.9XG.'XG bX0 n = W [Xh MXw.j.9XKXDXD $X..e $X5 1X1X, RXDX,X,X,XD.MX,.Z $ RX,X-.a.aX,XlXDXI R.a RX-X,.a aXD aX-XD R RXD.a RX1 R BX, U.M p.s.W.jXD.`.`.`.`.r.8.`",
+".a.`.8.`.8.8.~.$X9 I.k.` 3X*.}.r 3 ~X*X* ~.kX*.8.u I.$ :.~X1XI RX1.].'.w.n.j @XJ m q T q D.X |XxX9.k.X NXgXg.b.o.o.X.o.bXgXg.o.o.U.U.U.#.I.c.U.U.U.c.c.U.c.#.U.U.U.U.c.cXg.c.U.U.U.U.U.U.U.c.U.c. .U.U.U.U.U.UXk.c.U.U.U.U.U.U.U.U.c.c.c.c.c.c.c.U.U.c.IXkXgXgXg.o.o.X.b.o NXjXj.kXj.kXjXt.kXj.k.r.kXdXt.^Xt.^XkX9.b N.o.b.X.o.b.X.b.o.b.b.oX9.b.X.b.X.b.b.b.X.b.b.o l.X.o.b.X.b.b.oXgXk.cXk.c.c.oXg l lXg lXgXg.o.X.XXz.XXg.X.b.X.X.^.^.XXtXtXtXtXt.u.rXtX*.r.r.` F 3.8.8.8.HXV.H.0Xs.s vXnX>X0Xw.-XcXK Xl.lXMXX h.a.a.aX- R 8 RXI a R R $ aX-X- tX- t t RX- R R aX-.a a < R B tX- a.a #.i.9.j yXL.Z <X-X-X-X- RX-X-XD 3 RX-X- a <.e R R R RX-XDXD BXD t B h $ RX-X- a R t.DXL b.E...N.).M 8 R.e.3 $ |XM # cX- a.wXa 2 b v J 2X= 2 0X> wX8.;X8X>.<X4 v.M t a a RXI.~X-.`.~.~X- a.MXeXqX4.<.<.<.p.{.<X>.4X> & &.9.D cXl.u VX* #.,XX.l.a.a #XIXDXDXI BX1XIX-XIXIXIX, $X,XDXD.eX1XDXD x.F.pX< WX4..XbX:XF vXe y.M.-XK 1 1 s.wX5 RX,X,XD.-Xn .Xi.B.B 0XCXC v.nXD.e t.e.* a RX- R VX. cX-.ZX1XDXl s.9Xm.jXw.>XH n.,XHXH.[ [XZ.T.O.L.T = &Xh.+ y.+ = MX:.L.T.y.T.j.;.+.+.>XC.jXG.wXwXD.W.9 sXG 9.Y =.-XB n.1Xw v.wXK $XDXD `X,.aXK.aXIX,X, t.Z xX, <XD hXD aXD RXDXDX,X,X-X, aXDX-XDXDX, R.aX-X-X1XDXI aXI a B 8X1 R.a hXe.)Xn.j yX1.`.`.`.`.5.8.`",
+"XV.8.8 3.8XV.8X1 : I D.$.8.5.8.8.8.rX*Xt.k.rX*.KXt.` ).,.RXVX1X1 B @.]Xa.n.nX.Xc.K c D.$.5 ).$.fXk.^.X.bXgXg.b.o.o.X.bX9.b.o.b.o.cXk.U.#.#.U.U.U.U.U.c.U.c.U.c.U.c.U.c.c.U.U.U.U.U.U.U.U.U.U.U.U. .U.U.U.U.U.U.U.c.U.c.c.c.U.c.c.c.c.U.c.U.U.U.U.c.UXg.zXg.o.o.oXg.oXg.X.o NXj.k.kXj.kXtXj.k.kXt.k.kXt.kXt.^XkXg N.o.b.X.o.b.b.o.X.o.X.o.X.o.o.bXg.b.o.X.X.b.o NXg.bXk.b.b.b.o.b.bXg.c.c.c.c.c.c./. d d.f d.& AXx A A.z.R AX@X@ AXkXtX*.rXt.^.u.rXdX*.k.kXVX*X9.r 3.8XIX* ~X1X1.w.'.sXn.@X+Xr.p.9 1 x 1 h h a aX- a R.aX- R.aX-.~.a c.e a RX- a RX- t a R RX- a.a a R a t BX- aX- 3 #.F.- gXL.Z tX- tX-X- B R RXV.~X- a RX- aX- RX-X-X-X- R.e RXDXD R a RX- RX- a.a a 8.n bXC O.).d C.* a R.a.' R.a.aX- 3.aX1.wXD.=.sXG.s J.).= 0 ^.4X>.{X>X4.FXq u t a RX- aX,.~X-X-.~.`.~X1 a.* EXnX4Xn.F .X4 >.@XpXp.EXwXUXD RX1.KX9 3.8 VXXXXXX # $.a.} a a 3.aX-XI.8XDXIXD 3X, RXVXDX1X-X, h 1.F.[.g M nXn.)Xe.* t BX,.a h.a h.D.D RX1.M.MXqXeXn .X> LXi J SXC.! $X1.a aXK `.ZXK c $XIXl.aX- RX,.Z.Z g = !.' oXw n =X.Xw [ k.[ K kXhXSXZXhXH.>Xh =Xh.+ M =XZ.T.jXrX+.; M =.; y y.w $X, $.' sXG.!.j.>.SXH.Y k.1 n y.- x : R.Z.9XIXDX. $XD.w $X, $ x.9 $XK.a.aXD.a.a 3.e 3XD RX,.}XDX-XDX,XDX-.a a.a RXVXI R.a.,XDX1X, $Xc.M.jXn J JXKX,.`.~.8X*.K.8.`",
+".8.8XV.8.8XI.8.H.8.H.$.AXXXV.8.8.rXtXtX*X*.k.r.rX*X*.8XV.K I 3XIX1 mXU.O.' sX..uX5.`XI.8.8XV.rX*.k.^.oXg.b.oXg.b.o.o.bXgXg.oXgXg.U.U.U.I.#.U.c.c.U.c.c.VXg.c.U.U.U.U.U.U.U.U.c.U.U.c.U.c.U.c.U.U. .U.U.c.U.U.U.c.c.U.U.U.U.c.U.c.U.U.U.c.U.c.cXk.c.UXg.U.o.b.o.o.o.o.o.b.o.X.^.k.kXjXj.k.kXj.kXj.r.^Xt.kXt NXk.oX9.b.X.o.b.o.b.b.o.o.o.X.b.oX9.b.o.b.b.o.b.o.b.b.X.o.z.b.b.b.o.b.o.c.UXk.c.cXk.c d.6X .t.t.&.&.RXx.&.&.R.t Q.& A.fXx ~Xx ~Xt.u.r.u.kX*.r.u.rXt.5.8.u 3XI.aX-X,Xl.n s.. 0X> WX+ ` ` x $ h $Xl a hXI.aX- RX-X1X1X- RXV aX,X,X-X- a RX- a R R RX-.e.a aX- < R R R R.~X- <.a # 1Xc.j.nXa RX- aX-X-X-X- R 3 a R R a R.* R R aX-X-X-X-.aX-.a R R a B BX- a tX-X- 8XL.nXm vX=.M.N B RX-X- BX1 aX- RXDX- R $ s.N o.s J.v / o 0 yX>.@X4Xp.F.d t R.aX-X- a 3X-X-.`.~X-X- a B < t.MXeXnXn.FXnXp.FXnXpXp y y y RXI.`XXX*.8., V `X3 ` ` h.aX,.}.aX-XIX-.}XDXD #XD c R R.DXDX-.D a c.F 1XBXB.-XpXG p.M v RXIXV :X, $ h.Z.a B a $Xe.s.. w S w H.;X0 =XyX.XcX.XD.9XlXJ TXcXcX-XIX,.eXIXD R.2 g.9.w s.9.nXKXU.>X;.1X..O.S.1 |XHX#XhXw k.1 n.O.+.+ =.T.T.1.+ M z.O.hXh.>Xh x.9 $ s x sXm ! = =.S.SX7X7 n =.j o ' 1.a.Z `.Z $.,XUXcXJXKX. g kX.XwXH x.OXIX, cXI hXD.a.aXDXDXI.a 3XD.a R a R a R B c aX1X. #XJ TX3 m.j M M =XZ.>X5.`.8.uXxXV.8.`",
+".8 ~.8.8 ~.H.HXI.H.u.`X9.KX*.rXVX*XtX*Xt.r.kX*.k.r.u.8 3.8 3.`.a RXJ.n g !X..GX. 5 D 5.`.H.u.r.k.k.bX9.b.o.o.bXg.b.oX9.o.o.bXg.U.U.U.c. .U.U.U.U.U.c.cXgXg.c.U.c.U.c.c.U.U.U.U.c.U.U.U.c.U.U.#. .6.#Xk.U.U.U.U.U.U.U.U.c.U.U.c.U.U.c.U.c.U.U.U.U.UXgXg.z.bXg.o.X.o.oXg.bXg N.^XjXjX*.^XtXk N.kXt.kXt.kXjXj NXk.o.b.o.b.o.o.b.o.b.b.b.b.b.o.b.o.o.X.o.b.b.b.o.b.b.oXgXk.b.o N.b.o.cXk.c.U.c.c.U.c.c.UXk.I./XgXk qXk qXkXk ).RXk.z )Xo.8Xo.`.H.u (X9 ]XlXo.5 ` DXV.k.].u x 3 $.9 v.wXi.v 0XrX+ #XD X, 1 : x RX-X,X1X-.aX-X-X-.aX-.aXIX-XI.e RX-X-X-.e BXI t RX-.a a.a a a RX- R.eX-X-.a #XM gXUXL.Z 8 aX1 a R RX-XDXDX- R.e R RX- a RX- t aX- a R aXD.aX- R s c.e RX- t B 8.ZXLXC 0X=.N u t R BX- R BX-.~X- 3 a c 3X3XeXs v J._XG O o vXmX+XGXp.. u u t R aX-X- R 3X-.e.e R.~X-X- a B a.a t t C t u U.d uXnXnXpXp yX, RX1.8XXX*X*XJ.$ V XMXM.}.aX,.}.} a h :XM kXhXX 1XK.u D.0X5XJ.DXKX3.l.l.F .<Xq 0.N.YX, kXc.,.- kXw.j., TXwXG....X6.; HXCX> J JXG.9 $X1X, a h.Z.MXDX,.aX- a 3 3.~XJXJXJXc.w $XD.wXw gXGXUXw.>.G K.GXSXZX. [ nXJ.-.3 k.1.O.+ =.OXZ KXh.O.O.+.O K.O =XU.a $.9 :.'X. [Xw.-.-X. V k.1.jXa x.9 RX, T :.aXU.,XK T.ZXK xXl.wX,XJ $Xl.}.Z 3 R R.aX- 3 RX,.M.a.a aXD.aX-.aX- aX-.DX1.a #X1 : c c h.d.s.s v b.0.Z.8.`.`X* 3 ~ c",
+".8.8 ~.8.8.8 ~.8.8.8XtXV NXtX*.rXtXtXt.kXtXt.rX*XtX*.r.8.8.}.8.` RXc.n.'.' gXH.] D.k )XV.H.8 3X*.k.XXg.b.o.b.b.o.b.X.o.o.bXg.c.c.U.c.U. .c.U.U.c.U.U.U.c.U.c.U.U.U.U.U.U.U.U.U.c.U.c.U.U.U.#.U.6.I.#.U.U.#.z.U.#Xk.c.U.c.U.c.U.c.U.c.U.c.U.U.c.UXkXgXg.U.b.o.b.o.o.bXg.b.o NXjX*XjXt.r.K.fXkXj.^.kXtXjXj.^ N.U.X.o.b.o.b.b.o.o.b.b.o.b.o.b.o.b.b.o.o.o.o.o.b.o.o NXgXg.b.o N.o.bXg.c.c.U.U.c.c.cXkXk.zX@.& 5.fX@ q.AX@.A.&X X@.f.$.K.u.8XV.KX3 ].u m.|.%.] P ] ] $Xx.9.'.j =XC ^ 0 ^XfXi.jX7.- ` # xXJXc $ x.a B R R 3 RX- R.e RX- RX-XD.e.a R a a.e a R a.a R.aX-.a a a a.aXD R B RX- a 3XMXM.-.q s.W B.aX-.a B RX-XI B RX- R B a aXD $XIX-X-X-.a.e.uX, $ R.M TXD.a R h a R 8.n OXC 0.=.) C R.~ RX- BX- R R.e.ZX-.u 3X, xXs.=Xp vXLXGXG.9.-.YXpXqXq a.}.* R.8.~X- aX-XDX- a.eX- aX-X- R.~.e.eX- BX1.* a a aXq .Y o.Y yXDXI.8.r.K ~X*X*XX.$XBXM # h.} 3XX `.-X#.3 Y.- DX. mXJ $.u 1XX a #.l.FX+.<Xn.sXmXGXK c x 1XB 1.w $.ZXl.W ..P w & b bXL v.w._ 8.uXl R cX,.aXDXl.e R RX-X-XIXl TXVX,X,.%.9X5 TXw 4Xw.OXy.O.OXw.3 m.O.1XH [ n., k.- n.O.>.+.O.+.OX;X; =.+ MXw y.' xXl $ $ s.jX. nXcX. V.-XBXB.,.S &.s v `XlXl cXl $ x T.e.aXDXDX-X, U.aXD.a a.a.aXDXDXI R.a a R.u.aXD a.aXI aX-.MX- R BX1 3 a.aX-.`X-X- < u * / 2XL.9X5.8XVXX.8X-X3.5",
+" ~.r.8.8.r.r 3.rXt.rX*.k.5.k.rX*XtXtXtXt.kXtXtXjX*Xt 3.8.8.`X-X-X1.2XKXa.'.'XJ DXIX*.`.H.8.H ~ ~.^ N N.bXgXg.o.o.b.o.b.bXg.c.U.c.U.U.U.I.c.U.c.U.U.c.U.c.U.U.U.c.U.c.U.U.c.U.c.U.c.U.c.U.I.I.#.6.#.#.U.#.I.#.#.U.U.U.U.U.U.U.U.U.c.U.c.U.U.c.U.c.c.o.c l.b.o.o.bXg.bXg.X.X.^XjXjX*X*.^.kXtXk.z ~XjXt.k.k N.b.z.b.X.b.o.b.o.b.V.o.o.o.b.o.b.b.o.o.b.b.b.o.b.b _.b.oXgXg.b.o.b.o.b.c.cXk.c.c.c.c.c.UXgXk.UXkXg q.XX9XxXx.X.X q.X.X NXV.u.8.kXV.5.u 3 5 $.H cXl.` 3X1XaXGXG oX6 2X=X=XiX= %X2 yX< :XBXM h.a.a.e.a RX-X-XDX1 a R R aX-.e a.uX-XI.e RX- R a R t a.e R aX-X-.a a 3 R.* B RX- a h # .-XUXaXa.M.eXwXD R.*.* R RXI.e aX- R a #X. `.*.a BX-XD.ZX. :.e R a R BXD.G a.a B 9XaXm J 2.N C R t.~X- R R.eX-.*X,.~XI #X5.M.WXsXaXm.W x.9.}XI `XcXp Xe < C a R B R B R.M a.*XD.e R a.~X1.e.`.` BX-.~X-X1.}.e.gXq MXqXGX+ TX,.`X*.8.5XVX-X-XMXJXXXM ` ` V.G.,.,X3 1Xl R.ZX5.H.Z c.uXIXI.}XM >X%X: ^ pXe.D R R 3 R.MX, 3.e cX,.W 0X6.; wXa.n.n.D.W t t $XK m `Xc mXc TXHX,X- R RX- ` cXI R.~ 1XJ.' :Xl x.9 'Xl 1 ' s sXP.9.j MX; =.>XH.O [.+ =X0 =.>.+XC.!XcXm.'.E !.j x $X,XcXK = @X;Xh [.-X3 .9X7 n &Xa v.-.9XKX,.ZX.XlXD 8XDX,.MX, RXDXI.} RX,.a.M 3X,.}.ZX,X, a.Z.aX,X5X-X, :.ZXIX,X-X-X-X,X1.a.a.~.a.a < C.s /.v s.0XoXV.K.u aXl $Xc",
+".kXtX*.r.rXtXt.rXtX*.r N NXtXt.k.rXjXj.rX*Xj.kX*.kX*.r.8.8.`.` 3.a.0 D.w ' : mXK.` c.u.5XV.k.K 3.^.XXg.b.X.b.b.b.X.o.X.o.c.c.U.c.U.U.#.I.c.U.U.U.c.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.c.#.#.#.6.I.#.I.#.#.#.I.U.#.#.#.U.U.U.c.U.U.c.U.c.U.c l.cXg.b.UXgXg.bXg.o.o.o.o.oXgXjXt.kXt.k.rXj.kXjXt.^.k.^.^.^Xg.b.z.b.o.b.o.o.b.o.b.b.b.o.o.o.b.b.oXg.cXk.UXk.c.cXk.cXg.#Xg.b.b.bXgXgXg.c.c.c l.c.cXk.cXgXkXk.XXk.f 5.& q./.X.X ) N.XX*.rX9.8 3.r.rX* ~X3 ~.u.H 3XVXDXl gXG O 0 0.vXi ^X6Xi.P.jXBXJ :XlXMX-.aX-XI.a.~XlX,X1 RX- a RX- $ )X1XD.a.a aX1 1.Z a.e R RXlXK $ R aX-X-X,XlX5 R.eX-.a c `.3.[XU.n.w 8.*.,.a 8 R R.e R.a.eX- RX-X- $XJX. RX1.* C R.eX..Z.aX- a.a.eXc.,XlXD.'.wXLXC b 2 / C.a.~X-.e R aX- R R 3 R R # c sXsXs.sXGXpX,.a 3 3.}XK.9XGXG a t R.e B R.eXDX1 t a.* t R RXD.eX-.e.H.H.` B.~.e.a h x.-.F.1 = y.-XcX1 c.`X*.5 #.8X* :X3 VXXXMXX :X3.,., `XX 6X. n.3Xl., ` 3 3XV a.a R h.FXq.pX2.xXf v CX1 RXD R.M.Z.}.eXl BXeX6X6.4.q.!XL.nXs t.M aXKX5XX.ZXJ.Z $.a $.a R.e.aXIXIXIX5 cXIX-.ZXV.~XJ.ZXV.ZXK.0.'Xa 'Xw y.' b.9X0.> = n nX0.+ M =.+.O &Xm.j y [.>XUXUXUXK n.>.GX;.GXSXHXH c 1 $XB.[ n M b v.>XJ 1 kXJ m.9 R U.a.ZXD.M RX,.M.M.aX- R.a.a R tX- RX,.a 3Xc :XMXKXKXcXcXKXl R RX-X,.aXIXIX-X-.M.* u.W 2XLXm.Z.8.r.5 3 `.O.GX,",
+"XtXt.rXt.k NXtX*.r.^XtX9Xt.k.rXt eXt.r.r eXtXt.r.rX*XV 3.`.`X-X-X1 ' g s.w.n.2X5XV.8 q ).]Xd.KX9 N.X.b.o.o.oXg N.o.bXgXg.c.U.U.U.c.U.#.#.c.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.c.U.U.U.#.U.c.#.U. i.#.#.#.#.U.#.#.#.#.#.#.#.U.U.c.c.U.U.U.c.U.c.U.cXg.b.U.oXg.b.o.o.o.b.o.X.o.kXj.kXjXtXj.kXjXj.kXj.^ N.b.X.o.b.z.b.b.o.b.b.o.b.o.o.o.oXg.o.o.oXg.c.U.c.U.c.cXg.cXk.c.I.c.o.o.bXg.c.cXk.c.c l.c.c.c.c.U.UXg NXg q./.$ q q.XXk l.b.^XtXt ~X*XtX*.k 3X*.8.u.uX*.8XVX1XKXG J.@ ^.C J J ^ wXf ^Xr.jXc : #XZ hX-.}.eX- a.-X, R.e.* R a xXlX,X-X,X-X1.aXDXH c R R t.e `XJ T B RX- 3 a 1 $ R R.~ a.} kXZXcX0 s.nXD t T.'.Z t R t B 3.eXI.eX-X- h :X, a a R R R t 1X, BX-.uX5.a h R xX- B.wXaXm J.=.) C t B.aX- aX- a a.eXD.~X- c 3 1 RXs CXLXGX,XIX-.8 3 c.-.YXn s t t.9.eX-.a aXHXI R a aXJ.M m.eX1.e ` DXJ.~XI.e )X5.a a.}XnX7 [Xh.1XcX,.H.`.8.u 3X*.u 3XX 5., V V kXJ., 3XM.,X#XHX# XJ.- #X- 3X- 3.}Xl X+Xr.{ ..s v.MXIX1X,XDXDXDXD RXl.* UXnXi L.; &.!Xa.n.Z t R.e B a.}XI a RXI R.*X, c.aXlXl :X- 3 3 c 3X#X5.G $ 4Xc m g.%X. m.2.w.9.9 &XyXZ.9XGXG.qX0 H &.;X0 M.EXL vXLXL.9 T.wX,XD s.!Xw.O.> ` 1 h 1 1 kX7Xw &.E.w x 1.2 1XJXJ TX,XDXD xXKX-.aXDXD RX,X,.ZX5 tX5.a.aX-X, 3.*Xl.a.9Xl c.Z hXDX, RXI aX, R.a 3X- R.M R.) 2.= v 'X-.`X9.5.a sXw [XG",
+"Xj.r.^X9XgX9Xk N q NXk N.z.X N.k.X.X NXk.X.^.k.k.rX* ~.8.`.uX*X5.DXlXK.w ' TXJXIXI.8.H.u.`.8XV ).k.X.X.X.b.bXgXg.b.XXgXk.U.c.c.U.U.U.I.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.c.U.U.U.U.U.I. .#.#.#.#.#. .#.#.#.#.#.#.#.U.#.#.#.#.U.c.U l.c lXg.o.U.bXg.o.X.o.o.o.o.o.XXjXj.k.k.kX*Xt.k.k.^ N.b.X.o.b.X.oXk.b.o.b.b.o.oXgXgXg.cXg.U.c.c.c.c.c.c.UXk.U.c.U.c.c.c. Xk.cXgXg.c.c.c.c l l.c.cXgXgXg.cXkXg.b.b.bXx.X N N.b.X l.^XjXd.rXtXt.rX* ~.kX*Xt.u.k.uXV.`.5XGXG.sX=.v 2.v.v.v ^.vXiXr.j `XMX. | k a.a.aX- aXJ :.Z R.a R a.Z VXJ hXD 3.a.a.aX. $ RX- t aXKXwXK RX-.a.} a :Xl.e aX-.a.} [ | =XU s.n.M t.9.M R $ xXI #.e a.e R.a.e.a.eX-.a.eX- R.e c RXDX-X- 1 s R.a t a R B.w.nXC o 2 O.w a.aX,Xl.aX-.aXl.Z $XDX1XKXJ cX,XK.q o v 1.a 3XV.`XD :XK.Y v U t :.MX-X-X, Y.'.e R.eXJX- m.eX- RXl c.-XD B.~ T.u RX- < a UXB.j [.O.SX,X1.`.8.8.K.K.K.KXX.5X3XJ c ) 3X1XIXIXJ VXM #.} h RXI h.a aXM xXB.[X+.@ %..Xe.M tXDXD CXDXe.W R.u $ t._ % % ^ HXC b.w.nXD.e R R.u.~ R RX5.*.MX5XlXc mXc 3 #X-X-X-XIX9XMXIXXXl $.ZXD : $XIXDX,.5 TXy T g s.n s vXC.q H HXr M =XG v s.' s.n s v.n.DXK.'XwXHXw XMXDX, 1 kXBXH HXm U x $ h.a.aXD $ $XDX, mXJ xXKXcXJ mX..-.,.S.,X.X, 3 R.M.u.M c $.e a.* R.aX- RXD.aX- 3 :Xl 'XDX,X,._ 0.@.@X0 h.`XVXo.ZX1XG v v o",
+".kXt ~./.rXxXk.^ q.^X9 N.$.bXj NXgXg.X q.b.kXt.r.kX* ~.`.`XMXJ m `XK @ !.' gXJXI.HXI.8.8.8.8 ).k.k N NXk.I.f dXgXgXgXgXk.c.U.U.U.U.U. .c.U.U.U.U.c.U.U.U.c.U.U.U.U.U.U.U.U.c.U.U.U.U.U.U.U.U. .I.#.U.U.#.#.#.#.U.U.#.#.#.#.#.#.#.#.#.U.U.c.U.c l.c.o.U.b.o.b.o.b.o.o.o.b.bXj.kX*Xt.k.^Xt.k.k.^.b.o.bXg N.bXkXg.o.X.b.o.oXg.c.c.c.c.U.UXk.cXk.cXk.c.c.U.c.c.cXk.cXg./.cXk.U.c.c.U.cXk.c.c.c.c.c.c.c.c.c l.o.X.^.b.b N.X.X.bXg.rXd.rXt.rXtXtXtXt.rXtX*.uXt.u.`XV ' yX>.@ M.+.;.; H J.;X0.v.EX%.- `.-XlXc h.a < aX-X, c.a a a a.a a 3X, R R hXI aXD x 3.a a.a.eXDXDX, R R 3.a a.a.a RX- tX-X,XMXqXwXwXL.wX1 R x TXw.9.'XKXcXlX- R a a BX-X- a.a.a.aX-.aX-.aX,.e.aX- aX-.a.e R a B s.'Xm o 2.; y RXI.' $.a.a aXK m.aXIX-.|.,XM R R.>.=.v 9X,X1.8 3.8.} yXGXpXG.e `.}.a.eXKXlXJ R RX- $XcXKXD t.e x.9 h.eX- B $.Z.~ B.e a a UXpXpXp =XlX9 R.8X-.~.8X*X5.u.`.`.8X1X- FXI.H.a VXXXBXBXB ` 1 #.iX3 `.-.[ JXnX6X6._.N E._ v.s...s.mXe 8 c.M u.mXA.B H.qXC.!.ZX5X1XDXIX-.~X-.eXlXJ mXU kXlX,X-.aX-.e.a 3.uXVXV cXI 3 3.eX-X-XD.uXJ.2X..] D.5 'X5Xl.nXa bXC & H H =X0Xm s 9 9.!.qXP.!.' s o s !.1.-XMXMX, h : [ k [ JXL y h x.w cX, RXaXDXJX..9Xc `XJ :XKXc TXc $ $X5.SXIXDX, R c.a.aX, R.a RX- R t.eXI.a.a a `XKXUXJXw gXwX0.;.>Xw 3.`.r NXV.ZXGXG.s H",
+".r.kXt.^Xk.^XgXkXkXk.IXg.zXtXtX9XkXk.X.zXt.r.k.kX*.rXV.8X-.u.5.K : T.2.O T.G.0XIXI.8.` FX5XV ).KXo.RX .(X Xu./XgXgXk.UXk.c.c.U.U.c.U. .c.U.U.U.c.U.U.U.U.U.U.U.U.U.UXk.U.U.U.U.U.U.U.U.U.c.U. .#.U.U.U.U.#.U.U.U.U.U.#.#.U.U.U.U.U.U.c.c.U.c.U lXg.o.U N.oXg.b.o.oXg.o.b NXtXjXj NXtX*.^XjXtXzX9.o N.o.o.b.UXg.o.b.b.b.o.cXk.U.cXk.U.c.c.c.c.c.U.U.U.c.U.U.U.c.UXg. .c.c.U.cXk.c.c.c.c.c.c l.c.c.c.cXgXgXz.o.b.X.b.XXzXzXx.bXd e eXtXtXt.r.k.rXtXt.uXd.rX1X1.Z 'Xs.@ ^ ^X4.@.v OX6 b O..Xr.-XJXwXK ` x 1 c a.a a R aX-X-X-.a a.aX- RX- a.u.a RX-X- < aX-X-X- R t B RX-.a a.a t R a R R a # x `.[.j.n.w C RX,.MX,X,XD R h a tX- B RXK R R t R a.a a h.a RX, a B BX- B t RX-X- B.DXa 9.E / &.Y tXIXU.9 $X-X- hXKX-XI RX. a c #.e.>.N.=XL 1X1 3.8 3XDXl yXGXn.i < a tX-.~XV.~.~X- a.e.e.eX- a t a.e < < $ RXVX1X5.D x : <.F.M [ MXw.O mX5XI.u (.HX9.k 5.k ).H qX5X- DX5X-XM., VXXX3XB 1XBXBXB V .g.jX4 % { %.m.. vXq.s.mX6.P %.. $XD x < uXAXbXf ^XCXP.n '.DX1 RX-X1 RX-.9 R.M RXD.e RX-X- R a.HX-X-X- 3X- 3 c c.K.u 3.] }XJ : 3 3.8.] D.|X..2 ! & 9XCX0X> M MX0 & M &.>.> ! y s.!.' sXw KXHX< kXKX. k.SXHXr J b pXcXG R #.uX,XDXD ' x $X-.aXD $ $ RX,XD RXD.MXl.}.a.a.MXDX,.aXDXD B R RX-.a.a a.a a.a 3X, xXD.M.NXe.W.vXnX,.a.8X9XV 3XG =.; H.+",
+"XtXtXt.r.kXt.rXtXtXt.XXt.k.kXtXt.^XtXt.kXtXtX*XtX*Xt ~.8.aXI aX1 RX1X1 D.] g.u.H.`.8.`X-.K #XH I 5.t.RXx _.o.b.c.c.U.c.U.U.U.c.c.U.c.I.c.U.U.c.U.U.c.U.U.U.U.c.U.UXk.U.UXkXk.cXk.U.c.U.U.U.c.6.U.U.U.U.c.U.U.c.U.c.c.c.U.U.U.c.c.c.c.c.U.U.cXgXg.oXgXk.o.b.o.o.b.o.b.b NXjX*Xj.k././Xk.kXj.kXj N.bXg.b.b.oXkXg.b.b.o.bXg.c.c.c.U.U.c.U.U.U.c.c.U.c.U l.c.c.cXk.c.c./Xg.cXk.c.cXk.c.cXg.o.o.o.c.U.c.c.cXg.b.b.o.b.X.b N.XXg.^XtXt eXd.r.kXtXtXjXtXt.r.8XI.H.w s.s.)X=X=.) 2 2 / 2 /XiX= O.q 9XGXUXUX+ 1XM.l 3 <X-.a RX- a.~ R t aX- a aX- tX1 R.}.u 3 aX- a a RX- R RX-.a R a R a t R a.a.i xXB.- g v.w C t 1 x t <.e < R.a a B $X, x c.- :XJ 1XKXK `.9.aXD R R R.D $.e R RX-X-.DXLXC H 2Xn 9.* RX,X5 t RX-XDX, a.Z.~X, RX- h c.DXs.N.WXnX, h ~ ~ ~XVXmXGXp 1X, <X-X-.~XI.`.~.`.* t t RX-X-.~.~ a R.eXwXKXKXK.] kXl.3X,XHXq [ MXh mX5., $XJX5 : Y 3.RXI Y.5.%Xl 8Xc.9 R.}.KX3., 5 k., V V V VXB nX+XiXi .XfX6 .....X+.@.@X2Xf.. v.a U U u.d.. .Xi.@XC b.0.DX-X1 R R R RX-XI RXDXI.e RX-.e.eX-XIX-.~.eXIX-X-X-XI.a 3X, c.aX1X- :XI R.eXlX1 :.9Xl.O.jXm.qX>XCX%XrX2.jX>.x H M & 9.9 bXw @XZ.SXH.SXc :XHX#XHXrXn w v.. y h # 'XDX,X1 :Xl.aXV 3.uX,XD.aXDXD.MX,.a #.a.a aXD 3 3 c hX- R.a t a <.aX- a.a a.a.} t.M 2 2 2 sXG.aXVXX F.8.` sXwX> H H",
+"XtXtXt.k.rXj.^XtXt.rXx.r.kXt.kX*XjXt.^.k.rXt.rXtXtX* ~.8.`.8.`.a.8XIXVXJ.2.5 3XIXI R.` # c cX5X5.RXV.^.X.X.X.oXg.U.c.U.c.c l.U.z.#Xg.#.#.c.c.#.c.U.c.U.U.c.U.U.UXkXkXkXk.I.U.U.c.U.U.U.U.U.c. .U.U.U.U.U.U.c.U.c.U.U.U.c.U.U.c.c.#.U.c.U.c.cXg.b.oXgXg.o.o.X.o.o.o.oXz.^ e.kXj.k N./.^XjXjXj.kXg.b.o N.o.b.U.XXg.b.o.oXg.c.U.c.U.c.U.c.c.U.c.c l.U.U.c.cXk.U.cXg.c. Xg.U.c.c.c.c.c.c.o.b.bXgXk.c.c.c.c.o.o.b.b.o.b.b N.b.X.^XtXt.r.k.rX*.kX*.H.r.8XV.8.`XlXLXL / 2 * 2.s.v 0.v 0 O b O 0 H b O.n.jXU V XM # h.a t.e a.a RX- R tX- a a aX-XI.M.u 3.uX-.e.a a R aX-X- B.a a.a t.aX- aX-.a # xXB.[Xc.n.Z R.M.Z.* a :X,.* a.* R.a.e RXDXIX, $ h x h $ hX, RXD B RX-.'XlX-X-X-X- BX, s.>.;.s / C t B.* R BX- t.eX- RXJ a 3 c cX5 `Xc sXs.=XnXeXDXI ~ F.8.ZX; yXp ` R a.a.~.8.`.~.e R t t a.~X-X-.a a R aXc :XlXl 1 cX5 xXl.W xXGXc.YXw.Z gXy.9 m `XVX5X5 cXV x $ $XG vXK a.8.}.8X* 3X*XMX3 k k.[XJ.,Xr HX+X>.@X>X>X>.Y.E.Y._Xn *.x 0.w.WXe E t t.m...s b.;Xm 9.w.DX-X1 a.aX- xX1X,.a c.'X-XD D 3 RXI RXHX.X. 3.~.aX-X, 6 3X1.~.a R K V a.M.a R B.e.Z.n yX0XCX>X+X2X2X4.<X>.x H.; &.E y s ' =.OXc `X3XDX, x.-XpX<X>.@ bXnXe h xX,X5X5 BX,X,XlXI # R.a <X, R 8.M 8 <.M $X- h $XDXIX5X1X1.ZX-.a RX-.a a.a R a <.} < u.W / v 0XpX5 RXI.`.k.~ c 'XG.s 2 w",
+".rXt.k.b N.^ N.b.X.XXkXt NXt.k.^Xt ~.k.r.kX*.kX*Xd.u ~.8.`.`.8.aX-X-.` c.5.rXt.HXIXIXD : m ,.K.`.5.kXt.5Xg.o.b.U.U.U.U.UXk l.U lXg l.U.c.U.U.U.U.c.U.z l.c.U.UXk.U q.IXu.IXk.U.U.U.U.U.U.U.U.6.U.U.U.U.c.U.U.c.U.c.U.U.U.c.c.U.U.c.U.U.c.U.cXg.o.b.cXgXg.b.o.oX9.o.b.^XtXt.kXj.k.^.I.^.bXjXjXz N.o.o.b.o N.U N.b.b.XXg.c.U.c.U.c.c.U.c.c.U.U.c.U.c.c l.U.U.c.U.c.c.IXg.c.cXk.cXgXk.cXg.o.o.c.cXgXk.cXkXg.b.b _.b.b.XXz.X N.^XtXtXVXtX*X*XVX*Xt.uXV.`X-X, vXe /X=.) / 2XCXC HXC H H & HXCXC '.nXL.n.EXw.[XB.l #.lX1 R RX- a a R R R aX-X- aXD R.ZX- 3 a aX-X- a R RX1XD.M a.a R R.a t R a h x `.[ yXL.n.M RX-X-X, ' RX-Xl RX- aX- aX- R.*.e tX- <X- tX- aX,X-X-X-XD B R R.~.~X1XD.n 0XC.v.NXs t $ $ : $ xXIXD.a.eXc.5Xc DXK.]XK $ g.M.N.sXG.WXI F.k q.u .-X+.j U.M RX-X-.8X1 R t t t aX-.eX-.~.e R a a.eX- a.e R a t a < a tXq.9XK x = @ mXK.].uXV :.8XV.a R x o.9.E.M.`.`.r 3 ~.8.8.8.8 #X*.K `XJ.- = n.WXK 8XqXc x $ xX; xXw.EX> 2Xn.) E E pXA ^X= o.qXC.wX, RX1 a RXI.G RXDXI R 6.3 a.| a 3 R.e.%X5 :.G.e R.`X- YX,X,XI cX5.,Xh.aXD.e R 8 R.Z s.'.>X> o JX%Xr.<.<.pXrX> M H.'.qXUXOX;X..Y.-X,.a c :XJ.- MXp M.x vXG.j xX,.ZXlXDXD.M.w $X, U.M.ZXs._ v._.W.W.M.M T : BX5.DX5X5XVXV : DXVXl ' $.MXGXs.*.W G.= 2 2 J.Y xXDXI.rXtXt.` :.9 y v O H",
+"XtXj eXk.I.z.b qXgXj.I q.^ q.b NXtXk NXk.r.rXtXd.rXt.r ~ ~ ~X*.rXI #X*X* ~.rXVXIX1 RX5XlXJ IXt F q.8.k.^ NX9.X.zXgXg l l.QXgXk l.UXg.U.U.U l.c.z.#Xg.c.U.U.UXk.#.I iXkX d.6Xk.I.U.U.U.U.U.# i.I.U.U.U.U.U.U.U.U.c.U.U.U.U.c.c.U.c.c.c.U l.U.cXg.X.cXgXg NXg.b.o.o.o.^XjXj.k.kXj N.X.X.X.X.b.X.b.b.o NXg.b.zXzXg.b.oXgXk.c.c.U.U.c.U l.c.c.U.c.UXg.U.c.c.c.c.c.U.c.I.c.U.c.c.c.c.U.c.c.c.c.U.U.c.c l.cXg _Xz.b.b.b.b.X.b N.^X*.r.k ~.r.k.r.u 3 3.` cX, $.E.s.s.W p.=.s.E oXG b J bXmXGXG sXLXaXa.s.n.YXw.,.Y 1 x x.} a aX-X-X- tX-X- R a R.aX-XI a cX-XI aX-.a.a :X,X, c $ t RXDXD R R R.} # 1Xc ! 9.wXa BX-X1X-XD.~XD.9XI `.a aXD R.eXD R R a aX-X- aX- 3X-X- R.e.a a.e.a R B 8XL.n w.v.N.) RXIXK : ' : $XlX-X-.Z.e RX- a RX- $ R 8.WXs 2 sXD ~X* N 3 h yXpXG u.M a RX1X1.~.e R t t a RX- R a a.eX- R RX-X-X-XIXDXD $ R.M t C 1 yXc gXh ' D :XJ 5.] T m a x oXGXCXO 8 3 ~X9.k ~ ~.r 3 3.K.8 ~.`.8 3.G m :.G DXU 5.%.% :.%.,X. !XhXnXCXe p.. ..s..Xi ^X0.9XL.D.M aX- R R.3.e 3XD a.| D.3X..aX1XI a.| 1X-X# a.aX1X, KXI R R.eXcX. Y T.*XD R R RX,.wXG.> MXr.<X+.p._.x M M.L =Xm 9 !.G.O.GXH ` `.}XI $ hXc.- [ = z.Y.;.O.EXU yXJ.- g.-XcXc n.wXs U GXe 2Xe.s v .XqXsXcXl T D.2 ( Y } IXJ.%X. m DX; y =XL.s OXa 2 O O.E.9 tX1.`.`.~.`.~XD RXK v.s.E",
+"XtXt.kXx.z q.b./.oXx./Xg.X N q.8.^X9.rXxXj.k.r.kXt.k.r ~.8.`.r.`.`XV.` ~.8 N.8.8XI R : :XVXI.`.8X*.K.K.$ P.X.(Xk.(.tX@Xu.Q.&.z.t.z.f.t.zXk.U.U.U l.#.U l.U.I.#Xg.f d.6.6XkXg.#.c.U.U.c.U.U. . .#.#.U.U.U.U.U.c.U.U.U.U.#.U.U.U.U.c.U.U.c.U.U.c.o.b.UXg.b.o.o.b.b.bX9XzX*Xj.kXj.k.kXzXg.^Xg.o N.o.X.b.o.o.b.I N.o.b.o.c.U.c.U.U.c l.U.c.c.U.U.U.c.U.c.U.U.U.cXk.c.U.IXg.c.U.c.c.U.cXk.cXk.cXk.c.cXg.cXgXg.b.b.b.b.b.b.X.^.^.kXj.rX*X*XjXtXt.HXV I I.,Xl.+XC.EXwXn.;X> & HXmXLXL sXa.9Xa.n.w.wXDXa.n s b.!.jXwX+ .l cX,.aX-X-.a aX- a a BX-X1 B R RXI.a aX- aXlXl.9 TXJXwXK a tXD.MX1 RXI.M xXM.9Xw y.q.' gXD '.u B.`.` 3X- ` 3 aXl.Z.eXl : R 3X1 a RX-X- 3 aX- R RXD a.aX-.e BXDXa o.O J / u.*.MXDXIXIXDXD BX-.eXDX1 RX- B.~ R 3.K B C.=.= bX, 3 ~ ~.8 3X,.-Xp p u tXD R.HXIXDX-.* RXDX- a.e.~ R a RX- R.e.~.ZXJ D $XH x s 1 x.YXH.hXw.j $X, 3.8.H 3 3XD .jXq z &.+.'XD.H.5.^XoXtX9.X.kXt F.r e ~.H qXkX9 D.X.kXx.5.XXxX*.H.uX1XG nX+ p..XpXn ^X> J.E.j.EXe x R RX- R RX#X- c.a.eX.X-X3X$.eX,X-.eX.XJ T D.eXI.Z B 6.ZXIX-XD.% aXlXHXD RX-.aX- R.w.w.Y y = M zXrXp.hXS.+.1 K K.+X$ K.G K k : xXDXD xXD.Y.Y.g.[X% nXrX0 &Xh.Y nXK.[ =.j.Y.) bXn b.....@ ^X>..X6.@Xn & n 1.-X3 1 $ mX,.Z $.Z xXs.'.s v.v 0 O.N.=.=.= v $ aXI.`.`.`.` F.` RXq yXL =",
+"Xt.r.k.^X*.^.k.X NXk.k N.k.r.k.X.rX9X9.r.8Xt.K.rXtX*.r ~ ~ ~.u ~.8 ~ ~.8.8X*.`.H.`X1.H T.H 3.`X-.`XVXX.$.A ).7.&.( Z./.7.t X Z.7.I j.7.I.QXg.IXgXg.z.U.c.U dX Xu.z.IXkXg.U.U.U.U.U.U.U.U.U. .#.U.U.U.c.U.U.cXk.U.U.#.#.#.U.U.c.c.U.c.U.c.U.cXg.b.o.z.b.o.b.b.b.o.bXg.bXjX*XjXjXtXj.^.b.b.o.b N.b.b.b.o.b.b.U.b.b.oXgXk.U l.c.U l.c.U.U.c l.c.c.U.U.c.c.U.#.#.U.c.U.#.UXk.c.c.U.c.c.c.c.c.c.c.c.UXk lXg.o.b.b.b _.b.b N e NXtX*XtXtXt e e.r.rX-.u 3.KXGXwXn..Xp v . bXn yXmXa.w.DXs.'XDXsXIXs R.Z.Z.!.q.qXC &.j.- 1 .l h.a a.a.aX- aX- a BXD.* R.e.a.uX,.a B.} RX-X,X, h.M.MXD RXDXD R.a R # x.9Xw = !XUXUXUXyXl.~X-X- R.e RX- R hX, tX, c.eX-.~.~.`X- aXIX- tX- aXK $ a.eX1 R BXLXLXCXiXe.N a a.~.eX1.eX- R.~ BXD.e R.~ R RX- R cX, 8.=.NXL.'XI 3.8.8XVXD yX+Xn.i.MXDXl c DXJ $ x : :Xl.u x.a a t B.e a R.e.`.,XK $XJXc xXK.[Xc.1XH n nXD.MXIXIX1 R R x.1.+X8.+XZ.O.G :X1.H.r.XXkXxXk.r.R.X.zXdXx.o ~ ~.r.r.r.r eXj ~Xd ~ F.`XI U.j yXn.YX+ v...j vXs.j.' x.Z R R RX- R.3.aXI R.aXJX,.e #X1 3X-X1XlXlXIXDX1.eXI 3XDX,XI aX1.a RXDX- R.a R BX1 R R.w s y.j.j.Y.p MXh.hXHXh.+ @X;X; @XHX. | : $ h c 1 R 1Xw.,.,XH [.1Xm.@.>.s xXe.w._ vXp o...sXf ^Xi.@ S.4Xf .Xi 0.s v C a a RXDXD.M < t.a a 8.W.).@ w 2 2 O 0 J 9 sXD R.`.~.`.`.`.`X-XI.Z.G.jXZ",
+".kX*.rX*.r.kX*.r.r.5.8 ~.`.`.8.~.8.8.` ~XtX*.r.kX*X*.uXVXI.8XI.8 ~ ~.H.8Xt.k.H.8.`XI.`.] c 3 R #XIX-.K.5 ) q.X.&.A AX X@X X .t XX .t.7.6Xk.z.c.Q.I.I.6X Xu.I. .I.UXk.U.I.U.U.c.U.U.#.U.U.U.#.U.U.U.c.U.U.U.c.U.U.#.I.#.#.#.#.U.U.U.c.c.c l.cXg.o.b.U.bXg.b.o.bX9.b.X.X.kXjX*.kXtXjXj.bXg N.bXg.o.o.b.b.oXgXk.o.bXg.c.c.c.U.c.c.U.c l.c l.c.c l.U.U l.U.U.#.#.U.U.#.U.U.c.U.cXk.c.U.cXk.c.c.c l l lXgXg.X _.b.b.b.X.b.^.r NXtXtX*X*XtXj e F.H F.`XI.aXD v 2.) <.*.s /.sXC y.n.n 8 B.ZX- R.e t B $.n.E o O O O 0.Y.j x x x.}X-.}.a.a a aX-X1 BX- R R R.a.eX- <X- tXDXD.Z R R RXDXDX,X1 RX-X, 1 `XwXwXc gXG.Z.n.D R R BX- RX- R R.* a RX- a R.~ RX-X-X- BXI R aX- RXD a a < aX-XD.wXL.q 0 G.).* <X- t.e RX- aX- t 3 $.e t.e a.ZX-.a 3.*.NXs.=XG xXI.8.H FX1 '.[XnXpXe.M.-.ZXK T `XJXc : T :XJ h aX-.e RX1X- RX- R R R.~ RX,X,.a CXeXpXG.jXJXDXD hX,.w x x =.x.J.4 H ! g m.DXt.` F.HXtXt.^ NXx.bXd.bXk q.X.zX9XxXjXd.rXdXt.r ~.`.`X1 hXwXc.Z t R RX,.}XD 1 s $XD BX-.a a R BX-XIXD.~X-.~ R.~ R R.Z R RX- BX, aXD aX,X-.a.aX1 R RXD.aXDXDXD $XlX, $Xl.' g.>.+ n.1XrXZXh.hXhXh.G = !.>.>X..-XJ.i.a.aXI c.}XDX,.i .-XB.j &XG.;XG U EXpXnX=.. 0.@ J ^ ^X2X8.CX2 SX8.4X6.s .._X,.M.aX, U.a <.* < 8 C.W 2 0 oXp v.1 =.'.Z t RX-.`.`.~Xo.HX5.`.DX1 $XKXU",
+"X*X9X9X9X9X*X9X9XX.K.uXVX*XVX-XVXV.u.uXt.5Xj.K.k c.K c c.Z cXD 3 3XD.8XIXVXI FXI.`.`X-.5XV 3.a.a 3XI.`XI.`.8.K NXxXkXk.z lXk.UXk.U.6.z l.z.U d.I.6.tXuXu. .U.z l.U.U.UXk.U.U.UXk.c.U.U.U.U. .#.U.U.U.U.U.U.U.U.#.#.#.#.#.#.#.U.U.#.U.c.c.U.cXg.o N.# N.o.bXg.b.oXg.b.X.^XjXt.^XtXjXj.b.b.o.b.b.b.X.o.b.bXg.c.o.o.c.cXk.c.U.U l.c.c.U.c.U.U.c.c.#.#.#.I.#.U.U.c.c.U.U.U.cXk.c.c.cXk.c.c.c l l lXg l l.o.b.b _.X _ N.bXj.r.X.k.rXtX*.r.rXj ~ F.`XIXI.j.j.jXrXp yXe.T b =XU y.n.ZX1 R.D R R RX-.a.WXa.! o 2X=.=.).s.F.jXK 1 x #.}.a a a aX- aXI a RX-X- RX-.a.a a R R R.Z.ZX,.M R R RXDX,X1 R.} # 1XcXH nXwXU o.w.w.M t a R B R.* R R t R B R B B BX-.~ B.eXD.a a R a aX- a R.~ B BXaXLXC & v.N u a a R t a a t t a.ZX. x.- :.Y.-.9 VX.X, C.N.NXe o $.8.H.XXxX, x XGXpX, tX, t a B.~.e R a.e t a RX-X-X-X-X1X-X-X- BX,.a a R a.Z t tXp.9X+.jXpXqXKX+.9X+XpX4 p.C.;Xh.O.>Xy 4XO FX1.`.H.H.K.kXo.rXd.^.k.^XxXx.oXxXtXtXtXt.r ~ F.`.`X-X1.~ $Xx TXlXlX5X5 $X1 :.DX1X1XDX1XD.aX,XDXIX,XIXDXI 3.a.3 c.3XKXKX,XD $XIXDX, c.ZX-X,X,XD.aX1.a.9XlXlXl m DX..' !Xw.>Xh =.OX;.+.hXZX#.OXh.q.O.>Xh.,.- V `XIX, R cXDX,X, c.aX3.[.YXw.j.E & E.s..XfXf ^ w.@.4X:X>X8 WX+..XfXfX> w...s G.).WXe.WXe t u u CXsXs.W 2 vXq.-.GXHX#X3X. : m.5 TXx.~ D fXd 5 : ].2 D Y",
+"X*.rX*X*X*.r.u.8X*.`.`.`.a.`X-.`.8.8.K I q.%.$.% I |XHX3XH.9.GXHXG h U R.kXI ~.8.8.`XI.`.}.8.` ~XI.H T ~XVX*.rX*XxXgXkXk.z.I.I.I q d.6.IX .6.(Xu.Q. .6.Q.I.#.I. ./.U.I. .#.I. .U.#./.U.#.#.6.I.U.#.U.U.#.U.U.#.#.#.#.#.#.U.U.#.U.U.U.U.c.cXg.o.bXgXg.b.b N.o.b.b.X N NXt.k.k.^Xt.^.X.b.b.o.b.b.o.b.b.o.oXgXg lXk.c l.U.c.c.U.c.U.U.c l.c.c.c.c.U.c.c.c.c.#.c.c.U. .U.U.c.c.UXg.U.c.c.c.U.c.c.c l.UXg.o.b.o.b.X _ N.bXdXt.5.rX*Xt.r.kXV.8 ~.8X1XD y ...XF.).d * p.).v vXm oXl.Z 8 R c R.a a.a a.ZXL 9Xm O / / * *.)Xe.s.9.j 1 # h a.a aX-.a.~X-X- B a R R.M t R.M.M U x.Z UXD RXD B.a RX1.M.a c x `.9 x.YXwX+ vXL.wXLXLXD.M.D.w.w.W.w.w.Z 8 BX1 BXD B RX1 t.e.aX-.a #.a <.e R 8XaXLXC J 2.W.*.M t < a a a <.* a u < a.e < a t.e.l.*.M.M C u.N v TXD.H.H F F 3 hX7XpXH.1 U.a RX1X.XJ.eX1.a RX. n.e RX1X5.,X.X- RX- D.DXDX-X,XH.3 a U y M.O.+ z MXpX>.+.x z.xXi.4X0XG.n '.].0.0 ( @X$ D D ) I.X.X.XX9.UXt.K.k.K.kXtXdXt.r ~.8.8 3.8.`X-X1 B ' (.0.0XOXOXP.DXa.DXa @.'.% ' a BX1 RXD cX-.]X1 RX, :X5 x :XJ.,X..%Xc :.a.aXl mX5XcXKXKXlX,XI $.9Xc T g.'Xw.q KX0.>.E.Y.j.-X..-.9 K =.O KXhX#XH.- kXw k `XH.'XK 1 x 1.,.Y [X0Xp.@X> 0...4 S.4X8 S wXn ..p..Xq._._XnXnX8 L {.v.. O 0.W 2.s *.) 2 p v v oXG $ h : aX-.`X-XI.8X1 5.5.`XV.H.H.K.k c.KXJ.$",
+"X*XdXt.r.H F.8.`XV.`.a.`.`.aX-.`X- 3XV.k.K (.5 ` ) 1.- nXH n.O zXn.<.Y.-.0X1.H.HXtX-.8 3X-.8X-X-.`.`X9.u ~.8.H.r.k N N.XXgXkXg l l.6X@.tX&.Q l.U.#Xg l.#Xg.U.U.U.zXk.z.z. ./Xg.I.#.#.U.#. i.#.U.I. .I.#. . . . . i. . . . . . .#. . . .I.U.U.U.I.zXg.z.#XkXg.z.U.zXg N N.X.XXtXgXk.UXg lXk.UXkXg.cXk.c.z.I.z.#.U.c.U.#.U.U l.#.U.# l l.#.U.U.U.#.c.U.U l.c.U.c. .c.U.UXg.U.U.cXkXgXg.cXk.cXg.U l.X.b.b.b.bXz NXz.X eXt NXt.k.uXVX* 3XV.8X-X1 s.xX>X4XnX4..XnXn.@ ^X>.q.9.w.Z B.e `X-X- R.e RXD v vXC 2X= * C.d u.N.s OXGXm.F xXM 3 a a.aX- aX- aX- R a t t R tX, R.Z $ x.M.a.aXD.aX-.e 3.ZX5.l VX< |Xq 1X+ n.@XpXnXLXe.nXa.w.n.' y o.n.w.w.Z 8 BXD RX-XD 3.a.e R.a <.a a.MX1 B.nXLXC.E.s.) UXp h.} UXe U h._.iXqXe.M._Xq._ x x.g xXe.WXn.vXn o.DX5Xd.r.r # $XKXw.T.1Xw.MXD $ mXcXl.} R.9 h., xX1 aXl D TX- R.` `X,.a.e : R 1X,.*.wX+X>.jX>Xp.@ ^Xn ..{ ....xX>.w.wXsXa '.!X5.].GXJ D.2 I 5.|./.R qXtX*XVXt.rXtXtXd.r.H ~ 3.8XI.8.`.HXV B.n ]XP.0XP.0.n '.DXa.' D m g.DXlX-X1 R.O.wXc k D nX5XD R B B 1.Z hXD.aXI B.ZXc 1 TXD aX- aX,X,X5.0.w.Z.D.'XcXy =.GXwXGXwXcX3 x.Z.>XU = = [XBX7 1 UXl.aXD ` c.Z.a :.aXB k.S nXh M.@.; {Xf w S.; SX8.p ..iX7.d U U v .X>.{ wXi 0Xm J v.s ^X= 2.s bX> s.'.jX.XJ ` q.].X I : cX-XI.8.8.8.H FXdXd.rXtXo.r",
+"Xd e.r F F.` F.`.H.`.`.`.`.`.`.8X-.8.8 3.8.u.8XIX,.9.Y.9XcXq x X> pXAXq.YXa RX1XI.8X-.8.`.` F F ~.`.`.`.5X9 ~ ~.r.r.k.oXg.b.U.z./.IX&. .I l.c.U l.#.U l.c.#.U l.U.IXu.t.:.I.#.U.U.c.U.U.I.#.U.c.U.U.U.c.U.c.U.U.U.U.U.c.c.c.c.c.c.c.c.cXg.o.b.oXg.X.bXg.b.b.b.b NXg.^XjXjX*Xt.^Xj.XXg.b.oXgXgXgXgXgXg.o.I.#.U.#.I.U.#.I.I.#.U.U.U.6.U.U.I.I. .I.#.I.I.U. .6. .U d.IXu.t iXuXu.6.#.#.#.I.#.#.I.#.I.Q l.U.z l l l.zXkXo N ).X.5.k.X.5 cXV 3X*.Z.' O ^.. % EXe . ^X> & & & gXG.ZX,.Z $.}X,X, hXD.wXG y H 0 v p p u EXe.s O.sXm n.-Xq 1 .}.} 3.a 3XD 3 a.ZX,.aX, h.ZX,.w.Y.9XK $.Z.9 T : ` ` V kXBX3 V.-.-X7.j.jXrXr.; H.j oXLXm.q & 9XC &.! sXL.n.ZXD R RX,X,.a.aX1XI.a h.a RXDXIXLXLXmXC.@ 0 pXGXnXq v.F v._Xn._Xe._.) E._.F p._X7.F.F U.)XFXb.s.E.wXI F F.H.` 3.}.-.YXG.Y t aX- R.~ B B a a R a.e a BX-.e.eX- R.e a.~.eX-.e.a.e.e.M.MXGXpXp.TX:.T z.y z z.+X6.x.YXL x 8 8X5.D s s.wXwXKXIX5.KXtXt.kXj.rXtXjXt eXtXt.r.r.r.r.H.8 ~ ~X- 5.]X5.u D.D D @.0 sXaXL.! D.' T.] DX.XJ ' $ : :Xl.2 1.2XJXw.,XlXcXI $X-X- R a.a R.a R.e.a RXI.aXD R R B B.D.n.wXP.-XyXyX;.j.O.Y RXI t.w g [.1X<.- V $ h hXl a cXc :XwX.XK.3.3Xh.LXhXZ =.+.4 ;.4 ; wX2Xr.pX+._ U Xe U E._XnXfX+.j s.w.N 'XG oXL 0Xm.nXDXDX,X1.5.5.5Xk.5Xo '.kX*.8X- ~XI.8.8 FXV.rXdXd.XXt",
+" e.H.` F.`.`.` ~.H.8.`.`X-.`X-.8.a.8.8.8.H.r.u.`.9.9XKXp.MX, h.-.<X> ..EX+XK.j 1XK #X*.`.8 F.`.`.`XV.u.8.r ).8.k.k.r.kXt N.X l.(XuX .zXgXg.z l.Q.#Xg.#.U.U.cXk.IX&.6.7 dX .U.U.U.U.U.#.c.I.U.U.U.U.U.U.U.U.U.U.U.#.#.U.U.c.U.c.U.U.cXg.cXg.o.o.b.UXg.o.o.bXgXg.bXg.bXtXt.kXjXtXtXd.^.o.oXg.o.bXg.o.b.oXz.I lXg.U.c.c.cXg.c.c.U.U.c l.c.c lXgXg.U.UXg.c lXg.o l.c.I.c.6 i.#.6.6.#Xk.cXg.cXg.cXg lXg.bXz N _.bXzXz.X.bXo.rX9 ~.uXdXV.H.H 3.`XI 8 s 2 / u C u.w.).vX> y.E.9 vXaXD RX-X,.a aX- aXl U.w bXC O /.) < a t <Xs G.= 2 0X+.YXq $.l a.} aX-.a.e.a R RXD t t a.MX,.Z.[.9XcXcXJXJX5X,.a a.} c # .l.YX+Xp._.s v..XpX> yXmXC b 2.s 0 bXC o vXL.wXsXs R.aXDX- a aX-XD x $ a R B.DXL.E JXb.) *.d u.d.d C u u C u.s p.*.d.d.)._ E ..d uXF...BX6.@X>XG R.H.8.rX9XIXD xX+.F.Y < t aX-X- a t a t.eX-X-X-X-X- a.~.a.eX-X-.e R.~ aX-X-.~.a.*XeXpXp n z.y MX: z z rX>.;.j vXL.wXsXs 8 8.w.w sXUXc.D.u.kXdXdXtXtXj.k.rXtXtXd.rXdXtXt.r ~.` 3.8 ) ).,.$.G m.G.>XKXy.w.n y !Xy.OX.XD 'Xc.3 m.%.9 :Xc RX,XDXl $ c.9.e c R.a R.aXI aXIXD RX1.a.aX- 3 a.~XDXa.w.w.'.2XP @Xy K.G.3.,X,XI $X,Xw.jXHXBXB.-Xe $ $ $X5.a RX, T sXK $XH k k [.T.+ = r w.4.C.{XfXr.< >.-.F xXB x 1XH .XqXw.jXs B.Z B.DXm 9 g 8XI.~.8.`XI B.`.`.~.`.~.~X-.`.8.8 ~.`.8.H F.r.r.r.r.^Xd",
+".H.H.`.`.`.` BXVXIX-X- RXIXI.`.aX-.8 3.rXd.`.u.] D : $.a x cXDX,.9.[Xr z z vXhXh YX3.H.8.8.8.r.8Xt.r.`X9.`.8X*X9Xt.kXo q.X././Xu.z l.U.zXg.QXgXg.#Xk.U.U. .U.t.7 d ZX@.#.U.UXk.#Xk.UXk. .U.UXk.c.U.c.U.U.c.U.#.#.U.c.c.U.c.c.U.c.U.c.U.c.o.b.b.U N.oX9.o.b.b N.bXg.^XjXt.kXtXjXj.b.^.b.b.b.b.b N.o.b.b.6.c l.c l.U.c.c.c.U l l.UXg.U.U.U.U l.cXg l lXg.Q.U l l. .c.U l.c.U.c.c.c.c.c.cXgXg.cXgXg.o.b.o.b.X.b _XdXo.b.kX9XV.u.rXtXt.8XI.`.a.Z.n 2 8 * <.MXq.) O & o vXLXl.Z R t RXD a.M < `.ZXDXGXG.qXC vXL.N h h.M t.WXs.=.s bX+X+Xq $ x.aX- aX- R R.9X,.' h T.Z.M.M.- sXc.Y xX,XD.a.a a.} # .lX7X7.p n v.W pXeXeXqXLX+ H 0.v /.v o 2 0XCXCXG OXa xXLXD.aX- RX1 R.e.}.M a R R.DXa o o / /.).sXF.).).dXFXF.d.)XF . ....d.<.< WXA >X4 .Xb.J.xX2.<.x .ZXI ~.k.8 cXD.-XGXp.W R.*.e RX- t R.*.a.eX- aX-.aX- a.eX- a aX-.eX-.~.e a $ 1X, sXw M.pXrX+ = MXhXr.yX>X> HXwXGXa.n.* 8 8 8.Z s 'XUXdXV.HXtXt.r e.r eXtXjXt eXd.rXdXtXt.r.r.8 ~.8XI.`XJXJXJXK s.nXGXG.! @ T.GXU.0.Z 8X1XDXD :XJ.-X.XK.,.wXJ a.a a RXDX, RXIX-.a.a 1 $XD 3XDX- aXIXD R 8X5.n gXJX5.]XJ.]XlXl : : D DXJ DXHXH.1X7.- V.} $XD.ZX,.~.ZX-X,XD R.M 1.l.- k.[ n MX8 wX8.4XfX8 r r .X4 W.-XpX7XhXhX<X<XhX.XKXJ.] DXwX.XhX.XUXc.`X-X-.`.8.`.~.` BX1XI.`.8.8 3 F.8 ~.8.8.rXtXj eXdXo",
+".H.`.`.`XIX1 RX, a tXD 3X,X,XD hXI.8.8.`.rXt.k.K 3.u 3 x `X5.H.H $.'X5XhXhXp z =X+.OXh R 3XI.r.8 ~ ~.k.r.`XVXV.`XV.KXt.8XkXk.R.X./Xx.U lXg.IXgXu.6.z.z.cX&.(X .UX q.UXgXk.U lXk.c.UXk.#. .UXkXg.U.U.U.U.U.U.U.U.U.U.c.c.c.U.U.c.c.c l.cXkXg.o.b.z.b.o.o.X.oXg.b.o NXjXt.r eXt.^.rXk.o.b.o.o.o.b.o.X.o.b.IXg.#.c.c.c.c.U.UXg.c.c.c l.U lXgXg l.U l.U.#Xg lXg l l. .U lXg.U.cXg.U.c.c.c.c.U l.c l.o.o.b.b.b.b.b.XX@.zXoXtXo.z.5.u.r.X.8.`XI.a s.W /.N 8 t U.W.= O & &.>XG y.n.w $ TX,.a R R $ 1.2 & ! = = &XC.YXq 1 ` a.W.wXs G.=.sXp.-Xq.i x 3.} a.aX- x :.9Xc 1.9 U.Z x x $X, R U 3X- aX,.l #XB >X%XB.F.Y.j.j.-.[Xw [X%X0.@ ^X= 2Xi J.. J.s J H yXG.w s.9Xl B R BX- R tX- aX-.~XaXa 9 w.BXbX=XF.).)XFX=XFX=XvXFX=.J .XfX=X2X2.J L L.P.B %Xf.{.{.JX4.x.-.ZXI ~.8 R R.Y.YXp x U.a c R.e.e.*X-.e RX- a.e.e.e.a aX-X-.e aX-.~ aXI.~ #.,X.XcX+XHXwXH.1 [.j.T MXhXp.@X> & y v.w R R.} B.Z.w '.2.`XVXdXtXdXtXjX*XtXt eXt e.r eXtXtXtXt.r.r.8.r.8XIX-.Z gXP.9.n = g.G.O ' DXOXlXD RX1 R.aX-X- RX5.'XcXJ.9.e R RX-.}.u R.aXDXDX- DXJ $ x :Xc c : T 8.Z.wXP TX1 RX-.`X-XIX-XI cXVX5.0XlXJ K.SX%.- [.[ :., T cXK.ZXwXK sXJ x `., $XS [XH z.4.{.C ;.JX:.h.T.y.+.h.y.1 zXp [.F.g XDX9 :.5.0.DXKXc x 1 :.`.`.8X-.~XI.`.`X1.`.`X- 3.8.8.8.H.8XV.8.r.r.r.rXt.b",
+"XV.8X- 3.`X,X- $ x x vXGXn vXnXK.ZXI.8X*.rXt.k.rX*X*XIX9 ).`Xt.r.H.kX5 cXl.Y.p.x .Xn.xX+X,XI cXtX*.rXt.rX*X*.rXIX*.K 3 ).K.8.r.k lXg.z.z.U.IX&X& d.#.I.:.6.t.f l l.zX ./.UXkXg.#.U. .U d./Xk.#.U.U.c.U.U.U.c.c.U.U.c.U.c.U.c.U.c.U.c.c.c.cXg.o.bXk.b.XXz.b.b.b.bXg.bXg.I.$ NXt.rXj./.bXg N.b.b.b.X.o.o.o.IXg iXg.U.U.V.c.c.U.I.6 d.6XgXg.#XkXgXk.U.c d.(Xu lXg l.Q l l.U.U lXg.c.c.cXk.c l.c.cXg.b.b _.b.b.b.b.XXk.I.|.& ) I.$ ] ( 5.]XJXB x ..sXs.N C C E.)X=.vXm.'Xm.n.9XK.9 $Xc x R a t R RX, v v.q oXaXa 8 8.a.e.a tXe.M.)XsXe.).Y y xXq x.}.a a.a.M.a a <.a.a R.wXq $ $ UXI h B.} xXM x Xc.gX+XeXeXe.iXD.WXDX,.WXe.. p.C.s *.) G ^.@X=X> O.@ HXm o g o.Z 8X- BXD.e <.a.~X-.DXL 9XC 0X6X6X6...@Xi ^XiX6 0XiXi ^X6X6.J.;.C.4 ;.{ w {X8X8X:.{.<X%.< = & 3 3 ~ 3XIX+ Xp._ $., mXl : 1.9 $ 1.~X-X- a RX- a.e a R.e.a.e a.~ aX- 3 x.aX,X,X, hXI.M h.Z xXqXnX+Xn.E & 9XL.w $ R R.a.wX5.!.0 BXo eXtXt.rXt.r.rXtXtXtXdXt e.rXtXtXtXdXt.r.r.H.HXV 3.D @ @X; 4Xy.9 T.'.ZXUX5 m.u hXIX-X, cX, 3X-.e 3.a.aX-.aX, 3XDX-.aX- hXcXK :.,XcXJ D ` `X,X-.w.w gX1.H R.`XI.` RX1.a.u.`.~.`X1X-.[ k [XB.L K $ m cXK YX5XJX. sXH.YX.Xh.- 6XH [.1.; L L.PXfX2X8.y.y.y M.+ z.jXqXpXq.Y <.aX-.`XIX1X1XDXJ sXVXI.`X1.`XI.8.~.~X-.`.~X-.8 3.8 ~.8.H.H.8XV.K.^Xo.^Xo l",
+"XJXX qXM.- 1.YXwXn v.W.)X=.W 2XG.n.kXV.rXt.b.X.X N.K.r.`.` F.` F FXdXtXoX1X- uXp.. %X6Xn.@ xXD 3.rX*XtX*Xj.8 3.u.u.8.8.8XV.r ~.k N.bXg./X X X .I A d./.(.A./Xk.zX@ PX&X l l.IXk.6.f.UX d.#.UXk.U.UXk.U.U.U.U.U.U.c.c.U.c.c.c.U.c.U.c.c.o.b.X.o.U.b.IXuX .I.X.b.b.oXk.z.X.r.X.I.zX N.o.oXg.b.o.^Xg.U l d.QX&.cXg.U.U.c.U l.#.#.U.7 d lXk.c.#.c.b.z.b.b ZX .oXg.I l.# lXg.U.c.U.c l.c.U l l.o.o.b.b.b.b.X.b.b.b.R.zX@ 5.X (.5 (.5.K.KXl 1 y.s / / /.W.N...).= OXCXG.n 8 8 8.e.a aX, < R `.9XD R.n v.! 9.=.N.M R t R a B t t t.d.NX0 2XpX+ $ x 3 tX- aX- t.a tXDXD.9 $ g x.Y.a.a.} xXMXM .-XB.p._ E E.M 8X- <X- x.[ u.W pX6 %XFXF G u * oXC.v o bXmX0 =.OXyXa.D 8 a.aX5 `X1 BXD.w 9 HX>X>.CX>.4.L.4.C.@X> w.@.4.4.4X>X8X2.CX>.C.4X8XfX8X>.J.<Xq.m.CXp [X,.H.8.8X,Xc.YXpX% U.9X5 TXlXl 1Xl T.~X- t.~ a.e aX- a.~ aX-X- aX-.eX- a 3 a t t a.e.aX-X- a < <._XnXp HXC s vXD $.% $XDX5.nXOXdX1.k ~XtXtXtXtXtXt.k eXt eXtXtXt.rXt e.rXdXt.r ~ ) ) T ]Xy 4Xy.n.nXl g '.ZX. 4Xw ' DXJXKX.XJXK.~.a R t R aX-.9XJXcXK hXDX, 3XlX, h.Z c $ hX- R.e.D '.0 mX. R 3.K.5.8.HXV ).D.`X1.8X-XI 3 k V k k.,., ` ' $ $.'XlX, $ 1 $ `., kXc nX#X0Xf.PXiX6X6.@X4X6X>Xi.@X8.C.p..._.p.Y.a.8X-.`.`X1 8.MXG 1.Z.'.].HX5 5.u.KXo.K.u 3X*.KX*.kX*.rXd.u.k.KXo.k.^.^Xj N",
+"X3.K #XXX3 n n o vXF.).s 2 2.NX0 T.X.5 ).R.R q./.$XgX*XjXt ~ ~.r.rXt.k (.$ $ R Xq v %.s .XpXpXl 3XVX*X* ~X9.$Xt.k cX*.K 3 ~.u.k.XXtX X .t.Q A Q Q X.A.zXk././.7 Q.7 AXk q./ d.( iXu i./. .U.c.U.UXk.U.c.U.U.c.U.U.U.c.U.U.U.U.c.c.U.o _.b.o.bXgXx A.(.XXk jXg.X.bXg.k.b./.R.(Xo.zX .b.b.b.o.o.X.o./Xk.:.tX X&Xg.U.U.c.U.c.c.c l l.I jXg.QXg.z.c.o.b.o.b.X.: AXx.t Z.6.z l.cXg l.c.c.c lXgXg.o.b.o _.b _.b.b.o N.b N.^.k N.r.uXV ~ 3X1X-.w v.= 2.= 2.=.) 0Xv /.vXC 'XLXD R RX- R RXD R R m.aXD R.wXLXm o 2Xs 8 t R tX-X- R t R.MXK MXeXe v.pXp.i x 3 < a.eX-X-.aX, cXlX, =X. s.M h.l.l.FX7.[Xp._XqXGX, <X- a R R.*XwXc a.N pXn %X=.) t.N t.MXe y o O b.E.T.G HXLXL.Z.D BXIX1.~ B.DXa 9 H.EX> W ..y.+.jXn . ^XnX4X4Xp .XpXrXnXn MXr.@.x S.;.xXp.Y.MXpXpXpX2.9.` ~.8XI `XSXp.j t.aXI.eX1.eX1.e.eX-X-X- a.~ aX-X-X- a R a a aX- a a tX, a R.e.aX-X- a a R a.MXpX4.Y.q o.w.n.MXy 1.ZXlX5.0 (X1 FXdXt.rXtXt eXtXtXtXt.r.kXjXt eXt.k.r.rXtXt.rXtXd Q : (XI.Z g (.0 g (X1X1.] @X..w : $XD :XDX5X-.e R.~.eX- R a.e.,.GXl.%XwXcXHXc mXcXl.aX- $ 3.D.Z.n.'Xy.] T )XJ.$ T.% ) f.5.H.8X1.`.`XI 3 | 5.,XX k.,X#.Z :.9 :X. hX.XlXS., |.[.O =.O HXi..XnXp.Y v.T.x.P ;X8X8X2.x >XwXcX, c.HXV.uX,X,.n.Y &.>XwXcX. D m D DX3 D.8 ~ ~.8.8.8.8.8 F.8.uX*.r.rXt.r.kXt",
+"X1.a.a a RXq b /.).) *XG ^.N v.'XD ) q f q.A.$X .f q.b.^ N.^.^.k NXt N IXX.KXM X+Xn.<XiXbXi ..<XDXD.r 3 ~X9.K.8X*.`X*X* ~.rXdXoXo.k q.R.z.7 X Q f.IXk q./ fX Q.I.R.IX@.t./.(Xu.z.z.U. .UXk.#.UXk.zXk.#Xk.U.c.c.c.U.U.c.c.UXk.c.U.cXg.o.b.o.XXkXg j.zXg.o jXgX9.b.b.k.kXjX$ N.^ N.I.bXg.b.b.b.oX9 N N.:.Q.R.I l.cXk.c.c.U.U.U l.z.t.:.z l.c l.c.b.b.o.X.X.tX$.z.z A.XXkXg l.U.c.c.c.cXg.o _.b.b _Xz.b _.b.b.b.b.b N.k.k N.rXtXt.u.8.HX-.n s J 0 J ^Xn ^ 0 0 0 b.q s.w s.e R aX- RXD.a R.wXc.eX1.WXL.E 9 2.N.N t t a.eX- BX- R.aXU.j v.) pXn.<X+ x 1 $X- a.aX-XD.a 1.Z s TXwXe h .l .[XB.F._ p E x R R R R a a.9 $Xw aXD pXn .X=X=.N u.M R C.n v v HXC.+.O = o.nXLXaXsXD.eX1X1 8.n s HX>X4X+X4.gXr.xXqXGXqXnXq v.j 1.pXGXpXqXrX+ [.j.jXr.pXG.- R.' vXp.x.j $ F.8 ~X,.[Xr zXn.wXc ' :.Z : :.e RX-.~ RX-X-X-.e.e a.~X-.~X- aX-X- aX,.e aX- a.e RX, c h t._XnXp.j H.n.nXs R a sXl.n.0 gXaX1.`X5XtXtXtXtXtXtXtXtXtXj.rXt.rXt.r eXtXjXt e.kXt.r.k.r.`.HXV.` '.2X5XD.`.`.Z.].wXD.e.a aX- BX-X-.~X- R RX- a R a $Xl xXl :XcXc R $.Z.MX-X-X-X-XD.'.0 4Xy.].H.k cX*.u.u.u.`.k.uX-.8 3.`.8.8X*XX.,.,.% k.3 1XK V T.- x.3XH.3.SXh.3 = =.>.T.; & &X+Xp.E.<X6.P.P ;X8 ;.< >XMXIX-.~X-.` B R x v.. 0 v v.ZXDXIX1.`.`XV.8.8.8.8.8.8 ~ ~.rXVXt.rXt.r.kXtXt.rXt",
+"X1X1XI.a.M x O.) C t.).< / v.nXX.8.8.r.kX9 N N.b N.o.KX9X9 NXt.^X*.rXM.kX*.K., # h.i v.@...s.CXpX+.9X, 3.r.8.r.r.a.r 3Xt.u.kXt N.X (.z A ZX@.t AXx l./Xu.7.tX@Xx l.t.( dX X .z.z.UXkXk.z.I.U.c.z.z.zXk.6.U.U.c.U.U.U.U.U.c.U.c.c.c.UXgXg.b.o.bXkXg.:X9.X.z.7Xg.o.X.bXtXt.kX$Xd N.XXz.b.b.b.b.oXg NXg.z jX X .U l.U.c.U.cXg.c.c.c.6.&.: i.U lXg.o.o.b.^.o.z.R ( jX@Xk.bXgXg l l.cXgXg.o.o.b.b.b.b.bXz.b.b.b.b.X.b NXjXjXtXoXtXt.u.8.8X-XIXK gXCXP.q H & yXC yXCXCXP.n s.Z a a a R.a.a R.ZXcXD.a t.ZXa o o.s.N.d t t RX- RX-X- R.a h.M.W.N.)XeXnXp .i c.} a a.aXDX,Xl.M x $ x h `XBXBX7X7.FXe.m.W UX, a.e.aX- t aXD.eXD t.* E...@.sX=.N.* t.M tXDXL v y o.. y 0XC.q 9.n.w.nX, R.*.MXaXG.q oXq C.d.M.M <.M.M.M t.M < h.M 1.M.M.M.M.W.W._Xq._XL.M.* RXD UXpXp.j `XI.8XIXDXJXHXh.1.1.-XwXK.%Xc D 3XDX-.aX- aX- BX1X-.~ R.eX- a a a a.~X, a.a.eXIX-XD.a x.9.M.9XnX>Xr.!.w.w.*Xl $.n.w T g DXV F.8.kXdXtXtXtXt.rXtXtXtXt eXtXt.kXt.r.kXt.rXtXt.r.k.kXt.u F.8XVXIXI BX-XI.~XD g s RX- aX- B.~.e.~ a.e.e.e.e.~ R aX-X, 3 RXDXDX,X,XD RX1X,.MXDXI '.0 ' TXy.DX5.u.uX5.KX5Xo.KX5.5.k.u.kX*.uXt 3X9.$ k | `.-XMXD hXI a.aXKXc k kX.XUX0.!.>X0 w w.. y._ *Xn %.P.CX8X2.<.F.p h a.8X1.`.`.~.aXG v 2 v v.9 RX1X1.` 3XV.8 ~.`.8.8 ~.r.r.rXtXtXtXt.rXj ~Xt e.kXj",
+"Xd.D 3 cXG 9 oXL E E.xXG.vXK.}X*X* NXk.XXkX9XkX9.f qXkXkX9Xo.KX5X*.rX9Xt.K 5 ).8.a.MXGXnXb.. % . v.9XK 3 3Xt 3.rXVXI.HXI.rX*.r.& ].R.t.7.t X.I.I ZX&.7 X.&.U.z X.t A.7Xu qXg.z.UXk.zXk.IXk.I q.I./.I.U.&.I.UXk.U.c.c.c.c.U.U.c.U.c.U.U.c.o.b.b.U.XX Z.U Z q N N.XXj.k.r N 7 ).X.R.o.X.o.b.b.o NXg N.z.:.z.z d l.U.cXg.U.U.c.U.z.t.IX&X XgXgXg.b.b _.o.X l lXo.t.:Xg.o.X.o.o.oXg.o _.o.b.o.b.X.b _Xz.b.b.b.b.bXz.kXtXtXd N.uXt.r ~.H.`X1 T.!.! 0XG J.nXn.wXGXa bXL '.Z RXD.e R a RX, R.* aX- R R.WXa 9 o 2.N.N t t a aX- B B a t t a C u.N.sXsXn y.Y.F # $.} <XDXD x.a.}.} #.l XBXr.- vXeXe U u C h t.~ RX- a R aXI B R 8 E.)X4XiXb.W vXe 1XD 8.WXe x v.w H 9 0 vXCXC 9XaXaXLXD.DXL b y.E J t < aX- a R aX- tX- aXD $ 3X- R.e $.9XD.Y.W v.YXD 1XI.'.dXnXp [.Z.8.HXIXI.K n.-XwX+XpX,.}X,.`.aX,.eX-XIX,XIX-.~.eX-X-X- aX-X-.~X-X-X- R R 3 $Xc tX3 1 s xXqXnXp.x H vXLXDXDXwXw.' 'XU.0.0.k.`.8Xt.^.rXt.r eXt.r e.r.r.rXt.r.r.rXt.rXjXjXtXtXt.r.kXt.r.u.8.u.`X1XI.H.8XVX,.2 TXlX,X,.aX,X,X,XD.u h 3 3 hX, 3 c.,.,.]XK.ZX5 :X,Xc T xXl TXl.'X..2 !XJ.Z.HXIXV.H.`XI.H.~ F.8.u.`.H.`.8.8.8 ~X-.8 #XJ ` `XM 3.a.}.a.aXc.[X.XwX..>XK b & =X0X0 HXr.s.m GXAXA.C.{XA.J.{X2 # R.`.`X-.`XI < v.sXb.s b x BXIX-XIXI.` 3.r 3 ~ ~.r.r.r.rXtXt.rXd.rXtXt eXtXj.X",
+"X-.`.`.M vXL vXs tXp.s.) 0 v.}X*Xt.XXgX9XgXkXkXg.f.$ } I.A.%X# IXX.|X9X5Xt.5.k :.0XJXwXUXr.j.p nXr g.Y.K 3XVX* 3XV.u.Z c.ZXdXx ,.X.f ,.7.&.z.I.I Z fX d.I.(X XuXu.z.U l l.QXg.zXk.UXg.f.zXkX q././Xk.IXg.c.#.c.c.U.U.U.UXk.UXk.U.c.c.c.c.o N l.o.b l q.bXzXg.b NXjXj.kXt.k ).IXg.b.b.o.o.o.bXg N.z.7.: i.7. .zXg.c.U.U.c.UXu.7 i.U.(.:. .z l _.X _.X.z.7.t.zXxX .^Xg.b.b.o.b _.b _.b.b.b.b.b.b.X.b.b.b.X.b.b.kXj eXt.kXoXt.u ~.8.H.`X1.H.' g.nXmXL xXa.w.w s.wXaXy sX5X, c.a R.aXI R R R B.a t.DXLXGXm O.N.N C tX- RX- RX-X- t R <.*.* C 2.N 2 v.EXBXM.l #.} < <X,.a h h .l X%XcXqXeXe.W < u.* h R.aX- RX- t t a R a a U pX6.@ 2.)X+.Y.> nXH n.jXe._.W.>.= 9XC v JXCXm bXeXLXLXe b H.E s 1 t.a aX-X-.~.e.` B.~ 3.KX1X-X1.~.uX, <X,.M.M.M.MXDX-XD.dXqX4XwXlXIX1XI.uX1.0.,.YXpX4Xn t R.a R 3.e a a.e R 3 3X, RX-.~X-X-.e R.eX-.eXI.ZX..e.[.9 sXq.wXnXp.EX> WX> s.w.D R RXc.w.0 g 8.H 3X*.K.5.XXo N N N N.X.XXo.XX9 N.X.X.X.X.5 NX9 N NXx N.K N.5Xt.u.kXI 3.H 3.8 3.DXJ 'Xl $.a cXIX-.~X-.e.e RX-.e.~X-.e R D 1 `Xc.,XcXK DXJ xX.Xw.'Xw !X;X; 'X5XV D.u.5X9XoXo )XoX5.$XV.8.H.8 ~.8 ~.8.8.5 I DXXX3 #.a.}X-.}XKXKXHXw yXUXm s.qX> w & SX0X6.sXFXf...JX8.{XA +.y x.aX-.`.`.~.` t v..X= 0X+.w.9X5 ( ) q D ).f.r.8.rX*.r.rXt.r.r e.r NXg N.r eXj.b",
+".`X-.a h b.s.s u UXn.)..XG x.`.8.^ N.b.b.b N N.5.kX9Xx.KXlX5 c cX*.K.X ~.r.r.^.&XxX5.wXDXeX, x x hXDX,.ZXV V I.,XMXl.-XK.%XJ : T.$ } Q.t.AX&.:.tX& XX .7.7X .(X&Xu.6X .( Z./.6.6.fXu./ Z.f./X ././.I.I.I.I.I. .I.U.U.z.#.z.U.U.U.U.U.U.UXkXg.o.QXgX9.oXgXkXg.X.b.b.k.^.r.k.k.^Xj NXg.bXg.b.b.b.b.oXg.bXkXk l.o.c.c.cXg.c.c.c l lXkXg.z.#Xg.oXg.b.b _.b.o.b.X.^XgXk N.b.bXz.b.oXz.b.b.bXz.b.^.b.b.bXz N.b.b.^.k eXt.r.r.k.k.r.r.r.H.`.8.` BXI.!.0 sXa RXD.MX1 8XD T.n 1 :.,Xl aX- R R R a B.M R RX,XaXGXC.sXv.N.* t aX- a B.e aX- a a t t.* 8Xs.N.)._X+XB.FXM # h.a <X,.i.l XB.[Xc._.WXe U 8 t t <XD B.e B B R a R a a t.* U E pXfX6 2 vXL ' xXG.9.wXe $ UXsXsXG.) J J OXC.q o.s v.E J.q.E v.M a.~.eX-.~.~X- R.~X-X1X-.K.eX-X1 R R RXD.M <.M.aX1 R 3 tXG.x [.9.u.uXlXxXxXIXJ.[.jX+.pXp U.a #.a 3X,XIX,XDXIXDXI 3XI 3XIXD cXDXD.ZXD h $Xw.9.wXl._.9.jX> y.jX0 H o s.w $X.X,.nX5XP.0.HXV ~.rX*Xd.X.rXtXtXtXtXtXtXtXtXt.rXtXtXVXt.rXt.rXt.r.rXt.r.H.r ~.H.u.`.`X1X-.`.~.HXU 1.GX,XK :XK `.] 1 5 hX- RX1 a RX-XIXDXl.a.aXI.a RX, a RXD $ 8.0.w.2.2 5X9.% q.$ ] 5 Q.A.R.$ 5 )XI.H.8.8 ~.8.8.r.`XI 5X# |.,Xc.}XD c h.,X# K.>XwXw 9XDXm yXG HX0 SXn %XnXi . w.T.T.{ rX% aX1.`.`X- B.aXG.s.v.. y s.5XX ).5 )XxXX.5X*.rXtXtXtXt e.rXtXtXjXg.IXj e e.b.^",
+" 3.a.}._XL...=.WXp *.).).9.w.r e.^Xg N.X NXgXo.kXdX9.5Xl )X3X*.5.rX*Xt ~.^.^.^Xx N.KX9.KXM.5Xl ` : cX5XV.uX5X3 I.,XH.Y nX>.j.9Xh.0 5 ).$X .7.(.t./.& PX ZX@./ i.& d.7X&.6 d.z lX@.&./ d.I qXk.z.UXk l.U.I.U.U.#.U.#.#.#.#.U.z.#.#.#.U.U.U.cXk.IXgXk.UXkXgXk.cXk q./.XXx N N N.XXk.U l.U.U.#Xk.IXk./.6X@.6.I.6. .I. . .I./.6.6. ./. . .I./. .I.U l.z l.z.z l.z.I l.UXk.UXk l.z l l l lXk l lXk lXkXg lXkXg.X.bXo NXo N.X.XXoXo.K.rXt ~XVX,XD ' ! 'XlXDXD.ZX1X1XD RXs.aXD.a.}XI.M.}XDXDXDXD R RXD.W.n 9 & b.WXe.M.M.MX1XIXIXDXD.M.M.a.MXI RXDXs.WXL 0X4.p kX+.F `.i ` n W [.9Xq x.w U.M.}XDX,XeXDX, 3XIX,XDXD 3XDXI h h.. .X>.4Xn vXG s.' '.9.9.YXG x sXDXL.w M b.@ 9.E &X0X0X0.;X0 y yXDX,X,X,XDX,XDX,XDXDXI c 3 :XI 3XDXJXl 3XDXl $.9XcXDXV ' xXp nX%Xw 3 3.k.XXVXVXl x.YX+XpXn h.M c RX-.eX-.~ RX- aX-X-XD.e.a.e tXD UXJ.M h.M h._XnXGX4 J.YX> & yXGXL.0 s.,.2 $.Z.nXP 'X1.`.8 ~.k.r.X.rXt eXtXtXdXtXtXtXt.5X*Xt.rXt.k.k ~XdXd.rXoX@.z.RXV.8.kX1X1.K c.8XVXD.2 g.OXcX.XKXM DXKXJ : 3 R.e.~X-X1.a a.`X5X-X1XI RXI RXI R 8.M s x gXIX5 3.r.uXtXV.r.r.X N.K ~.8XV.kXt.k F.8 F.r.H.k ~.$ }X.XHX#.% kXc.-XJ K K.O @ !XUXD.wXK J =.xX8.@..Xi.v w S.y.4.4.{ LX2 h RX-.`.`.` R x oXe ^ T.*XI.8X*.8XtXt ~.r.rX*.rXt.r e.rXt e.r.^Xz.^.^ e e.k.b",
+".u c s ..)X4 vXp.).s.)XL.9X1.HXo.b.b N.b.b.k.rXtXt.k q.KXkXXX9X*.r.X.^.X.o.bXg.^Xg P./XoXtX*X* I.|.K Y.k D I )X#.SXh.T & . OXn.j.3.5 N }.(.f./ qX@ f.7 Q./ lXk l Z.(.6.I.I.IX&X .#.6.U./ l l.U.U.z.z.UXk.U.U.c.U.c.c.c.cXk.c.c.U.c.c.cXg.o.b.b.U.o.o.b.b.o NXg eXt.^./.kX*.kXt.r.b N.o.b N.b.b.b.b.XXg. Xg.cXk.cXk.c.c.c.c.c.cXk.c.cXk.UXgXg l.b _ _.X.bXg.X.b.zX9Xg.o.bXg.o.b.o.o.o.o.oXg.X.b.X.b.X.X.b.^Xd.kXd.^Xd.k.5Xo.k.kX*Xt.r.u.8.HX1.' g.n.nX1 $XVXDXIX1 8XD.aXDXD.a.aXIX1.Z.MX1.M.a.MXDXDXLXG.q 0.= 2 C <.a.a R RX1 RX- <.aX- R RXD 8XL.s.).)...<.[XBXM XB XB.pXw.Y._XeXe U.a <.a.a.M t.Z RXl R 3 a R.aX-.aX- t.M E.m.@Xi.)XeXsXD.W UXa.M xXe x 1 $ t C u.WXm.NX> O.@.;.@.@XGXGXG $ a.e.e.e.*X-.* a a aXD R.u a.* RXJ :Xc DXc.Z h D.]XJXcXJ.1 z WX#XD.H.8.H.r.8XV.Z.M.pX4XnXq.M h.~X-X-X-X-X-.~.~ RX,XJX,.w hXc.9.eXeX+.FXpXpXpXpXnX4Xp.jXrXrXG.nXa.'XD.*.9 'X1.nXa ' DX-.8 ~XVXt.rXo.rXtXtXtXtXtXtXt N ) PXk ) ) q.$ ( )XxXx (.XX$ Y Q D.R.2 Q.| ).%Xo.%Xx.2XU.'XD R.~XDX,X- RXI hXD.u 3 3X,XI.u RXl 3X-.eX1 R.aXD.a R x.n T mX1XI.rX*XtXtXd.k N.$.XX*.k q F.k ).u.r ~.rXd.r.rXV.H.k.,.-.,XK.}XDXXXX [X..OXGX;X,XD.w.jXU zX0 MXi w ^ z = & = w L.{.CX+XBXqXl.`X-.`X-X-Xe s s.WXI.8 ~ ~X* ~ ~X* ~ ~ ~XtXtXtXtXtXt e e e.^ N e eXt.bXj",
+" <XpXeX=.).. ..) /.sXpXG $.8.rXz.o N.b.^ N e.rXtXtX*.rXt.kX*X*X*.^.UXgXk.o N N N N.5.k.K 5Xo.kX@ 5 5.& (.5 5.K 6X7.hXpX6Xi..Xi & yXc } 5X3 N |.( Q Q.$Xk.5.A )XxXkXg.z.&.(.IXu.I.z.U.Q.Q l.U l.U.UXg.Q.U.c.U l.c.o.o.V.o.V.U.c.cXk.U.o.b.o.b.o l.bXz.oXg N.o.bXjXtXtXtXjXjXtXj.k.b.b.o.b.o.o.X.o.bXg.o.I.c.c.U.c.U.c l.U.UXk.c.U.cXk.c.c.U.c.o.b.b.b.b.o N _.b.U.b.b N.b.b.b.b.b.b.b N.b.X.b.X.b.X.^.^Xt e.rXtXt.rXt.u.k.k.rXd.uXt.8 ~.8X1.`XK.0.w.w.D.e RXI B R R RX1X1X-X-XD R.aXD RX1 R R R R R.nXLXC 0.N.) t t a R.e aX-.* a a t a a.~XIX,.* u *.)X=..Xr 1Xq kX+.-XpXnXe.W.} < t.a RX-XD tX,X1XJ.5 TXJ 1 :.MX-.a <.M E.sXfXi.)Xe U.9XK ' y y nXK.9XK xX- t C C CXG.E 2.v ^.xX4 .XGXq.Z R.a xXI t.* a t.eXD.M.a h.e a RX,X- :.5Xl 3XD.ZXI 3 c.M xXp.YXw.M.8.8 F.r ~.H cX- $.pXpX4 UX,X- RX-.`.~X-X-.e R.uXH.a.[ $.YXqXqXqX4 ..<.J.<.<.x.xX2XrX> v.n.w.n.nXOX5 BXaXaX5.0 (XP.H.8 ~.rXt.rXo.r e.r.rXt.rXtXt.5Xk f.f }.&.|.f f P.R 5Xx.X ].R I 5 QXJ 5 ).] 5.5.| : '.0XKXl 1 '.a.e R R BX- a aX-X-X-.~X- 3XD cXI R R RX1X1XDXs.9.' g.]X1.rXVXt.k.r.rXt.X.z.X.^X9 )X*.5Xx ~Xt.rXt.rXtXt.r.rXI #., `Xc.}X-.} ` [.%X.XhXy.jXw., @X;.GXZ.T.O.L =Xh.OXC.E =.@X6.4 ;X2X# X1.`.`.`X-X1X- tX,.H.8 ~.8 ~.8.8.8.8.8.r.rXtXt.r e.r.rXjXj.bXg.b.r eXzXt",
+"XLXn.sXvXF..XFX=.v 0XGXBXI ~.r.X.^.X.b.bXjXtXjXj.rXj NXkX9XgX9.bX9.IX9.o.k.k F 3.H 3XV I.k.HXoXdX*.r.K.K ~ NXMXJXh.1Xp..Xb 0 SXh.O.OX..K.kXt.X 5X5.K.AX9.A.$Xd.5 N q.A.&X@.I.z.z. .#.U.Q.U.c.# l.#.U.c.U.U.c.#.c.b _.o _.o.o.U.#.o.b.b.b.b.b.oXg.o.b.b.b.b.b.bXj.^.kXjXt.rX* N.o.X _.b.b.o.b.o.b.bXg.b.I.cXk.c.c.U.c l l.U.c.UXk.c.UXk.c.UXg.o.b.b _.b.b.b.X.bXk N.b.b.b.b.o.b.b.b.b.b.b.b.X.b N.^.kXdXdXt.rXt.rXd.rXt.^X5.rX*XtX*.r 3.8.8X1 T.'.DX.XlX..e m.* DXl c kXK hXc `.,X,XHX. x $.2 a.>X1Xa.wXC 0.=.N C a R.eX- R.e a t a.e R.e.~X- 3.e C.* *.) 0.j.p.Y.p.[X7Xp._Xe v h U a.a R a.a.a.a 8X, RX1.Z.~X,X,X,Xl.e a R U E...CX=.s.).M.9Xw sXK.YXK x hXD.aX- t a < R uXs / /Xi.CXf.F E < t.*X,X,.YXlXK $ :.9 1XcXl.9 a R RX- 3.u.~XVXI t aX-X-.~ R.MXp.< [XD.8 F ~.r.u.rXt R RXBX+Xp v UX1.~X- RX-X- R aX- UX,.a U 1.FX4Xn.F.J.<X2.p.pX+X+ .X4 HXqXLXa.D.DXd.D.].*X5X5.0XP 'Xo.`.8 ~.rXt.r NXtXt.r eXt.rXt.rXt.k NXt.kXt.kXtXt.k.k NXV.rXdXdXV.rX5Xd c.8.~.`.`.~.~.~ gXO.O gX. : ' D TXJ 3.aX-.`XI.~X-X- aX1 3.Z RX1 RXIX1XDXl.0XKXy.Z.DXVXkX*XdXxXx.bXo.^.K.kX9.z.kXx.KX9XxXdXd.r eXt.r.r.r.8 VX3 :XMX-.} `., [.2 nXw.'Xl.n.] !.q.>.+.+X0.+ @ = 9 b H.;.C ; r.{XrXp.aX-.8.~.`.~X1X1.HXV.8.` ~.8 F.8 ~ ~.r.rXt.rXt.k.r eXd e.^.I./ l.r e.kXt",
+" ^.v 2 2X6XnXbX= 0 JXc x.`Xt.^ N.oXoXtXt.r eXjXtXjX9Xk N.z.f q.z.A./ qXx ).u D.0XUX5X5XD.8 ).R.r.H q.$ qX3X9XM IXZ KXp o oXG.j.O !Xc :.8 3.k.5XoXo ( T.A :.uXx.0.zXx.f.X.XXkXg l.z.Q.#. .U.c.#.c.U l.U.#.U l.U.c.b.c.oXz.c.U l.b.o.b.bXgXz.oXgXg.b.b.o.b.b.b.bXj eXtXtXj.k N.b.b.o.b.b _.b.o.b.o.b.b.o.IXg.c.c.c.c l.c l.c l.cXk.c.U.c.cXkXg.b.b.b.b.b.o.b.b.b.UXz.b.b.o.b.b.b _.b.b.b.b N.^.^.^XtXjXtXtXt.rXt.rXtXVXd.k.k.r.uXtXtXt.8XV.8.`Xl gX5XyX..2 xX.X5Xc T x mXJ $ :.Z 1X,.% :.-XlXJ h.2 1.w.sXC 0.= *.M.* < aX-X-.e R.* a R.eX-X- R 3 a a t C.) v.@.EXp.YX+Xp.W.i.W 1.a.M < R <X-.aXI.a.aX, R B.~ R R R R aXI a R U E.s ^.B 2Xs <.}XD.} RXD.M t RXD R R B RX- a R C.)X=XiXf.JX4 U t.}X- RXMXDXlX, $Xc c.u : #.u.e R.eX- $X-.~ 3 3.e RX-X-.~.a t xXp.Y U 3.8.8.8XxXx.K.`X-.'X+XnXpXe RXD R R RX-.aX- a a t u._XnX4Xn.<.<.{.p.{X4 ...XA.mXn WXn.wXaX1 B.H.0.D.n.nXa g.Z.` B.` FXVXt.r.rXoXdXtXtXtXt.r e.rXtXtX*Xt.rX*XtX*Xt.r.kXt e.kXtXtXdXd.k.kXo.r.8.8 F.`XIX1.2 T 'XcX1 TXc 'Xl TXI.eX- RXl R.eXIX-X-XIXIX, RX1 8XD.w.nXP @.].2.R.| ].I Q X.R 5 f.&.t f Q 5.f.A P.f.fXtXtXtXtXtXt.r.r.a ) VXX V h #XX ` k =XUXP.9.wXD.nXP.! &X0X0 yXCXU.!XL s 9.;X0.yX8 r.C.p.w.a.8X-.` F.` B F.k.8.8.8.`.` ~.8.` ~XtXVXt.rXtXt eXtXz.bXg.XXgXjXt eXt",
+" /.v 0 ^.j.@Xi 0.@Xn.9 3XV.r.^ N.k.X.X AXk N N.XXgXgXkXz.XX@X Q.|.&.& I.] DXJ T.GXq m |XV.$.8.H.$.KXX 5 q.$.$Xc.% n.'XmXG.9 TXDX,.u cXV.H ) (.2 ] YX5X9.8 cXVXJXVXVXo.k.KXgX@ dXu.Q d. . d iXu i.I.U.z.Q.6.I.#.c lXg.I.z.I.zXg.o.b.o.bXz.b.oXg.b.b.b.o.b.o.bXj.k.kXtXt.k N N.b.b.b _.b _.b.b.b.b.b.b.#Xg.cXk.c l.c lXg.c.c.c.U.c.cXk.c.cXg.oXz.b.b.b.b.b.b.b.U.b.b.X.b.b.b.b.b.bXz N.^XjXjXtXt.rXt.rXtXtXdXt.rXt.rXt.^.kXt.r.u.rX* ~ ~XI.`.DXU '.'.M.ZX,XD hX, $X,X,X,X,X,XDXD.ZXDX,X-.aX,.Z R.ZXaXa.E b.=.N C t tX- a.e a R.e a aX- a B.aX-X- < <.*.N.s O.s..XpXn U E UX, h < t $XI.e RXD.aX, tX, RX- RX- t.a t.a.e.e < U U.. ^.v / u 1 h aX- t R R R tXD R.* aX- a a.a 8.N / {.CX4 . U < x cX-.eX-.e.eX1XD a.aX-.~ c.~.a.e.K RX-XI.eX5 R a a.~ R.~ t EXpX+.[XI 3XI.8X*.H.k F.`X,.-XG.YXp.Z RXD.M.a t t t t t t <XnXG.<.p.x.{ >XA ..m E p U p._X>X> x.nX1 BX1X1 $.wX5 ' (X1X1.`.8 ~.rXt.r.r.kXj e.rXt.rXtXtXt.rXt.rXtXt.k.rXtXtXtXt.rXt.rXt.rXt.r.rXt.K.r ~ F.~.`.~X1 g.'XPXDX1X1 B.~ B.eX-X-X-.eX-X-.a.~X-X-.Z.~X, R R R $ T sXO.] B ' :XxXoXx ).X.XXoXx qXx NXjX9.k.XXo.k.kXdXt e.r.rXtXt.r 3 # VXXXXXJXM.,XBXJXH nXwXP.'XaXs gXLXO &.q 9 s.n.n.w.wXL 9X0 rX:X:.{.@Xr.- k ~.`.~.` F.~X*.r.8.8.8Xt.`.8.H.`.HXtXtXt.r e.r.b.X.b.b.^.b NXjXt.r",
+" ^ 0 &.jX0 &X0.xXpXp xXI.8.rXxXx.& ].R PXk.X.^ NX9.o.X.X.R 5.z (.R IXX ).$ :XJ.2 k IX# 6 V 5 c D D.u.u.r.8Xt.r 3X1 'XK.Z.D.u.K.r.u 3.8.K.~Xx ]XO.2 (X5.8.8.8.8.H.8.K.8XtXtXo fX@X@.Q ZX X Xu.6 X.tX&.f X ZX&X .I.7.&.(.6.t.t.(Xg N.b.b N.o.oXgXgXz.b.o.b.b.X.b N eXtXjXtXj N.oX9.b _.b _.b.b.b.b.b.bXg.IXg.U.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.o.b.b.b.b.b.b.b.b l N.b.b.o.b.b.b.b N NXz.^Xt.rXt eXtXt e.rXtXt.r.uXtXtXtXo.kXtXtXt.rXt.r.8.8XVXDXOXl.nXD R R t R tX- R.aX- t B R.aXD.a a.a R a a R.*.DXaXm bX= /.M.*.a a a R.~.e.aX- a R.e aX-X- R a.e tXsXs.) 2.).@Xn E h t.}X, 3.% 3.9XI RXJ.ZXD $XU x.~X-.9 D a a hXJXK.e.} p.m.@.B.) u.Y 1Xc :Xc.Z U.a aXD a BX-.eX-X-X- t.N / 2 wX6X4 E a R aX-.~.eX- R.~.~.~.~X- 3.u R.~.HX,X-X-X-.` 3XD a RX-.` a.a u vXpXr.- RXDXI.` ~Xt.8.8X1 x.-XG.pXG U U UX, U.M < t < tXe.F >X+X4XA.m p U . E U E.d.W EXn n v.nXD BX1.n.n.0XU D T B.`.` ~.8XtXt.r e.k.k.rXt eXtXt.rXtXtXt eXtXt.r.rXt.rXj.r.r.k.r e.r eXtXtXt.X.r.r ~.8.`.`.` g.0Xl 'X-X-XIXD BX- aX-X-X-.~.e.eX- cX,X1 R.ZX5.D.D.w.0X;.].DX1X9.uXd.r.rXd.rXt.k.r.r.k.rXt.r.kXt NXt.rXtXt.rXt e.rXt.r 3X*.,XXXM VX3 k V V.-., =XU 9 sXD.!.n sXm.' 9.n.n $.DXs.w v &XCXA {.{.4 W.TX+ a 3 c.`.`XIXtXI.`.8.8X-.r.5.8.8.8.H.kXV.r.r.^.^.^.b. . Xg.^XtXt e",
+" w J &.!.!XG.;.@X+Xp :XV qXk 5.K.A.A.A.A.z N N N.^X*.^.k.r.r.HXt 3 3 ~X-.8XI.`X1.HXI 3 c V ).5.HX5.k.k.KXk NXo.k.u :.5X*.KXt.XX*.rX*Xt.^.rXd.H.H.H.H ~.8.r.8.8.8.~.8XV.` ).^Xo.z.IXk d.I.I.I.z.I.I.I.Q.R.Q.I./.z q.I./XxXg.I.$Xg.XXg.^.b.X.b.cXg.b.o.b.o.b.bXgXg.^XjXtX* N.o.b.o.b _.b _ _.b.b.b.X.b.c.UXg.cXg.c.c.c lXg.c.c.U.c.c.c.U.c.cXk.c.b.b.b.b.b.b.b.b.U.b.b.o.b.b.b.b.b.bXzXjXt e.rXtXtXtXtXtXtXt.rXd.rXt.u.rXo.kXt.r.rXd.HXt.H FX1XI @X; : 8XD <X- t tXD B.eX, BX- a.e.aXDX- a a R.e R R.ZXa o J.=.N.W.j.aX3.e.a.eX-.e.ZXc.e a a a.a.u T.e B RXs v H 2X>...W U U # c 3XK.|.Z R.e nX,.M.- x.'.eX- :.Y.M.a.}X. `.*.M E pXfXb.) 8XeX,.9 x 1XD 3.a aXDX1 RX- a aX-X-.*.N.=.B.CX6XnXe a.e.~.~.a R.e BX-.eX-X-X-XI.eXx ` DXl 3 1X5X- 1XK.Z.a R.~.~ t tXeXpX+ nXcX,XD.H.`Xo F.8 RX-.9.YX+XpX4Xp.Y.<Xp 1Xe.M C.* xXpXnXr.m p E E U h U t t <.WXeXn M.YXe.Z 8.H.D.'Xc.DXVX-X1.`.` F.8.rXtXt.rXd N.rXtXt.rXtXt eXt.r.rXtXt.rXjXtXtXtXt.r.r eXtXt.r.rXt.r N.rXt.r.8.r.~X1Xo g '.' R.~.~X1XDX- a.` aX-X-.e.% c mXJXJ.9XJ.]Xw.3XU @ @ (XJ.$.A.r.rXdXt.r.kXj ~.k.kXtXtXdXtXt.kXo.rXtXtXt e eXtXtXt.rX* 3.$XXXXXX VX# V.[.[ `X.X.Xm.!.w.n.' s.'.n x.DX, 8 B R v.n.q HXf.vXi ;.{X2.g.i.,.] : (Xx 3.r 3.r.r.k.`.kX9XVXVXV.k.r.kXt.z.X.b.o.#.IXg.^ eXtXt",
+" =Xh.OXO.G.>.+.T.h [XJ I I.R |.f./XkXg.^.KXj.^Xt.rXj.r ~Xt.r ~ 3.8.r.`Xt.8 F.H.HX1XV.8XV.`XX.].2.kXt.r l.(.zXx.RXd.H.r.KX9.XXk.^.^XtXt.rXjXxXzX5.^.k.r ~X* ~.8.8 3XV.`.$.r.K.z ) AX@ f.&X@ AX@.RX@Xg.I.I.R.f./.z./.zXk q.z.$XgXk.z.z.X.#.^XzXk.b.b.b.X.b.b.bXg.z dXxXjXj.bX9.b.b.o.b _.o.b.b.o.b.o.bXk.#Xg.cXg.c.c.c.c.c.c.c.c.c.U.c.c.cXg.U.c.b.o.b.b.b.b.b.bXk.b.b.b.b.b.b _.bXzXzXd e.rXtXt.rXtXt.rXt.r.r.r.rXtXd.r NXtXtXtXtXt.rXt.H.`X1.H @X;XP n : $ h $ $ 1 x $.9 x.w.'XKXcX1 a R a aX-X-.e.WXa b o O.=Xe = [ D.eX- a B t.'.3 R R <.a < c 'X- 8 8 C.W.j *X4 v p x.a.}X- 3 :XIX, R R 1X,X,XDXJXlX-.eXl 1XD.*X, xXM R.} E.sX> ..)._XDXD.ZXDXD.M $.} R.a R.e a R.eX- R RXs.=.s.@ ^XnXe tXI.K.e.~.e R a R.eX- BX-XI.~ 1 :X5XKXDXM.KXJ :X..Y k.uX1 R.e u v >.jX2XH 1X1 3.`XdXI.`XI.8XI.Y.YX>.J >X4.<X+.<Xp.F xXe.FXn >.< . EXF u t RXD.e R a.M EXn yX> v.w.Z.wXaXP.0 3XV.H.`XI ~.8.r.rXtXtXt.r N.rXtXjXtXt.rXtXtXtXtXtXj.rXt eXt.rXjXtXtXt.r eXt.rXt e.^.k.kXtXt.`.`.H.D gX5.0.Z.~X-X- RX-.u.aX-.aX- a cX, : ` : 'XJ.9XUXOXP.G D.0 5X9.fXjXj.rXt e.r.rXjX*.8Xj.kXjXtXt.5Xx.rXtXtXtXtXtXtXtXtXtX*.8.,XXXX |.,XS.l V |X3.[XHXU y.' sXD.W $Xl 8 '.ZXl 8 BXaXL yX0 ^.B.PX6 ;X2 ;.T h #.5XoXd.H.u R.`.`XV.`X* ) D.$ I ) ).$.k q./ N.bXz _.b.bXt eXt",
+".@Xm =Xc.!XK.j z.1XB : ].$ )X9.K.K N N.KXt.r.r ~ ~.8.`.8.8.8.8.8.8.8.r.`.8 ~.r.kXV.`.8.`.HXIXV ).f.R.XXxXxXg ( QX9.k.AXgXk.IXk.U.X q.6.fXkX NXg.b NX9 N.kXV.r.H.8XV.5X-.`.k.AX@.(.f.tX X .A.tX Z.6.&.(.(.tX ./.:X .( ,./.7X .f.tX .6.(Xg.b.z.o.o.b.b.o.o.bXg.z A.oXtXj.b.o.b.o.b.b _.b.b.o.b.b.b.b.U.I.c.U.c.c.c l.c.c.c.c.U.c.c.cXg.c.c.cXg.b.b.b.bXz.b.b.b.U.b.b.b.b.b.b.b _.X NXj eXtXtXtXt.rXt.r.rXtXtXtXtXtXt.rXoXtXt.rXt.r.k.rXI FXIXV g.n T x gXc.9XcXJXJXK T x :Xc 1Xl.9.a aX- aX-.e tX-XDXa o o.= G b x $ V a.eX- < R.'.w x a a cX- cXJXl.e t C._XC pX4Xp.F U <.M 3X-.~X1.eX1 R R.MXD <X, a.e R a.e a.a a a a t U E.m.xX>.j.jXGXcXw.]Xw `X, a t RX1X- tX- B c R.*Xe / 2Xf.@ ^Xe a.eX-X-.a.e R.e.e R a.e RXD R.aX1XDXD a 3.a RXD 1 h R RX-X- R._Xp . WXr.x.jXDXD.HXo :.k.8X-.a.a.pXp >.x.{ WX2.pX4XnXpXp ..JX2.F p E u RX- R.a.e $.* <.WXnXn.jXGXL.n.n ' T T.~.8 3.8.8.r ~XtXt.rXtXt e N.rXtXt.rXj.rXtXtXj eXtXt eXt.rXtXt eXtXt.rXdXtXt e.rXt.K.k.r.r ~.r ~.`X- g 'X5 :X5X5 R.`Xl.H 3.` R RX1XI R.`.e x $ B.ZX5 '.0 g B F.`Xt ~Xt.r e.r.^.rXt.k.rXt N.X.zXt.5XkXxXt.rXtXtXtXtXtXtXt.u ~ 3.,.$X# }X# V.} 3 |.[ VXH n.q g x $ $X. T 1.2XKXJ.9 gX..! b.q.qX6Xi ; r ;X8X+.TX,X- BXIXI.k.`.8XV.`XI 3XI qXX.5.KX*.r ~.k.X.o _.b.o.b.b eXjXt",
+"XiXn H y v.Y M hXV.5Xt.rX* 3.rX*Xt.r.r.`.8 3.8.8 ~XI.8 3.8.8.8.`.8.8 ~.8 ~.8.8.8.8.8.8 ~XV.K.&.R fX (.X.^XoXj.k./.^./.cX@XgXk.&.A.6Xg.tXgXgXg.^Xg N NX* ~.8.`.8XV.8.kX* ~.X.X.I./Xk.I.Q.z. .z l./.Q.U./.U.z./.I.I.z.U.zXk.I.UXk.UXkXg N.U N.b.o.b.X.o.X.b.z./ NXj.^.b N.o.b.o.b.b.b.o.b.b.bXg.c.U.U.c.cXg.c.c.c.c.U.c.U.cXg.b.b.o.b.bXg.o.b.b.bXz.o N.bXgXg.b.^.XXz.b.b.XXz.bXzXd.r.r.r.r.uXt.rXtXtXtX*.r.uXtX*.r.5.rXdXtXtXt.rXV F.H RX5Xc.w.w.w.w.Z C t.* t a t t a a t R.a.a a.e a t a a a 3.Z J.E.v /.N R aX-X- aX- R a a.* aX- aX, a a a.e t <.* *.d 2.xX4.m U < <.}XI RX1 R R aX,XDX,XDXDXD a a R.a BX-.~X- R t <._XeXf ^.sXe.N.9.a.M.a.a R aX- R 8 a B.aXl ` 1Xl y.E.sXfXf .._ a.aXI 3.~X-X-.eX- a.~X- aXIXIX-X- a RX- a RX-X,XD R.u a R a.MXnXp.<XfX6X4 &.w.MXI c.5 FXIX-.8 a 1.jX>.x >X2.<.{Xr.<.@.<X4.<X2XA.m U t t RX- cXc.g h C E v x.j.9.'XPXU.2Xx.u.8.8 ~Xt.rXtXt.rXjXj.rXt.r.bXj.rXtXt.r.k.^XtXt.r.kXj.r.^Xj.bXtXj e N.^XjXtXjXtXt.kXg.^XxXt eXV.8.8X-X9XP 'XO.2XK.5XKX3Xc :.%.].].'.$.a.aX*X, s.0.n.0 gXO (.`.HXtXtXtXtXtXtXd ~XtXt.rXjXt.bXxXg.r.X NXoXdXt.rXtXdXt.kXx ) N DXJ 6 , } V.,X-.a.a # VXX.-.>XOXGXK $ cX,XJXKXcXKXl $ '.wXKXa.! &X0.4.T.{ L.xX2.TXw RX1.`.`Xd F.8.8.`.8.8 3XM.5 V ` q :.$.kX9 N.b.bXzXg.^Xt.^.r",
+".v O J & bXGXr .aXV.8 ~.rXMX*.r 3 ~.8.8.r.8.`.`.`X-.`.`.8.8.8 ~.8.8.8.8 ~.8.8 ~.8 ~ 3 ~ ~X*.r.K.kXx q f 5.&.k.r.^ N.X lXk.6.zXg.$.zXk.b.c.bXz.b q.b.RXkXx.5.u.5 #XV.`.8 ~.r N.X.X.Q.z.z.c.z l.U.Q.cXk.UXkXg.UXkXk.UXk.cXk.b.b.b.b.o.b.o.b.z.b.b.X.b.b.b.^.rXj.XXjXtXj.X.b.o.o.b.o.b.o.b.o.b.bXgXk.#.c.cXg.c.U.U.c.c.cXk.cXg.o.cXg.o.b.b.b.b.o.b.b.b.b.b.b.oXg N.o.b.bXz.oXz.b _Xd e.r.5Xo ~X*.r.rXt F.8.rXtXt.u.r.r.XXtXtXtXtXtXVXt 3.` B :XK.w.n.w.w.w.w.Z R RX- R R a R.a.eXD RXI T.a a.M.aXIXIXe b H 0.=.N tX-X- R B.eX- aXD RXI R a.u.~X-X-.a < t u.)XvXn.< . E U < a.aX-X- R a RX5.'X,X,.a 1.aX,.a.e.e.~X- R.e R t U.W p.@.B *.).*.a.aX- R R a R.*.aX1X- R.eXIX, :XG y w 0.@X4XnXe tX1 # R aX1.e aX-.e R.eX1X,X,X-.eXI.e R.eX-XD.% #X- R c a a.MXp ..4Xf %Xf.@.j.aXIXV 3.H.`.`X*Xl.}.-X>X4.J %.mXAX4X+.x.{.x.{.{.mXe U a.`.~ R.M :Xe E.} UXqXq.YXwXU.0.Z 3.H.` ~Xt.rXt e.^.^Xj eXtXt e.r.X.b NXg e.rXxXkXkXtXjXt.z.rXj N.IXk.rXt.IXdXtXt q N.r.rX@Xk.X.r.kXt ~.`XV.DXU.nX5 sXlXM :XM c ` ` DX5XlX1.a.uX-XD.9.n.0XP.0X5.H ~.r.rXtXtXtXtXt.rXt eXtXtXtXt.rXd.r.^Xd.r.X.rXtXd.r.rXt.5 fX9 7 D 5 | , k.$X9.`.a < 3.$XB VX0 y.'.' ` x.,XD R BXDX1X,X1.eXD sXa o.;.@.C...@.{.CX4X+XqX-X-.`Xt ~.8.8.`.8.}XVXMXMXX : :X9XxXo N.b.b _.^Xz.X.^ ~.k",
+".@ 0.!.q bXU yXp <.}.`X* ~.8 3.8.8.`.8 3 3XV ).`.`.`.8.`.`.8.8 3.8.8 ~ ~ ~.8 ~ 3.r.r.r.rXV.r.k.rXj.k N.X.X NXk.k.^.r NXg NXk N.b N.o N.b.X.bXgXg NXuXk.& qXx qX9 ) qX9XV.` ~.` FXk A.zXkXg.I.Q.U.z l.U lXg.z./XgXkXgXkXgXk.c.bXg.o.b.b.b.b.b.U N.bXz.^XtXtXj e.r.rXtXjXj.b.o.b.o.b _.b.b.b.o.b.bXg.c.I.UXg.U.c.c.c.cXk.c.cXg.o.b.cXg.c.c.o.o.b.b.b.b.b.b.b.b.oXk.b.b.b.b.bXz _.XXz.XXz.rXdX9.r.8 ~.r.r N.`Xt.k.rXtXV.u.X.rXdXtXt I.X.ZXVXVX5XU.' s T yXK.'.wXa.ZXI B.~X- RX-X-X-XIXI.~Xl.5.9 TXc TXUXU.j.O.;Xp.j sXlX-.~XVXD.DX5 3X, 3.uX-.u.~X-.e a.*.* u.N 2XfX4._.W.M < R RX-.a 3 R :XKXcXcXJXw T k 1 $ a R.~X- B aX- t U.d...@.s.).) U.* R 3.a 3 a.e.a 3.a B R $ 3 t t t G.N - ^.@XnXq.}.aX,XI.e.eX-.~X- R.eX-XI $.e RX-.e R.e.aX- `XJXIXlX1.~ 3 R UXG.JX> {XA %.@.j EX-.uXV F.`.`.$ k.a.wXr.@.s._.m.m.m p ..<.JX2 >.m E.a R B.0X- 3 <XD t EXe.F.9 : x.`X1.HXI.r.rX*.k eXt.r.b N.^.r e.kXt.r.b.o q.I.rXtXg./.kXt.kXk AXjXjXg.zXk eXj q.r.kXgXkXkXjXt.z q.XXkXo.r N.H.HX1 g.'.n.'XD R.eX-.a aX-X1X-X, cXI RXI $.' TXU mX1XV.H.HXtXtXt.rXd.rXt eXd ~XtXjXtXt.r.rXt.r.rXdXd.kXdXoXx.R fXxX9Xx )XV.`.`X* #X9 3X-.~.` aXM V.,.>Xm.9XaXU.ZXJXwXJX. !X.XK T.e R.n s.w H z ^.vXA.{.4.JXpXB 3.} 3 3.r F.H F.8.`.8.uXVXV.u.rXo.^ N _.b.o l lXzXtXjXt e",
+".> !.q.q b.q.jXG c.}X9.` ~XVXI V #.5.$.u }.K.A 3.`X-.`X-.8.8 ~.8 ~.8.8.8 ~.8.rXtXtXtXt.rXjXt.kXtXt.^X9 NXjX*Xt.k.r.^.^.k.^Xk.o.X.oXzXg.b.o.b.b.o.b.I.z./ qX9Xx.5.K )X5.`.u (Xo.k qX@X@ A.t.tX .t dXu./Xu.t.IXu.f i./././.I.IXkXkXg.oXg.b.oX9.U.b.^ eXjXt eXjXjXd e.kXjXt.X.b.b.b.b.o.b.o.b.b.b.o.b.c.I.U.c.c.cXg.cXg.c.cXg.o.o.b.cXg.U.UXkXg.b.b.o.o.X.o.b.b.oXg.o.b.XXz.b _.XXz.b.bXoXt.8 F.u ).H.H.8Xo.`.k.r.rXtXd.r.X.r.uXtXd.$ 5 5 5 DXJ.OX.XwXUXUXwXU.9.n.wX5X1X1X1XD B BX1X1X1 B 8XD.ZX,.DXaXsXG yXr.E 0.s x x $ cX1X1X1.~.~X-.~X1X,XIX- a R R t 8.N * 0 0 v pXe <.a RX-X1X-X-X,X, R.MXc $XD s.aXDXD.e a RX-.e R t u.W._.J.s 2.W y x.*.e.- : `.eX1 h.3 R.a.e k.9 $ C 8.NX= /Xf.@XnXq.M R.eX- BX-X-X,X-.~.aX1X1XDX-.e.eX-X-X-.~Xl B R `XcXJ 1Xl.aXeXp.<X8 { { {X4.[ h.` 3 F.`.H.8 DXX.,.j M.YXe EXeXe._.m E p.J WXn EXe tX-X- I :X, t < u.i h.Y.} a.8 3.r.rXt.kXtXt.r.rXtXt.^ N.bXj eXj e e.b.X.b.UXj e.X.k.o.k.^Xj.bXj.r.X.bXjXjXt.bXtXj NXt.^Xt.k.^ N.r Q.f.z 5 q ) T ] 4 !.O.0 B RX-X-.aXI 3XI 3X- aX- $ s T g 'Xl.`.8 ~.rXtXtXtXtXt eXtXt.rXtXt.r.r eXjXd.^ ]Xx.X.RX@.| Q.| (Xo.^.r.u.r 3.`.8.`.`.`.~.8X1.8.aX* VXJ !.q sXaXlX, $ c.ZX,X,.Z.ZX,X, $.Z.9 &.q z ^Xi 0.C.{XA.J a.aXIXt.` F F ~.8.8.rXVXt.r.k.^.bXz _Xz.#. .^ e eXtXtXt",
+"XU.j.!.q.0XU MXw n V V 5 VX3 k., }X#.G }X#.,X9 3.`XI.`.`.8X- ~.8X* ~.8.8 ~.rX*.^.k.rXt.^.r.kXjXj.bXgX9XjXtXj.^.rX*.kX*XjXt.X.r.^.b.b.o.b.o.b.o NXgX9.b.X.kXt.`.8.8XI.8.8.KXx ~.8.R ]X@ A.&X@X X@X&X@X X .f./. ./.AXu.& d.f.6.UXk.cXgXg.b.b.oXk.o.^XtXj.^XtXtXtXtXtXtXj e N.b.b.o.b.b.b.b.o.b.o.bXgXg.I.c.c.c.c.U.c.c.c.cXg.o.b.b.cXgXk.c.c.cXgXg.c.c.cXg.o.oXg.c N.o.XXgXg _.o.V.X.XXg.XXdXV ~.H.`Xd.H.`.r.r.H.kXtXtXtXo.rXtXtX*.k.kX*XV 3 : IXJ.-Xc.9.9.,XwXc sXa.DXa.nXaXa.D 8XaX5XaX1.D.M.w.0XG s.9 y H w bXe.W RXI 3.`.`.~.~.`X-.e.~.uX, B.a.* t t G.) 2 ^ J v pX, 8 t BX- RX1X-X-X-.a tX1XD 8X1 R t B aX- a a a <.M E._.J...s *Xn 9.MXD.eXJ :XK a a :., xX- a., s.Z.M.= / /X= ^X>Xq v.a.* aX-.e a x $ ` $Xl $ :Xl.5 x :.Z $X5 :XDXI.e.e.~XD `XcXK.jXG.@ SXb.P.B % WXB aX*.K.`.`.8.KXM V Xw.+X+ v.M U U UXe.m.F >._Xe x : :XIXlX,.Z.e < U hXq .a 3.8.rXt.r.r.r.r.r.rXtXtXtXt.k.b.^Xd.^Xj eXzXz.b.bXdXj e e ~ e eXtXjXtXj eXt.r eXt eXd e.rXtXtXjXt.k.b.r 5.R 5Xk 5 q ) TXyX; 'XlXD RX-X- RXI.e ` $.e.uX5.w.wXO ' RX- ~.rX*XtXtXtXtXtXtXtXt.rXjXd e.rXj.r.r.r.zX@.| X.R (.tXo.rXdXV.H.k.HXt.HX-.`.`X-.`.`.`.~.~.8.}.,.,X..GXO.> T 'Xl.]XD.9XwXD.Z.O.Z.G.>XK =X0 M.;.BXi L LXA >X% [.}.} 3.r F F F F F.rXtXtXt ~.^.b.oXz _ _ _.c.b.b.XXk.Q.X",
+"XKXP gXU s gXwXH VX3XMXXXJ.S |XH |.S }XHX3.K.aXDXI.`.8.`.` ~.`Xt.5 ~.rX9 NXt.^.IXk.rX9XgXjXg./Xk.^.I.I.bXj.zXg.^.^XgXg N.^./.^Xx.b.o.b.o.b.bXg.b.X.bX9.X.K.k.rX*.k.8X*.u FXV.uXxXoX@Xx.^Xx.zXk.RXk.I./.z.UXkXkXkXk.cXkXk.UXkXgXgXk.U.cXg.b.bXg N.b eXtXtXtXjXtXtXjXtXtXt.b.X.b.b.b.o.b.o.b.b.b.b.oXg.I.U.c.c.c.c.c.c.c.UXgXg.o.o.UXg.cXg.c.c.c.UXg.cXkXg.cXgXk.U d.I d.I.tX .7Xx.z.t d f q PXx.A (X.XxXx.`.^Xt.rXtXt.r.XXt.u.rXtX* ~XV.8X-XMXcXXXMXM xXl.9Xc., g.n.nXa.n.nXLXLXL.n.wXa v.ZXaXG s b g.j H M z.E JXn xXI.e.HX5X1X- aX- t R CXl.* tXs.M.).N.).vX6 ^Xe U.N R RX-X- R.~X- R R a.M R RX-XD R R a.aX- a a < a.W.W . .Xb.).N C xX,.e.eX,XI $.e R h R # a aX,XD t.N.=X=.v.v ^.pXn 1 < a a aX-.eXDXK `.]XcXcXK.,.9 $ TXKXJ :Xc.,XIX1.e R R R RXc = z.@.; { % % %XnXwX, cXoXV.~.8XI a a $XB.YX< 1.Y $.M.M E._XeXp.W $ n.,.S R.a < 1 xXqXe E.i `.}.`.rXtXj.rXjXtXtXtXtXj.r.r eXj.^.^.b.b.^ e.^ l _.b.bXjXjXt eXtXjXj.rXt eXt e.^.rXd.r e.r.k eXtXt.r ~.X.rXd.rXV.r.5.8.` B.k g 'XlXl R B RX, c :XJ.]X3 TXc ! !.O D R ~.8X*.r.rXtXdXtXtXd.r eXt.r.r.rXjXtXt eXt.k.^.^.rXt.XXt.k.r.rXtXt eXt.r.`.`.~.8.`X- F BX1X-.8.`XX k g @.nXy g DXcX.XlXK.2 $XwX;.jXOX0 9.+ &.;.; 0 w ;.P.J.p.1.[ < R c F F F.8 ~ ~.r.rXj eXj.bXzXzXz _ _Xz.o.o.z.: 7.I",
+".] g.0 DXUXHXH.-XB |XH., | [.[X< VXBXc.,.-XJ.K V D I :.8.H.`.5Xx.H NXkXkXt.X.$.c.r.b.b.r.U. Xk.o./.I.^.r./ NXt N.6.$Xj N././ _.o.o.b.o.b.o NXk.&.f.f.$./ ) ).k ) ) ).R.uX9 ).R }.f f ,.R./.7.&.(X@X .tXkXk.UXgXkXkXk.cXk.UXk.U.c.c.cXg.oXgXk.bXjXt eXtXt.kXtXt.kXtXjXt.b.b.X.b.b.b.o.b.b.b.b.b.b.o.I.c.c.cXg.c.cXg.c.U.c.cXg.U.c.c.U.c.cXk.c.cXgXg.c.c.c.U.#.I.( qX&X&X&XkX . .^.(Xx X.R P.& D (.|Xx.r.rXt.rXzXdXjXt.X.rXd.uXt.u.8.8.8.aX3XX #XM # #.lXM 1X3XJ.9XL.nXmXm bXL v.' y b b 9XGXG bXG J s J o b 2.N.w a.a.K.K cX-X- C C.).M.N v.s.W G.).N.)XbX6.@ ..W.W < <X-X-X-X-X- R R.e.a.e R.a.*.D BX- R aX- a a < t E p ..sXv.N u 8 a R.~ RX- 3.~X- R a.a.M a.a a.M C.= / 0 w H.4.jXGXq R t tX-.a a.e.a.eX, R a.* R a R a.e.e.eXIXK $X-X-.eX-X-.a <XrX+.+.CXi { %Xi W.h.j xXJXIX1.`.8 3.aXI.Y.i E.Y.SXH.a UX, E.[Xw x UXq.F < < h.MXqXeXq x .9 c.a 3X*.rXtXjXtXtXt e.rXtXtXtXtXt e N.b.bXzXjXz.oXz.b.o.oXj e e e.rXj lXj N.^Xk.b.r e.^.X.r eXdXt e.^.r.X ~XtXdXtXt.k.8.u 3X1 gXU '.'XDXD 3.eXI.a `X5Xl c 'XPXUXU gX-.`X*.rXtXtXtXtXtXt.rXtXt e.rXd e.rXdXjXtXjXt.kXjXj.k.XXj ~.kXjXt.^ ~Xt ~.8.`.`.`.`.~ FX-.`.`X-X- c., m !Xc T.'.n $ 3XDX,XDXG s s.q.q.q.q & H.4 w w.4 w LXfXb z [XB.a 3.r.8.8.r.rX*Xt.rX*.r.rXj.bXz.o _.U.#.oXzXz l.t d.t",
+" s ' n.-Xw [.-X7 [Xh.[.[.[X7XBX7XB.,.[.[.S.G.3 YXK )XVXV.8.8XV F qXtX9XjX9.rXgXjX9Xj.c.^.^.IXkXg.bXk.oXj.bXkXgXj.I.X. N.Q.X l.X.o.b.oXgXgXk.X./.A./.&X9XXXx VX9 ).fXo I ~Xx.kXoXo 5X9.XX9Xx.5.z./ A A./ lXkXk.UXk.c.UXkXkXk.c.UXk.UXkXg.oXg.o.^XjXjXjXt eXtXtXtXtXtXtXt.k NXg.b.b.o.X.b.b.b.b.o.b.o.U.oXg.b.o.c.c.cXgXg.c.c.c.U.c.c.c.c.c.U.c.c.c.c.c.cXkXg.U.U l.I.U l.z.oXgXg.b.b.XXxXx.XXo.X.u.kXV ~.r.r N NXdXd.r N.rXt.uX*XV ~ 3.8X* qXMXM.}.a < 3 #XlXBXJ.-XGXG yXCX> y HXr HXCXmXC wX>XCXmXC &.+X0 O.=.N.w < a hX- t R 8 U.N.).W C 2Xn.) ..;..X6X>X4.@ v p E t t t a RX- a R a.a tX3.ZXlX-.a R aX- a.a a a < U U.s.s -XF.d.*XU 1 R R aXIXD a t a RX-.} a a a t.N /X=.@ H zXpXGXq x t.e tX-.e RX- $XJ xXlXDX, :XKX,.u.MX5Xl x.%.%X1X-X-.e < aX, yXn S.@Xf H.4.+ MXh.>.> $XI.aXI.~XIXIXI `._ E hXwXl T k U.MXq ! x < < < < UXe E 1Xq X7Xl.}.aXIXV.uX* ~Xt.r eXj.r.rXt.rXtXtXtXt.^.b.^.bXz _ l.b _Xz.bXz.^ eXjXjXk l e e.b.zXjXjXdXg q eXtXt eXt.r e N.kXt.X ]X9XtX*.8XVX1 ' m.0.'XlXD.eX- a R.e.e aX-.e.w.w gXJXl.5.8.X.$XdXtXdXdXt eXdXt e.X q.kXd ).bXt.X.z.X.r.X.XX9X*.^.z ~X* l.rXt ~.`.`.8.`.`.` B.`X-.`.a.8XV `XHX.Xw.n sX5XDX1 R R.D.n.n.qXC J o J J.E w w S w {Xf ; .Xq x.- cX-X*.8.r.u.r.rXt.rXj.rXt.^.b.b.b _.#. .V _.o.b.XXo.b",
+"XU.+.G = =.1.1.S.S.SXB.[ X7 >XBX<.TXhXhXH n.3X,X1 3.8.`.8 ~.8.H NXt.rXtXtXtXtXj eXj.r.^.bXz.b.b.bXjXjXjXtXj eXtXjXg.b.bXg.o _.o.b.b.UXk.U.z qXk NXX.K.k.KX*.r.rX*.K.k N.u.8.8 ~ 5.$ ).K NXkX9Xx l.I.z l.6XuXk.U.UXk.U.c.U.UXgXk.cXg.c.b.o.cX9.bXtXjXtXtXtXtXjXtXt.kXt eXtXj.^.o.X.b.b.o.b.b.o.b.b.b.U.o.b _.c.c.cXg.c.c.c.cXk.c.c.c.c.c.c.c.c.c.UXg.cXk.c.c.#.UXk.UXk.cXg.b.b.b.b.b N.X N NXt.H.$.% q F.rXj.b.b.b.^ A.zX*.K NX*XV.H.`X- : ` # $ a <.a a.} x x ` n.jXG H 0 HXCXi b ^.s 2 2 2.v 2 2XLXG.q 2.WXs.M # # a U R u.N.N.d.)Xe ...._ v.. M zX4XrXn.... E E.M t t < t aX- a R t tXDXw k.Z aXD R a a < a < < <.W.W .X=.) * C.* [ x.eX-.`XIX- B.e R.* tX, a t a t.N.).vX6X0.4XnXn 1X, <.* t a aX- t $ TXK :.,Xc 1XcXcXc TXc D : `X3X-.~.a.eX- a.WXhX+.+.T z M.@ J w H H M M y xX, xXI.uX- #Xp E E.MX,.M [.M U.aXe.M t < u E.iXq XcXB c.a.`.8 3 ~.r.kXt.rXt.rXj.rXt e.r.k.rXtXj eXtXzXz.b.b.o l _.b _.bXzXz.^ eXj.U q.^.r lXk.o.r.o N.Q.^ e.^.^XjXjXj.k.kXdXx ).f f.f }.$ D D @ 4XO.G :.,.e.e R R aX-X- R.Z.nXw Y D 5.|.R IX@.t.R fXoXd.rXt.r.X.Q N.r.IXo.rXx l NXtXk.bXkXtXx )Xt.XXx.K ~ F 3.` 3.8.8 N ).`.`.~.~.` aXcX. m.>.1.9.9Xc.9.wXaXa.n.!.q O 2 2 2 2.v.v.. H wXb %.{X6.s._.Y.9X-.rXV.r.r.r.rX* ~Xj.rXjXz.b.b.b.b.I.U.V _Xz.X.b.b N",
+".>X;.+ n.jXrX< n.-XB k.LX<.S.1.S zXrXe.W.WXe s.aXIX-XI ~ 3.rX-.r.k.rXtXtXtXj.^ N N i.z.b.c./.o NXgX@XtXtXj.rXjXj N.^.o.b l.o.b.o.b l.z./Xu.f./X9X9 N.5XX.$Xx 3 3.8.rX*.r.uXtX9XV.kXX.K.X.K.5 NXxXk.&.I.I q l.I.I. .#. .#.U.c.c.U.c.c.c.o.b.c.X.b.b NXz N.^XtXtXtXjXtXt.kXjXtXtXj.b.b.b.b.o.b.b.b.b.o.c.b.b.b.cXg.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.U.c.c.c.UXk.c.UXk.cXg.cXk.cXg.o.b.b.^XgXg N.^.XXx.X.kXtXt N.^.b.b.X.^X .z.& 5.& 5.$.5 DX$ }.3 k.,X3.S XH $ X3.-Xh n z J.s.s.s.N.s.W G / / G.N G C * bXG.N.N C RX, a < a.).N.sXn.pX+XpXq._.<X+ W._Xn.sXqX+.[X7XpXqX+X7Xq hX,.M < <.*.a tX,X,X, a.aXD R R.a t a t.} h._XeXp.) G / C u $ $.e cX-X-X- B R.e a.aXD a a R U *.s.@.;X>X+.* < t t.e.a a aXl.9 xX- xX, a R RXD t a t t R a cX-.~ 3X- aX- <.a.MX+Xp y.@ HX0 &.>.+ =XCX0X0.Y.jXw.'X5 c.u.a ._.i.W.M.M U.a EXeX,XeXl EXeXeXq.M < h.uXIXV ~.`.XXxXk.^XtXtXtXj e eXt.k eXt.r.r.rXt.rXjXjXz.b.b l.bXz.b.b.o.bXz.o.b.b.oXzXt.^XjXj eXj eXd.^.b.b.b.b N N.^.^.r.rXt ~.8.8.8.8XVXV BXU TX5 ' B RX- R.e.~X-X- aXD '.n !XI.`.H.HXd.HXd.r.kXd.r.k.r.k.rXt.r eXdXt.r eXtXd.r.^ N.k qXt.kXoXd.^ N.k.8.`XI.8 ~.8X3 }.% D 5 5X3 IX3.3.O.G @.OX;.3.G.].n.n OXmXC ^ 2 / *.NXs.) 2Xe.@.s.BX>Xf vX+.Y [.aXIXt.u.r.uXtXt.r.k.b.X.oXzXg.b.Q _ _Xz.b.b.b.^Xd e",
+" =Xw =Xp M M.jXr.[ n.1.L.hXrXrXrXn...=.s.W.n.wX-X-.a.8.8.8.8.8 ~.kXtXtXtXtXj N NXg q./.^./.IXgXgXk./.X.^XjXdXjXt e N.b.b.UXzXgXzXg N.fX ./.$ NX9 q q.$ q.KX*XI ~ ~X*.k.^.u.r.`X9 : 5XV.5.5Xx.5 ).I.I.z l l l.U.U.cXg.c.UXg.c.c.c.c.c.c.o.b.U.b.o.X.X.bX9 NXjXtXt.kXtXtXtXtXjXjXj.^.b.b.b.o.b.b.o.o.oXk.bXz.b.c.c.c.c.c.c.c.c.c.c.c.c.c.U.c.c.c.c.c.c.c.U.c.c.#.U.c.c.c.U.c.c.o.b.o.b.I.t.f d.&.I.5.r.^.X.o.^.o.b.b.b.XXo.rXtXVXV 3.8XIXXXJ.3 k |XH ., kX3.- V.,.g.3 =.j.;.j.s vXeXL U.*.* C uX+Xn.* t.* C.* a a h U C C.) * %.pXnXM.l.i.FX7 ._XB.i U t t < U U E E U.W EX, UX, u < < a < a.M hX,.} < a.M < R <.W U.FXpXnXL.s.N.M t t.e.a.~.~X-XI.eX-XD R.*X,X- t a.N.N.sXf.x.@._ t.M R.e.a R a.e.Y : :XDXK 1Xl.e a RX1 R.e R a.e c R.~.8 3.eX- a < <Xn.j WX0.+.> oXU & H MX0.+ HXC oXm B B.8.` Xn hXe.M.d U.m E x x._ $ x `.} 3 3.KXt e.^Xj.cXgXz.r.rXtXt.r.r e.rXtXtXtXt.r eXt e e eXj N.b.U.o.b _.b _.b _.b.b.^.b.oXzXz.^XjXjXj.bXz.X _.b.b.o N.o.^ N.r.k.r.H ~XV ~ ~.`XI B.ZXU '.0X- R R.*X1X-X-X-X-XD.w ' m $X1.~X1XdXd.uXtXt ~.k.r.k.r.k.rXt.k.rXtXtXd.rXdXt.A q ] 5.A.& I I.|.R (Xd.H.8 N 3 ~.r.u.kX*.8X-XX )X-XI.,XJ = gXwXl $XU 9Xa bXC.! 2.vXn U t B.M C sXG *Xb w.C.. ..L n $.8 c.r.r.rXt eXjXzXzXz.bXz _ _.c. .o _.b.^ NXjXt.r",
+"XD t.9X0Xh.h y y y [X7X<X+X>XG.@ v v.N.N.N s 8 R R.8.`.8 ~.8.rXV.kXt.r.rXt N N N N l.b N.oXx.b.X.o.^Xg.XXo.X.X N.o.X N.b l.X _Xx.X.RXk.XXxXkXkXk.f.$XxX*X*X*.8 3 ~.rXV.rXt 3X9 IX9X9.r ) ) 5.&.fX@ d.: lXg.U lXg.c.c.c.c.c.U.c.c.c.c l.o.b.U.b.b.b.b.bXg.X.^XjXjXtXt.rXtXtXtXjXtXj.X.b N.b.o.b.o.b.oXg.b.b.oXg.c.c.c.c.c.U.c.c.c.c.c.c.c.c.c.c.c.U.c.c l.c.c.I.U l l.c.cXk.cXg.o.b.b.U.IXgXxXgXdXz.X.XXzXz.b.XXzXz.XXzXkXd.u.k.kX* ~.8.`XXXcXX x # `.l.l.l # #XM xX3 yXa.s.jXGXr.-.[XlX,.*.a 3 #Xc .Y kXcXK g.9XwXL u.)X=.sX>X+XM.l h.l # .-.i UX+.M.YXe.>.,XlXqXnX+.F.-Xn x U h.W.M.w U.M.a xXB 1Xp x., 1Xp x hXeXnXnXL vXs C.N U t.M.a.eX- $XlXl.D $XI.0 $ $ a R U.)Xi.@.@.xXn t.e aX-X- t.a.a.eXD.aXD `XKXc ' h $.aX- t R aX- cX-X-.~ 3X- a t < <XGXGX> W 9X0.! oXmXp y H.+ = & !Xm.!XIXV 3.iXn x E U E._._._.iXq x 1 TXlX,XI.8XV.r.^.k.^Xz.U.o.^ eXj eXt ~.r.kXtXtXt.r.rXtXjXtXt.r.rXj.^.XXz l.b.b.b.bXz.b.o.b.b.o.b.b.b.o.b.b.b.b _ _ _.b _.b.b.b.b.^.bXt.r.rXt ~.HXt.`.8XIX1X1.2.' TXD.e.~.e.e.eX-X-X- R s sXU 'X1.R.].X.u.^.KXtXx.kXx N.R.z 5 N.r.f.^Xo.^XoXxXdXo ).X (.5 :.5XxXo.5.HX9 ~.8X*XkXx.rXV.r.8.8.8.`.~XI 3.K k !.>XwX,X- '.!.n OXC oXC O W XJ TXUXc x KXp W.y.x .XnX4 XBX-.k.HXV e.r e.^XzXz.V _Xz _XzXz.b _.b.bXz.bXj e.r",
+" cX5.[ sXpXH =.OXwXpXc WX+.s J v.s 0 v.=Xa s CX1X1.` ~ 3.r.8.`.k.kXt.uXtXt.k.^.k.^.k.^.kXjXjXjXj.X N.^.^ NXt.^.k.kXt.^.KX9Xd N.R.f.tX9XxXg qX N.I NX*X*.r 3XV.8.8.KXtXt ~.8 ~ cXdX5.u.KXoXxX9Xx.RXk.Q.z.z.z.U.U l.U.cXg.U.cXg.c.c l l.c.o.z.o.b.b N.b.b.b NXjXtXtXt.k.kXdXjXtXjXj.b.oXz.b.o.b.b.b.oXg.b.bXg.c.c.U.c.c.c.U.U.U.U.c.c.c.c.c.c.U.c.c.U.c.c.c.c.#.c.c.c.c.c.c.c.cXk.o.b.o.o.b.b.X.X.^Xz.b.^.X.b.b.bXx.X.XXkXo.r.k.k.uXI 3.` #XJ V ` k.[Xc X3XMXM #XM y o v.= vXL u.w tXDX, RX- a c < c h c.- sXK.jX0Xw.j 0.s.Y.p.F x $.a c.iXM.-.FXeXpXq =._.9.+.jXh.T M.O =.O.Y v U.W E UXe 1.pXwX+Xw.[ nX0.>XcXn.W E xXG.N xXa.WXs.N.MX, a R B.K :XKX3 T 1 x m : xXs.N.NX6X2.JX+Xe t tXDX1X-.a a a.aX-X- R aX- $ `Xc `XwXI BX-X- a.eX5 RX-XV.eX- a < uXpXn.j H v s y !XG s v vX0XU o.j.qXP 9 #X1.a.YXe._._._ E.FX+X+ 1XK # R.H.r.8.k.kXj.cXj.^.^ e e.rXt.rXt eX*Xt ~.k.kXtXt.k.r.rXtXtXjX*.^Xz.b.c.b.b.b.b.b.VXz.b.o.oXz.b.b.b.b.o.b.oXz.bXz.oXz _.b.bXz N.X eXt.k.r ~.R ].K.K ).u.]XUXO !XcXl.' `.u $XVX-X-.a.w.wXPXNX5X9.5.| 5.& f.R P P.R.$.z 7 Q f.& f.&X@ Z.|.z.r.u.r )XJX9 : )XxXJ )Xx.5.H.r.K N.8 F ~Xj.k.8.8.`.8.~X* c k k !XUX, R 'XO.!XPXm.q &.EX+.p., `.9X5 1 gXq ^Xf.{.x.m E >Xc.aX*.r.rXt e e.^.b _Xj _ _Xz i.o.bXzXzXzXj.kXtXt.r",
+" 5 D D.M.}XHXc.GXU.ZXw.pXL.sXG b bXeXe v v.n.* RX-X1.8.u.`X9Xx.5Xd.rXdXtXtXt.r.r.rXtXtXdXt ~XjXt e.^.r.rXdXtXtX*.rX*.r.r q.5 q.R )X* NXkX@Xu.I NX9.oXt.r.kX*.8.8.r.rXt.k.8XV.H ~ cXVXd Y ).|.R.|.&.& f AX .& Z iXg.c.U.c.U l.c.U lXg.c.cXg.U.b.b.X.b.o.X.oXg N.^Xt.kXtXt.kXtXtXjXtXz.X.b.b.b.b.b NXgXg.oXg.c.c.c.c.U.c.c.U.U.#.U.#.#.#.U.U.c.V.cXg.c.c.c.c l. .c.c.c.c l.c.c.c.c.c.V.^Xz.X.bXzXz.X.b.b.o.b.b.bXz d.z.t ( Q.R 5.%Xx.$X9X9Xl }.-X.X7.S |.[.[.- .l.lXBXw.s.s 2 v U x h R.MXIX1X-X-.a.a.aX,X, CXs vXe.EXp =.h.1XB #X5XI aX-.i xXpXc.FXeXp v CXq h v y.j.jXm.jX0.j.Y vXe v v._.)XeXe._Xq v._XGXG v.sXe vX+.[XsXl s ' v.W v C t a.~ RX- R.e aXI.~ 3.e.* t.s . ^.{ .Xp.M.aX1 BX1XI a tX-X-.a a a R a R R RX5Xc t.e.M R R RXVX1XIXVX, R a tXeXpXp.j y v.w 8 $.9.w x v &X+ yXCXC.>XU $.M.aXK._.i._._._XnXcXD 1XM.a R.H.H ~.r.^.^XkX9 NXjXtX*XtX*.rXj.r.r ~.rXtXt.r.k N.^.k e.k.rXj.r NX9 NXk.b.b.b _Xz.b _Xz _.b _.b.o.b.o.bXz.b.o _ _ _Xz.bXz.o.b.b.bXt ~.k.r.H 5 I 5.|.$ IXJXOX$ mXyXJ #.2 3.2 $X-X- BXD.'.0 gXI D.5 qXk )XxXxXx D.X.^.5Xo NXx.kXx.^XoXo.^.kXt.kX* ) I.$ 5.R | 5 ) :.5.r ~ ~ q N F.r ~Xt.8 ~.`.`.`.8X*X3.,X. !X5 B.H.w.' T g y o 0 U.WX, c R.*.e.'.)Xb ..C.pXAXqXp X-XV.rXt.rXtXj.b.b.b.bXzXz.#.z. .V.b.bXzXt e.rXtXt",
+".RX9XV #XK c `X, B YXr.1X+X0 v.j CX< y._.O x.]XlX9XX.r )XI ].%.XX5.r.rXt.rXtXtX*.k.k.(.K.k.^.rXdXt e.^Xt.r.k.r ~.r.8.r.}.A.$X9.KX*.r.R.f.RX9Xg.b.b.X NXj.r.r.r ~.r.kXt.u.`Xx.~.8.u cXx.5X9 ) qXxX@ A.R A q d.I dXkXg l lXg.cXgXg.U lXg l lXg.o.b.o.b.o.b.b.b.b.X N NXtXt.kXd.rXjXj.^.b.b.b.b.o.b.bXg.c.oXg.U.c.U.c.c.c.U.U.U.U.#.U.U.U.U.c.c.cXg.c.U.c.c.c.c. .c.c.c.U.c.c.c.c.c.cXg.o.bXz.X.b.b _.b _.oXzXz.o.b.t.t.t f Q P 5 Q 5 DXX |X.XS k.O.3.SXH.S.SX# VXM.l .[Xr 0 vXn.MX, <XD.D t.* RXI.uX1 3.eXDXeXL.)XGXrXr.gXH [.3 V 3 R.a.a.}.l.lX7 > E U.F E xXqXqXU vXa s b.'XGX0XnXp.<X> >Xn._ pXqX>X2.j.;.j yXGX4.j y.Y 1 x.D.w v.sXL C.*X- R.~XI 3.aX-X-X-XMX1 C.D 2.)X6.x.<Xq U aX1X1XU : R.a.a., c 1.eX- R $X.XJX- :Xl R 3X..e RXIXV.].2 VXI < C._XGXp.q.E v.M : $ s R 8XaXK.n.' yXm.q.>X+ h <Xq .m._XnXH 1.> ` kXcXJXJ.K.rXt.b.zXj q.kX*.rX*.^.rX*.r ~.8.`.`.8.5.r.r.k.X.bXt.^.^XgX9.^X9.^.bXkXz N.b.b.b.bXg _.b.b.o.bXz.b _.b.o.b _Xz _ _Xz _ _.b.b.b.o.rXjX*.r.H.k.uXtX*.5 3 ].Z m ' '.uX1XIX-.eX-.~ aX1 $.'.'XJ B.` ~ 3Xt.H.k.H.k.r.r.H.rXtXVXt.k.r.rXtXtXdXt.r ~.kX* DXM.rXM.k cXV 3X9.r F.r.U ~ ~ ~Xk.UXk ).` F.rX*.kXX k m m.0.`X1.` BX-XMXJ & 0 OXs.M.M.M C.! s.s.s.C.x .._X4 Xc c 3XtXVXt.rXj.^.b.^.b.bXz.c./.o.^.^.b.bXjXt.rXt.r",
+"XdXd.&XX VXXXIXIXIXc.3Xw nXw v.+X+.+X+ y.GX;XlXl ).,X9 ,.k Q.2 , )XoXt.uXtXtX*Xt.r q P ZXx.HXd.r e.r.k.rXt.HXV ~.` 3.`.8X3 #XM DXxXX q N.z.b N.X.b.b N eX*.r.`XtX*.rXtXt.`.8 (XXX5.H ).5 ).HXx.X q ( ).z.I.z.z.IX@ l.I. .z.6.6 l i. .I. . .z.U.U.z.U.zXkXkXgXg.IXxXk.X N.XXoXtXdXt.k N.o.b.b.b.b.oXgXgXgXg.U.cXk.c.c.c.c.c.c.U.#.U.U.U.c.c.U. i. .#.U.c.cXg. Xg.U.c.c.c.c.c.c.cXk.o.oXg.bXzXz.XXz _.b _.b.b.b.bXx.XXxXxXx N.X.K.u.u 3X-XJ.3X..O.1X# nXH.S.SX7 .l XBX+Xp v.sXe EXeXs v.w.D.ZXlX-.~X1X, t U /.WX+Xp .Y ` `XX.,XlXI a a a.l.lXB .F._Xq.m E EXq yXG.! &Xw.!.9.>X0X0X0 MX0 yXp.Y.EXr.j oXG o.q &Xw y vXGXwXJ : 1XG 0.W.D.W $ : x.a RXIXD.a.eX,XD RXL 2.sX>.@.JX4 U < RX,XcXw R aX-.,X, :.e.~ RX,Xl `.ZXD a.eXKX;X, RX1X,.5XX K t.a._XnXG.EX0Xm s T xXc m.-XG mXwXJ n 9XGXG.q H.-XK.}XBXBXB .9 h : T.] `X3X9.KXjXtXgXkX*X9.rX*.r 3.K 3.r.u.`.K.5.5XI q ).R.R 5X&X@.fXx.& q.f.f.fX@ dXg.o.b.b.b _Xz.b _.b _.b _.b.b _.b.o _.o _.o _.b _.b.o.^ l eXtXtXt ~.8 ~.8X9.uX9X1X1.0XK.n.wXIX3 RXI.eX-X1X-.w.n.0.OXJ c.rX9X*.&.5X9 5X9Xx ) )Xo.kXd.HXt.u.r eXtXt.r.k.u ~ 5.$ )., ) 5.K.8.u.K FXt.XXgXt e NX9Xg.^.r.`X-.r 3.K., 5 ! :.~X1 R.`.`X-Xc.q b O.=.W.*.j.jXG.=XiX>XfXf p...[Xh.,XIXI.r.8.r.rXjXj.b.o.^.o.o.^Xz ~ e.b.^.^ ~ ~ F.rXt",
+".R 7.X }X*.8 ~.`.`XD 'XK kXJ xXDXGXq v b.j $ T.HX9X9Xo.K.^.uX* 5 5 ].z.XXdXV.k.rX*.k.z.A 5 )Xo.rXd e.rXt.8.8XIX1X-.8.a.r :XVX*X3.5.&.K N.X N.b.o N.X.^X*Xt.8.rX*.rX*XVX*X*.K 3.kXJ #.|XX ).u.5 ]X@.&.(.& PX@ Z.z.tXg.7 d Z.tX&.I.&X@ ZX X&.I.&./.7 d.&X X .&.A.&.t ].AX@.&.RXtXtXtXj.^ N.X.b.b.o.bXgXg.b.c.cXg.c.cXk.c.U.c.c.U.U.#.U.U.U.#. .6 i i. .U.c.c.c. .c.c.c.c.cXk.c.c.c.c.cXgXg.o.bXz.o.b.bXz.b.b.b.b.X.o.X.oXk.b.X N.k.r ~XI.`.5X3XJXc DXUXwXHXwX7.-XBX7 kXBXBXp ^.) ..s.)Xn.E = n.-XJ $.ZXc h x.j._X+.[ XM.l :XH `XI.HXI.e R < # #XXX7X7.pX+ p._ .Xp.jXP.w.9.'.>.> =.O.>XwXw =XUXU.j y o s s s v sXmXP v.nXLXcXU.-.9 yXs M.YXa.9Xc : $ $ ` #Xl xXlXl.MXe.NXi.4X>.CXn._ t.MX,.2XK R a aXKXKXM.e a.e c D $ RX1 R 8Xl $ : a R.u #.a #X, UXpXnX>X0.j.'X..ZXJXcX. :XKXwXwXU.wXsXK b.j nXw =.Y hXM $ c.}Xl.u cX5.k.5X9.kXx N.c.XXj.X.r.r 3 ~.rXVXV.8.`.uXXX9.uX9 )Xk q.I A.z i.o.I.U q.IXk q.z.o.oXz.b _.b _ _ _ _ _.bXz _.b.b _.b _Xz.o _Xz _.b.b.b.bXg e.rXd.r.r ~.8.8 5./ } ) TXO 4XO.2XJ `X5XI 3X-X1 8.n.' YX. : I I 5.&.%.& 5 5 f 5 q.X.fXtXt.rXd.rXtXtXtXtXjXt.rX*Xx qX9XxXX ).K.`X9.r.8 ~XxXg.XXjXjXt ~.8.8.` ~ 3.8XX } Y.G : $XI.u cX5X-.,X. =.! oXr._.1XhX= ^.CX6XA.FXq.FX+XZXKX1.`.K.` ~.k ~Xj.b.b.b.o.z.XXz.^ F e.k.r F F.8 F.r",
+" ].t.AXg.k.r.` 3.8X1 B g.O.O.iXD CXL.).s s B ~.8.`XV.8 FXd.k.r.5.5Xo 4 A Q.K #.rXt.kXt.k |.R.R.X.r.k.r.8XI.DXl.9 c.`X- 3.}.uXX.KX3X9 3.k.kXt.kXtXj.^XtXt ~.8 ~.uX* ~.k.uXV 3XV 3 c.u c.u.H.k.k.k.XXk.XXk.zXk NXkXkX9Xk./.U./.zXg.IXk.I././.z.z.zXk.z q.zXkXk.I q.z.z.z.XXxX9XtXtX*Xj.k.^Xz.b.o.b.bXg.o N.o.oXg.U.c.c.c.c.c.c.c.U.U.#.U.U.U.U.U.U.U.U.c.c.c.c. .c.c.cXg.c.c.U.c.c.c l.c.cXgXg.o.b.b.b.b.b.X.b.b.o.b.bXgXxXz.X.bXd.k ~.`.`XX., mX.XwXUXwXUXr [X7.g.[.[X<.[X> JXi.s % ^.@.s &.9.'XK m.,XK y.jXr &X%.gXM m k $.eXc.2 : R a a.i #.l.lXBX+.x SXnXnXw =.WXL B C t.w x '.9 s.n 1.n.j.!.n 9.9.w 8.w.'.wXa.nXaXa.!.j., =.T yXnXK C.-XlXKXJ `XK.9XK 1XKXwXD.N.N OXi H ^XnXq.M.M.Z.M a R R t.e.e t R.~ a B.e.~ RX,.e.a.M.e BX1.~ $X-.a a hXqXp.@XC y y.nXl.D BX, $ RX, tXl xXD.n.9XKXw.> MX#XH.- DX3 } D.5.|.0.$ T ) 5Xg NXg.k.r.rX9 3XV.`XI.uX*Xt.8XV.}.a.`.` 3.r.r.^Xz.b.b.o.^.o.^ N.X N.o.oXz.b.bXz.bXzXz _ _.b _ _ _.b _.b.b.o _.b _.b.b.o.b.o.b.XXg.^Xj.rXt.r.` ~ ~.5.R ( D.5.R g Y.0X.XD.e.e :X- B.D s 'XcX5XI.u.K.kXoXo.k.k.k.k.k.k.kXx ~XtXtXt.rXt.r e.r.rXt.rXt.k.k.r.u.rXV.r.8XX.r.8.r.^Xg.^.r.r.rXt ~.8.`.` ~X9 ) | } YX. DXJ DXJXJ 3X3X5.O yXC.YX+ v = ^X6Xf ..mX4 EXe.[.[XK BXIXVXI F ~.k e.^.b.b.oXkXgXd F.`.K.r ~ ~.` F.8.8",
+" 5 (.k.XX9.X.k ~.8XI ].' Y.2 $ x U.sXe.s.wX1.~ ~ 3.8.8.rXt.HX* 5X3Xt.k.X.2 I I :.k.k.rX*X*.KXx Y )X5.8 RX-XlXl :.5.aXI.,X9 3 hXV.`.K.k.8Xo.^ ~ ~.rXt.r ~.`.8.r ~.`XVX-Xx.KX3 :., D ) 5XXXJXo.fXx.&.X.X.XXgX9Xg N.b.o.o.oXk.c.U.c.U.cXgXk.UXk.X.o.^ N.b.b N.bX9.X N N NXjXtXjXtX*XtXtXj eXj.^.b.b.bXk.V.b.b.o.oXgXk.c.c.c.U.c.c.U.U.U.U.U.c.U.c.U.c.c.c.c.c l. .c l.c.c.c.c.c.c.cXg.cXg.c.c lXg l.oXg.X.o.X.b.b.X.o.X.XXg.X.b.X.XXVXd.H 3X5.2XJ.] T.! s s.jXwXpX+.- z MXr H S w 0.@.@.;Xi bXs C.eXD.e.*.).N.).s.YXB kXlXKX-.a ` I $.a a a.}.} # # xXpXnX4 M..XZ.jXP.9.' xXl x sXJ 8XDXs.nXK YXK =XOXUXcXl RXDX,.ZXsXDXLXL.9Xw n = v.N.* R tXIXM aX- <.e R.eXD a.* 8.) 2 2.@X2XnXp U U h.ZXc.Z a a RX5.e.e.e.a.e RX- BXD R :X5X,.Z $.D c.~X- a $XpXn H HXGXG.Z.Z $X1XD ' x x.DXG $.M x s.YX..j.,Xh ]., ) D I : IXo D 5XoX9./.k.b.k ~XVXD cXIX5Xl.H.H.k.`.H.`.`.8 3.u.r.rXtXj.b.o.b.b.o.bXz.b.b.b.b.b.b.o.b _.b _ _ _.b _.b _ _.o.b.o.b.bXz _.o.o.b.b.b.b.o.bXg.XXtXtXdXt ~.r.`.8 ~XVXxXIX1 B g TX5.w B R 3XI B.Z.n.0 D.DX-.H.r.u.uXdXd.kXd.r.r.r.rXt.rXtXtXt e.rXtXjXtXtXdXtXtXtXoX*.uXt.u.u ~ ~.r.8X*XtXk.X eXdXt.r.8.8.8.`.~ ~ # I.,.]X,XI R.8 R.`.`X-.aXl.0XL.= 2 G.@.4 0.C.@.y._._Xp 1 1.Z.uXI.k.H.uXo.X N.XXoXkXdXg.X.r.r.`.k.r ~.r.` ~.8 F",
+".u.X.r N.^X9Xx.5 ( DXJ.DXl.9.w hXe.s 2XG hX-X* ~.r.uXVXdXt.r.k q V )X9.XXt D 5 f q ( qXo 3 3XV.KXJ :.9Xl.9 1 DX3.aXI 3.$XX.aXIX*X5XV.8.HXo.r.` F ~.r.r.k ~.`.`.8 ~.` ~ 3.u ) `X3 5 VXl ) ).R D q.&Xk.o.X.^.b NXg.b.o.b.b.oXgXk.cXkXk.cXk.UXg.b.bXg.b N.oX9.b.b.X.o.X.b N.kXt eX*XjXtX*XjXt e.^.XXzXk.o.b.b.b.b.o.cXg.c.c.c.U l.c.c.c.c.c.c.c.U.U.c.U.c l.c.c. .c.c.c.c l.c.c.c.c.c.cXg.c.UXg.QXu dXu.t d.t.t d Q A A.z ] X d A A ]Xo.2.uXxXJX. @Xy.G.>.q.jXr.Y.<XrXr.jX>.; & M w.;XfX0 o 0.N.W t h <.M.N 2 bX>.g .SX3 x `.-.a.aXD aXD h h h 3 # 1 .Y ..sXn.j.>X;XO.].0Xc T TX1 R R RX1Xl.0 ' s.' 'XM x c R B RX-X1.*.N.n 9Xw.j J G.= C <X-X- a a RX- R R BX, R 8 tXs 2 2.v.@XfXqX+ UX,XDXlXwXc.'XJ xXJ B a.eX-.eX-X-XDX- : 1X3 T ` :Xc.a R <Xq.YX4 & H v.n.Z :X,Xl x.Z s.MXD.wXU s.w 1 g n kXc.3 D.uX5XV.H.u.`X1X1.8.`.k ~ ~ ~XVXIX1.DXl x s s.Z.`XIXV.`.8 3.rXtXtXtXjXj.^.b.b.bXz.bXz.b.bXz.b.b.bXz.oXz _Xz _Xz.b _.o _.b.b _.b.b _.oXzXzXz.b _.o.b.b.b.X lXgXoXdXt.u.8.`.r F.8.rXV.H.H.HXo D.n 'XDX- cX-X-XDXl 'XUXdX1XIX1XdXtXtXt.r.rXt.kXjXt e.kXt.r e.r.r.rXtXtXt.rXtXtXtX9.r.r.r.u.r F.`.` ~.rXt.X.z.k.rXt.r ~.8.`.8.`XV.5.$X. $XI.uX-.`X-.`X-XI RXD.9 9 OXa 2 ^ z.@.<.<X+X< [.[X3X1 V #XJ TX5.k } 7.R.z.&.&X@ ~.r.r ~.` ~.kXV.8.8.8.8.8",
+"Xt.5.H.rXt NXk f./ qXI.` R TXJ.w v.W vXq RXI ~.r.rX*Xt.HXVXd.k #X* 5 ) I.5X5.uXx.] ] (XX.uXIX1X,XDXrXh nX. k h.a.}.`.aXX.,XXXM 3XI.` 3.8.8.8.r ~ F ~ F.`.`.`.8X-X-.`X-.`XIXIX-X1X5.~XI.H.8XV.kXd.k.X.o N l.o.b.o.b.b _.oXz.o.b.o.o.oXg.o.UXg.b.b.b.o.b.o.bXg.b.b.o.bX9.o NXt.kXtXtXtXj.kXj.rXj.b.b l N.b.b.o.b.b.oXgXg.c.c.c.c.cXg.c.c.U.cXk.c.c.c.U.c.c.c.c. .c.c l.c.c.c.c.c.U.c.c.c.c l.c.#.tXu.A.t.tX .tX X X d.Q.t Q ].t X ] ] 5 (.] I.3 7.G @ @.G K.h MXZ z.1.; y.jX0.xXC S.j.;.; 0.=.N h.}.e.N.N.sX>XB .[.gX3.-XH [XM.lXM # #.l.i.lXM x `.YXr J.. 2.EX0 T.w 8X-.e a.e t R BX-XD $ R.a.e R.MX1XIX-X- R.e.eX- 8Xs.nXP n.- o /.N.*.* a aX-X- R R a R BXDX-.eXD C / /.v w.@.jXp xXs R.a.ZXl.Z : $ sX1.e a BX-X-.eXD a.aX-.aX-.a.e c.e t.aXp.Y.Y & JXa.W R $ DXcXK nXUXK.j TXU.nX. !XH m.[.>.G.OXJ.].]Xx 5X5X9XoXl.2X9XI 3X1XIXD.w vXG v OXm.0 :XVXd.kXo.^XtXk.^.kXj ~Xj.b.b.b.bXz.b.b.o.bXz.b.bXz.bXzXz.b _.b _.o.b.b.b.b.b.b _ _ _ _.X.Q.Q.R A.&X@.I.R.&.AX@ 5 D qX9XV.`.8 3 ~Xt.k.HXIX1 g ' '.ZX1X- 3XDXD.' TXJ.ZX1.`.H.r.rXtXd.rXt e ~Xt.r e ~ eXtXj e e.r e.rXtXt eXtXtXo.rXtX*XdXV.`.8.`.rXtXt.^.I.k e.rXt F.`XV.`.`X9X9., m.u RXI.e.`.`.`.~.`.8 B.Z.w ' O O.@.y >._._X+X<.T I.,X- k cXJ.$XlXo.& 5.$ q 5.I 5.KXtX5.`.` ~XVX* F 3.8 ~.8",
+".uX9.k.kXoXk PX@ fX* ~.`X1.u gXw.j.j vXGXD.` ~X*X*Xt.rXdXt.r.k.KX*X*.K q } 5 q cXdXo.R mXXXDXD.9 v.Y.j zXZ kXM aX-XMX3 k V VXJXc 3XI.8.8.8.8X-X-.`.8.8.8 ~.`.8.`.`.8.`.8XIXJ I #.5.].K cXV 5.5 fXkXk.X.z.o.b.oXz.o.bXg.b.b.o.b.b.b.o.b.o.cXg.o.bXz.b.o.o.b.b.b.b.b.o.o.b.b N N.^XjXtXtXjXt eXtXj.X.U.b.X.b.b.b.b _.b.b.VXg.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c l.I.V.c.c.U.c.c.c.c.cXgXg.c.oXgXg.c.z.U.z.z.U l lXx.U.XXx.X.zXx.o.X.XXo.k.8XV.8XlXx T.2 ! = y.j.EX>X+XG vXn.j M.Y.EXr W.x W.x w.s.sXe t U GX=.=XpX7X7X#., `.[XH .F #.l.l.iXB XB :Xq gXGXG z.v 2 w.q y.n R B RX-XI.~ a R.e.eXc $.uXlX5X5.} 3 R.e.~.aXI.~.Z.wXLXU.-XK o /Xs C aX-X- R a B.a RX- RXI aXD 8 8 / G.v.B.;X>XqXq <.a R.eX,.e.*.e.e R R.eX-.eX- aXI a a aX-XIX-XIXD.a R 1XGX> &X0 9 v.Z RXDX,., :.9Xq x 1 $XwXlXOXKXK =XcXw.>XcXU D ) D q ( 5.2XJ T.9XD.Z.Z s s vXe v 2 2 JXJX3 m.R (X@.A.(.tXg.bXz eXj.b.b.b.oXz.bXz _.bXz.bXz.b.b.b.oXz.o _.b _.b.b.b.b.b _ _XzXzXz.c.6.f.tX@X@X@.f.&.& 5.AXx.$ qXV.8.`.8 ~.8.u.r.H.HX1.XXPXa s RX- RXI $ T.] !X5.H.`.`.H.rXd.kXtXdXtXt N.XXx.b.X.^ ~.rXdXt.r eXtXtXt.r.r.X.rXt.r.r.r ~.X ~XV.rXt.kXk.bXtXtXt.8.8 ~.8.`.5 : I.2XI.H 3.`X-.`.` F.~.~XIXI $ ' sXmX4.<X% >.FX+ [ : 3 3X-X-.}XIXVXV.`XVXt.r.k N 3.r ~XxX9 ( ) D q.$X3XV.H.8.8",
+"X*XxX*X9 P.RXk.k.o.X.r 3.~ 'XUXPX0XwXmXK $ 3.`.k.r.r.r.rXtXd.KXt.K.8X*.r.k.A 5 Q.].uXI TXw K.9._XnX>X4XwXhX#XB ., VXX kX3XX V `.8.a.8X-.8.8.8X*X-X-.k VX* a.aX-X-X-.` R.$ : mXH ).KXx I I.u.f.| Q X QX .o.X _.b _.b _.b.b.b.b.b.o N.bXg.c.b.b.o.b.b.b.o _.o.b.o.b.b.b N.o.b.b N.^X*XjXtXtXtXt.^.U N.b.b.b.o N.b.b.b.b.o.o.oXg.c.c.cXg.c.c.c.U.cXk.c.c l l.#Xg.c.c l.c.c.c.c.c.c.c.c.c.c.c.cXgXg.cXgXk.cXg lXx.b.oXgXx.b.bXo.bXVXd.8.8.8X*., c ` m gXc.p.Y.j.< v h._ 'XeXp.Y.[.pXB >.xX6Xb.. * * G / 2.v.jXB.[.[.iX.XH n.jXB.[XBXBXB.[X7.[X+ g.Y v.sXC . 2 ^Xm s.]XD B.a BX-X- R a kXD m 1 m 1 ` m.5 R R R BX- R 8.w.wXPXw .-XGXL.s t R t R.eX1.e B.a R.eXI 3.e 8.N / 2.v ^.4XfXpXp < t R.eX- B R.e B.eX-.~ aX- R.~.}X-X- aX-.eX- cX, a U 1XG yXwX0XG.nX,XDXDXD RX,X, $.a.a 1.Z $XD sXl yXOXU H v b.MXK.HXV.`.uXVXDXD s v v vXL.WXa.N.s.sX= 0 $.}.r.uXo.R e.bXgXzXz.b.^ eXjXjXz.o.o.bXzXz.o.b.bXz.b.b.b.oXzXz _.b.b.b.o.b.b.b.b.b _ _.bXz.o.oXz.bXgX9XgX9.X.$ N.rX*.k ~ 3.8.8 ~.r.r.kXt.u.8.DXO.nX5X1.a RX- h.wXl.] 'Xo.D.r : q 5 NXtXt.r e.X.z.I.z.z.bXt eXtXj.r.rXt.rXtXt.r NXd.rXtXt ~.` ~ ~.`.r.rXtXg.XXt.r.r.8 F.~.`.8.k.u ] g.D.~XI.`.8.~.`.` F.`XI.`X1 T $XqX+.FX7XBX% x k.Z D ].]X3 3XV.K.K.5 N.5X9Xk.f.zX9.5Xk | )XX.$ 5 q I.r.k.r.k",
+"X9 , ( PXxXdXtXtXtXk.k.8XIXV g.0 sXm.qXU.'X1 ~.r.k.rXt.k.r.r N.KXV q.rX*.kX9.kXk D.$ '.Z 1 y v.s.s.sX+ M.[X< 6 VXXXX V VXX X7X3X3 a 3X*XVX*.8.`.8.`.}X*XXX*X*X9.5.5.KX. } :.e c cX1X*XI.k.kXt.5.XXxXoXx.X.X.^.XXz.XXz.^.X.b N.X.b.b.o.bXg.o.b.b.b.b.o.b.o.b.o.b.o.b.o.b.o.o N.X.X.X NXjXtX*XjXt.rXg N.o N.b.X.b.o.bXz.bXz.b.o.o.cXg.c.c.c.c.cXg.U.c.cXg.c.U.Q.c.c.c l.c.c.c.c.c.U.cXg.U.cXg.c.c.cXgXgXgXgXkXgXg.b.b.X.o N.b N.b.k.r.8.8.a.`XV 3XIXcXc nXw M.<.YX% $.1.[.T k.d.S.F >.<Xr wXi.PXv.) 2 / / OX+.[.SXXXH.-.-XrXnX+.<X+X>.pX+X+ n.jXwXL.n.) CXv.) O H.n.' $X1 R.aXI RXD RXI.Z.aX, cX1XD $X, RXDX-XDX1 RXD.wXGXwXcXB.g &Xn.W.w t.eX- BX- R R R a.~ h.a t.N.N 2X6 wXf.C.CXnXpXq a a R.eX-.eX- aX- a BX-.~ aX-XD.eX- aX-X-XI.u a R sXp.Y & & & b.wXD.ZXD.aX,X, XD.}.a x.9 $ 8.w.n v.n y.4X=Xn v t.M.a 3.,X.Xw.-X0.E.@X>Xm.W.N.).).)Xv b.}.8 3 FXdXdXoXz.b.oXz.o.^ eXjXj e.^.bXz e.^Xz.b.o.b.b.b.b.oXz.b.b.b.b.o.b.o.b.b _ _.b _.b.b.b.b.b.X NXgX@.$ qX q qX*Xt 3.8 ~.` N.r.r.r.kXd.k.`.].0Xa.w B aXD T.0 4Xy.].2 (XJ )Xx I N.k.kXt.kXj.kXj.k.^XjXd NXt.k.kXo.^Xt.^Xo.^.XXoXo NXo.^.kXtX*X*.k N.^././ N N NX*.k.K.kXVXxXJ.%.|.ZX5.5.rXV.K.u.H.k.uX*.8.`Xt hX,.iX+XqX7XB h.2.5Xx ) : :X-.8.8X* ~.uXt.rXkX9 N.8.r.rX*.8.u.8XV ~ ~.8.8.8.8",
+" 7 } qX9XtXtXtXdXt.k NX*.H.0 g.2.9.j.OXOXO.HXI.HXtXt.r.r.r ~.5.k ) P q.rXt.r.r.rXV )XJ.1 vXa.).) /XfXr n ` V., VXX.lXMXB hX, ` V kX3 |X#., |X*.a.`.8X-.KXXXJ., VXX.KXI | } DX3 D ).0Xx : (.$X9 (Xo 5.uXx (Xx d.z.z.t.Q.RX@Xg.R.o.I.z./.bXk.o N.o.b.o.o.o.o.b.o.b.o.o.b.b.b.b.o.b N.X.b.kXjXtXjXtXt.bXj.^Xz.b.b.b.b.b.o.bXz.b _.b _Xg.c l.cXg.c.c.c.U.V.cXg l.I l.c.c.c.c.c.c.c.cXg.c.c.c.c.cXgXg.c.c.c.c.o.o.oXg.X.bXg.X.o N N NXtXV.8.r.`.`.}.`.a 3 1Xw.1 M.p.+.+X+.h n =.O.YXHX+.pX:X> wXf ^X= 2 O O 0.v.jXZ kXM x VXc.j . ..s.. .Xn.4.@.@XCXm v.v.N.4.s.)Xi.j.'XUX, 8 Y $ :X, D.MXKXK.aXc.,.} ` kXc.eXw 8X,XH.*.w.w.' [ n.[X#.hX+ y.jXc g s : :X- R.e.a aX, R.N.d.) 0Xf.v.BX6 wXfXn.F.M aX1X1.~.~X-X-X-.e aX- a.~.aX,.eX- R BX-X1 3 < <XqXG.Y &.9XP.9 s $ c hX,XD hXl.a.} < $ 1 $ B 8.D.n.w J H...s..XnXL.wXw y.E.jXmXG.Y &.Y 9 C t C.NX=.WXG `.8.a ~.r N.b.bXz.b.bXzXz.^XjXj.b N.^XjXj e.^Xz.bXz.o.bXgXg.b.oXg.oXg.o.o.o.o.bXg.o.oXg.cXg lXkXgXgXk q.f.f.&.A.f.f.X.5.k.k.KXo 5Xx ( ( q 5 A ( !Xy.0.'X,XD sXU 7 K.2.|.0.5.KXtX*.5Xo.5X9.^.5 N N.^ N N.^Xo.^.^.^.^.^.k.^.^.k.k.X.k.k.kXd.r.H.r.H.8.r.r.r.^.z.rXt.r F.8.`.8.`.`X5 ( gX1 BX5.e.k ~.k.HX5 N.`X* #.K.8.a.} ._.i n.M.8.` B.` cXIX-.8.8.r.rXt.k.r.`.X ~.8.r.u.rXV ~XtX*.r.8 ~.rXV.r",
+" |X9.5Xo.5Xo N N.^.^X9 )Xd :X..G @ 4.G 4Xy g.u c.5 NX9Xx :.$ ( P f I 5Xx.X N.5X9.kX,XKXKXG J.s % ^.@ n [.- k h V VXX kX3.i $ k.-.,.- 6 6 |X#.%X3 # hX3 V., V V VX3X- : 5.,.K `XJ.$XJ.$.$ 5 I.R.A I 5Xx.f 5.&.R AXgX@.&.6 ,X X .A.f i.&.oXkXg.o N.o.b.X.b.X.b.o.b.b.b.b.b.b.b.X.b.o.b NXjXtXt.kXtXt N.rXjXt.^ N.b N.^.b.bXzXz.b.bXz.bXg.c.c.c.c.c.c.cXg.cXg.c.#.o l.c.c.c.cXg.V.cXg.cXgXgXgXg.VXg.oXgXg.o.bXzXz.bXzXzXg _ NXzXz.^ ~.8.8.` 3X-X-.` RX-X,Xc.Y >X+.x W.pX+.YX+X+X+ >.i.dXG J w HXC.v.sXC H 0 9.; [.- xXl 1 1.-XnXbXbX=.s .Xb..X> & o O 2 G GXFX= bXC ' 'XDXD :X. 1XDXK h ` :.M.9.9.aXXXH s.eX. aXc.3.nXe sX+XwXpXc.1 =X0 M.wXGXlXcXc : a.a.a.*XDX, <.NX=.vXiX6.B.B.BXfX8X4Xp x 3 B 3 3X-X-X-X-X-XI.~.a R BX,XDX-X1XIX1 c c.a U 1XpXmX0 &XmXU.'Xw.Z `.0 1 1.9 h hX,XlXKXlXD.ZXDXaXG TX0X> 0 0 b b J.vXL..Xn.W._ v U hXs.Z U.d v v bXG hX*.k.^.X.z.U.U.U.#.U.#.zXk.UXkXk.U q.c.b./.b.bXg l.zXg.c.c.U l.c.c l.c.cXk.c.cXgXgXg.VXgXgXgXgXgXgXgX9XkXgX9 qXgXX.kX* ~ 3 ~.r.$.z I.R.R (.R.] )Xy '.nXDXDXPXU ! 'X1 B TXDXM a q.| ).kX*.k.r.rXtXt.rXtXt.rXtXt.rXtXt.rXtXtXtXt.k.^XtXt.rXt ~ ~ ~.8.8XtXt ~Xk e.r ~ ~.8.8 F.`.8.D.RXO.0.H '.`XV.K.8.5Xd.r.`.r.8X*X- a c.FXeXq.Y.~.`.`.`.` RX-.`.` F.k.r.rXk F ~ F F FX* ~XV ~.8.` ~.r ~.8.rXt ~",
+".K.kX*.r ~Xt.r.r.r ~XtXx.] ) 4 Y m.2XyXO.! !.nX1.8X*X*X*.5 ) Y (XxX1 ~ 3 ~.K.r.uXV.aXl vXe.=XvX=X= 0.1X+XJ.K.aX*.,XXXB X, U .-.-.,X..SX#X. |Xh.%.,X3 XB.- X3XJ 5XX #.u 3 3 c.K cX*X5.5.5.XX9.5X9.5X9.X.5.z.5XkXk q q.z./ q.I q.z.IXg./XkXk.UXk.U.U.U.U.U.z.U.z.U.z.U.U.z.U.U.z.z.U.X.b NX9 N.X.z N.X N.oXk.U.U.UXk.U.z.U l.#.U.#.#.I.I. . .I.I. .I.I. AX@.Q. . .Q. . .I. . .I. .I.I.I.I.I.I.I.I.Q.Q.z l l l.z l.Q.z.z l lXx.X (X9.u c.H.u.uXl.u h s n.j.jX: rX:X:X:X: M MX+.p UX> w &.>.>.qX0 HX0 & &XU [X;XcXw.-XwX<.x . .._XnXn ^...@ & H &.E 0.;Xi 0 JX0XPXc.nX, 'X5 x x.9.Z.9 y h.9XK x x x.j $XK $XM $.j.'XK.>.[ [.j.E.j HXG s xXDXD.Z h.MX, U 1.WXL.s.v {.@ w L.B {.PXfX8.jX+ h.aXD 3 3 3 3X, hX-Xc c T 3.]XI.0XD $.uXl.a.}.WXpXp.;.q y.'.nXU.O 1XKXHXw.,XD h.Z.M.- n T.ZXD R.a x v o.q 9 0 /.= 2X=.).) u.) UX1 RX1 RX- a <.W.NXL.Z a ~ ~ ~.^.bXz.b.^XzXzXzXzXz.^ NXz N.^.r l.^.o e.rXj.^Xz.o N.bXz.b.b.b.b.bXz.b.b.b _.b.b _.bXzXz.b.b.b.b N N N.z N.b NX*.r ~.8.8 F ~Xt.r.r ~.r.rX1 T TX5.wX5.nX5 gX1X1.`.3XJXB } V q 5.R P.kXt.k.rXt e.rXtXt.rXtXtXt.r eXtXt.r.rXo.^.rXtX*Xt.8.8.8.H.8 F eXt eXt.k ~.8 ~ FXI.`.`.k.2XO.0.]X5.8X5X*Xt.~.`.`.kX-.8.`.8X* 3.9 vXn $XI.`.~.`.~.`.`.~ ~.`Xd.8.r NXk.` F.` ~.HXd.`.8.H ~.r.r.r.8 ~.r.`",
+"X9.r.r.u.rXoXxXd.K )Xt ).&XJXoX5X1.%XOX$.O.> ! x.Z cXXXH.% T ) D.%.]XKXIXIXVXtXV R.a v xXL.s.)XF.s.x n `X3XM.}.} V `XB xXe.MXM 3XM x # xXlXwX#X.XHXHXc V 1 $XX XJX3.$., #.`.` 3 3XIXI ~.u.kX*.rX*X*.rXt.uXtX*.r.kXj N N.X N N.^.b N.b N.U N.b.b.b N.b N.b N.b.b.b.bXz.bXz.b.b.bXz N NXjX*.rXt.rXt NXtXt eXtXj.^ N.b N.b.b.bXz.b.bXzXz.b.b _.o.o.o.o.b.o.o l.QXg.VXgXgXgXg.c.cXkXgXg.c.c.c.cXg.o lXg.X _.b.b.b.b.bXz l.XXz.bXo e.K (Xl ).5 )X5 :XJX,XK 1 $ M zXpX8.<.<X4X4 SXrXq >.)XpXGXCXm b y 9XL v yXqXG yXUXw.2.jXwXrXpXb.).d.d p.).) ^ H JXC b 2 ^ / OXCXCXa.] R R.e a.e R.* R a.*.a <.e < aXD RXD a a.aXDXa.n yXw y.Y v v.. OXpXsXs t R a h R hXL u.NX= /Xv.vXfXiXbXF - -X=.{.xXnXpX, aX-X- R 3.aXIXIXD :Xc `XJ.,X.Xc D 5.0X5 a a EX4Xn H y o s R gXJX..jXJ.9.>X, U $.a n @ m., T kXK.9.w.nXCXC O O 0.@.@Xb p.W EXDXD.DX1 3.a a.*.WXaXL.ZXIXV F ~Xz.b.b.b.b _.b.b.o.b.b.bXg.b.o.^ e.^Xj.k e e.^.^.b.b.b.b.b.b _.b.o.b.b.b _.o _ _.o _ _.o.b.o.b.o.b.b.b.z.b.X.^Xj.k.r.r.8 ~.r.r.k.k.kXtXV.8.KXP.n ' $ 'XP.2 $XVX-.'.- h 3X*.k.KXo.k.r.r.rXtXtXtXtXtXtXtXjXt eXtXt.r.rX*Xt.kX* ~.r ~.r.H.8.r.` ~XtXt.k.z N ~ F.8.` F.`.~Xx (XP !XO.2X-.K ~Xx.uX9.K.KX9.K.5X9X*.` 1XG.}X-X-.~.`.`X-X-.`.~ F.`Xt ~ F.`Xt F ~.H.r.k.k.H.`XV.r F.8Xt.r.r ~.`",
+" NX*X*.r.H.$.R.|.f 5.kX9Xt cX9 : ).0X5 @Xy.>.E nXq.3.YXc h x mX..G.O =.,Xw VXJ V.1Xw.>.WXeXL.s /Xi.;XrXcXBXJ.a c.[XMXB.Y h.Z $.M aXDXD.MX- tX,.9 1.3XHXcXHX3 k $XXXX )XX 5XM.` 3.8.` ~ 3.rXt.u.k.rXt.rX*X*Xt.r.k.`X9Xt.^.^.o.^.o N.o.X N.U.b.XXz.b.b.b.b.b.o.X.o.b.X.o.b.b.b.o.b.b.o.b NXjXtXtXj.r.X.rXjXtXtXjXj.^.b.b.b.b.bXz.b.b.b.b.b.b.b.b.b.bXz.b.b.bXg lXg.c l.c.cXg l.c.c.c.cXg.cXg.cXg.cXg _ _.bXz.b _.b.bXo l.X.b.b.bXdXo 5Xx.|XJX@.2 D f.].uXH $.1XZ.<X2.JXA pXAXp zX4X+._XG o HXUXa.!XL.n sXGXL s.9XPXO.!.'.EXw.@ %X= u h < p.sXn H 0XC w O ^.= JXC.nXP.'XIX1.aX-XD.e R R.M 8 R.MXD RXDX,X,XD.a.}X, $XK.9Xw [XH.1 M &.E z HXw M R t R.*Xp U.N.) /.v.v.BXfXfXb pXFXFXbXf.;Xf.@.Y C.e.a R RX- aX-.e.aX,XDX1XD :X5.KXl.5Xl 3.M < EX4.@ yXCXL.n.DXDX,.wXD.ZX,.w $ n.>.M.'XcXl sXD $ h :.- '.!XOXC.! J w.@ z.y.EXw = 1 TXJXJ.a.e.aXsXs sXDXI ~ ~.^.bXz.o.b.b.b.bXz.b.bXz.b.b.^.b.b.^.^XuXgXt.r.^Xj.^ N.o N.b.b.b.b.b _ _.b.b.bXz.b.o.b.b _ _ _.b.b.o.b.bXg.o.b.bXtXt.r.r.H.rXt.rXt.rXt.r.rXVXVXU.0.n.n g.].HX1XI #Xc xXB U.a.`.uXt.k.HXtXt e e.rXt.r.rXt.r.r.r.r eXt.rXt.^Xk qXk )Xx )X9.uXx.u ~.r ~.r.r N N ~.8 ~ F.8.8.~X5 gXP 4XPXO.H.u ~X-.k.r ~.r.r.8.8.8 3.~ `X5 a.aXX.8.`X-.`.`.`.`.` ~.r ).r ~.`.` FX5.R.$.| (.$.R 5.k ~ ~.rXV.8.8",
+"X9Xt.r.r.u.K 5X9.K.r.KXx 3 q ,Xx | ) :.0XwXw.xXZ = [XG v yX0X.XHX..- o z 1 x `Xl.E.9.EXsXs.Z.s.....x M [ V.[ # VXB.-.,._X, h a.u R.a.aX-.aX- a.a R.a.a 3 `.lX3 3 #X3XX V.,X3.` 3.8X-.8.8.8.u.rX*.r.kXt.r.kXt.uX* ) q.X.r.b.X.b.X.b.bXz.b.U.b.o.b.b.b.b.b.b.b.b.b.X.o.b.b.b.o _ _.b.b NXzXjXt.r.kXt N.rXtXtXtXtXtXjXz N.b.b.b.b.b.b.b.b _.o.b _.b.b.b.b.b.b.o l.b.oXg.cXg.c l.cXgXgXg.o.b.o.oXgXgXz.b _Xz.b.bXzXoXzXzXg.o.bXo.bXd.r.k.k.r.H.H.D.H F.8X1.K R.9 n.gX4XA._._ .Xf MXp.pXG >XGX+.qXG.9Xa.w v.'Xc.9XG.!XU.'XaXL.;.@.s p U $ CXe *.@ & =XZXm 0 2 O 9.q oXO.KXlXI.~X1.~.a RX,XJX, T $ :Xs.Z 1 $.aXD.u R.w.w g.>.-.-., yXGXLX=XeXL.w R t t U v v.v ^XiXiXi.@ ^.v pXF u.)..X>.C.;X2Xr [.W.9X,X,X, T $ xXI cXl $XI.u.uX- c.e.` aX, x._X4X4 H H.n.nXlX;XK.9XcXwXl TXeX.XH $X,.9 t R R 8.}XD.Z yXUXC.>.>.qXmXn O 2 p.@.MXG.M B t t <XD.= v s B.8 ~.^XzXzXz.bXzXz _.b.b.b _Xz.b _ _.b.b.oXjXz.r.bXjXjXtXj.o.b.b.b.b _.b _.b.b.b.bXz.b.o _.b _ _Xz.b _.bXz.b.b.U _.b.oXd e.r.r.uXtXt.k.rXt.rX* ~.8.`.0XP.n.0 gX1.` ~.8.8.[XeXn .~.`.H.rXd.r eXtXtXt.rXt eXtXt.r eXtXtXtXtXt.k.5.A.A ).$ 5 f.A 5 5.`.8 FXt e.r./.k F.8 ~.8.`.8.`Xo.2.0XPXPXO :X-.`.8.~.`.~.`.~.`.~.`.~.`.8X-.~.u.8 a.8.`.~.`.~.`.8.~ q.8 ).`.r.8.`.r.5X9 ).K.k.K N F ~X*.r ~.`X*",
+".X FXt.k.r.rXVX9 ).%X9 Y qX*.&X3.K.8X-XJ.jX0 .X8XrXrXp.j.xXwXhXc.MX4Xn.@ y UX- x O.s G U R U U 0.sX4X> [.YXX V.[.S.1Xr.O 1XlX5Xl ` cX-X- aX- R aX-.aX-.a a a a < a #X3 V.fX3.` 3.8.8.`.`.8.rX*.r.k.rXt.r.r.kXx QXxX* ~Xd e.^XzXz.b.bXz.b.U NXz.o.b.b.b.b.b.b.o.b.b.b.o.b.o.b.o.b _.oXz N.kXtXtXt.k N.r.kXtXt eXt eXjXz.b N.b.b.bXzXz.b.b.b.b.b.b.o.b _.o.bXg.o.bXz.b.o.o.oXgXg.V.o.b.b.b.b.b _.b.b _.bXz.b.bXzXz.b.bXg.X.bXz.b N.b.K.r.kXVXV FXdXV.H.8XI 3 a #.Y x E....XqXp.xX+.x >.@ J.E.;X+.9 s s.DXl.9 1XOXPXw `.nXLXCX>Xi.s.M x U.W / o H y &.jXC H oXC s.n.5.Z.u c cX-X-XIX- :XHXKXwXUXw.,XJXc.%X5X, R.w.n sXm m XM 1.[ yXn.=.W.W C t t CXa 2X= w ^Xf w wXi.v.).) U t.s ..4X8X>X>Xn [X< 1 1XJXD 1XlXKXlXcXl 3.e.u c.` ~X-.~ R $X+XpX4XnX>.q sXa.2.2XJ.O n.OXw YXD.9 # h $XM aX1X,X,Xe.w.w._ g.j.'.j.q & H J v.s /.) /.).W.W.* t C GXLXl RXV.r.^.b.b.o.b _.b.b.bXz _.b _XzXz.o.bXz.bXjXj.I q NXj.rXj.^ N.o.b.o.b _ _.b _.b.bXz.o.bXz.oXgXz _.b.o.bXzXz.b.c.o.b _XdXtXt.r.r.r.HXtXtXt.k.r.8.8.K.'XyXP.0.0.~.`.8.8 hXc E.F.<.u.8 F.u.r.r.r e e.r e e e.r.r eXt.rXt e.rXtXt.kXtXxXo.5.5.k.uXo 3.u.r.8 ~.rXj.X N F ~.`.8 F.` F.u mXO 'Xy.! m.8X-X-.`.`.`.`.~.`.`.~.` B.`.~.8X-.`X-.` a.`.`.`.~.` ~ ~.$.r.8.` F.8.8 ~ 3.k.8.8.8.`.8Xt.rXV.8.8.5",
+".5.uXtX9Xx.$ I.| D ( ) (Xk.kX* ~X*XI.H.K.9XwXp.@Xq...j.;.+.TXG a.MXnX>Xf.jXp._Xq 2.).= C.e h CXqXF..Xp zX7XM XBX<XwXHXc.-XcXl.] | `X- RX- RX-X-.a.e.aX- a a.a a 3XXX3 V kXM #X3X-XIX-.`.8.` ~ ~.rXtXt.k.f ) 5XV.H F F.rXd e _.bXz.b.b.b l.o.b.b.b.b.b.b.b.b.b.o.b.o.bXz.b.b _.b.b.o.b.b N.kXtXtXt N.rXjXtXtXtXjXt e.^.b.bXz.b.b.b.b.bXz.b.b.b.b.b.b.bXz.bXgXgXz.b.o _Xz.b.b _.b.bXz.bXz.b.bXzXzXzXz.b.bXz.b.b.bXz.bXg.b.bXoXz.b NXk.&XdXtXtXtXoXtXV.8.8X-XI hX7Xe.mXeXq._._.<.xXr.x.<X4.x H.E.9.n.]XDXc 1.a T $Xc.Z.Z.w o H ^.s vXl.W.W.NXm H = HX0XG oXC 9.D.wX-.KX5X*XI #.KX-.aX1 :X,.aXD $XD :.]Xl.Z.aXDXa.n.!X..-X3 # 1.9.x.s 2.W 8 C.N.N.vX=.vXi ^ {.vXi / wXn.W x._XpX+.@ ^XfX>.@XpXn h t RX-.~X- B.}XKX, R a 3 c.u.`.~X-XD xXGXrX+X>X> H.n.0Xl.n x x.wXK.Z.w.aXl h $XDX,X, $Xe.Z.w.w.Z.W $.j.9 9.' 9Xm.qXC o 0 2X=.= /.N.WXw.jXG 9.a.8.r.r.b _.b _.^.o.b.b _.b _ _.b _ _.^.o.bXz.^ e.^.kXj.^.k eXj.oXz.b.b.b.b.b _ _XzXzXg./ i. .6.#Xz _ _Xz _.o _Xz.c.o _.b.^Xj.k.k.^Xt.rXt.r.rXgXx )X9 IXJXPXO gX5.`.`.rXI 3.-Xe EX4XMX-.`X*.r eXd.r e e eXt.r eXtXt eXt.r.rXtXt.uXt.k 5.$.5XJ.$., 5 q.5 ~.k FXt.rXkXx.r.8 F.8.8 ~.`.r D.0XOXPXP.| c.`.`X-.`X-.`.~.`.`.~.`.`.~.`.~.`X-X-X-.`.`.~.~.`.X.K.8 ~.8.` ~.8.`.8 ~.r.r ~.8.8 FXt.r.8XV.8.`X*",
+"X9.r.k.$X5 I ) q.$Xo.K.r.rX*Xt.rX* ~.8.`.`Xc.wXc.xXr M M W xX,.a R.M.CXfXCX>XGXnX=.) 8 aXD R.M.w *.s ^X0.[Xp VXc x.ZX,X,.~XIX-X-XIXIX-.a.` R B RX-.a aX- 3XV.u.K.8 3XM # VX7 V.gXB.}XIX1X-.8.` ~.8 ~X*.k qXk.r.8 F F.H F ~Xd.^.^ lXk.^.o l.b.b.b.b _.o.bXz.b.o N.b.b.o.b.o.o.o.b.b _.b.o.b.b.b N.bXg.kXjXt e e eXjXjXz N.b.o N.o.b.bXz.b.o.b N.b.b.b.b.b.bXg.o.b.b.bXz.bXz.b.b.b.bXz.b.b.b.b.b.b _.bXz.b.b.b.^Xd.b.^Xx.b.bXz _ N.b ).&.&.f Q.&.|.R 5 I.2 V T :.GXc UXe.m.m ..x.x.xX4.{X>X2 &.+.j ' 1.w 3Xl :.ZXl.5 s.9 yXG &.@ 0 x 8Xe xXsXmX>X0.+ y 0 ^XC 9Xa.D t R.5Xl :.8XIX*.`.a.~.aX1XD RXD R c $X- R.Z.w.9 ! n TXMXMXM.l 1Xr v.s.N.=.N.N /X6.v LXf.PX=Xi p.E s.YXmXUXw y.+ J.sX6.@.4X> .Xn U tX- aX-.`.H.e.e t tX,X, #.`.eX-.} xXpX> H H & y.'.9 8XDX, hXDXG $.}XD $XDX,X1XlX, 1 $.w $.ZXeX,.wX, sXl.nXGXa s 9XC H o 0 0 0 O /X+ =XL 1XI.8.r.^.bXz.V.o _ _.c.cXk.b _.b _.bXz.o.o N.b.^ eXt lXk.^ eXjXtXj.b.b.o.b.b.b _.o _.b.o.c.U.U.U.c.o.b _ _.b _ _.bXgXg.^.o.^XtXd.k.u.u.uXoXx q I QXx (X*XVX- cXV.`.` F.8.8X* `.i pXq.Y.}XI ~XtXtXj e ~ e.r.rXt eXt eXt.r e.r.rXtXtXtX* 5.$.$X3 q V D ) : FXt F.r.r.^X9.r.`.8 F F.8 ~.`.5XoXPXOXP.2.0.~.`.`X-.`X-.`.`.~.`.~.`X-.`.`X-X-X-.`.`.~.`.`Xt.`.5.8Xt.8.`.8.`.8 ~ ~XV ~.8.8.8Xt ~.rXt F F.`XV",
+".kX* 3 I q N.5XtXt.rXtX*X*.rX*.r.8 F.8.r ~.`XI.a sX+ MXpXc.WX,X-X1X,Xp.@ wXC.;.. pXe B.D.ZXI.} hXs 2Xn.;.[X7 k.i $ UX5 cX, cX, c h :.aX1XDX1X1XI 3X-XM : cX-XV #.~X-XM.FXM.F >X%.lXc.a RXI R.`.` ~XV.5 IX* F.8.8 ~.8 F F.r.k.R.&.( q.XXx.z.bXz.b _Xz.b.b.b.b N.o.b.b.b.b.bXz _.o.b.b.b.b.o.b.b.b.oXk.b.b NXz.^.^Xz.^.b.b.b.bXz.b.b.b.b.b.b.b.b.b N.b.b.b.bXgXg.b.b.bXz.bXz.b.b.b.b.bXzXzXz.bXzXzXz.bXz.bXzXdXt e.^ N l.b N.b N.b.^ (.b (XxXk.RXk.z.].k.5.k $ : KXw E.m E EXn.@Xn ^Xf.@Xn W yXU ! s T cXJXc.uX3XlXKX.Xm ! H.E.@ .Xs.MXD h x.9 b.+.> & oXCXP b vXD RX-XD R 3 # c c 3XI cX1 RX-.Z R T.8 x.* R s.wXcX.XcXMXM c.a # x.Y > 0Xv.v 2X=Xi ;XfX6 {Xi p..Xs u.W.M.w.Z.w.ZXe v.. -XiX6.{.J.F.i a.eX-X-.e TXl x.M.a.a.} c.~X-.eX,XpXG.j HXC.E s.w.DXlX. $XD.O.,.ZXw :.3XVXlXK 1XJXwX..MXK.3X.XD nX5X,.9Xw 8X5XLXL.n JXm H HXC.vX= GXG.YX5X-.r.r.^.b.o.c.cXg.c.c.c.U.V.o _.o.b.b.o N.b.b.^ e e.^XtXk.r.rXj.rXz N.b.o.bXz.b _ _ _ _.b.b _.b.o.b _.b.b _.b.b.bXg.bXg.^XjXx.A.X ) ).R.| I (XxXoXt.`.H.H.`.`.`.`.` ~ ~ ~XVXc.i E._X+Xc a 3.H.^.rXj.rXt.rXtXt ~Xt e.r e.r eXt.rXt.u.rXXX9 cXVXX c cXt.H F F.`.`XtXtXt.8 F ~.8.8.8.` F.`X1XVXP !X..2 3.a.`X-.`.`.~.`.`X-.`X-.`.`.~.`X-.8.e.`.`.`.~.8Xx.^.8.r.8.` ~ F.8.`.8.8.8.8.8 ~ ~.rXt F.8.`.`.X",
+"Xo.rXt.r F.r.k ~Xt.r ~Xt.r.r.r.8.8.8.8 ~.~X* $XJ $.-.jX+XKXKXDXIX1XDXp.x.@ J...s..Xe CXDXI RX,X,.N p.sX0X%.[X<.S.S 6 kX-.-XJXBX-X3 c.uX#XJXlXw.$ T $ |Xl.e.%X* 3 h 6XMXB.gX7.[._Xq XDXI.`.8.` 3 )XlX3X1 3.` 3.8.` 3 ~.r V./.f.5.X.Q ,.Q N.o.b.o.b.b _.o.b.b.o.o.b.b.oXg.b.b.b.o.b.o.b.b.b.b.b.b l.b.b.b.b.X.b.b N.b.b.b.bXz.b.b.b.o N.b.b.bXzXz.b.b.b.bXg.oXz.bXz.bXz.bXz.b.b.b.b.bXz.b.b.bXz.bXz.b.b.^Xj eXt.rXdXx.oXzXzXz lXxXgXx.XXgXxXxXo.5Xt.5.u cX- #XlXq.9.F._ E.<XnXi 0 0Xf.< M.Y.qXOXD 'X- xXl `.uXl s.0XO M y.@.. 2Xs.* tXMXIXK o =.EX0 w o.q bXaXD RXI.a a.~XI.u.HXlX1X-XD $ R kXc m.nX.XPXG.j n =.OXc 1 c.}.aXMXMX+X%...s ^X=Xf.@ w.PXF.@ v MXG [XKXK.-X..Y ` 1.-.N U 2X= % .Xf.JXn U C aX- T `X.XJ.- `XKX,XD.~.`.a.MXGXG y H HXmXL.n.ZX, mXDX,X..Z UX.XwX. t :Xc 1.3.Z nX,.w.3X, tXJ U RXJX;X1 8XD.wXaXaXL 0 H 0.v G.).N sX,.H.u e.^.o.o.c.c.c.c.c.c.c.o.b _.bXz.b.b.b.b.b.^ eXtXj.^.IXjXt e eXj.b.b.o.b.b.bXz _.b.b.b _Xz _.b _ _ _ _.b.bXz.b.oXkXz.b.o.8 qX9.5.5.K )X9Xo ~.k ~ ~ F F.HX1.`.` ~.r.r.u.u [.[X% >XZX+X3 : q.&XkXdXt.r.r.u.rXtXd e.r eXtXtXt.rX*XtXVX9.$ V.$.,X3.f NXd.r FXd.` F.r.8.8.8.8 F.8.H FXI.`.8.~ c.2X.X; 'X-X1X-.~.`.~.~.`X-.`.~.`X-.`X-X-X-.`X-.` N.8 F.~.`.8.k.8.`.8.`.8 F.` F.8 F.8.r.rXt ~.8.`.`.a V",
+" N.r.k.rXtXtXtXtXtX*.rXt.r.u ~.` 3.8.8XIXo ).] 1.-XD x : :XKXI.`.` R 1X4 b JX=.W p.W.DXDXDX1 3 U.M.s 0 WX<.[X7.L.-XMX#.[ # X3Xh 3 V # 3X.X1XD.] 1 #XI.% 3X1 | :.aX3XZXcXBX7XqXp._ E.l a 3XI c D TX1XVXIX1.~XIX-.` 3 # IX3.K.u 5 A Q.&.(.b.b.b.^.o.b.b.b.b.b.b NXz.b.^Xz.b.o.o _.b _.b _.b.b.bXgXg.b.b.b.b.b.b.b.X.b.b N.b.b.b.^ N.b.b.b.b.^.^.^.^ N.b NXg.o.b.b.b.b.bXz.b.b.b.b.b.b.b.b.b.b.b.b.bXz.b.^Xd.rXtXt e.X.bXz.X.c XX@ Q AX Q A f.z.7Xt ].k.%Xx : I KX<.1.lX4 J M ^.vXi.@ HX0.'.nX5 8.eX- 3X5.e R B B.D.'Xm y...).s 8 t R.}XM $.j H.> & b JXmXLXLX, a.9XJ.u xX1 g.K 'X5 cX-X-.,XlXJXUX;.> n ! !.q.G = ` `.i 3 #.l XBX+Xi ^XfXfXf 0 ^XnX=.j v.-XK 1.- $ :.-XB `.-.-.i C u p p %.CXf . vXD.* BXl.ZXIXD $X,XlX-.u.~X-.e U._Xn.@.@.EXr.E.s ' s g.'.*X. x.MXcXlX. 3.'.- TXG n xX,XlXc.Z.aXKX,X, :X5.K.~X- R.Z x v.j J.vX= H.=XL.w.u.8XtXj.b.b.c.V.c.c.c.c.c.c.oXz.oXz.b.o.b.b.b.b.^Xj e eXt NXg.^XjXj.r.^.^Xz _.b _.b.b _ _ _.o _ _.b _ _Xz.b _.b.b.o.o.oXg.b.^.r.^ ~ ~.` ~.5 P.5XtXt.r.` ~.8 ~.`.8 ~.HX*.r # $X#.TX4 >X7XHX. D )Xk A ~Xd.rXd.rXVXtXt.rXtXtXt.rXtXtXtXt.uX9X9X9.KX9.5.5 N.^.r FXx.r ~.u.r ~.8.8.8.8.`XI.8.~X-.8X-.] m TXUXlXlX1X1.`.`.`X-.`X-.`.~.`.`X-X-.`X-X-X-.5.X.`.` ~.8.u.`.H.8.8.8 F.8.`.8.8.r.r.r.r F 3.`X-X,.-",
+".^.r.r eXj ~.rXt ~Xt.rX*.rXt.8.8.` 3XI qX9.% q.uX-X1.aXlXo.u.H ~ 3.H UXGXe.v.s.)XeXe.ZXDXD.DX,XD u.)XL.@ zX<X%.1 W.[.h [XB V.} # < XMXM `Xl.e TX3Xl 3 ` '.~ (XJ.}XJ.[ kXBXw.FXr.p.g.i .iX3 c ] c.HX-.`.~XI.8.~X- cXJ ( :.u.5 qXx f A.z l.^.o.bXz.b.o.b.b.b.o.X.b.o.X.o.b.b.b.o.b _.b.b.b.b.b.bXg lXz.b.b.b.b.b.b.b.^Xj eXjXj e eXjXj.^.^XjXjXtXt eXj.^.bXg.b.b.b.b.b.b.b.b.b.b.bXz.b.b.bXz.b.b.b.^Xd.^Xd eXt eXd.r N.bXo _.XX .&.&.&.tX@.t.& AX@Xx.&.$ ] )XJX5 `., [.jXpX2XC.=.E 0 H 0 = v ' ' BX1X-X-.K.a.~X- R.w.'XC H bXb.).a.a.a.}.Z s y MXC.O O J.q b.Z K.wXc T.2 m DX. gX; DXKX-XIXDX,.w.n sXU 9 o x.Y nXK ` x.a.a # # X>.@.@XfXiXi.v.B.)Xn.M.* CX1XD 3 BX, R.}.M.a < h R.a.* uXFXb.{.C.@X%X+ U R.eXl.~XIX, a RX-XIXV.~ t.*XeXpXq v.@.j y.9XGXm $XDX,.ZX5X,XDX,XD $Xl h x x $ $ h.ZX, cXD t R.eXI.~X-X-.` R.wXLXp.E 0X=Xv.s.) xXD c.r.r.^ _.c.U.V.c.V.c.c.c.o.bXz.V.b.b.b.o.b.b.bXz.k e.rXj././.k.k.r eXjXj.^.^.b.b.b.b.b _Xz _Xz _.b.o.b _.b.b.b.b _.oXg _.b.b.kXt ~ ~XX F.k.R qXt ~.^.r.r F ~.u FXVXVXx ) I.,.[Xr E .Xq 1XDXIXt.k NXd.rXdXV.k.k.k.rXd e.rXt e.rXtXtXt.r.5.rXVX*.uX*.r.k.^Xj.8Xt.H.H.H.8.8.8.8 ~.8 F F.H.`.` aX9 #Xw ! g yXU.n R.eX1.`X-.`X-.`.`.~.`X-.`X-X-.`X- ~.K.~.`.~.~Xt.`.8.`.8.8.8.8.8 F.8 ~.r.r.8.8X-.` <XM 1",
+".^XjXt.r.rXjXtXtXt.rX*.r.rXV.8 3.8 : )X3.$.kXt.uXVXI cXI 3.KXt.H.r cXDXnXG O v.N UXq BXIXDX,X, < 8.W.)Xe.@.pXrXnXpXG nXB #.l.lXM x # aX-.*X- a R c.e.eX-X1 3X- <.i `XBXB n.[.p.g >.m >.} `.,XI.`.`.8XI.`.`.~ h.5.2.K R.u T.5 4.fX9.^ NXx.^.o.^.b N.o.b.o.^Xg.b l.b.^.b.o.b.b.b.b _.b _.b.b _.b.oXgXz.b.b.b.b.b.b.o.b.^ e eXj eXt eXt eXt.r e eXt eXt.^XzXk.X.bXz.b.b.b.b.b.b.bXzXzXzXz.b.bXz.bXzXd e eXt e.r.r.r.r N N.b.b.^.X.b.b.b.b.^.X.b N N.X.X.k.uXt.HX* 3.a $.Y.YXLXp &X0 J ^ O & 9.nXoX1X- RX- 3X-X1 RXD oX; =.+Xp MXe.j :XM.Y.Z.9 oXm.qXC 0 9Xm v $ s.w.nXlXDX, BX,X5X,.D R.* R R.w 1.>.O.G =XU.jXw nXcXc.u.}.} #.FXcX>XiX= /.B.BXb p U C a B.e RX1XIXI R.a a R < a a a.e t tXs p.PXfX2 z WXr.-Xc k :Xc D.Z $X1.eXVX1 R a a U..XpXn.@ & &.9 s TXa $.DX,.ZXDXl xX, UX,XG.wXq xX,.ZXVX, $X, R.u 3 3.~ B R $.w s H 0 2Xv.).).)XG aX5.rXj.b _.V.c.c.c.c.c.cXg _ _Xz.bXz _.b.b.o.b N.bXz.^XjXtXgXt NXgXjXt e.rXjXj.b.b.b.b _ _ _ _Xz _ _.b _.b.b.b.b.b _.o.cXz.b.b.r.r FXt.r.8.kX9.kXtXt.rXj ~XtXd.r.uXd q I.A.5.u x .i._ $XB )XJ.| (Xx e.|.X Q ) Q.r Q ~XtXtXtXtXt.rXtXtXt.k.k.kX*.r ~X*.^.XXj F.8.8.` ~.8 3 ~.8 F.8.8.`.~.`.`.~ 3 ) kXG y =.+.j.Z 3X- a.`X-.`.~.`X-.`.`.`X-.`X-.`X-.~.`.`.`X-X*.8.`.8.`.8.8.8.8.8.8 3Xt.H F FX-X-X,.Y.i",
+".kXt ~XjX*.rXt.r.rXt.rXV.r.8XVXV DXX q ).rX* ~Xt.8 ~ ~.kXV.$ N qXtXo #.M.j y J u UXM RX,.Z.ZXD a <.W.) 2 v.@Xn vXi.s.j.j.F.F.l.l kX,.} R.e.eXDXD aX- RXIXVXI h.l X%.Y.FX+ > >.F.FX%.TXc.a.a 3.~X-.`XDX5Xl ( c cXI : 5 m IX9Xt.rX*XtXg.rXtXj.k e.^.^ NXx.zXx.(./.o N.b.o.b.b.o.b _.b _.b.bXzXg.c.b.o.o.b.b.b.b.b.^.^XjXt.^ N.b NXzXjXt eXtXtXd.rXdXj.^Xg.X.b N.b.b.b.b.bXz.b.b.b.b.b.b.b.b.bXz.^ eXtXtXtXtXt.r e.^Xd N _.X.bXz.X.^.b.b.^.XXz.bXx.bXx N.kXt.H.8 3XI.Z.Y.s b H.+ H 2.v &.!Xa 'XDX-X-X- 3XJXcX-.DXK.T.OX0 WX2X>Xq.- ., 1.ZXmXC.!.> b.+ !X; gXc ' '.'.' :XlX1.ZXD RX- 1.ZXc ! =.3 KX.Xc.j kXwXcX7XM.}.} h.l X+XnXb.)._Xb.j vXr.9., $ : s.ZXc.w ' sXDXJ c.,X5Xc :XlXl.- x....X:.{X2Xr.[ xX, x.} c h.a 3X- RX1X,.e R s.} t._X4Xp.E HX0 y s.'.Z.Z $.Z 1XDXD.Z $ x Xq $ xXeXI.ZXK $ TXK `X- 3 RX-.ZXL OXC 0.v.).; 2 *XL.D RXtXt.^Xz _.V.U.c.c.c.c.c.oXg _.b _.b.b.b.b.b.b.b.o.b.^XjXt N.^./ NXt.rXt eXtXj.^.b.b.b.bXzXz.o.b.b _.^.b.b.b.bXz.b.b.b.U.^.b.b eXt F.8.k.8.r.f N.rXtXtXj.k.X.r.$ q.fX@XxX*.u 3XM.Y.i x : # q.A.z.zX@ q.R.X q A (.R NXtXt e.rXt e.rXtXt.^.^.r.r.kXt.r.^.KX*.8 ~.8.8.u cXV ~.8.8 F F F.`.~X-.`X- 3 xXK vXw &XCXrXcX1.`X-.`X-.`X-.`.~X-X-.`X-X-.`X-.`.`.~X-.` 3.`.8XI.`.8.8 F.`.8.8 ~XV.`X1.~X1 R 1 1._",
+".k ~X*.r.rX*.rX*.rXt.r ~.8 FX9 D q D c.rXtXtXt.r ~.8X*.u ~.A f f.R |.$.-XU & H.j.Y.,X5.Z.wXD a tXD CXa C v 0.s 2.= /XGX+XcXBX7X7.-X7X< kX, x x 1 :XM 3 a.e 3.`.} #.i .-.lXq EXq EX+ [X<Xh nXp RX- 3X- R :.,X3 `.a :X9 T.5X5XI.8X*XtX*.^.K q.kX*.r.kXtXx N.& Q.&./.z.o.^ N.b.o.b.b.b.b _ _.b _.bXg.cXz.b.bXz.b.b.b.b.b.b.^Xj.oXk./.IXk.^XtXtXd.rXt.rXt.rX*Xg.X.b NXz.b.b.b.bXzXz.b.b.b.b.bXz.b.^.b.^Xt eXtXtXtXtXt.r.X.^ NXz.b.^.b.o.^.o.^.o.^.b.b XX@X@.z.R.z )XkXx : ` oXw.O [X0.E.v w & oXG.n.K R.~ R RX. mXD $.ZXU.OX+..XF U.M t u.a.w sXmXC.O.G yXZ @.O.O Y @.G @ !X;.% : 3XI.aXl gXUXwXmXwX..,XB 1XK.-.gXcX3.i h hX, 1.YXcXn . ..NXe.jXU n cXH x g.9XeX.XGXKXJ R.3 : mXl T 'XKXK n.YXnX0..X6X2X4X4Xn.l a a.e.a a.a.` a.~XI : cXc XKXpXqXnXpX> & y sXK sX,X1.w D xXl.n $ $XG x.wXDXlXIXD.5 c.D 3.u a 3 R UXaXLXC 9 O.N /.N H.W xXsXIXo.rXz _ _.c.c.c.c.c.c.o _Xg _.bXz _.b.o.b.b _.bXzXz N.b e.o e.r.^ q.bXtXt eXtXjXz NXz.oXz.b _.b.b.b.b.b.b.b.b.b.b.b _ l.o.bXzXt.r.r FXo ~.r NXx.^XtXj ~X@.k.&X@ qXkXt.r.k.r.u 3 VXMXB #.`.8X*.b N NXzXdXt e.r.r.r.r eXt e.rXt.r.rXt.rXt.k.^XtXt e.rX*.^.^X9 ~.` 3X*XVXo 3.` ~.8.8.8 F.`.`.~.`.`X- 3.9XnXnXh.+Xw.Y.i aX-X-X-.`X-.`.`.`XV.e RX-.~XV.~X-X-XVX-.HX-.8.`X5.8.`X-.`.`X1.8.8.`.`.~ R h.Y x._",
+".KX*.r.KX* ~X*X* ~X*.8 F.8 ~XV.X.k.uXt.uXt.rXt ~ ~ F.r.r ~.$./ 5.f.A 5XcXw H & yXc.S x $.w.aXD.aX, a U.M._Xe U.N.).N 0XG.jX>.EXpXGXp kXM.- ` :X,XX ` c.e 3X-.`.KXB .[XB.mXq._Xq.mX%XpXpXpXe Xq aX-.8 R 3 :X-.8 : q |X9.u F F.H.rXV.K ).& I.k.r.K.X 5X9.7 ) ).5.^XtXtXjXj.o.b.b.b.b.o.b.b.b.b.bXgXg.bXz.b _.b _.b.b.b.b.b N.XXg.X N.kXtXtXtXtXt.rXtXtXt e.b N N.b.b.b.b.b.b.b.b.b.bXz.bXz.bXz.b.^Xz N eXt eXt.rXt.r.^.^.bXo.^.bXzXz.bXzXzXz.b.b.oX@X d.t.tX@.Q.R q.R.] | :X. n vX0.@.@X>XC.!.' ' 3 B.a : $ $.*.w.w.Y KX0 n.x .XrXq n.W U 9 vXm.OXH g.9 m ].5.5 $ T 4 !.] 'X5X, 3 B.'.DXU s gX.Xc ` `XM .Y .- V 3 $ a h.Y.-Xn.... E.M CXDXD.D.aXD h U hXe t.i <.M.a.a x cXD 8 R U U U U U..XnXi ;.4XfXn.YX, < < a a.} < a.a a cX-.K c.i.a <..Xp.@.j H vXw sXDXDXJXc T DXHXl.9XKXK n 1.9 :Xl :X5 3 3X- aXD U.w.s 9XC.v.N.N.N t C.W vX- 3XoXj.o.b _.c.c.V.V l.c _XgXg.o _.b _Xz.b _.b.b.b.b.b.bXz N.X.rXj lXk.kXtXt eXt e e.bXz.b.b.b.b.b.b.o.b.b.b.b.bXz.b.o.b.c _Xz.^Xd e.r ~.u N.8XoXoXtXtXtXtXk./Xk.k.r e.rXj.rXt.k.r.K #.r.`.8.r.k N.b.b.b.bXzXdXj e eXt eXjXt e e e eXt e.r.^.kXj ~ eXt e.k N N.r.8.8XI 3 :X5 $X1X1X1XI.`X-.`.`.~.`X-.a.lXGXnXC M MXn hX-X-X-X-.`.~.`.~ DXV c c 3.5XVXl.`X3XI.5XlX5 3 5.KX5X5 c.K.K :.K.5 3 a #XcX7Xq >",
+" V qXMX9X9XX.KX9X*.8.8.8.8.8.r.k.k.rXtXt e.rXt ~.8 ~X*X*XVX9X*.r.uXd.r 3 v v 0._X,Xl.MX,.n R.a.}XD tXDXDXe.M.a < t.NXG.s vXa.s 2.)XpXc.Y.} t a.a a.a 1.a.}X-.}XXXXXX.[ ._.m._X4 UXrX+XnXeXe p x $ hX,.G `XKXcXX :.K.8.` F.~.`XI ) 5.$.5XVX9X3XX 5.$ 5XxX9.rXtXj.rXjXj.^.b.^.o.b.b.b.b.b.b.b.bXg.b.b.b _Xz.b.b.b.bXz.b.b.b NXz N.^Xt eXtXt.r.rXt.rXtXt.r N.kXt.^.^.b NXz.b.b.b.bXz.bXz.bXz N.b.b N.b.rXtXt.rXtXt.r N.k.^.bXz.b.bXz.b.b.bXz.bXz NXz.b.^.b.^Xo.oXdXd ~X*.u.}.u.Z.9Xe.+.j 0 O.q 9.0.n R :XU.Z s.Z.ZXa.' =XrX>Xp.<._XnXrXe.W s.jXUXKXcX,X1X5 D 3.`X1X- 'XU ( $X5.uX,X- BXsXa s.>XK ` x XcXcX3 $XI.}.a h.9.-.x.... u <X1X1X1.0.w R U uX4 C._.iXe E < <.aXD t.* C C u u EXnXeX=XbX6.@X>.@X>Xq t < t t.M.} a a a 3XV.~ a t < t C .XGX>Xr.EXUXG 8XDXK.]XK DXwXH ! n gXK :XU : 'X1XIXI s x.ZXG v b & O.) b.9.W CXs.wX5XIX1.X.b.^ _ _.U.V.c.cXg.o.o.c.c.VXz _.b.b _ _.b.b.bXz.b.b.o.o.b e.r.r.k.oXk.^Xj.rXj.rXj.o.b.b.o.b.b.b.bXz.b.bXz.b.b.b.b _.UXz.bXz e.rXt.k.r ~.`.z.f.kXt.r.rXtXt.rXtXjXt.r.r eXtXt.r.^ ~.8 ~.rXj.^.b.b.b.bXzXzXz.^XjXjXj.^.b.^ e.r e.r eXt eXd.k eXj.k e.r e.^.b.r F F.8X1.5 xXl.w h $ U RX-.`X-.`X-X-XD.,XG._X4.J.F._.lXB h aXI.~X-.`.~X- qXc qXM (XX k.5.~ 1 ).,.5.K.H.] )XK ) DXJ.$ ` m 1 h X+X<X2 [",
+" c 3 )XMX*.u 3 3.r.`.8.8 F.r.r.r.rXt.rXt.rXtXt.r.r.r.r.r ~.K.u.u.r.r.u.H s.s.W.W.i cXD.w x RXIXD.aXDXD cX, < <.aX, u.Z u.N * / / vX+ .9 x x x $ h.} #X, c 3 3 3 h # X7.[Xq >.xXqXq p [ U EXq.xXnXe.s vXn v.1X+.-.- `XM.8XMXV., ) B c `., # 5 I.u.KX*X*X*X*.rXtXt.r.^.^.^.k.^.b.b.b.b.b.b.b.b.bXgXg.bXz.b _.bXz _.b.b.b.b N.^Xj.kXtXtXtXt.rXtXt.uXtXtXt.r NXt e.r.^Xz.b.b.bXzXz.bXz.bXz.bXz.b.b.b.^.^ e.rXtXtXtXt e NXj.^.b.b.bXz.bXz.bXz.b.bXz.o N.b.b.b NXz.b.^XzXtX* ~.r 3 3 $ x.W.xXn.+ 0.qXl.] @ g '.9XwXP @ K.O y ! o.W 2 2Xp = = : 3 <.}.`XXX.X5XVXo ( 5.K.`XI '.!.0.5XlX1X,Xa.n.nXcX;XJXKXS.-.3.O kXK.YXHXc $ [.YXh.LXr.jXb U.MX- RX-.D.DXe v..Xn .Xp...m.d < t U.M.WXs.).)X=..XnX> M =.{ M..XpX>XpX>XG v 1 .9.FX, < <X-XIX-X- a < <._ ..@.@.jX>.1.>XcXc s.ZXD $.n.ZXD.w.ZXe.wX, R.D.a $.Z.n.9.!XCX0XC J.s.NXs.* v tXDXsX, R.u.r.K.b.o.oXz.c.c.U.c _.b.c.c.c.oXzXz _.b.b _Xz.b.b.b.bXz.^.b l.^Xj.r.r.kXtX* ~Xj e eXt e.^Xz.b.b N.b.^.^ eXj.^XjXz.b _.b.U _ _.X e.r.k.r ~.` ~Xo q NXdXt.rXt.r.r.r.r eXt e.b N.b.X l.^.b.^.^Xz.b.bXzXz _Xz _Xz _Xz.^Xz.b.bXz.^XjXj.^.^XjXj.^.o.r.kXjXt e eXz _Xd ~ F ~XI.DXl.nXL vXL.. xXl.aX1X-.8.~.`.}Xp._.m E.d.d._.l 1 $X-X1X-.~.8.~.~X-.`X-X-.8X-.` R.`X-X1X1X1.~ I : ]Xl.5 `X. :XcXKX+.1 MX+.J.mXA",
+" kX*.,XX )X3 5X*.8.`.8.8.`Xt.r.r.rXt.rXtXtX*.rXtXtX*.r.r ~XoXVXd.u.rXt.8XG.s.)Xs cX,XD.D.w R.M a 3XI xX,.MX-X-.} a 3Xs.*.* C /.)XLXrXn.} h.a.aX, c hXl hX, 3.aXM.}XM.l X7Xr WX+Xn v [.g._._X4.x . 0..Xb ..@Xn.j >.F .[.l # :XIXD `.5 mXHX5 c cX9.$X3.rXtXtX*XtXtXt.k.^.bXt.^Xz.b N.b N.b.b N.bXg.o.b.b.bXz _.b _Xz.bXz.b.b e.r e.r.r.rXt.rX*Xt.r.rXt.k.r NXjXt.r.^ N.b NXz.bXz _Xz.bXz.bXz.bXz N.b.k e eXtXtXtXt.r NXj.^.b.bXz.bXz.bXz.bXz.bXzXz.b NXzXz.b.b.^Xz.b N.r.rX*Xt.8 #X-XG.W v MXmXP.nXU @XUXO.].0 D.2Xl 'XPXwXGXL v 9 b y.} aX*.} 3X*.rX3 cXVXd.H 5 )XVXI.H !.0.0.,X5.n.w.nXmXUX..SXH `XwXB yXK.9 :Xl xX3 $XK.[XwX%.@.T.Y <XD.DXDX, CXG.W.m .X>XrXn.m p.) pXq.W pXeX=.mX6Xp.<X4.jX+.j.p.pXr W yX+.@XnXGXnXp.YXq h tXlXl c.e h.MXeXpXpXpX2X4X+ =X..jXK y T C.D.ZXl.Z ' yXc s.w.w.' $.nXaXPXC.! o b w b.NXn C C.*.MXs.D 3 3XVXV.XXt.o.c _ l.c _.b.V.c.c.cXg.bXz _.b _Xz _.bXz _Xz.b.bXzXz.U.^.^XjXj ~Xj.rXg./Xt eXjXjXjXjXj.^.b N.^.r.r.r e eXzXz.bXz.#XdXz.& A.r (.8.`.5XVXtXx.r.r.rX*XtXtXtXt.r.r e e.^.b.b.b.U.^.o.b.b.b.b _Xz _ _ _Xz _Xz _.b.b.bXz.b.b.b.b.b.b.^XjXkX@.IXx l.rXj eXzXz.^ e F ~X1XI.w v.s 2 HX8..XG.D.~X-.~.8.}.a x ..i E u <.m x.9 x a.`X-.`X-.`.`.`X-X-X-XI.~.`X- R RXI.`.`.~ : :.5X5 `Xl c x.- z.<X2X8.<Xf.C.C",
+".K.u.K.K #.k.K 3.8.8 ~.8 ~X*.rXt.rXt.rXt.r.r.r.r ~.r.r.8.8.K ~XVXt.u.rX1 s.s pXe xX- h xXD xXH $ nX.Xl x.uX, : cX5 :XD t < t.d.WXn.[ x h.}.}XI 1.l : $ #XX ` `XBXcXr nXr HXq._Xn U._X+XrX4.xXG.) p vXeX+X7 #XM.l 6XX.} c : T.ZXJ.u # ).,X3X*X*X*Xt.rXtXtXtXtXt.k N eXtXj.b.o N.b.b.X N.b l.X.b.b.b.b _.b _Xz.b.b.b.bXj eXtXtXtXtXtXt.r.rXtXtXtXt.r NXt.r e.k.b.bXz.b.bXz.bXz.bXz.b.b.b.b N.bXjXtXtXt e.rXt.r.b.^.b.bXz.b.bXzXzXz N.bXz.b.bXzXz.bXzXz.b.b.b.^Xz.^XtXt.r eX5XI xXGXe s.q.!X; 4.].ZXD 8.D.].2XVXIX1XD.w T.' xX,.MXD.`.K ~X*.r.rX* D NXdXt.k 5XX.`.Z T.] '.0 :.'.n.!XUXw V :XBXc x.ZX, R.Z.*X1X,XI.a a x.-Xw.@ M M n.-XB.-.j.jXr.<.1.g.p.pXrXn..X=X= 0X=.sX4.@XpXr.pX+.pXB.F XMXBXnXp.jXpXG HX> y.jX+.F._ U 1 UXw.Y.[ =.TX+.<.xXnX4.jXr.1XU nXGXKXG.D.W.DXmXc y.' o s.n s s v yXm OXa.=.= 2 v.N.j.j C.NXsXsXw 'Xo )Xx ).z.&.t.6. i.6. .6Xg.c.o.o _Xz.bXzXz _.bXz _Xz.b.b _ _XzXk.b.^.rXjXtXtXjXkX9Xj N.r eXt.rXj.^ NXzXj.r eXj.r eXz.bXzXz.#.oXz d.t Q.z fXx f.$.k ).^.rXt.r.r ~.rXt e e.rXjXj.b.bXz.c.b _.b _XzXzXz _XzXz _XzXz _Xz _.bXz.b.b.bXz.b.b.bXj.^.b.z.^.b N.r e e.^XzXz e F ~ FXI 8 x s ^.x.vXi J.9XDX-X-X-X- 3 x x E.m u E xXqXq : t.eXI.e.`.~.`.` R.`.eXIXIX-X-.`X1X1 3X-XV.~.eX- 3.e.e R.a x.JX2X2X4.CX8XfXf",
+".rX* 3 3.r 3.` 3.8.`.8.`.r ~X*Xt.rXt.rXt.rX*X*X*XV ~.8.` FX5.H.k.u.r.HXI v 2.W._X,XD.W.ZXI 1XH :.,XHXH nXwXU.,XJ `X.Xl t.e <.W p v.j.F h <.a h XX.- XBXM xXBXMXBXK k.jXw.j.j y v pX+X%.pX4XrXpXe U C CXq.<Xp.pXM.l.l.l., | k IXH.5XlXM : `XX.u 3XVX*.uXt.r.kXjXtXtXtXt N.k eXt.^ NXz.^ NXzXz.bXx.o N.b.b _Xz _XzXz.bXz.b.bXjXjXt.rXtXtXtXtXtXtXtXtXtXt.r NXt e.r.^.^.b N.bXz.b.bXz.b.bXz.bXz.b.b.bXj e.rXtXt.rXt.r.o N.b.bXz.b.b.bXz.bXz.bXz.bXzXzXz.o.b.bXzXzXz.^ N N.k e ~XdXo.HXIX,XG s gXy.|.D.HX1X5.5 5 IXV ~.8.8.HXIXDXD.aX-XI.`.r.kX*XtXt N.r.fX@.rXtX*.r N D (.0 !.].%XyX.Xw.2XUX. D VX3X3Xc hXDXDXDXD cXI.a R.a 1.[XrX+XC._Xp._Xq WX4 .._ z.h [XM nX+.@Xn.s.@.s.@Xr.[X7 > x XM.l c # #XB.[.[X+.[.-Xr W.jXpXpXp.p.-Xw n n & zXrX2 >.mX4Xn n.Y y n &.YXG.9 x.9.'Xm g.> & s v y.qXC w.v.=.= G.NXs.w =X.Xe u C *XaX5 T ] ).R.&.X.tX@XuX X d. iXgXg.o _Xz _.b _Xz.bXz _ _.bXz _.bXz.b.U.bXgXj ~Xj.rXtXtXjXk.bXjXj eXt eXj.kXtXt.rXt e eXj.b.b.bXzXgXz.X l.XXxXo.k.k I qXt q.rXt.rXtXj.k e.r ~ e.r e.r.b.b.b.U.o _XzXz _XzXz.bXz _Xz _ _XzXzXz.b.bXz.b _.bXz.bXzXj. .z.z e.rXj.rXj eXz.b.b.^ ~ F.8.HXI R v.WX=...v.s v x R.`X-.8 3.}.Y._ E._ uXe.-.,X< R.}.e.2XI.8X9XVX-X-X- I : 3 R ` V.` 3XVXJX-.` 3 `X-.M.}.3.FX4.<.JXf.{XfXi {",
+".rXt.r.r.8.8.8.`.8 ~.8XV.rX*.k.rX*.rXt.r.u.uX*XV.r.8 ~ ~.8.k FXV.rXV F.u b.s p s a.M $Xe.MX, 1X,Xp 1.9 $XU xXlX1X5Xl.Z.* < u U *Xq.jXM.} a a # #XB., k.-.YXB V.[.,XwXw.q y ' H MXpX4Xe.TX2.g MXr._XeXqXGXn.9Xp.[.l.F # X3XZ |X. R 3.~ `XV c.} 3.8XV.8XtXt.k ~XjXtXtXtXt.^.bXtXj e.kXj eXjXtXj.^XgXg.b.bXzXz.bXz _XzXzXz.bXz NXdXt e.r.rXtXtXtXtXt.rXtXt.r.XXdXtXtXt.^.^.bXzXz.bXz.bXz.bXz.b N.b N.bXtXt eXtXtXd.kXtXg N.bXz.b.b.bXz.bXz.bXz N.bXz.oXz.^.^.b.bXz N.b.b.^.^XjXt ~Xz.D.HXIXD.ZX; !.uX1XV.u.| ( 5.kXt.rX*Xt.8.`.8.8.8.`.8.r.r.X ~.rXt ~Xj NXtXtXtXtXV.8.u ].w : mX. YXKXy 'XHXK k }.[X3 VXM h cX5 c ` :XI.u <XXXB.g.+.;.s .Xb - {.B.B..X>.S.F.i 1 `.-.-.jXrXr.p.pXB.lXM #XXXX # # h.u 3 h # # X7.[X7XB.FX7 W.jX4XnXr >Xn.<X>X+.x MXr .._ .X4.j.Y.YX> M.q.Y 'XG s.9Xw &.j.j H.;.j H 0Xi 2 /.N.N C 8 aX, 1.*.M.W.)XL.D.8XV.u.r N.^.^ NXg.UXg.oXg.UXg.c.oXz _Xz _.bXz _.b.b _Xz.b.b _Xz.V.cXz.b N eXtXtXtXt.kXj.^. .k eXtXtXt e.rXtXt.r.rXj N.b _ _.b.#.b.b.b NXt.rXV ~.`.`.r.$ NXtXt.r.r.rXtXt e.r.r e e N.b.b.U.bXzXz _Xz.b _ _ _.b _ _ _ _Xz.b.b.bXzXz _.b _.oXz.^.^XjXk ~.k.r.rXt.^ N.bXz.^ e F ~.8.8 R $.Y o.) 0X6.. HX,X-X-.8 3.aXM._.s v.M xXBXh.OX-X-.u IXX.~ :X9XIX-XV I |.u.`.u.5.`XI.u I 3.`XIX3 aX- `.3.- . rX2.J.xXfX6..",
+".r.rX* ~ F.8.8 ~XVX9.K ) 3X9XxX* qXk ) )X9.5X9.5.u.8.8.H.8.k.8XtXV.r.H '.YXL pXG <XD.w $XD.M U $ h $ a.aXD R.~X-.~ BXD.* a t.) vXp n.l.}.a t xXM.,XZXH [ n n kX. n nXc.'.nXLXG.j.jXe .X+Xn.<Xr.-.jXpXGXpX+.+.p k >.i V.SXHXJ.1XUXl RX-XV 3.`XI.8 3.8 ~X*.r.rXtXj.rXtXt e.k.XXtXtXtXj e.rXjXtXt NXg.X.b.b.b.b.b _.b.oXz.b.bXz.b.b.k.kXtXt.rXt.r.rXtXtXtXtXt NXd.rXt eXj N.bXzXz.b.b.b.bXz.b.b.b.b.b.b e eXj.^.^.^.^ NXk.b.bXz.b.b.b.b.b NXzXz.b.b.^.o.^.b.b.bXzXz.b N.^.bXzXj e e.X.H.H.uXVX5.R.Z.8.k.5 ).A q qXtXtXj.r.r.r F 3.r.r.rX*.^.b.X.^.^XjXj.kXt.rXtXtXt.H.H 3.k.2 'XIXV 3.ZX5 $X,.KXc | V., VXX.u 3 |.-X5 :X. V.,XH [XhXh.+.sX6.B.P ^.P {.v.@.pXM #XM :.lXMXBXpX+.-.gXBXM.lX3X3 D :Xl.5 :.K.` #XM #.l.l.l.l.iXM.[XrX+X> nXrX> y M & WX0 WX4 .._Xq.-.jXK yX+XrXr y oXG.YX0Xp..XnX>XCX> 0Xn / *.N C.* RX, aXD R.M.N C.s xX1.rXtXtXt.^ NXg.bXgXkXg.U.c.c.c.c.o _Xz _Xz.b _.b _Xz _.bXz _XzXzXz.c.oXz.b.^.rXj.rXjXt e.z.U.k.^Xt.rXtXjXtXt.r eXt.^.o.b.b.b.b l.b.b N.XXtXt.8.`.8.8Xt.r.r.rXtXt.r.rXt e.r eXt.rXdXz N N.#Xz _Xz _ _ _Xz.b _XzXzXzXzXz.b _.bXz.oXz _.bXz.b.b.^XtXj N e.rXtXt.^ N N.o N.X.^.r.^.k qXVXD.9Xw.> H z.@Xh v 1X1X-XVX-Xe.9XeXe E 1XG.YXK <.aXIX-.u.` ~.u.~.a ~X- :.8X-XIXIX-XVX- ~.`X-.a.a R < $.YXq >.p.{...{.@.v..",
+".r.r.r.8.8.8.8 ~ c.$ V 5.k 5.,.KXJXJ., 5 |., 5 V.k 3.`.8.8X*XV.u.H.5.`X, yXnXn v.MX, h $ 8XD $ h $X- RX- a.~X- BX-X- 3 3XD h.w.) v.pXB # a R.ZXlXH.SXZ = ! ! =Xc.'XG.n.w.w.wXG &.<Xq pXnX+ z.x.. p.).d p.s._.s.jXB.gX< kX< kXcXcXcXIXIXIXI.`.~.8.8.8.8.H.rXtXtXtXt eXtXjXj.X.b NXz.b.^XjXt e.^.bXx.oXz.b.b _.b.b.b.b.b.b NXz.b NXtXjX*XtXtXtXtXt.rXtXtXt.r.5XtXt.r.rXdXj.^ NXz.b.b.b.b.bXzXzXz.b.b.^.^.^XzXz.^.b.b N l N.o N.bXzXzXz.bXz.bXz NXz.bXzXzXzXzXzXzXz N.bXz NXz.^Xj.rXo.r.^.H q.f.5.kXx 5 I.fX9Xt.k.r.rXt.r.r.rXt.rXj.^.bXzXz.^.o.b N.b.b N N.^XtXtXtXt.rXV.8.u ) mX5.8X1X1X1.`.0X# D c k., # h.}.[ `.} 3 3XI.a.}XMXp.[.j 0X6 wXf ; L.@Xf.<.- x.lX, # #.l x.l `XB #XM ` : ` : VXJXM 3 3 hXMXXXXXM #.i 1 X3XwX0.qX0.q.q n y &Xr H.j._._ E x.ZX.XrXrX>.;.; & MX0X+Xq.m.mXAXf...) v.d u.M.* a : 1 $ R.N 8Xs.NXGX, 3.r.r.k e NXg.^.oXg.c.cXg.c.c.c.V.bXz _XzXz _Xz _.b _XzXz _Xz _Xz _Xg.o.b.bXz.r.rXjXj e.k.rXtXgXk.o.r.rXt.k ~ eXt e.^.b.^.b.b.^.U.b.^ NXzXtXdXt ~ ~.8Xt.rXj.r e.rXt.rXt.r ~ eXt e.r.^.bXz l.b.oXzXzXzXz _ _.bXz _Xz _Xz _.b _XzXz _XzXz _.b.o.^Xj.r.bXtXt e.^.bXz.b.b.b.b.^.^.X , f D mX.XJX;.j.E.@ H 0 b.'XD 3 R.~XG W.1XnXq x.9 s a.a.`.`.`.~XV.K.`.`X-.8 a.`X-.`.`.`.H.`.~.`X-.`.a a t.9Xq.F >X2XAX4.4Xf.B %",
+".r.r.8 F.8.8.8.r.r 3.rXX # 3XM.u c.u #.K #.u 3.8 3.`.8XI.8.k ~Xt.k.` D 1 =.E =Xe U $ $X,XDXD.M hXIX- RX- a.a.eX-X-.` #X-.M a.N.).W > .lXD.eX1 #XX.,XhXh.G.'X;XOXK.w.n.D.n sX+Xr v p pX4 zXrX>.J.. p pXF.d 2..Xn.pXM.S.lX7XcX+ 1 gX1X1X1.8.`.`.`.8XI.8 ~.rXtXtXtXt.rXtXj.k.b.bXz.b.X.b.^XdXj N.bXg.o.bXz.b.b.b.b.bXz.bXz.bXz.^XtXt.rXt.rXt.rXtXt.r eXt.rXt NXt.rXt.r eXt.^.b.b.b.b.bXz.b.bXz.bXz.bXzXzXz _ _Xz.bXz NXk.b.b.b.b.bXz.b.bXzXzXzXzXz.b.b.bXz NXz.bXz.bXz.b N.bXz.^XjXk.^.^ q.&.^Xj N.7 qX NXt.K F.^.kXjXt.r.r e.^.^.^.b.^.bXz.b.b.bXz.^.X.^.^XdXd.rXt.HXdXVXI F ` DXI.`.HXI.`.5 Y.K.aX3XJ.K # a.a < a t.a.H 3 3.iXMXB.p.@ ^ ^ {.B {Xi 0Xn.[ 1X,.} a h h # # #XM # 3 aX-.a 3 3 3X-.eX-.aXI a a.a.}.iX3X, ` VXB m.jXU.qXUXm b s b s.j.xXn..Xe $ xX,.Y n WX+Xn.@XnXp.F.m EXAXfX6 2.N U.M.a a B.e : ` $.MXs.N.N s h 3XtXtXj.rXjXx.X.o.b.c.c.c.c.c.cXg.cXzXz _Xz.b _Xz _ _Xz _Xz _Xz _Xz.b.c.o.b.bXzXj.b.^Xj N.^XjXt.o.z ~.I.^ ~ e eXjXjXj.X.b.6.6.z.IX@.z.fX@ A.&.X.z.8 ~Xt ~.r ~.r.r e.rXt.rXjX* e.r e eXz.b.b l.b _.bXz _XzXz.b _Xz _Xz _Xz.bXzXz _.b _Xz.b _.b.bXjXt e N.r eXj.^.bXz _Xz.b.b.bXoXo.$ q.5 :.uXV 3.9.sX>.; OXa v.9 $X-.} hXH =.p.9Xq vXq a #.~X-XV.k.`.8.~.~ R.eXI.e.`.`.~X- F.`.`.`X- < h 1.9.F._.yX2.mXn.4XfXi 0..",
+" F ~.8 F.8.8 ~X*.rX*.5X9X9X3 qXX V V V VX3X3 # 3.8.8XI ~ F.k.rXt.r :X.Xc.>.EXw CXs hX5 t.DX, RX, a R.e.eX-.e.e.e.e $.a a.e C u.= 2.E 1 3 c.}XMXXX3 MXm.'XaXO g =XJXwXI.D.0 yXr v E E E.1XrX>.<.PXb %.mXb.)..Xp.Y.FXM .YXc.9.nXcXDX1.HXI.`.`.`.`.8.8 3.r.rXtXtXtXtXt e.^.bXz.b.b.b.b.bXz.^.bXzXx.oXz.b.b _.b _.b.bXzXz.b NXd eXtXtXtX*XtXt.r.rXtXt.rXd.r NXtXt.rXt.r eXd.^.bXz.^Xz.b.b.b.^.b.^.bXz.b _XzXzXzXz.bXz l N.b N.bXz.bXzXz N.bXz.b.bXz.b N.b.b N NXzXz.bXzXz.b N N.^Xk.X Q.tXgXo.X.X.& q.X N.^.k N N N.b N.^.k.^ N.b NXz.b.^Xz.b.bXzXo.b f A.&.R qXkXx 5.R ( D 5.5.$.K ` )XV.8XM.5X-.` #.$XMXM #.i 1 x.5.u #X1X-.}.l.l.[.[.4.@.BXv - - 2Xq.- xXM 3 3X- a aX-.a.a.}.} a.aX-X-X-X- R.~ aX1.~ R BX-X-.aXX `XGXc.S Y =.> g.nXG.wXL.n ' bXmXrXp._._ UXlX-.} xXr MXwX0.Y.@Xq._.m.m.J.sXv.N U <.* BX1 B aXD.*.W.N.).w sXD.u.rXt.rXd.X.o.o.b.oXg.U.c.c.c.c.cXgXzXz.bXz _ _Xz.b.bXz.bXz.bXz.bXz _ l.o.b _.b.^.U././.I.IXg.r e ~.zXk.r eXtXj.r ~ e.b.bX Xu.&Xu.( dX@ A.RX@.RX@ ~ ~.8.k q ).^.r eXt.r eXj.^.^.r e e.^Xz.b l _.bXz _XzXz _.b _Xz _Xz _Xz _ _.b.b _ _Xz _.b.bXzXjXt e.XXtXtXj.^.b _XzXzXz.b.b.b.^Xt.H.5.kX1 3XI.Z v.v.YXe.N.v vXpX-X-XI.9XGX+.TXn k W `.,X3 c.uX5 ( ` D ) D : :.5.,X- R.`XV.~.`.` x XpXq._XqX% >.m.m.<.C.@ O.s..",
+".8.8.8.8 ~ ~.r.rX*.rXV.K.5.KXMX9XMXXXMXM #X9X*.8XI ~ ~ F.8.^.r.r.` 3 8.9.W.s.+Xe x n gX,XUXD.MX3XJ a T.}Xl cXKXc $ 1 .*XB.N.W 2.@X> 1.l.a h 3XM #.[ m o vXL.w.DXD $ ' !.'XU.j.Y.m.i.d.}Xq.d >Xf.JXbXbXb.vXb.s.pXB.l.i `.[XmXaXa DX,X1XD.8.`X-.`.`.`.8.8XVXtXt.rXt eXtXt.^ N.b.XXz.bXz.b N.b.b NXg _Xz.b.b.bXz.b.b.bXz.b.b.bXzXjXtXt.rXtXtXt eXt.r.rXtXt.r NXt.r.r.rXtXtXtXj.^ N.b.b.b.b.b.b.b.b.bXzXzXzXzXzXzXz.b.bXk.b.bXz.bXzXz.b.bXzXzXz N.b.bXz.bXz NXzXzXz.^Xz.bXz N.^Xz N.I d A.X N.b.^ NXg.^ N.X.b.bXz NXz NXzXzXz.b.bXz.bXz.bXz.^.o.^.b.b.oX&X@.&X@.&.R QXx ) 5 D.%XJ D ( I.$.5XVXx.8 3.`X9., $ #XJ [.3XJ., DXJ 5 ` V V.l XB.jXf.vXFXF /.).Y.Y #XM.aXVX-X-X-.~X-XI a.` R.aX- aX- R B a B RX-.* a a a a a R.a $ ` X.Xw gXa v.n.DXs 8.n s &.jXp._ hXIXI.}.M U E vXG.Y [Xe.i.m.JX6X=.) 8X, B B 'Xl R R a u.sXe.W 'XD.uXdXtXt.kXo.b.XXg.b.o.c.c.c.c.c.c.cXg.oXzXz.bXz.b.bXz.b.b.bXz.bXz.b _.b.c.o.b.b.b.b.UXgXgXgXz e eXjXt.^XtXz.r.r.r eXt e.^ N.bXg.b.bXgX9.b.X N e.k.r ~X*.rXt.^Xd.r.r.r.r eXt.^ N.^Xj e ~ eXz.b l.b.b _Xz.bXz.b _.b _.bXz _XzXzXzXz _ _ _XzXz _.bXj e e.r N eXt e.^.bXz _ _ _Xz.b _.^ N.r.X (.kX1.HXD b.WXGXrXL.) 0.j hX-X-Xl.9.jX<X+.yXHX<.- | cXV I.2 : ) `XJ.5.2 :X*.u.~X1XV.~.`.uXBXA.m E >X2.g.F.mXq ..x b.vXeXe",
+".8.r ~ 3.r.r.r.rX* ~X*.r ~X* ~.u 3 3.u.u.u 3.8.8 ~.r 3.8 ~ NXV ~.8 h x s.W = v.MXH.Z.OX5.OX1.9Xl : 1., k.3 hXK.1.Y hXK.*.+.Y.N.s 0.@ 1.} a.lXX.[.[ yXO.' v.n.M R R.D.0XUXUX> pXe.d a >.F.x ..C {X6.PXfXf.@X+ .l x ` g s.nXa.!.n B.HXI.`X-.`.`.`.8.8 ~X*Xt.rXt.rXt e.^.bXz.b.b.b.b _.b.b _.bXg.o.bXz.b _.b _.b _.b.bXz.bXz N.kXtXt.rXt.rXtXtXtXtXt.r.rXoXt.u.r.rXt.rXt eXtXdXtXjXjXjXjXjXjXj.b.b.bXzXzXz _XzXzXz l.b.bXz _.b.b.bXz.bXzXzXzXz NXz NXzXz N.b.b.b.bXzXzXzXzXzXz./X@.X.b.XXz.b.b.b N.oXz.o.^.bXz.bXzXz.^Xz.b.o.b.o.b.bXzXzXgXz.b.^.^.z.U.zXkXk.b.k ).XX9.5X9 :XxX9X9.5 N I.r 3.8.`XM VXMXX `X#.,X#XHX# |.S.SX# V.lXB.[ ^ 2XvXF / 0.jXBX9 h.~ 3X-.r 3.K c.~X- RX-.~ RX1 R R.*X1X-.e RX-X1X1X-X-XI.a a $ ` ` nX. gXlXlX, RXD B.n s.E &Xn x $.} cX-.} < t <.a h s UXq EXf ^X= / CXD.eX-XD m.n a.M.sXG.s.- x c.u.rXtXd.IXg.X.Q.XXz l.cXgXg.c.c.c.cXg.V.b.b.b.b.b.b _ _.b.bXz _.bXz.b.b.c.o.b.b.o.bXz.o.b.b.o.^ ~XjXj eXt ~XtXj eXtXj.r.^.b.^Xz.oXz.z.o.XXz.^XjXjXt F ~.8 ~ 5Xx.rXdXt.r e.^ N.b.b N.^ e eXzXz lXz _Xz _Xz _Xz _XzXz _XzXz _Xz.b _.bXz.b _.bXz.bXj e N.^ ).rXj eXz.bXzXz _ _XzXz.o _.oXz.k ~Xx F.HX1 s xXLXn v.v 2.EXn._.n.eXI `Xn._.m EXB 1.a.aX-.~X-.`.`X-.K.eX-.~X- 3 aXIXVX-X- $ >.m p.J.JX<.F.m.mXAXf w OXn.n t",
+" ~.r.r.r.r.r.rXt.rXt.rXt.rXVXtX*XtXtXt.uXt.8 ~.8 3.r ~.8 3Xo ~ 3XI.Y.w.W 2 =Xr x., mXU.D.OXK xXH `X5XK VXcXl.9XK.> sX+.-.E.+ 0.v 2.sX+ | 3 #XX |.[.O =.+.>XU.' R.a.~X- '.! =XpXe.m h EXp.hX+X4.CX6.CX8.;X: M.pXp ` Xc y.0XaXL.0.' RXDXIX-.`.`.a.`.`.` ~XVXtXt.rXtXjXt.^ NXz.b _ _Xz.b _Xz.b.bXg.o.b.b _Xz.b _Xz _.bXzXz.b.b.b.kXtXt e.rXtXt.rXtXt.rXt.r NXd.rXtXt.r.rXtXtXt e e eXjXd eXtXdXtXzXz.b.b _.b _Xz.b N.cXz.b.b _XzXz.b.b.b.b N.b.b.b.b.bXz NXzXz.bXzXz.bXzXz NXzXzXxXz _ _.^.b.bXz.bXz.o.^.bXzXz.b.bXzXzXz.o.V.cXgXg.oXg _XzXgXz.b.b.b N.b N.^X9 N.RXx 5 q., 5 I., QX9.|X9XV (.K 3XIX3 kX7X7.-., kXwXwXJ.-Xc.[.- ` .i .p OX=XF.) /XGXK.K #X*.KX3Xo.K cXt 3.` 3 : :X1XI R $XD R.eX-.~ R B.e.e <X- a.aXI x ` 1.,X;.O.OXwX5XJ $ ]XPXy.>.L.YXp.iX,.u a.a.a.a.a t R a <Xq E .XnXv.NXDXI.~.~.*XD t.N.NXw.TXJXH |.$.R.R q.6.(X@.tX . .6.c.c.c.c.c.c.cXg.cXg.o _.bXz _.b.b.b.b _.bXz _.b.b.bXg.o.bXz.b.b.b.b.o.b.^.bXz eXtXt.r eXj ~Xt eXt e.^.b.b NXz.bXg.b.b.bXjXj ~.r.k.8.8.kX9 NXd.r e eXt.^.b.b.b.bXz.^XzXzXz l _XzXzXz _Xz.b _.b _Xz _.bXz _Xz.b _.b.b _ _XzXz e eXk.z./ e eXj.bXz.bXzXzXz _ _ _XzXz.b.b.b ~.r.5XtX-.w .).W O.s.@.s . xXGX5 RXq ._._ xXB a.aX1XI R.`.`.`X-.8.` 3XI.aXc $XDX- < x.F E >.JX%._.m.m E..X>X> ^ O.M.a",
+" ~X*.r.r.r.rXt.r.r.rXt.r.rXt.r.r.r.r.r.r.rXt.r.8.r.r 3.8.r.KXIXI.M.w 2.N.sXe 1X,.i 1X,XlXlXl $XDX,.e h.e R.}Xs U.N._ v.s p b.s 0 O.j.[.SXH.,XM kX3XZ.O.+Xh =.'.a aX1.e.'.'.jXwXnXe E U.-.pXn..X> ^Xf H.@ y n.[.- nXc gXP s.D.D.n.!.n.uX1.`.8X-.`.`.a.`.8 ~.rXtXt.rXtXtXj.b.b.b.b _Xz.b _Xz _Xz l.o.b.b _.b _.b.b.b.b.b.b.b.bXzXtXtXt.rXt.rXt eXt.rXtXt.rXoXtXtXt.r.r.uXtXt.r.r.rXt.r.rXt.r e.rXj.^.b.bXzXzXzXz.bXz l.b.b.b.b _.b.b.o.o.oXgXgXg.o.b.o.b _.bXzXzXzXzXzXz.bXz.b.^.z.o.^.^Xz.bXz.bXz.bXz.bXz.bXzXzXz.^Xz.o.V.oXgXg.cXgXgXzXz.c.b.b.^.b.b.o NXz.b.^.z.fX9.f q qX9 q 5 I ).R.kXV )XVXDXGX+.@.@X> & gXU g.jXC vXpX>.jXcXBXB.j 2Xv /.N.s y.-XXXX.K.K.K N DXoXo.KX5 q.] ` ` :., T TXI RX1X-.eX-X-X1 c.e a aX- 3XXX3XJXc !XH.2XcXl )XVX5 gXU =.;XG x x 3 :.Z xX, 3 #XDXD xXe pX4 ^ /.NXsX1.~X- t.M.N.N.=Xw.%XX ).$XxX3.&.f.&X@.IX@ A.6Xu l.c.c.c.c.U.c.cXg.c.bXz.b _Xz.b.b _.b.b.bXz _Xz.bXzXgXg.b.b.bXz.b _Xz.b.c _Xz.bXjXt eXt.r.r.rXt eXt.^Xz.oXz.b.b.cXg.^.b.^ e.r.r.`Xt.r.r.k.5Xt.rXt.r eXz.b NXz.b.oXz.b.bXz.U _Xz.b _.b _Xz _.bXz _XzXz _Xz _Xz.b _Xz _Xz.b.bXj e.^ NXk.r.r.^.o.b.b _XzXz _ _ _ _ _Xz.bXj.^ F.~ ~.8XD U v.s O.> &.sX=Xi y $.a a 1.F x xXpXDXDXI.~.`XIX-X- ~.8X-.8 R c .YXpXn a.FX4 E WX% >XAXAXA.J.<.4 0 2Xe.M t",
+" ~.r.r.r.rXt.r.r.rXt ~Xt.r.rXt.r.rXt.rXt.r.r.rXt.r.r.r ~XVXo.8XIXDXe / / CXe U # $ c $ cXD R t RX- 3.~.a t R.*.WXs.sXpXG 0 J.@XC.E HXHXBXM h.- V `Xc M.qXw sXG.Z aX- a.H $ g.9 & vXe._XpXG.Y.p H.x H.j H bXn y.j.[.-XU y.Z '.D.w.n TXOX5X1.a.`.`.a.`.`.`.`.8.HXtXtXtXtXt e.b.b.bXz _Xz _ _.b _Xz lXg.b _.b.b.b.b _ _ _.b.bXz.^XjXt.rXt.r eXt eXt.r eXtXt.r NXtX*.r.uXtXtXt.rXtXtXtXtXtXt.rXtXtXtXt.^ NXzXzXz.^.b.b.^ l.bXgXg.c.cXg.o.c.cXg.cXgXg.oXgXgXg.o.o.bXzXzXz.bXzXz.bXzXz lXz.b _.b _.b _Xz.b _.^.o.^.bXz.b _.VXg.c.VXg.cXg.VXgXz.^XgXzXz.b.b.^.b.b.X.X N.X.r.r.rX*X*.uXV.k.r N.k.uXdX5.Z.D.EXn.vXi.@XC OXL OXC.E.v 2 2 vXG yX+ y.v /.).NXL.j VXXX*XXX3.$.K.8XV.`X-.~.~ ` cXDXD RXDX1 $ 3 3 3 3XD R 3Xc # c :Xl | V.,X3 3XK.w T c ).k.D.u.] vXrXrX+XqXh.wX.XDX..,XVX3Xc tXh x._XnXi.).) RXDX- t R U.N.sXKXl 3.rXt.rXj.rXkXg.^.bXz _.o.o.VXg.c.c.c.c.c.cXg.c.c.bXz _.bXz _XzXz.b _XzXzXz.b.b.b.c.o.bXz.b.bXz.b _ _Xz.b _.b.bXt.rXtXtXjXj.r eXt.^.b N.^XzXz l.b.b.b.b.r e.r.r ~.8XV fXx.rXd e eXjXz.b.b.b _.b.b _ _Xz.z _ _.b _ _.b _ _ _ _.bXz _.b _.b _ _ _Xz _Xz.o.bXj e eXt.bXt e.b.b.b N.b _ _ _ _Xz _ _Xz.b.b NXtXt.X 3X1 tXnXL 2 H M 0XFX= ^ v.9 : a x.FXwX;XJ T :.2 '.H I.K.,.5.] mX5X. vXpX>Xp.< > >.JX4 M.pX> SX8.<X8X6 2.. v.M.M",
+".r.r.r.r.rXt.r.rXt.r e.r.rXt.r.rXt.rX*.rXt.rXtXtX*.r.rXt.u.uX1XD 9.s.= /.N.) xXe $ hXDXD.a.a R RXD RXDX- R a.*.N.N O & H.j HXCXCXC.E.j.S.3.Y kXH.3.1 =.> ! =X. 1 ` 1X1XVXlXK.n.j yXnXG.j.j.j.jX4XG J.E.EXeXG.'.' s.9 g.n.w.n BX,Xa s TXU.H.a.`X- a.`X-X-.8.8.8.r.rXtXt.rXj N.b.b.bXzXz.b _.o.bXzXg.o.b.b.o.b _.b _.b.b.b _XzXj e eXt eXtXtXtXtXt.r.rXt e.r.X.rXt.rXt.rX*.r.r.kXtXt.r.r.rXd ~.kXtX*.^.X N.b N.b.b.b N.U.^.b.oXg.c.c.o.V.c.c.c.cXg.cXgXgXg.c.o _XzXzXz.b.b.bXz.^.^ l.b.o.oXgXgXg _.bXzXz.bXzXz.b.b.V.oXgXgXgXgXgXg.VXg.o.oXz.o NXz.b.^.X.^.^ NXz.^.kXtXt.r.rXV.k.r.A (.RXx qXo I DXKX0 &X>.; ^ H bXLXaXC.E ^.v 0 2 2Xa v.j.sX=.).N v y V.$X3X9.uXVX-X-.a R.~.aX- a.5X-X- RX-XIX1X-.~.aXIXI 3.uXc.5X3 x k }XH., hXc.n.n 1XlX5.K.k.] ' gX0.xXp v n 1 !Xl T 1X,XM 3 :.9X+ p.JX6X=.) t U.e.M.N.NXG v s 3Xt.r eXj.r N N.X.b.o.b.bXg.cXg.c.c.cXg.c.c.c.c.cXg.b _.b.b.b.bXz _.bXz.bXz _Xz.bXzXgXg.b.b _Xz.b.b.b _.b _.b.b.b eXt.r eXt.rXt eXtXj.^ e e.^Xz l.o.b.bXz.^Xj.r.rXtXt.r.k.k.rXt e e.^Xz.b.b _.b _.b.bXzXz l _.b _ _.b _Xz.bXz.b _Xz _Xz _.bXz.bXz _.b _Xz _XzXj.rXj N e.^ N.b.b.b.b.b.bXzXzXz _Xz _.oXz.b.kXtX9X9X-XD.D O.=.v.s.W.WXFX=.sXGXKXI.a KX#XJX9 :Xd.' '.5 )XV.5 c.0.nXw.v ^.4 ^.JXf.T.{.; W.; o z.;XiX:X0 p v y.M 1",
+"X*.r.r.rXtXtXt.r e.rXt.r.r eXtXt ~X*.r.r.u.r.r.r.r.k.r.u.HXd.HX1XU 2.N 2XL.) s U.M U.}.aX- a a.* BXIX- cXV.9.ZXa v.v.; wXG OXL OXa.EXw [XJ ` k n.> =.>.9X0 1 ` :.a :X-XIX5 $ xXGX>Xm y H y.YXGXL.w.nXa.nXa.ZXeXl s.n.n.wXa R R B.wXa.nXJ.Z.`.`.`.`.8.`.`.`.`.`.8.rXtX*Xt.k.^.b.b.b.b.bXz.bXz.bXz l.X.b.b.b.b.b.b _.b.b.b.bXz.^XjXdXtXt eXtXt e eXt eXtXt.r N.r ~.KXtX*XtXoXt ~XtXtXtXtX*XtX*.k.k.k NX9 N.o.^.bXkXz.^.z.o N.oXgXg.c.c.c.c.o.VXgXg.o.o.b.o _XzXz _XzXz.b.b.o.o.o.o.IXgXgXg.oXz _XzXz.b.oXg.oXg.oXgXgXgXg.cXg.c.c.cXgXg.o.o.^XgXz N.zXg.z.I.zXg A.z.IXo.5Xx )X9 ~.uXxXx.5Xk.5X9.5.5Xw.j HX>.E oXCXLXLXLXm.+X0 z J 2.= /.) 0 0 G.N.s vXcXM V 3X- R 3.e.e.eX- R aXI a.aXl.uXI 3.HX-.e R.~.eX- RX1.aXDXD.KXX :XHX3 : ' x.Z RX-.K.5X9 : s.> MX> vX4 xX,XDXD.M.a a cXD t.}._ EXnX6.) * C.M R U.W bXGXaXIXtXt e e eXj N.b.oXz.b.b.bXg.c.c.c.c.c.V.c.c.c.c.o _XzXzXz _Xz _Xz.b _.bXz _.b.b.bXzXg.oXz.b.b _.b _Xz _Xz _ _Xz.^.rXt eXtXj eXt.r eXtXt e eXj.bXg.b.b.b.bXz.^XtXj.8 ~.H.f.z.r e e eXzXz.b.b _.b.b _.b _Xz l _ _XzXzXz.b.b _.b _Xz.bXz.b.bXz.b _.b.b _Xz.b.b.b.^ e.r.^XtXz.o.o.b.b.b.b.b.b _ _ _ _.o.b.b N.^XjXo :Xd BX1 bX=.)Xi U.N.= / *XLXUXc :XIX3 D ).u.`.~.~.~.`.e.KX-X1.*XsXn.sX= wXf.@.@.y.x J.; o 2.@Xi OXp.@.WXs.YX,X,",
+".r.r.r.r.r.rXt.r.r.r e.r.r.r.r.rXtXtXtXtXdXdXt.rXt.rX*.r.8.H.Z.'Xm.j.v.sXLXG v.@.wXs t t a.a a.a a RXDX5XJXc.! y H =X0.E & bXLXaXL s.>Xc.-Xc.-XwXU.'.9 s.n.M h.a a.e R ~.KXI.wXL v o.E.' vXa._XGXsXDXa.D 8X1.D R 8 'Xa.D 8X,XD.a.Z.0.]XUXVX1X-.`X-X-.`.a.`X-.` F.8 ~.r.rXt.k.^.^.^.^.b.b NXz.b.bXk.oXz.b.b.b.b.b.b _.b.b.b.b.bXz.^.^XjXjXtXjXj.kXtXjXj.k.r.^Xt.^Xx.z.rXx 5Xk qXx.XXoX9X9X9Xx ) ).kX9.A.$Xk.zXg.t.I q.f.IX9XgXk.c.b _ _XzXzXz.b.^.bXzXz.bXzXz _.o.c lXgXg.cXgXg.o.UXz.bXzXzXz _.b.b.o.oXgXg.V.oXgXgXgXgXgXgXgXg.c.o.cXgXg.b.o.^XzX X@ Z./Xu NX X@ 5.f ,.|.f (Xk.k.rXt.r ~Xt ~.8 3 ' g M.q &.+XUXU ! !X; =.> H w.s.=.N.= G._.W.N.)XG.j `XXX-X- RXD DXc c kX,Xc 3 `Xl mXc.,.KXcX- 5 RXHXcXJX,XwXDX1X,XMXl mXHXw sXl.Z R.aX-X5 c (.]XPXh M M n =.Y R h R RXD c < 3.a < x pX4X6 / * u U pXs s ' $XIXdXV.r eXtXj N.b.o.b.b.o.b.bXg l.U.c.c.c.c.U.c.c.c.b.b.b.b.b.b.bXzXz.b.bXzXz.b.bXz.bXzXgXg.b.b.b _.b.b.o.b.b.b.bXz.^.r eXt.k NXt eXt e.r e.r eXj.^Xg.o _Xz.b.b.^Xt ~X* ~.rXoXt.kXt.^Xz.b _.b _ _.b _.b.b _Xz l _.b.bXz _Xz _XzXzXz _Xz _Xz _.b _Xz _XzXzXz _.b.b.bXj e.b N.b.^XzXz.b.b.b.bXz _ _ _XzXzXz N.b.XXt.rXx.u.HX1XG.sXb.. U U C.= / vXG y :XK c.KX*.`.~ F.`.`.`XI.`X-.~.aX, 0.)XF ^.s.s %.s ^Xi 2XL.NXs.N.w.WXDX,.M BXD 8",
+".rXt.u.r.rXtXt.r eXtXt.rXtXtXtXt.r.r.r.r.r.r.rXtX*.r.r 3 c D gXJ J =.OXCXL ^ bXGXn.w U t < a a.e a B.~X, 3XD.W v 0 b 0 vXC sXaXa.Z xXcXw n = m n s s.n.w.M R tX-.a a.uX1.KX1.M.ZXeXLXaXa.w.Z 8XDXD B 8X1.* RX1XD B 8Xs.* RX-XDXl ' ' T.2X1.`.`.8.`.aX-.`.`.`.`X-.`.8.8.r.uXtXtXtXj.^.b.b.b.b.b.XXg.b N.b.b.b.b.bXz.b.bXz.bXz.bXz.X.b N NXz N.b.b.b N.b NXd.bXtXdXk.RXoXkXoX@Xx 5Xx N 5 ) 5.KX3.$X9.5 N./././.oX@ d./.t.IXg.o.bXz _ _.bXz.b.b.o.bXz.b.bXzXz.b _.oXg.o.o.o.bXzXz.^.zXzXzXz.b.b.o.o.cXg.c.c.cXgXgXg.oXgXgXgXgXgXg.oXg.cXgXg.bXgXzXz./.z.z./Xx.^.R.X.I.0.X.z.]X9.u q.rXt.k.rX*.r.8.8 :Xy !XUXm =XyXU.0 '.' s v o o 2.=.N G U.s.).).NXG.- V.K aX1X1X-XK xXK kXDXHXHXKXc.u kXJ : Y 3.%.Z.'X1XcXJXDXD R.a x :XHX; g.'.ZX- B R c.u , : Y @.O = zXrXr xX,.Z.'.9 x.a < RX- U x.d.J ^ %.W U.).sXG v $.H.u.rXdXtXtXjXj.bXzXz.bXz.b.b.bXg l.c.c.c.c.c.c.o.V.b.bXz.bXz.b.b.b.b.b.b.b.b.b.b.b.bXzXzXg.oXzXz.bXz.b _.b.bXz.b.b.bXj eXjXt.^.bXt eXt eXtXtXt eXtXdXgXg.b.b.b.bXzXt FXtXtXt.&Xk ~XzXz.b _ _.b _Xz.b.b _.b _.b l.bXz.bXz _.b _Xz _XzXzXzXzXzXzXz.b _.b _.b _.b.b.b.bXj.r.X N.bXz.o.o.b.b.b.b.bXz.b.b.b.b.o.bXgXg N.rX5.H.`.e.wXLXbXp E.M C 8.W.=.s v g.'.ZX-X*.8.`.`.`.~ 3.`.`X-.8X- UXn.)X= 0 / O.N.) %.s.= G 8.* C R.M.ZXDX, R RXD",
+" ~.rXt.r.rXtXt.r.rXt.rXt.r.r.r.rXtXt e.rXtXtXt.rXtX* 3.8X, mXl.W.Z.>.+.> o.E.q 0 v.s v u u.* < R a RX-.eXD.a 8.W.= J H.;X0XKXL.D 8.ZXlXc yXJ o s.w.w.a.*XD.a t <.aX-.`X*X1.~XI 8XsXe.n.w.D C B RXI.e B RX1 a cXD.Z.*XD.e R R.Z.'.w g.].2.~.8.~.`.`.`.`X-X-.`.`.`.`.8.8.r.rXtXtXtXtXtXj.k.^.kXjXt.X.o.X.b.o.b.b.o.b.b.b.b.b.b.X.b.b.b.b.b.b.b.b.bXg N.b.b NXx.r ~.r.r.k eXd.r.uXt.r.uX*Xx.5.u.uX* #X9.rXtXt N.b.^Xz.^Xk N.b.b.b.bXz.b.o.b.^Xz.b N.b N.b NXz.b.b.bXzXz.b.b.b.b NXz.UXz N.b.b.oXg.oXgXgXgXgXgXgXgXgXgXg.cXgXgXgXgXgXg.cXgXgXzXgXz N.^.^.^.^.b N.b.X fX9.2 D 5 (.r.5.rXt.r.k.r ~.8.`.O.G g !Xw '.'.wXIX1 '.Z.wXC 0 O /.N C C U v.).W.'., c.a a R R.9Xl 3XK 1 #X, 1 # ` RXJ.u : DXI 1XlX,.9 3 :XD aX,X5.,.,X;.q 1.D 8 c $.%.%.|.%.%XO.9XnXBXq x $XwXwX.XJ x RX- a.M.}XqXq.<XfXb.s.s.)XpXGX5.`.r.rXt.r.u.r.k.^.o.bXz.b.b.bXzXz.o lXg.c.c.c.c.o _.bXzXz.bXz NXz.b.b.b.^XzXzXzXzXzXz.^.b.b.o.o.bXz.b.b.^.b.bXzXz NXz NXjXjXjXj.^.k.r.r.r.r e.rXt.r e.r.o.oXz.^Xz.b NXj F F.` ~Xt.z.^ N.^XzXzXzXzXz _Xz.bXzXz.bXzXg.bXzXzXzXzXz.b.bXz.bXzXzXzXzXzXzXzXzXzXzXz _.bXz.b.bXk.bXg NXz.b.b.^Xz.bXzXz.bXzXz.b.^.bXz NXz.b.bXt F.H F.KXDXG.WXnXn 1 s g.WXa 0 O vXL.nX- 3.HX-.~.~.`.~ 3X-X- ~ a RXq.W.s J C C.N.W.s.N t.* tXD.M.Z.ZXI R 3 RXD R",
+".`.8.r.r.r.r.r.r.r.rXt.rXt.r.r.r.r.r.r.r.r.H ~.8.8.rXI 3 3XU.W.n xX,.!X0 &.q &X0XpXe.sXLXGXe.M.e.e.*.e 3 aXD C.N.).@ H b v.n.0XI R R.w.Z s s.w.DXD BX- a.e.* RX-.eXIX1 c.`.e R.M.* R R B.e.~ B a.} aX-.e a.~ mXc.' 1 : $XlXcXP g 4 T.].] :.`.8.`X-X- RX-X-.`.`X-.`X-.~X-.8.rXt.rXt.r.rXt.rXt.r.r N.^.^.b NXz.^.bXz.b.b.b.bXz.bXzXz N.b.bXz N.b.b NXzXz.X.bXk.^Xt.^ eXtXt.rXtXt.kXtX*.rX3XJ q V q )XkX*.k.k.^.b.X.o N.UXz.o.bXg.c.cXgXgXg.o N.b N.^.^.^.^.b.b.X.b.b.b.b.b.b.o.b.bXk.b.o.bXgXk.U.c.cXg.cXk.U.c.c.c.U.c.c.c.c.c.c.c.c.U.cXg.bXg.X.b.X.o.XXgXoXzXx.z f 5 I 5 5XJXt (.k.kXtXt.k ~X* 3Xy.G.].n $.DX,XD 8 c R s.n y 0X=.=Xs u x n.jXG.sXc nX3.K.aXIX1.Z R R.a.a aXIX,.aXD R 3XD.} R `XD R.aXD.aXI.aX, RXM `.,.1.G yXP.DXD.5 c.% f 5 D 5 D XZXp [X..%Xl 1 xX, c cX,.aX,.FXq.x.@.v 2.s o.E x.u.5 N.bXo.5.5 NXkXkXk l.c.c l l l l.Q. .Q.#.I.#.I.U.c.c.c l.c l.c.c.c l l l.U l l l l.U.c.cXg.I.U.cXk.c.c.U.U.U.U.U.U.U.U.UXkXkXk.UXg.X N.X N N.X N N N.b.z.I l.U.UXk.U.o.kXo.k N.A.z.X.z.U.U.U.U.U.U.U l.U.U.U.U l.6.U l.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.#.zX@./.6.c l.U.#.U.U.U.#.U.U.U.U.U.U.U.U.U.z.I.IXg.XXtXX #.u.ZXmXmXGX+Xp.,.WXe.s.v b o TXVXX )XVXtXV.u.u.HXVXI.r.uX,XKX0.E.h y.Y.j &.Y.Y.9XKXlXBXw `.uX, cX5 xXD h",
+".k.kXo.5 N.5 N N N.5 N.5 N N N N N.5.5.X N.K.k.kX*.5X*.u ' m.'.'XaX;.9.+.>.+ =X0 M.xXpX> yXm yXJ.YXJ.- VX, $.Z.E J wX0XnXG.'.wX5 $X5.ZXl.w $.wX,X,X,X,XVX,.u.}X,.}X5 `X9XV.H $XD.}X,XD 3 3XVX,XD c 3 3XD $.a ` D `X3XJXX k m ! @XO m D ] (.].u.u.uXVXV cXV.uXVXVX*.u.uXt.k.5.5Xx.X.X.X.X.X.X.X.X.z.z.z.z.z.U.U.z.U.z.z.z.z.z.z.z.U.U.U.z.U.U.U.U.U.z.z.z l./.UXk.zX9.zXk.b N N N.5.5.5 )XXXXXXX3XX ) NXxXgXk.#Xg.U l.6.z.U.z. . .I.zXk.cXgXg.X.b N.b N.b.XXg l l l l.cXkXg lXgXg.IXxXg l.cXk.#Xk.#.U.#.#.#.U.U.U.U.U.U.U.#.U.U.U.U.# l l.oXkXgXg.X q.R.z.I.RXg ( q q ) ) qX9.k.u.k.^XoXoXdXVXV.uXUXU.O s g x 'XK xXl T.' gXCXi.v 2XsXD.WX+.j JXLXw VX3XM 3X*.a cXI.ZXI.a RXI aXDXI RXI $X1XI h 3XDXDXDX-.}XI.a 3 #XM k.,X;XK.Y.w.u.k.2.5 c.r.K :X3XcX<XBXc 1.ZX5X5Xl x x hX, h cX, x._X4X6X= / 2 bXOXK `.k.KXt.kXd.u.^ NXgXg.X.o.o.o.o.o.oXg.Q.c l.U.c l.o.o.b.o.o.o.b _.o.b _.b _.b _.b _.b _.b.b.b.cXg.b.b.o.b.b.b.b.b.o.b.o.b.o.o.b.o.X N.^XtXt eXt.r eXt.rXt.oXgXz.b.bXz NXj ~ F.r.rXt.^.^.b.o.b _.b _.bXzXz.b.b.b _.b.c.b _.b.b.b.b.b.b.b.b.bXz.bXzXz.bXzXz _.b.bXzXz _.b.b.cXkXkXjXjXzXzXz _.b _Xz _.b.b.b.b.b.^Xz.o.oXg.b.r ~.K.8.aX1.D.!Xa.s._ C u t * /.=XLXG.a.}XX.8X-.~.~.~.~.`.`.e.`.~.' yXmXG.jXG x xXc.]XlXJXw n $X-.e t <XD.M h",
+" ~.8 ~.rXt.rXtXt.rXtXtXtXtX*X*X*.uX*Xt.uXV ~XV.8.rXV.HXVXJ.].n.n $.>X..O !XU H M z = n &XC.jXG v x x `X, R t 8 C.v J H.EXe.w.a B.~X-.Z 8XD 3XD.a B R 3X- aX- aX- a 3X5.5.`.eX1.a a.~ aX-.`.e.e.a.8 aX- a aX-.e a.a.e a.8XI 'XLXUXOXO.] (.] (.] TX5XI B RX1X-.`X-X-.`X-X-.` ~.r.r.r.r.r.r.r.r.r.r.^Xd.^.^ NXz.^ NXz.b NXzXzXz.bXz.^XzXzXz.bXzXz.bXz.b.b.^.^Xk N N.^.b.^.^XtXtXt.r.r.r ~ 3.r.rX* 3Xt.r.^ NXz.z.oXz.I.zXu i.U.c.cXg.bXz.^.kXj.r.r.rXt.r e.r e.^.^ N.^XzXz.^.bXz.^.^ l.^Xz.^.^Xz.bXgXg.V.o.VXg.o.c.cXg.c.U.U.c.c.cXg.oXg.o.o.^.oXz N.^./.t A./ QX .& q.f 5 I.AX3.rXt.r.rXt.H.H F.` $.] = g.0X. T hXHXlXK :XK =XC w.= / C U XG.wXLXeXJX3XM.K 3.a 3.u.}.u 3 cXDX- 3.aX-X,XI #.aXD cX, 3 tX- h a h.a a #XXXJXK !Xm ' TX5 ' : 5Xt.kX*.K V # U.MXDXD $ $X,Xl.}.a aX-XDX,.l EXnX6X=.N.=XP T.u.$.R.R.f./.A./.A.&./.U.b _.b.oXz.b _.V.U.c l.c.V.c.bXzXzXz.bXzXzXz.b.b.bXz.b.b.b.bXz _.bXz.bXzXgXgXz.b.b.b.o _.b.b _.b.b.b _.b.b.b.b.bXzXt eXtXtXtXtXtXt e.XXg.b.o _.b.o.^Xt N FXtXj.r.bXz.b _.b.b _Xz.b _.b _.b.b.b.U.b.b.b.bXz.bXz.b.b _.b.bXz.b.bXz.b.bXz.b _ _.b.b.b.^.r e.^.r.^.b.b _Xz _Xz _XzXz.b.bXz.o.b _.b.b.I i N F )X1.8XI B.!XLXL v.) <.d.M.= 2 bX,.}X3.8X-.`.`.`.`.`.~.`.`.` BX5XG.) v G t t.a aX1X-X- R U.M $XDXD.e.a < t.W",
+".8.` ~ ~.`.r.r.rXt.r.rXt.r.k.r.rX*.r.u.H.8.H.H.8.uXVX-XlXJ s.'Xs.M.w.-Xw.O K =X; =XZ.jX+X+._XL v.W h $ 3.8.e RXs.N o ^ H J.wXD aX-.~ 3 c 3XI.} 3 #.` 3 3.u.a.~X-X-XD.~X-X-X-X1.aX- aX-.e a R aX- 3 aX-X-X- RX-X- R 3X- RXl $.0 ! g mXPXP.!.0 '.0 T R $XDX- R.`XI.`.`.`.`.`.`.r.rXt.r.kXtXt e.rXtXoXd e.k N.b.b.b.b.bXz.b.b.b.b.b.b.b.b.bXz _.b.b.b.b.b.b N l.b N.b.o N.^.oXtXtXt.kXt.rX*X*.rXtXtXj N.UXk.#.6XkXg.z. X .I.c.bXz.o N.^.kXjXtXtXt eXtXt.rXtXtXt.k.b N.^ N NXz.b.bXz lXz.bXzXz.b.bXg.cXg.c.c.c.c.c.c.V. i i iXu.IXg.o.b N.^Xz.o NXz N. .XX@X@./.z.z.&.R q.X q.z.rXtXt.rXdXt.8.HX1 : T TX; v $XG c.9XD `XlX5.9 J H.v /XsXs._.jXL v 1.[X3 #.a.a.8X-XIX,X.Xl DXcXKX.XJ $Xc `.O : `XH : :.e TXK ` | $ <Xl V.,.O &XC yXrXK T.u (.X.X )X9 |.i._ h U hXD.Z.D.D c.a.a.} aX-.i x E.J.JX= / v.Z.H )XoXxX9Xx.X.XXk././.z.c.o.b.bXz _.bXz.c.U.V.c.o _.c.oXz.b.b _XzXz.b.bXzXz.b.b.bXzXz.bXzXzXz _Xz.o.o.bXz.bXzXz _Xz _Xz.b.b _.bXz _.b.b.b.k e.rXt.r.r.r eXt.r.b.o.bXz.b.bXzXzXj e ~Xt e.r.^.b _.b _ _.b.b _XzXzXz _.bXz.c.b.bXzXz.b.b _.b _Xz.bXz _XzXzXzXz _.bXzXz.b.bXzXz.kXj e NXj.^.b _ _Xz _.b.b _Xz.b.b _Xz.o.^.b.b.U Z.AXkXJXx :.]Xl nX>XL.W.w.* 8.W 2 2 0 8 RXI.8.~.`.~.`.`.~.`.`X-X-X-X,XG.W O *.) t u <.a RXD.}X,.MX1 RXI a <.M.N.)",
+".r.5.` ~.8 F.8.8 ~.rXt.r.rXtX*.r ~ ~.$ 5Xo.$ D.5 I 3.%.5.GX;Xw.9 g.3XD kXl.n.w.' gXH [ VXBXq 2.).W t a aXIXIX1 t.N O ^ HXG.s $.eX1X1.5 c.u.K cX9XI.5XI.~.a.u.8.Z B 3.eX- R.eXI R.e.eX-.aX-.eX-.aXI.e.eX-X-.~ R aX-.~XD.~.n.Z.0XO.0.2.!.nXaXa.w.!Xl 'XK DXc 'XDX1X1X1.`.`.`.` ~X*.rXt.r e.r.rXtXd.^.k ~Xt.^.b.b.b.b.b.b.b.b.b.b.b.bXz.bXz.b.b.b _.b.bXz.bXzXk.b.b.bXz.o.bXz.^.^XjXjXj.k.^Xt.^ NXk.I.c.I i./.#Xg.U.c.o.U.b.b.bXz.^.^XjXt.r.r eXtXt.k.kXjXt.rXtXt.^.^.k.^.^.^.bXzXz lXzXzXz NXz.b.o.V _.b _Xg.c.c.V.c.c.U.U.U.U.c.o.b.bXzXz N.oXzXzXz.k.o.k.^.X.k N N.kXtXt ~Xt.rXt.r.rXt.r.8.8X9.O m g '.*.a.e.eX5Xl.~XD.e x.qXm.v /.) v.EXC.sXGXwX3XX.i.aX-.aXI cXD.3 1.-XlXc :Xl `XJXK k IXc IX..ZXD.- x :.- a.aXM., n.>.>.>.>.> nXw.HXx.^.k ~X5XBXMXq._ $.WX,X5.Z $XD.a <.a.} a h._ E..X4X=.s bXI.`Xt.r.r.rXt.rXjXz.X.o.bXz _Xz.b _ _Xz _.c.#.c.c.o.b.V.o.b.bXzXz _Xz.b _.b.b _.b _.bXzXz.b _Xz.bXz.o.oXz.b.bXz _Xz _ _Xz _.b.b _Xz _.b.b.b.^ e e.r eXt e.r ~ e N.o.b.b.b.bXz.bXt e.rXtXt eXzXz.b _Xz.b _ _Xz.bXz _Xz _Xz.U.b _ _ _Xz _.b _.b.b _Xz _Xz _XzXz.bXz.b.b _.bXz.bXjXj.r.bXj.^.b.bXz _ _.o _.b _.b _Xz.o.b.b.o.b l.I.f.& D I I :X3., n.sXsXLXD C C.W /.sXG $X,.`.~.`.`X-.`.~X-.~.`.`.`.aXKXn J *Xs.d t a.-XJ 3X5 ` 'XDXV h R U U.s 0",
+"XV.r.8.`.r.` ~ ~ ~.8.rX*Xt.r ~.8XV.8 IXo.A c.5 ) ] 1 6XHX; m.O.Z g.1 xXM.aXDXs.nXGXw | X7X7 v.).W.N.M.* a.a.a.}.N.)XnXC y.w.ZX1.eX-.e 3.u.KXV.`.a 3X-X-X-X1 ` mX9 :X5X5X5 ` : :X5X-.eX-.eX-.~ 3X1X-X-XI.eX- aX-X- a 3X-X, '.0XOXP g.n '.w.n s g.wXw ' s.0 T TXJ.HXI.`.`.`.`.` FXtXt.rXtXt.k.r.r.kXo.k e.r.k.^.^.^.^.b NXz.^.b.b.bXz _.b _.b _.b.bXz _.b.b l.o.b.bXz _ _Xz _Xz.b.o _.c.c.#.#.6 i.6XgXg.c.bXz _.c.oXzXgXz.b.b.bXzXjXt.r eXj.^.^.^ N.b NXt.r.rXt.rXtXt.rXjXj.^.b.^.cXzXzXzXzXz N.b.bXzXzXz _.VXg.VXg.VXg.oXg.c.o.o.bXzXzXzXz.b NXz N.bXzXkXg.XXg NXX NX9.K.kX* ~.k.r e.r.r.H.`X5.|.3X..OXJXJ 1 x ` $XOXcXUXUX0Xm O /.NXG.O.WXG nXBXM # 3.` a.~X1X,XI t cX, hXDXDXD x.uX,.uXD :X,.5XD.eX, c <.} a h `.- n.G =X0X0 y.j T.uXxXtXg.kXJXH z.pXr.[X+Xe nXJX,.aXDX, R a.aX, x E._Xp vXn.M.H.r.rX*Xt.rXjXt.^.^.b N.b.b.b.b.b.b _.b _.U.U.c.V.V.b _ _ _Xz _XzXzXz _Xz _Xz.bXz.b _Xz.bXzXz _Xz _.o.o.b.bXzXzXzXz _XzXzXz.b.b _Xz _.bXz.bXj.r e.rXtXtXt eXt.rXz.b.b.b _.b.b.bXt e.rXt eXj N.b.bXz _Xz _Xz _Xz _.bXz _Xz.c _Xz.b _.b _Xz _.b _.bXz.b _XzXzXz _Xz _.bXz.b.bXzXt e.r.b eXzXz _ _XzXz _.o.o _.b _.b.b.b.^Xz.bXz.o.b N.H.0.H.` 3 :.w v b.w CX, x.j.W.).WXG 1.e 3X1.`.`.~.`.`.8.`.~.`.8 :X,XG 2.N C < B gXUX.Xc TX..'XJX. VXw & MX0",
+" ~X-.8 ~.` ~.`.8 ~.r.r ~ ~.k.r ~.8.`.5 :.u ) ~ : ).KX5.3XJ ! 8.'Xa xXl.aXD.M v.n oXw.[X7 XB.-Xn.) *.N.* t t.M.M UXnX4 o H.n.w B.~.`.eX-.~X-X-X-X-.eX-X-.~ RX1 ` :XH c c # )XJXJ ` RX-.e RXD aX- 3 3 R.~ RX-.~X-X-X-.~ 3 R.0XU g.]XU.Z s.n.wXc.wXU K '.9.D s.0 g g.5XD.`.` F.`.8 ~Xt.rX*Xt.r.kXtXo.r.KX9.z.$.I.rXdXd.^.^.^Xj.^ N.b _Xz.b.b _XzXz _.b.b.b.b.U.b _Xz.V.U.o.#.#.c. .U.6 iXu.#.#.V.VXg _.b _.^.^.b.b.^Xz.U.b.bXzXz NXjXj.^.^.^.b N.b N.b.^ e.rXt.r.r e.r e.r e.^Xz.^ lXzXz.^.bXzXz.b.^XzXzXz _.bXg.VXg.VXgXg.cXgXg.bXz NXzXz.^.bXzXz.^.b N d.f.& 5.&.A.A./.f.K.rXt ~Xt.r.r.r F.8.8 T 4.0 ! 'X-XlXD 'XOXUXPXmXU HXC.vX= 9.TXeXe.YXcXl # # 3X- aX- RXDXD.a.e.e R R.e.eX1X,X, RX-.a.~ $XIX-Xl hX,X, hXM.,X..> & = 9X0 H.Y.- c.k.r.XX9XKXpXGX>XpXqXnXq.T.,.3.,X, c xXI h U [ xXnXLXp xXD.8Xt ~XtXt.rXtXt N.X.b.b.b.b _ _.b _Xz _.o.U.U.c.c.cXz _Xz _Xz.bXz _XzXzXzXzXzXz _XzXz.bXzXz _XzXzXzXg.o.b.b.bXzXz _Xz _ _XzXz.b _.b _.b.bXz.^ e e.r e.r.rXtXt.r.b.o.b.b.b.bXz.b eXt eXtXjXj.b.bXz _Xz.bXz _Xz _.b _Xz _Xz.U _Xz _.b _Xz.b _.b.bXz _Xz _.bXz.bXz _.bXzXz.b.b.b eXjXtXk N.o.bXz.^ i.6 i.6.#.c.o.b.bXz N.o.b.o.b.X l.X.H.0X9 3XI cXD.' 2Xa.W t.i.} U.) o.N g 8.a $.u 3.`.8.~.~.~ BXI ~ R B o.=.=.N 8.M.D.ZXDXI.}.a.K 3 c x.w.s 0 o",
+".`.8.8XV.8XV.r.r.HXV.rXt.rX*.8.r.8.8.8.8.8XV.uXV 3XI c gXlXK.W B.W xXD.M.M s.w.'Xw [ ` XX XBX+...)XF.N.).N.M *.).s.s wXCXa.ZX1 R B.~.eX1X-.~.~.e.~X- R B.e R.e.~.eXl.eX-.e 3.u.a.e.~ B.u x.5XDXIXl 3 3.e R.~X-X-.`XI.Z : g.Z 'Xl xXl.nXl.0.! sXU 'X; !Xc gXP ! g.%X. '.~ B.`.`.`.8Xt.HXtX*Xt.k ) 5 5 q I q.k.r.rXtXt eXt eXt.^Xz.b.b.bXzXz _.bXz _Xz _.b l.b _ _ _ i i.#. i.6. .#.U.o.oXz.V _Xz _Xz.b.o.b _.bXzXzXkXzXzXzXzXzXz NXz N.bXz.^.^ N.^Xt.r eXt.rXtXtXtXt eXt.^.^Xz.cXzXzXz.bXz.bXzXz.b.bXz.b.o.oXgXg.oXg.cXg.bXz.bXzXzXzXz.^.oXz NXz.X N.XXgX9 NXXXx.k.KX*.k ~X*Xt.rXt.r.r.8.8.`.5 g.0.0.DXsX,.wXaXa b b.n J.9XC 2.v MXn o x nXMXM c c # aX-X-X-XD.eXDX-.e aX- RX-.e RX-XI.~XI RXDXI B x.'Xc `., |XhXHXU =Xh.>XZ HXZ.> ,XxX 5 } T =Xe.JX>X>X4 > W.i.-.S.].%XK.,XK nXh M.j x TX, 3.rXtXt.rXtXtXtXj.b.b.b.b.b.o.b _.b.b.b.b.V.U.U.V.V.c _XzXz _XzXzXz.bXz.bXz.b.bXz.bXz.bXzXzXzXzXz _Xz.c.o.b.b.bXz _Xz _Xz _Xz _.b _.b.bXz.b.b NXjXtXtXj e.r eXt eXg.o.bXz.b.o.b.b e.r e.r e.^.b.bXz.bXz _.b.b _Xz _.b _.b.b.c.b.bXz _Xz _Xz _Xz _ _XzXz _Xz _XzXzXzXzXz.b.bXz.b.X.^.^Xg N.b.o _ _.o.o.cXgXg.o.bXz.b.oXz.b.b.^.X.b.o.XXdXV :XV.8 cX1.wXL.sXL u < <.}.d.j 0X0.>XJX#Xh )X1X-.~.8.`.`.HX1 BXs.!.=.= 8.M R t t R t < < a.eX, R.N.) O J",
+" ).KX3X9X9X9XxX9.RXxX9XtXt ~Xt.z.5 3.8.8.uXV ~.uXVXIXV.2XU g.W.' s.Z $ R.Z x vXw nXB XX.l # .- >.sX=.N.= / *.) *Xb.vXCXm s ' 8.H 3XV c c : $ cXD cXD $.e R.e tX-.~ 3 3.eX-.a cXl.eX-.eXlXVXc D : k :.3 $.e RX-XIX5 # 3.~Xl.ZXl '.5Xl :XK.' T T '.DX;XK.2.0XUX;XO.OXy.].DXIX1X1.`X1 ~.8XV c ) qX3Xx.KXt ~.r.rX*Xt.rXt.rXt.r eXt.^.b.bXz.b.b.b _.b _XzXzXz lXgXgXg.o.#.U.U.U.U.U.c.c.b.V.o.cXzXz.b.o.bXz _.bXz.b.b.^.c.b.b.b.b.b.b.bXz.bXz.^XzXzXz.^ e.r.rXt.rXt.rXtXt.r eXjXz.^XkXz.^Xz.bXz NXz.bXz.^.b.o.cXg.oXgXgXg.o.b.bXzXzXz NXzXz.^.bXz.b.^.fXgXkXXXk qXk ) q.5X9X9X*.r.r.rXt.rXt ~X-.`X1.2XP '.Z.wXaXa.n 9Xm &.!.E o.E /X>X=XC.W.[X3 # #.a 3.5X-.~ a.~XI aXIXl $.uXDXI $XD.e $ $ h $.~ 1 R x.Z.Z $ a hXMXJ., y.OXZXrX0.; x.- $X9 (.RXx xXn.s.s..X4X2.p._XA x.w c $X, h Xr s.YXK.u.} ~X*.rXt ~XtXtXt N.b.b.b.b.b.b.o.b.b _.b _.c.U.U.c.V.c _ _XzXzXz.bXzXz.b.b.bXz.b.b.bXz.b _Xz _XzXzXzXzXg.oXz.b.bXzXzXz _ _Xz _XzXz.b.b.bXz.b.b.bXj e e.r eXtXtXt.^Xg.o.bXz _.bXz.bXt eXt.r e.^ N.b.b _.b _Xz _.b.b.b _.b _Xz.c _.b _Xz.b _.b _XzXzXzXzXz _Xz _XzXz.b.b _ _.bXz.bXzXk lXk.o.^ _Xz _ _ _ _.b _.b _.b.b.o.I.b.b _ N lXgXzXo.H.HXI ~X*XIX5XL.=X= U.a < a u G.v 9 HXGXc TX, a.`.`.` B.` '.HX1XD bXa.= J.M s.w R t a a a c x.i.*.M.=.v J",
+".$.K D 5 ) I.R I q q.z.H.rXd.K.$Xx ).5 5 ).$XJ ).| :XJ.|XwX; !.'XK.Z.n.9XL x.jXwX3 x # h.l #.lX3X2..X= 2.v.s.s.s.sX=.vXC bXa.D.~.~.eX1 cX5.,X3.,.5 ` c k.e a a BX- a.eXl.e.~ 3X-.`XI.a.8.e.uX1XIXI.K.5XIX5.K.e 3 $X-.e.a.~ $ BX5XI 8 RXD.Z '.n.nXa.Z.nX1XI.a 8 $.n.nXlXJX5.~.~X1.H c.`XlXx.5 D.uXV 3.`XV.u.kXt.rXt.rXtXtXt.rXdXt e.^.b.b NXz.b.b.b _.b.bXz lXg l.UXgXgXgXgXkXgXg.cXg.c.c.cXg.c.cXg.c.c.cXg.c.o.bXzXz.c.bXz.bXz.bXzXz.bXzXz.b.b.bXz.^Xj.r eXt.rXt.r e.r.r e.^.^.^.UXzXzXz NXz.bXz.bXz.^Xz.oXg.c.o.oXg.o.b.^.b.b NXzXzXzXz.^.b N.b.^X@ q./ q.&.$.$.$.$.f.$X9.r.r.rXtXt.r.r ~.`.8 R.0 gXPXa.n.w.qXC.!.q bXC & H.v w b z ^ v.[ #XMX* a.8 #.`X-X-X-XDX-XIX. $.,XJXlXHX-X5X5 : :XJXH.]X3 hXl.9.Y h #XM k.jXP y.>X0 z.qXn yXM D.k ) c $ t.).WX=.@X+X8 >Xq E.FXl RX1 t UXeXp xXK 3XI ~X*.r.rX*.r.rXjXj.b.b.b.o.b.b.b.b _.b.b _ _.c.U.U.cXg.V.b _XzXz _XzXzXz.b.b.b.^.^.^ N.b.b.b _Xz _Xz _.bXg.o.b.b.b.b _ _Xz _ _Xz _Xz.b _.b.b.b.b.bXj.rXjXt.r e e.rXjXg.oXz.b _.b.b N.^.rXt.rXj N.b.b.b.b.bXz.bXz _.b _.bXz _Xz.U.b.bXz _Xz _Xz _Xz _.bXzXz _Xz _XzXz.V.bXzXz _XzXz e.r.r.b.^Xz.bXzXz _ _ _ _Xz _.b.b.V.z Z d.A.& A.tX Xu dX@ (.k :X*.8 3 s.s.sXe t.} < <.W.) 2 v.w.} s.D.aX-X-.`X1.~.%.ZX- a 9.s.N =.+._XC C G.N t uXM [X..Y G.= O 0",
+".K.u.K c NX*.k.u NXoXt.r.rXtXt.f 5.A.$ }Xx 5.A 5.| ).3.% 4 @ ! s 1.9XKXG.9 y.,.[.lXM.i < aXM.lXM.[XpXp.@.j.j.p.p...v J.E b.nX1.~.~.~.~XD.u.`Xl c RX- a.e R.* aX- aX-X-XI 3X- RXIX-XIX-XIXV R.kX5 # c.eX1 3XK.,., 3 RX-X- 3X,X1 R $ B RX1 R.'.Z.w $ 8 3X- aX- 3 R.D.w.n g '.wXlX5 `.] 5.] 3XI.` R.HXI.8.H.8XVX*.r.rXt.rXtXtXt.rXd.r.k.b.b.b.b.b.b NXz.b.b.b l.X lXgXgXg./.oXk.U.z./.UXk.c.c.cXg.V.U.b.c.c.o.VXg.cXg.b lXz.bXz.bXzXzXzXzXzXzXz.bXz N.bXjXt eXt.r eXt.rXt eXt.^.bXz lXz N.b.b.^.^.^.bXz NXz.oXg.cXg.oXzXzXz.bXz.^.bXzXz.bXzXz.bXz N N N NX9.zXX.XX9.5 N.K.5.kX*.rXt.r.r.rX* F 3.`.`X1 gXw.nXa sXC 9 J J O 0 J.@ 2 w /.. /XG.-XM #X-X-XIXVX-.~X- RXD.~ aXJ 3 mXK :XJ $XI., c mXl cX. :Xc `XJ 1X, # # kXUXGX0 MXS.> z M.1 YX.Xx.u.uX- t t.N.W.s .X+X2.JX4 WXcXJ U $.wXq.- [ 1 3.K.k.rXt.rXtXtXtXjXj.b.b.b.b.b.o _.b _.b.o.b.b.c.U l.c.c.VXz _Xz.b _XzXzXzXzXz.^Xj eXjXzXz.b.bXz.bXz _Xz.b.c.o.b.b.b.bXzXz _ _ _ _XzXz.b.b.b.b.b.b N e eXk.z.k e.r e NXgXg.o.b.b.b N.oXj.r eXtXj N.bXz.bXz _Xz _Xz.b _.b _Xz.bXz l _.b _ _ _Xz.bXz _.b _XzXzXz _Xz _.bXz _.b _.b _.^ eXjXt.b e.^Xz _ _Xz _Xz.b _.b.b.b.^ l.z.I.t.Q A.z A d (X@.z.r.8.5.`XV.nXa 2.s U.M <.* t.N.= JXG.Y s.n #.` R.HXV.~ |.8.} <.'.s.NX> yXZXp / / /X= uXp.9._ M *.=.v o",
+"XX.5 q D.KXxXk q ) q q.XXt.rXtXt.rX*.rXt N.^Xt.rXxXV.`X5 D ! g s sX;XU yXUXH n `XM.i < a a <Xl XXX7 V.[ XB XB.p.p.@.jXa.wX-X-.8 # cXV 3 c x c h a aXc x.K tX- aX1.~X1 c.~X-.`.~X-.` a.` c cX- cX- aX-.uXD c ) :X3.] `XK.]Xc.0 m gXJX,.Z.u R BX-X- 3.eX-.`.aX- 8.Z.nXc 'XJ g.] 4XJ $.ZX1X1X1XD.D.`X1.`.`XV.rX*.rXtX*XtXtXtXt.r.rXtXt N N.b.b.b.bXzXz.X.Q.z.oXgXk.$Xk fX@X@.t.&X@.IXgXk.o.oXg.VXg.c.VXg.VXg.cXgXg.o.#.b.bXz.b.^.bXzXzXzXzXzXzXz.bXz N.^.r.rXt.rXtXt.r.rXj NXz.^Xk.b.bXzXz.b.b.bXz NXz.bXzXz NXzXz.bXz.^Xz NXzXzXzXz.^.^Xz.oXzXz N N NXg ) q q V./.$ 5./X3X*.rXt.r e.rXt.r ~.`X-.`XV m 'XL.!XC O O.=X= 2X=.. 2 ^ M 2 2.YXc # c.}.u cX1X-.eX-X-.}.~ RXI.e.uX, RXV R.eXI RX, 3X1.u aXD.a tXD <XMXM.,X; & = =.+ S H z y 1XD.K.` R R.a < t < U.s..Xf.CX8 [.[X. n.[.1XH.Y.$ q ).R.r.rXtXt e.r e.^.b.b.b.b.b _.b.o.b _Xz.o.b.c.c.U.c.c.cXz _.b.b.o.b.^Xj.^.^XjXt eXt e.^.o.b.^ _Xz _Xz.bXz.b.b.b.^.b.b _Xz _ _Xz _ _.b _.b.b.bXzXj e.r./.UXg.rXjXt.b.c.b.b.oXg.o.o N NXt.kXj NXg.o.^.o.b.bXz.b.b.bXz.bXz.b.bXz.U.b _.bXz _.b _ _.bXz _ _ _.bXzXzXz _XzXz _Xz.b.b.^XjXj ~.o.kXz.bXz _ _Xz _ _Xz _Xz.b.b.bXzXg.& AXgXg.z.z.Q _XoXoX*.$ 3XVXD s 2 2.s.M.M MXG.WXh.Y.+ s.9 cX- c.5 '.~.%.u.a a.- s.w =Xp =.E /.= 2 2.NX> =Xw.s.W 2 v 2",
+"XX.KXX ).kXXXxXx.5Xx.X.KXt.r.r.rXtXtXt.r.kXtXt.kXt ~.`X1 'Xc g.! !.>Xh K KXh |X#.[ | a a tX-.}XX #XM #.l #.l.l.FXB.j.EX0XGXK #.8.K a.~.e.e 3.e c.uXI R I.3 1XJ :XJ :XJ ` DXJXM D.e.~.~.eX* c.8 3.`.eX-X- c.~X-XlX5XM.u.uX5.KX3 B 1.Z.u 3 3 3.eX- RX-XI.eX-.aX-.*XDXaXlXOXU ' 'X5.!.] g !.] y.]XU D.0X1.`.`.8 ~X*.r.k.rXd.r.XXdXo.zXxX@XtX9.b.^.^.zXx.z N.(.6.t.f.(X .o.fX@Xk./Xk.z.UXg lXg.c.c.cXgXg.cXg.cXgXg.c.cXg.Q.b.^XzXzXz.bXzXzXzXz.bXz.bXz N.b.^Xt.r.r.rXt.r eXt.^.^ N.^ lXz.^Xz.^ NXz NXz NXzXz NXzXz.b NXz.bXz NXzXz NXzXzXzXz.^.o.b.^ NXz N.XXxXk )Xk qXk q )Xk.^Xj.^XtXtXtXt.r.8.8.8.`X-XlXwXl 9Xm.E.=.BXvXFXF * *Xv G.N.=.j.-XXXX.8.~X- 3.8.e aX- 3.~X-X1 R.~X-XD.eX-X-X- R 3 R.~.Z 3 R R R.aX- hXM k.1XO = M & zX>X>XeX, 3XIXD.u.a.a R <.a.M.W.s...4 +X:.YX7XKXBXr.jX7 X* 3Xt.k.r.rXtXtXt.r.kXz.b.o _.b.b.b.b _.b.o.o.o _.o.U.U.c.cXz.b.b.b.bXz.^ e.r eXjXt e ~ eXtXj.^.b.b.b _.b.# iXz.^.^.^.b.bXzXzXz _ _Xz.b _.b.bXz.b.^.^XjXjXj.z d.r eXtXz N l.b.oXgXgXgXk.c N.^ N.k.oXgXg.oXzXz.b.b.bXz _.b.bXzXzXzXz.U.o _ _.b _ _ _.b _.b.b.b.b _.bXz _.b _ _ _.b _.bXj e e.r l.b.o _XzXzXz _Xz.b _Xz _.b.^.b.b.UX&.(X&.(X P X Z X f NXXXkX- 3 sXL.N O.WXD.Z.Z <Xs u 9.jXU.>XJ c c : T.H 3.`.`X-.ZXs xXl UXlXL 2 O b 0 O.s.s.s.N.=.sXG.N",
+".K.kX*.kXVX* ~.r.rX*.r.r.r.rX*Xt.rX*Xt.r e.rXt N.k.`.`XIX1 gXO.9XK.G =.1Xc `.- ` h 3 < aX-.e B.MXXXM # #.i #XMXq yXG JXCXaXa R a c.eX- c.KXIXD 3 # c RXMXlXM D $ : ` T D $ 5.] D #X5.K.K 3.8 3.eX-X-X- R 3.~X-.e.eX-.eX-X- 3XD 3X1X- a.a 3X*.e.aX-X-.`X-X-XIX-X- 8.wXa gXU.n.ZXaX5.n.0 s.0.n s.w.' D T.D.`.`.`XV.k ~ N N ) ( ] ] ]./.A.kXg )Xk.X.t.t.&.X.Q.R.zXgXkXk.cXgXgXkXg.cXgXgXgXgXg.c.c.o.V.VXg.cXg.VXg.oXg _.U.bXz.b.b.bXz.b.bXz.bXz.bXz N.b N.^XjXt.r.rXt.r.r.k.^ N.^.^XkXz.^.b.^XzXz NXzXz N NXz.bXzXzXzXz.^XzXz.^.bXz.^ NXzXz.^.oXz NXz.^ N N N N N N N N N N N N N.^.^.^XjXj.r.8.8.8.` RXV.ZXP o.jXC.v.= * u.d.) * *.WXs.W.j : #XMX* 3X1X-.`X,.`.a.aX-.eX-.eX-X-.~X1X- a R.u m )Xl $ 3 $XD.9.a.aXMXX k.3XZ.>XZ.TXZ.+.+ y.9.' m ` :Xc.u aX-.~ R 8Xs...@X:.T.T.1.1X%X<.Y 1 3.a ~X*Xt.rXt eXtXt e.^.b.b.b _.b _.b.b.b.bXzXz.bXz.o.#.cXg l.b.b.b.b.^.b.b.rXt.r.r ~ ~.r.rXtXt.k N.b N.b _.I d.^.^ e.r.^Xz.b.bXzXz _Xz _Xz.b _.bXzXjXj e e.r.r.r.^.r e.X.^ l.o.b.b.b.b N NXt.r.r.r.^.bXz _ _.b.o _ _.b _.b _ _.b _Xz.U.bXzXg.c.cXg.V.bXz _Xz _Xz.b _Xz.bXz _XzXzXz _XzXj eXj.rXg.^XzXz _ _ _XzXz _Xz.bXzXz.b.oXz.bXg.c.b.X.X l l.c.oXxXoX9XX.8.`XD s O O.= sX1 R t C *XL.N gXU m.].| `.%.uXD.8.`.`X1 B B a aXM v s s.W.wXG vXm /.=.s O.E.M",
+" q q V qX* ~XtX*.r.r.r.rX*.rXtXt.rXt.rXt.rXtXt NXt.8.`.` gX..' v s.O K., ` # h ` aX- a 3.a a R.~ a.i # c # #.lXcX+XL HXm bXKX,.uXl.eX- 3 cX3XX DX5 VX-.e 3XD.e a.~.~.eXI.u cX1Xl.8X*XX.5.8XI.8X-.~ a.e.e 3 a.~.a.~X1XI.eXD cXV.}X- a a.a 3 cX-.`X-X- RX-X-.aX-X-.e.w.w.0.'.w.DXs.Z s.nXa.n s.n.w.nXl.0 DX5X1.5 ~XoXk 5 I QX@ )Xx.k.k ~ ~.tX@ AXtXg.X.X.XXoXk.XXg.z.cXgXgXg.o lXgXg.U.c.V.c.c.c.c.V.cXgXg.o.V.oXg.bXz.U.b.b.b.bXz.bXz.b.bXzXzXzXz.bXz N.^Xt.rXt.rXt.r.rXj.^ N N.^Xk.^.^Xz.b NXz.^Xz NXz.b.bXzXzXzXzXzXzXz NXz.b NXzXzXzXz.^.bXzXzXzXzXz NXz N.^.^Xz N.^.^.^ N.b.^.b.b N.^Xj.r.8.8 ~.~ ( T.9XO 9 oXi /X= *.)XqXs G.N.N x nXM.l c c 3X1X, 3.~XIX,.KXDXVXIXDX1X- 3X-XIX1XI cXJ m.,.2 kXcXJXJXKX3 k., K K KX0.+.1.+.xXpXn x $ R.u x 3.}X- 3.KXD.wXsXn.@X: M.<XpXpXq.YXBXM 3 3.8 ~Xt.rXt.rXtXjXjXz.o.b _.b _.b.b _.b _.b _ _ _.o.U.UXg.o.b.b.b.b.b.b.k.r.rXt ~ ~.` ~.8.r.rXt.^XzXzXz.b N.c.b eXt eXj.bXz.b.b _ _Xz.b _Xz.b _.b.^.^ e.rXjXj eXt eXj e.^Xk.b.b.b.b.b.^Xj eXt eXt.b.b _.o.b _ _.b.bXz _ _.bXz _.b.V.I.c.c.o.c.cXg.c.o.b.VXzXz _XzXz _XzXz _Xz _XzXzXz.^Xz eXt.b.^.b.b _XzXz _ _Xz _.b _.b _.bXz.b.bXg.b.b.^.o.UXg l.b.5 N.8.k.8 3 8 s OXaXs C t t.*.*Xa.=.M R.ZX5.] ` k.].|.0 5 '.R.eX1.8X-.KXIX,XD.e RXD C s v.=XL.'Xm $",
+"XVX*.r.rX*X*.r.rXtXtXtXtXt.r.r.r.r.r.rXt.rXtXj N.r.8.K V kXw.n s.9 [.YXK.}X-.a : : : : cXMXl cXM V c 3.lXM # k [ g.jXO o.w.w.ZXI 3X-.aX-X-.e.e.eX-X-.` c #.u c.K c.5 :.K 3.uXI.e #XVXVX- a.~.~X-X-X-Xl.`.e RX1 R 3 : $.`X- RX-X-.`X-.` 3.uX-X-X-.~X1X- RX-X- aX-XIX-XI.eX1 a RX,.e R t t.WXD.MXs.D.w $ T 4.|.`.5.H.H.r.u ~XV.rXt.r.r F.`.^.rXkX A dX@.t.t PX& fX& fX&.I X.(XgXgXgXgXg.c.c.V.c.c.c.V.V.V.VXg.c.oXz l.b.bXz.^Xz.b.b NXzXz NXz N.b.^XjXjXt.rXt.rXtXt.rXtXj.^.kXj.b eXt.^XzXz.^Xz NXz.bXz.bXzXz.^XzXzXzXzXz NXzXz.^XzXz.^.^.b.^Xz.^XzXzXz.b.b.b.b.b.bXz.bXz N.^XzXzXzXz.b NX*.r ~ 3.`XX.5.ZX, &.E 0 o ^...s J.E 9.OXZ.9 [X.XX.Z 3XIX3X5X1 RXl cXV R.uXI.HXI.8 3 3X-.~X-X-X- 3 R 3 3X-.a a.8.a #.5., k s n.+ H...s.W t.* t RX-X-X-X-.e R.`.e.D.W._ vX>X2 z WX2Xp.[XK.K.K.u.8.r.rXtXt.r e.^Xz N.b.b.b.b.b _.o.b.b.b _.bXzXz.oXg l l.b.^.b l.z.&.XXg.X.kXV.r.`.8.` ~.`.8.rXtXj.^.b.b.o l.IXj eXt ~.rXjXzXz.b _Xz _ _.b.bXz.b.bXz.^ eXgXj.r.rXtXtXt.rXg N.b.b N.b.^ e.rXt eXtXg.b.b.o.c.c.c.c.cXg.cXg.V.o.o.o.b.U.b _.b.V.o.o.o _Xz.b _.bXz _XzXzXzXzXzXz _Xz _Xz.^Xz.zXgXk.^.bXz _ _ _Xz _Xz _.b.bXzXz _.b.o.b.UXg.V.b.b.b.c.c.cXg l.r.` ~.`X1XD.9.s.w s.N < C u G 2XDX-X1 B.~.` R.`X-.`.~XoX5X1.`.~.8X-X1.e BX-X-.a.aX,XM.a tX- hX-",
+".r.r.rX* ~.rXt.r.r.r.r.r.rXt.rXt.rXtXtXt.rXt.k.KXt.rX3 D m n.YXn [.- :XM.aX- RXD.eXI.eX-X-.eX- a cXM # #XXX3 V.-XU n @ = gXw :Xl `Xl 3.aXI.e.~ aX-.e R.e.~XI.~X- ).`XXXI.~X-.K.5XV.`.~XIX-.`X-X-.~X-XIX3.] :XlXJ.] $XcXK.].e.eX-X-X- a R.u h.8.~X-X-X1 R R aX-.~ aX- R RX- 3 RX-XlXl R.*XDX,XD a 8XDXDXa.w.'.2.D BX1.`.8.8.r.`.8Xt ~Xt.r N.^XtXzXx N.RXxXx./.zXk.z.t.z.zXk.z.UXkXgXgXg l.U.c.oXg.V.c.c.cXg.cXgXg.c _ l.b.bXzXz.b.bXz.b.b.bXz.^XzXj e.r e.rXtXt.rXtXtXt.r e.k e.r.^ eXj.^Xz N.^.b.bXz NXz NXzXzXzXzXzXzXzXzXzXz.b.^ NXz.^.^.oXzXzXzXzXzXzXz.b.bXz.^Xz.^.bXzXzXz.bXzXz.^.b.^.^Xt.r.8.r.k.~X1X1.ZXL.s ^ ^.s.) y o vX;XS.,XHX..9 VXJ.,.]X. D mXJ.,XJXV RX-X-.e.e.eX- 3 a.~.e aXDX-X1.u.uX-.aX-.a #X5 kXc hXw & 0.sXe t R.aX-X-X- < < RX-.`X-X1XD c U vXGXnXf.x.pXn X, 3XI.` ~.r.r.rXt.rXj N.b.b.b.b.b _.b.o _.b.bXz.b.o _.o.o.cXg.b.b.o.b.X.t ).t q.$ 5 ) ).$.K IXV.`.8 ~.r.r.^ N.bXz _Xk eXtXjXj e e.^.b.b _Xz _.b _ _Xz.b.b.b.^.^.^ qXzXt e.r e.r.oXz.X.bXj e ~ ~ eXt.r.^.c.o _.V.cXg.c.c.c.V.VXzXz _.V _ _.#.o.VXgXg.b _XzXzXz _.bXz.b _.b _XzXz _Xz _Xz.b _XjXjXj.^.c.^.oXz _Xz.b.bXz.b _Xz _.b.b _Xz _.bXgXg _Xz.bXzXg.o.o.V.z eXj.` F 3.~XDXG.w.sXL.N.) ..s.W R.u BX5X1 cX-.8 3.u.8XVXV.H.~.8 3X-.HXIXI.8.a ~X-X-X-XIX1XI RX1",
+".rXt.r ~XtXt.r.rXtXjXtXtXtXtXt.r.rXt.k.r.rXt.^.K.8.K., kX..1 nXw =.[XB `.a.aX-.H.~X1X1.eXV.a.a 3XM.K `.-.- g gXm yXw.9 s $.*.aX- RX- 3.eX-.eX-.~ R.~X-.u.eXI 3 3X*X-X-.`.K c c.`X-.e 3.u.~X-.e.~X-.K.e c ` `Xl ).9.K T `XIX- a.~.e B RXV.u 3.~X-.~ R RX1.eX- a.aXI R.e.~X1X,.ZXc.e ` :Xc 1XcXJ hXD C.D.w.n.0XUXdX1XI.`.8.~.`.`.r e N NXj N.b.R A.z.z.zXx.f qX&.IXkXu dXkX .&.I.I.6./. .6.6Xg.V.c.V.c.c.c.VXg.VXgXz lXz.b.b.b.b.^.b.^.b.^.^.^XjXt.rXtXt.rXtXt.rXtXt.r.r.r.r.r ~XzXd.^.b N.bXz.b.^.bXzXzXzXz.^XzXzXz.bXz NXz.b.^ NXzXzXzXz.oXzXzXzXzXzXzXzXzXzXz _.b.b.bXz.bXzXzXzXz.b.b.^.kXt.r.r.HXt.H.8 R.a s JXCX0XpXLXcXKXcXw.G } V : $ h h c # $ $ c $X5 $X-XVX-.~X-.`X- a.8X1.e R.e.uX-.aX-X1X5X- a.a c.lX3XK $.Y.E v p u u RX-.e.a a a a t a BX-X-X,.M U U.WXf .XfX2.j.M cXV.8.8.r.rXjXtXtXt.^.b.b.b.bXz _ _.b _.b.b.b.bXz.b _.bXz.Q.b.o.X.b.X N.bXk.X.kXt c.rXVXV D.% ).`.` F ~.rXjXj.^.b.^Xg NXj ~.rXt.rXz.b.b _Xz.bXz _ _Xz _Xz.o NXz.k ~ e.rXtXt.rXt.b.^.b N e ~ F ~.r.r e.kXgXz.o.V.c.c.c.U.c.c _ _.c.V.c.c.c.#.c.cXg _ _XzXz _.o _Xz _XzXzXzXz.b.b.b _ _.b _XzXj e.b.XXkXz.o.^Xz _Xz _Xz _Xz _.b _Xz _XzXz.V.c.c.o _Xz.b.b.U.c.V.Q _.r.8 ~.8.8XI.}.9.)......X0 2XL `.K )XlXoX5 #X3 h.uXX cXJ.5.`XI.5 $ TXD., 3 ) cXXX5.~.uXV.].`.5",
+"X*.rX*.r.rXtXtXt.rXt.r.r.rXjX*XtXt.rXt.rXt.k N.^ 3.K qXc.,.,.jXH.1 kX3 xX, 3.DXVX-X-XI.u.a c.8XM.l XB V.jXc o sXa.n 9.Z.w R aX- aX-.a.a.eX-X-.e.~.~.e 3.eX1.~XI.r.~X- ~.uX*X- c.e.~X-.~ 3.eX-X-X-XM.eX- 3.` 3XI.e.eX-XD.eX-.eX- a R BX-XI 3 3X-X-.~.~X-.a.~X-X- aX1 aX-X- a.u : :Xl.9Xl :.9Xc 1.WXD tXD 8.w.'.0 g 'XIX1.`.H.`.8 ~.r N.o.b N.o.I.R.t.I.& PX .t.AXu.$.AX q d.&X d.&XuXuXuXu.UXg.c.c.c.cXgXg.c.c.oXzXg.b.bXz NXz.b.^.b.b.^.k e.r e.r eXt.r.r.r.rXt.rXtXtXt e.r.r N.k.^.b.^XzXz.bXzXz.^XzXzXz.bXzXzXzXzXzXzXz.^XzXzXz.^.^.^.bXzXz.^XzXzXz _.b.o.oXz.b.^Xz.^.bXz NXz.b.b N N.kXtXtXt.u.k.8.8X1 R xXU.j.j y.p.,XwXc : V., #XMXD.a aX-.e x T ' $XlXlX1X-.K.KX- R.~.~X- 3XI.e.eXIX-X-X- RX,XIXI a cX5X3 V.M.-XGX>Xr UX, $.eXMXD $ <.9 h R '.e $ 1 1.Y.M.wX4 .Xi.@ x h DXI.8 ~ 3XtXt.rXtXj.^ N.b.b.bXz.b _ _ _ _.o _.o _.b _.b.o Z.t X d Q.t.t f.| Q.H.8.8.u ~ 3XVX9.8.`.`.`.8.r.rXt.^.^.b q.U.k.^.r e e.^XzXz.b _ _ _Xz _Xz _.b.b.b.b.b.^ e.r.r.r.k.r NX*.^Xj.r F F F.r.rXtXzXg.b.o.c.c.c.c.c.c.c.c.c.V.c.c.c.c. .c.V.c _ _XzXz _.bXz.b _.b _Xz _.b.o.V.cXg _.b.bXjXj N.b.c.^.oXz _ _Xz.b.b.bXz.bXz.b _Xz.bXz.c.c.o _ _ _.bXzXg.c.V.#.c.^ e.8.8 ~.8XI.WXG %.sXiX= 2.s hXIX1.HXV.` 3 3.8.}.uXV cXD.`.u cX1 c.` h.8 #.8.r.r.~XVXI : 3.u",
+"Xt.r.rXt.r.rXt.r.rXtXt.rXj.^.^.^Xt eXt e e.^ N.k.r.8X3X3XM kX7XHX#.[.9 $.}X, $X. :XVXI.~XI 3X-XM #XB., y.'.w.wXL.n.D.' $ RX- RX5.e cX5XI.eX-.eX-X-.eXI.` aX-X-XI.~X-X-XVX*.e 3 3.~ a a RXIX- R.e c.`XV.a 3 3.K.a.` a aXV c RXl.e a.*.e x R 3.K.eXIX-X1.~XI.e R aXI aX-X- aXIXI.e 3.e.e.e aXD.a aXD.D RXD BX,.0.D '.!XPXPXP.].D.`.HXd N N.^.o.bXz _XzXgXkXgXk q qXgXxXgXk.zXkXg.cXg.cXg.cXg.cXg.c.cXg.c.V.c.cXgXg.bXz l.b.bXzXz.b.^.b.^XjXj eXt e eXtXt.rXtXtX*.r.r.r.r.rXtXt.r.r NXtXtXtXjXz.b.^.^XzXz.bXz.^XzXz.bXz.^Xz.b.bXzXz.^XzXz.^Xz.oXzXzXzXzXzXz _.o.cXgXg.b.bXgX9 N.^ N.XX9X9 N.^X9.k.kXo.k )XI.k.uXIXD.9 k : X3X3 kXX 1 ` 1 # kXc #XD a.a.a h., ' :X. :XH., I.aX-.e B B.~ 3.~ B aXIX-.` B 3X,.a.a 3.K : kX,.p.E.@ n t x.%.*.' k :.e.,.aX,.O R.Z.>., k t.- z 2XpX> h #.5.H.8.8.k.rXt.rXdXt.^.o.^.o.o _ _ _ _.b _ _.bXz.oXzXz.V.b.I.6.I.QXk A (.z.zXx F.`.`.kXVXt.u.8 F.`.`.` F.8 ~XtXt.^.bX@ l.oXj e e eXz.bXz _XzXz _ _ _.bXz _.bXz.b.^.b e eXjXj.^ e.X.rX*.r N.kXt F ~Xt.rXzXg _.V.c.c.c.U.c.c.c.c.c.c.c.V.c.U.#.c.UXg.o _ _ _ _ _.V.V.b _Xz _.o.V.c.c.V.c _Xz.bXj.k.b.XXk.^ _.bXz _ _XzXz _.bXz _.bXz.b _.b.c.c.o.o.c.b _.o.o.V.c.#Xg.bXt ~.8.8.8XIXD.D b.sXb %X= v aX- F.~ FX-.aX- a.}X-X*XK.%XV.3XI.8 a.~.8X-.e.aX-.`.~X-.`.~.`.~",
+".k.rXtXtXt.r.r.r.rXtXtXt.^ N N.^.^.^XzXz N.b.X N ~.8 q VX3XSXH [XHX# X,XeXJ.3XJ mX* 3 3X* a cXM xXcXUXGXe.nXsXD 8 8X,.e.~.}Xl.9Xl.]XcXI R.eX-.e a 3X-.e.e.e 3.`.e.K.` : a c :XMX,XIXDXlX-.aX1 cXl.e.~.`XI.5XI.8.e.`X- RXc `.,.9Xl .9X3 1XJ 3XJ 3 3XI 3X1X- RXIXD a.e.aX-.aX-.` 3X- RX- RXD 3 RX1.wX-X- a cXD.wXa.n.0 '.n.0 gX1.H.rXzXz.b.b.b _ _.b.c.cXg.zX@.AX@.fX@.6.f.UXg.cXg.c.c.cXgXg.c.c.c.c.c.c.c.c.cXg.bXzXg.b.bXz N.bXz.bXz e.r.r e.rXtXjXjXt.r.r.r.rX*Xt.rXt e.r ~.r.k.rXt.rXtXj.^XzXzXzXz NXzXzXz.b.^.b.b.oXg.oXz.^.^.^Xz.^Xz.bXzXzXz.^.b.b.oXg.cXg.bXk.b.tXk.& q.&X3 5./ q ) q.z 5 f 5 5.|.$XJ.5.% )XJXK `.,.GX#.S.3.3.SXHX#.[ $ # a <X-.a $ 3.Z.Z.a c 3.}.K RX-X-.~X- 3.e B B 3.a.e R.D.}X- 3 #X5XM IXe.YXG.s y.M 1 x.M $XDX,XDXc h $ $ x.D $ xXc.M xXpXn v.Y <.5 5.5.H cX*X*XkXx.r e.X.o.o.o.b _Xz _ _ _ _.b.b.o _.#.UXg.U. Xg.b.^ d N.R.zXo ~ ~.u ~XVXo.r.k.rXt.8.` F F.8.8.r.r.r N l.^.bXz e e e.^.b.bXz _Xz _XzXz.oXzXzXzXg.I.#.o e eXj.bXz.r.5Xt.r.r.` F.`.`.rXtXjXg.b _.c.c.c.V.c.V.U.c.U.c.V.c.c.c.c. .c.o.c.V _XzXz _.o.c.c.V.V.o.V.c.c.c.V.c.V.bXz.bXj e.^ N.c N.b _Xz _Xz.b.b.o.b _.o.o _Xz.b.o.c.c _.oXg _.b.b.V.V.c.U.U.o.^.r.r.8.8.8X1XI.n v 0.. vXL 8.`.`.`.~.`.e.-X*.K k.2 $ I.0 5.H c.`.8X-.`.`.`.`.~XI.r.8.`.`.`",
+".r.rXtXjXtXt.r eXt eXj.^.^.b.bXzXzXz.b.bXz.b N.^.r.`X*.S V k.[ |.S.%Xl.MXD.w.MXJ.,.~X-X-.e.aXM # `.-.j.w.wX, t C B RXD a a aXIXDXDXVX, B.e RXIX1XIX-X-XV 3XVXIX-X-.K.K.` c.K mXJXKXJ `XK : :X3Xc.]X-.e 3.~.` 3.KX-X-X-X-.K 1 $ 1.'.a :.9Xl : 3 c.~ 3X- 3X-X-X-XD.~ R a.~X-.` a 3X-X-.~ RX-XDXD RX,X, R RXIXD.e 8.D.wXaXaXaX5 gXd.HXd.^.^.oXz _Xz _.o l.cXk.U./X@.f.f.fX@.6.IXg.c.cXg.c.c.c.c.cXg.c.c.cXg.cXgXg.c.bXzXg _.bXzXz.b.^.b.^Xj eXtXjXj.^.^Xz.^XjXt.r.rXtXt.rXt.r.r.rXt NXtXt ~ eXjXzXzXzXzXzXzXz.^Xz.bXzXz.b.b.o.b.b.^.^Xz.^.^.^.bXz.^XzXz.b.VXgXg.V.o.c.oXkXk.zXx q./XxXkXkXk NXk.5Xk ).5 )X*X5.KX5.u `.2XJXc.G.>X.XH.>X;XHXHX;., x.l 3.e xXK $.a.Z 3 3Xl.a hX- c 3.eX-.~X5Xl T :.e.5X5 B 1 ` | c )Xc | V.}.jX4.s.W.M.aXI ` $.* aXD.a t.e a.*.*X,X,XD.M uXq.) J.wXK.` I.K I I q.|.$X@ fX@X@ N.b N.b.b.o.bXz.o.o.oXzXz.b i i. i.t.U.oXg.& fX .&.f ~ ~ F.k.k.A.k ~Xt ~ F F ~ F.8 F ~ ~Xj e l l.b.b.^ e.^Xz.b.b.bXzXz _Xz.b _ _.bXz.o.#.I.UXj.^Xz.bXjXj N.rXt.r.`.` F F e.r.^XgXz.o.U.c l.V.c.c.c.V l.V.U l l.c.c.I.U.c.c.V.V _ _.o.V.c.c.c.c.c.c.c.c.c.V.cXg.bXz.bXj.r eXj.X.b.b.b.b _Xz _.o _.b.oXgXg _.b _.o.cXg.oXgXg _.o.o.cXg.U.c.c.c.bXj ~.8 F.8.8.8 3 1.Y s o.'XDXD BXd TXV ) DX; ' ]Xl.HX-.`.`.r ~.kXo.`Xd.HXoXd.8.`.5.` N.HXt",
+".^Xt.^ N.^.^.^.^.^Xj.^Xz.b NXz N.bXz.b N.b.b.o N.k.`XtX3XM VXM.i $.} <.Z hX, $XD c aX-X-.} c #XM.-.-.9.w v.* B t.*.e 3 aX-X-.e aXI.aX-X-X-XD.eX-.e.e c.eX-.e.~.`XlXVXI 3.eXIXI cX1.a 3X-.a.aXI c.`X-.e 3.~.u.H 3.`X-.~X-X,.e.e a.e.*.e a.a.e a.e.~ 3.e 3X-X- RXD.e RX- aX-.`.e.8X1X- a B aX,.aXDXDXD R R $XI RXD R 'Xa.D.w ' T '.`XdXj N.bXz _ _ _.c.cXg.c.UXkXkXgXkXgXkXgXg.oXg.c.c.cXg.c.c.c.c.cXgXg.c.c.VXg.cXzXzXg.b.bXz NXz.bXzXz.^.^.^XzXz N.b.b.^XtXtXt.r.rXt.r ~.rXt e ~ N.r.r.rXjXjXz.^Xz.^XzXzXz.^XzXz N.b.^Xz.^XzXz.bXzXz.^Xz.^.oXzXzXz.b.VXgXg.o.o.b.oXg.oXgXz N.^ N N.^.^ N N.^ e ~.r.rXoX* ~.8.`.`XV., TXU T.0.! 9.! g y.9Xc kXM # h a.l., `XH., kXZ |.,XJ V.,XJ.e.e.]XX k D.0., D ` #X3.,XJ., kXHXH.- h.YXGXe.s U R aXc :XK :.- :XKXJXK :Xl :XD.}XD < vXL o.NXhXX (.0X9.5X9XkXxXxX9 qXt.X.b NXg.o.^.b.b.o.bXz.bXg.b.o.o.bXz.c.o.bXz.b.o.X.X.r.k.~.RXX.r q.KXt ~.k ~ ~.r.r.8 F.8 ~.rXt q l q.oXz.bXz.b.b.b.bXzXzXz _XzXz.b _.bXz.o.U.o.b.b.b eXj.r.b.r.r ~ F.` F.`.r.r.^.XXz lXgXg.V.V.c.U.V.V.U l.o.o.o.c.U.QXg.c.c.c.c.V.V.c.c.c.cXg.V.c.c.V.V.V.V.c.V _.b.b.rXjXjXj.b.b.o.c.cXg.o _Xz _ _Xg.c.c _Xz.bXg.c.o.o.c.o.oXgXg.c.V.U.U.o.UXkXzXt ~ F.8.8.8.`XV.0Xl.w.] RXDXI B.| T 4 'X5XIX1.D.5X5.`.8.r.`.rXx.H.H.`.H F.~XtXt.`.r F.r",
+".b.b.b.b NXzXz.bXzXzXz.b.bXz.b.b.bXz.b.bXz N.bX9Xt.8 )X3XMXX.l.}XI.M.a.}.Z hX,X, $ B.a c h.aXMXM.-Xw.'.wX, t RX-.a a.Z a.e.eX- aXD R aX- aX-.eX-X-X-.8 RX-.e : 3 c.`.H.eX1 aXIX,.e RXI a.~XD c a.~X-.eX1X-X-XX.8 3.`.~ aXV.aX-.e a RX- RXI.e.aX-XI 3.~XIXI.~.aXI RX-X-X-X-X-X-.a 3X- R.eXDXD.a.} x.Z cXc.YX3 : : mXJ sX,XD '.' g FXd e.bXz.bXz _ _.c.c.V.c.U.UXk.cXkXgXgXgXg.c.c.cXg.cXg.c.c.cXg.c.c.V.cXg.VXg.c.bXzXg.XXz.bXzXzXzXz.b.b.b N N NXz.^.^XjXt.r.r.r.rXt.r e.r.r.r.r N.rXt.r.^.^.bXz.^XzXz.b.^Xz.^XzXz.^Xz.^ NXzXz.^XzXzXz.^Xz.bXzXzXzXz.oXgXg.o.o _.oXg.cXg.o.bXz.^ N N N.b.^.^ eXtXt.k N.8.8.8XIX-XI.] gX5 sXaXa.nXaXaXaXlXG.,.9 x c a h aXXX3 1X3 `XK | #XIX-.a a.a #X1XIXD 3 `X, a 3 3.} 3 #X3XM., h.-.YXnXL._.MX-X3 : ` :.'.0.5Xl.ZXcXMXl.}X-X,Xe v.s H.sXl 1.H.HXI.8XVXV.rXt.r.rX*.^ N.b.b.bXg.o.b.b.b.b.b.b.oXz.oXg.b.U.oXz.o.^.X.b N.k.X FX* q.rXt.r ~.r ~.r ~.r.r ~.8 F ~.rXt.o.r.b.^.b.^.^.^ N.b.bXz.b.b _Xz.bXz.b _Xz _.b.b.b.^Xz e ~ e N.r e F.r.`.`.r.zXk.I.R.I i i.&.#.I. d d iX@. X .t./.I AX@.I dXg.c.c.c.c.c.c.V.c.c.V.c.c.c.c.c.c.V.V _Xz.b e eXjXj.^.b.b.c.c.c.c.bXz.oXg.c.c.c.o _ _Xg.V _.o.c _.o.cXg.c.o.U.UXg.cXkXgXjXt.r F ~.`.8.H.H.`X5.ZXlXw.OXc.SXD.uX-X-.`.`.8 3.8X-X-.`X-.~.8.8.uX* ` 5 ).2XV.`.`.~.8",
+".b.^Xz.bXzXz.bXz.b.bXz.bXzXzXz _Xz.b.b.b.b.b.b.b N 3.rX3.$X3XMXMX, 1XD < h.wX, R h 3XI a.a h 1XUXwXK.w.Z R a a.eX-.aX-.5 hX,XD R a a RX-XI.e a.e.e.}.`.~ c.u.KX1 3X-.e.~ BXIX,X-.eXI B 3XIX- a a.~.e 3.e.~X-.u #.eX-X-.e c.eX-X- a a.e hX-.e aXI.a.~ RXI aX1X- a.~ a.eX-XI.a RX, R a.M RX, tXDX1 #X, 3.uXK.Z x ` h.ZX1XsXl.n g.HXt.k.o.^.b _.b.V l.c.c.c.U.#.cXkXgXgXgXg.VXg.V.c.cXg.c.c.c.cXgXgXg.c.c.cXg.cXg.bXzXg _.bXz.b.bXz.bXz.b N.^.^XjXjXj e e.r eXt.rXt.r.rXt e.r.kX9 qXgX9 NXz.^XzXzXz.^XzXz.b NXzXzXzXzXzXzXz.bXz.^XzXzXzXz.^Xz.^Xz.^.b.oXg.V.o.oXz.o.V.o.o.o.b NXzXz.^.bXz.^.^Xj e.rXtXoXt FXIXd D.H : D.n TXa.DXsXa.ZXa s.'Xw.Y # # a.a # XMXc `.- ` x # # #.e.a a.8X- B B 3X- a a hXIX-X-XI xXM.- 1 h s.Y.sX>XD.a 3.aX-XIX1.~ BX-X-.e a aX- h h.MXe.) v &XH : ).u.HXVXV.^.H ~.uXtXk.XX9XkXg N.b.^.b.bXz.oXgXz.b.b.b.bXz.c.b.o.^.o.b.6.^Xt.z.K.rXtXt.rXtXtXtXt.r.rXtXt ~.8 F.8.r.r.XXj e eXjXj e e.^ NXz.b _Xz.b.b _XzXz _Xz.b.bXzXz.b.r eXj.k.b e ~ ~ ~ F F.rXx.I.f.tX X .&Xu.IX X&X&.& i.t.(./.t.tXu.( ZXu.t.c.c.c.c.V.c.c.c.c.cXg.V.c.c.c.c.c _.c.b.b.^ eXt e.^.^.b.bXg.V.V.c _ _.VXg.c.c.c _.o.VXg.o _.oXg _.o.c.c.V _.c.c.c.o.c.U.bXj e ~.`.r F F F.`XI.D x.>.1XG.Y 1 ' R.` F.~.u.`.` 3X1XI x ) :XJ D.5 I.K :.$X*.8.`X- ~",
+".o.bXzXz.b.b.b.bXzXzXzXzXzXzXzXz.b.b.b.o.b.b.b.XXjXt.8.a # V XM # x h a.ZX, $X, $ B.a c.} ` .- nXUXm.n $ tX-.aXIX-XXX3XKX5XcXl 1.9XKXlXJ $.e.~XIXIXI.eX-XV.KX-XV.e.~X-X1.eXD 3.eX- 3 a.u aX-X-X- a.~XI aX- 3 3XVX-X-X-X- R.8 aX-X- a RX1 R a.u.a aX- 3X1X- RX1 RXIXI 3 3 $.uX, $X5 3Xl.Z x h $ : xXD a t.}.a $X- a.a B R s sXUXo.rXd.b.b.b.b _.c.c.c.U.cXk.UXg.cXk.c.c.c.c.c.c.c.V.c.c.c.c.cXg.VXg.cXg.cXgXg.o.bXz l.X _ NXz.b.bXz N N.^.kXtXtXtXt.r.r e.rXtXtXt.r.rXt.r.r.^Xk.IXxXg.X.b.^XzXzXz.^Xz.bXzXzXz NXzXz.^Xz.^.^Xz NXz.^.^Xz.^.bXz.b.b.o.VXg.o.c.U.U.V.c.c.o.c.bXz.^XzXz.^.bXz.^.^ eXtXt.^.H ~.HXd.]XP g 4.OXU s s.*.* C 8.w s g.- x # <.}.lXXX3., n k.-.9 :.l.KXM.a a.`.a.}X-X- RX- a a.8 3 R B < h # V., 1XDXK v y sXMX5.5XMXI BX1 B.~.~.8.a a.}.aX- t U...=Xr.G 1 I 5.].k 5.`X@ ) (.r.AX9.6X@./.6X@./.t.&XgXz.b.b N.o.b.b.b.UXz.o.cXu.^ q./ ~.8Xt.r.r.r e ~.rXj F.r.r.rXt.r ~ ~.8 ~.r N N./Xg.r.r.r eXjXj.^.^.bXz _.b _.b _.bXzXzXz.o.bXz e eXj.X.XXt ~ ~ F F ~ F.k.k.X N.z q.I./.U.IXk.U.I.#.I.z.#.#.# l.#.I.c.c.c.c.c.c.c.c.c.c.VXg.c.c.c.VXg.c.c.c.c.bXz.^.^ eXjXg.b.o.o.cXg.c.c _ _Xg.c.VXg.c.bXg.c.c _ _.cXgXzXgXg.V.oXz.c.c.cXg.V.UXkXzXj.r ~.`.8 ~.`.H FXl.W._XnXF.s.sXn.DX-.~.~Xd.e }.] kXc mXK.0 : 3.` 3.` a 3.~X-.`.8XI",
+"Xg.bXzXz NXzXzXzXz.b.b _XzXz _.bXzXzXzXz.bXz.bXg N.r.rX-.aX*XJXM #X, ` t.}.wX, 1.M.a.aX, $ 1 V nXwXU s.nX, R 3X, 3X1XD.e # cXD RX5XI $ :XD.a.a a.eX1.`X-X-X-.` 3X-X-.~X-.e RX1 cX1.e RX1 3XIX- a.~ a.e.aX-X-X-X-X- c aX-X- c R.~ R BX,X- 3.eXIXDX-.eX-X, RX-X- RX-X-X-XDXV 3X- 3 :XcXK.,.-XKXJXK 1.,.9X,XD.Z $.aX-X- aX, R.'.n.0Xx.H.k N.oXz.b _.cXg.c.c.c.U.#Xg.cXgXg.c.c.c.c.c.c.c.c.c.cXg.c.c.V.c.c.c.c.cXg _.bXzXg _ NXzXz.^Xz.b.b.^.k.rXtXtXt.r eXt.rXt.r.r.rXtXt e.r.r.r.r.^.r eXj.^XzXz.^XzXz.^XzXz N.^XzXzXzXzXz.bXzXz.^Xz.^XzXz.^.o.b.o.o.o.o.oXg.U. i i i.#.c.o.oXzXz.b.^.bXz.^XzXzXj.rXt N.r.H.`.HX5.H.HXl g : R B tX- B R.w.n yXJXM # # # #XB.,XJXwXUXc.-Xw VXM X* a a.`X-.~.eXI.~ a.aX-.uXVX1X-.} #.l., | x x.Y.E.Y $ # 3.u.8.`.~.`.`.a.`XI 3XDXD R t UXs.s.sXw 3.3Xx.| qXx.u Q ).f.r.&.A ,.f.& Z.(Xu.tXu.c.b.o N.b.b N.b.b.#.c. XzX .IXz.^Xj ~.rXtXj.r.rXtXt ~Xt.r ~.rXtXt ~ ~ ~ F ~ NXjXgXjXtXj e.r e.r e.^.b.bXzXz _Xz _.b.o.U.^Xz.oXjXjXjXz.XXg.r.r ~ F.r.K ~Xt.k N N.$.&.A././X XuX X .AXuXu./.cXk.U.U.#.U.U.c.c.c.c.c.c.V.c.V.V.V.VXg.V.c.c.V.cXg _ _Xj l e.^.c.b.b.V.UXg.c.c.o.oXg.c.c.c.o _.c.c.c.b _.c.cXzXg.V.o _Xz.c.c.V.cXg.o.U.cXj eXt.r ~.`.r.`.] ` v.sXbX4.xX=.v.Y.nX5.Z xXl.9Xh nXU s.N t tXIXI.`.`X-XI.K.~XIX-.`",
+"XgXz.bXzXzXz.b.bXzXz NXz.bXz.bXz.b.b.b.b _.b.b.b.XXt.r.`.8.aXXXKXMXDXM h.M hXl $.M 3.aXl.lXMX7XH.-.'.n s.Z $XIX-X- a 3 R a a a t a aX-.a.e R BX-X1 3 RX-.~X-X- 3.e.~.~.e R.e : :.0X5Xl : ` : :XlX- aX-.aX-X- a RX-XIX1X-.uXI.~X-X-X, 3 $ x cXl : #X5 c $.~X- R.~ B.` B.u #.e.`X1 c t a.'.ZXD a tX,X, RXK.* R a a a.aXDXD.M.w '.! ( F.kX9 N.o N.bXg lXg.c.cXk.#Xg.c.c.c.c.cXg.c.c.c.c.c.cXg.cXgXg.c.c.VXg.c.cXg.o.bXz.o.oXzXz.b.b N.X.b.r.r.rXt.rXt.r.r.r.r.r.r.r.r.r.r.r.r eXt.r NXtXt.rXz N.^XzXz NXzXz NXzXzXz.^.^.^Xz.^ N.bXzXzXzXzXz.^.o.o.c.o.oXg.VXg.c.U.U.c.U.c.c.o.o.b.^XzXz.^Xz.b.bXz.^ eXt N.r F.`.HX1XIXI.HXJ $X1.eX-.e R B.D xXK.jXc # #XM #XKXw y.' y.j gXw., ` : hX- aXI aX-.eX-X- a R.8.`.~.D a.a hXM V k VX,X+ yXcXD R.aX-.`.`.`X1.`.~X*XM.~.Z.a R R < pX= .XK R.u.8.rXV.u.rX*Xd.kXt.kXj.bXgXg N.bXg.b.o.bXzXz.o.o.b.oXgXg.I.tX .b.o.o NXg NXt.rXjXjXt e.r eXt.rXtXtXt.r.rXt.r ~.8.8 N F.rXjXt e.rXt.rXjXtXj.b.bXz.b _.bXz.b _.VXz.oXz eXjXz.^.b N.rXt F F ~.^.rX*.K 5X9.z q.$.z.$X3./.$ q.$./.$.cXkXgXg.U.U.c.c.c.c.c.c.c _ _ _ _ _Xz _ _.V.c.c.c.c.V.b.b.^.#.z.U.UXgXgXg.c.c.cXg _.o.c.c.c.V.b.o.c.c.o _.V.cXgXz.V.cXg.VXz.#.VXg.V.c.c.c lXg.^ eXt.r.r.r.HX1X,XGXp M.; S.sX=.@ ^ 0Xn ^.hX>..Xb 2X4 v.9 sXl.9XMXD 3XDXJX3.K D 5",
+" lXz NXz.bXz.b.b NXz.bXz.bXz.bXzXz.b.b.bXz.b.b.o N.X.r.`.8XI.u VXX xXD 1X,.9XqXD RXD h 1 ` [X..j 9 s s.w B.eX-.e BXDX- a B.eXD aX-.e R 3 RX- 3XD R.e.eX-.e 3.~.~X-X-.e R.~ 3Xl R 3 `XK c D c `XDX- aX- aX-X-X-.a.~ 3X-.uX-.eX- B 3 xXlXJX,Xc :XlX5 DXM :.e.eX1X-X, 3.u 3.a a.- `XKXDXc.-Xw.-XK kX..9.e.a t R R R.} R.aXDXa s g '.8Xt.k.^ N.o.o l.U l.cXg.U.z.c.c.c.c.c.c.c.c.c.c.c.cXg.cXg.cXgXgXg.cXgXgXg.cXg.bXzXg.XXzXz.b.b.bX@XkXx )Xx.5XXX9X9Xx.` F.k ~.rXt e.r.r e.r e.r.^Xt.r.r.^XzXzXzXz.^XzXzXzXzXz.^XzXzXzXzXzXzXzXzXzXzXz.b.bXg.oXgXg.cXgXg.VXgXg.c.VXg.o.oXg.o.bXzXzXzXzXzXz.^Xz.^.^.^.k.r.r.r.8.8.HX-XI.]X5XI R.~ a B.*XD.w s mXc 1 x XK.- !.! v.n s.'.! k : h aX-.}X-.e RX-.~ R.e.u.`.~XD c cXM XX.,., hXp y.9Xw.9XlXl : #X5.5.k `.5 :X5 :.Z R.a <Xe 2 0 a.K.8 ~.HXtXtXtXtXt.rXt.^ N N.bXg.o.bXz.b.o.o.o.b N.bXz./.U l.I.b.b.o.b.b.X.bXjXj N.^.^Xt e.rXt e.r.rXtXt.rXtXt.r ~.`.k.rX9.oXt.rXtXt.r e.rXj.b.bXzXz.bXzXz _XzXz.b.bXj e.^.^.^Xd.kXtXt.8 F ~X*.r.rX9X .f.f.A.f.A } 5.$ |.A.A.f.A.A.f.I.U.U.#.c.V.c.V.c.V.V _ _Xz _Xz _Xz _.c.cXg.c.VXg.o _Xj e.r.oXk.cXk.U.c.c.c.c _.o.cXgXg.o _.V.cXg.V _Xg.c.VXz.c.c.VXg _. .VXgXg.V.o.V.c.c.c.oXt eXj.r.u.k 3.2.1 M.+.s 0 0.4 /XiXb.;Xb -XbX=Xb.).s H.Y.> Xl.] : P T Y 5 D.]",
+"Xg N.bXz NXz.bXz.b.bXz.bXz.b.b.b.^.b.b.b.b.b.bXg.U.XXt.rXI 3 3XlX3X3.}.-XJ.9 kXD xX.Xh.3 .Y.-.,.j.nXUXm.ZXl xXD x $ $Xl x 3XDXK.u R x ` $ R.Z.~.eX-.~X-X-X-.`.a.eX-.e.~.e.a 3XV R.e.eXI B 3X1 R 3.~ a.~ R aX-.aX-X-XD.~ #X-X-.~.eX-.eX-XD.e RX- a aX, R.eX1X-.eX-XD.H aX-XI.e : x : t.Z.9 : 1.Z $XJ $.*XDXDXD a.aXI RXDXs s.0 ! 4Xx.A.XXgXk.zX@Xg.^Xg.c.U.U.#Xg.c.c.c.cXgXgXg.cXg.c.c.c.c.c.c.c.VXg.c.VXgXg.cXg.bXzXg.o.bXz N.b.X.R.R.$ ) q ( 5 (.$.X.5 F.rXtXt.r.rXt.r.r.r.r.r.kXt.r e.^Xz.^XzXzXzXz NXz NXzXzXz NXzXzXzXzXz.^Xz.^Xz.o.bXg.oXg.b.o.cXg.o.o.o.o.o.o.o.o.o.o.bXzXz.^Xz.^.^.b.^Xz.X.^.X e.r ~.8.8.`.8.` T :.Z B B RX-X- a.w.Z yXwXc y gXwXw ! v sXaXLXL.9XwXKXM # R.e 3X-X- 3X-.~ R.`XV.HX-.8 : .lXM `., | #XnXw v y.9 x $ c c 3Xl.8 3.u.u $ BXV 3Xe._.@Xn y :.5 ~.8.rXdXV.rXt.r.rXtXt.^Xz.X.b.b.oXgXzXzXz.o.b.o.tX9.I i.U.b.o N.b.b.b.b.X.^ e.b.b.b.^Xt e.rXt.rXtXt e.rXt.rXt F ~X*.`.o q.XXt.r e.rXt.rXj.^Xz.^.bXz.b _Xz.o.b.bXzXjXz.b.^ eXt.^.rXt.8 ~ ~X*.rX*Xk )X3Xk././ 5 q.$.z.$./ 5././X@./.U l.U.c.V.c.c.c.c.c.V.bXzXz _ _ _Xz _.V.c.V.c.cXg _.^Xz e e.b.#.c.c.c.cXg.c.V _.V.c.V.c.V.o.V.c.UXg _.c.cXg _XgXg.c.c.o.#.V.c.c.c.c.c.V.c.#.#.c.o.^ ~.r.R ( T.0 xXK bXLXG J.EXn M.;.s.vXf.v.v 2X=XZXe gX3X. `.u :.uXVXIX1Xd",
+" lXz.bXz.bXz N.bXz N.b.b N.b NXzXz.b _.b.b.b.oXg.(.z.z.kX9X9XJ #XJXM x h.- nXK.M.'.,XK.,.-XMXB n n.'Xm.0 xXGX,XK.0.9 : : x c $X3 :XIX3 :X, R.e.e R B aX-X-.e 3XI R.eX-.eX-XV.e.Z RX1 RXI 3XDXDX-.aX-.~ aX-X- R aX-XIX1.~.uX-X-X-X-.e.~.e 3.~ 3.a.e.eXD.eX- a.eXIXIXDXI R.e a.eX-.e.* RXDXD.a c.ZXD $XDX,X, R aXIXDX,X,X,.W.0 9XU.'.z.AX .A.A dX@ ZXg.c.cXgXg.I.c.c.c.c.c.c.cXgXg.c.c.cXgXgXgXg.c.c.V.cXg.c.c.cXg.bXz.o.XXzXz.bXz.X.^XtXo.5X9 cXx c.r.r.r ~.rXt ~.rXt.r e.r e.r.r.KXt.rXt.^XzXzXzXzXzXzXzXzXzXzXzXzXz.bXz NXzXzXzXz.^.b.b.oXg.o.o _.o.o.oXg.VXgXg.cXg.o.oXg.o.oXzXzXzXzXzXzXz.b.b.^.bXk.kXtXt ~ ~XVXI.`X5 g.Z B.*.e B B.*.DXl 'XwXwXw gXmXUXU.n b 8XaXa oX..- : x t RX- a.e R.~X-XI 3 c.eX1XD.l ` k V.- [.S x uX+ vXe v.9Xe.M.a R.a cX- R RXI.eXI.~XD < UX=.@ 1 <X*.8.r.r.r.r.rXtXt e.r.r.k N.b N.b.^.b.X.oXgXz.z.o i.c.^.^.U N N.b.bXz.X.bXgXz eXz.b.b.^ eXt e e.r eXtXtXt eXt.r 3 ~.r F.r.r ~XtXt.rXtXtXt e.^.b _Xz _XzXz.bXz.b.b.o.bXz.^ e e.^.kXt.r.8.rXt.rXtXk.$XgXk qXk VXk q.&./ qXk.z q.IXk.z.U.U.#.U.c.c.c.c.c.c.V.V.V _ _Xz _Xz _.c.c.cXg.cXg.oXzXj e.^.o./.c.VXg _.c.c.o _.V.c.c.c.c.V.c.c.c.c _.V.c.c _.V.V.c.c.c.IXgXgXg.VXg.c.V.V.V.U. .c.# A d Q.f.kXI.HX1Xl v s vXLXn y.;.; 2X0 O.B.= H JXG.j y 1X1X5 IX5XxXx.H.8",
+" lXz.b.b.bXz.b.b.b.bXz N.bXz.b.bXz.b.bXz.b _.b.o.I.&.$.A.$ q., 5 VX3 ` # 1X,X,.'.a.-XlX, `XBXM.- nXU.Y v R a.e R R R 8X1 a a.e a.e.e R.eX-.e.e.a.e.e a.a.e hXI h.e aX- a.~ 3.e.8XVX-.~ c 3 : c.a.~ aX- aX-X- R aX-X- x ` :.~X-X-.~ R R.e 3.eX, a DX. m.-X1X-.~X-X1 c aX- a.3 1 a.M aXDX,.a.ZX,X,XJ K TXD BXD.aXDX,X,.DX,.w.0.'XU.uXo.5.zXk.IXk l.IXj.bXg.c.U.UXg.U.c.c.U.cXgXg.cXg.cXg.cXg.VXg.c.c.c.cXg.c.c.cXgXz.bXgXgXz.bXz.bXz.^.rXd : ).K 5X*X*.r.r.k.r eXt.rXt.r.r.rXt.r.r.^XtXt.rXj NXzXzXzXzXzXzXzXz.^XzXzXzXz NXz.^ N.^XzXz.b.o.oXg.o.c.o.o.oXg.VXg.V.o.V.o.o.oXg.V.o.o.^XzXzXzXzXzXzXz.b.X.X.^.r.k ~ ~.`XVX-XIXJ $ 8 8 B B.* B R $.wXlXP.n v s 'Xm '.w tXD.n.'Xh m |XJ ` :XJ c : c.~X- 3.5X- RX- c # ` 1Xc XB.[X+ xXrX+ .X4 v.sXe UXe.i.a.a aXDX, R RX1XI <XeXbXnXn a.u.8X*XtXt.rXtXt.r.r.rXtXjXt.^ N.o N.o.XXzXg NX i.o N.o NXk NXz N.^.^.^.b _ _XdXjXzXz.^Xj eXt.r.rXtXt.rXt.rXtXt.r.8.r.8 ~XtXjXtXtXt.r.rXt eXjXz.^.oXz.b _.o.#.# l.c.o.^ e e e.^.^.r.r FXt eXtXt.I q.f./.(X .tX Xg./X@X .A.t.A.t.&.t.t.6.6.cXg.c.c.c.c.c.c.c.V.c _ _Xz.VXg.c.c.cXg.c.b _.o e e.^.b. .cXgXg _.c.V.o _.c.c.c.c.c.c.V.cXg.V _.c.c.c _.c.V.c.c.c.#Xg.c.c.o.V.U.c.c.c.#.7.t.7X .t lXd.rXt.r 3.8XIXI R $ T !XU 9.v O / 2 JX0.vXn 0.s.YXD :.AXJ 5.K.~ ~",
+" lXz.bXz.bXzXz.b NXz NXz.bXz.b.b.b.b.b.b _.b.b.bXgXg.X q ) 3.r.} aX3 x.Z U $.Z R c x.a.- 1Xw.j g v $ 8 t R 8 B 8XDX-X- RX-X- aXI R.eX-X-.e R R.~ aXI m K | 6 3.e.~.e 3.e.aX-.HX- $XN m.G.%X-X-X-.e a a RX-X- R cXN.,.uX1.~.~X-.e.~ R.MXD.a T 1XN : a a.~X-.Z R.eX- aXN.aX- aX1X,X,XDXDXD 3 xX$ $.ZX,X,X,.aXDX,XDXD s.9.'XO.H.rXjX*.b N.o.b.bXz _Xz.c l.U.c.c.c.c.c.c.c.c.cXg.c.c.c.V.c.c.c.cXgXg.c.c.cXg.V.bXzXg.X.bXz.b N.b.^.r.r N.KX*X*.k.rXtXtXj.^.rXt.r.r.r.rXt.rXt.r.kXt.rXt e.^.^.^XzXz NXzXz.^XzXz.^.^XzXzXzXzXzXz.^Xz.b.o.o.c.o.cXgXgXg.VXg.o.VXg.o.V.oXg.oXg.o.VXzXzXzXzXzXzXz.^ A.b.z.XXoXd.k F D.HXV m @.n B B a.~X-.~X-XD.w x.!.n.wXa s '.wXD BXs.n.'.3., k., $ x # # : hX1XI 3XI B t 3 # # ` h Xe._XqX7XpX4X>.<.@ . %XnX4 [ yXr.w.MXD a 3X-XVX-.M u.s ^X+ aX* ~Xt.r.u.rXtXtXt eXt eXtXj.k.^ N.o.^.^.b.tXkXg.UXg.b NXgXkXj.rXt ~ e e.b.b.VXz e.^.b.b.^Xj.r e.rXtXtXtXtXt.r.r.r.8.r FXt.zXkXj.r.rXtXtXt eXt.b.bXz.bXzXzXzXz.U.UXg.^ eXjXd.^ NXtXt e.r.r.rXtXj.X NXgXgXk.zXk.z l.UXg.I.U.z q.z.z.U q.U.I.c.c.c.c.c.c.c.c.c.c.c _Xz _.V.cXg.V.c.cXg _XzXz e e.b.o. Xg.c.c _Xg.V.V.V.c.c.c.c.c.cXg.c.V.c.o.c.cXg _.V.cXg.c.c.U.c.c.c.c.c.#.#.U.cXgX&X X .I.UXg.^ eXt.rXt.k.r.uX9 qXM TXD.Z.'.' bXG 0 J JX> b v o.9X5 `X5.a.u 3X-",
+" l.b.bXz.bXz.bXz.bXz.bXz.b.b.b.b.b.b.bXz.b.b.b.b.b.o.X.XXV.r cX-.a V x ` $ 1.}.Z 1XDX,.Z 3XM.YXBXw.[Xw x xXD aX,.Z.wX,XD.e.`.}XIX- 3X-.~X-.eX1 R.a aX-.a.} cXN.e.G : a RX-XI a.` R R 3XI K : c KXIX1X-.~.e BX- R.a BXK.% KXV 3X- R.eX-.eXD.u.e R.e., K B R.~.aX-XDX-X1 a RXN <.a.MX,X,XDX, 3XD RXlXNXIXI.eX5XDXIXDX, 8 $ 'Xl T T.8XdXt.o N.b.b.b.b.o.bXz.o.c.# l.cXg.c.c.c.cXg.c.c.cXgXg.cXg.cXg.c.c.V.cXg.c.VXg.b.b.oXgXz N.b.bXz.^ eXt.rXVX*.rX*.r.r.rXk.I.6.r.rXt.r.r.rXt.r.r.KXt.r.r e.^XzXzXzXz.bXzXzXz.^XzXzXzXzXzXzXzXzXzXz.b.o.o.o.cXgXgXg.V.VXg.VXgXgXg.VXgXg.VXg.VXgXg _XzXzXzXzXzXz.^XuXx.t.R Q.R P g.2.RXy Y.G.ZX1 BX- aX-.e.e.* R 8.Z.Z 8 R.D.ZXDXD.*.Z.nXKXwXX # c.*X-.a.e.e.eX-XV.`.~ aXD.i #XX ` 1 x U .Xq .Xn.F ..J.C.{Xf.x.x.+.+X% = = y.,XJ.8XIX-.a p.v...YX, c ~.r.rXtXtXtXt.r.k.rXt.r.^.^.k N.X.r ~ ~./.I.b.oXz.b.bX9.b.r ~ ~ F ~XjXz _ _ _XzXzXz.b.bXjXt eXt.rXtXt.r e.rXtXt.rXV ~ ~.rXt eXt.r.r.r eXt e.b.bXzXz _Xz eXzXg.c.b e eXd.b.b.bXdXtXtXt.r eXj.^.b.b.bXg.UXg lXg.c.c.c.c.c.c.cXgXkXg.cXg.#.c.c.V.c.c.c.c.c.U.c _ _Xz _.V.c.VXg.c.o.V.oXzXjXj e.o l.IXg.c.V _.c.c.c.c.c.c.c.c.c.c.c.c.c.c.V.c.c.V _.c.V.VXg.c.#Xg.o.cXg.c.#.U.cXg.c.I.U.o.U.c.#.X e.rX* ~Xo 5 ) PX9.rX* 3.` RX1.Z h.Z 1.ZXsXG b s.Z.'.9 s.Z s T x",
+".U.b.bXz.b.^.b.b.bXz.bXz.b.b.b.b.b.b.bXz.b.bXz.b.o.^XkXg.k ~XV.`.a ` VXM x c.Z.w.u R $.Z ` ` XBXwXH.YXlXe h x.w s.n 1XD.}X-.8 3X1XI R.D.w $.w $.Z.MXD t #XN.3XN ` 3 3.eXI.` RX1XI.~X1 K.3X$ $ 3X1.e R aX- aX- R RX#XcXN ` RXI R.e a.~X,.a a R hXN $X-.a B.e RXI R.e t RXNX,XD.ZX,XD 3 R.DXIXDXlXNX1.e #.~X,.a.a R BXl '.nXJ $.rXt.b.^.b.o N.oXg.b.b.VXz.c. .o.c.c.c.cXk.c.c.c.cXg.V.cXg.c.c.c.c.cXg.cXgXgXg.c.bXzXg.oXzXzXzXz.b N e.rXtXt.rXtX*.rXt.rXz.6.^ eXt.r.rXt.r.r.r.r.^.k.rXt.r N.^Xz.^XzXzXz.^XzXz.b N.bXzXz.^XzXzXz.^.bXgXg.o.cXgXgXgXg.oXg.c.o.VXg.o.V.c.V.oXg.V.c _.bXzXzXz.b.bXz.I A.t.R 5XxXxXx (Xx 'XJ (X,.*X-X-X-.e $ $XD.' RXl.w RXDX, h 3X, R.D.n.]Xw ` 1XM.a x hX,XI :XM 3X5 3 xXD `XM.[ VXp h E.m E vXqXp p..XAXf.;X8X> W MX>X>Xe.wXl h 3X- R <.d.).sX> h c.8.rXtXt.r.rXt.rXt.r.k.rXt.k N N.K.r.^ FXt.X e eXz.b.b NXk ~Xt F F ~ NXz _Xz _XzXz.^.bXzXj.r eXt eXt.r eXt.r e.r ~ ~ F.8 F F.8.r.rXt.rXtXt e.bXz.bXz e e.^.bXg.bXzXjXjXzXzXo.bXd.r e.r.rXjXj.^.bXzXgXg.cXgXg.c.c.c.c.V.U.cXg.c.c.c.c.c. .c.c.c.c.c.c.c.c.c.V _Xz _.o.cXgXg.o.V.c.oXzXzXz l.b l l.#.c.cXg.V.c.c.c.c.c.V.c.c.c.c.c.c.c.c.c.cXg.V _.cXg.V.c.U.U.c.V.c.V.V.cXg.V.c.c./Xg.cXg.UXg.zXjXt.^Xk.A.& qX*.rXt.K.r ~.8.8.8.8.8X1XIX1X1.D '.wXG.OXD.' 1.' s",
+"Xg.b.oXzXz.bXz.bXz.^Xz.bXz.^Xz.b.b.bXz.b.b.bXz.o.b.bXgXg N ~.^X-.` #X3XMXB.l x h h.w 8X, $ 1 1 Xc.gXw nXG.wXG.n oXK.' 'XD a.eX-.~.e 3.Z.W x sXa.w x s t t #XS.e :XNX-XI.eX-X-X1 3.~ aX- K :.3.S.e 3 3XIX-X-.e 3 R $XHX5Xc 7X-XD.~ R.~X-.Z RX- a.% YXD.- RX- R a R.} aX-.aXNX, cXD 3.ZXIXl c 3 3.ZXNXl V T a 3.uXIX1XD.n.n.].0XI.r N N.X.o N.b.c.c.c.oXgXg.U.IXgXg.c.c.c.c.c.c.cXgXgXgXg.c.c.VXg.c.c.VXg.c.cXgXgXgXg.cXgXzXz.bXzXz.b.bXz N N N.K.^.^X* ~ NXk qXj.r.r.r.r.r.r.r.r.kX*.r ~ e.^.^.^Xz.^Xz.^XzXz.^.^.b.^.^.^XzXz.^.^.b.o.o.o.oXg.c.oXg.oXg.V.oXg.V.o.o _.o.V.o.o.o.o.b _Xz.^.^.^.^Xz.^.^Xg.k.r.r.r.H.`X1 B.0.0 : R RX1 RX1 x 3XJ TXJXKX.Xc.9Xc.,X,XD B.D.w.0XUXc : `X,XcX, : h xXJXD `.Z ` h kXKXB.- 1Xe E U t.M.Z v._.W._X>.xX4._.YXpXnXn.M 8 c a RX- a < E.)..XG h R 3X*.rX*.rXt.r.k.rXtXt.rXt.rXt.X.k.8.8X*.k.X F.oXz.b NX9 ~ ~ e.r eXz.b _Xz.b.b.b N.b.^XtXtXjXt.rXjXjXtXj eXt.rXt.r F.`.k.5.r F ~Xt.r.rXtXtXj.^.^Xj eXj.b.o.b.b.bXj.^Xz.b.^ lXd.r.rXt e e.^Xz.b _Xg.c.c.c.c.c.c.c.c.U.c.c.c.c.V.c.c.c.IXg.c.c.c.c.c.c.c.cXgXz _.oXgXg.c.c.b.bXg.b.b.bXj.V.# i l.U.cXg _.c.c.c.c.c.c.c.c.c.c.V.c.c.c.c.c.cXg.o.o.c.c.VXg.U.U.V.c.c.c.V.c.c.c.UXuXu.o.cXg.c.U.QXg.IX@.&X9.^.r ~Xj.r N.rX*.8 ~.8.8 ~.8.8XVXV.`.k D.KX1.u : ' ' '",
+" l.b.^.^ N NXz NXz.b NXzXzXzXz.b.b.^.b.b.b.o.UXz.bXzXgXkXgXj N F.`.8X3 `XX .l x 8Xl.DX,.Z h.-.F .,X<.1Xc s v oXw.>.9.9.ZX- R RX- B.w.w b.E o.q y o.Z U a :XSX3XH IX- 3 R.e 3.eXD.aX- 3 K kXD YXJ 3 RXDX-.e R.e cXH :.~ 1X# `X-.~X- B.e.u.e R.H n.3X. `.e a a t a.M R a.eX. :XIXIXD cX5 c 3.e R :XcXK.].} RX-X-XD.DX5 '.0XPXVXd.k.b.b.b.b.o.o.cXg.U.c.c.c.U. l l.U.c l.c.c.U.U.U.U.U.U.U.U.U.c.U.U.U.U.U l.U.U.U.z.#.zXgXg l.XXg.oXgXxXgXgXg.XXx N.^.^.KXj N.^.k.^.K.^.k.k.^.k.X.5.^.^ N.X.XXgXxXgXgXxXgX9XgXgXgXgXgXgXgXg.U.U.U.U.U.U.U.#.U.U.U.#.U.#.U.U.#.U.#.U.#.U.#.#.#.U.U.# lXg l.cXgXkXk.z.IXx.X N N N.k.kXt ' g ' $ $ c c.u cX5 $ $ $XlXM.9 x `XK s x.DXl 9.9XUXH.[X3 XX 1.i c h x h $ 3XM h 1.[.- [XBXq xXq U U.i.9 x XqXpX+.;XrXnXnXw.@ ^XL x c cXIXDX, U.W .XnX> v 3 cXtXo.k N N N.k.5.k N.^Xo NXo.k.5 N.kX9Xt.r ~.bX9XgXkXx.k.k.kXj.b.o.o _ _.o.o.b.o.o.o.^XjXjXjXj.X.bXjXd.kXjXt.k ~.`.`.5.z.`.`.`.8.rXtXtXt eXtXtXdXjXz l.6. .b.b.^ N.b.bXzXxXt.r.r e.r e.^XzXz.b.o.V.V.c.c.V.U.c.c.V.c.V.c.V.c.c.V.o.#.VXg.c.c.c.c.V.c.b _XzXz.cXg.VXg.o.^.bXg.o.oXzXj eXj l l.UXg.o _XgXg.c.c.V.c.c.c.c.c.c.c.c.c.V.c.c.V.o _.c.c.cXg.#.c.c.c.c.c.VXg.c.o.VXg.#.VXg.c.UXg i Z d.&.oXt.r.rXtXt.r.X.r.r.r.k.r.r.r.kXdXt F.R.R./.k ~ ~.8X1XI.u",
+"Xg.b.^.b.b.b.b.bXz.b.bXz.b.b.^.b.o.b.b.b N.c.f.#XzXz.o.cXkXz N.8.8.e # V.l #XMX,X,XDXsXIXD.l 1 1XB ` n nXw.j.>XwX0.9.'.Z.* t.eXD s.w b & H w o.q.9.wXa R xX5 x c a c a.a R.uXD 3XI RXD 3 $X,XI 3XIXI.a 3X1 3XDXDX1 3.a $.aXI.} 3X1XI 3 ' 3XD 3XI.u.a 3X, 3XDX,.Z $ 3XD.Z $ $X5 c : :X5XI 3 3 c.a $XD $X,.a h.u.Z.n g.0XO.5.5Xo.XXk.zXx l l.U.I.#.I.#. .I.# i.#.#.U.#.U.U.#.U.#.U.U.U.#.U.U.U.U.U.U.#.U.U.U.#.#.z.U.I.# l.XXg.o.o.o.X.o.b N.^.^.k.k.k.k.kXt.k.kXjXjXj.k.k.kXt.k N.^Xj.k.^.b.b.o.b.b.b.b.b.b.b.b NXzXzXz.b.bXgXgXg.oXz.o.oXg.oXgXg.VXgXg.cXgXgXgXgXgXg.cXg.c.VXg.cXg.oXz.b NXz.b.b.bXx.^XdXtXt.r.8.8X1.HXOX5.Z R RX- R.~ c a aX- R R hX-.M $ hXD RXD.D.wXKXwX3XX #XMXM # $ 3.a.a a.M.a.aXMXc.-.-Xq E U x a.aXD.ZXD U.M.F.@.pX>.j uX+Xn %.WXe.M.}.M u < uXF....XnXw x.`.uXt.k.k.H.KXt.kXt.k.^XdXtXoXt.k.K.K.zX9 NXtXxXg.^.K N.kXd N N.b.o.oXg.cXg.cXgXgXgXg.o N.kXt.^XxX9Xx N N.^Xo.K.kX*.rXV.K.r.r.rXt.k N N N.X N.bXg l.U.#X Xu l.U.z.U.zXk.o.z N.b.X N.b.oXk.U.U.#. . .#. . . .#.#.#.#.#.#.#. . .#.#.U.6.U.#.#.#.U.#.#.#.VXg.cXg.U.U.U.c.o.o.cXkXg.o.b _Xj _.U.U.Q.U.V.o.U.c.cXg.c.c.c.c.c.c.cXg.c.cXgXg.c.V _.bXg.V.c.o.#.oXg.b.o.cXg.o.cXgXg.c.cXg.^.o i.zXz.zXg.z.^.^Xj.r eXtXj.X.r e.r.r.r.rXV.H.rXd ]X@ )Xt.^.rXj.k.r.k ~",
+".oXg.o N.b.b.b.b.b.o.o.b.oXg.o _.bXg.b.X.o.o.UXg l.c l.U.I.z.z N.k 3X*.,X3XB XK 1.' 1X5 $ xXHXH 1.-.- nX<.SX. [X. =XUXKXG s.w s.'.!.+.T S.@X6 =.+Xm.9Xl.D.H.wX,.a.M $ R RXDX, R.ZX, RXIXDXIXD 3X-.aXIXI $ R R RX1.a.a a.uX-.aX- R.~X-XI $X1.~ a.eX, t.ZXDXD.eX- a tX,XD.aXDXDX-XDXD.uXIX-.a.` R.e.ZX-.a.a R.a R.D $.0XU.5X1.u.u.^.^.bXz.b.b.b.c.c.cXg l.cXg.#Xg.c.cXgXg.c.c.c.cXg.c.c.c.cXgXg.cXg.c.c.cXg.o.cXg.c.c l.zXg.bXzXz.b.bXz.b.^Xj.rXt.rXtXt.rXtXtXt.r.r.r.r.r.rXt.r.r.KXt ~Xt.^ N.b.^Xz.b.bXz.b.bXz.bXz.bXz.b.b.o.VXg.o.bXz.o.o.cXg.c.oXgXgXgXgXg.cXgXg.oXg.oXgXgXgXgXgXg.o.b NXzXzXz.b.b l.k e.r.r.r F.8.H.`.0X5 $ 8X-X-X- RXIXD.e R aXDX, R.a $ cXDXD R.W.nXKXwX3XX #XMXM.l c.lXMXc c $ xXM V V.gXB x.M h <.aXD 3X, U.MXpXn .Xr.Y U.9Xf...WXs u.M uXsXe p pXbX= 0XK., 3.`.8Xd.r.^.uXt.k.k.rXdXtXt.r.kX*.r.r.K.^ ~.^X9.XX*.k.K.u.k.rXj N.b.b.^XzXzXzXzXzXz N.b.k eXt.k./.5 NXk.X.K.K.r.K.`.~.`.`.~.`.~.` F ~.r.r.r e.k.^.^.bXzXgXg.^.bXz.^Xj e e.b.r.r.r.r e.^Xz.b.oXg.cXg.V.U.c.V.U.c.c.U.c.c.U.c.c.c.U.U.#.c.c.c.c.c.U.U.c _.o.c.c.c.cXg.oXgXg.U.U.c.cXg.oXz l.U. .Q.#.U.U.U. .U. .#. . . .#. . .#. .I.#. . .I.U.#. .I. .z i.#.I.#.6.I.I.U.z.Q.#.z.z lXgXk. .b l.I.6.I.UXk.o.b.^ eXj.bXtXd.k.r.k.rXd.^ ) ].$ N.k N N.^XtXt e F.r",
+".z.z lXgXgXgXgXgXgXgXgXg.cXg.cXgXg.cXgXgXgXg.o.o.b.o.o.oXk.UXk NXt ~.`XM V .lXq h $ h.D.'Xh., n.aXD 1 : `XMXBXc.[.YXn.wXLXe.n.s.jXh MX: r.s.T.T.>XO.2.0 gXlXcX, a.M.M.e $X,XIXcX5 R 3X-Xl $ 3X-X-.e.~ 3X-.e aX-X-.e RX,.eX-.e a.~X- 3XIXI a RX-XDXIX3 $Xc 1 ` :.a :X3 : : : )XJ.]XK.u RX- R RX-X,XD.M RXD.aX,Xa.n g.]XoXt.H.r N.bXzXxXz.bXzXk.cXg.c.c.c.c.I.c.c.cXk.cXk.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.cXgXgXg.U.U.oXz.^.b.^Xz.^.b.^.r eXtXtXt.r.r.r.r.rXt eXt.rXtXtXt.rXt.^XjXt.^XzXzXzXzXzXzXzXzXz.^XzXz.^Xz.^.b.o.o.o.o.b.V.o.o.o.c.o.o.o.o.oXg.o.V.oXg.V.o.o.V.V.o.V.oXg.o.o.bXzXz N.^.b.bXg.^.rXd.r.r.8 ~ ~ B.DX5.w.D R RX-.a R 3X- a.e R.aXD R hX,X,.} 8.Z sXK nXcXc.-.-XcXBX3 xX#X#.-XB k.,XZ.SXh.h k h h h R.aXDXDX1.a U vX4.<.@.jX,Xp.@X6.s p.. p.s.sXn.sXb.s 0X>.> gXI.HXt.u.r.rXtXt.rXd.uXtXtXtXt.r.rXtX*.k.K.^.K.5.K.5 )Xx.5 (.X N.bXz.b N.b.bXz _XzXz.b.b N.k FXx.f.A } 5 5 5 | ).$XV.` #X9 #.`.`.8.rXt e.rXj.b.o.bXz.bXz.b.oXz.^.^XjXj.r e.oXt.k.r.r.^Xz.b.b.V.c.c.c.c.c.c.c.c.c.c.c.U.U.c.c.c.c.c.U.#.c.cXgXg.c.c.c.c _.o _.V.o.o.b _.o.o.cXg.bXzXzXj e.o.o.U.cXgXzXg.V.c.c.V.c.c.c.c.c.c.VXg.c.c.oXg.cXgXz.V.c.c.cXg.#XgXgXg.6. .&.I.6.6./ AXk l.o.z.b.^.^ iX .#.I.#.#. .UXu.#Xu. Xg.b.X.XXxXk.A 5.&Xo.5.X lXg.z.z lXkXx.o",
+".o.o NXz.bXzXz.b.b.^Xz.b.^.^Xz.b.bXj.bXzXz N.o.^ _.bXz.b.oXkXk.XXt.8.8 3XJ .l.l $ $.WX,X,.'XH.-X,X, 3 # ` .-X3 ` nXc y.9 9 JXGX>XC.@.@ %XA {.xX0Xm.n ' 8X1.DX, a.a.e XD : 1 $ T D DX5X. :XKXJ.e.~.a R a.a c 3XI.e.uXD 3 aX-.~ aX-.~ 3X1 3 a.~X-XDXl.ZX-XlX, hXlX,X,X,XMXlXl $ : : T 3X- RXD RX- $ R.a.a t t.Z.n.0 4X5.%.z (.R A.R.t.6./Xg.b.o.c.c.c.c l.c. Xg.c.c.c.c.c.cXgXg.cXgXg.cXg.cXgXgXgXgXgXg.cXgXgXg.c.c.c.z.b.b.b.bXzXzXz.^.^ e.rXt.r.rXtXtXtXj.rXtXt.rXt.r.rXt.r.r.^.k.^.^Xz.^Xz.bXzXzXzXz.bXz.bXzXzXzXz.b.o.VXg.o.oXgXgXg.b.cXgXg.o.o.V.oXgXgXg.oXgXg.VXgXg.VXgXgXg.oXg.oXzXz.b.b.^.bXgXd.r.rXt.r ~.8.8.HX1.0X5XD R RX-X- R RX,.e R.eX,XDXD.u x.Z 3 <.D.'.EXOXUXw g.jXw k.9X3X7XX `XB ` 1 k.[.Y.iXM.Y RXD.uX1 R.a.ZXq.x WX> MX,.9.E.@ b 0 . . 2 0Xn..X6 ^XC HXUXwX5XxXx.$.R 5.R ( 5.$ QX9.R 5.&XtXtXt.r.r N ) q D q I.A 5 : 5 qXg NXzXz.b.bXz _Xz _Xz.b.b.b.^.k.kX9 q.5XM.KXk.u.rX*X*X-.8.u ~.`.8.r.r.rXj.k.^.^.b.^Xz _.oXzXz.^Xj.r e.r e.^XkXjXj.rXt.^.b.bXz.V.c.V.c.V.c.c.V.c.c.c.c.#. . i. .U.c.c.U.c.c.o.cXg.c.o.oXzXzXz.o.V.o.V.o.VXg.c.c _Xz.^ e e.oXg.#.c.oXz.o.V.c.c.c.V.c.c.c.c.c.c.c.c.V.c.c.c.VXz.o.c.c.cXg.#XgXgXg.f.6.t.6.fX .&X&.& f.Q qXz.o F.#. .U.c.U.c.U.U. . i.6Xg.XXg././X Xk.r.k.r.r ~.r.b.^.^.^.^XgXd",
+".^ lXzXz N.^.c.bXz.b.b.b.cXg.^.bXzXg.oXk.b.b.b.o.UXg _.b.bXgXkXkXt ~.8.`.lX3XM # h U h.ZX,XcXl aX5.} $ 3 h : c.l 1 k.,X<X0Xr.; & H H._Xb p .X4 .X>.E.w.w R B.e B t.eXD a 3X,X,.eXIX, $ a 3XDX- 3 R R.e.~ 3.u $ TXlXKXlXcXK `X1 aX-X- aXI R 3X-.e.eXD.e a R.e.e a.e.e.aXI.a aXI.aX,.e.~.~.a RX-XDXD.ZX,.M R t.M.w.w gXD.] ).R.XX d.I X AX@.o.o.^.o.c.cXgXg.V.#.o.c.c.c.c.c.c.c.c.c.cXg.c.c.c.c.c.c.c.c.c.c.c.cXg.o.cXg lXz.bXzXzXz.b.b.b.^.^Xt e.r.rXtXt.r N NX*.rXt.r.rXt.rXtXt N N.b.bXzXzXzXzXzXzXzXzXzXz.^.^Xz.b.b.o.VXgXg.V.o.o.o.o.oXg.V.o.V.oXgXg.VXg.VXg.o.VXg.VXgXgXg.V.o.VXg.o.^.^.b N.b.b.XXd.rXd.r.r.8 ~.8.H B.5.n.Z.aXD R.aX-X- 3 aX-.e.aX- cXD c c.}X,.w s sXP y 9.9 9Xw y.-X7.gXq.F xXMXqXBXB.-XB.l U.-.-.a 1.e.` R.Z._.jXn.x.h.j.uXl.jXC J JXi %Xi o w H.;.; HXm g g.kXJXx.R.$.|.| 5Xk.R.& 5.z q.A.^XtXjXtXjX9.$.$ ) :.K.5.5.kX9.XXx l l.oXzXz.bXz _Xz _XzXz N N.X.$ qXxX9 ).5XMXXX9 cX*.`.8.`X-.` ~ ~.r eXdXz.b.b.b.b.bXz.oXj e e e.r e ~Xj NXkXtXt.r eXz.bXz.bXg.c.c.c.c.c.c.V.c.V.c.c.#. i i. .U.c.U.U.c.c.o.c.c.c.b _ _ _.bXg.V.cXg.V.b.V.o.b.b.b e e e.bXg. .c.b _.V.c.c.c.V.c.V.c.c.c.c.c.c.V.oXg.cXg.o _Xg.V.c.c.c.I.oXgXgXk.z N.b.XXkXk NXx.X N NXzXj.^.o.o.cXg.c.V.c.c.cXu. .#.U.U.UXu.f.rXj.kXt.r ~Xt e e.^.^.b.bXj.o",
+"Xg.tXk.b.b N.6.I.b.oXzXg i.IXz.b.^. .b.I.^.b.b. ./.c _.bXz.oXkXk.^Xt.8.8.` V 1.i h $.aX,X,.ZXlXlXDXI.ZX,.a.a 1.lXc.[.g.j.jXp HX>.@ p.)Xe._..XbX>.jXL.Z 8 B R a aX-.aXDX, T :Xl : :XcXl : ` $X- 3X-X-X-XDX- a.u cXMX5 1 c x.aX-.~ a.~ 3X-XDX-X-X- 3 aX- a R.e RX-.a.e.a.a.aXDXIXIX- R R R R RX,XD $X,.a.M t.Z.w 9 TX1XV.r eXd.^XoXz.z.b.b.^.b.oXz.o.c.V.cXg. .c.U.c.c.c.c.c.c.c.cXgXg.c.c.c.c.c.c.c.c.c.cXgXg.cXgXgXg.cXz _XzXz.^Xz.bXz.b.^.k.rX*.r.rXt.r.XXgXgXt.rXtXt.rXtXtXtXg.oXz.^.bXzXzXzXz _XzXz.bXzXzXzXz.b.oXgXg.o.o.oXg.o.o.o.o.o.oXgXg.o.o.o.o.oXg.V.o.o.VXgXgXg.o.VXgXgXg.oXzXz.b.^Xz.b.oXd.H.rXt.rXt ~.`.HXD '.n 8X, $X,.ZX-.ZXDX,X5 3XDXDXK.ZXDX5X-X-XD '.w.n.nXL s b yXqXnXq.[X7 1XpX7.SX%X7X<.S [X% kXhX#.,Xc.]Xc.[ [ M.<.@.jXw.DXV &.> &.jX>X>.E &XrX0 y J b O gXJX1.H.u NXV.k.r : I ~X5.r.K.k.kXt.rXt.r.rX*.5 ).KXxX3XJ D q.RXoXzXz.bXz _ _Xz _XzXzXz.bXz.b N.o./.f.&.f.f.f q qXX q ).8 ~X- F.` F.rXjXdXz.b.b.bXjXz.oXz.Q.UXg ~ eXt e.r N.bXg eXt e eXz.bXz.o.V.V.V.V.c.c.c.V.c.c.c.V.V.c.c.V.c.V.c.U.U.c.cXg.c.o.oXzXzXz.b.o.cXg.cXg _Xz _Xg.oXzXz e.I i.#.o.#.cXz _.c.c.c.c.V.V.c.V.c.c.VXg.V _Xz _Xg.V.oXzXg.o.VXz.b.c.b.oXgXkXu.z./X@X@././ q./.IXk N.bXg.c.c.c.c.V.V _.V.VXu.#.c.cXk.cXkXgXk.o.X.^.^.^ e.r.r e e eXj.^Xj",
+"Xg d.oXz.bXz./.UXz.o.bXg. .#Xz.b _.U. .#.o.^.oXk.oXz.^.b.b.o.o.I N.r ~XVX-XX VXM.l $ hXK k $X,XlX- 3 3X,XIXD.M $.lXM XpXrX+ ^ . %Xn h u.W p...@ w 0.wXsX- aX- R.eX-XI cXDX5 c.u $ cXD $ c.} R RXI.e.~X,.eX-X- a.eXDX-.eX-.e a.eX- aXIX- c.e.~X- 3.~ a.e.a aX- aX-X-.a RXIX-XI.aX- R R.a RXDXD R.D.M R.a.MXaXaXKX5.H.k.rXt.^.X _XoXz.b.b N.b.b.b.b.cXg.U.o. _XgXg.cXg.c.c.c.c.V.c.cXg.c _.cXg.U.o.cXg.c.cXgXg.c.o.b.c.b.b.bXzXz.bXz.^.b.^.k e.r.r.rXt.r.r.r.r.r.rXtXtXt.r.r.^Xg.XXzXz.bXzXzXzXzXzXzXzXzXzXz.bXz.b.o.V.o.VXg.VXg.o.oXg _Xg.V.o.o.oXg.V.VXg.VXgXg.V.o.c.V.V.c.o.c.o.c.o.^.^.bXz.b.bXoXd.r.r.rXt.k.`.8.HX1X5.'.DX.XKX,.9 mXc.e gX,.Z.~.2 : 1 R.,.e.~.wXyXs.nXa 1XL x.jXq E E.F.p.[.p.-.g [.SX<X<Xr >.O.g.9XKXlXK `XcXpX%.J.@XpXK.DXIXU.> g.q.; &Xr.j o o v sXaXyXOXU.`.8Xt c.k cXx P ,.KX*.u.r.r.k.r e.rXt.r ~.rX9 `X3Xo.KXoX*.^ N.b.bXz _XzXzXzXz _Xz _Xz.b.bXz.b.b.X.XX9.XX9X9.^X*X*X*.8 ~.8 F.8.r eXj.^XzXzXz eXjXzXzXz.c.U.o eXd.r.r.k.b.X N.r e.rXj.b.bXz.V.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.V.#.c.c.V.c.o _Xz _ _Xz.b.c.V.c.c.V.b _ _.c.o NXj eXj.#XkXg.#.bXz.VXg.c.c.c.c.c.c.V.c.c.c.V.bXzXz _ _Xz.bXz.c.VXz.bXgXg.b.b N l.z q./.$.I.$./.& q.t q.oXg.U.o.o.VXg.V.VXz _Xz. .cXg.cXgXu.U.oXg.b _.c.U.VXg.c _XzXj e e e e",
+"Xz.I NXzXz N.cXg.b.b.^.bXg.bXz.bXz.bXz.^ N.b.bXz.b.o.o _.o.b N.IX@.^.r.8.8.a `X3XB #.-.- x 1.Z x 3 3XDXl CX,.D.aXM.l.l XpXrXnXbXb.d.*X, tXe.) L.; J.s.s.Z $.aX-X1X-X- BXI 3 B 3 a RX-.a.a a a a 3X-X- 3X-X-.~ RX-.u a.*.eX-X-X-X- R 3.~ c.e aX-XDXDXDX- a.e.e R a.a RXIX- aXIXI.e `.' aXlXDX,XDXD ` c x.n.w 'XJX1.u ~XjXd.b.^.^ _ N.b.b.b.oXz.o.b.b.o.cXg. .U.c.#.#.c.c.c.U.6. .c.c.c.c iXgXg.V.V.6 i.U.c.c.U.o.c _.6.b.bXzXzXzXz.b.^.b.^Xj.rXt eXtXtXt.r.r.r.rXtXtXt.r eXt N.o.b.^XzXzXz.bXzXzXz.bXzXzXz.^.bXz.b.oXgXgXg.oXg.VXg.oXg.o.cXg.o.c.c.o.cXg _.o.VXgXg.o.o.c.cXg.c.o.b.c.b.bXzXzXz N.bXg.r.r.r.kX*.r.r.H FXaX5.n $ TXJXD :X,XK RXlXJ.w.e.9 :XD.D DX5X-.0.] sXDXlXs.w v.jXG.W E.mXqXq .FXBXB.Y.p.[ ._X7.9 U $.e R.M.M._Xn...@.T g.HXVX; g.! gX0 o.9 o.'Xm.nXaXaXy 4.G.2., 5 I 5 I q.5 qX-.8.`.8XtXt.rXt.rXt.r.r.u c 3XlX1 cX*Xt.k.b _XzXz _Xz.bXz.bXz.bXz.bXzXzXzXz.b.b.b.b.b.b N.k.r.r.k ~ F.8.`.r.r.r eXz _XzXz e.^.b _.^Xz.^ e e.r e.k.b N.^.^ e.r eXjXz.b.b.V.V.c.V.c.c.c.c.V.c.c.c.c.c.c.c.c.c.cXg.#.c.c.o _ _XzXzXzXz _ _.cXg.c.c.oXz _Xz.c.^.bXz e eXz.V.c.U _Xz.V.V.c.c.c.c.V.c.U.V.c.V.oXz _ _Xj.bXz _Xg.V l _XzXgXg.^Xz.XXj.X N.^.b N.^.k N.^ N N.o.oXg _.o.V.V.V _Xz _.^.U.^.b.o.o.IXz e e _ i.U.c.c.V.U.c.U.V.V _.oXg",
+" NXg.b NXz.b.^.b.bXz.b.b.^Xz.b.bXz.b.b.b.b N.o.oXz.bXzXz.b.b.b.z.A dX .AXX |.5XZ } XM $X,.MX, $ cXI cX5.*.D.M x h c.}.iXBXq.j.< .X6 t.*X, B.Z.s 0.;.4.@XGXK.W 1X,XD BX- R.eXDX,XI R R.aXDX- aX-X-X1X- a RX-X-X- aX- a 3X- aX- t a RXI 3 R $.~ R R 3 T ` : $X5 c cX-.a R 3.eX- R 3 aXK.KXH.,XwXJ.- 1X..OXcXy s T.0.8X*XtXt.b.bXzXz.XXz.^.b.^.b.bXz.b.b.cXgXg.#.c.cXuXu.U.c.c.UXu i.c.V.c.UX&.U.c.U _. . _.V.c.#Xg.#.b d.oXzXz _XzXz.bXz.^XjXt.r.r.r.r.r e.rXt.r e.rXt.rXt.rXt.^.X.o.^.b.bXzXzXzXzXzXzXzXzXzXzXz.^.b.c.cXg.o.VXg.o.o.o.V.o.cXg.o.o _.VXgXgXg.c.c.V.o.V.V.o.VXg.V.o.c.U.bXzXz.zX&.b.X.X.rXoXt.k ~ ).u.HX1 TX5.w B.* a.* R 8X,XDX,.e R.e BX- RX1 R RX-.DXaXa.n s.wXe v HXn p E U E E h EXq X+.p.-X%X% WX+XeX, UXD x.1.g._Xf.@ yX,X1 (XyXwXyXPXy n s.9 'XD 8 BXa.]XO.|.u.u.kX9X9.5.5.u.`X5XI )X-.kXtXt eXt e.r.u.rXI 3XJ RX5.8.rXtXz.bXz _XzXz _Xz.b.b.b _Xz _XzXzXzXzXzXz.bXzXz.b N.kXt ~.r.kXk N.r e eXj.bXzXj eXz.^XzXz _.oXz.^XjXjXj N.b.k.^XtXt.r e.^XzXz _.c.c.c.c.c.c.V.c.c.c.c.c.c.cXg.c.c.U.c.c. .V.c.oXzXzXzXzXz _.bXg.c.c.cXg _XzXz _Xg.o.o.^ ~ e.^Xg l.cXzXzXg.c.c.c.V.c.c.c.c.c.V.o _Xz _Xj e.cXg.bXg l.V l.Q l.oXgXx.^.XXxXo.X.X.b N.oX9.^.b.b.cXgXgXz _ _.o _XzXz _Xz.z.b.b.^ e.^ eXj ~Xz. _Xz.V.#. .#.U.c.U.#.#.U",
+".b.o.o.bXz.o.^.b.bXz N.oXz.b.b.^ _.b.o.b.b.b.b.bXz.o.#. .b.b.b.c.tX@ q.zXx 5 c YX#Xl.lX,X,X,.Z h :.}.Z $ R.DXDX,X, h.}.} xXBXr.C.J 8 B.H.~ C.WXb ^.@XCX0 = M nXwXcXKXc.9XK R.DX, R RXDX- a.MX- RX-XDX- 3.e a.~ aX-.~.aXI aX-.eX-.~X,XDXI 3.e.e B a c $ :X5 :Xl $XIX-XI RX-X-X1X, a xX,.Z xX, x.Z.wXJ.0 gXUXPXU.`X* ~ eXd.X.^.XXz.bXg.^.b.o.^.o.b.b.o.b.UXg.6.c.c i i.U.c.c.c. .6.c.U.o. .#. .V.V.c i i.UXg.c.U.VXg _ i.z _Xz.^.bXzXz.b.^ e.r eXtXtXtXtXt.r e.rXt.r.r.r.r eXt.^Xg.XXzXzXzXz.bXzXzXzXzXz.bXzXzXzXz.b.o.cXg.oXgXg.o.V.oXg.oXg.o.V.cXg.c.b.c.c.o.VXg.c.cXg.o.VXg.c.c.V.bXz.bXz.zX&.t ZX@ A.A 5 5 f.R ].0 ]XO $X, t RXDXlXlXDX,XI.Z.~.eXDX1.*.eXI.a BXD.w.Z 9XG.9XGXG.Y HXe U E U.d h.W h E.i 1XqX7.y.TX<.1.YXp xXq t nXp.. J ^.j !.H DXy g ( '.0Xl.Z.Z B RX1X1.D ' (XU.H.8X* 3 :X9X9.k #XV.5 #X*.8.rXt.rXj.r.rXV.8.} T xXlXD.rX*Xt.^ _XzXz _.bXzXzXzXzXzXz.bXzXzXz _ _ _XzXz.b.b.bXj.r.rXt ~.`.XXgXt.r e.^.^.^ e.^.bXz.^.^Xz.bXz.o.^.b N N.^Xt.^Xj e eXjXz.b.b.V.c.V.c.c.V.c.c.c.c.c.c.c.c.c.V.c.c.c _Xz.# _ _XzXzXz.b _XzXz.o.c.c.c.c.cXzXzXz _ _XzXzXj e eXz.c.cXg _.b.V.c.c.c.c.c.c.c.c.V _Xz _XzXz F e l.6.6X X .Q. X X&X .t./X@ AXk.I.&.RX@X@.t.6.oXg.o.o.c.cXz _Xz.b _XzXz.b.b.X eXjXj e e eXz eXz.c _Xz _.V i i.V.V.V i.#.c",
+"Xz.o.X.^Xz.bXz.b.bXzXzXz N.b.bXz _XzXzXz.b.b.b.^.b.o.I i.oXz.bXk.o NXtXt.u.`X- 3 V XM c.}.M 3 $ $ $ R TXcXD.ZXD x.u h hXM.FXB W.{.. u B.D.~ B.N.)Xn.s.j.>Xr.q = &.Y.E yXKXG RX,.W $XsX5Xl RX-.e BX-X1.eXV R aX-X-.e.a aX-X- B.a R.e 3X,XD.}X-X-X-.eXD aXI.e a.e R B R 3X- RX-XI 3.e., c 1XKXw.,.9.9 k TXUXP (X5Xx.R.K.k./.^Xg.bXg.6.b.oXk.o.I NXg.#Xg.IXg. .Q.cXg.U.U.c.V.c.o.c.c.c.o.c.VXg.c _.U.c.V.V.c.c.c.c l _.b.oXzXz.b _XzXzXz.^.^ e.rXt.rXt.r.r.r.rXt.rXt.rXt.r e.rXt.^.X.b.b NXz.^.bXzXzXz.b.b.b.b.b.^Xz.b.b.oXg.V.o.VXgXg.o.c _XgXgXg _.U _.V.V.o _.U _.V.V.V.VXg.V.c.V.o.cXz.^Xz l.zXgXxXx.^ ].X.XXoXoX5 (XOX5Xa R aX-XI T.,XJ :XlXK x D : TX5 $X,X1.e.DXLXmXU.qXw H y y.j vXs U t.M t < t UXe XqXh WX<Xh.y kX<.YXH UXB.mXnXf.s yXc B T.O ! !.D.D cXIXD.u R BX1.Z ' T.]X-.8X*.r q.| I 5., 5., 5 I.5.rX* e.rXt.rXtXIX, x s.'XlX-.rXtXj.bXzXzXzXzXzXzXzXzXzXzXz _Xz _ _XzXzXz _.bXzXzXj.^.rXj F FXt ~Xt e.r eXj.^.^XzXzXj.rXj.b.o.b.^Xz N.bXj.r.r.b eXtXjXz.b.b.V.c.c.V.c.c.c.c.c.c.c.c.c.c.c.c.V.c.c _XzXz.UXzXz _ _ _.o.V _ _.o.c.c.cXg.oXz _ _XzXz.bXzXj e e.oXg.U.o.b.V.c.c.c.c.c.c.V.c.U.VXzXz _XzXz e ~ e.b.o.U.c.z.I.z./XkXg.XXkX@.o N lXk l.Q.I.#.oXg.V.oXg _.bXzXz.b _.bXz.b.b.^ eXj eXj e.^Xj eXjXz.bXzXz _.U.#.V.c.V. .#.V",
+".^.oXg.bXz.b.b.^Xz.b.bXz.bXzXz.bXz.b.b.b.bXz N.o.oXz.oXz.o.^.oXg N.X.X A F.u ~XIX*., `Xc.M $.MXl sXh a m.,.a $X, U $ h `XBXB W.< % tXI F.~ R <Xe U._.W.jXw M ^ M =Xh.+.j =XL.W.w.ZXD $ $XDX5X,.u $ 3.a.a.a.~X- aX-.eX,X,X-.e.e.e R aXIX1X1.eX-.e aXDX1 RX-.e a.e.e R RX-X- RXD aXDX-.aXD hX,.a tXD '.nXPX5X1.uXx.R.I./ l AXg.t.U i./.U.bXg.#./.I.I.z.6 i.Q.I.c.c.V.c.cXg.c.VXg.c.c.c.c.c.V.c.c _.U.c.cXg.o.cXg _Xz _ lXz _XzXzXzXz.b.b.^ e e.rXtXj.rXtXt NXg )XdXt.r.r.rXt e NXg.XXzXzXzXz.bXz.bXzXzXzXz.bXzXzXzXzXz.o.oXg.o.o.oXg.VXg.b.V.V.c.c _ _X .o.cXu i.U.c. .6.c.U i. Xg.U.UXz.b.I.IXzXo.X.^.rXtXVXt.uXVXxXPX5Xa.*XD.aX-XD.aXDXIXIXIX-X-X1XD 3XD RX, R.M.Z.w y 9Xe.WXe._.NXGXeXK x.YXK nXK $.9 h h U x.F.Y.FXp.Y.- t.MXq U .X+ 0.. b.GX5.]Xw.j.] '.5 RXI a R.D B.].Z : g.0.~XI ~XV.rX9 ) ) :XXXMXM :.K ~Xt e.r.rXt 3.HXqXGXL.'XlX-.rXtXj.bXz.b _Xz.b.^Xz.bXzXz _XzXzXzXzXzXzXz.bXzXzXz.r.^.r ~ FX9Xg.^.rXtXtXtXj.bXzXj.r eXjXz.bXz.bXz.^ eXtXt e.r.b e eXz.b.b _.c.c.V.c.V.c.c.c.V.c.V.c.c.c.c.V.c.c.VXz _ _XgXz.o.c.o.V.c.c.o _ _.o.o.o.b _Xz.b.bXz.b.b.^Xj.^XjXg.b.# _.VXg.c.c.V.V.U.V.c.c.c _XzXz.b.b.b.o.b.b.o.bXg.c.U. .IXu. q.I./.I././.oXzXz.o.V.c.c _.b.c.o _Xz.b.bXzXzXjXj.^Xg.bXzXz.^XjXj.b.^ e.^XzXzXz.b.o.o.VXgXgXg.cXg.o",
+".^.bXgXz.bXzXzXz.^.b.b.b.bXzXz.b.b.bXz.b N.b.bXzXz.b.VXz.o.o.b.oXg NXx ,.R I I D ` |.3 |X<Xc [ xXc.ZXc Y kX5 c <.uX,X,.W.-.-.- [.<XA t.Z.~.`.~ <.e U.e.a._.n..Xb 0Xi ^X>.;.q yXG x sX, RXD BX-.e.e RX-X1.~XI.a a.~X- aXX.]XMXl 1Xl TXl T 1 :.ZXV 3X-X-X- R 3X1X- R aX-.eX-X-X1 3.aX- tXDXD.Z hXDX,.Z.!.n g '.HXV.rXj.r.^ N.^.oXd.oXz.^Xz.b.b.^Xz.b.bXz.bXk.o.# l.UXg.c.c.c.c.c.c.c.cXg.c.U.c.V.U.c.c.o.V.cXg.V.V.b.o.b lXz.bXz _Xz _Xz.b.^.^XjXtXtXt.r.r e NXg.zXtXt.r.r.r e.r.^.b.b.^Xj.^Xz.bXzXzXzXz.bXz.bXzXz.bXzXz.bXg.VXg.VXg.V.o.o.oXgXgXg.o.U _.I.c.V.U. .U.V. .6.V.c. .#.o.U.I.o.b l.UXz NXdXd.r.rX*Xt.r.D ( '.nX1XDX,.a.a 3X- 3 3.~.aXD RXI cXI.}XI 3.a t.wXL y.EXe U._ E U xXB 1 s cX, 8 a t $ t.M.i U U.p.iXrXqXw x ._Xe...j.J bXC.jXlXlXwXw g.]X1 3XI.aXDX- R.,.2XOXU.0 B.H.8.r.r.5.KXX VX3XJXXXX.$X*Xt e.rXt.r.HX5 xXL v o sX1.8XtXtXz.b.b.b.b.b.bXz.bXz.bXzXz _XzXzXz _Xz.bXz NXz.r.^.r ~.`.r ~X*.r.rXtXj N NXj eXt eXj.b.b.b.^XjXj.r e.rXt e.X.r.^.b.bXz _Xg.V.c.c.c.c.V.c.c.V.c.c.c.c.c.V.c.c.VXz _.o.VXzXg.c.o.c.c.V _Xz _ _ _.bXzXz _.b _.^.b.^.^.b.#.I lXg.I _Xg.c.V.c.c.c.c.c.c.c.c _ _ _ _XzXzXzXz.bXg.b.cXkXg.c.I.IXg N.^.^.^.bXz.^.o _Xg.c.c.cXzXz.V _.VXzXzXz.^Xj.r.rXj.cXz.^Xz.b.b.oXz N.bXg.cXgXg.cXg.cXgXgXgXg.o.c.c",
+"Xt eXg.^ N.b.^.b.b.^XzXzXzXz.bXzXzXz.b.b.bXz.b.b.b.bXz.o.^.#XkXgXg NXg q.RXk ).KX* # k V :.i.M R R.W $ 1 3 3 :XK DXlX, hXcX3 [X<X2.. uX,XI 3X- a <.}.eX-X-.w u.)XbXb.s ^ ^ ^X>.j o v.Z 8X1X-.~ RX-.eX-XI aX-XIX-.~X-.~ cX, :X, :XlXl `., ' : `.aXD.eXI RX-.aXIX-X- BX-X- R RX- 3 aX-.a.a.aX,X,XD UXDXKXaXP.D.8X*Xt.r.k.b.b.X.^.X.b.^.b.o.b.b N.b N.bXz.o.oXg.#.U.c.c.cXg.c.U.V.c.V.c.V. iXu. Xu.#.c.c.c.V.cXgXg.V.oXz lXzXz _XzXzXzXz.bXz N.^ N.^.^XzXtXt.r.r.r.r.r.r e.r.r.rXtXjXj.r eXj.^.b.^.bXzXzXzXzXzXz _XzXzXz.o.cXgXgXgXg.o.o.o.V.c.c.VXg.o.c.VXg.c.V.c.V.c.o.V.c.c _.o.c.o.o.^XzXz.bXoXz.k.^.rXt.r.r.uXo g.D.n 8XD.aXIX-.aX-.`X-.aX-X-X-.aX,.aXDX- $ a.MXeXL yXpXe.i <.} a t.e.e.eX1 B RX-X-XI t.e t U E.-Xp M [.1 M n [ M.h =Xh.+.OXU.O.w y HXU T.u.`.a.a.~.MX1X,.'XlXP.0.~.8XVXtXt.rX*X*.u.u.uX*.uXVXt.r.r eXt.rXV.'Xp 2.s b g aX*Xt e.^XzXzXzXz.b.bXzXzXz _Xz _Xz _ _.b.b.b.bXzXz NXj.k.8 F.`Xt.r.rXjXt.rXj.^Xt eXt eXt.^.b.bXz.^ e e eXtXt eXtXk e.^.bXzXz.b _.V.c.c.c.c.c.c.c.c.c.c.c.c.V.c.c.c _XzXz.oXgXg.c.c.c.c.c.o _Xz _.b.b.oXz.bXz.^Xj e.^.b e ~Xg.I.cXg.c.bXgXg.c.c.c.c.c.c.c.c.c.V _.bXzXz _.bXzXg.c.bXg.V.c.c.I.#.U.b.b.b.b.b.b _Xz _.c.c.c.V.V _ _.c.o.bXzXj.r eXjXj.^.U _.o.o.o.b.c.b.bXg.cXg.o.cXgXg.o.c.c.c.o.V.c.c",
+" e ~.b.k.bXz N.b.bXz.^.bXz.bXz.bXzXz.b.bXz.b.bXz.b.b.bXzXg.z.I.UXgXz.b.bXg.X.rXt ~.` V :XMX, < t <XD.Z.MX,XD T.] ` :X.XwXHX<.h.T.pX4 UX,X1 cX-X-X-XIXIX-X- 1 t t G.) p 2.s %XiXf.;.E.Z $X1.~ R.e a a.eXDX-X-.`X-X-.eX-X-X-.eX-.eX-XI.uXI.e.a R a.~XIXI.eX- RX, R B.eX-.aX-X-XIXI aX- a R.a UX, hX,XDXP.n.] '.HXVXt.r.^.X.b.bXz.b.bXz.bXz.bXz.b.bXz.o.b.bXz.o.z.UXg.c.V.c.c.c.U.c.c.V.c.U.U.#.#.#.U.V.U.VXg.c.V.cXg.oXz.cXz.b _.bXzXzXzXz.b.b.^ N N.^.K.rXtXtXt e.rXt.r.r.rXt.rXt.k.k eXt eXj.^.bXz.^Xz _XzXz _Xz _XzXz.V.o.V.o.oXg.o.oXg.oXgXg.VXgXgXg.c.VXg.oXg.V.c.c.VXg.VXg.c.o.cXz.oXz.^ NXz NXd.^Xt e.rXt.r 'XPX5Xa BX,X1X-XI.aX- 3 a RX-X-.aX-.aX,XI t cX- t $._.j.@Xe U h <.e R a.~.aX-XDX,XDXD R.~ B a $ kXB.Y.YXp.p vXn =.j &X0.>.>.+.E.OX0 9XC !.n 'XD 3.D D 3XD B.Z.'Xc TXl.u.K.8X*X*.K.K.uXdXd.rXtXt.u.r.k.r.rXt.HXc.s.s 0 bXKX1.r.rXt.^Xz.bXz _.bXzXzXzXz.bXzXz _XzXz _XzXz.b.b.b NX*.5.8.8X-XxXk.rXtXt e.r.r e.r eXjXjXz.o.b.# N ~ eXj ~Xj.rXj.U.rXz _.bXz _.V.c.c.V.c.U.c.c.c.U.c.c.c.c.cXg.c.c _ _Xz.U.cXg.UXg.c.o _XzXz.b.b _.b.b.b.^.^ eXt.rXt.^.r ~XjXzXg.c.c.V.c.cXg.c.c.c.c.V.c.c.c.V.V.b _.bXz.bXz.o.c.b.c.c.c.c. .U.U _.bXz.b.b.bXz.V.c.c.V.#.c.V.c.c.o.c.bXzXj eXj.r e.b.IXg.cXgXgXg.U.c.c.c.cXgXgXgXg.VXgXgXg.c.c.c.c.c",
+".r.r N.k.b NXz N.b.bXzXzXzXzXz.b N.bXz.b.b.bXz.bXz.bXz.^Xz.o.oXz.#Xz.^.b.X.b NXkX9.5 I V | #.} < a hX,.MX,XDX1 $.] ' :XlXB k.- r W.x.NXeX-.`.e R.~ R 3.~.~XI R <.* t *XeXb -.B {.;.EXa.D.` RX-.a aX- a aX1 3.~ 3.`X-.~XIX-X-X-X- 3 RX1 3 a.` R.~XDX-.e a a.a 3 aX- RX-.aX-X-X1 3.~X-X- a R R.a.M.M B.'X5 g.Z.K )Xt.k.X.^.b.^.b.bXz.b.b.b.b.b.b.b.b.b.b.b.b.b.U.U.c.c.c.U.#.c.V.c.c.c.#.V.c.U.V. .U _.c.c.U.c.c.c. .Q.o lXz _Xz.bXzXzXz.b.b.^.kXjXtXtXj ~XtXt.rXt.r.rXt.r.rXt.rXt.kXd.r e.r.^XzXz N.b.^XzXz.bXzXzXzXz _.o.c.b.c.oXg.V.oXg.o.cXgXg.V.V.o.oXg.VXg.c.V.cXg.o.V.cXg.c.c.o.o.^Xz.^.b.^ N.^.k.r.r.kXt.H.XXP.D.D R R R.KX-.e.~XIX-.eX- RX-.a R.Z R.~.Z.a R $XL yXpXe E h t t.eXIX-XI 1.-XJ RX- RX- a R aXwXB._.FXpX+X+X>X0XU yXm y.+ &X0.j oXC J.>.'.n.Z 3XcXl T R 8XD '.].2 D.2 D.f q.$ 5 D.I F.r eXt.r.rX* ~XtXtX-Xl.'.s.... o.!X-.rXt.r.^.bXzXzXz _Xz _.b _ _Xz _XzXz.bXz _.^.bXzXz NX* #.8.8.8.5 N.r.r.rXtXj.^Xt e.r e.b.^.b.o iXu.^Xt e ~Xt.r.k.cXj.^ _XzXz.o.V.c.c.c.c.c.c.c.c.c.c.c.c.c.c.cXg.o _.b.b.U.c.c.c.c.o _ _Xz _.o _.b.bXz.^ e eXt e.rXtXt ~ e.^.b.VXz.cXg.c.c.c.c.c.c.c.V.c.c.c.c _ _ _.bXz.bXz.o.VXz.V.c.c.c. .#.U.b.b _XzXzXz _.V.c.V.c.c.c.V.c.c.VXg.o.o.^Xj e eXj.X.#.V.c.V.c.c.cXg.VXgXg.c.V.cXgXg.V.c.cXg.c.c.c.c",
+".r e.bXz NXz NXz.bXzXzXzXz NXzXzXz.b.b.b.b.b.b N.b.b.b.b.bXz NXzXkXz.b.b.b.b NXk 5X9 }.,.,XX h.a.a hXDXDXD $XD.D.ZXD RX,XK.[ .1XrX4 U hX1X-X1X-.a.eXI R 3XK 3X,XD U 8._ C.PXAXi.4.;Xa.wXDX- B a aX- RX-XI RX-X-X-X-.}XI.e R aXIXI.eX-XI.~ R R.~XD.e R.~X-.aX,.eX- RXDXI R R RX-X-.e RX- R RX,XD R.aXGXaXU : (.$ 5 (X .z./.I.b.b.b.bXz.b.b.b.b.b.b.b.b.oXz.b.c.UXg.U.V.#Xu. .V.c.V. Xu.V.c.c.c i. .V.c.c.I.U.c lXu i.c lXzXz.bXzXz.b.bXz.^.k.r eXtXtXtXtXtXt ~Xt e.r.rXtXt.r.rXtXt.kXt e.r.^XzXzXz.bXz.^.b.bXz.bXz.oXz.c.bXgXg.cXgXg.oXg _XgXg.cXgXg.V.o.oXg.V.o.V.o.VXg.VXgXg.V.o.c.o.^.bXgXgXx NXV.^Xd.5Xt.u.H g.'.w sXl $XlX.XKXcXK `XcXK `.*.a.eX-XDX- RXVX1X1.w.nXmXpXe h h a.a.u T :XK #XcX-.e RX-.e R a t E xXeXr M &Xr y.9.!XG s vXU = & = & & b.>.0.' R.a.e `.e R R.D.9.0.O 'X5 qXJ.$ ).$ ).R.rXd eXt.r.k ~X*X*.8.5XUXpX>.@ 0XG.9 BXtXt e N.bXzXzXz.bXzXzXzXzXz _Xz.o.bXz.b.X NXk.fX9.$.$ qX9.5X- F.rXt e.r e.^.bXj eXjXz.b.oXz _.c _.o.^.r e.r e.^X9.^ _XzXz _.V.c.c.VXg.c.c.c.c.c.c.c.c.V.c.c.c _Xz _ _ _.#Xg.c.V _ _XzXz _.b.b _ _.b.^ e e.r ~ ~ e.r e F.rXj.oXg.b.V.c.c.c.U.c.c.c.c.V.U.c.c.c.o _.b _.b _.b.oXg _.c.V.c.c i.c.# _.o.o _.b _.V.c.c.c.#.#.V.V.c.cXgXg.V.bXz.^ e e.^.c.U.V.cXg.c.c.c.b _.b.o.cXg.cXg.c.VXgXg.VXgXg.c.c",
+"XtXj.X.XXzXzXzXz.b.b.bXz.bXzXz.b.bXz.bXz.bXz.bXz.bXz.b.b.b.bXz.b.c.bXzXz.^.o.X.bXtX*.` : V.5XM #.} h hX,.M.9 x hXlXD.a #XKXBXw.gX2...W.W.aX1XDX- aXIXDXIXD c.9XlXKXlXcXp n W ^Xi.CX0.W.Z 8X-.M RX-.e.aX1X-.eXI aXIXIX-.~.a aXIX-X-X-XIX-X-X-.aX-XDX-.e a.e 3 R.e RXDXD.e R.a.uX-.a.eX- a a RX,XDX, R.'X5XUXPXx D.z.R 5.t.6XuXzXz.b.b.b.b.bXz.b.b.b.b.b.b.b.bXg.UXg.cXg.#Xu. .c.c.c. Xu.#.c.UXg i i.c.o.V. .#.c.o. .QXg.UXz.bXzXzXz.b.bXz.^ e.r.r.rXt.rXt.r.r e.r.r.r.rXt.rXt.r.rXj.kXt eXj.^ NXz.^Xz.b.b.bXz.^.b NXz N.bXg.oXg.o.o.o.oXg _XgXgXg.o.VXgXg.VXg.o.VXg.V.o.V.VXg.c.oXg.c.o.^.o.oX&.&.$.$.& ) I q ( :XUXa.n.W s x 1 Xl T.w $., sXl R R aX-XD.H.e 3 BX1.w.n y JXe h E a.}XK ` c 3 a.M.e.K :., a.e t.}.W EXnXrXrX+ 1 sXG v.w.n.n 9.9 & &XG b J !XG.9X, RXD.e 8 R.D.0 g.2.]X1.H.H.r.`.5Xd.u.H.r eXt.rXtX*.rX*.8XI.- x v.) % 0XL.]XI ~Xt.r.bXzXz.b _XzXz _ _.b _.b.b.b.b.b.^XgXkXk.$./.fX3 ) 3.8.r.kXt.r.r e.^.b.bXjXj.^.oXzXz _ _Xz.bXzXzXjXt e.r.kXg N.o.bXz _.cXg.V.V.V.c.c.c.c.c.c.c.c.c.c.c.V _XzXzXz.o.I.V.V _ _Xz.b.V.V.V.V _Xz _Xz e.r e F F.r.rXt ~ eXz _Xz.VXg.c.c.c.c.c.V.c.c.V.c.c.c.c.c.o _ _Xz _ _.V.V _.V.c.c.c i.c.#.c.VXg.V.b.V.V.c.c.#.#.c.c.c.c.c.cXgXg.b _.^ e e.b.U.U.c.V.c.cXg.V _Xz _ _.V.cXg.V.cXg.c.cXg.VXgXgXg",
+".^.^XgXg.^.b.b.b.bXzXz N.bXz.b.bXz.bXz.b.bXz.bXz.bXz NXzXz.b.bXz.U.b.^.b.b.b.b N NXt.`.8XX V #Xl : $ hX, hXw `.Z $ hXDX,.-.- [.[X>.mXe.MXDXI.e t R a R 3.uX1XVX,XDXDX, h.W ....C H H s.n RXD B.M R 3.u R R.a.eX-XDXI.aXIXIXDX- a.~XIXI aX- RX1XI.eX-.~X-.~XD aX-.aX,.aXI R.eXDX- R.~X-XI RX,X,X, cXD T.n.0 :.`XVXV.HXz.^ N.^Xz.b.b.b.b.b.b.b.b.b.b.b.b.b.bXz.o.#Xg.c.c.c.U.c.c.c.c.U.U.c.V.c.V.c.U.V.c.c l.o.c l.o.oXz lXz.b.b.b.b.b.^XjXt e.r.rXt.r.rXt.r ~.X.rXt e.r.rXt.rXt.r.k.^.rXd.^XzXz.b.b.^.b.^.^.b.o.^.^.b.bXzXgXgXgXgXg.V.o.o.oXgXg.V.o.o.VXgXg.V.cXgXg.V.c.c.VXg.VXgXg.c.cXz.^.#Xk d.f.& I ( q.$ D D @XaXLXD.D.e aX-XD a.e.* $XD.a a aX1.e RXD.e.u.e B.w.n yXGXe E $ a $.aX-.e a RXI.~X1.,XX hXB x._Xe._XG.jXw.>XU gXl.w CXLXL.!.9 & H o b o.q y.2XK xX,X,X,.wX. g KXy.| D.2 D.& (X@XJ (XtXd.r eXtXt 3X*.8Xl 1 v O.sXb.) J bXc.D ~Xt e.b NXz.bXzXzXz.b N.o.^Xj.o.b.6.6.t.X q NX9 N.K 3.K.`.8 ~ NXk.r e.^Xz.bXzXz.^ _XzXz _ _Xz _ _Xz.b.^Xt.r e.^XgXz.bXzXz _.o _Xz _.c.c.c.c.c.c.c.c.c.c.c.V.o _XzXz _.o.# _ _Xz _ _.V.c.c.c.oXz _.bXzXj e e F F.r.r e.r.rXz.oXz.V.V.c.c.c.c.c.c.c.U.V.U.U.c.c.cXgXz _Xz _.o.c.c _.c.V.V.c i.c.#.c.V.V.c.V.V.c.V.c.#.c.c.c.c.V.V.VXg.c.o.oXzXj.^Xg.z.c.c.c.cXg.b.bXzXzXzXz.oXg.c.V.cXg.cXgXg.V.c.c.c",
+"Xz.^.o.c.^XzXzXz.^Xz.bXz.bXz N.bXz.b.b.b.b.b.b.b.b.o.bXz.b.b.bXzXg.oXz.b.b.^.^.k.^.KX*.rX-X3 qXX # ` :.iXK.-.W h x UX, hX3.-.-XwX+Xn nX.Xl $XwX..a.>X,.Z.2XlXKXK $XH.* x [.N pXi.4 H b.nXsXD R.a R.Z.e.M.eXD : $XI x R $ aXD RX-X-XI.eX-.~ R.aXI R.e R.e 1 cXlXcX- R.a RXD `.ZX-.e a R 3X, cX, 3.aXI.n '.0XP.H.H.r.rXoXgXz.b.b.b.bXz.bXz.b.b.b.b.bXz.b.b.b.bXg.U.c.c.c.cXgXg.cXg.c.V _.cXg.V.c.V.cXg.V.o.c.V.o _Xz.bXz l.b.bXzXz.bXz.^Xt e.r.rXtXtXtXtXt.r.rXgXtXt.r.rXt.r.r.r e.k.^XjXj.bXzXzXzXz.bXj.b e.z qXxXg./ q.zXg.U.U.cXg.o.o.V.o.c.c.o.oXg.c.o.VXg.V.o.o.cXgXg.c.V.o.VXg.o.o.bXz.^.b.^ N.kXt.r.H.H.H T.0.nXa.D hXD RX-XI BX1.e.] 3XJ.ZX, $.Z.u.Z h $XD.*.w v yXG.w U 1X,.e.e.~.e IX1 3 3X, $XD x.S [ E.F.<Xr M.>.O Y !XH !X; =XP.> =.G.>.q v.q.>XU n m 1XDX,.DXD ' g m 4 DXx.5.f ( ( ( (XxXtXt.rXt.r 3.8.` c.9XK.EXn.; S 0X>XK.0.u ~.rXj.bXzXzXz _Xz.^Xz.X.^Xk.I.&.&.&.IXg.XXg.b N.X ~.rX9.`.`.8 ~Xt.r e.^.bXz.b.bXzXz.bXz _XzXz _.^.bXz N e e.r.b.oXz.b _XzXzXz _Xz.b.V.V.o.V.V.c.c.c.c.cXg _Xz.b _.b _Xg.UXz _Xz _.V.V.c.c.c.o _Xz.b _ e ~ e.r ~ e.r.r l.^Xz.cXz.c.o.cXg.cXg.c.V.c.c.V.c.cXg.c.c.V.o.oXz _.V.c.V _.c.c.c.c.#.U.#.U.c.c.V.V.V.c.c.c.#.c.V.c.#.U.c.V.V.cXg.o.b.b.oXg.#.c.cXg.c.o _Xz.b _XzXz.o.V.c.cXgXg.c.c.oXg.c.cXg",
+".bXzXzXgXz.^XzXzXzXzXzXzXzXzXz.b.b.bXz.b.b.b.b.bXz.bXz.b.b.b.bXzXg.bXz.b.b.^XjXt ~.k.^X* 3.8 V VXXXMX3 1.} U $ h.wX,XD hXK k 1 [XnXn.jX#.' mXDXcXqX. a.Z m.eX..2.eX..eXcXh.dXb %.@.;XaXL.DXD.wX5XDXVXDX1 : x $ x x 1 1Xc :XcX1 R.a R.e.e.~X-X1X- R.eX-X,X. DXc D.-XlXw D TXcX5 k.~X- RXIXIX1 RX- R a.Z.' T (.`.H.HXd.r N.b.^.b.^Xz N.b.b.b.b.b.b.b.b.bXz.b.b.b.UXg.c.c.c.c.c.U.V.cXg.c.c.c.V.c.c.c.c.c.c.V.bXzXz _ _Xz.U.b.bXz.b.b NXj e.rXt.rXt.r.rXt.r.r.r.^.r e.r.rXt.r.rXtXtXt.^.^.^.^.bXzXz.b.^ _ F.^.X A.zXx./.t.& X.tX .t.oXg.oXg.o.cXg.V.cXgXg.VXg.cXg.V.V.c.V.V.c.c _Xg.V.c.b.b.^.b.^.bXz.k.^.rXdXVXd gXl.n.DXaXD B.~ 3.` B.`.~ '.] TX..] 1 .9 kXJXl.M aXaXL.jXGXe U.[X, a aX-XI :X-X- B.a a.,.Y n.- >.[.gX% [ nXH.O.%X;X.XKXUX; y.q =.j.qXL H = yXcX, h.Z.M 8Xa.n.0 !XV.e.8.rX*.rXV.H.rXVXtXtX*.8.aX1XlXc s.nXG.s / ^.@ vXGXG :.u.r e.^Xz.^XzXzXzXzXz e./.$ d./.zXk.b.^Xz.X.^.b.XXt.^X* c.8.8Xt ~Xt eXj.^.bXz _ _.bXz _.bXz _ _. iXz.b.b.rXj eXg NXzXz.bXzXz _XzXz _ _Xz _Xz _.o.VXg.V.o _ _XzXz.bXz _.VXgXz _ _.c.V.c.c.c.c.V _ _.b.b.^ e.r eXt e.r e.I.z.U _Xz.c.V.cXgXg.V.c.c.c.c.c.c.c.c.c.o.o.c _Xz.o.V.c.VXz.V.c.c.#.#.#.c.c.c.c.c.V.c.c.#.#.c.#.#.#.c.#.c.c.c.V.c.o.o.oXg.c.#Xg.c.V.c.bXz _.b.b.bXz.o.V.cXg.VXg.VXg.cXgXg.c.c",
+".b.^Xz.UXz.bXzXz.bXz.b.b NXz.b.bXz.b.b.b.b.b.b.bXz.b.b.b.bXzXz.b.oXz.b.z.I.b.r eXtXt.k.K.rX* ~.K VX3 `XM 1 1 h.M h.M.}X, `X. h $.< v.1Xw.O :.S.j $.1 :XlXH.eXl $ 8X. $XKXqX+ pXb ^.; bXaXL.w.w 1.'XD RX,Xc.}Xc $ `.9 T 1 :XK 3.aXI.e R.eX-.eXD.e.aX-X- B ` c : ` s $.-.9 1Xl xXKX-X- RX-X- a RX1.}.u.'.0.0 gX1.`.`.rXtXj.^.o.^.bXzXzXzXzXz.b.b.bXz.b.b.b.b.b.b l.o.cXg.c.c.VXg.c.c.V.cXgXg.c _.c.c.c.V.cXzXzXz.bXzXz.^ l _.bXz.b N.bXj.rXtXtXt.r.rXt.r.r eXt ~.r.r e.rXt.rXtXt.rXt.X.^.bXz.bXz.bXz.bXj e.`Xd NXxXx.z.z.zXkXg _.c.VXg.o.c.oXgXg.o.o.VXg.V.U.U.c.V.c.U.c.c.U.U.V.c.cXg.#Xg.b.bXz.^.b.^XdXd.r.r.H.2.n.n.n g.'X1X- B.H B.` BX- BX-X, a R R.Z 1 aXD t.M.wXeXwXGXe EXH $ aX- a B R.~ R a VXKXc.Y.MXq.[X+ X7., k mX. !X.XUXc.'XPXm.0.q.!XGXC.>.OXmXcXsX,.DXD.w.n 'XP.2 B 3 ~Xt.r.rXtXtXtX*Xt.8 ~XIXl TXK v.EXa O.=Xe u.N 0XG $.0.`.rXj.^.bXzXzXzXzXzXj F.bXk.X N.I lXk.z.zXkXg.fXgX9 ~ 3.r.8XtXkXkXj.r eXz _.bXzXzXz _Xz _ _Xz.o i.I.o.b.^ eXt e.UXz.bXz.b.bXz.bXz.bXz.b _XzXz _Xz _ _ _ _ _ _.b _Xz.bXz.o.o.b.V.c.V.c.V.c.c.c.V _.b _XzXzXj e.r e.r.r.r eXjXgXzXz.#.V.c.c.c.V.c.c.c.V.c.V.c.c.VXz _.U.c.V.V.c.#.V _.c.c.c.#.#.#.U.c.c.c.V.c.c.c.c.#.V.c.#.#.c.#.#.c.c.V.cXg.o.c.c.c.#.o.UXg.o.b.b.b.bXz.b.b.b.o.c.c.V.o.c.VXg.c.c.cXg",
+"Xz.o.^.cXzXzXz.bXz.b.b.^.U.bXz.b.^.U.^Xg.bXg.U.U.b.b.b.bXz.b.bXz.o.^Xz.IXzXj.rXjXtXtXt.k N.k ~.8X*X3 VXXXM .9.i h R h.} kXK ._.jXpXcX5.a x xX,Xe.Z.aXD.uXI.eXD R R a t u.d.s ^.; w b.!.9.E.9.'X. : $ x $ hX, $ $ hXD aX-.eXD a.a a.e.a.eXD B.eX1.aX1 B a.e.e.a.a.e R.aX-.e RXD.eX, R R RXIX,X, R.D.n.].]X1.`.H.r.rXdXj.b.bXz.b.bXz.b.bXz NXz.bXz.b.bXz.b.b l.b _.c.cXg.c.cXg.c.c.c.V.c.c.c.V.cXg.c.cXz.bXzXzXz.bXzXg.XXzXz.bXz N.r.k e.r.rXtXt ~XtXt.r.r.rXt e.rXt.r.r.r.rXtXtXgXoXdXz.^XzXzXzXzXz.^Xd.^.^XkXk.R q.t lXgXgXgXgXg.VXg _.c.cXgXg.VXgXg.cX&.U.c.#Xu.c.V i. _.#.UXg i iXgXz.b.^.b.^Xj eXt.HX5XJ.n.n s 9 '.wXD.Z.DXDXIXDXDXIXD.DXDX1 RXD B BXD B B.w.w.j.Y._ x U U.a t R B aX-XD `X+XwXe h x .[XX.l VXBX3XKXcXJX.XH.>XOXm.!.! g &XC.q & &.O.9.MXD.w.w.n '.0XOX5.8 ~ ~X*.rXt.r.r.r e.r.}Xl.'XLXL 0Xa b 2.= bXe.M.)XeXG.Z.`.8XtXj.bXzXzXzXzXzXzXz ~ e _XzXz. .IX .z.t Q.A./ 5Xx.r.r.`.8 ~.8.^Xt e.^.b.^.b _.bXz.^XzXz.b _ _.o.U.b.^Xj e e N lXz.b _.^.o.b.b.bXz.b _.b _Xz _Xz.bXz _ _XzXz _.o.^.b.^.c.c.U.V.c.U.V.c.c.c.c.c.c _Xz.b.b.bXz.^.^ e ~ eXt e.V.o.b.U.cXg.U.V.U.c.V.c.V.c.o.c.o _ _.c.6Xu i.c.c i i _ _ i.#.#.#X&.#.c.# i.c.V i i.c.c i. .#.#.#.#.#.U.V.c.c.V.cXgXg.c.U.cXg.VXg _.b.bXzXz.b.b.o.V.c.V.o.V.c.c.V.cXg.V.c",
+". i.bXg.b.^.I.U.bXz.b.c.f.cXz.b.^. Xz.b.oXg i i.b.b.bXz.b.b.b.b.b.b.b.o e.r e.rXt.r.r.^ N NX*Xj 3.`XXX3 V.-.l # x.} $ $.a kX3.Y.pX+XrXK.Y.aXD h.Y.FXD R R.~XDX1.~XD.~ R t.e.).)X6 w H H H HX>.; y s.9 sX. 1X.XK xXwXc.9 BX, ` RX-X1.ZXD.e RX, a B.eX-.aXI.eX-X-.} RXD aXD a R R : :X..u 1 :XK : $ $ $ ! g.2XIX5.5Xx.XXjXj N.b.^Xz.b.b.bXz.b.b.b.b.bXz.b.b.bXz.U.b _.cXg.V.c.c.cXg.VXg.c.V.o.V.cXg.c.o.c.b.bXz.b.bXzXz l.b.b.^.o.b.k e.r.rXtXt.r.r.k ~.rXd e.r e.r.r.rXtXtXt.r.rXt.k.^.b.bXzXzXzXzXz _XzXz.b N.b.IXk.I.6.U.bXgXg.V.o.cXg.o.cXg.VXg.o.o.V.c i.UXg.#. .U.c. .#.c.#.UXg.#.U _.bXz.b.^.b.k.r.r.H.5.2 'XC g & y x.n.0.w.w.w.w.w.w.w.w '.w.wXl 8X1XD B B.ZXa sXr.9 UXe.i.i h U.W.M $ nXp.Y U h x.l c XM.lX3.lXX `XK.9.-XJ.>X; g.0.!XUXC @XCXm.9 9.Z $Xl s.w ' g g.DXV.8 3.rXt.r.r.r.rXt ~.8 3Xq.W.s / /.= O.=Xa.9 1 xXsXL.9 cX- FXtXz.b.bXzXzXz.bXzXzXjXzXzXzXzXzXz.X.I.z N.r.k 3 ~X-XV F.8 FXt eXt eXj.bXz.bXzXz.^XjXjXzXzXz _Xz.bXz.^ e.rXjXz lXz.bXz.cXzXz.bXz.bXz.bXz.bXzXz.b _.b _.b.b.oXzXz.b.bXz.U.cXz.U.c.V.U.c.c.c.V.V.cXg.o _.^Xz.b N.^.rXj e eXjXgXz.o.#.V.c.o.UXg.c.U.U.c.V.V.V _ _.c.U.#.#.#.c.#. .# _.V i. i.#Xu. .c.#. .V.#Xu i.U.U iXu iXu iXu i.#.c.c.cXg.cXg.V.U.U.c.VXg.o.b.b.b.b.b.b.bXg.c.c.V.o.o.o.V.c.o.c.U.b",
+".Q i.bXg.c.b i./.bXz.^Xg.6.c.bXz.^.#.bXz.b.o.U.I.b.b.b.bXz.b.b.b.^Xz.^XzXjXj eXt.^XjXj.k N.X.bX*.r ~.8.}X9.,X3 #XM 1.}.a `.-X7 n.jXZX.XJ tXc < =XcXc.-XIXD.eXDXI.~ F.~.~ R.) pX=Xn ^.vX6XfXf HXp s.MXD t R.M.a.a R R a R `Xl : ` 1 `Xl.,Xl :XK : x R.~.a R.e R.e t t a R R.eXJ :X.XcX. m 1 : `.-XJ.9XU ! ! I IXx 5.AXkXjXjXz.b.b.bXz.b.b.bXz.bXzXz.b.bXz.bXz.UXz _Xg.cXg.c.cXg.c.c.c.c.c.c.c.o.c.cXg.c.oXzXzXz.bXz.bXgXg N.bXd.bXjXjXtXtXt.r.r.r.kXt ~Xt ~ eXt.r e.r.r.r.r.rXt.k.^.^ NXj.^.bXzXzXz.bXzXz.b N.^.^.^XgXg.o.c.o.VXg.oXgXg.o.c.VXgXg.V.o.oXg.U.VXg.VXg.o _.c.c.VXgXg _.VXzXzXzXzXz N NXjXt.u 3 :XwXw &.j.j.q.9 o.9 v v sXn s v v.n.9.n.w.Z 'X1.H B B 8.w.D 9.jXGXe EXq.m.d.p._X%.i E U U x xXJX3XM # h.a.a.iXM V.-.Y m.OXU s.' ' ! =.> 9XmXa.'.w.n T.] g ( B.DXV ~.rX*.r.r ~ ~.r F F B.ZXL.N / / / C.sXa.M.Z $XDXaXn.9X5X-.rXt.bXz.bXzXzXz.bXz.b.b.^.b.^.b.o.b.IXg.z.I )Xx.z.k.8.r.8.` q.k e.r eXjXz.oXzXz.bXj eXj.b.bXz.bXz.^Xj e e.rXj.b lXz _ A A.7.z.b.b.b.b.b.bXzXz _Xz _ _ _Xz _.o.b.b.b.b.o.I.o.#Xg.c.V.c.c.U.c.c.c.c.c.oXz.b.oXz.^XjXt F e e.^.VXz.V lXg.c.U.c lXg.c.V.c.c.V _.V.c.U.U.c.c.c.c.V.c.cXz.V.c.U. .U.#.#.#.#.V.c.#.#.#.c.c.#. .#. i. . .U.V.c.V.cXg.c.o.#.c.V.c.V _.b _.bXz.^.b.oXgXgXgXg.V.V.c.V.c.oXg.oXg",
+".c l.o.oXgXz.o.b.b.b.b.b.c.b.bXz.b.b.bXz.b.b.^.b.b.b.b.bXz.b.b.bXz.bXz.^.r.r e.z N e.r.^.oXgXg.bXj N.r.r.8.aX3 VX3XlXMXM 3XBXcX7 MX+.+ x.,XcXwXD 1XqXJXJ $ R RX-XI.`.`.HX- a.* UXb.)..XbX=.B ;.4 b v.n.M.*.a R R aX- RX1.eXl., :XK :XJ.0 1 : TXJXlX,X-X1.aX-X-.e R R aX- R a R aX1 h.Z.e.e t.a RXDX-.w s T.5X-.8 3.rXt.r.rXt.^ N.b.^.bXzXzXz.bXz.bXz.b.bXz.bXz.UXzXz.cXg.c.c.c.c.c.o.VXg.c.c.VXgXg.o.UXg.c.o.^.b.^.b.bXg.bXz.o.b.^XtXt eXt.r ~.kXt.r.rXtXt.kXd.rXdXt.rXt.r.r.r.rXt.^ ~XtXj.r.^Xz.oXzXz.bXzXzXz.bXgXgXgXgXg.cXgXgXg.VXgXg.o.cXgXg.c.V.V.cXg.o.V.cXg.o.V.c.c.c.c.V.cXg.oXzXz.bXzXz.b N.kXt c.HXl.j y.E.@ oXr M M.j & & &Xr.q HXU.qXw &.0.n.n ' '.uXa.D.n.wXLX>.j...mXA W %XA zXq E E EXq 1 1X3 #XX #XI c a.a a.a $Xc `Xw =XO.!.! s y.G.GX;XG.' '.0.] D gX5XDXV.8X*.r.rXt.r.r.r ~ F FX1 R v.s.) *.N u u.Z.M t.ZX1.~XL 9.9.K.8 ~Xj.b.b.bXz.b.bXz.bXzXz.^.oXz.b.bXz.I./X .zX q qXx.`Xt.8X*Xx q.rXjXjXj.^ NXzXz.bXj e e.o lX@.I.o.^ e.rXtXj.^.b.cXz _ NXzXg j.bXgXgXg.o.b.bXzXz _Xz _XzXzXzXzXz.o.^.oXg. .o.V.c.c.U.V.V.c.c.c.c.c.c.o.b.o.^.b.bXtXj.r ~ e.b.o.^.#.U.I. .V.c.c.V.V.U.c.VXz _.c.#.U.c.U.U.cXg.U.V.U.b.V.c.c.#.c.#.#.c.#.#.#.U.U.c.c.c.c.c.V.c.c.c.c.V.c.o.VXg.VXg.o. .VXg.V.o _XzXz.^Xj.^Xz.bXgXgXg.cXg.o.V.oXgXg i.IXz",
+"Xz.^.b.^.c.b.^.b.^.b.b.b.bXz.bXz.b.^Xz.b.b.o.^.b.b.b.b.b.b.b.bXz.^ N NXj.^.kXt.X./.^.r.^ N.^.b.cXg.X.k.rX*.8.8XM., VXMXX x [.SX2X2.M hX1XD R U.a.M.a a 3X,XD t a 3.8.~X1X1 8 C uXF.. *XbXbXf.4.EXG v.w a RX-.~X- B.e.e R R a a a.e a a R.eX, R B R BX-X,.~.eX-.a aX- t aXIXD.aXD $X-XD R R.a.}.M.M.n.'XPXlX1.` ~.r.rX* eXtXjXz.b.b.b.b.b.bXz.b.bXz.b.b.b.b.b lXz _Xg.cXg.c.c.c.c.c.c.V.oXg.c.c.VXgXg.UXgXgXz.b.bXz.bXg.bXg.^Xz.b.b.k eXtXt.rXtXtXt.rXt.r.r.z.X.r.r.r eXt.rXt.rXt.KXt e.r e.k.b.QXzXzXz.b _.o.o.o.o.c.o l.b.6.z.cXgXg.o.o.cXg.VXgXgXgXg.c _XgXg.V.o.V.oXg.c.VXg.c.V.V _XzXz.bXz.^Xx.kXtXV 3XMXcXGX>X>.@.jX>.E.@X>X>.@.EXp.EX+.EXmXmXwXG.n s gXa.wXaXL v 9.E HX8X>X2.<.x.x.J E E.m x.-Xc V #.K 3.u.e.}.e aXD <XD .Y nX;XwXP.'.'.' !XwXP.!.0XlXO.]X5X1XI.8.8.kX*.r.r.rXt.r.r.r.8 F B.DXL 2 * * u < t h.lXJ.9 B.n o.9X1 3.8.k.^XzXz.b.bXzXz.bXz.b NX9Xz N.b.^Xz.X.^Xk N.X.rXt F.8.k.8.rXj.r.rXj ~ e eXj.^Xz NXt e.^.^.o.:.RXzXt e.r eXj N.oXgXz _ _Xz.b.I.bXg ZX@.b.b.bXz _XzXzXz _ _.bXg.I.IX X&X .I l.UXg.c.V.c.c.c.VXg.c.c.c.#.U.o.o N.^Xj e ~.r e.bXg.^.#.#.# i.7.c.U.U.c.c.c _ _.c.#.U.c.c.6.7 i.UXg.c.c.V.o.U.#.#.U.#.c.#.c.#.#.U.V.c.c.U.c.c.V.c.U.c.c.c.V.c.V.cXg.cXg.#Xg.c.VXzXzXz.^ e e.r e.^.b.o.o.o.o.c.cXg.cXgXu.&.z",
+".bXz.bXzXk.b.b.bXz.b.b.b.bXzXzXzXz.bXz.bXz.b.o.bXz.b.bXz.bXz.b NXzXgXzXj ~XjX*.^Xj.r.k.o.b.b _.o.c.o.o.k.r ~.8.8 3XXXXXM.lXM.g [ WXp.N.M 8.M $.aXGXBXJ.9 tX,.}.M.aX- 3.`X-X-XD t.* t U CXe.sXbX6XC H s s t.eX-X-.~X-X1 B 3XIX- aX-.e R.eX- 1.2XlX,XDXl : :XD h c 1 3.a RXD B.aX1X, R R R a.aX,XD R.a.n s.' T.~.`.`.`.8.rXjXtXj.r.bXz.b.bXzXz.bXz.b.b.b.b.b.bXz l.bXz.cXg.c.c.c.c.c.cXgXg.U.c.V.oXg.#.V. XgXgXg.b.o.b.^Xg lXd.XXz.^.o.b.^Xt e.rXt.r ~Xt.rXt.r.z.R.X e.r.r.r.r.rXtXtXo.X ~Xt.rXd.IXgXzXz _ _.oXgXg.cXg.o.cXg Z.I.U.c.c.o.o.o.cXgXg.oXg.VXgXg.VXg.VXgXgXg.VXg.c.VXg.V.oXg.o.^Xz.b.^.bXgXdXV.r 3 xXc x.< vXnX2XpXp JXGXnXGXnXn JXnXnXGXG y !.j.j &XU.jXm yXC.; H.4X8Xf.<Xf.C.x W.<.F ._X#XZ ` | D #XJ 1XK ` 1 k $.a ` [ =XU.'.Z.w.n.0.' ' T.'XP 'X1.`XV.8.8.8X9Xt.rXt.r.rXtXt.r.H.`.`.w.s.N.) C.a.a.a c < x 1 C.wXG.9.aX* ~ ~Xz.b.b.b _Xz.bXzXzXz.b.b.^.b.b.b.X.b.bX X@./ q.RXt.`X*.r.XX*XtXt eXj e.r eXj NXj eXt.k N.^.:.^Xd eXt.rXjXj.bXg _XzXzXz.X.b.I.7.^.6.^.b.b.bXz.b _ _ _.bXz.b.oXgXz.7.6 A j.IXg.c.c.c.c.c.c.c.c.c.V.o. jXg.oXz.^.r.r.z.^.^.o.oXz.Q.cXg _ ZXu.b.c.c.c.VXz.V.c.#.U.cXg.#Xg.:Xu.c l lXg.c.o.#.U.c.#.#.#.#.U.c.V.c.c.VXg.c.c.V.c.U.c.c.V.cXg.V.c.o.c.c.#.VXg.V _Xz _Xj ~ e.r.r e e.^Xz.o _Xz.o.bXgXgXk./.t",
+"Xz.bXz.^XkXz NXz.b.b.^.b.bXz.b.b.^.b.b.bXz.^.b.^Xz.b.bXz.b.b.bXz N.o.rXj eXg.^.rXtXjXz NXzXz.b _.c lXg.o.^.kX*.8 3.8XJ ` Xq [X<X2.@XG x x.~XD.w.wXK.9 x $.eXD h < < $.,XIX1X,X, x.M.}.YXq v . 0 w &.EXG R R.eX-.`.e.~X- RX1 aX- a a B aXc :Xc.' D 1 B., :XJX5XJXKX. aXIXD a.aXDXD.a.a RX,XDX, hX,XD.w TXU.Z R.`.`.`.8 ~.rXtXt eXz.bXzXz.bXzXz.b.bXz.b.b.b.bXz.U.b _.o.cXg.cXg.c.VXg.V.V.UXg.o l.Q.I.6. XgXg.c.o.b.oXz N l.b.z AXg.^ N.^XjXt eXtXtXtXt.XX@.R N A.RXoXdXt.r.r.r.rXV.X ,X@./X@.A l.^Xz.XXzXzXg.c.c.IX& X.U.tX&.XXgXg.VXg.V.b.cXgXg.VXg.o.V.oXg.VXg.o.V.o.o.V.o.V.o.V.c.VXg _Xz.o.bXz.bXjXd.r ~.}X3XpXGXe p.YXp.YXGXq sXqXq v._Xq v..X4XpX4.x.j W H.; H S H w.@ ^Xf.4.{.4.{ ^.@.-.[.g.,.S., [XH.9 xX.Xc.-.YXc.O :X, 1.YX. =XcXP.D.DXD $ T.!.n.0 m BX1.H F ~.r.kXj.^XtXt.rXtXdXtXV.r.8 RXeXL.N E tXDXDX- $X,.a h tXs s.'.aX*Xt.rXzXzXz.b _Xz.bXzXz.bXzXz _Xz.b.b.bXz.X./.f qXx V.8 3.k.rXkXk.k.rXt.r e eXt e.^Xt eXtXt.XXg.:.rXd.r.r.rXt.^.^.cXzXzXz _.XXd.6.: d.6 NXz.bXz.b _Xz _Xz _Xz _.b.X.^ jXk.z.7X&.b.c.c.V.c.c.c.c.c.c.oXz. Z.^.o N.^ e ~.^.o.cXg.b.o.#.o.cXg.7.7.c.U.c _ _ _.c.#.U.U.U.c.oXg.Q j.U.I ZX&. .c. .#.U.#.#.#.c.#.V.c.c.c.oXg.c.c.c.V.c.V.c.c.c.c.oXg.V.c.U.c.c.c.V.bXz.b.^Xt.rXt e.r.r e eXjXz.^Xj.b.o.^.^.k ~",
+".^.b.b.^Xg.b N.b N.^Xz.b.bXz.b.b.b.b.b.^.o.b.^.oXz NXz.bXz NXzXz.^.o e e.rXgXk.^Xj.^ N.c.U.bXz _ _.o.U.c N./.f.K.8.u # VX3 1X<XpX2 H._XsX,.Z.MX,XlX,.w TXw.9.9.W.} hXHXK.] !XK.9 XH UXKXq.9X> H M.E M x.M.eX-X-.~X-X-XIX-X- a a a a a B a.e.aX, RX-XIX1 BX- 3 3 3X- a.` hX-X- R RX,.aX,X, hX,.M t $.wXP.0 BX-.`.`.`.8 ~Xt.rXtXtXzXzXz.bXz.bXzXz.b.bXz.b.b.bXz l.b _Xg.V.cXg.c.V.c.U.c.cXg.o.UX&Xu.U Z.z.cXgXgXg.U.b.b.o.z Z l A.7.b.b.b.^Xt.r.r eXtXtXt.:.X.uXkXkXj ~Xt.r.rX*.rX*.^X9Xx.:.X.^.X NXzXz.^.bXgXgXgXg.:.zXz j.I.XXg.o.oXgXg _Xg.V.VXg.o.VXg.o.c.o.c.V.o.V.c.o.V.c.VXg.V.o.o.o.bXzXz.^XgXdXt.H.r.` .9XqXp U u.MXe.M.a < t < t t t uXeXnXnXnXnXp.@Xf.C.@.@.CXi.v.BXi.{X>.P.s.s vX+ `XM 1 $.a R RX,X1X,XD R $ R $.FXc.1XH.'XKX,X1X; gXaXO DXU.0X1XI.`.8XtXt.rX9.rXt.rXt.r.r.r.rX* ~X-.wXe.).N R 8X1X1Xl xX, h.MX, v sXIXVXt.k.b.XXz _.b.bXz.bXzXz _ _XzXz.bXz.6 q.$XkXxXXX9XM.5.KXX.^X9 N.rXj e.r.r e.rXtXj ~.r eXt.^.R P eXt.r e eXt.^.^.UXz _ _XzXzXz i.o j./Xz.b.b.bXz _XzXzXzXzXz.bXz.b.U.:Xg.z.:Xu.c l.c.c.c.c.c.c _.c.oXzXuX .^.b N.^.r.r F e.^.o.o.c.#XgXgXu.6.:.cXg.V.oXz.V.c.#.U.c.c.c l.U.# Z.:.U.6.U.c.c. .c.#.#.#.c.#.c.c.c.V.V.c.c.V.c.c.V.U.VXgXg.c.c.V.c.cXg.#.c.c.o.VXz.^.b.^ e.r.rXt.r.r e.r e e.r e e.^ N.k ~.r",
+"XzXzXzXz.o.oXz.b.b.bXz.bXz.bXz.bXz.b.b.b.b.b.b.bXz.b.b.bXz.b.b.b.^.XXtXj.^ eXjXz.o NXg.UXz.b.o.^Xz.oXg.cXkXg.$.&.A q 5 DX# [XZX4X6 SXn p UXeX,X, h xX5XDX, 1XK Xl x 3XVX-XIXI R.M.M.}.d.M t.d vXi.@.; 'XDX1 3X1.a.a.a a.eX-.eX-.eX- a.eX- aX-XIX-.a 3 3XI 3X-X-.aXI a.a :X- a R RX,X, hXDXD h.aXD $.ZXm :.`.~.8.`.~ ~.rXtXtXt e.b.^ _Xz.bXzXz.bXzXz.^ _ _.^ _Xg.o.b l.cXg.c.c.o.V.V.V.U.V.V.cX .: A.IXkXg.o.c.c.cXg.b.b.:.RXoXz j.oXg.^.^.b.^.^XdXj.kXt.:XtXdX9.^.r.rXtXt.r.u.r.r N.r./.(.^.X.^XzXzXz.b.b.oXgXk l.:.t.R j.X.o.X.oXg.V.o.oXgXg.c.o.VXg.oXgXgXg.c.VXgXgXg.c.VXg.c.VXg.cXg.o.bXz.^Xz.oXd e.r.H.8.8.Y.9Xq x u t.MX,X1.u.a 3 c.e <.* tX, xXq vX4 > ^ wX6.sXb 0X= -.v.PXiX= p.) pXrXn # #.lX5 aX- R BXDXD.wXIX1XDX, $XMXc.1.>.'Xc 8XU.O.n ' g.2 $.`.`.8 F.H.rXt ~ NXtXtXt.rXt.rXt.rXt.` :.'Xa.=Xs.M R R RXcXc h hXs y.w.wX,XV.rXt.bXzXz.XXz l.^Xz.^.bXz.b.bXz.b.^./.$.$.f VX3X3X3XX V.f.$.k.kXtXt.rXtXt.rX* ~.rXt e.r.r N././.^.^Xj.r.r e.bXz lXzXzXz _XgXu Z.b l.UXzXzXz.b.bXzXz.bXz _Xz.b.c.U.t.7.#X& Z.c.U.V.c.c.o.c.c.c.c lXz.^.7.U.b.b N.^.r F ~ eXz.bXz.U l.c.IX&. j.UXg.o.b.V.c.U.#.c.c.U.c.c.c i.U Z ZXu.c.c.c. .#.#.c.c.#.c.c.V.V.V.c.c.c.V.c.c.c.cXg.V.c.c.VXg.V.c.c.#.c.V.c.o.b.bXz.^XtXt.r.r.r.r.r e.r.r e.r.rXt.r.r.8.8",
+".^XzXz.^.oXgXz.b.b.bXz.b.bXz.b.b.bXz.bXz.b.b.b.b _ NXz.b NXz.b.b.b.o.r N.#.^.^.b.b.^Xz.o.bXz.b.oXz.b.o.c.UXgXgXk N NXt.r.u.-XpXn ..4.. v U h :XDXD.nX, $.w h.a x.S VXK.Z B.e.* R.M u E p E *.) 2.B w H.nXI.~X-X-.a.a.e a.eX-XI.eX-.eX-X-X- R.aX5XI 3.~.e.~.e RX- a 3 aX, c a.aX-.*XDX,X,X,.}XD.a.a s.w gX9.e.H.~.`.`.8X*XtXt.rXdXz.b _XzXz.bXzXz.b.b _Xz.^ _.bXg.o.o.oXg.c.V.c.V.c.c.V.o.c.U l.U.A j.(Xg.U.c.oXg.c.o l.b.:Xg N.X j.o.^.^.b.b.^.b.^Xo.b.X 7X* ~ ).kXtXtXt.r.r.r.r.k N ~ f.I NXz.b.bXz.bXz N.oXgXg.z.:Xz l.:.o.bXg.V.cXg.cXg.c.cXgXgXg.VXg.VXgXgXgXg.c.o.o.o.V.V.o.V.c.c.c.oXz NXz.^.XXd.r.H.8.8.a c.-XGXG u a.MXD R.KX*XI aX-.eX-.e t.* < <..XG ^.{XiXb.W.s 2.sXFX=.).) *.).d.pX+.l.S :.ZX3 :X, m B DX, m #Xc.,.,XH kX; n.9 s.aX1.0.n.0XO T.~XI.8 F ~.r.rXt.r.XXtXt.rXt.rXtXtXtXt ~.HXD sXs.= 8XDX-.aXD.[XHXrXp.OX. D D.$.& A AX A d.& d AX .IXzXzXzXzXz.b.X.^ NX* 3 c 3 cX*.uX* N.k N N.b ~Xt ~Xj ~.r.^ e.r eXt.r.r.r.r e.z.6.U e e.b.b lXz _XzXz _.^Xz.^.o.^XzXz.b.b.bXz _Xz _Xz.b.o.c.Q.U.Q.I.6Xg.cXg.U.c.V.c.c.c.c.o.c.c.#.7 i.b.b.^.b ~ F.r eXz.bXz.U.z i ZXg.U.: d.#.bXz.o.c.U.U.c.c.c.c.c _ d.c l.:X&Xg.U.#.#.#.V.#.#.#.c.c.c.c.c.cXgXg.c.c.c.c.c.V.c.VXgXg.c.V.c.c.#.cXg.V _XzXz N.^Xt ~.r.r ~.rXt.rXt.r.r.rXt.r.r.8.8 F",
+"Xz.bXzXzXz lXzXz NXz.bXz.bXzXz NXz.bXz.b.bXz.b.b N.bXzXz.b.bXz N.^ N e e.X.^.b N.o.b.b.^.b.b.o.b.oXzXz.V l.UXk.X.b.k.r ~ 3XDXhX8.;X8XpX4 x E x 3X,XV $X, xX, $ a.M.9.-.-XU v.j.) p.)Xb {XbXb.BXb { w.j.' RX1.e.e.a.e hX- c.eXD.e.eX- RX- RX-XIXD.~ aX-.e.~X-.e.~ a 3.~.e.Z a R tX-X,X,.aX,X,XD.M R.W.n T.0X-.`.`.`.` ~Xt.r.r.rXdXgXz.^.b.o.bXz.bXz.b.^.b.o.^.oXg _Xg l l.V.c.VXg.VXg.cXgXg.o.6X&.o.z.:.U.oXg.c.c.o.U.bXz j AXx.t.&.b NXz.b.b.bXz.b.^ NXk.7XtX5.z ~ e.r.rXt.r.rXt.8.X N.:.I.X.^.^.bXzXzXz.b.b.o.X d.7.XX@.7 lXgXgXgXg.oXg.V.cXg.o.cXgXgXg.o.o.V.oXg.o.o.V.VXg.VXg.o.VXg.oXz.^.^.b.k.X.r.H ~ ~.8.} a.Y 1.Y x a R R B.`X1.e.` aX-.e.a.a R a t EXp . wX6XF.N.W.* u.wXq._ C t u pX4.p XH xXc., $.,XlXJXlXc T :Xw 1X#.- = ! gXG x.n.w.0XO.ZX1.H.e.8.8 ~ eXt.r.r N.rXtXt.r.rXt.r.r.r ~.`.aXGXsXs.M 8X1XD R hXh.YXp 9XwX5XJ )XxX@.t l A.t l.z.Q.Q.I.^Xz _XzXzXzXz.bXt e.r.r.rX*.r.k.^.X.^.^XgXd eXj e ~ N.^.r.k.rXt.rXtXV.r.r.r.b.X.^.rXj N.bXgXz.bXzXzXz _Xz.bXzXz.bXzXz.bXzXzXzXz _Xz.V.V.o.U _Xz l. .o.cXg.cXg.V.c.c.c.U.c _XzXzXz.^.b.b.bXt.r F e eXzXz.b.#.c.I iXg.#Xu. XgXz.o.c.U.U.c.c.c.c.c.UXu.: i.V iXu.c.U. . .#.c.#.c.c.c.V.c.c.cXg.c.c.cXg.c.c.V.V.V.c.c.VXgXg.o.c.U.V.o _XzXzXz.^Xj.r ~ ~.8 ~ ~ ~ ~ ~ ~.r 3.r 3 ~.8.8.`",
+" NXz.bXz.^ l.^XzXz.bXz N.bXz.b.bXz.b.bXz.b.b.bXz.b.b.bXzXz.bXz.b.b N.z.^ e.^.bXz.b.^.oXzXzXg.z.b.bXz _Xz _.cXk.c NXzXj ~.`X,.9X0 S w.T n z xXl x.DX, 8Xl.3.9 x 1 h.M u 8XqXrXrX8 ^ {Xi L {.P.P.BXi.4 M.>.0 T :X5.9XKXc :Xc.eXIX-X- R.~X- RX5.e 3X-.~.eX- R.eX-.eX-X-X,X1.ZX- RX-X-XDX, RX,.aX-.M.a.D.wXP.] F.~.`.`.~XV.rX* eXdXdXz.b.b.bXz.^.^.bXg.^.b.b.b.b.^XgXg l.o.c l l.c.oXgXgXgXgXgXg. .f.&.tX@ lXg.o.c.oXg.c.bXg.zX@X@.z NXz.o.^Xz.b.bXz.^.^.^XtXx.RXk.rXtXt.r.rXtXt.rXtXtXg q./.RXzXg.bXz.bXzXzXz.b.bXz.I q l. ./XgXk.bXg.c.o.VXgXg.V.VXg.cXg.c.oXgXg.c.V.o.VXg.o.VXg.V.c.o.o.b.b.bXzXzXt.^.r F.`.8XI.8.a 1.Y nXw t < RX-X-.`.e a RX1 R R t.a a.*XeXpX6.{.PXb U U a < a <.M a C tXeXn.xXB .l.l.a.a RXIX- R.ZX,X, $.}Xl VXc =Xw g.n $ '.0.| @.Z.K c.k.8 ~.rXtXtXtXt.X.rXt.rXt.rXt.rXt.r.`.HXD vXa.W.W RXlXlXl.* $Xe..XL.9.~.K.u N NXj.bXzXz.^.b.^.^Xz.bXz _Xz _XzXz.oXj F.8 ~XV.rXt.r.X.b.X.bXjXj e e ~.rX@Xk )Xk q ) qXxXx qXxXt ~Xt.r.rXt.^ N.o.^Xz _.oXj.b.oXzXz _Xz _Xz _Xz _Xz.bXz.b.V.cXg.c.o _.b.#.c.c.b _.c.U.o.cXg.c.cXzXz.oXz.o.b N.^Xj.r F ~.^.bXz.o.IXg.c.o.U.c.c.o.b.bXgXg.c.c.c.c.c.VXg.UXg.V.c.#.U.U.#.#. .#.U.c.#.#.c.c.V.c.V.V.c.c.c.V.c.V.c.c.c.VXg.c.o.cXg.o.U.oXzXzXzXzXzXzXj.r ~.8.8 F.`.8.8.8.8 F.8.8.8 ~.8.8.8.8",
+"XzXz.b.^Xz l.bXzXzXz.bXz.bXzXz.b.bXz.b.bXz.bXz.bXz.b.b.bXzXz.bXzXj.^.IXg.^.b.^XzXz.^XzXz.^.c.U.b.bXz _ _ _.o.oXkXkXg NXt.H BXG 0 *..X0 M.Y xXe 3X, $X5XcX;XwXUXc xXG 1.p.pXf.@X:X8 ;Xf.4 L L ; L.P.4XmXcXDXd 8 $X,.MX,XD.uXI.eXDX-.~X-X-.K.u.e.u.e RXI.a.~.e R.eX1.e BX-XI BX- R RX1 hX1 c a a.M.ZXG s ! : B.`.`.`.`.H.r.r.uXtXtXz N.b.b.b.X.b.b.^.^.oXzXz.X.b.o.o.o.bXg.o.oXg.c.oXg.cXgXk.b.XXg.b.b.oXg.o l.o l.cXzXz.bXgXd.^ N.b N.^Xz N.^.^.^ e e e.rXt.rXkX9 N e.r.r.r.rXt.r.kXx.^.^.^.^.^Xz.^.b.bXz.^.^Xz N.b.oXgXg.o.oXg.cXg.cXg.o.oXgXgXgXgXg.VXgXgXg.oXgXg.cXg.V.o.b.b _.b.bXzXzXz N.^ e.r.^.r ~.H.8.H 3.aX,.- y n.*.M R R.eX-X-X1 hX1 BXD R R a <XeXp ..4.PXF *.MX-X-.e 3.~ B a.* C.sX4.j x.i.i t.a.e a 3.MXD.ZXs h hXB.9Xw.>.! y.GXy @XU gXJ 5 (X9.K.r.r.r.r.rXt.^.rXt.rXt.r.r.r.r.r ~ 3 B v 2.N U t.ZXc U.M U.W bXGXlX1X9Xt.^ NXg.^.b.X.I l.^.^Xz.b l.b _.oXzXx.^ N ~ F ~.r.r.X N ) N.b.XXdXjXtXtXt.rXXX3.$.,XX ).$ D.$ (.5.r.rXt.r.rXtX* N.^.^.^.b.bXzXzXzXz _.b.bXz.bXz.bXzXzXz _Xz.b.V.cXgXz.o.o.#.o.oXz.U.c.V.c.c.V.c.oXzXz.^.b.bXz.bXj ~ eXt e.^Xz.o.c.U.o.c.cXg.VXg _.o.o.cXg.c.c.c.c.UXg.c.c.U.c.U.U.c.#.#.c i.#.c.#.c.#.c.V.c.c.c.V.c.c.VXgXg.c.c.VXg.VXg.c.o.cXgXz l.bXzXzXzXzXzXj e ~ F.8.8.8.8.8.8.8.8.8.` F.`.8 F.`.`.`",
+"XzXzXzXz.^Xg.bXz NXzXz.b.b NXzXz.b.bXz.b.b.b.b.bXz.b.b.b NXz.^.^.r.^.b N.^.b N.bXz.oXz.b.b.oXz.bXzXzXz _ _.b.bXk.cXk.bXt.HXD x b.)X=X2 vXe.w $X,X,X,.ZXD 'XlXJX.Xw.-XpXnX>.x ;Xf ^Xi.BXi.B.B.P L.C H.Y.nX1 B.e B t t aX- R.eX-.eXIX-.e :.G.uXl.,Xl R c.] `Xl 3Xl $XlX5XlXJXK.'.H 1 3XD RX, a R R $.n.'.2X1XI.H.HXI.H.H.kXt.^Xd.^.XXz.b.X.o.b.o.XXgXg.XXxXg.oXx l.UX9 l.XXg.U.I.U.I.U.U.z.I.I.U.I.I.z.#.U. .#.Q.Q.Q.z.z l. Xk.zXk.z lXk l l l l.UXg.X.^.o NXgXx.R.z.X N.X N N.X NXg q.zXx lXk l l l l.U l.c.U.U.U.z.I.Q.U.I.#.#.#.#.#.I.#.U.#.I. .#. .I.#.#.#.#.#.#.#.I.#.U.cXg.c.cXk l lXx.oXz.^.^Xx.^Xt.rXt c.u c 3XcXc =.M hXDX1.Z cXl $ 3 $ $ $.w 3 U.M x.jX>.4 ;.. v $X,.H #X5XD 3XDXDXe vXnX> W.gXB ` h 1 cXlXJ s x 1 1XwXJ.[X;X;.!.0 ! ! '.Z.5.HX*.K.k.k N N N.^ N.XXxXo.^ N.k.K.^ N.^.kXtXVXD yXnXpXG $.ZXI.Z.ZXL v.@XG.ZXV.5.^.X.X.b.b.b.b XX d AX&Xk.IXx.IXkXk.I.I.k.rX*.H.rX9 N N.z lXo.o.XXt.r.kXV.8XX c.K h 3 $ ) c.k.u.rX*.r.r.r.rXt.r.^Xt.kXj.^Xz _.o _Xz _Xz _XzXzXz _Xz.b _XzXz.VXg.cXgXz _.c.UXgXz.V.cXg.o.c.cXg.c _.b.oXzXz.b.b.^Xj eXkXk.b.^.bXg.U.U.o.cXgXg.c.c _ _Xg.c.U.c.c.c.c.c.cXg.c.c.V.c.#.#.#.U.#.#.#.#.#.c.#.U.c.V.V.c.cXg.VXg.c.V.c.V.c.c.cXg.c.c.o.oXzXg.^Xz.b.b.^Xj e e.r F F.8.8.8.8.8.8.8.8 F.` F.` F.`.`.`",
+".^XzXzXzXz.oXg.bXzXz.bXz.bXz.b.bXz.b.b.bXz.b.bXz.b.b.b NXz.b.^ e.^.X.X e.b.b.b.b.^.bXzXz.b.bXz.o.^Xg _XzXzXz.bXgXk.UXkXj.rXIXDX> 2X= & y 1.-X,X,XI.uX,XV $X,XD.ZX, R u.)XbX6.P.BXFX= /.v.)X= -.P ^X0X0X. 8.DX-X,XDXDXI RX- 3X1XIXI.uX-X3.%.3.,.%.%XK :.-.,X.X.XcXJXJ IXw 5.,.% : mXK x.K $ c $ c g g.>XOX5 '.k.u.k.uXoXo.5.^.^.b.X A ].z.X.XX@Xg Q.Q.I.z.z q l ] (.^Xd.rXx A iXk l l.&.6.z.z./.z l.I./.I.c l l.cXg _Xz.bXk.b N.o.^.b.b NXz.bXz.^.^.b.^ e e ~ e.rXj.r ~.r.r.rXt.r.r N.^.b.^.^.^.^Xz.^Xz.^Xz.b.o.o.cXg.bXg _.V.c _.oXg.o.o.b.V.o.o.o.o.o.o.o.o.b.o.o.o.b.bXz.^Xz.^.^XzXz.^Xj e.r.r.r.^ ~ F.` F.`XIXI a cXK.j.a.e a RX,X- a.eXD 3 a B.a.e a.e._XnXn ; {XF.M.eX,XV.`.HXI.H B.e tXe._.. .X+.Y $X< :X.Xl #XJ x v.9XB., [Xw.OXm.nXa.0XUX1XI.~.8.8.8.8.kX*XtXtXt.r.k.kXt.kXjXjXjX*XjX*XjXVXI.D v.WXe.M hXlX5Xl.wXGXG 0 y 3XoXxXx.U lXgXk l.z d.z.t.t.IX@.&.& fX .( f ,.R P q f f.| Q.t Q Z.f P.& QX@ ] ) cXJ IXJ |.,XJXc.,.$ q.$ qX9.XXxX*.kXt.5XtXjXj N.b.bXzXzXz.bXzXzXzXzXz.^XzXz.^XzXzXz.V _.VXzXz.cXg.cXj.c.V.c.c.cXg.o.bXzXz _.bXz.b.^.^ e.r ~.oXk.^XzXg.#.UXgXg.oXg.VXgXz.VXg.V.V.c.c.c.c.c.c.V.c.c.#X&.c.#.# i.#. i.#.#.#.#.U. .#.c.V.c.c.V.c.c.V.c.c.c.VXg.c.c.o.b.bXzXg.^.^.^.^Xj e.r ~ ~.8.8.` F.8.8.8.`.8.8.8 F.`.`.`.`.~X-",
+"XzXz.^Xz.b.bXgXz.bXz.b.bXzXz.b.bXzXzXz.bXz.b.b.b.b.b.b.b N.^.^.r.rXd lXj.^.bXzXzXz.^.bXz.^.^.b.^.b. .UXz _.o.X.b.o.U.z.oXtXVX,XK 2.s.j MXeXK 1 c hX5 $ x $ 1 x :.' sXeXpX6 ;.4.v.. O.s v.s.v 2Xi.@ H.+ y.2 D.,.-XJ.- h RXD R R.a RXV R.5Xl.K RXVX,.e cX5X1.MX-.a.u 3.a.uX-X-X-X-.eX-.~.Z B aXI 8.9XPX..] D ).$ (.RXx.$XxXk ~XtXjXd.RX@ A.RXk.t N./.RX@.& Q.t.&.t.f.8.r.rXg.R.AX&.(.zX&X&X&XuX XuX .cX&X X&.U.c.c.c.o.b.b.U.^.^.b.o.^.b.b.^.bXz.bXzXz.^Xj.r eXt e.r eXt.rXt.r.r e.r.XXjXj.b.b.^.b.bXzXzXz.bXg.c.c.o.V.c.c _Xg _ _.o.c.oXg.V.c.cXg.oXgXg.V.o.VXgXgXg.V.b.bXz.b.^.b.^.^.^Xt e.r.r e.r.^.r ~.8 FXI.8.8.8XIXKXG.Z U.9Xl R :.M `XK xX5 mX, ` <.9.iXp.@.{ {.d.W UX5X-X-.~.~.HX-.uXDXe._.).mXn.p.F 1 x k.-XJ n.3XcXH.3.1Xh.G @.w.nXL.'XPX1X-.8X-.8.8.8.rXtXtXtXtXtXd.^XtXtXtXtXt.rXtXt.u.8.H.n.s.).) UXwXcX, $XL s.s o v.`XV.b N.^.b.bXz.bXzXd.X.^.^Xz.^.^.XXt N N.^ FX@ 7 qXk.$.z.I.R d.R.R.I (.I ].R )Xt # c #Xl # :XM.5X9.5.5XxXo NX9Xo N.kXk.^ N.^.b.U l.U.c.#.U.c.U.U.c.U l.U.U.c.U.U.V.I.I.UXg.c.6.#.V.U.U.U.U.c.c.c.o.bXg.b.^.oXzXz NXj e ~ ~ ~.rXz.^.o.c.b.o.o.c.cXg _ _ _.c.c.cXg.c.cXg.c.c.c.c.V.#Xu. .# iXu. .#Xu i.#. . .U iXu.#.c.V.c.cXg.c.c.c.c.c.c.VXg.c.o.b N.bXgXj.^.rXtXt.r.r.8 F.8 F.8.8.8.8.8.8.` F.`.`.`.`X-X-X-X-",
+".^.^Xz.bXz.^.c.^.^XzXz.^Xz.^.^.^Xz NXzXz.b.b.b.b.bXg.b.b.oXg.^.^Xg NXk.bXkXgXk lXk.c.U l.U l.U.U dXu.z.U l d d.t.R.t.t Q q.]XJXwX>.) &.j.M E.M hXD h 3X,.MX, $.a hXD.).).BXf { - * C.* 8 t.*.N G 2 wXmXc $XD RXK aX, cXD.~.~X- B.~X-.` cX5.`X- RXI a.e a R aX-X-X-.uXIX3.u.aX-.~.aX-XI.ZX- BXD.9.' g.2X1 DXo ) q 5.$X9.$.&Xt.r e.k.^ N.^Xj.^.^.k.bXgX9.bXxXg.XXx.X.r.8.8Xt.X.U q.#.U.U.U.#.U.U.U.c.c.c.#.U.cXg.cXg.o.oXz l.b.b NXz.bXzXz.b.b.bXz.^.b.b N.^.^XjXjXt.r.r e.rXt e.r.r.^Xj.^Xz.^.b.bXz.bXz.b.cXg.V.VXgXg.o.V.V.cXg.o.cXg.VXg.oXgXg.VXg.VXg.oXg.c.V.o.oXz.^XzXzXz.^.^.bXjXj eXtXj.^.^ N.X ~.r ~.H ~.8.` 3X-.9.'XJ hXc.- x.OX5 |X.X5 xX.XKXK xXHXpXnX4 w %.).W $.a.e a a.e.u.e 3 3.a u.)X= ..jXM.l h.a.aX5XD $.}.} ` `XH n.9Xa.>XPXP g.5.`X-.`.8 ~ ~.u.r.r.rXd.H.^X5 e.rXt.rX*.rXtXt.r.8.ZXL.=.).N <.}.u.aXD.M O.sXG U.8.k.X.bX .I./Xz NX@ d NXz.XXg.X.XXtXtXj.^.b.rXjXk e.X.^.b.^XzXg.b.^.^.b.XXg l.r.rXt.rXt.r.r.r.r.r.u.r.r.r.r.r.r.rXt.r.k ~.r e eXzXzXzXzXzXzXzXzXzXzXzXzXzXz _Xz.b _.o.V _ _.U.6.U.c.U.U.U.U.c.V.c.c.c.c.U.U.U.U.U.U.o.b N.b.bXgXk.#.U.I.c.U.c.#.U.#.U.U.#.#.U.#.c.c.c.U.U.U.c.c.V.c.#.#.#.#.# i.# i.#.U.#.#.U.#.#.#.c _.c.V.V.c.c.c.V.c.c.cXg.c.bXzXzXk.^Xj.rXj.rXt.8 ~.` ~.8.8.8.8.`.8.8.` FX-.`.~X-.8X-X-.~.`",
+".o.oXgXgXgXg qXg.c lXk.cXk.U.U.U.U.U.U l.U l.c.U.c lXgXkXg.b.^.^.b.kXg.X.o.b.o.b.b.b.bXz.b NXz.b N.o.^XzXz.zX@ f.& Q.t Z.& qX3.jXG.) WXr E.M t h.}.}.MX,.}.M U x.MXD pXbX6 L {Xv.N.*XlX1 8 R C.) 2 ^X;Xm.w R.ZXD ` < cXV.eX-.*X-.~.eXV.K 3 3XI RX1.e aX-.e.e R a.~.e.u c cXI.eX1.eX1X,.*X1X-.w TXcXO $X1.u.`.r 3.r.r.HXtXt.^.^ N.k.^ NXj.kXtXtXj.^ N N.b.b N.b.z.$ c.u.r NXkXk lXgXgXg.V.c.c.cXg.cXgXg.cXg.oXg.V.cXgXg.b l.^.b.^.b.b.b.bXzXzXzXzXz.^Xz.b.bXz.^ NXt.r.r e.r.r e.r.r.b.^.^XzXzXz.bXzXzXz.b.cXgXgXg.VXg.V.cXg.V.V.V.cXgXg.V.oXg.V.o.o.oXg.oXgXgXg _XzXz.^Xz NXz.^.^XtXtXj ~XjXdXz.^.I./.XXd.r F.8.8.8.`XI.u.jX;.i.M CXD.Z h.aXDX,X,.wXDX,.M U.jXnXf.CXfXe.W.9XM 1XlXM c TXXXJ :XM x.@.s vX+.F xXM.l 3 hX,.a 3XXXMX3.,XUXl sXaXOXPXU '.~.8 ~.` ~.k q q )XkXxXo.kXt.rX*XtXj ~XtX* ~ ~.H sXs /.N C UX, cX,.M s 2XL.9 a FXoXg.^.t.t.tXg A.t A P QX@.&.(Xg P N e e.^XjXj.r.b N.^.b.oXgXg.b.bXg l i d d e eXt.rXt e.r e.rXV.r.r.r.r eXtXt.rXt.k N.r e e eXzXz _XzXzXzXz _XzXz _Xz _Xz.bXz _ _Xz.bXz _.U.#.c.V.c.cXg.oXzXzXzXzXzXzXzXzXzXzXz.^ e.r e ~.r.^.bXgXz.UXz _.b _.U.U.U.U.U.U.U.U.U.U.#.#.#.#.#. . .# i i. i iXu.#. . .#. . . . .U.U.c.c.U.U.c.c.c.V.cXg.c.c.cXgXz.^.^Xg e.r.r.r.r 3.8.8 3.`.`.8.`.8.` FX- FX-.`.~ 3.~.~.`X-.8.~",
+".o.o.o.o.b.o.UXg.b.b.b NXzXzXz.^XzXz.^.^XzXz.^XzXzXz.bXz NXj.r.r eXt.b.X.b N.b.^XzXzXzXzXzXz.b N.b.b.b.o.^ N.X.QXo.oXg.6 N ~XI 1Xn.) 0 &X>XG._.W.W <.M U.M.WX,Xe._ u - - { ;.BXv C 1.>XK.a t.*.N / 0 = =X;XK.Y.-.-X..aX-.~.~.eX-X-.eX-.u.eX-.`X, 3 BX-.e R.eX- aX- aX-X9 R.K.}X-XI.aXDX1.M.*.Z.0XPXJX1.H c.8.k.rX*.r.k.rXd.5 NXz.^.b N NXg.^ eXj.b.b.b.b.b.b.o q f.$ 5 5X@.f lXgXgXg.c.c.c.V.c.V.cXg.V.o.o.V.VXg.cXg.c.o.UXzXzXzXzXzXzXz.^Xz N.b.b.^.b.^.^.^ N.b e.r.r.r.r.rXt eXjXg N.b.b.^.bXz.bXz.b.oXg.c.V.c.c.c.c.VXgXg.VXg.VXgXg.o.o.oXg.o.V.o.VXg.o.V.o.bXz.^XzXz.^.^.kXj e.r e eXd.^Xz.b.^ l.k.r.r ~ ~ ~.8.8X1 B 1.' x.M.aXD.aX- tX- R RXDXD RXe.-Xr.. H S.4X0XsXD.WX,X7 h 1 #., cXlXK xXnX4X2.EX+ .lXM 1XK.}.} c.lXX.-XH g $.w.D ' '.0.0.`X-.8.8 3.X.$ q q D q.HXdXdXtXt ~X*XtX*Xt.r 3 $.w.=.= u.W `XD.} c.M v O b xX- ~.o.XXz.U l.UXgXx q (XkXx.z.z q NX ./ F.r.^Xz.^.^.X.b.^ NXz.o.b.o.z.6X& A.z _ ~ e e.r.r.r e.r.r e.r.rXt.r F e F e ~.kXj e.r eXj _XzXz _XzXz _XzXzXzXz _XzXz _XzXz.bXzXz _.o.U.U.c.c.cXgXg.VXzXz _.b.b _.b _Xz.b.^Xz e eXt e.r.^.bXgXz lXzXz _ _.oXgXg.V.cXg.c.c.V.V.c.cXg.V.c.c.c.V.#.c.#.#.#.#.U.#.U.c.#.#.#.#.c.U.U.U.U.#.U.U.#.U.#.#.#. .#.I.U lXk.I.b NXz.kX*.r.8XV.` ~X* 3.r.` 3.8.`X-.`.e.`.e.`X-.~.~.`.~",
+".b.b.b.bXz.^.o.oXzXzXzXzXz.bXz.bXzXz.bXz.b.b.b.b.b.b NXz.^XjXjXt.r.r.bXg.^Xz.b.b.b.bXz.b.b.b.b.bXz.b.^.o.bXz.^.X.b.oXg.z NXtXI x JX= 0 w &Xf v.W u.W._Xe.N U.N.) p._XF.B {Xf.B.).N U aX-.a R t C /.NXC.j s.WXDXD UXD.~.eX-.~ B.e.eX-.~ 3.~X-.eX- cXD a RX-.~.eX- a.`.e # c.~XDXI R.e B.D R.DXl.wXU.0X-.`X*.`Xt.r.r.r ~XV.^.b N.b N.b NXz.b.b N.o.b.b.b.b.b.b.bXg 5.z./ q q.z lXg.o.V.c.c.c.V.c.c.cXg.c.V.cXg.cXg.o.VXg.o.UXzXzXzXzXzXzXzXzXzXzXz.^.b.b.^.r.^ e ~Xt.r.r e.rXjXd.^.^Xg.b.bXz.^.b.bXz.bXz _.o.cXg.c.oXg.VXg.V.V.o.c.o.oXg.o.o.VXg.VXgXgXg.VXg.o _XzXz.b.b.^.kXt e.r.r.r.r e.^XzXz.b.^.X e.rXdXt ~.` F.8.`X-.w xXp 1 R a < R a R t $ '.M h.- M.h.y.y.+ H.@Xs.M t t a < < aX-.~X-.*.* < p.)XnX+.jXB.Y.iXBXM.lXMXM `.- g '.'.w B 8X5.n DXIXI.`.8.5.5X9 c.k ).r.HX9.rXtXtXt.r.k ~.rXV.uXK.W.WXs.NXw.9X, <XDXeXe vXG.}.8.r.X.b.b.b.^ NXx Z.RX@Xk.R.z qXkXxX*Xx F.rXt.X N.o.k N N.bXk.U././X@.6XxXzXz.b.r e.r.r.r.r e.r e.r.r.r eXjXd.zXkXx.r.^Xt.r e ~XzXzXz _XzXz _XzXzXzXz _ _Xz _Xz _Xz _XzXz _Xg.#.c.c.c.c.cXg.VXzXzXzXzXzXz.bXz.bXz.b.b ~Xj.r e.r.^.b.o.oXg.bXz.bXz.b.VXg.VXg.V.c.c.c.c.c.c.c.c.V.c.c.c.#.c.#.#.#.#.U.c.c.c.c.c.c.c.c.cXg.o.V.o.V.o.o.o.o.o.o.V.o.o.#Xz.bXg.^ e.r ~ ~ ~.u c qX*XIXVXV.K 3X,.uX,.uXV 3XVXD.u 3 x.uXM",
+"Xz.^.^XzXz.^.o.c.^Xz.bXz.bXz.b.bXz.^Xz.^XzXzXzXzXz.bXz.bXj.r.rXjXt e N l.^Xz.b N.bXzXzXz.bXzXz.^.b.bXzXz.b.b.^ N.b.b.c.c.o.k.8XD.EXv 0 0 SXC ^.s.s...s........Xn . .Xf.J.B.{.B *.).* tX,XJXc.* U.N.vXC 9.wXLXeXL U.Z.eX1.~.eX-X-X1X-.aXIX-.eX-.~XDX-.HX- B.e R.e.~ R.~XI.uX- RXD.D B R R 8.ZXK.'XO.0.`.`X*.H ~.rX*.r.uXd.rXo.b N.b.bXz.b.^XzXz.bXzXzXz.b.bXz.b.o qXkX9XgXgXk.c.c.c.VXg.V.VXg.V.o.VXg.c.VXg.cXgXg.V.o.c.o.UXzXz.b _ _.bXzXz.^Xz.^ NXz.^Xj e.z q.zXt.r e.rXtXj.b N.^XkXzXz.^XzXzXzXzXzXz.b.o.c.o.V.o.V.VXgXg.V.o.cXgXg.VXg.o.oXg.oXgXg.oXg.V.o.bXzXz.^.^Xj e.r.r e.r e.rXj.^.b.o lXgXg e.r.r.rXt ~ F.`XIX-.aXcXnXpX,.* RX- <X- `XHXw nXw.1 MX:.4.4 ^.v.W.*.9.- xXBXKXKXJ 1X..2Xc.9X+Xn M 0 0 ^.j.jXBX7.lXMXM gXU s.w.DX1.' R.nXa (.uX-.8XV 5 I.$.$ I q.|.k.KXd.uXtX*.r ~.K ~.HX5 s.NXs.NXDXD.9 RXD.M v v bXG B ~.r l.b.bXz.b.oXg././.f.&.f.f QX@ 5.8 F ~.r.k.X N.XXk.R.R.&.&.I.z./XkXj.o.^.bXjXj.rXtXtXtXt.r e.rXt e.H.r ~ eXgXg.X e N e e ~ eXz.b _XzXz _Xz _XzXz _XzXzXzXzXz _Xz.bXz _ _.c.#.c.c.V.c.V.o.bXzXz.b.b.b.b.b.b.b.bXz eXj.bXkXjXt.^.o.b.c.o.bXz _Xz.b.c.c.c.c.c.V.c.c.c.c.c.c.c.V.c.c.#.U.#.U.c i.#.#.c.c.c.c.c.c.cXg.o.o _.oXg.c.VXg.VXg.VXgXg.VXg. Xz.c.b.b.^.r ~ F.8.`Xt.$ ( ) qXV ) :.5.u : `X, h RXq.aXG.-Xp.Y",
+"XzXz.^.bXz.^Xz lXzXz.b.bXz.^.^.^ N.b NXz.b.b.bXz.oXz.^.b.rXj N.I.rXt.bXk N.b NXz.b.b.b.b.b.b.bXzXz.bXzXz.b.b.b.oXz.b.U.c.oXt.8XD y ^X=.@.@.;X> 0....XnXp....Xn._ .X4..XA.CXfXb * G.* R tXU h.e.N.)X=.E o.sXaXL.s.wXa.w.~X1X1X-.e.e.~ 3.e a.`.e aXIX- R 3 R.~ a.~ B.e B BX-X-X1X-XDX1X,.' T s s 'XK.0.~.8.k.`.kXtXt.8XdXd.r.^.b.^.bXz N.bXz.b.oXz.b.bXz _.bXz.oXg.I.UXg.cXg.V.c _.c.c.V.cXg.c.V.VXgXg.c.o.V.V.cXg.VXg.c.o.UXz.bXzXzXzXzXzXzXzXz.^Xz.^XtXj FXj e.r.r.rXt eXtXd N.b.^XgXz.bXzXzXzXzXzXzXzXz.oXg.VXg.c.c.VXg.VXgXg.cXg.VXg.o.o.VXg.VXgXg.VXgXgXg _XzXzXzXj e.r eXt.rXt.r e.^XzXz.o.#.I.z eXd.r.rXj ~ ~ ~.H R tXc.pXr.a.a a aXD 1.2XH y $XG.F.EX2XAX6Xi.)Xs C 1XKXK : U 1 :XlXl.9.- vXpX4 S.@Xv.vX6.;X+ n.-.-XBXwXw.'Xa.n t : c.0XaX5 gXl.8.H 3 ).KX*X*.k.u.5XV.5 ~Xg q ~.K.rXVXVXVX5XL 0._ u 8 R.~ 8XD U v.s.Y.Z.` ~Xt l.bXzXz.b.b.X./Xk.5Xx N N N N.k N N.XXx.I.I q.&.AX@.$.I.z.I.b.^ N.oXz.b.bXj ~ eXt.r.r.r.r.r.r.r.r e e e e.^.k e ~.^.r.r e.^.bXzXzXz _XzXzXz _XzXzXz _XzXzXzXzXz.bXz _.b.c.#.c.c.cXg.o _XzXzXz.bXz.b.b.b.bXzXz.bXj e.6 q.o e.b.o.b lXz.b.bXz _.b.c.c.V.V.V.V.V.c.V.c.c.c.c.c.V.c.U.c.U.U.U. .U.U.c.c.c.cXg.cXgXzXzXzXzXz.o.c.o.o.o.o.o.V.V.V.c.cXz.U.^.^.^ e ~.`.8.`Xd.8.X.5.uX*X5.K.,XM.3X. [.Y.[ =X< 1XqXq._",
+".b.b.^.bXzXzXzXgXzXz.^Xz.b.b.b.bXzXzXzXz.bXzXz.bXz.^.bXzXt ~.rXj.rXj.^Xk.b N.b.bXz.bXz.bXz N.b.b.b.b.bXzXzXzXz.^.bXz.V.cXg.^.HXI o...) ^..X0 S .Xi .X2X:.xX:X2 ..x.xX2.xX>X4.s U.N.*.*.*.DX,.eXw.s 2 HXmXm o & b vXL $XD.~.H.e RX- 3.e `XKX- RXIX5 3XIXI.ZX- B.~.e R.~ RX- B RXl.w.'XK.].' TXP ! g.D.`.~.kXV.r.rXtXt.rXd.HXzXo.oXz.^.bXz.XXdXz.bXz.bXz _XzXz _Xg.# l.c.c.o.c.c.c.c.V.VXgXgXgXg.o.c.VXg.V.VXg.V.cXg.c.c.b.UXz.bXzXzXzXzXz.bXzXzXzXd e eXt eXt.rXt.r e.r.r.r.^ N.^Xz l.^.b.bXzXzXz.^Xz.bXz _.o.V.V.V.o.o.oXg.VXgXg.o.VXgXg.oXg.cXg.VXgXg.V.V _.bXz.bXjXj e.rXt.r.r e ~ e.b.^Xz _.cXg lXd.r.rXt e.r F FX-X1XDXK nXr.Z RX- a.-X.Xc s.Z U.wXnX4X2 { - - p.M a R.e R a.e R R BX-.* a.d.*Xb.)..Xi ^.@Xi.vX4XpXn s.q oXa.w 8.eX1 TX,X5.n g )X- 3.u ) )XX )X3Xx ) ~X9 ~ ).$.f ~X*.u.H.D.n.N.) t aX,.wXDXD.MXs v vXpXD.8.HXd.cXz.b.bXz N.b./ q.f.f 5.&./.A N.&X .6.6 d.I.#.Q l.o.oXzXz lXz _ _.^XzXz _Xz.o.^.^ e e.r eXt e.r.r.r.r ~ e ~ e.r.r.X e.r e.^.^XzXzXzXz _XzXzXzXzXz _XzXzXz _Xz.bXz _ _ _.c.#.VXg _ _XzXzXzXzXz.b.b _.b.b.b.b.b.b e e e l.rXj N.bXg.cXz.b _Xz.b _.V.c.c.V.c.c.c.c.c.V.c.c.c.c.c.U.#.#.U.U.#. .U.c.U.c.cXk.c.oXzXz.^XzXjXzXz.V.o.o.o _ _XzXzXzXz.o _.U.bXz.^XjXt F ~ F F F.`.`.8.` 3X5.a.i.Y.YXB x E U EXeXp",
+".^.bXzXz.^Xz.^Xg.oXzXzXz.bXzXz.^Xz.b.bXz.bXzXzXz.b.bXz.r.r.^Xg NXjXj.^Xg.oXzXzXz.b.b.bXzXzXzXzXz.bXzXzXz.b.b N _ _Xz.o.UXgXzXtXIXp.s M J..X>X8.<.p r.y.p.<.[X+ W.jX%XpXnXp.pXpXLXeXa C.*.M R.* C /.= O.W 2.=.v.E 9Xa.Z B.~ 3.aXVXDXIXl $ cX1XIXDX1XIX-.eXI 3 R 8 RXD 8.M T T.]XJ DX;.%.G K.O.0 D '.` ) P (.A.k ~ QXx f ( fX@.( d.tX&.t X l.bXzXz _.bXzXz.o l.o.#Xg.c.c.V.c.c.V.cXg.c.c.c.cXgXg.cXg.V.cXg.c.o.cXg.c.c.b lXz.XXzXzXzXzXzXzXz.^.^ e.r e.rXt.r.r eXt.r.r.r e.^.^Xz.^ lXzXzXz.^ N.b.^.^Xz.^Xz.b _.o.o _ _.o.o.V.o.V.cXgXg.V.o.oXg.o.o.VXg.o.bXz.^Xz.^Xj.r.r.r.r.r.r.r.^.^.^Xz.#.U.b.^ l.^Xt e ~.r.r ~.8 FX1 R.Y.pX+XD a aX-X- a R x.Z v xXpXf.xXAX6 u E t.} RXIXI.Z.aX1 3X,.} a < *X=X=XiXf %X=X=X=.sXn.) 2.s o.j.nXa R B.eX- BXaX5 T.0X-.8XIXt 3.u.rXV.r.u.k.KXt )Xk.KXxXoX9.5X5.n 2.).M.}X,.Z R.aXD.d v.@ hXI.H eXj l.bXz.bXzXz.b.^.X N N N N.K.bXz.b.^.bXzXz _XzXzXj.bXz.b.bXg.bXzXz _Xz _XzXz.b.bXz.^ N.b.^Xj e.r e.r e eXt.r e.^ e.^ ~ eXd.b.bXz.bXzXz.bXz.bXzXz.bXzXz _XzXz _ _XzXz.b _.c.# _ _Xz _ _.b _XzXz.bXz.b.b.bXz.b.b.^Xj ~ eXj e.^.b.o.UXgXz.b _Xz _.b.V.c.o.c.V.V.c.V.c.c.c.c.c.U.#.#.U.#.U.c.U.#.c.c.c.c.c.c.o.^ e e ~ e e e.^XgXg.bXzXz.^XzXzXz _.V.U.c.o.bXz.^.^.r.r F.` F.`.8X-.}.} 1.- h h.}X, h E.} < t a.} t",
+".^.b.^Xz.^Xz.b.b.c.^Xz.^XzXz.bXz.bXz.bXzXzXz.b.bXz.b.^ e.^.r.rXt.r.b N.bXkXz.bXzXzXzXzXz.bXz.bXz.b _Xz.b.b.^.b.^.^Xj.o.cXg.X ~XVXq & vX0XL 0 S.x rX<X+X+XpXB.YX7.[XB.l.l.l.F.jXn.).N.WXs.M < <.e U x.>.n.NXs.N 2 ^XmXa.ZX1.e 3.a a a aX- t R cX, c $X-X-.~X- R.uX- R RXDX5 'Xw.2Xw !X. m 4.% IXJ.2 (X- 5 } 5.A.r ) f.R P A A.&.(.IX@X@.zX&.X.b.^.bXz.^.bXz.oXgXg.U.U.cXgXg.cXg.c.V.c.c.c.cXg.c.c.c.oXg.c.cXgXg.c.c.cXgXg.cXgXzXz.o.b _Xz.X _.XXd eXdXdXd e.kXjXdXtXd.k.kXd.k.bXx.b.zXgXg.o.o.o.oXg.o.o.oXgXg.o.b.oXgXg.c l.U.U.UXg.U.U.U.U.o.#.U.U.c.U.U.c.oXgXg.X.^Xj.^ N.^Xj.^ N.o lXd.#X@.QXg.o.zXgXzXd.^Xo.k.k.8.uXV 3XcXr M h CX1.aXD.ZX1 $ x 1._X+X>X8Xf S._Xw xX,XKXlXcXl ' :.- cXM a.).s.BX6.C 0.v.NXa O.N.w *.W.s JXrXP.wXD.e : 'XD.n.nXPXo.H.` ~X*Xt.u.r.k.rX*.u.K.r VXk IXX m.,.,.' v.=.=Xs aX1.H R 8.N.WXnXG tXI.r e.^Xg.bXzXz.b.^XzXzXz.b.b.^XzXz.b.^.bXzXzXz.bXz.bXzXz.bXzXz.oXgXz.b.bXzXzXz.b.bXzXz.bXz.b.b.bXz.^ eXt.r.rXt e.r.z ) qXtXj.rXjXz.^XzXzXz.b.bXzXz _XzXz.b.b.b.b _.b.bXzXz.bXz.U _.bXz _Xz _XzXz.bXz.bXz.b _Xz _.o.b.^XjXt.r e eXzXz.o.UXzXzXz _XzXz _.o.c.c.V.c.c.c.c.V.U.U.c.c.#XuXu iXu.V.V.#.V.U.c.U.c.cXg.o.^ e e e e e e.^Xg.o.b NXj e.^.b.^.b _. .o.V.o.bXzXz.^X* F F F.`X-.}.F >.l h xXM.a.}XD.a a a.e a.} a",
+".b.b NXzXzXz.^Xz.U.b.bXzXzXzXzXzXz NXz.b.b.bXz.^.bXz.b.rXxXg.k eXt.^XzXz l.^.bXzXzXz.bXzXzXzXz.bXz.^.b.o.I N.^.^ eXtXzXx.U N.^.` $ =Xs = J vXr W WXr.pXB $.YXB.lX3.l.l h.i.lXBX+ v.W.N.N.N.w.a <.a xXU.n.N C.)X= ^.E.wXa.DX,.u.e a.eX-.e R.e.e RX-.K : 3Xl.` R.u h BX,.w.wXJ.2XO.u.D.H.~XI 3XV.8 3.HXV.5 N.X.5.k.k.kXoXo.XXj.X lXx.I.^XxXg l.X.U lXg.o.U.#./.#.c.6. .I.#.#.I.#.#.U.#.U.#.#.U.#.#.#.U.U.#.#.U.U.#.U.U.U l.z l _XgXg.X.o.bXgXg.bXdXd.^.^.^.rXd N.k.kXt.k.^.kXd.^.b.XXk.b.b.X.b.b.b.o.b.b.b.o.b.bXz.oXg.VXg.c.cXg.c.o.c lXg.c.oXg.c.c.o.VXg.oXz.bXz N eXtXtXj.r.rXj e _.^ _.o.b. .^.X l.bXjXtXtXt.k.u ~.H.8.aXc.j.+.M t.aX-X1XDX-.aXD hXpXnX>.4.. %.Z.M.MXD.a.a RXI 8X1X-.} u.* %.vX6XfX6Xb.N.= 2 8XDXs u._.s J.q o T.ZXDXlX;.D.0.0 gX5.uXtX*.^Xo.^Xd N N N NXX.K.$XX.u.5X9 `X5X, 1.@ vXaXw.9.Z x RXGXn.jXn 3X5.X N.o lXgXgXg.c.oXg.o.o.o.o _ _.o.o.o.b.b.o _.bXz _.b.bXz.^.bXg.oXzXzXz.^XzXzXzXz.^XzXz.bXzXzXzXz.^Xj.r.r.r e.r.r.XXgXk eXj e.^Xz.b.oXzXzXz _.b.bXz.b.b.bXzXzXzXzXzXz.b.b.oXz.c _XzXz.b.bXz.b.bXzXz.bXzXz.bXzXz.b.b.b e e eXj.^Xz _.c.U _Xz _ _ _Xz.o.c.c.c.c.c.c.c.cXg.V.V.c.c.c.U.U.c.U.c.c. .c.c.V.V.cXg.c.oXz.^Xj e ~.r e NXg.bXzXj e eXj.^XzXz _.U.o.V.VXzXz.^ N.r.r.`Xt :.}.[.l.m.m E U a 3.a.e.eX- a.a.eXD.e",
+"XtXjXj.^.^Xz.bXzXg.b.bXz.bXz.b NXzXzXzXz NXz NXzXz.b.b.^XjXk.^.r.rXz.b.^XkXz.bXz.b.b.b.b.b.b.b.b.b.bXg.z.I.b.b.r e e.bXg.z.X.^ cXG o.W 9 v s.@.<.p WX7.9.i $X,.i x : h <.}.l.l.-Xr v.sXe.WXL.M.M U xXG aXDXD 2 2 ^ H o.n.n g.0.ZX-Xc.-Xl `XI x 3XlX. }XlXl DX,.2 s.OXcXc.2Xw 'XIX,XI.H.` 3 3XV.8XV ~.kX*X*.5X*.k.k.H.^Xd.kXd.b.X.b.o.^.b.o.b.bXzXz.b.o.cXgXg.cXgXk.UXgXgXgXg.VXg.o.V.o.c.V.o.c.oXg.V.V.oXg.V.o.o.oXg.o.b.o.b.^.^Xz.bXz.^.^Xz.^ eXt e.r eXt.z.k.r ~ e.r e.r.r eXt.^ l N.bXzXzXz.bXz NXz.b.^XzXz.^ _.oXg.o.VXg.V.o.o.V.c.oXg.oXg.o.V.b.V.o.V.b N.^.^Xt ~.r.r ~ ~.r e.^XzXz.b.bXj.bXzXxXz e e.r.r.r ~.8 ~.8 RXcXq.j.M a R a RX1 B.* < U.YX4X>.{ %.).M R.*.*.a.* aX- a R a t t.d /Xi.@XiXv.) G t.* B.MXD uXe 0 0.q 9 '.D.* D.].Z.D.0 gX1.`.8 ~.r.r.rXt.r.r.rX*.k.uX3XX q )X3XX :Xc.wXG 2.jXw.a.a <XsXn vX+XDXI ~XtXz.b.o.o.bXz _ _.o _ _.V.o _.b.oXgXg _ _Xg.c.o _Xg.U.cXg.oXg. .UXg l.c.cXg.c.U.c.cXg.c.cXg.cXg.c.c.o.k.^.^.kXj.k.^.k.X eXt.^.X.bXz.b.b.o.^XzXz.b.^.b.b.bXzXzXzXz.bXzXz.b.bXzXg.b.b.bXzXz.bXzXzXzXz _ _.bXz _.bXz.b.^XjXt ~XjXz.^ _.c lXzXzXzXz _Xz.V.V.V.V.V.VXg.V.c.c.c.c.c.c.c.c.V.c.c.c.V.#.V.V.c.U.c.c.c.o.b.^ e e e e.r.^.o.o.bXj.r e.r e.b.^.o.U.o.c.oXz.bXzXt.r.`.8X3.}.Y.F.m U h.}.e a aXI.} cXD.a aX,XI.e",
+".r e eXj.^ NXz.^Xk.o.bXzXz NXzXz.b N.b NXzXzXz.b.b.b.kXz.rXjXt e.r N N.^Xg.bXz.^XzXzXz.^.b.^ N.bXz.b.b.b.^ NXt.k.^Xj.XXk.zXxXo.k xXpXLXs.EXG.@X4X+.1X%.Y x 1 x $ x : $ $ 3 # k.[XB.TXp v.W.E v U.W u.a.wXw C.=XvXb J.E o 9XP.w.D.eXKXJ c m T.,XI 3.%Xl.2., m.,XJ mX;XPX$XO mXVX1.`X-X-.`.`.8XIX1 FXV.r.rX*.^XtXt.r.rXtXtXj.o N.b N.b NXz.b.^.b.^.b.b.bXg.o.c.c.c.U.U.c.c.c.cXgXg.V.c.V.cXg.V.cXg.VXgXg.VXgXgXg.oXgXg.o.b.oXgXzXzXzXz.bXzXz.^.XXz.^.^ N.^.kXx./Xg.r.r.r.r.rXt.^.^.^Xg.^Xz.^Xz.^XzXzXz NXzXz.bXzXz.b _ _XzXz.oXg.VXg.o.c.oXgXgXg.V.o.VXg.o.o.o.o.^.^Xj e.r.r F F.r e.^.^ l lXz _Xz.^Xg.^Xj e e.r.u ~ F.8X1XIXK XrXe.* RX-XI B R R.a <.jX4.4.@ %Xb C R t t t t.}.* t t.M t UXF.s ^.@X= * C C C B 8 RXIXn.x =XmXC.q g.D B BX-Xa.n.0 gX1.8 ~.rXtXt e.rXtX*.r NX*X* N.K.5XX ) :.5 :Xl.s *.)Xq t <XsXe vXG.9XI 3.rXj.bXzXz.bXz.^Xz _.bXzXzXz _XzXzXz _XzXzXzXzXzXzXzXzXzXzXzXz.^.c.^.^XzXzXzXzXzXzXzXzXz _ _ _.b.b.b.o.o.kXz.^XjXj.kXt.^.X e.k.bXg.b.b.UXg.c.o l.U.U.o l.c.c.c.c.c.c.c.o.V.c.c.c.#Xg.c.o.o.oXg.o.o.b.o.b.bXzXz _.b.b N.^.z.^.^ e.bXzXz l.c.bXzXzXz _Xz.V.c.V.c.c.V.V.c.o.V.c.c.c.V.c.U.c.U.V.c.U.U.U.c.o.V.V.VXg.o.bXzXz e ~ e.^.o.cXz.^ e ~ e.r.r.b.^Xg.c.o.o.bXzXz.k.r.8XIXM ` .FXq.i U.M a a a a a R VXHX-X- kXI.e",
+"Xt.r.r.rXjXzXz.^.b.o N.^Xz NXz N.^.^.^Xz N.^.^ eXt.kXzXkX@ N.k.^.^.oXg.XXg.UXgXk.oXgXk lXgXg l.z.XX .X.R.&Xk.X.&.z ( A.IX@.R QXl =.+.MXs vXnXnXn.p.1.Y # $.i.M.MXaXKXlXlXc h., k [ kXh.1 W.+.jXrX2.W.M.M x.* CXF.)X6X> HXm.q.w.wXD.]Xc.'.,Xl.].a R.9.e : $.w ' ' ' g TXUXoX,.~.`.`.`.8.8.8.` ~.8 ~XVXtX*.rX9 ~.kXt e.r e.X.^Xz.b.^.b.^.b.^ _Xz.bXzXz.b.c.c.c.c.V.c.#Xg.c.c.cXg.c.V.c.V.c.c.VXg.V.o.VXg.c.c.c.c.oXgXg.bXz.bXgXzXz.^XzXzXz.^XzXzXz.b N.^.^XjXgXjXt e.r e.r eXj.^.b.^XgXzXzXz.bXzXz.bXz NXz NXzXzXzXz.bXzXzXz.o.VXg.V.oXg.oXg.cXg.o.V.o.V _.V.o.oXzXz.kXt.r ~ ~ F ~ e.r.^.b.VXgXz.b.^XgXz.^Xj.r.rXt.u.8 ~ FX1.9X+.j 1 a a.aX, BX1 R t.M.Y.pX>.4 -XF._XG h x.iXD.Y C., tXp.M J.@ 0.C 0.=.) C t a.eX,Xl k.-Xe 2.=.!.!Xa.0XD.nX5.w.n.0.0.`.8.8XtXt.r.r.rXtXj ~ NX*.rX* ~.rX*.r.8 cXVXl.).) u C t tXs vXaXmXlX1.8Xt.^XzXzXz.b.bXz _Xg _XzXzXzXzXzXzXzXzXzXz.bXzXzXzXz _Xz.b.bXzXz.cXz.bXzXz _XzXz _.bXzXz.b.bXzXz _Xz.bXz.^ NXjXj.r e.rXt.^.r e.r e e.b.^Xz.b.bXz.^XzXzXzXzXzXzXzXzXzXz _.b _ _XgXg.o _.V _.o.V.V.o.o.V.c.c.cXg.c.cXg.c.b.b.I e.cXkXg.c.# l.oXg _.oXgXg.c.c.c.U.c.c.c.c.c.V.V.c.c.c.V.c.V.V.o.V.#.V.c _.V.c.c.cXg.c.o.o.b NXzXz.b.oXg.b.b.k e.r eXj.^.b.cXg.o.bXz.^.^ e ~.8XD >Xq.m.i x t a a.e.e a aX-.a 3XD.eXc 3.e",
+".rX*Xj.k.k.^.XXgXgXkXgXgXxXgXgXkXg.b.b.XXgXgXz.k.oXz N N l N.^.^.k.o.b.oXzXkXz.o.^Xz.b NXz.^ N.b l Z.&X@.&.R.&.R.f.(.&.( , f 5 5 n o.).NXG vXLXnXrXwXB 1 h $X, tX,XO TXc $ $ `., k.,.Y.gXH.1X+Xp._.d.).MXD u.9 C *.s.v 2 OXC s.wX,.*X-.e.e.e.eX-.e.aX- B B B.wX5.wXP g R B.`.`.`.`.8.8 ~ ~.8.8.8X*.r.r.r.r.X.8 e.rXt.r.r.b.^XzXzXz.b.bXz.bXz.^XzXzXz.V.cXg.VXg.cXg.U.oXgXg.V.V.c.c.cXg.cXgXgXgXg.VXgXgXgXgXg.o.o.o _.bXz.bXg.bXz.bXzXz.b.b.bXzXjXj.r e e.r ~Xz.r.r.r.r ~ eXt.^Xj.^Xg.^XzXzXzXz.b.b NXzXz.bXz.b.^Xz.bXzXzXz.oXg.o.oXgXgXg.o.cXg.V.o _.c.o.V.oXgXz N.^Xj.r ~ F.8 F.r.r.^Xz.^Xz.bXz.^Xg.^XzXj ~.r.rXt F ~.8X1 $.YXnXG.MX- 3XD RXD R t <XpXf H.C { -XG.W.w.WXGXeX+._Xn t._Xe z.T.@ 0.v.= C C a RXD ).-XK.WXe.= 2XC.!.n ' '.ZXa.0.] g.D.`.8 ~Xt.r.rXtXj e.r.r N.r.rXjXt.^ ~X*.r.rXVXl.W / * t u pXLXL.n TXI.8 ~Xj.b NXz.^.bXz.b _.c.V.b _XzXzXz _XzXz.bXzXzXzXzXzXz _.b.bXzXz.bXgXzXzXz.bXz.bXzXzXzXzXzXzXz _Xz.bXzXz.b.b.bXjXj.r.r.r.^Xk.X.k e ~ e.^.bXzXzXz.b.b.bXzXzXz _Xz _ _Xz _XzXz.bXz.c _ _XzXzXzXzXz.bXzXz.bXzXzXzXzXz.bXz.^ ~ e.r.r N.b.b.o.I l _.o.b.b.V.c.U.U.U.#.U.U.U.#.#.#.U.#.#.#.#.#.#.U.U.U.6.#.U _.V.U.c.c.VXg.o.o.o.o.b.o.oXg.c NXz.^.r.r e.r.r.^Xg.o.oXz.^.^ e F.`XI U .m.m E U <XD.eX-.e.e.e a.eX-.a.a.uX- a.e",
+"Xt.^ N.^Xj.k.^.X N l N.^.^.^XjXjXj.r ~.r e.r.r.r e ~XjXz F.k.^XjXz.b.bXz.^XgXzXz.b.b.bXz.b.b.b.^Xk.^XkXkX9.X.k.^.X.o.A.zXkXkX9X-.wXp *.W v vXG [ z.-XM x x h h y.* TX,.D.e.'X,Xl.-Xc.- 1Xp.[.pXn pXsXsXsXw *Xp.N.d / / OXmXG.wXD R B.a B RX- B aX1 R.* R.Z.wXlXU.]X1X1X1X-.~.`.` ~.8.8.8 ~.rX* ~Xt.rXt.r.kXjXt.rXj e e.^Xz.bXzXzXz.^Xz.^.bXz _.b.b _.V.VXg.c.cXg.#.o.c.c.c.V.c.c.c.V.c.c.VXg.VXg.o.o.o.b.b.b _.b.bXzXz.oXgXzXz NXz.^XzXd.^ e.r.r eXtXj.rXt ~.r.r.r e.r e.r eXt.^Xg.^XzXzXzXzXzXzXzXzXzXz.bXzXzXzXzXzXzXz.b _.o.b.c.oXg.o.oXgXg.c.V.V.oXg.o.oXzXz.^.^.r F.8 F ~.r l.zXz.oXzXz.bXz l.^Xz.^ e.r.r.r.r.` FX1X,X+XG 1.M tX, 3 RXD R a < vXn.4.@X6.v.j p.*X+.).. 2 2.s U.)X=.@ M.B /.N.w t <.ZX5 `XJX5.}._Xe.= O oXP.nXa.0 D g.] 'X1 B.` ~ ~Xt.r.r e ~ eXj.r.bXt.k.rXt ~Xj.r.kXt.r.Z v.N.).) 2.W.).W 9Xa.`.HXt.^Xz.b.bXzXz _.oXg.c.V.o.o.b _XzXzXzXz _XzXz _ _.b.b.V.o.VXzXz.oXg.b.bXzXz _XzXzXzXzXzXz _XzXzXz.bXzXzXz.b.b.^ eXt e.r.o qXk.^ eXj e.r eXzXz.^XzXzXz _.bXz _XzXzXzXzXz _Xz.bXz.c.bXzXzXzXzXzXz _Xz.bXz _.bXz _.b.bXzXjXjXj.r eXzXz.b.o.#.oXz _Xz _.b.c.o.VXg.VXg.V.VXg.V.V.V.c.c.V.V.c.c.cXg.V.#.U.c _.V.U.U.U.U.#.U.U.c.U.#.I.U.c.U.UXg.^.^Xj.^.k e.^.o NXz N.^Xt F F.`.` h.F E E.d <.* R.u.e a.`.e aX-.e.a.e 3.a.e 3",
+".r.rXt.r.rXtXt.r ~ N e.rXj e ~ e.r eXj.^.kXjXj.^.k.^.b.fXg e.^Xz.b.^XzXz.^.c.bXzXzXzXzXzXzXz.b.bXz.X N.z.fXgXtXt.b.X.b.XXgXk NXV $Xp.WXe o.Y M n.,.9 : x h $.MXl c D.,Xl.D T.] T :XcXH .lXMXBXp.p y v.=Xe.YXw u u.NXs.N.sXmXGXeXD R BX- B.e R.e.eXD 8 R.Z.w 'XU T RX1.`.~.`.`.`.`.8 F.8.rX*.r.r.rXtXd.rXd NXt.r e ~Xt eXz.b.bXzXz.^Xz.bXz.bXzXzXzXzXzXg.cXg.o.VXg.#.oXg.V.cXg.c.V.V.V.VXg.V.cXg.b _.^XzXzXzXzXzXz.^XzXz.X.oXzXzXzXzXzXz e e e.r e.r e.r.r.r e.r e.r.r.r.r.r e e.bXg.^XzXzXzXz.bXz.bXz NXz.^XzXzXzXzXz.^XzXzXzXzXz.c.oXg.o.o.cXg.o.o.V.o.V.V.oXzXz.^.^.r ~.8 ~ ~Xt.b.t.oXz.VXjXz.bXg.^Xz.^ eXj.r ~Xd.` F.HXD.-XnXG.M a cXD RXD R t <XGXn SX6.CX6X> yX%.; M M M S.;X: H.y ^.@Xv.) 8Xs.* $., x.u RX. =.j.....v.qXm.nXP g T c BX1X1XI.8.8.rXt.rXt.r eXjXj.r N.r.^.k.^XzXjXj ~.k.r.k s 2Xs.N.W v v b.0X1.H F.^.b.^.b.o.bXzXzXgXg.c.VXg.V.V _ _Xz _XzXzXzXzXzXz.V.c.o.V.c.b.b.V.bXzXzXzXzXzXzXz _XzXzXzXzXzXzXzXzXzXz.bXz.^.b e eXt.r.^.k e ~ ~.r.r e e.^Xz ~.bXzXzXzXzXzXz _Xz _Xz _.bXzXzXz.UXzXz.bXzXz.bXz.bXz.bXzXzXz _ _XzXz.^Xt e.rXj eXjXzXz.c.#XgXzXzXz.bXz.c.c.c.c.V.c.c.c.V.c.c.c.c.V.c.c.V.o.V.c.c.UXg _ _Xz.o.V.o.V.V.c.oXzXz _.o.oXg.cXz N eXtXtXjXj.r.^Xk.X.bXg N.^ ~Xt c 3 ._Xq.m u tX-.`.a.8.e aX-.e.e a.eX- #.e.e a",
+".r.r.r.r.r.r.r.r.r.^.k.rXt.^.^.^.^.^.b N.bXzXzXz N.b.b.zXjXj.^.^.^ _.^.b.^Xg.b.b.b.^ _XzXz.oXzXzXzXz.oXg.b.^ eXj N.b.b.o.cXk.b.r hXL.N.s.s.j M.Y k kXl.- mXl x x.a.} a aX-.e.eXlXDX,X,X, h h.Y x y.[XrXp = y U t CXs.N.NXL.EXGXLXJ R R.eX, 3XD c xX1XD.D.w.9Xc mXI.`X-X-.`.`.`.` F F.8 ~ ~.rXtXt.rXt.r.r.r.kXdXt eXj.^.^XzXzXz.b.bXzXz.bXzXzXz.b _XzXz _ _.V.c.VXg.#.V.o.c.c.V.cXg.c.c.cXg.VXg.o.bXz.bXz.^XzXzXzXzXzXz.bXz l.^XzXzXzXzXd e e.r e.r e.r.r eXt e.r e ~ e e e.r e.^.b.bXz.^XzXz.bXzXz NXzXzXzXzXz.^XzXz.^XzXzXzXzXzXz _Xg.o.bXg.c.V.V.V.V.V.o.bXz.^.^Xz e.r F ~ F ~Xt.^ _XzXzXzXzXzXzXgXz.^XzXjXt.r.r.r F.8X1X,XKXGXG < RX,X1.a.Z.M t UXnXn SXi.CXiX6._XnXn ^ HXf.@.@Xi..X6 ^ ^ * * C.M $XKXB aXI R.Z y vXn 0.@ &XmXPX;.' :X1XIXIX1.`XV.`.rXt eXt eXj.^.b.^.o N.b.b.bXz.^.^XjXt.rXVX5 sXLXe v 9 s $X1X1 F eXz.bXz.b.o.b.bXg.c.VXg.c.oXgXg.o.bXz _XzXzXzXz.V.V.V.V.c.V.VXg.VXgXz _XzXzXzXzXz _XzXzXzXz _Xz.bXz.bXz _ _Xz.bXz e e e.r N.rXt ~Xj ~ e.r e.^ e e.^XzXzXz.bXzXzXzXzXzXzXzXz _Xz.bXgXz _XzXzXzXz _Xz _Xz.b _XzXzXz.b.b.^ e e.r ~Xj.^.b.b.U.U.c.oXzXz _ _.c.V.o.c.c.V.o.c.c.V.c.V.c.c.V.c.c.VXg.V.#Xg.b _XzXz _.V.c.V.c.o.c.V.oXzXg.c.cXg.b e e.r e ~Xt.rXj.^XzXj.r F.` F.`.`.uXB.i E U t t.~X-.8.aX-.a.`X1 a.a 3Xl c.e 3XI",
+".r.r.r.r.r.rXt.r.rXj N.r eXtXt.^.^.^XzXz.^.^XjXjXj.^.^.bXj e ~ e e.^.bXzXz.b.o.^.b.b.b.^ _.^ _Xz.b.b.^Xj.r.r e.^Xz.bXz.bXgXk.X.r 3XG.).W 0.@ [ n |.SXHXc n nXKX3.i a 3.a a R.*.e `XJ : ).Y., k.,Xw =XHXh.TX0.)XG &XK 8.D v oXG =.w g : D 1 DXc TXHXlX. sX;XOXw '.a.`.`.`.`.`.`.`.8.8 ~ ~ ~.rXt.r.rXt.r.r.r.^ eXtXj.^XzXz.b.bXzXzXz.bXzXzXzXzXzXzXzXz _Xz _.o.o.cXg.#.c.c.c.c.cXg.VXgXg.VXg.c.V.bXzXzXzXzXzXzXzXz.^XzXzXzXz l.^Xz.^XzXzXj ~ e.r.r.r.r.rXt.r ~.r.r.r.r.r.r.rXt.^.^ N.o.b.^XzXz.bXzXzXzXzXz.b.^XzXzXzXzXzXzXzXzXzXzXzXg.oXg.oXg.cXgXg _ _XzXzXzXzXzXzXj ~.r.` F F.rXj.^XzXzXzXzXzXzXzXgXzXzXz.^.r e.r.r F F.8XD.Y 1Xq 8 t hX,.M.Z R a <XpX>.4X6 wX6 2 pXbXb ^.vX=XiXf.@Xf ^ 0Xi * u a R.,XHXl R.wXlXsXLX4X>.; ^X0.OXP m.|.2 D TXJ )Xx 5 )./.k.r ~Xt.^.b.b N.c N.b.b.b.bXzXzXzXjXj.r.8XI.Z '.n R.e.a.8 ~ ~XdXz.b.b.b.cXg.o.cXgXgXg.c.V.V.V.V.b _Xz.b.o.b.V.U.U.#.U.c.#Xg.VXg.#Xz.b _XzXzXzXz.bXzXzXzXzXzXzXzXzXzXz _XzXzXz.b.^Xj ~Xd.^.r.rXj.r e ~ e ~ e.r e.b.b.^.b _Xz _XzXz _XzXzXz.bXz.o.VXz.b _.b _XzXzXz.bXzXzXz _XzXzXz.^Xg.k.rXj.rXtXjXz.b.UXg.c.oXzXz.b _Xg.V.c.cXg.V.c.V.c.c.V.c.c.c.c.c.c.V.cXg.#.o _.bXzXzXz.cXgXg.c.o.c.o.V _ _ _Xg.oXj e.r.rXt ~Xt.r NXtXj ~.r.` F.`.` aXX 1X, E t.e.e.~.~ a a.aX-.e.eX-.e aX-X- a.~ a",
+".r.r.r.r.r.r.r.r.r.r N.r.r.r e eXj.^Xz.^XjXj e.r e NXz N.^ e e e.rXz.^.b.^.b.c.bXzXz.b.bXz.bXzXz.b.^XzXj.r e.rXj.b.bXzXzXg l.o.kX-Xq v 2 2Xn n.- XJX, R.wXDX, hX, #.} R t.~X-X-Xl 3XM #.5 # 1 x.5X3 XBX%...N.NXK.MXs.N.n =Xr =XwXyXU T hXl `XlXK TX; gXH gXUXI.`.`X-.`.`.`.8.8.H.H.r.r.rXt.r.r e.r.rXd.rXdXdXj.^.b NXz.bXzXzXzXzXz.bXz.b.bXz.bXz.bXz _Xz _ _Xg.o.#Xg.VXg.V.V.V.o.V.c.VXgXg.oXz _Xz.bXzXzXzXz.^XzXz.^.bXz l.^XzXzXzXzXd.r e.r.r.r e.rXt.XXg N e.r.r.r.r e.^.^ NXz.bXzXz NXz.bXzXzXzXzXzXzXz.b.^XzXzXz.^XzXzXzXzXz _.oXg.oXgXgXg _XzXzXzXzXj.^.^Xj e.r F F F ~Xt.^XzXzXzXzXzXzXzXzXgXzXzXz.^ e.r.r.r F F.8XI.YXn 1 U tX, h RX, t t.WX+.E.;X6X6.C.B.4.s w.@XiX=.v 0X6 0X6 0Xn.W u.a h.aXl < 3.w.w y.).@ S.x.x.O KX; : TXJ I V.|XX IXx.R.&.r e.^Xz N.b.b.bXkXz.b.b.b.b.b.bXz.^Xj.r.r.`X-.` RX1XI.8.8.r eXd.^.b _.b.U.c.cXg.VXg.c.o.c.c.c.c.V.VXg.V.o.V.c. iXu iXu i.c.V.V.I _.oXz _Xz _Xz _ _XzXz _Xz _Xz _Xz _ _Xz.b.^Xz.b.b.k eXdXd e ~.r ~.^.rXt e.rXjXz.^Xz.^Xz.bXzXz _Xz _XzXz _Xz.c.oXzXz.bXzXz.bXz.bXz _XzXzXzXzXz.o.b.z.6 N.r.rXjXz.b _.c _XgXg _.b.b _.cXg.c.V.c.c.V.o.c.c.c.V.c.c.c.c.cXg.c.c.UXz _XzXzXz _.VXg.V.c.V.c.VXg.VXzXz.o.oXj e e.r e ~.rXtXgXt.r F ~ F.8.`X-X9 ` $X, <.*.e.e.eX-.e.e a 3 R R.~ 3.~ 3 a.e.e.e",
+".r.r.r.r.rXt.r.r.r.r.bXt e.r.r.r e.^.b.^ e.r e.r.rXj.k.^.^ e.k F e.^.b.^ N.^XgXj.b.^.b.bXz.b.bXz.b.^Xj e ~ e.r.bXz.b.b.b.c l.o.k.` s v /.. 0X%XcXB :XDX,XeXe $XI h.M.a $ a a a.~ aX-X- a a a cX-.~.}.l.i.@.s.N C.a.*.Z.q 2 &.j.[.'.w $ 8XI.a.eX-.* B.Z x.nXU TX-X-.`X-.`.`.`.8 ~.r.rXt.rXt.r.rXt.rXt.r.r.rXdXo.^ NXz NXz.bXzXzXz.bXz.bXzXzXzXzXzXzXz.bXzXzXz.b.o.V.#.c.VXg.VXg.V.V.cXg.o.o.V.b.^Xz NXzXzXzXzXzXz.^XzXzXzXz l.^XzXzXzXz e e.r.r eXd ~ ~.r.b q.z.r.r e.r.r e.k NXz N.b N.^XzXzXzXz NXzXzXz.bXzXzXzXzXzXzXzXzXzXzXzXz.o.oXg.oXg.o _XzXzXzXzXz.^ e.r e ~.r F F.r ~ eXzXzXzXzXzXzXzXz.b.cXjXzXz.^Xj.r.r e F F.8X1.9.9Xp._ t h x.* $ t a UX+X> S 0Xf ^Xf S r.+.; MXC HX>.; M H &.j.j.9 : TXc a a.a t.9 b.s r.+X>.x W.OXU.~.u.`.`X*.u.`.8 ~.`.kXt ~.r.b.bXz.b.o.cXzXzXz _XzXz.b.bXzXj.rX*.8.8.`.`.8 ~ ~.r.rXjXdXz.b.b.b.#.cXgXg.V.V.V.V.V.cXg.V.V.VXg.c.c.V.c.U.c.U.c.c.UXg.c.c.#.o.cXzXzXzXzXzXzXz _XzXzXzXz.bXz _Xz.b _Xz.b.bXzXzXd.^Xd ~.rXt eXt ~ e FXjXj.b.^.bXzXz.^XzXzXzXzXzXzXz.bXzXz.UXzXzXzXzXzXz _XzXzXzXzXzXz _XzXzXz.^.IXg e.rXjXj.^.^.b.cXz.VXg _Xz _.oXg.V.V.V.V.c.c.V.c.V.o.c.V.c.c.cXg.c.o.U.oXz.bXz.bXz.oXg.c.V.c.V.c.VXg.o.b.b _.o.bXj e.r.r e.r.k l.r ~.` F.`.`.`X- ` x hXD.e R BX-.e a.eX- RX- BXVXD.e a.` aX-.e a",
+".r.r.r.rXt.rXt.rXt.r.^.k.r eXt e.rXj.^Xj.r.r.rXtXjXt.r.r ~.rXjXt.r.^.^ N N.^Xk.b N l.^.#.^XzXzXzXz.b.rXj.I qXjXz.b.b.b _.c.U.o.kXVXG v * 0...j.g xXM h.MX,XlX,X,X, 8 R RX,.eX- a a.~.eX- aX-.a #.8 a .lX4.).) C.M t H o v.E.Y.-Xw s.wX, a.aXI.a 3XD.w ' T ! g R.`X-.`.`.`.8.8.r.r.rXt.r.r.r.rXt.r e.r.r.rXdXz.^ N.bXzXz.b.bXz _Xz.bXzXzXzXzXzXzXzXz.bXzXzXz.b.b.c.U.UXgXg.V.c.c.V _ _ _.o.b _XzXzXz.^ NXz.bXzXzXzXzXzXzXz lXzXzXz.^XzXj eXt.rXt ~Xj.r e.X.z.b.r.r.r.r e.r e eXjXz.bXzXzXzXz.bXzXzXz.bXz.bXz.b.^XzXz.^Xz.^XzXzXz _Xg.oXg.b.o.b.^XzXzXz.^.^Xj e.r e e F.r F.o N.bXzXzXzXzXzXzXz.^.bXgXzXzXz.^Xj.r e ~ ~ F.`X1 y.j.Y._ xXc.w.9.9 $XGX+X> SXi.@X6Xf.@ H b.v O 2.M 2.WXe.)XeXeX, RXl `X-XD <XJ $.MXG 2.+.LX: z =Xh.2 c ) c.K.KX*.5.`XV FXt e e.^ N.b.bXzXg.o.b.bXz _.b _.b.bXz.k.rXj.r.8 F.8.`.8.k.rXt.r.kXz.bXz _.#.cXg.c.VXg.V.c.V.V.VXg.c.c.c.VXg.V.V.c.V.c.c.c.V.V.c.U.U.V.c.bXzXzXzXz _XzXzXzXzXz _Xz _Xz.bXz _Xz.b _.^ _XoXz.rXd e ~Xj.r.zXk.r ~Xj.^.^.b.^.^.o.bXz.bXzXz _Xz.bXzXz.UXz.bXzXzXzXzXzXzXzXzXzXz _Xz _.bXz.^ ~.^.rXt.r.r.bXz _.VXzXg.VXzXz _ _.V.c.c.c.V.V.c.c.VXg.V.c.c.c.V.c.cXg.b.cXz e.^Xz.b.b.o.V.c.c.c.c.V.V.VXg.V.bXz.b.o.^Xj.r e.r.r.k.X.r F F.8.`X-.8.a.l.[ ` hX-XI.eXIX-.e.e.e.e a.e.- I.e R R.eX-.e.e",
+".r e.r e.r.r.r.r.r.rXt NXt.^Xj.^Xt e e.r eXtXt.r ~.r.kXtXt N.8XtXj.X.XXx NXj.K N.^./././.6.^.b.b.^Xj e.^.XXg.b.bXz.b _.bXg.UXg N.HXl v.N.s..X>XwXBXBXD.}.WX,X,X5.w.M gXVXD aX-.aX5 # $ R RX-.a 3.K # #.F.s.).N C.*.a p G 2X+XBXKXw 9.wXD a.eX-X- B 8.Z ' T.]XU B.`.`.`.`.`.8 ~.r.rXt.rXt e.r.rXtXt.r eXd.r.rXoXj N.b.^.b _XzXzXz _XzXzXz.bXzXz.bXzXzXzXz.b.bXzXz.c l.U.V.V.o.o.V _XzXzXzXzXz.^ _ NXzXzXzXzXz.^Xz.^.bXzXzXz l.^XzXzXzXzXjXt e.r.r.r.r.r ~ F eXj.r.r.r.r.r.r.r.rXt.^.b N.^Xz.^.bXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXz.o.V _.b.^.bXzXzXz.^XzXzXj e.r.r ~ e.r ~XtXg.#.cXzXzXzXzXzXzXz.b.b.oXzXzXzXzXj.r.r e ~ F.8X1 x.- W.j.[.-XHXc.9.9 1 kXrX> M.v.@.@.@.@.v.v.= C.M t.* a u.* a.e.aX1XDXIXD.* a.e.9.W o O.y.TX2 M.+X;X..2XJXJ.% D ) 5.r.` ~ ~.rXt.^.bXz.b.bXg _.b.bXz _ _Xz.b.b N.^Xt ~.r F.` ~ ~ ~.rXtXt e.^.bXz _.o.I.c _.c.c.c.c.V.c.c.c.c.c.c.c.c.c.c.c.c.V.c.V.V.c.V.V.U.c.c.V _Xz _XzXzXzXz _XzXzXzXzXz.bXz _XzXz.b.b.^.b.^ FXo.rXd F.rXj.IXg.^XjXt ~.k.X.^.b.^.zXzXzXzXzXz _ _ _Xz.b.cXzXzXzXz.^Xz.oXzXz _.^XzXzXzXz _.^Xj.^.rXtXtXtXz.^.^.c _XzXgXg _XzXzXzXz _ _.o.c.c.c.V.V.V.V.c.V.cXgXg.V _Xz.o e e.^.b.b.oXg.c.c.c.c.c.o _.o.VXg _Xz.oXg.bXj.r ~ e.rXd.k.r F.8.`.8.` 3.a [.[.Y.1XK $XJ., ` : D :Xl.uX-X..G.e 3X-.e.eX-.e",
+".r.r.r.r.r.r.r.r.rXjXt.o.kXz.^.^ e e ~.r.rXt.r.r.XXxXx.XX* qXx qX9 ).f.$./.r.rXt.8Xk.$.UXk.b.bXz.bXj.rXt e.k.b.^Xz.bXz.bXg.UXg.bX1.DXL pXbXn.j WXKXc h.a hXD RX, $XI.]XK.,XJ : R kXU sXJ.-XlXwX. c h .. /.N G u.N *X= v.[ X3Xw s.w.Z t.a a aXD RXD.wX5XP.]XDX1.`.`.`.8 ~.rXtXt.rXtXtXtXt.rXt.rXtXtXt.r.r NXt.bXz.bXz.b.bXzXzXzXzXzXzXzXz.bXzXz.bXz.bXz.bXz.b.o.c.UXg.cXg.V _XzXzXzXzXz.^Xz NXzXzXzXz.bXz.bXzXzXz.^Xz.^ lXzXzXzXzXz.^XjXd e.r e.r.r eXt.r ~ e.r.r.r e.r.r.r e.kXz.^Xz.^Xz NXzXz.^XzXz NXzXzXzXz.^Xz.^XzXz.^XzXz _XzXz.^XzXz.b.^XzXz.^Xj e ~.r.r.r eXj.^Xj.c _XzXzXzXzXzXzXzXz.bXgXzXzXz.^.^Xj e ~ e F FXIX,X+XpXp.M.M $ tXD.M tXGXr & M 0XfX6Xi.sX= G 8 C.e aX- a a a aX-X1 R.` RX1.3., $.aX,Xe v.xX2.xXrX+XK $XI.u 3XVX1.8 3.8.H F.rXtXj.b.b.b.bXzXk.b.b _Xz _ _.b.b.b.b.^X*XtXV.8 F F.` F.r.r.r.rXjXzXz _.o.#.c.oXg.c.VXg.c.VXg.c.V.V.V.o.V.o.V.o.c.V.c.V.V.U.V.o.#.c.V.bXzXzXzXzXz _XzXz _XzXz _Xz _Xz.bXz.bXzXz.b.z A.t l.rXt.rXt ~ e e ~ ~XjXt.^Xt eXj eX@.^.bXzXzXzXz _XzXz.V.oXzXz _ _.bXz. Xz.b.bXzXz.oXzXzXz.^Xj e N N N ~ NXz N.UXzXzXg.V.bXzXzXz _Xz _ _.o.V.c.o.c.V.cXg.c.cXg.V.b.^.^.^ ~ eXz N _.o.c.V.c.c.VXg _Xz _ _.V.o.oXgXg.b.^XjXt.r.r.^.r ~ F F.8.`.`.r.aXB.m hX,.} $.a # h.~.uXlXo c | K.KX,.~ a R.e.e",
+" ~ e.r.r.r.r.rXtXt.^.kXx N.^Xt e ~.r.r e.r.r.rXt N.$ q 5X9.f.&.$.k N q ).z 3 ~.rXtX9.z.bXk.^.&Xg.z AXgXg.I q.z.I.^.bXz.b.o.cXg N.H.Z.s.W %XiXn n.- 1.iX, hXD U.ZXDX1Xl x DXl.ZXDX,X,X,.wXK hXDXMX- # #XBXe.).N.NXs.).).m.[Xc.lX3XU.'.w $ R.a.a R aX- 8.D.'.'Xw.DX-X-X-.`.8 ~.rXtXtX*XtX*XtXt.r.r.r e.r.r e.r N e NXzXzXz _XzXzXzXzXzXzXzXzXzXzXzXzXz.bXzXz.bXz _ N.o.c.o.V.o.V _Xz _XzXzXzXz.bXzXzXz.^Xz.bXzXz.^XzXzXzXz.^ lXzXzXz.^Xz.^ NXz.^Xd.r.r.r.r.r.r.r.r.rXt.r.r ~Xt e ~XjXz.^XzXzXzXz.^XzXzXzXzXzXzXzXzXzXzXzXz.^XzXzXzXzXz.^XzXz.bXzXzXzXzXzXj e.r.r e.r.^Xj.z.bXzXzXzXzXzXzXzXzXz.^Xz.X.oXzXzXzXz.^Xj.r.r e F FXD R.9.YXqXpXn.Y <.a t W H S ^X= /.N /.= G C R a.~ a.e aX-.~X-.`.~X- R R.'XwXD a.M v.sX> H.T =XZ =X..kXJ (X3.r I ) q q 5 ~Xj.k.bXz.b.b.o.U.b.b _Xz.b.b.o.b.b.b N.k.r.8.8 ~.` ~ F F F.r.rXtXjXz.b.o.U.c.c.c.VXg.c.V.V.V.V.c.c.c.V.c.c.V.V.c _.c.V _.V.V.V.U.V _ _XzXzXzXzXzXzXz _XzXzXzXz _XzXzXzXzXz.bXj.I Q eXx jXd.r.r e.rXj.rXtXj.r e.rXtX& qX@X Xj.bXz.bXz _XzXz.b.c.bXz.b.z.Q.Q.UX Xz.bXzXz _XzXzXz.bXz e.o N N.(Xk.^.bXzXgXzXz.V.oXzXzXz.b.o. X&.6.b.o.c.oXg.c.V.c.VXg.c.oXzXj.^ e e e.bXzXz.o.cXg.cXg.o.VXzXzXzXzXg.cXg.VXg.o.b.bXj eXt N.r.r.8 F F.~.`.} aXp._ E.M aX-.a a R.e.~.`.~Xl.3 hXJ.3.e.e.e a.~.e",
+".r.r.r e.r.r e.rXt.^XjXg NXt.r.r.r.r.r.r.r.r.r.r.r.r.rXtXj.k.kXt.r 3.rX*.KX*XV.KX-X9.A.A./.U.6.& i.f./.z.f.6.I.U.^.bXzXz.oXkXg.bXVXVXe.sXb..Xn.Y [X+XM h.iXD.DXDXG : c c $.ZXJ c.aX,X, c $ x $.Y .l.lXB xXe / 2.).s.W.jXB.iXXX3.>.!.9 $X,.aX-XDXI RXD.ZXl.'Xc.0 B.5X5XV.8X5 ~XtXV.^.k.rXt.u ).^.k.rXt.r.r.r.b.^.b.bXz _XzXz.bXzXz eXjXz _XzXz.bXz.b.bXzXzXz.bXzXz.b.c.^XzXzXzXzXzXzXzXzXzXzXzXzXzXz.bXzXzXz.bXzXz.^XzXzXz.c.bXzXzXz.^.b.^.^ N.^Xt e.r ~ e.r e.r.r.r.rXt.r.r e.r.r e e.^XzXzXzXzXzXzXzXzXzXzXzXzXzXzXz.^XzXz.^Xz.^XzXzXzXzXz.b.^.^Xz.^ e e ~ eXt.^.^Xz _.#XzXzXzXz _XzXzXzXzXzXz.b.oXzXzXz.^Xz.^ e.r.r F.8.`.8 $.9XnXGX4.xXp x u <Xp.[Xr H ^ /.N.NXD C t C.*.e a.eX-.e.` 3 #.~X- RXcXD.*.D.eX- h $ p ^.@.;.E.jXKX5 ) )XxXx )XXX9.5X9 N ~.rXz.b.I.I.I.UXu.b _XzXz _Xz _.b.b.b.b.^ ~ ~.8 F F F.8 F ~.r.r.r eXjXz.c.#.c.cXg.c.V.c.cXg.c.c.V.c.VXg.c.VXg.V.V.c.V.c.c.c.V.o. _ _Xz _Xz _.bXzXz.bXzXzXz _.^ _Xz.bXzXz.bXjXj.: l NXkX$.^Xt e.r e.r.rXj e.r ~Xj.7Xk ~ e.z.^XzXzXz _ _ _Xz.b.c.b.o.z _ 7.6.IX&XjXz.bXz _XzXz _Xz.b.r e.rXtXg.:.^.o.o.oXzXz.c _ _ _Xz.bXg.b.^ ZXu.o.^.b.b.o _.c.c.c.b.b e e.bXj.^.^Xz.bXz.cXg.c.cXg _ _XzXzXzXz.V.VXg.VXgXg.o.oXzXj.^XjXt ~ 3.`.`.`.X #XMX%.<Xe EX, U a a.~.e.~X-.eXIXVX- 3XKXI a a.~X-.e",
+".r.r.r.r.r.r.r.r.r.r.r.^ N ~ e.r.r e.r.r.r e.r.rXt e.rXt eXt.r.r.r.rXxX9X3XX q V.kX* N N.X.^.bXz.^.b.b.^.oXk.b.b.b NXzXzXg lXg N ~Xl.d.s % ^X+ zXr.-X7 $ $XD.Z U c.ZXJXKX. cXl c DX3 :XcXc.9.-X. XM.[.[.j.E.EXGXnX<.[XH.,Xc.,.!.w ' #X- 3X,X- 8XDXD.ZXl.0Xm ! $ mXo T ) q I q./.f 5 I./ 5 I.$.RXtXt.r.k e.k.b.b.bXzXz _.b.b.^Xz.^XzXzXzXzXzXzXzXz.b.b.b.bXz.^Xz.b lXzXzXzXzXz _.o.V _ _.b.b.b.b.o.V.oXg.o.o.bXzXzXzXzXd l.bXz N.bXzXz.^.b.^.^ ~.rXt.r e.r.r.r.rXt.r.r.r.r.r e.r.r eXj.^XzXz.b NXz.bXzXzXzXzXzXzXzXzXz.^XzXz.^XzXzXdXzXz.b.bXz.bXzXz e.r.rXj.^Xz.VXzXj.oXz _ _XzXzXzXzXzXzXzXz.o _Xz.^XzXz.b.^.r e.r.8.8 F.`XIXK oX+ H.pXnX4.w <.pXr &X2 0.=.N 8.* R a.e R.*.e.~.e 3 3.8 c.e a tXJ s 8 8 C < x._ UXL O O O yXDX-.8.`.`.`.`.`.8 ~ ~ ~.`Xt.^Xz.U.#.#.U.6 _Xz _Xz _.b.b.b.b NXzXj ~ ~ F.8 F.8 ~ ~ ~.rXt eXtXjXjXg.c.c.c.c.V.cXg.c.VXg.VXgXg.c.c.c.V.V.V.VXgXg.V.cXg _.o.UXzXzXzXzXzXzXz.bXz _XzXz _Xz.oXz _.b _.bXz.b.X j.X.XXk.:Xt.r.r.r.r.r eXj.bXt e.r jXj.kXtXj.r.b.b.^XzXzXzXz.oXg.^.b N N.:.z.IXg.^Xg.^.^XzXz _Xz.^ N eXt.r.r q j.XXzXgXz _XzXg _Xz.bXz.b.b.bXg.b.:.z.X.&X&.#.VXzXz _.b.bXj.bXg.^XzXzXz _Xz.b.o.o.V.o _ _XzXz _.o.V.cXgXg.c.V.V.o.b.^.o.^Xt ~.8.8 F.~X9 `XHX% [ [.- x `.] :Xc 3.a 3 3X-.e aX- R.e.e.e a.eX-",
+".r.r.r.r.r.r.r.rXt.r.r ~.b.rXt.r.r.r.r eXt.r.rXt.r.r.r.r.r.rXt.r.r.rXX.X q q.f.fXXXtXt.^.b.b.b.b.bXz.^Xz.U dXgXz.^.b.b.b.oXk.c.b ~X5 v 0..Xn H.[Xc.[.- x h.a.M RX,.M #XD 3XI 3X-X-.aX-.a.e t.} $XBX..- V.l :.YXBX7 VX<.[Xh.O.3 @XU =XOXc.,XJ 3 3.a RXD.w sXlXPX..5.5.8 : qX9 q.$XxXkXk.RX9 )X9X9Xk.rXt.r.r.r.k.o NXzXzXzXzXzXzXz.bXz.bXzXzXz.bXz.b.^.^.^.^XjXjXj.^.^ l.^.bXzXzXz _.oXg.cXg.cXg.VXgXg.o.V.o.o.b.bXzXzXzXzXzXg.b.bXzXz.^.^Xj.^XdXj e e e.r.rXj.r e.r.r.r.r e.r.r.r e e.rXj.^.b.^XzXz.^XzXzXzXzXzXzXzXzXz.^XzXz.^Xz.^XzXzXz.^Xz.bXzXzXj.b e e e.^.o.c.I.cXzXz _ _ _XzXzXzXzXzXzXzXz.o.XXzXzXz.^.bXj e.rXt ~ F.`.~.` $X+.EX2Xr.xX4XpX+ yXpX2X> 0 v C.* a R a R a.e B.eX1.8.e.eX-XDXG t.).s.N.N C.MXe U.W / 0 OXL mXI.8.8.8 ~.8 F.r.r 3.8.8 ~Xj.bXz.b.bXz.oXgXzXz.bXz _ _.b.b.bXzXjXt ~.r ~.r ~.r.r.r.r.r e.r eXt eXk.o.V.c.c.c.cXg.V.c.c.V.c.c.c.c.V.c.c.V.V.V.V.c.V.V _ _.V.bXzXzXzXzXzXzXz _.bXz.b.b.^Xz.o.o.oXzXz.b.bXz.tX&Xx Z.X.r e e e.rXj.^XzXjXj.rXj jXt.rXj.k.r.^.b.b _ _Xz.^.VXgXz.b.b l.:X@ d.^.bXzXz _.bXz _Xz.bXz.r.rXj.X.z.:.U.^.#.^XzXz.V.bXz _Xz.bXz.^Xz NX .:XgXx./Xz _ _ _.bXz.bXzXg.o.bXz.b.bXzXz _ _Xz _Xz _Xz _Xz.o.VXg.V.c.c.VXg.V.c.oXz l.^.r.8.`.8 ~.~X9 :.[XpXqXe h R.MX,Xl.K 3XI.eX-X-.~X-X-.aX-.e a.~.e.e",
+".r.rXt.r.r e.r.rXt e.r.r NXt e ~.rXt.r.r.r.rXt.r.rXt.rXt.rXt e.rXtXtXj.rX*.^ N.kXgXtXj NXz.^.^Xz.b.b.b.b.U.$.o.bXz.b.b.b.o.U.c.b ~.DXG...s ^X< nXBXB hX,X, R R.aXD.aX,XD.a aXI.eX-.eX- aX-.eX. K.G.,XXXXXMXM #.l.l.l.l.- n.- yXKXK.' $X, h $X- RXD.a B.w.w.' g '.e.`.`.`.`Xt.r.r ~.rXj.k.rXt ~.r.r.rXt.r.r.r N.oXz.bXz.b.b.b.b.bXzXzXzXz.^Xz.^Xz.^Xj e e e e.r.r eXjXg.^Xz.^XzXzXzXz.o.VXg.cXgXg.V.o.o.bXzXzXzXzXz.bXz.bXzXg.o.b.^Xz.^ e.r eXt eXj ~ ~XkXk.z.rXj.r.r.r.r.r.r.r e.rXj.r.^Xz.bXzXzXzXzXz.^XzXzXzXz.^XzXzXzXz.^Xz.^XzXz.^Xz.^.bXz.^Xz.^.^Xj eXz.bXg.U.6. Xg.b _.o.VXz _XzXzXzXzXzXz.o.oXz.^XzXz.bXj e e.r ~.8.`.`X- t.w.j ..4X>Xn o.EX>X+.; WX0XLXG xXK.aXD.}XlX,XI c 3.~ R aX-.* = WXb.) / 2.sXeXn U.N / OXaXL `X-.8.8.8 ~.8.8 ~ 3X* ~ ~.r.^.b.bXz.b.b.oXg.o.b _ _Xz _.b.o.b.^ e.r e.r.rXt.rXtXt eXt.rXt.rXt e eXk _XgXg.cXg.V.c.c.c.cXg.c.c.c.c.c.c.cXg.c.c.c.c.V _Xz.o.oXzXz _XzXzXzXzXz.bXzXzXzXz.b.oXj./.#Xz _.^Xz.b.b l.Q.X e e.r.r.r e.^Xz.^.r.rXjXtXk.& q l eXtXz.^XzXz _ _ _.V.o.b.^.oX@ ZXz.X iXz.bXz _XzXz _Xz.^Xz e.r.r.& q.7.6.^.cXzXz _ _XzXz _.b.bXz.bXz.U.z.t ZXg.IXzXzXz.bXzXz.^Xz.c.^Xz.bXz _XzXzXzXzXz _Xz _Xz.b _.VXg.V.VXg.VXg.V.V.oXg.V.c.^Xt ~.8.`.`.`XM `Xp Xe E u aX-.e.e a.~.~.e.e.e.e.eXI.e.e a.e.e.}.u",
+".r e.r.r.r.r.r.r ~Xt ~.r.^.k.r.r e.r.r.r.r.r.rXt eXt.r.r.r.r.rXt.r.r ~Xj.k N N.^Xk.^Xz.bXz.b.^Xz.^.^.b.^.b.bXz.b.^.bXzXz.oXk.c N ~XlXe ^ ^.@ WXH.h.-X,X,X, R hXI hXDX-.eX,X-XIX-.~ R.e.e a.a.eXM Y.eXIXM 3.} # #.l #XB.- y s.w.W 8 R R tX-X- a RX1XD 8.nXl sXK T.`.` F ~.8.r.k.rXt.rXtXtXtXtXtXt.rXt.rX*Xt.r.^.XXjXzXz.bXzXz.b.b.b.bXz N.b.b.^.^Xj e.r e.r.r.r e.r.r.oXt.^.^XzXzXz _.oXgXg.cXgXg.cXg.o _Xz.^XzXzXz.bXz NXz.X.oXz.^.b.^Xj.r e.r.r ~Xt ~ e.r.zXj ~.r e.r.r e.r.r.r.rXjXj.^Xz NXzXzXz.b.^Xz.bXzXzXzXzXzXz.^Xz.^.^XzXzXz.^.^XdXz.b.^XzXz e ~ e _Xg _.o.U.UXg.V.VXg.V.b _ _.b.bXzXzXz.o.XXz.^Xz.b.^ e e.r.r.r.8.`.`.`.a RXq.s 0 S w.@.@ o w v ^X0XpXw.9XJX3 VXl :X3XKX5.5.e.e B t C o *X=X6X>.4X> 0X>.. v 2.s b T 3.8.8 ~.8 ~.8.8Xt.r.r.`.8Xt N.bXz.b.b _.o.o.oXzXzXzXz.b.b.b.b.^ e.rXtXtXt.rXt.rXtXt.r e.r.r eXtXt.U.b.V.cXgXg.cXg.c.c.cXg.VXg.c.c.c.o.V.V.VXg.V.V.oXzXz.V _XzXzXz.bXzXzXzXzXzXzXz _Xz _.b.V.o.6.cXz _XzXzXzXzXgXgXj e e eXj.^.^Xj e e.o q qXt ~.r.r ~Xj.bXz.bXzXzXz _XgXz _.b.zXu.t.6.( l.^.^ _XzXz _Xz.^.oXz ~.o PXg NX .(Xk.bXzXzXz.b _XzXz _XzXz.b.^.zXg.^.:.(Xz.oXzXzXzXzXzXjXzXkXz.b.bXz _Xz _Xz _XzXzXzXz _Xz _Xg.c.V.VXg.V.o.V.V.oXg.c.b.bX*.8.8 ~.`X-X*Xc 1.i UXD t.e a.~.~.e.e a a a.e a.e.aX,X5 c.ZXI aXI",
+".r.r.r.r.r.r.r.r.r e.r.rXt N.rXt.r.r.r.r.r.rXt.rXt.r.rXt.rXt.rXt.r.rXt.^Xz.^XzXzXg.bXzXzXz _.bXz.o.b.bXz.b.^.bXz.b.b.b.b.o.cXgXz.8X5XsXb.@.j nX#.S.lXD UXDXDXMXI.}.aX-XDX1X-.~ 3X-.eX-X-X-.e.a.eXl.,.eXl.u.~ aXMXM x.-XcXG.w.DXDX-X-XI RX-X-XDXIXD R 8.nXm TXcXl.~.`.` ~ F.rXt.r eXj.rXt.rXtXt.rX* ~Xt.r.rXt.r.b eXjXz.^Xz.^.b.^ NXz.^.^.^.^.^Xj e.r.r eXtXtXt eXt.r N e.r.^XzXz.b.b.V.VXgXg.V.o.o.o.o.bXzXzXzXzXzXzXzXzXz _XgXzXz.b.^ e.r eXt.r e.r.r.r.rXj ~Xt.r.r.r.r.r.r.r.r e.^.^ NXz.^.^.b NXz.bXzXzXzXzXzXzXz.^XzXzXzXz.^XzXzXzXz.^.b N.^.^Xj e eXd.b.#XgXg.o.o _.c.o.c.VXg.VXg.o.o.o.bXz.o _.^Xz NXzXj.r e.r.r.r ~.`.`.`X- t.w._.s ^.@ H wX> 0 vXe u 1 a R.a hX-.aX-.D.5X-X1.eXDXK.*.N.).v ^.@X>X>.4Xn ^.sXi b OXcX,.a.8.8XV.rXV.r.rX* ~ ~ ~.r.k.b.bXz _Xz.bXgXg _.o _ _ _.b.b.bXzXj.r e.r.r.rXt eXt.r eXt.rXt.r e e.kXg.b.c.c.c.VXg.o.oXg.o.o.o.oXgXgXg.V.c.c.c.V _XzXzXzXz.cXz _XzXzXz _XzXzXz.bXzXz.bXz.b _Xj.o.c _XzXzXzXz.oXz.o.VXz.^.^Xz.bXzXj e e ~ q.^.z eXt ~XtXt.^.b.^XzXz _Xz _.cXz _XzXz.^XzXjXz.bXz _XzXzXzXz _XzXzXj.^.oXkXkXg./.I.I.b.b _XzXz.bXzXz.b.b.b.b.z Z./.oXg.(.^.^Xz.o.o.^XjXj.oXgXz.b.bXz _ _XzXzXzXz _ _XzXz _.VXg.c.cXg.V.c.VXg.V.o.c.#Xz N.^.8.8.8.8.` R E U E U.e.aX1.e.eX-.e.~.e.e.eX- RXl #XK 1 :XMX5.9",
+".r.r.r.r.r.r.r.r e.r.r.r ~.b.rXt.rXt.r.rXt.r.r.r.r.r.r.r.rXt.rXtXt.r eXjXz.^XzXz _.VXzXzXz.b.^.^XjXz.b.^Xz.b.bXzXz.b NXz.o l.o.^ F.ZXL.) ^X%.j.-.- h.MX,X1X,.K <.a.a 3.eX- 3XD.eXVX-.e.~.e.~ a.~XIXIX- 3XlX-.a c x `.jXK.w.W 8X- a.~.aX- R R R R.aXD.w '.0 gXlX1.`.`.8.8.`Xt.r.r.rXtXtXt.r e.r.r F.rXt.r.rX*.r.X e.^.b.b.b N.X.^Xt e.r eXt e.r.r e.r e.r.r e.rXtXt.r.^Xt e.^XzXzXzXzXzXz.b.b _.bXz.b.bXzXz.^XzXz.^XzXzXz N _.XXz.^ NXj e.r.r.r.r.r.rXt.rXt ~.r e.r.r.r.r.r e.r.rXt N.k N.^.^.^.^Xz.^Xz.^Xz.^XzXzXzXzXzXz.^XzXzXz.^XzXjXzXz N.b.^XjXj e.rXd _.Q.I.c.o.o.o.c.V.o.V.VXgXg.VXg.o.oXz.X.XXzXzXz.^.^ e.r.rXt.r.8.`.`.~.~XI R v 2 2X= 0 2X= 2.N.w t.MX,X-.e 3.}.e 3.uX-.e 3 B., yXp.N.s.@X4XnXp.x.;.@Xf.v 0XnX+X,X- 3.`.8XV.rXtXt.r.r.8 F ~XtXj.b.b.oXz.bXz.c.o.bXz.bXz.b.b.bXz.k eXt.r eXtXt.rXtXtXtXt.rXt eXt.rXt.bXg.b.c.cXg.o.oXz _XzXzXzXz.o.c.c.c.c.cXg.V _XzXzXzXzXz lXzXzXzXzXzXzXz _Xz _Xz.bXz.U.c.b _.b.bXz _.VXz _XzXj.U.V.^Xz.b.b.^Xj e e.r e e.oXt.r eXtXt.rXj N.^ e eXzXzXg.c.^XzXzXzXz.b.o.^XzXzXzXz.oXzXzXzXz.b eXj.^ N N.^.^ N.c.bXz.^XzXzXzXz.^XzXz.b.bXg.b.o.^.^.o N.b _.bXz e e eXg.bXz.b.^XzXzXzXzXz _.bXzXzXz _ _Xg.c.c.cXg.cXg.V.cXg.c.c.U _Xz.^.r.`.`.`X-.` Xe h a.eXD.a.e cX1.~X1.} R aXD.eXI #.~X-.aX-X, c 3",
+".r.r.r.r.r.r.r ~.r.r.r.r.r N.r.r.r.r.rXt.rXtXt.r.r.rXtXtXt.r.rXt.rXt.r.^XzXzXzXzXz.cXz.^.^.b.^.^ eXj N.b.o.z.o.bXz.bXzXz.o.cXg N F c.).WXq z k.- 1 U.M.D R $.}X- RXI R aXD.e R.u.eXV.e.~X-X-.e.~.a.8.~ c.K.e.u #XMXKXUXGXa.D a aX-X-X-XD.e aX- RX1 8Xa.wXOXc R R.`.8.8 ~.8.rXtXtXt.rXt ~XtXt ~ F.8 ~.8.rXt.r.rXzXtXz.b.bXz.b.^ e e.r eXtXt.r.rXt.rXtXt.r.r.r e.rXt.r.^.^Xt.bXzXzXzXz.bXzXzXzXzXzXzXz.bXzXz.b.b.bXz.b.^Xz.b.oXg N.bXz.k e.r.r e ~Xt.r ~.r.r.rXt.r.r e.r e.r.r.r.rXt.^.^.^.^XtXtXj.^XzXz.bXzXz.bXzXzXzXz.^Xz.^.^XzXzXz.^Xz.^.X.^XjXt ~ ~ e ~Xz.c.U.o.o.VXg.V.V.V.c.V.V.V.o.VXg.bXz.o.b.^ N.b.^Xj.r.r.rX* ~ F.8.`.`.`.~ BXl.s / /X= /.N.N.N U R.~XD.e.a aXI.uX-.e.u T D.eX, 1 UXLX>Xh MXnX> S.+.J 0 2Xn y.a.a.}XI.8.8.r.r.rXtXt.rXt ~.rXt.^.o.bXz _.b.b.U.V.bXz.V.b.bXz.b.^ e.rXt e.r.r e.r.r.r.r.r.rXt eXtXtXjXgXgXzXg.cXz _ _XzXz.b.bXzXz.o.c.V.b _.V.V.oXzXzXz _Xz.b.cXzXz.bXzXzXzXzXz.bXz.bXzXz. .U.cXzXzXz.oXzXzXzXzXz _.c.^.b.b.b.^ e.r eXjXj.rXj ~Xt.r.r ~.r e.r e eXjXjXz.^.c _ _XzXz.b.oXz.^ _.b.b _Xz _Xz _XzXz.b.r e.k.^ N.^.b NXg.^.b.b.b.^XzXjXj.^XjXjXj e.^Xj eXj NXz.b.^.^.^ e e eXk N.b.bXz.bXz _XzXz _ _XzXzXz _.oXg.VXg.c.cXg.VXg.V.c.c.c.U.c.^ N ~.8.8.8X-.a.F._ U.i.MXD aX- DXl.e 1 : 3.eXJXDXD :XM.a x :.e.e $",
+".r.rXt.rXt.rXt.r.rXt ~Xt.rXt N.r.rXtXtXt.rXt.rXtXtXt.rXt.r.r.r.rXt.rXtXj.^XzXzXzXz.UXzXzXz NXjXt.rXzXzXz.IXg.#.^.bXz.bXz.b lXg.^ F : n.y.h.T.[.-Xq $XDX,.aX,XI.a hX1.aXlX3XlXIXI c RXI.~.e.~X- aX-.a 3X-X*X- #.K `.- y.w.ZXI B.~.~X-X-X1.e B.*.aX,.Z.n.n m.Z RX1.`.8.8 ~ F.r.k.rX*Xt.rXtXt.r.r.8 F ~.8 ~ ~ ~.r NXj.b.bXz NXz e.rXj.r.rXtXdXt ~.r.r.r.r.r ~Xt.r.r.r e.kXj.r.^.^.^.^.^Xz.bXzXzXzXzXzXzXzXzXzXzXzXz.^.bXz.bXz.^ l.b.^.b.^Xd e.rXtXtXdXt.r.kXtXtXtXt.kXjXtXt.^XtXj.kX*Xj.^.kXj.^.^.kXg.XXg.b.oXgXgXgXg.o.o.o.oXgXg.oXg.o.oXg.X.o N.^.^.^.^ lXgXz l.c.#.U.U.U.U.U.U.U.U.#.U.U.U.U l.V.z l.oXgXgXg.b.^.^.k.^.k.uXV.HXV.8.8XI.w s O.s.s.s.sXs.ZX, c T.u R.MX1.a.a.` :X1 c.2.a.a CXs.; z.h M M.T.+.x vXn.s.qXGXJXl.`XIX*.KXVXtX*.r eXt.r.rXt.rXj NXzXzXzXzXz.UXzXzXzXzXzXz.b N eXtXtXtXt.r e.rXt eXtXt eXt.r.rXjXjXzXk.b.b _.b.bXzXzXzXz.bXzXzXz.b.b.bXz _.b _XzXzXzXzXzXz.o.o _.bXz _.bXz.bXzXzXz.b.oXz.U.6XgXzXzXz.bXzXz.b.bXz.b.UXz.bXzXzXj e e.^XjXt e eXt e.r.r e.r.r.rXj.r e.^.bXz.UXzXz _XzXzXzXzXzXz.bXzXzXzXzXzXzXzXzXz e.r e eXt eXtXz.^.^.bXz.^ N.b.^ e.r eXt.r e.r e.rXj.^.b NXz.^Xj e.r.^.oXz.bXzXzXz.bXz _XzXz _Xz _Xz.oXg.oXg.V.V.o.V.c.c.V.c.o.I.o.c.b.^.r.8.8.`.a c.g._ h.a a a.e.~.~.` #.` # R.e.5X,.~X5.a.e :X3.e.a k",
+"Xt.r.r.r.r.r.r.r.r ~.r.r.rXt N.r.r.r.r.r.rXt.rXt.r.rXt.rXt.r.rXt.r.r.r.kXzXz.^XzXz l.bXz.b.^Xj e e.^.^.^.b.b.o.^.bXzXzXz.b l.c.b.H `Xc.1Xp.T nXK 1Xq.aX,XI RXKX, 1XD :X,.%Xc : D ` D c 3XD 3.eX-X- 3 3.a.u 3 #.lXcXJ.w.w.w.*.~X-X- RX- R a R.a.D.Z.w.w.wXO RXI.`X-.H.8.8.`.u.8X* ~XtXtXt.r.k ~ ~ F ~ F.8.r.8.r NXd.X.b.X.b.^Xj.kXdXd.r.rXt.r.k.r.k N N.^.X N.^.b N NXx.X.b.X l.z.z.QXg l.c l.U.c.U.c.c l l.c.c l l.U l l.U l.I.o.zXg.X.b N.b.X.k.k.^.k.k.^.^.k.^Xd.k.^Xj.k.^.k.^.^.kXjXj.k.^.^.b.o.X.b lXg.o.b _.b.b.b.o.X.o.b.b.b _Xz.b.^.^XjXjXtXjXd _.Q.o.b.U.c.c.c.c.c.c.c.c.c.c.c.c l.c.o.b l.o.b.X.b.b.^XjXjXt.kXt.r.H.8.H F.H.8X1.'.W.sXL.dXs C 8XI.u.u.ZX1 R 3XD R.,X5 'X1XlXIX, $XrX>X+ z.L.+.T.EXf o.@XGXw T.]X. ( Q 5 f Q.AX@Xx N N.X N.X NXg.U.U.U.U l.c. .U.U.U.cXk lXgXg.^.k N.^.^.k.k.kXjXtXj.k.kXj.k.^ N.b.b.z.o.b.b.b.bXz.bXzXzXzXzXzXzXzXzXzXz.bXzXzXz.^XzXzXzXz.c.oXz.bXzXzXz _Xz.o.^.oXz.b _.^.oXz.^.o _.bXzXz.bXzXz.b lXz.bXz.^XjXj.^.^Xt e ~Xt e ~.r eXt.r e ~ e.r e.^.b N.VXzXzXzXzXz.bXzXzXzXz.bXz.b _ _.^Xz.^.^ e.r eXtXj.rXt.^Xj eXjXj.^Xz.bXj e e e e e e.r e.r.rXtXj.^.^Xt e.r e.r.o.b.b.b.b.b _XzXz _ _XzXz _ _.o.o _.VXg.VXg.c.VXgXg.c.c.#.V.c.b.^.r.` ~.` a $XG E U a a.e.e.~.~.~X- c.e.e.~.eXI.e.e.~ a.eX- a aX-",
+".r.r.r.r.r.r.r.rXt ~.kXt ~.r.X.rXt.r.r.rXt.r.r.r.rXt.rXt.rXtXtXt.r.r.r.^ NXzXz.oXz.b.o.^ NXj.rXtXj.b.^.b.^.o.^Xz.b.b.b.b.bXgXg.^.HX1XB.TX<.T.-XK $X,.aXD R.'XDXJ : k cXK : c : DXK.a.eX-X- 3X1.eXIXD.a.} # # `.[ y.wXL.ZXD R.~ RX-X-XDX, R $.9Xc T gXO m.`.HX1X*.uX*XV ).z.kX9.X.5 NX9.5.K.X N.k.kXtX*.k.k.^Xx.XXgXg l.b.^Xo.^Xd.rXt.r.XX9.k ~X*.r.kXtXtXt N.^.kXtXj.^ eXt.^Xz.^XzXzXzXzXzXzXzXz.^Xz.^.^.^.^.^XzXz.^Xz.^XzXg.^.^XzXd.k.^ ~ ~ e.r.rXx NXtXt.r.r e.r.r.rXt FXt.rXt.r ~.r e ~ e.^.^Xz.^XdXz.b.oXzXz.bXz.^Xj.^.^XzXzXzXz.^ eXdXt eXjXtXg ~.^ eXz.o.V.o.VXg.c.VXg.V.o.VXg.V.V.o.bXz.o.oXzXz.^.b.^.r.r e.r.r.r F F.8.H.~.H.~.wXL.N._.N t t R 3XI.e.`XD BXlXJX-X5 DXl.~ $ c 1 n.[.W.;.TXrX2 ^ 2.v O b.9.ZXI.XXdXxXoXdXxXxXxX9Xj.r.r e.rXjXj.^.b.b _ _ _.o.c.b.b.o.o.b.o.b.b.k e.k.k.kXjXjXt.r.rXt.^.k.^.b.bXgXkXg.IXg.U l.c l.U l.U.c l.U.U.U.c l.U.U.c.c.c.c.c.cXg.c.o.#Xg.o.o.VXgXg.o.^.o.c.6. .bXzXz.bXzXz _XzXzXz.b.bXzXz l.o.^Xz.b.^.^.^ N.k eXjXjXj.r.r eXt ~Xt e.r e e.^.b.b.o l.b _.bXzXzXzXz.b.bXz _XzXzXzXz.b _.bXj e.r e.r.r.rXj.^.r e.rXj eXjXjXj.r.r e.r.r.r e.rXt e eXjXt.r e F e e.rXz.bXzXzXzXzXzXzXzXz _XzXz _Xg _Xz _.o.c.c.c.V.c.V.cXg.U.c.c.V _XzXt.8.8.r.e #Xq U.} <.e.e.e.e.e.~.~.e.e.e a aXI.e a.e 3X-.e.e aX-",
+".r.r ~.r.r.r.r.r.r ~.r.r.r ~.^.k ~.r.r.r.rXt.rXt.r.r.r.r.r.r.r.rXt.r.r.^Xz.^Xj.^.b.b lXz.b.^.k.^.^.b.^.b.b.^.b.bXz.^.b.^.bXg l.b.r.u.1Xr.j.TXw.YXc h $ aXDXD.MXD x.~XDX- cXI R 3 $.u.uX- :.ZXI.uX, $Xl c.l `X7XH nX0.j oXG s.D.DXDXDXD RX,XD sXl.!X$.O YXy.]Xl ) 5X9 ).8 } 5.$ q.f q q.&.r.k FXt ~.8 F.8 ~ ~.r.kXg.X.^Xz ~ ~ e ~.` F ~.r ) NXx.8 F.8 ~XjXtXj.^ N.^Xj.k.^.rXdXz.^.b N.bXz.b.b.b.bXz.b.b.b.bXz.b.bXzXz.^.^XzXz lXz.^.X.b.bXj e.r.r.r.rXt N.z ~Xt.rXt.rXt ~.rXt.r.r.rXt.rXtXt.r.k.b NXz.bXzXzXz.^XzXjXzXzXz.bXzXz.b.^.^XzXd eXj e.r e.IXg e.r e.o.VXzXz _.oXg.VXg.V.c.V.o _XzXzXzXzXg.b.^XzXz.^.^Xt e.rXt.r.H ~.8 F.8 F.`.`XD x.W.) u.*.*X1X-.8.~ DXl RXcXlXD.e.e.D cXJ `., s M = M.4X> .X=.v OXG.0X-.H.r.H e.rXd.r ~.r e.r.r e.r.rXjXj.^.b.bXzXz _ _Xg.b.o _ _XzXz NXj e.8Xt.r.r.r.r ~ F F.rXtXtXtXj.^ N.bXz.cXzXzXzXzXzXzXzXzXzXzXz.bXzXzXzXzXz.b _.b.b.b.b.b _.b.I.oXg.oXg.o.o.c.c.c.U. iXg.U.U.U.c.U.U.c.U.U.cXk.cXg. .c.cXgXg.o.X.o.o.b N.b NXj.^.^ e.r e ~ ~ e ~.^.^ N.^.o.b.^.^XzXz.bXz.bXzXz.bXz _.b _.bXz.b.^ e e e.r e.r e.k.^.r e ~Xj.r.r.r.r eXt e e.r e.rXt e.r.r.rXj.r.r ~.r.r e N.bXz.bXz _ _ _.b _ _Xz.b.VXg _Xz.V.VXg.cXg.c.cXg.cXg.#.c.V.c.oXzXt.r.`.r.e #Xq E U a.e.eX-.~.~.eX-.~ a.`.~ c.H.~.~.eX-.e.~.e.e.e",
+".r.r.r.r.r.r.r.r.rXt.rXt.r.rX* N.r.r.rXtXt.r.rXtXt.rXt.rXtXtXtXt.r.rXtXt.^ NXz.b.^.bXg NXz.^XzXzXz.b.^.^.bXz.b N.o.oXg.o.oXk.UXk.5XI.Y.. v.1.1.- k ` x c c $ $ $X5XM.5.uX, 3 R 3XD R cXIX3XJ.3 m.HX1X,XDXM # .[X8X> w.; vXa.wXs R B.e.* a.e.D.Z.'XU.Z 4.k.2 q.uXJ.R.$ ~ q 5 I q.A q.X 5XtXtXtXtXt.r.r.r.rXtXj.kXg.^.b.^ e N N.^ N.k FXtX* N.r.r.5.r.XXj.X ~.zXkXgXkXgXk.r e.^.b.b.^ _Xj.bXzXzXz.^Xz.bXzXz.bXz.^.b.b.b.b.b.^Xg.^.b.^.^ NXd.r e.r.r.k.r.r F.k.r.r.r.r ~Xt.r ~Xt ~.r ~.r.r ~ e.^.^.b.^.b.^.b.bXz.b.bXzXz.^.^.^Xd.^.b.^.^ e ~Xj eXj.z d.I F eXz.b.oXzXzXz.VXg.VXg.VXg _ _XzXzXzXzXzXg _XzXz.^.b.^Xj e.r.r.r.r ~ F.8 F.H.8X1.~ s.w.)Xs t RXD.8X1.e c m.~ 3.a aX- R RXKX5XD.e x.M.Y JXnXfXnX=.v.s v 9.Z.H.rXt e FXd.rXtXtXtXtXt.rXj eXtXj N.b.o.o.bXzXz.oXgXz _.b.b.b.bXzXj.r F.r.rX*.r.r ~ F ~.r.r eXj.^Xz.b.b.oXg.b.b.bXz.b.bXzXzXz.bXzXz.bXzXz.b.bXzXz.bXzXzXz.b.bXz.cXzXzXz.bXz _Xz.bXz.^.#.U.b.^XzXzXzXz.bXz.oXz.o.o.b.o.z.o.o.o.o.o.o.o.o.o.XXgXk.o.zXk.^.zX@.b N.b N.UXkXgXg.6 l.c.cXgXg.V.o.o.o.b.b.b.b.^Xz.^XzXz.^.r.r.r.r.r.r ~.^.rXtXtXtXt eXtXt.r.r.r.r.r.r e.r e.rXtXtXt.rXt ~.r.r e.^.^.bXz.bXzXzXzXzXzXz _ _Xg.c.o _.oXg.c.c.V.V.V.c.cXg.c.#Xg.V.c _.b.^ ~ ~.8.` cXq U U.e aX-.e.~.~.eX*.~X-.a #.uXI.~.e.~.~.e.e.eX-.e",
+"XtXt.rXt.r.r.r.r.r.k ~XtXt.r.r N.r.r.r.r.r.r ~Xt ~.r.r.rXt.r.rXtX*.kX*.^ NXgX9XgXgXg.I lXk lXkXkXkXg.UXk.IXu.U.cXgXgXgXg.o l.UXg.k 3 v.W...;.1Xc `.i hX, B.a.a R R R.aXI.a R.eXIX- aXDXDX1.,.3XD.H BXV 3XX # >.[ 0.P 0X>XCXG sXa.ZX1 tX- t R.Z.w.'XO B.2X1.u.`.8.8.r.8X*.uXtX*.^ q.kXt.rXtXt.rXt.r.r.r.rXt.r.rXt.o.^.bXj eXgXg.o NXk.`Xk N.z.kXtXk NX9.oXj.^.z.cXk.z.o l ~ e.r.^.^.b l.^.b.bXz.b.bXz.b.^.^XzXz.bXzXz.^.^.^.^.c.XXgXg.XXz e.k FXtXt F.r.rXtXtXk.IXtXt.r ~.kXtXt.rXt.rXt.r e.k.^.^.b.bXd.b.^.#.^XzXz.^XzXzXz.^.bXz NXjXt e ~.^Xj.^Xj.QXz.r e.IXj.bXzXzXz.o.c.o.VXg _ _XzXzXzXzXzXz.cXz.bXz.bXz NXj.r e.r e.r ~ F F.8Xx.uXVXlXD.E.)Xe.M.eX1.~.H RXI R.eX-X- a a.e R R.eXDX, $XK U.W.. 0 0...s v.E TX-XV.r.rXj.r ~.r.r.rXt.rXt e.r.r e.k.b.bXg.o _XzXz.VXg _.b _.b.bXz.^.r ~ ~.r.rXtXt.r.r.r.rXtXtXt.^ N.b N.b.o.o.b.bXz.bXz _.b.bXzXz _.bXzXzXzXzXz.^.bXz.bXzXzXz.b.o.VXz.bXz _Xz.bXz.U.oXz.bXzXz.b.b _.b.bXz.bXzXz.b.bXz.b.cXz _ _XzXz.bXz.b.b.b.b.b N.r eXkXgXjXjXtXt e N.^Xj.^Xk.b.b.o.o.o.o.oXg.c.c.U.c.U.U.U.U.UXkXg N N.b N N N NXx.k.kXtXt.rXtXt.r.r.rXt.r.r.r.r.r.rXt.r.rXt.rXt.rXj.r.r.X.b.b.b.b _.b _Xz _XzXz.o.cXg _ _Xg.c.c.c.c.V.c.VXg.V.U.c.c.V.c.VXz.^Xt FXt.eXM._ E.} a.e.~ R.~.e.~.e.eX*.` R.`.~.e.~.e.e a.~.e.e.e",
+" ~ ~.r.r ~.r.r.r.rXt.rXtXt.kXj.X.K.^.k.^Xo N N NX9.XX9.X NX9.X.X.^ N.^.^.^.^Xz.o.b N.oXgXz.b NXz N.^.b.bXg./.o.^XzXz.bXzXzXg l lX* 3Xs.s ^ MX0XK V h 3 h 3XD.M.a RX-.uXDX-.eX1.a R.a #Xl K.,X-X1XV.~.u 3XM.lXBX2XA.v.BXfXr W y v.w.w.ZXI.*XD.w.w.!Xl.n :.~.u F.8.8.rX*.rX*.rX*.r 3Xt.rXjXt.r.r.rXtXtXtXt.rXtXtXt.o.^.b.^.r.^.kXt.^.kXt.r ~ ~.8Xt ~.k ~XtXj.r e.^.b.bXj.oXdXj eXzXzXx.o.bXz.^XzXzXz.^Xz.bXzXz.^Xz.b NXz N.bXz.z lXg.I.(.X.b eXt.r eXt ~Xj.rXg.^ ) 7.kXt.r ~.8 F.kXt ~ eXtXj.^.^ q.^ e.b.b. .b.b.^.^.^.bXzXjXz.bXd.^ e ~ e e.b.^.bXz.^Xd e e.RXz.bXzXz _.V.V.V.o.V _ _XzXzXzXzXzXz.VXzXzXzXzXzXz eXt.r.rXt.r ~ F.8.r.KXo.| 'Xc.> yX> =XDXKX-.~ 3.a RX- a.e.e a t.eXDX, 3 cX,.wXs CXL.v 0.s H.EXHX5 `.5XkX9 NXtX*X*.rXtXt.r e e eXt.rXj.b.bXg.c.o.o.bXg _Xz _.b.b.b.^Xj e F ~X*XtXt ~ ~.rXtXt.rXj.^.^Xz.b.bXz.c.o _Xz.b _.bXzXzXz.b _.bXz _Xz.bXz _ _XzXzXzXzXzXzXzXg.bXz _XzXzXzXz _.#Xz.bXz _Xz _.b _.bXzXz _.b.b _.b.b.c.o.bXz.bXz _XzXz _XzXzXz NXjXjXj N.I.z.k.r e.rXj e ~.^.^Xz.b.bXzXz.bXz.^ _XzXzXzXz.^Xz.^.^Xj e e eXtXjXjXtXj NXj.k.^.^ N N.^.K N N N N N N N N N.^.^.^.^.^.k.k.kXjXd.b.b.^.^Xz.bXzXzXzXz _.o.c.c.V _.o.cXg.c.c.c.c.c.cXg.c.#XgXg.V.c.VXz.^Xt.r.8.` #Xq U h a a.e.K.`.~.eX-X-.8.}X9.~.e.~.e.e 3X- a.e.e R",
+" N N N NX9 N.XX9 N N N N N.^.k N.X.kXtXtXtX*.rXt.r.r.r.r.r ~.r ~.r.r.r.r.r.rXj.^ NXz.bXk.b.bXzXz.bXzXzXz N.o.b.b.bXz.b.bXzXg lXg.k.8 v 2.v &X<XB `.}.aXlXc c.a RX, cX-Xl.aXD.e.}X-.e R : xX3X.Xl.8.~.K 3 h.l.F W.J.4XbXfX:X>X0.E 9XLXa x U.Z.w.0 gX1 D 3.`XV.`.8 ~X*.rXt.rXt.rXtXj.rXt e ~Xt e.rXt.r.rXt.rXt e.r N.^.b.^ e eXj eXt e.rXt ~ ~ ~.r.XXx eXt.r eXj.^Xz N.^XkXk.^.^Xx.I AXzXz.^.b.bXz.^.bXg.I.I.XXz.b.^Xz.b.bXz.^Xg N.bXdX@X ~ e.rXt ~Xt.rXt.r ~Xj ~.z 7.r N./.&Xk ~Xt.rX* e N NXk.7.t.7.t.&.c.^.^.b.bXz.b.^.^.zX .t.^.r eXjXj.o.^XzXj _ e A.tX&XjXzXzXz _.o.cXg.V.c.VXzXzXzXzXzXzXz.cXz.bXzXz.^ N e.r e.r.r e.r ~ F.8X*.r.uXD RXe.E v.W.M.H.`.~ a R 3 BX-X- BX- B R.aX1 1 hX,XDXDXs.sXL o b &XJ ` k q 5 f.$.AX*X*.r.rXtXt.rXt.r.r e eXj.b.b.c.c.VXgXg.c.oXz.b _Xz _.^Xj.r ~.r.r.r ~ ~.8 ~Xt e.r.r.k.^.^ NXz.^.UXz.bXz.b _.bXzXz.b _XzXz _XzXz _Xz.bXzXzXzXzXzXzXzXz lXz _XzXz.bXz _.^.oXzXz _Xz.bXzXzXzXz.b.b.bXzXz _Xz.b.c.b _Xz _ _XzXz.b.bXz.^.bXj e.r e.r.r ~ e.r eXt.rXtXt.^Xj.^.^XzXz.b.bXzXzXz.b.bXz.b.b.b NXzXj e e ~ ~ ~ ~ ~Xt.k ~ ~.r.r ~Xt.r.r.r.r ~.r.r.rXtXtXjXtXjXj.k.k.K.^.^ N.XXg lXk.U.U.U.c.c.cXg.V.U.U.UXg.o.V.c.VXg.cXg.oXg.V.c l.#Xg.V.c.V.c.b.b.^ ~.8.a 3Xp EX, aXI cXIX-.~.e.e 3Xl.K.~.~X-.~ a.e 3X-.~.~.e.~",
+".rXt ~Xj ~XtXtXtX*Xt.r.rXt.r.r.r N.r.r.r FXt.r.r.rXt.r.rXt.rXt.rXt.rXt.r.rXt.r e.^ NXzXg.o.b.bXzXz.^Xz.bXz.bXz NXz.bXzXzXz.bXg l NXV s.s b z nX+.- h 3 k T., ' )XcXlXcX5 1 : x Y.a.a.e BX-.~ a.eXI 3 3 a #XM .[ . 0Xb % %.s.sXi 0 &X>Xp v.n.n Y ( m 5 D )., m 5 I fXtX*XtXt.rXtXt eXtXtXt.r.r e.r e e.r.rXj.^Xz l.b.b.bXz.^.bXz.b.^ e.r e.r.r qX$Xd.kXjXj.b.b.^XjXt ~.R ~.R.&XtXzXoXzXzXzXzXzXz N.X.b.: _.bXzXz.b.^.b.^.b.^Xg.^.rXxXx.:.k.k.rXt.rXg qXz ~ e.r.rXx.k , 5X9.^Xt.r eXt.^ NXzXz.bXz.fX .XXzXo.b.^Xz.^Xz NXd.bXt.:.kXjXjXjXz.^.bXz.^.b.b.:.bXz.b.^XzXzXj _.o.V.V.oXgXg.oXzXzXzXzXzXz.cXzXzXzXzXzXzXzXt.r e.r ~Xt e.8.8.8.8.`.`.*.N b.W.WXDXD.~.`X-X-X- R.e $XD.D.DX1X,X1 $X,.M.MXs.N.WXe.9 sXI.D.5 ~.rX*X*.rXt.r.rXt.rXdXt.r ~ ~ F.r.r.^Xz.o.c.c.c.c.c.# _Xz _Xz.b.b NXj e.8 F.8 ~.8.8 FXtXtXtXtXt.rXjXt.r e.^Xz e e.bXz _Xz _XzXzXz.bXz _Xz _XzXz _.bXzXzXz _.^ _.b.cXz _ _.b i.UXzXz _Xz.bXzXzXzXz.bXz _.bXz.b _Xz.bXz.o.c.^ _.bXzXz.bXzXz.bXz e eXt.r.r.r e e.r.r.r.r.r e.r.k.^.r.^.b.b.^Xz.bXz.^.^.^Xz N.bXzXzXz.rXt.r ~ ~ F ~Xt.r NXtXj.^XjXj.r.r ~ ~.8 F F F.8.8.r.r.r.r.r.r e.rXt.rXtXt NXt.^Xz N.bXz.bXzXz _.V.oXg.oXz.VXg.c.V.V.V.V.V.V.U.V. .c.U.#.U.U.#.cXkXk.XX*.K.-Xq.iXD.a.8X-X9.e.~.~.e.e.e 3.}.e.~ a.e a.e.a #.eX-.~",
+".rXj.r.r ~Xt.r ~ F ~XtXt.r.r.r.rXt.^ ~.rX*.rXjXt.rXt.rXt e.rXt.rXt.r.rXt.r.rXt.rXj.^ N.oXgXzXzXzXz.bXzXz NXz NXz.^XzXz.bXz.b.b lXx.HXl v v.;X<.-.,.Z.}X,XDX,XI.Z c aX- a <XD.M 3 xXDX, 3.e.eX-X-.eXl.e ` x #XBX7.. %XF *.d.) *.sX=.@.4.jX>XL ' g.].`XV 3 3 $X*X*.k.K ~.rXtXtXtXt eXtXj.^XjXjXtXtXjXjXjXjXj.^Xz.bXg.o.bXz.bXz _Xz.b.^Xj e.r.rXd q.7.XXd N.bXzXz.b e.rXt.K.r f q.r.b.bXz.bXzXzXz N.^.o.X.:.^Xo.I.bXzXz.^Xz.b N.bXd.r.|X9.:X9Xt.rXt ~Xk.8.z.r.r e ~X9.5.k.:.A ~.rXtXt.^.oXz.^ N.b.^ Z A.k.bXz.b e e e.^.^.^.k.k.:.^.^.b.^.^.^.b.b.^Xz.b.:.^XzXzXzXzXzXzXz.b.VXg.VXg.V.o _ _ _.b.b.b.UXz.bXzXzXzXz.^Xj e.r e e.r.r.r.8.8.8.8.` R.nXe.)XLXD 3.eX-X-.e RX- RX,X1 8XD.D.MX,.M.Z R.NXeXL.w y.'X1 3.8Xo.u.k.r ~.uXtXdXd F.r.r.r.r ~ F.`.8 eXzXz.o.c.o.c.c.c.I.b _ _Xz.bXzXzXjXt ~.8.8.8.8 ~.8.r.r.rXt.rXt.rXjXjXt.k.^Xj.^.bXz.bXz.bXz _XzXzXzXzXz.bXzXz.b _XzXz _XzXz.b.o.VXzXzXzXz.#.oXz _Xz.bXzXz.bXzXz _.b.bXz _ _.b.b.b.bXgXgXz.b.b _XzXz.bXzXzXj e.r e.r e.r.r.r.rXt e.r.r.rXj.k.^XtXj.^.b.bXz.^Xj eXjXz.bXz.b.b.bXj eXt ~.8 F F.r.r.^.^.^.b NXzXz.^.^XjXt.r ~.8.8 ~.8 ~.rXt.r e.r eXt eXt.r.^XjXt.r.^.^.b.bXz _.V.cXg.c.V _.o.V.V.c.V.c.c.V.V.c.V.U.U.V.c.o.c.c.o.^Xz NXt.8.} 1 E.i.}X-X- cXV.`.8X1 3 3 3 hXI.} RX1 3 c aX-X,.~X-.e",
+".r.r ~XtXt.rXtXt.kXt.r ~.rXjXt.r.r.X.r.r.rX9.r.rXt.r.rXt.r.r.rXt.r.r.r.r.r.r.r e.r.^.bXzXk.^Xz.^.bXzXz.bXzXzXzXz.b.b.^.bXzXzXzXgXg.uX,.'.s.@.1X7 [ hX,.iX5X,XD :.2Xl.Y :Xc : ` mXJ :Xc c.eX-X-.e.~ c.e h #.l.l.[X4XF p t < t U U 0 %...@XrXG TXO.k B.`X-.`.8X* ~Xt.rX*Xj.rXt.r e.r.^.^.b N NXz.^.^.^ N.^XzXz N.b.bXgXz.b.bXz.bXz.bXz.^XdXj.r.r.z P.f.b.b.bXz.bXz.k.k F.^.k 7.^.k.b.^.bXz.bXzXzXzXz N./ Z.b.Q AXz.^XzXz.b.^ NXz.X fXt.r f f.rX* ~XtXt.rXzXtXt e.k P.K.rX9.tXt ~ e.^.^.b NXz.^.bXg.:X@.b N.^Xj e eXj e e.b.^Xk.: NXd.^XzXz.^XzXz.^XzXd d.Q.6.^XzXzXzXzXz.b.VXgXg.VXgXgXg.o.o.V.V.V.UXz _XzXzXz NXzXj e.r.r.rXt.r ~.r.` ~.`.`XlXG.W.NXeXD x.a.a R a a.a aX,.} R.M R.M t 8 v.N.W.s v M.> :X5.5 )./.k )XtX9 q.k.$ (XxXk N.r F.8 F ~.rXj.b _.V.cXg.c.c.U.#.o _.bXz.bXzXzXt.r F ~.8 ~.8.8 F.rXt.rXt.r e.rXt.r e.^Xz.^.b.b.b.bXz.bXzXzXzXzXzXzXz _Xz.b.b _Xz _Xz.oXzXz.V.o.bXz _Xz _XzXzXzXzXz.bXz.bXz.b _.b _.b.b.b _ _.bXz.c.oXzXz.b.bXz.bXzXzXz e.r e.r.rXt.r.rXtXtXt.rXtXt.rXj.^XjXt e.^.b.^Xj e eXj.^Xz.bXzXz.^Xj.r.rXt F F ~ ~ e.r NXt N.b.^.b.^XzXzXzXz.^ e.r F.8 F ~.rXtXt.r.r.r.r ~Xt.r.^.rXj.r.bXzXzXz _ _.V.cXg.c.o _.V.V.c.c.c.V.c.c.c.c.o.#.V.U.c.V.cXgXz.VXz.^X*.8XM U U a.e.e R.e.e.e.e.e.eX- aX-.eX1.~.`.HXI.`XIXIX-X5",
+" e.r.r.r.r.r.r.r ~.r.r.r.r.r.r.r ~ NXt.r.r N.KXt.r.rXt.r.rXt e.r.rXtXt.rXtXt.rXt.r.^.b.^Xg.bXz.bXzXz.bXzXz.bXz.bXz.bXz.bXz _.b.oXk.K c y yXn.TX#Xw k., :XcXJ :Xl 1Xc #.Z.MXDX, 1 $XD R.eX-.e.~X-.~.k.e 3 a.l.lX7Xn p p u.a hXl $.)...s . yX0.n.2XdXV.`.~.8.`X*.8X*.rXtXt.r.k.rXtXt.^ N.b N.b NXz.b.b.b.bXz.b.bXz.b.c.^ _XzXzXzXzXz.b N.^Xt e.X.X.t 7Xk.^.bXzXzXzXj.r.kXt 5.7./Xd N.bXzXzXzXzXz N.^.c.t.t AX .o.o.^.bXz.bXz.^ NXxXx.5 NXxXx.X F.k.r.r eXt ~.r.r.bXxXk.rXt.k FXj.kXzXz NXz.b.^.b l.I l.bXz.^ e ~ e ~ e.r.rXt.XX9Xj e eXjXz.^XzXzXzXzXz e.o.^Xz.^XzXzXzXz.o.VXgXg.o.c.c.c.c.cXgXgXg.UXzXzXzXz.bXzXz.^ eXt eXt e e.rXt F F ~XIXD s.sXs.).M x.a R u.M.W U U.M.WXe.N U.WXs 2Xe.sXL vXp $XK DX..A ].RXtX@ q.| qX@ ]X@.t.RXxXt ~.8 F F FXj.b.bXg.c.V.c.c.U.UXg.o.bXz.b.bXz e.r F.8.8.8 F.8 F.r.r.rXtXtXtXj.r eXt.o.b.b.^.b _.b.b _Xz.bXz _Xz.bXz.bXz _ _XzXzXzXzXzXzXz.cXz _ _ _XzXzXz.bXz.bXzXz.b.b _Xz.b.b.b _.bXz.b.b.b.b l.b _XzXz.b _XzXzXz.^ e e e.rXt.rXt e.r.r.rXt.k e.r.r N.rXjXjXj.^ e e.rXjXjXj e eXz.^.^ e e.r ~ F F ~.rXtXt NXj.b NXzXzXz _XzXzXzXz.^Xj.r F F ~ ~.rXt.rXt.rXt.rXt e N.rXj.rXj.^Xz.b.V.c.c.c.V.c _ _.c.V.c.V.c.c.c.cXg.V.c.#.o.V.VXg.V.c.c.^Xz NX*.8 ` h U.d a a a.e.~.e.~X- aX-.} a.e.e.eX-.e c.`X1XI $XlXl",
+" ~Xt e.r.rXtXt FX*.r.rXtXt.r.r.r.r.k.KXgX9.t.kXtXtXt.rXt.r.r.rXt.r.r eXt.r.r e.r.r.^.^.^.o.o NXzXzXzXzXz.bXz.bXzXz.b.^.bXz.b.^.^.V (Xc.O.+.; =.T.S [Xc.} $XD R 3 aXD.e.a a a a.aX- a.aX-XI.e.e.~.e.KX-.} 3 #.l >X%.@.pXp.1 mX3Xc xX4.@X>X0 TX$ ! ].8.` R.`.8X*.8Xt.r.rXtXtXj eXj e.^XzXzXz.b.b.bXzXz NXz NXz.bXzXz.U.^XzXz _XzXz _XzXzXz.b.rX@ NXkXg.b.b.^Xz.oXz.^.r.rXj N.rXt eXzXzXzXz _XzXz.b.oXj.^.bXdXzXz.^Xz.bXz N.b.kXj.^.r ~Xt ~Xt ~Xt ~.rXj ~Xt ~ e.r.r ~Xt.r.rXt eXtXj.^Xz.o.^.b.^XzXzXj.b.^.^Xz.^Xj e e.rXj.r.r e ~ eXt e e.^.^Xz.^.bXzXj _XdXzXzXzXzXzXz _.VXgXg.VXg.VXg.VXg.V.V.o.o.#XzXzXzXzXzXzXz.b.o.X N.^Xt.rXoXd.H.r.`.8 RXLXe /Xs.).w C.M.W.= 2 v 2Xa.sXe v v.=.W.W.s x.s v.MXIXIX*X*.k.k N.rXd.k.r.kXV.rXd.rXt.r ~ F F.8.r eXj.b.o.V.c.VXg.c.#.c.c.o _Xz.b.b.^ e.r F.8 F.8.8 F.8XtXt.rXt.r e.r eXj.^Xg.b.bXz.b _.b _.b.b.bXz _XzXz _ _Xz.bXzXz _XzXzXz.V.^.UXzXzXzXz _XzXz _ _XzXz.bXz _.b.b.b _.bXz _.b.b.b.b _.cXz.oXz.b _XzXz.bXzXzXjXj.^Xt eXtXtXt.rXt.rXt.^ NX*.^ NXt.r.r eXt e.r.r e e.r.r.rXj.^Xt.r eXt ~ F ~.r.r.r.^.^.^ NXz _Xz _XzXzXz _Xz _XzXj.r F.8 F ~ ~.r.r.rXjXt.r.^XjXt e eXj.^ _Xg.VXg.c.c.V.c _.oXg.V.c.c.c.V.c.V.c.V.U.UXg.cXg.c.c.oXgXz.^.b.r.8 1Xe E U.e.aXI.eX-X-.~ 3.eX- a.e a.e.uX, 3 xXKXK ` 1.i.a",
+"Xt.r.r ~.r.k./ ,.X.k ~.rXt.r e.rX*.r P q.k.A.^Xt.r.rXt.r.rXt e.rXtXt.r.r e.r.r.r.r.^.^.^.bXkXzXz.bXz.bXz NXz.b.bXz.b.b.bXz.^.^Xd.X.k.kXs y.@X+XH.T., kXBX,.aX-XD.aXD R.e.a t.e.M R.e mXJXl :XDX- ~.`X*.`.}.i.l.[Xr M M nXH c `X3.9.Y.Y & =XU.G D (.eX1.` a.8X*.8.rXjXt.rXj.r e e e.^XzXz.bXz.bXz NXzXzXzXz.bXz.bXz.UXz.bXzXzXz.bXz.b.bXzXzX@Xg.b.b.b.b.b.oXzXz.b eXjXtXt.b.r eXtXzXzXzXzXzXzXz.bXz.o.^XzXzXz.bXzXz N.^.^.^ eXt.^XtXt ~XtXt.rXtXt e.rXt.r e.r.r ~Xt.r.rXt.r.r.^.b.^Xz.oXzXzXz.^Xz _Xz.^.b.^.^.b.r.rXt F FXtXtXtXt e e eXz.^XzXzXzXzXzXzXzXzXzXjXzXz _.oXgXg.V.oXgXgXg.V.oXg.oXg.o.UXzXzXzXzXzXzXz.b.&Xg lX9.QXd.z.R.XXd.kX*.Z s M v 2.W v.W.sXs.) 2.= 2.s vXG.s._ b.9 o.j y 1.aXI.}.u.u.u ~.^.k.r.rXt.rXd.k.rXtXt.r e ~ F F F ~.r.^.oXg.V.cXg.V.c.#.c.c.oXz.b.b.b.^ e e F.8 F ~.8.8 ~.rXt.r e.r eXj.^.b.b l.b.b.bXzXzXz.bXz _XzXz.b _ _Xz.bXz _ _XzXzXzXz.#.I.c.cXz _Xz _Xz _XzXzXz.bXz _.b.b.b _Xz.bXz.bXz.b _Xz.bXg.cXz.bXz _ _ _XzXz.bXz.^.b.bXjXt.r.r.rXtXtXt q.z.zXt.^XtXjXt.r e.r eXt e.r.r.r e.r.rXt e e ~Xt ~ ~.r e.rXtXz.^.bXz.^XzXz _XzXz _XzXzXz.bXz.^ e.r.r ~ F F F ~ ~ e.r NXt e.r eXz.b.o.cXg.cXg.VXg.c _Xg.V.c.V.c.c.V.cXg.V.c.#.o.o.c.o _.c.c _.b.^ NXVX- `.i E < aX-X-.e.e.e.eX-.eXI.eX-.eXlXl ) 1XK U 1.e.e.e a",
+" e ~.rXt.r.8Xk P ~.rXt.r.r.r.rXt ~.$ ,.8X*.KXt.r.rXt.rXt e.r.r.r e.rXt.r.r.r e.r.rXjXtXj.kXg NXz.^XzXzXz.bXzXzXz N.^.b.b.X.^.X.z A.RX3Xc.+.;.EXr.O.[.SXH.M.MXIX- 3 a R : R.e tX- TX- 1 1 mXH.~X1.e.e.uX. 3 # XB.p.@XpXe C hXDX, <.}.N.s.YXw m.H.`.`X1.a.`.}X*.rX*.rXt.rXt.rXj.^Xj.^Xz.b.b.b.b.b.b.b.b.bXz.bXz.bXz.c.b _Xz _Xz _ _.oXzXg A.o.^Xz.b.b.b.^.bXzXz _Xj e e.r.X.rXj.bXzXzXzXz _XzXz.b.^Xz.bXzXz.bXzXzXz.b.b.^Xt.r.r.X ~Xt.r.r ~ e FXt.rXt ~Xt.r.rXt e.r.r.r.r.r.rXz.^.b.^.bXzXzXz.^.bXzXzXz.b N.^.^.r.r ~.r e.rXj.b.^Xt eXjXzXz.b.bXzXjXzXjXzXzXj _.^ _.oXg.VXg.o.VXg.VXgXg.VXg.VXg.V.#XzXzXzXzXzXzXz.^.t.6.(.( Z.XXg.X ].R.A.$X3XJXhXC 2 2.s.W.W.).W.n 9.9Xm.9 s 1.9.j $ = T.2XD.K.5.r }Xk.z.^.5.^.zXdXd.X.X.rXt.rXt.r.r.r.rXt e.rXjXz.oXg.c.c.c.V.c.IXg.U _.bXz.bXzXj.rXt ~ F.8.8.8 F ~Xt e.r eXt.kXzXzXz.o.c.b _.b.b.bXzXzXz.b.b _XzXzXz _Xz _Xz _.bXzXzXz. . .#.o _XzXzXzXz _Xz _Xz _Xz.bXz _Xz.bXz _Xz _Xz.bXz.bXz l.bXzXz _.bXz.bXz _XzXzXz.bXzXt e.r.r.r eXt e.r.r.^.r NXtXt.r eXt.r.r.r eXt e.r.r e.r.rXtXt eXt ~.r.rXt.rXj.X N.o.b.^XzXzXzXz _XzXzXzXzXz.b.^.^.^XjXj.r.r ~.r e eXtXz.r e.r eXz _.oXg.c.c.c.cXg _ _.V.V.c.V.c.c.V.c.V.o.c.U.V.c.o.c.cXg Z i.oXgXxXx.aXM._ E U a.e a.e.~.~.~.eX- 3.e.e.eX1.`X-X-.e.e a.e < a.e",
+".r.rXt.r.rXt q.t ~.r.r.r.rXtXt.r.8.& }.^ ~.rXt.u.r.r.r.r.r.r e.rXt e.r e.r.r.r.rXt.r.r.rXtXg N N.^.^.^.^Xz.^ N N.b.^.X.^Xo e.X.RX@./ : TX> vX> n.1X.XZXHXe.M t.e.ZX,X, $ a 3.e.a T.}.e.e.eX-.~.e B BX- : # # XcXp.sX= u.M a t a t u.)Xe v y #X-.`.`X-.8.}.`.r.k e.r.r.kXj N.^.b.bXz.b.b _Xz.b.bXzXzXzXz.bXz.b.b.^.V.oXzXz _XzXzXz.U.Q.#XzXz _Xz _XzXz _XzXz _Xz.b.^.bXjXgXo.oXzXzXzXz _XzXzXzXz.bXz.^.bXzXz.^.b.bXz NXz.r.k.r N.r.r e.r.r.r.r.r.r ~ e ~ eXt.r.r.rXj ~ e eXjXz.^.^.^.oXz.^Xz.bXzXzXzXz.^Xz.b.rXt e ~ F eXt N.^.bXzXz.^Xz.^.bXz.^XzXzXzXzXzXzXz.b.o.V.V.oXg.VXg.o.c.VXg.o.o.o.VXg.#XzXzXzXzXzXz.b.bXz.bXz.R.bXzXoXdXd.r ~.8.a #XU.9.= vXL.WXL._XG xXD.~ RX-X- BX,XD.~.~X9X9 5 (.&.k.tXxX@X@.& X.t.& fX X@.zXt e.r.r e.rXt.r ~Xj NXz.V.c.V.c.cXg.U. .V.c.oXz.bXz.^Xj e e.r ~ F F.8 F.8XtXt.rXtXjXzXz.b.b.bXgXzXz.b _.bXz.bXzXzXz _XzXzXzXz _XzXzXzXz.oXzXz _.c.cXg _Xz _Xz _XzXz _.bXz.bXz.bXz.bXz.bXz.bXz.bXz _.bXz.UXz.b _.b _ _.bXz.bXzXz.b.bXj.r.rXt.rXt.r.rXtXt.rXtXj N.rXtXj.r.rXt e.r.r.r.rXt.r.r.r e.r.r.r.r.rXt.r e.r.^XgXzXz.^ _.^ _Xz _Xz _ _XzXzXz.bXz.b.b.bXz.^.^.^Xz.^.^ NXz e e e e.^.bXg.cXg.V.c.c.VXz _ _.c.c.V.c.c.c.V.c.o.#XgXg.c.o.o _.c X.U.7 A.f | :XB.- U U a.~.e.e.~.e.e.eXI.~ a.~.` 3.eX-.~.~ a a.e a.e a",
+" e ~Xj ~Xt ~.&.$.r.r.r.r.r.r.rXt.rX9.:.5.KXk.r.rXt.r.r.r.r.r.r.r e.r.r.r.r.rXt.r.rXtXt.r.rXt.oXt.r e.r.k eXd e.^.z.U.^XoXtXtXt.k.R NXI.}XG 0X>.h.TXw.- X, x.Z :Xc 5Xc.e R RXl.-XcX5.e.e a.eX-.e B.e B.e hX3.[X7Xm.s.W p.N.W < t u u -Xv.s.9.aX-X-.`.`.H F.rXd.^XtXtXt eXj.b N.bXz.b.b _XzXz _ _Xz.bXz.b _.bXz _Xz.o.o.bXzXzXz _XzXzXzXzXz _XzXzXz _XzXzXzXz.bXz.b.bXz.^ l.b NXzXzXzXzXj.VXg.o.o.oXzXz _XzXzXzXz.^Xz.^ eXtXt.r N.r.r e.r.r e.r.r e.r.r.r.r.r.r.r.r.r e.r.rXjXz.^Xz.^Xg.^Xz.bXzXzXzXzXzXz.^.^Xt.r ~ ~.rXt.^XzXzXz NXz.^Xz.^ _XzXz.^XzXzXzXzXzXz.VXg.o.o.VXgXg.VXg.o.V.c.VXg.cXg.o.U.oXzXzXzXz.bXzXz.b.bXzXz.b.b.^Xd.rXt.r.r.8.aX- $.nXLXG s x $.a.`X-.`X-.`X-X-.`.`.`.8.r FXz eXo.^Xx.z.z.z.6.I.I l.z.zXg.bXtXt.r.rXt.r.rXtXt.^Xz.oXg.c.c.V.cXg.c.#.c.cXz _.b.b.b e.rXt ~ F.8 F.8 F ~Xt.r.rXt.^.^Xz.bXz.o.o _.^ _Xz.b _Xz.b.bXz.b.b.^ _XzXz _.b _.I _XzXzXzXz.#.c _XzXzXzXz _XzXz _Xz.bXz _.bXzXzXz.o.bXz.bXz.b.b _XgXz.bXzXzXz _Xz _Xz.bXzXz e e e.r e.r.rXt.rXtXtXj.rXtXjXt e.r.r.rXt.rXtXt.r.r.r.rXt.r.rXt.rXt.r.rXt.rXj ~Xg N.b.b.bXzXz _Xz.bXzXz _XzXzXz.bXz.bXzXz.bXz.bXzXz N.^.z.^.bXz.^.^Xz _.cXg.V.c.c.c.c _.oXz.V.c.c.cXg.c.c.c.V.U.b.bXg.o.^ _.b.o.b.U.k )X9 1XH [ E U a.e.~X-.e a.eX-.8.e.~.e.~X*.~.~.~.e.~.e.e a a <",
+" ~Xt ~.rXt.k f.f.r.r.r.r.r.r.r.r.r.r.X 5Xx ~.rXtXt.rXt.r.rXt.r.r.r e.rXt.rXt.r.r.r.k.8.rXt.rX9 F.r.r.r eXt eXjXx.:X9.R q.&.z Q.R.t.& 5Xw = z 0.jXw.1.[.-.YXJXc ` $ $ cX-X5 kXl c.a a.e.eX-.~.e.~.e.e a a.8.i c k.YXG...s.s.).) p pXF -.s..Xq a.8.8.`.8.8.r.r.r.o.r.rXjXj N.o.b.^.b.b _Xz _XzXz.bXz.b.b _Xz.b.bXzXz.o.cXzXz _XzXzXz _XzXz _XzXzXzXz _Xz _.bXzXzXzXz.b.b.^Xk.b.bXzXzXz _Xz. l. .#.UXz.^XzXzXzXzXzXjXj e eXt.r.r N.r e.r.r.r ~ e ~ ~.r ~.r.r.r.r.r.r e.r.r e.kXzXz.^Xz.o.^Xz.^.^.^XzXzXz.^Xj e e ~ ~ ~Xt.^.^Xz.^XzXz.^XzXz.^.bXzXzXzXzXzXzXz.b.o.o.o.o.oXg.c.VXg.c.V.VXg.o.o.c.o.c.#.V.bXzXzXzXzXzXzXzXzXz.b.bXz.bXd e.rX* 3.8.8X1X- $.' x R.eX-.8X-.`X-.`X-.`.`.`.` F F.r ~.^XdXzXj.bXzXz.^Xx.^.^XjXz.^.^Xj e.rXj.rXtXtXj.rXj.^.b.V.V.c.c.V.c.c.U.UXgXgXz _.bXz.b e.r e ~ F F.8.8 ~.rXtXt.r eXj e.^.^.b.c _.b _Xz.b _.b.b _.bXz.b.bXz _XzXz _.b.bXu.#.b _XzXg.#.oXz _XzXz _XzXzXz _Xz.bXz.bXz _Xz.b.bXz _.bXz _Xz.o.V.b.bXz _Xz.bXzXzXzXzXz.^ e e.r.rXtXt e.rXt e.r.rXt.^.^.r.r eXt.rXt.rXt.rXtXtXtXt.r.rXt.rXt.r.r.r e.rXt eXg.bXz _Xz.bXzXzXz _XzXzXz.bXz _XzXzXzXz.bXz _XzXzXz.b.bXg.bXzXz.b _.b.o.cXg.c.c.c.c.o _.V _.VXg.V.V.c.V _Xz.V.bXz.b.bXzXz.b.bXz.b N ~X-XI $ 1X7.i t aX1.e.e.e a.eXIX-.~.~ a.uX- a.e a.e a a.a.} EX,",
+".r.r e.r ~.k.X N.rXtXt.r.r.r.r.r.r.rX*.k.rXt.u.r.r.r.r.r.r.rXtXt ~Xt.k ~Xt.rXt.rX*.r.r ~ ~.r.XXtXt.r.r.r.k.kXd.bX P.7X .A.A.R.&.( Q D.3Xr M.s oXpXZXh.SXw x 3 R.eXc 3 T ` T R.e.e aX- a.eX-.e a R <.e.e.}X* #X3.iXeXpXpX4..Xe.m.W.).s %.YXeXDX-X-.`.8XVXtXt.r.bXdXj.^ N.b N.b.b.b.bXz.bXz _.bXz _XzXzXz.b.bXzXz _.b.cXzXz.bXzXz _Xz _XzXz _XzXz _XzXz _XzXzXz _Xz _XzXzXg.o.bXzXz _Xz _.o.V.b _XgXzXzXzXzXzXz.^ e e.r.r.r.r.r N.r.r e.r.r e.r.r e.r.r.r e ~ e.r.r.r e.r e.^Xz.^.bXzXg.^XzXz N.bXzXz.^.^ e.r ~ F ~.rXj.^.b.^XzXzXzXz.^Xz.^ _.bXzXzXzXzXzXz.V.o.o.o.VXgXg.VXg.VXgXgXg.c.V.o.VXg.c.#.o.b _XzXz _XzXz _XzXzXzXzXz.b.^ e.r.r.r ~.8.`.~.` 3X1X-XI.~.~.`.`X-.`.`.`.` F.8 ~XtXj N.^.b.^.b.bXz N.b.U.b.b.b.bXz.^.^.r.r.r.r eXt.r eXj.^.o.c.c.V.c.c.cXg.U.U.c.o _.b.b.b.bXj eXt.r ~.r ~.r.r.r.rXt e e.r e e eXz l.^.b.b.^XzXz _XzXzXzXz _Xz _ _.b.b _ _Xz.# _XzXz _.U.U _Xz _XzXzXz _XzXz.b _Xz.b _.b.bXz.b _Xz.b _Xz.bXz.c.b _Xz.b _Xz _ _Xz _.b.^ e e.r.r.r eXt.r e.r eXtXj.r N ~Xt.rXtXtXtXt.rXt.rXtXtXt.rXt.rXt.r.r.r.rXt e.r e NXgXz.bXz.bXz _Xz _XzXz.b.bXzXz.bXzXz _XzXz _XzXzXzXzXzXg.b.bXzXzXz _ _.V.c.c.V.c.c.V.o _.V _.V.c.c.oXgXzXz.^.b e.^Xz.b.^.oXz.^.^.^ ~.8.a a.-., [Xp.i $Xl.u 3XIX, $XI.e 3.~.~X-X- a a.e < < E h U.i U",
+".r.r.rXt.r ~.r ~.r.r.r.r.rXt.r.r.rXt ~.r N.r.r.r.r.r.rXtX*.rXt.r.k ~ ~.rX* ~.r.r.r.r.r ~ ~.r.^.K ~.k.^.XXxXk l./X@.oXkXxXg.k NXx.U.kXx.9._ 2.)Xr =Xh.S.,Xc.i xXl 3Xl DXD.a.e t.a R a.e.e.e.eX-.e.e 3XX.eXI.u hX3 m E < <XeXnXrXhXrXrXp y.W tX-.H.8.8 ~.u.K ).X.X NXzXj.b.bXz.b.b.b _.b.b.bXz.bXz.b _.b.bXz _XzXz.bXz.UXzXz _Xz.bXz _XzXzXzXzXz _XzXzXzXz.b.bXz.bXzXz.bXzXg.o.bXzXzXzXzXzXzXz.^XzXz.^Xz.oXzXzXzXzXj e e.r e.r.r N e.r.r.r.r.r.r.r.r.r e ~.r.r.r.r.r.r.rXtXt.^ N NXz.^XgXj.^.^.^.^XzXz.b.^Xj e ~ ~.r e.^ NXz.^XzXz NXzXzXz.^ _XzXzXz.^.^ _.V.o.oXg.V.o.cXg.V.o.o.o.c.o.cXg.V.cXg.c.#.o _XzXzXzXzXzXzXzXzXzXzXzXzXzXz e.rX*.r.H F F.`.~ 3.` a.8.~.`.`X-.` F.8.8.8 ~.rXt.^ N.b.^.bXzXzXzXz.b.bXg.^Xz _XzXz.bXzXj.rXt.r.rXt.r eXjXz.V.c.c.V.c.c.c.c. .c.c.o _.b _.b.b.^Xt e.r.rXt.r.r.r.r.rXtXt e e eXj eXz l.^.o.b.b.oXz.b.b.b _.b.b _Xz.b.o.#Xz _.bXzXz _Xz.o.U.c _XzXzXz _ _Xz _ _XzXz _Xz _Xz _ _.b _Xz _.b _.b.b.U.b.oXz _ _ _Xz _Xz.bXzXz e e eXj e.r.rXt.r.r.r.r.r.^.^XjXtXj.r.r.rXtXt.rXt.rXt.rXt.rXtXt.rXt.r e e.r eXj.c.o.^.bXz _XzXz.bXz.bXzXz.bXz.bXz.bXzXzXz _Xz _ _XzXzXz.U.bXzXz _ _Xz _.o.c.c.c.VXgXg.V.c.c _.oXg.c.V.VXz.^XzXz.rXjXj.^.^.^.^XjXtXt.8.`X- XM x x.YXMX5 T 1 `Xl `., `.,XKXM.}.a.e a < U.}.m.}.m.iXq >",
+".r.r ~.rXt.r.rXt.r.r.r.rXt.r e.r.r.r.k ~.X.rXtXt.u.k.r.k.r.^Xo.X.r N.5Xx.r )X9X9 ) q.5 q ) ).&.A (.&.R Q.I.t qX@.^.b.b.bXt.^ N.X.bXtXI.MXG.).s.s o.+.[XB k m :Xc c.~.e 3X- BX-.e.e R R.eX-.e.e.~ B.aXK.u 3XIXMXcXhX# ` h a <.gXhX5 YXh.9.,.0.$ IXx I.$ D 5.%X@ P.(.6.X.b NXz.o.b.b.b.b.bXz.bXz.b.b _XzXz _.b.b _.bXz lXz.b.b.bXzXz.bXz _XzXzXz _Xz _Xz _XzXz.b.bXzXz _.b.oXg.bXzXzXz _ e.oXz.b.b.bXzXzXzXzXzXzXz.^XjXj e.r.r.r N.r e.r.r.r.r.r.r.r.r.r.r.r e.r.r e.r.r eXj.^ NXz.^.kXz eXt e e.rXj.^Xz N.^XjXj.r eXj.^XzXzXzXzXzXzXz.^XzXzXzXzXzXzXz _.oXg.V.V.V.o.o.VXg.o.VXgXg.V _.oXgXgXg.V.c.U.o.o.bXzXzXzXzXzXzXzXzXzXzXzXzXz.^ eXt.r.r.H F F.`.rX-.`.`.~.`.`.`.8.8.8 ~.r.r.^Xj.b.^Xz.bXz.bXzXzXz.b.o.X.^Xz.^XzXzXz.bXj eXt.r eXtXtXj.^.oXg.c.V.V.U.V.cXg.I.c.c _ _Xz.b.b.b.^ eXt eXtXt.r eXt.r.r eXt eXj.^.^Xz.o lXz.b.^Xz.b.b.b _ _.bXzXz.bXzXz.V.#Xz _ _ _Xz.o _.o.UXgXzXzXz _XzXzXzXzXzXz _XzXz.b _Xz.b _Xz _.b.b.b _ _ lXz _Xz _ _XzXzXz _XzXzXz.^.^.^.^XjXt.r eXtXt e.rXt.k.^ ~.r.rXtXjXt.r.r eXt e.r e.r e.r eXt.r.r e.rXj.^.^.c.o.^ _XzXzXzXz _XzXz.b.bXzXzXz.b _XzXzXz _ _XzXz _Xz.o.o.bXz.bXzXzXz.V.o.c.V.c.V.c.V.V.c.c _ _.V.c.oXzXzXj.b e e.r e eXj e e.rXt.8.8.a a 1 $ E h.e a t a a.e.} 1 h.M hXDXD.a t <.} h E EXe xXpXB $ <",
+" e.rXt ~.rXt ~Xt.r.r.r.r.r.r.r.rXt.r ~.r.k.k q qXkXx.f q.A ).& qX9./ 5.$X* q.$ q I.$.KXx ) q ) qXkXk q l.z.z.U l.b.o.b.^.b N.o N.oXt.HXDXn..X=.WXG MXH .- xXlXDXI R.~XI.eX-X- RX- m.eX-.e.e a.e.e.~.eX-.u R c # |XMXB V 3X-.u.K.H ` ) `X3 : 'XoXxXx.XXXX9.$X9.zX@XkXz.b.b.o.bXz.b.b.b.b.bXz.b.b.b.b.b.b.bXz.b.b.b.^.c.bXz.bXzXzXz.b _XzXz _XzXz _Xz _.bXzXzXzXz _Xz.b.b.bXg.bXzXzXzXzXz.^Xz.^.^.bXz.^XzXz.b.b.^Xz.^XdXt.r.r.r NXtXt.r.r e.r e.r.r.r.r.r.r.r.r.r.r.r.r.rXtXj.^XjXt e.^.r e.r.r.r eXj.^Xz NXz.k e e e.^Xz.bXzXzXzXzXz.^XzXd.bXzXzXz _.o.o.o.V.o.o.o.oXgXg.VXg.o.V _Xz _ _.V.cXg.c.U.V.o.VXz _XzXzXzXz _XzXzXzXzXzXzXz.^.r.r.r.r F.`.` 3.`.`.~.`.`.`.` F F ~ ~ e.^Xz.^.bXzXz.bXzXzXzXz.^XzXg.o N.b _Xz _Xz.bXj.r e.rXt.rXjXj.b.V.V.V.V.c.c.c.c.c.#.V.VXz _XzXzXz N N e.r.r.rXj.rXt.r.rXt.r.r e.^.bXz.bXg.oXz.^ eXjXzXzXzXzXz _Xz.c.V.bXzXz.o _XzXzXzXzXz.o.o.# _ _XzXzXzXzXzXzXz _XzXzXz _Xz.bXzXz _XzXzXz _.bXzXg.VXzXzXzXz _Xz _XzXz.bXzXz.bXz.^XzXj.r.rXt e.rXtXtXj.z.zXkXjXjXt e.r e.r e.r.rXt.r.r.r.r.rXt eXt e.^Xz.bXzXgXz _ _XzXzXz.bXz.bXzXzXz _XzXz _Xz _Xz.b _Xz.bXzXzXz.U.bXz.^.VXzXz _.V.c.V.c.c.cXg.c.c.c.V.V.o.V.o.bXz.bXj.^.rXt.r.r.r e ~ e.r.r.` 3 aX, h h h h <.e.a a < < <.} t a < t a.e.a E E.l.Y.[X% `.-X- R",
+" ~.k.r.rXt ~X* ~Xt.r.r.r.rXt.r.rXt.8.k.rXt q.$./ ) )XxXxX9.XXXX9Xx.5.k.K.^.KX*X*.uXtXt.r.r.r.8.^Xt.^Xd.XXjXz.^.bXz.bXzXz.b.bXz.bXz.r.` U v.N...sX>.+XwX3.l.} R RX,.e RXI.a.e a a.a Y.,XK :.~.e.~ R.e.~X-X-XD.a # k kX*XM V.uX9.5XIXV.~X-.~.`.~.` F.` ~X* ~X*.rXj.z.b.b.b N.b.b.b.b.b.b.b.b.b N.bXz.b.b.b.b _XzXz _XzXg.oXzXz.bXzXz _Xz _XzXzXzXz _XzXzXz.b.^XzXzXz _Xz _.b l.bXz.bXzXz.bXz.b.b.b.^XzXzXzXzXzXzXz.b.^Xz.k eXt.r.^.k.r.r.r.r.r.r.r e.r.r e.r.r e.r e.r.r.r.r.r e.r e.r.^.rXtXtXtXt.r e.k.^.^XzXz.^ e.^.^XzXz.bXzXz.^XzXzXz.^Xz.bXz.b.o.c.V.o.o.V.V.VXg.VXg.VXg.V.oXzXz _XzXz.VXg.c.UXg.c.oXzXz _Xz _XzXzXzXz _XzXzXzXzXz.kXt.r e.r ~ FX*X-.aX-.`.`.` F.8 ~.r e.^Xz.^XzXzXzXz.^XzXzXz _XzXz.o.b.bXzXzXzXzXzXzXd e.r e.r eXj.^.oXg.c.c.V.c.c.c.cXg.UXz _Xz _Xz.b.bXz.bXjXtXtXt.r.rXt eXtXt.r eXj.^Xz.b.^Xg.b.^Xj e e.^ _ _Xz.b.b.o.I.#.VXzXz _ _ _Xz.o _XzXg.c.UXzXzXz _XzXz _Xz _.b.b.b.bXz.b.b.bXz.b.b.bXz.o.bXz l.b _XzXz _Xz _Xz _Xz _XzXzXzXz.^.^Xt.r.r e.rXtXt.rXjXk.zXk.k ~Xj.rXtXtXtXt e e.r e.r e.r e.r e.rXj.b.b.bXzXzXzXz _XzXzXzXz _XzXzXz _XzXzXzXz.bXz.bXz _.bXzXz.b.b.c.b _Xz.V.o _ _.c.V.c.c.c.cXgXg.V.c.V.c.V.o.oXzXz.^.^.k.r.rXt.r eXt e.r.r.r.8.a #XB.i h.F a a.e.a.e UX,.d x U h UX, U U hXn X%.S [XB.K c cX-.`",
+"Xt.r.rXt ~Xt ~X*.r.r.r.r.rXt.r.r.rXt.r ~.r N.r.u.r.r.u.r.r.8XtXV.rXV.r.kXXXx.5.5XxXXX*XVX*XV.k.kXoXt.^ N.XXz.bXz _Xz.o.^Xz.b.^.o.^.kX-X, v p.N 2Xm M nXBXX.}X-XDX- c.~.eXD.e.eX-X, m # D `.eX-.e.~.~X-.e BXD.e $ } kXM : ).8X*.r.KXV.8X-XI.~.`.` ~.8Xt ~Xt eXt.b l N.b.b.b.o.o.b.o.b.b.b.b.b.bXz.b.o.o.o.o.b _Xz.bXz.oXg.bXz.b.bXzXz.bXz _Xz _XzXzXzXz.bXzXzXzXz.bXz.b.b.b lXz.bXzXzXz.bXzXz.bXzXz.b.bXz.bXz.bXz.b.^.b.^.r.r.r.^XtXt.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r NXt.r.r.r.r.rXtXtXt.^.^.^Xz.^Xz.b.^Xz.^Xz.bXzXzXzXzXz.o.b.b.V.o.VXg.V _.oXgXg.VXg.oXg.cXgXgXzXzXzXzXz.VXg.c.UXg.V.o.b _XzXzXzXz _XzXzXzXzXzXzXz.bXzXjXt.r e.r.8X*.`.8X-.` F.8 F F.rXj.^.^XzXzXz e e e e.bXzXzXzXz.b.o.b.b.bXzXz.bXzXzXz e.r.r eXj.^.bXg.c.V.c.c.V.c.c.c.o.cXz _Xz.o.b.b.bXz.bXt eXt eXt.rXtXtXt e.r e.^ N.b.^ e.bXj e.rXt e eXz _.b _XzXz.#. XzXzXzXzXz.b.oXg _.b _.U.oXz _XzXzXzXzXzXzXz.bXz.bXz.bXz.bXzXzXz.b.bXz _.bXz.UXz.bXz.b.b.b.bXz.bXzXz.b.bXz.^.bXj e.rXtXtXt.r eXt.k.b.X.X.^.r e.rXj.k.^XjXtXt.r e.r.r e.r.r e.rXj.^Xz.^Xz _.b.bXzXzXzXzXzXzXzXzXzXzXzXzXz.b _XzXz.b.b.b.b.b.b.o.o _XzXz.c.U.c.o.c.V.c.V.c.V.V.o.V.c _.c.o.o _Xz.bXj.bXt.r.r.r.r e ~Xt.r.r.8 3 a :Xq.l.F < a a.a.M h U h._.i E h EXe n xX%.g.p [.} 3XI.a.`.8.`.8",
+".r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.k N.r.rXt.r.r.r.u.rXt.rXtXt.k.5XX )X3 qX3X*.r.r ~Xt.r.bXz.^Xz.bXzXz.^XzXzXzXz.b.b.b.b N.r.` h.' J.@ M.@ HX<X+XBX,.a.aXIXI 3.aXI.~X-.~XIXl.e.e.~.eX-.~.e $ RX-.eXD a.a #Xc.3 V V.`.a.8X*.K.K.~ ~.K.` ~.`.r.rXt.k.r.^ NXg.o.b.^.b.b.b.b.b.b.b.o.o.b.b.b.b.o.c.c.o.b.b.b.bXz.o lXzXzXz.b.b.bXz.b.bXz.b.bXzXz.bXzXz.bXz.b.bXzXzXzXz l.b.bXz.b.bXz.b.^.b.bXzXzXzXzXzXzXz.^Xz.b.^.bXd eXtXt.kXt ~.rXt.r.r.r.r.r.r.r.r.r.r.r.u.rXt ~ F F ~.r ~Xt N.r.r.r.r.r.r.r.rXt.rXtXtXt.^.^.^Xz.^XzXzXzXzXzXzXz.bXg.VXg.o.o.o.o _ _.o _.o.o.VXg.V.oXg.V.o.bXzXzXzXzXg.c.cXgXg.o.oXzXzXz.bXzXzXzXz.bXzXzXzXz.b NXz.^XjXt e.r.k.8.8.8.8 ~ ~.r e.k.^.^ NXz.^ e eXt ~ e.^.bXz.bXzXz l.^.bXz.bXzXzXz.^.^Xj e.r eXj.bXgXg.cXg.c.VXg.c.c.b.b.oXz.bXz _.bXz.b NXzXj e.r e.r e.r.rXtXt.rXt N.bXj eXt.b ~Xt eXt e eXzXz.c.^ _Xz.oXg.bXz.b.b.^XzXgXg.o.b.o.U.b.o.bXzXzXzXz.bXzXzXz.bXz.^.bXz.bXzXzXzXz.^.bXzXz.bXgXz.bXz.bXz.bXz.bXz.bXzXzXz.bXz.^.r.rXt.rXt.rXtXt.r N.r.r.rXt.rXtXtXt.IXgXk.z.z.^.r e.r.rXt e.r e e eXz.^Xg.^.^.bXz.b.bXz.b.bXzXzXz.bXzXzXzXzXz.b.bXzXz.b.o.^.b.U.^Xz _.bXg.c.UXg.V.c.c.c.c.cXg.V.V.V.o.o.V.o.oXz.^.oXj e e.r.r.r eXt e.r ~.`XI 3 1.i $ < t < U E.i U.iXqXB Xp 1.-.[.YXBXB hX*X*.K.K N.KXtXt",
+".r.r.r.rXV.r.r.r.r.rXV.r.r.r.r.r.rXt ~Xt.rX*XoXt.r.u.r.u.r.r.u.r.r.r.rXt.uX*X*X* 3 c ~.uX*.rXV e.X.b NXz.^XzXz NXzXz NXzXzXz.b N NX*X-.uXO.T =.;XpX+ =X+ `.i.aXI 3 RXIXD 3.e.e.e.e.a.e.e.~.e a.e.~XlX3.e.e 3.e a.e cX3 ,X. V c.`X-.`.`.8.K.5.k ~ ~.^Xt.r.r.k N NXgXg.b.b.b.b N.b.o.oXgXgXgXgXg.oXgXg l lXg.o.b.bXz.b.bXgXz.bXz.bXzXz.bXzXz.bXzXz.bXzXzXz.bXzXzXz.b.^.bXz N l.b.b.^.b.^.b.^.b.^.bXzXzXzXzXz.^Xz.^ N.^ N.^.kXt.rXt.kXtXt.rXt.r.r.r.r.r.r.r.r.r.r.r.r.r.r ~.8 F.8.rXV.r NXV.r.r.rXV.r.r.r.r.uXt.rXt.r.k.^.^Xz.^.^.^XzXzXzXz _XgXgXgXgXgXgXgXgXgXg.oXg.oXg.oXgXgXg.o.o.b.bXzXz.b.o l lXgXg.oXg.oXg lXg.o.bXzXzXzXzXzXz.^.^Xz N N.^.^Xt.r.k.8.8.8 ~.r.rXt.^.^.b N N NXt ~.rXt.r e N.^.^Xz N.b l.b.XXz.^Xz.^Xz.bXz.^Xj eXj.^XgXg lXg.c l.c.cXgXg.b.b.b.b.b.b.b.b.b.b.b.^Xd.r.rXtXt.rXt.rXt.r.rXt.k.k.rXtXt N.rXtXtXtXt e.b.I AXgXz NXz.bXzXzXzXz.bXg lXg.bXz.oXk _Xg.XXzXz.bXzXzXzXzXzXzXzXzXzXz.b.b.b.^.bXz.b N.bXgXg.b.b.b.b.b.b.b.b.bXz.b.^Xz.^.^ eXtXt.r.r.r.r.rXtXt N.rXt.rXt.r.rXt.r NXt.k N N.k.r.rXt.r.r.r.r.r.r.rXdXj.X.b.b.bXzXzXzXzXzXzXzXzXz.^XzXz.^.b.^XzXz.^.b.^Xz.^.bXgXz.b.b.b.oXg.c lXgXgXgXgXgXgXgXgXgXg.V.oXgXg _.^.b.XXd.r.r ~ e.r.r e.r.r 3.8XI.}Xl h E.} u.} U EXe.l.FXq x h UX, xXcXc ` $ <.8 ~Xt.k.k.k.k.k",
+".r.rXV.r.r.r.rXV.r.r.r.r.rXV.r.rXV.u.rXVXV.r.K.u.r.rXV.r.u.r.rXVXt.u.kX*.u.uXV 3XV.u 3 ~.u.rXt.k.X.X N N.^Xo N N N N N N N N N NXo ~X1 $ s.Z.WXLXnXw.[ n., $ $.~.aX1XI R.u cX,.~.~.e.e.~ a.e.~.~ a $ T.e.~.a R.e.e.e.u :., YXHXVX-.8.`.`XV.kX9.HX*.5.k.k.r.^.5 N.X.X.X N.X.b N.XX9XgXxXkXxXkXxXkXk lXxXgXkXxXg.XXg.X.X lXo.bXo N N N N N N N N N N N N N N N N N N N N N.^Xx N.X.^ N N N.^.^Xo N N N N N N N N N.^Xo NXo.KXtXt.k.kXtXV.r.u.r.rXV.r.rXV.r.rXV.r.rXV.rXVXV ~ 3.rXV.rXV.k.r.u.r.u.r.r.u.r.r.r.r.r.rXtXt.^Xo N N N.^Xo N N.^.X.X.o.XXg.XXg.XXg.XXg.XXgXxXgXxXgXxXg.XXxXg.X.XXg.XXx lXkXg.X.XXg.XXxXgXx.o.X N N N N N.^ N.^.^ N NXo N.kX*.k ~.uXV.uX*.k.k N N.5 N N.^Xt.r.r.r.r.rXtXt.k N.^ NXx.^ N N N N N N N N N NXt.k N.XXx.X.oXg.XXg.X.X.b N N.X.^.b N N N N N NXtXt.rXtXt.u.r.rXt.u.r.r.rXt.u.r.u.r.k.r.u.rXt.r.k N.I q.z N.b N.^Xo.^ N N.b.XXg.X.X N.bXk.XXx.o NXo.^ N N N N N N N N N N.b N N N.b N N N.b.X.X N N N N N N N N N N N N N N.k.r.r.r.u.r.r.r.r.uXt.k.rX*.r.r.r.rXt.rXt.r ~Xt.r.r.r.r.r.r.r.r.r.rXt.r.r.r.5.^Xo.^Xo N N N N N N N N N N N N N N N N N.X N N N.X.X.b N NXz NXgXxXgXxXgXx lXxXgXxXgXgXgXgXxXgXx.X N N NXt.r.r.r.u.rXt.r.r.H.8.` R.a ` h hX,X,.i xXqXB.9XM.M < a.a RX-X,XI.e.a.a a.~.`.`.8.8XVXV ~XV"
+};
diff --git a/modules/CIAO/examples/Display/README.html b/modules/CIAO/examples/Display/README.html
new file mode 100644
index 00000000000..3f6958893db
--- /dev/null
+++ b/modules/CIAO/examples/Display/README.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><!--//$Id$ -->
+ <title>CIAO application</title></head>
+
+
+<body alink="#0000ff" bgcolor="#ffffff" link="#000fff" text="#000000" vlink="#ff0f0f">
+
+<h2>Display example README</h2>
+<li>To download the code of this example please refer to the CVS repository at <code>$CIAO_ROOT/DAnCE/examples/Display</code>.</li>
+<hr>
+
+<h2>Example Description</h2>
+
+<font face="Times New Roman" size="4">This example is an imaginary car
+(software) instrument assembly which updates the display of
+current coordination of the airplane periodically. It consists of
+the following three components:
+<ul>
+ <li>The <font face="Courier New">RateGen</font> component sends periodic
+ <font face="Courier New">Pulse</font> events to consumers according to the
+ rate specified in its attribute <font face="Courier New">Rate</font>, it
+ allows a client (CORBA client <font face="Courier New">controller</font>) to
+ start and stop the rate generating event.</li>
+ <li>The <font face="Courier New">GPS</font> component interacts with a GPS
+ hardware. When the <font face="Courier New">GPS</font> component receives
+ <font face="Courier New">Refresh</font> events from <font face="Courier New">
+ RateGen</font>, it queries the GPS hardware and updates the internal cached
+ coordination (so that the current location can be read by accessing the
+ <font face="Courier New">MyLocation</font> interface) and generates an event
+ on its <font face="Courier New">Ready</font> port to inform the event
+ consumers that a new GPS reading is available. </li>
+ <li>The <font face="Courier New">NavDisplay</font> component displays the
+ current location of the vehicle on the windshield. When a
+ <font face="Courier New">NavDisplay</font> receives an event notifying the
+ availability of new data on its <font face="Courier New">Refresh</font> port,
+ it will acquire the current location of the vehicle by querying the interface
+ connected to the <font face="Courier New">GPSLocation</font> receptacle.</li>
+ <li>The <font face="Courier New">NavDisplayGUI</font> directory contains
+ implementations for a <font face="Courier New">NavDisplay</font> with
+ graphical interface. To use this graphical interface you need to install qt
+ libraries and have qt enabled (qt = 1) in your <font face="Courier New">$ACE_ROOT/bin/MakeProjectCreator/config/global.features</font>.
+ In some Linux distributions qt is installed by default. There is a
+ non-commercial version of qt libraries for Windows
+ <a href="http://www.dre.vanderbilt.edu/%7Edengg/ITS/qt-win-noncommercial-msvc-3.2.1.exe">
+ here</a> and more information about qt
+ <a href="http://www.trolltech.com/products/qt/index.html">here</a>. </li>
+ <li>If you just want to run the application, just go to the last section of
+ this page.</li>
+</ul>
+<hr>
+
+<h2>The files you will find.</h2>
+
+
+<li>1. The interfaces,
+data types and exceptions used by the components of this application are
+specified in the
+<a href="HUDisplay.idl"> <code>
+HUDisplay.idl</code></a> file, placed in this example root directory ($CIAO_ROOT/examples/Display).
+This is a IDL2 file and uses the familiar CORBA data types. The lib generated
+from HUDisplay.idl is linked to all the components of this example. <p></p>
+
+</li><li>2. mpc files for each of the components
+are available in the components directories. We use the  <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a>
+to generate makefiles and Visual C++ project/solutions files for all <a href="http://www.cs.wustl.edu/%7Eschmidt/ACE.html">ACE</a>, <a href="http://www.cs.wustl.edu/%7Eschmidt/TAO.html">TAO</a> and <a href="http://www.cs.wustl.edu/%7Eschmidt/CIAO.html">CIAO</a> libraries.
+
+</li><li>3. idl and cidl files for each component are placed in components directory. </li>
+
+<li>4. The <code>_exec.h</code> and <code>_exec.cpp</code> files are the actual implementation of the components.</li>
+
+<li>5. The <code>NavDisplayGUI_exec</code> directory:
+<font face="Times New Roman">The <code>NavDisplayGUI_exec.cpp</code> is just an executor version
+for NavDisplay. In NavDisplayGUI_exec directory you'll find only the the
+NavDisplayGUI_exec (and files for the GUI), which can be deployed with the
+NavDisplay stub and servant. So, if you deploy the NavDisplay component
+using NavDisplay_exec you'll be able to see the application running in the shell
+you triggered the NodeDaemon, and if you deploy the NavDisplay component using
+<code>NavDisplayGUI_exec</code> a graphical interface will show you a red dot moving over a
+map according to the location being generated by GPS component when you start
+the application. Notice that the <code>NavDisplayGUI.mpc</code> file includes <em>qt</em>, used for
+graphical interface. You must give the right location of qt libraries in your mpc file.</font>
+</li>
+
+<li>6. The <code>controller</code>:
+<font face="Times New Roman">The <code>RateGen</code>component is started and stopped by the <code>controller</code>, a CORBA client application.
+The <code>controller</code> source is in <code>RateGen</code> directory, so the <code>RateGen.mpc</code> file also
+include instructions for the <code>controller</code>
+build.</font>
+
+</li>
+
+
+
+<hr>
+
+<h3><font size="5">Make</font></h3>
+<li>Go to the directory <code>$CIAO_ROOT/DAnCE/examples/Display</code> and do:<br>
+ <code>$ACE_ROOT/bin/mwc.pl</code> (use -type option if you are using a compiler/IDE other than gnuace -which by default generates GNU makefiles)</li>
+ <br>For example, using <code>$ACE_ROOT/bin/mwc.pl -type vc71</code> if you are using Visual C++ 7.1 IDE.
+
+
+<hr>
+
+<h3><font size="5">Assemble</font></h3>
+Now we can step forward to build the assembly.
+
+<li> In the descriptor subdirectory, you'll find a XML descriptor file that describes your <em>deployment plan</em>, the flattened_deploymentplan.cdp:
+ <dd>
+This file declaratively specifies how the component assembly is
+constructed. Specifically, it specifies the component types, component
+instances, component connections and implementation artifact
+descriptions. </dd>
+<br>
+</li><li> Please make sure that the Modified_Deployment.xsd and XMI.xsd files are in the
+Display/descriptors directory.
+The former file could be found in $CIAO_ROOT/docs/schema directory.
+<br>
+
+
+<br>
+Note: Creating the deployment plan descriptor is a tedious and error-prone job, you can download <a href="http://www.dre.vanderbilt.edu/cosmic"> CoSMIC</a> to assist you in this step.
+</li>
+
+<p>&nbsp;</p>
+
+<hr align="justify">
+<h3><font size="5">Run</font></h3>
+Finally you are ready to test the application you have made. From different shells in <code>$CIAO_ROOT/DAnCE/examples/Display/descriptors/</code> directory:
+<br><br>
+
+<ul>
+ <li> Start NodeManagers (NodeDameon) by running <code> basicNodeDaemons.pl </code>
+
+ </li><li> Start the execution manager:
+ <code>$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat </code>
+ The NodeManagerMap.dat file describes the deployment daemons CIAO's Execution_Manager
+ will contact to instantiate ComponentServer's, home's, and component
+ instances. Each line specify the name of a installation
+ "destination" and the corresponding IOR for
+ the CIAO_Daemon. For example, the NodeManagerMap.dat contains:
+
+ AirFrameDevice corbaloc:iiop:localhost:10000/NodeManager
+ TimerDevice corbaloc:iiop:localhost:12000/NodeManager
+
+ You can copy and modify the copy to deploy the components in various
+ different locations to let the application truely "distributed".
+
+ Remember to start up the Execution_Manager using the
+ revised .dat file you created, and start up the CIAO_Daemon according to the specification.
+
+ </li>
+
+ <ul type="square"> <li> <em>NOTE</em>: As one can see, we use the "NodeManagerMap.dat" file to instruct the
+ Execution_Manager how to find the endpoint of each individual NodeManager (i.e., Node Daemon) where
+ component(s) will be deployed, so this is non-standard. We plan to use Naming Service to do this in the future.
+ </li></ul>
+
+ <li> Start the plan_launcher:
+ <code> $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp -k file://EM.ior </code>
+
+ After this, components should be deployed successfully.
+
+ </li><li> The Assembly_Manager is instructed to write the IOR of the RateGen
+ component to a file called "rategen.ior" in this
+ directory. You will then need to use a controller program in a
+ separate shell window to switch on/off the Rate Generator.
+ Go to the <em> $CIAO_ROOT/DAnCE/examples/Display/descriptor </em> directory and run the <code>$CIAO_ROOT/DAnCE/examples/Display/RateGen/controller
+ -o </code> to start the application. To stop the application run <code>$CIAO_ROOT/DAnCE/examples/Display/RateGen/controller
+ -f </code>
+ </li>
+</ul>
+
+
+
+<hr>
+<b>Email: </b><a href="mailto:"></a><address>ciao-users@cse.wustl.edu</address>
+</body></html>
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen.cidl b/modules/CIAO/examples/Display/RateGen/RateGen.cidl
new file mode 100644
index 00000000000..2af0e155a84
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen.cidl
@@ -0,0 +1,17 @@
+// $Id$ -*- IDL -*-
+
+#ifndef RATEGEN_CIDL
+#define RATEGEN_CIDL
+
+#include "RateGen.idl"
+
+composition session RateGen_Impl
+{
+ home executor RateGenHome_exec
+ {
+ implements HUDisplay::RateGenHome;
+ manages RateGen_exec;
+ };
+};
+
+#endif /* RATEGEN_CIDL */
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen.idl b/modules/CIAO/examples/Display/RateGen/RateGen.idl
new file mode 100644
index 00000000000..ef398f5df78
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+/**
+ * @file RateGen.idl
+ *
+ * Definition of the RateGen (a rate generator) component.
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+
+#ifndef RATEGEN_IDL
+#define RATEGEN_IDL
+
+#include "../Display_Base/Display_Base.idl"
+
+module HUDisplay
+{
+ component RateGen supports opmode
+ {
+ publishes tick Pulse;
+
+ /// The attribute can be configured via the home or the
+ /// component property file.
+ attribute long hertz;
+ };
+
+ home RateGenHome manages RateGen
+ {
+ // Explicit operations
+ factory new_RateGen (in long hertz);
+ };
+};
+
+#endif /* RATEGEN_IDL */
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen.mpc b/modules/CIAO/examples/Display/RateGen/RateGen.mpc
new file mode 100644
index 00000000000..5ec6cfec169
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen.mpc
@@ -0,0 +1,93 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Display_Base RateGen"
+
+project(Display_Base_RateGen_stub): ciao_client_dnc {
+ after += Display_Base_stub
+ sharedname = RateGen_stub
+ idlflags += -St \
+ -Wb,stub_export_macro=RATEGEN_STUB_Export \
+ -Wb,stub_export_include=RateGen_stub_export.h \
+ -Wb,skel_export_macro=RATEGEN_SVNT_Export \
+ -Wb,skel_export_include=RateGen_svnt_export.h
+ dynamicflags = RATEGEN_STUB_BUILD_DLL
+ libs += Display_Base_stub
+
+ IDL_Files {
+ RateGen.idl
+ }
+
+ Source_Files {
+ RateGenC.cpp
+ }
+
+ Header_Files {
+ RateGen_stub_export.h
+ }
+}
+
+project(Display_Base_RateGen_svnt) : ciao_servant_dnc {
+ after += Display_Base_skel Display_Base_RateGen_stub
+ sharedname = RateGen_svnt
+ libs += RateGen_stub Display_Base_stub Display_Base_skel
+
+ idlflags += -SS -St \
+ -Wb,export_macro=RATEGEN_SVNT_Export \
+ -Wb,export_include=RateGen_svnt_export.h
+ dynamicflags = RATEGEN_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ RateGen.cidl
+ }
+
+ IDL_Files {
+ RateGenE.idl
+ }
+
+ Source_Files {
+ RateGenEC.cpp
+ RateGenS.cpp
+ RateGen_svnt.cpp
+ }
+
+ Header_Files {
+ RateGen_svnt_export.h
+ }
+}
+
+
+project(Display_Base_RateGen_exec) : ciao_component_dnc {
+ after += Display_Base_RateGen_svnt
+ sharedname = RateGen_exec
+ libs += RateGen_stub \
+ RateGen_svnt \
+ Display_Base_stub \
+ Display_Base_skel
+
+ dynamicflags = RATEGEN_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ RateGen_exec.cpp
+ }
+
+ Header_Files {
+ RateGen_exec_export.h
+ }
+}
+
+
+project (RateGen_DnC_controller) : ciao_client_dnc, valuetype {
+ exename = controller
+ after += Display_Base_RateGen_stub
+ libs += RateGen_stub Display_Base_stub
+ libpaths += ../Display_Base
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp b/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp
new file mode 100644
index 00000000000..a03c7bc3acc
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen_exec.cpp
@@ -0,0 +1,332 @@
+// $Id$
+
+#include "RateGen_exec.h"
+#include "CIAO_common.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+
+//=================================================================
+
+MyImpl::Pulse_Handler::Pulse_Handler (MyImpl::RateGen_exec_i *cb)
+ : active_ (0),
+ done_ (0),
+ tid_ (0),
+ pulse_callback_ (cb)
+{
+ // Nothing
+ this->reactor (new ACE_Reactor);
+}
+
+MyImpl::Pulse_Handler::~Pulse_Handler ()
+{
+ delete this->reactor ();
+ this->reactor (0);
+}
+
+int
+MyImpl::Pulse_Handler::open_h ()
+{
+ return this->activate ();
+}
+
+int
+MyImpl::Pulse_Handler::close_h ()
+{
+ this->done_ = 1;
+ this->reactor ()->notify ();
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Waiting\n"));
+ }
+
+ return this->wait ();
+}
+
+int
+MyImpl::Pulse_Handler::start (CORBA::Long hertz)
+{
+ if (hertz == 0 || this->active_ != 0) // Not valid
+ {
+ return -1;
+ }
+
+ long usec = 1000000 / hertz;
+
+ this->tid_ = this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec));
+
+ this->active_ = 1;
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::stop (void)
+{
+ if (this->active_ == 0) // Not valid.
+ {
+ return -1;
+ }
+
+ this->reactor ()->cancel_timer (this);
+
+ this->active_ = 0;
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::active (void)
+{
+ return this->active_;
+}
+
+int
+MyImpl::Pulse_Handler::handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask)
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("[%x] handle = %d, close_mask = %d\n"),
+ this,
+ handle,
+ close_mask));
+ }
+
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::handle_timeout (const ACE_Time_Value &,
+ const void *)
+{
+ this->pulse_callback_->pulse ();
+
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("[%x] with count #%05d timed out at %d.%d!\n"),
+// this,
+// tv.sec (),
+// tv.usec ()));
+
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::svc (void)
+{
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ while (!this->done_)
+ {
+ this->reactor ()->handle_events ();
+ }
+
+ return 0;
+}
+
+//=================================================================
+
+MyImpl::RateGen_exec_i::RateGen_exec_i ()
+ : hertz_ (0),
+ pulser_ (this)
+{
+
+}
+
+MyImpl::RateGen_exec_i::RateGen_exec_i (CORBA::Long hz)
+ : hertz_ (hz),
+ pulser_ (this)
+{
+}
+
+MyImpl::RateGen_exec_i::~RateGen_exec_i ()
+{
+}
+
+CORBA::Long
+MyImpl::RateGen_exec_i::hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->hertz_;
+}
+
+void
+MyImpl::RateGen_exec_i::hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->hertz_ = hertz;
+}
+
+// Operations from supported interface(s)
+
+void
+MyImpl::RateGen_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->hertz_ == 0 || this->pulser_.active())
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ // @@ Start the rate generator
+ this->pulser_.start (this->hertz_);
+}
+
+void
+MyImpl::RateGen_exec_i::stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (! this->pulser_.active ())
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ // @@ stop the rate generator
+ this->pulser_.stop ();
+}
+
+CORBA::Boolean
+MyImpl::RateGen_exec_i::active ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->pulser_.active ();
+}
+
+// Operations from Components::SessionComponent
+
+void
+MyImpl::RateGen_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::set_session_context\n"));
+ }
+
+ this->context_ =
+ HUDisplay::CCM_RateGen_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+
+}
+
+void
+MyImpl::RateGen_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_activate\n"));
+ }
+
+ this->pulser_.open_h ();
+}
+
+void
+MyImpl::RateGen_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_passivate\n"));
+ }
+
+ this->pulser_.close_h ();
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_remove\n"));
+ }
+}
+
+void
+MyImpl::RateGen_exec_i::pulse (void)
+{
+ try
+ {
+// if (CIAO::debug_level () > 0)
+// {
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("Pushing HUDisplay::tick event!\n")));
+// }
+
+ HUDisplay::tick_var ev = new OBV_HUDisplay::tick ();
+
+ this->context_->push_Pulse (ev.in ());
+ }
+ catch (const CORBA::Exception&)
+ {
+ // @@ do nothing?
+ }
+
+}
+
+MyImpl::RateGenHome_exec_i::RateGenHome_exec_i ()
+{
+}
+
+MyImpl::RateGenHome_exec_i::~RateGenHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RateGenHome_exec_i::new_RateGen (CORBA::Long /* hertz */)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ Components::EnterpriseComponent_ptr tmp = 0;
+ ACE_NEW_THROW_EX (tmp,
+ MyImpl::RateGen_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return tmp;
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RateGenHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::RateGen_exec_i ();
+}
+
+
+extern "C" RATEGEN_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRateGenHome_Impl (void)
+{
+ return new MyImpl::RateGenHome_exec_i ();
+}
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_exec.h b/modules/CIAO/examples/Display/RateGen/RateGen_exec.h
new file mode 100644
index 00000000000..68c54c180c0
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen_exec.h
@@ -0,0 +1,185 @@
+// $Id$
+
+/**
+ * @file RateGen_exec.h
+ *
+ * Header file for the actualy RateGen and RateGenHome component
+ * implementation.
+ *
+ * @author Nanbor Wang <nanbor@cse.wustl.edu>
+ */
+
+#ifndef RATEGEN_EXEC_H
+#define RATEGEN_EXEC_H
+
+#include "RateGen_exec_export.h"
+#include "RateGenEC.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+namespace MyImpl
+{
+ // Forward decl.
+ class RateGen_exec_i;
+
+ /**
+ * @brief Active pulse generater
+ */
+ class Pulse_Handler : public ACE_Task_Base
+ {
+ public:
+ // Default constructor
+ Pulse_Handler (RateGen_exec_i *cb);
+ ~Pulse_Handler ();
+
+ int open_h (void);
+
+ int close_h (void);
+
+ int start (CORBA::Long hertz);
+
+ int stop (void);
+
+ int active (void);
+
+ // Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ // Called when <Time_Handler> is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ long active_;
+
+ /// Flag to indicate completion of this active object.
+ int done_;
+
+ /// The timer id we are waiting.
+ long tid_;
+
+ RateGen_exec_i *pulse_callback_;
+
+ ACE_Thread_Manager thr_mgr_;
+ };
+
+ /**
+ * @class RateGen_exec_i
+ *
+ * RateGen executor implementation class.
+ */
+ class RATEGEN_EXEC_Export RateGen_exec_i :
+ public virtual CIDL_RateGen_Impl::RateGen_exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ RateGen_exec_i ();
+
+ /// Initialize with a default frequency.
+ RateGen_exec_i (CORBA::Long hz);
+
+ /// Default destructor.
+ ~RateGen_exec_i ();
+
+ // Attribute operations.
+
+ virtual CORBA::Long hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from supported interface(s)
+
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean active ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by Pulse_Handler
+ void pulse (void);
+
+ protected:
+ /// Frequency
+ CORBA::Long hertz_;
+
+ /// Copmponent specific context
+ HUDisplay::CCM_RateGen_Context_var context_;
+
+ /// An active object that actually trigger the generation of
+ /// periodic events.
+ Pulse_Handler pulser_;
+ };
+
+ /**
+ * @class RateGenHome_exec_i
+ *
+ * RateGen home executor implementation class.
+ */
+ class RATEGEN_EXEC_Export RateGenHome_exec_i :
+ public virtual HUDisplay::CCM_RateGenHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ RateGenHome_exec_i ();
+
+ /// Default dtor.
+ ~RateGenHome_exec_i ();
+
+ // Explicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ new_RateGen (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" RATEGEN_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRateGenHome_Impl (void);
+
+#endif /* RATEGEN_EXEC_H */
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_exec_export.h b/modules/CIAO/examples/Display/RateGen/RateGen_exec_export.h
new file mode 100644
index 00000000000..8871ff3c649
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RATEGEN_EXEC
+// ------------------------------
+#ifndef RATEGEN_EXEC_EXPORT_H
+#define RATEGEN_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RATEGEN_EXEC_HAS_DLL)
+# define RATEGEN_EXEC_HAS_DLL 1
+#endif /* ! RATEGEN_EXEC_HAS_DLL */
+
+#if defined (RATEGEN_EXEC_HAS_DLL) && (RATEGEN_EXEC_HAS_DLL == 1)
+# if defined (RATEGEN_EXEC_BUILD_DLL)
+# define RATEGEN_EXEC_Export ACE_Proper_Export_Flag
+# define RATEGEN_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RATEGEN_EXEC_BUILD_DLL */
+# define RATEGEN_EXEC_Export ACE_Proper_Import_Flag
+# define RATEGEN_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RATEGEN_EXEC_BUILD_DLL */
+#else /* RATEGEN_EXEC_HAS_DLL == 1 */
+# define RATEGEN_EXEC_Export
+# define RATEGEN_EXEC_SINGLETON_DECLARATION(T)
+# define RATEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RATEGEN_EXEC_HAS_DLL == 1 */
+
+// Set RATEGEN_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RATEGEN_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RATEGEN_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RATEGEN_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RATEGEN_EXEC_NTRACE */
+
+#if (RATEGEN_EXEC_NTRACE == 1)
+# define RATEGEN_EXEC_TRACE(X)
+#else /* (RATEGEN_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RATEGEN_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RATEGEN_EXEC_NTRACE == 1) */
+
+#endif /* RATEGEN_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_stub_export.h b/modules/CIAO/examples/Display/RateGen/RateGen_stub_export.h
new file mode 100644
index 00000000000..d71c4f10a12
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RATEGEN_STUB
+// ------------------------------
+#ifndef RATEGEN_STUB_EXPORT_H
+#define RATEGEN_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (RATEGEN_STUB_HAS_DLL)
+# define RATEGEN_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && RATEGEN_STUB_HAS_DLL */
+
+#if !defined (RATEGEN_STUB_HAS_DLL)
+# define RATEGEN_STUB_HAS_DLL 1
+#endif /* ! RATEGEN_STUB_HAS_DLL */
+
+#if defined (RATEGEN_STUB_HAS_DLL) && (RATEGEN_STUB_HAS_DLL == 1)
+# if defined (RATEGEN_STUB_BUILD_DLL)
+# define RATEGEN_STUB_Export ACE_Proper_Export_Flag
+# define RATEGEN_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RATEGEN_STUB_BUILD_DLL */
+# define RATEGEN_STUB_Export ACE_Proper_Import_Flag
+# define RATEGEN_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RATEGEN_STUB_BUILD_DLL */
+#else /* RATEGEN_STUB_HAS_DLL == 1 */
+# define RATEGEN_STUB_Export
+# define RATEGEN_STUB_SINGLETON_DECLARATION(T)
+# define RATEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RATEGEN_STUB_HAS_DLL == 1 */
+
+// Set RATEGEN_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RATEGEN_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RATEGEN_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RATEGEN_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RATEGEN_STUB_NTRACE */
+
+#if (RATEGEN_STUB_NTRACE == 1)
+# define RATEGEN_STUB_TRACE(X)
+#else /* (RATEGEN_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RATEGEN_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RATEGEN_STUB_NTRACE == 1) */
+
+#endif /* RATEGEN_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/RateGen/RateGen_svnt_export.h b/modules/CIAO/examples/Display/RateGen/RateGen_svnt_export.h
new file mode 100644
index 00000000000..d2b10477fab
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/RateGen_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RATEGEN_SVNT
+// ------------------------------
+#ifndef RATEGEN_SVNT_EXPORT_H
+#define RATEGEN_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (RATEGEN_SVNT_HAS_DLL)
+# define RATEGEN_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && RATEGEN_SVNT_HAS_DLL */
+
+#if !defined (RATEGEN_SVNT_HAS_DLL)
+# define RATEGEN_SVNT_HAS_DLL 1
+#endif /* ! RATEGEN_SVNT_HAS_DLL */
+
+#if defined (RATEGEN_SVNT_HAS_DLL) && (RATEGEN_SVNT_HAS_DLL == 1)
+# if defined (RATEGEN_SVNT_BUILD_DLL)
+# define RATEGEN_SVNT_Export ACE_Proper_Export_Flag
+# define RATEGEN_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RATEGEN_SVNT_BUILD_DLL */
+# define RATEGEN_SVNT_Export ACE_Proper_Import_Flag
+# define RATEGEN_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RATEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RATEGEN_SVNT_BUILD_DLL */
+#else /* RATEGEN_SVNT_HAS_DLL == 1 */
+# define RATEGEN_SVNT_Export
+# define RATEGEN_SVNT_SINGLETON_DECLARATION(T)
+# define RATEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RATEGEN_SVNT_HAS_DLL == 1 */
+
+// Set RATEGEN_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RATEGEN_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RATEGEN_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RATEGEN_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RATEGEN_SVNT_NTRACE */
+
+#if (RATEGEN_SVNT_NTRACE == 1)
+# define RATEGEN_SVNT_TRACE(X)
+#else /* (RATEGEN_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RATEGEN_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RATEGEN_SVNT_NTRACE == 1) */
+
+#endif /* RATEGEN_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Display/RateGen/controller.cpp b/modules/CIAO/examples/Display/RateGen/controller.cpp
new file mode 100644
index 00000000000..fdb5838382d
--- /dev/null
+++ b/modules/CIAO/examples/Display/RateGen/controller.cpp
@@ -0,0 +1,123 @@
+// $Id$
+
+#include "RateGenC.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+
+/**
+ * @file controller.cpp
+ *
+ * This program interact with a RateGen component, using its supported
+ * interface "opmode" to switch it on/off, and set the rate of the
+ * RateGen.
+ */
+
+const char *rategen_ior_ = 0;
+int rate = 2;
+int turn_on = 1;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:r:of");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'o':
+ turn_on = 1;
+ break;
+ case 'f':
+ turn_on = 0;
+ break;
+ case 'k':
+ rategen_ior_ = get_opts.opt_arg ();
+ break;
+ case 'r':
+ rate = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o (Turn on the rate generator)\n"
+ "-f (Turn off the rate generator)\n"
+ "-k <RateGen IOR> (default is file://RateGen.ior)\n"
+ "-r <rate in hertz> (default is 3)\n"
+ "\n",
+ argv [0]),
+ -1);
+ break;
+ }
+ }
+
+ if (rategen_ior_ == 0)
+ {
+ rategen_ior_ = "file://RateGen.ior";
+ }
+
+ if (rate == 0)
+ {
+ rate = 3;
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ CORBA::Object_var obj =
+ orb->string_to_object (rategen_ior_);
+
+ HUDisplay::RateGen_var pulser =
+ HUDisplay::RateGen::_narrow (obj.in ());
+
+ if (CORBA::is_nil (pulser.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire 'RateGen' objref\n"),
+ -1);
+ }
+
+ if (turn_on)
+ {
+ pulser->hertz (rate);
+
+ ACE_DEBUG ((LM_DEBUG, "Start up the Rate Generator\n"));
+
+ pulser->start ();
+ }
+ else
+ {
+ pulser->stop ();
+
+ ACE_DEBUG ((LM_DEBUG, "Rate Generator stopped\n"));
+ }
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ cerr << "Uncaught CORBA exception" << endl;
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp b/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp
new file mode 100644
index 00000000000..2ebfcbc5f3a
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:DeploymentPlan
+
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Display Deployment Plan</label>
+
+ <instance xmi:id="RateGen_Instance">
+ <name>RateGen_Instance</name>
+ <node>RateGenNode</node>
+ </instance>
+
+ <instance xmi:id="GPS_Instance">
+ <name>GPS_Instance</name>
+ <node>GPSNode</node>
+ </instance>
+
+ <instance xmi:id="NavDisplay_Instance">
+ <name>NavDisplay_Instance</name>
+ <node>NavDisplayNode</node>
+ </instance>
+
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd b/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd
new file mode 100644
index 00000000000..65f5eb81d1e
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/Modified_Deployment.xsd
@@ -0,0 +1,826 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+
+ <xsd:simpleType name="TCKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="tk_null"/>
+ <xsd:enumeration value="tk_void"/>
+ <xsd:enumeration value="tk_short"/>
+ <xsd:enumeration value="tk_long"/>
+ <xsd:enumeration value="tk_ushort"/>
+ <xsd:enumeration value="tk_ulong"/>
+ <xsd:enumeration value="tk_float"/>
+ <xsd:enumeration value="tk_double"/>
+ <xsd:enumeration value="tk_boolean"/>
+ <xsd:enumeration value="tk_char"/>
+ <xsd:enumeration value="tk_octet"/>
+ <xsd:enumeration value="tk_any"/>
+ <xsd:enumeration value="tk_TypeCode"/>
+ <xsd:enumeration value="tk_Principal"/>
+ <xsd:enumeration value="tk_objref"/>
+ <xsd:enumeration value="tk_struct"/>
+ <xsd:enumeration value="tk_union"/>
+ <xsd:enumeration value="tk_enum"/>
+ <xsd:enumeration value="tk_string"/>
+ <xsd:enumeration value="tk_sequence"/>
+ <xsd:enumeration value="tk_array"/>
+ <xsd:enumeration value="tk_alias"/>
+ <xsd:enumeration value="tk_except"/>
+ <xsd:enumeration value="tk_longlong"/>
+ <xsd:enumeration value="tk_ulonglong"/>
+ <xsd:enumeration value="tk_longdouble"/>
+ <xsd:enumeration value="tk_wchar"/>
+ <xsd:enumeration value="tk_wstring"/>
+ <xsd:enumeration value="tk_wfixed"/>
+ <xsd:enumeration value="tk_value"/>
+ <xsd:enumeration value="tk_value_box"/>
+ <xsd:enumeration value="tk_native"/>
+ <xsd:enumeration value="tk_abstract_interface"/>
+ <xsd:enumeration value="tk_local_interface"/>
+ <xsd:enumeration value="tk_component"/>
+ <xsd:enumeration value="tk_home"/>
+ <xsd:enumeration value="tk_event"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="DataType">
+ <xsd:choice>
+ <xsd:element name="kind" type="Deployment:TCKind"/>
+<!--
+@@ not used, what for?
+
+ <xsd:element name="enum" type="Deployment:EnumType"/>
+ <xsd:element name="objref" type="Deployment:ObjrefType"/>
+ <xsd:element name="boundedString" type="Deployment:BoundedStringType"/>
+ <xsd:element name="fixed" type="Deployment:FixedType"/>
+ <xsd:element name="array" type="Deployment:ArrayType"/>
+ <xsd:element name="sequence" type="Deployment:SequenceType"/>
+ <xsd:element name="alias" type="Deployment:AliasType"/>
+ <xsd:element name="struct" type="Deployment:StructType"/>
+ <xsd:element name="value" type="Deployment:ValueType"/>
+ <xsd:element name="union" type="Deployment:UnionType"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DataValue">
+ <xsd:choice>
+ <xsd:element name="short" type="xsd:short"/>
+ <xsd:element name="long" type="xsd:int"/>
+ <xsd:element name="ushort" type="xsd:unsignedShort"/>
+ <xsd:element name="ulong" type="xsd:unsignedInt"/>
+ <xsd:element name="float" type="xsd:float"/>
+ <xsd:element name="double" type="xsd:double"/>
+ <xsd:element name="boolean" type="xsd:boolean"/>
+ <xsd:element name="octet" type="xsd:unsignedByte"/>
+ <!-- xsd:element name="opaque" type="xsd:base64Binary"/ -->
+ <xsd:element name="objref" type="xsd:string"/>
+ <xsd:element name="enum" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="longlong" type="xsd:long"/>
+ <xsd:element name="ulonglong" type="xsd:unsignedLong"/>
+ <xsd:element name="longdouble" type="xsd:double"/>
+ <xsd:element name="fixed" type="xsd:string"/>
+
+<!--
+@@ recursive
+ <xsd:element name="any" type="Deployment:Any"/>
+-->
+
+ <xsd:element name="typecode" type="Deployment:DataType"/>
+
+<!--
+@@ recursive
+ <xsd:element name="element" type="Deployment:DataValue"/>
+ <xsd:element name="discriminator" type="Deployment:DataValue"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ <xsd:element name="boxedValue" type="Deployment:DataValue"/>
+ <xsd:element name="member" type="Deployment:NamedValue"/>
+-->
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Any">
+ <xsd:sequence>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Property">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- End of base definitions. -->
+
+ <xsd:complexType name="Node">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="connection" type="Deployment:Interconnect"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+-->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="SatisfierPropertyKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Quantity"/>
+ <xsd:enumeration value="Capacity"/>
+ <xsd:enumeration value="Minimum"/>
+ <xsd:enumeration value="Maximum"/>
+ <xsd:enumeration value="Attribute"/>
+ <xsd:enumeration value="Selection"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="SatisfierProperty">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:SatisfierPropertyKind"/>
+ <xsd:element name="value" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Resource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SharedResource">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="node" type="Deployment:Node"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Domain">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="sharedResource" type="Deployment:SharedResource" minOccurs="0"/>
+ <xsd:element name="node" type="Deployment:Node" maxOccurs="unbounded"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="interconnect" type="Deployment:Interconnect"/>
+ <xsd:element name="bridge" type="Deployment:Bridge"/>
+-->
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Requirement">
+ <xsd:sequence>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Deployment -->
+
+ <xsd:complexType name="ResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArtifactDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="deployedResource" type="Deployment:ResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="artifact" type="xsd:IDREF" maxOccurs="unbounded"/> <!-- ArtifactDeploymentDescription -->
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ResourceUsageKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="InstanceUsesResource"/>
+ <xsd:enumeration value="ResourceUsesInstance"/>
+ <xsd:enumeration value="PortUsesResource"/>
+ <xsd:enumeration value="ResourceUsesPort"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="InstanceResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="InstanceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="node" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="implementation" type="xsd:IDREF"/> <!-- MonolithicDeploymentDescription -->
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ <xsd:element name="deployedSharedResource" type="Deployment:InstanceResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:simpleType name="CCMComponentPortKind">
+ <xsd:restriction base="xsd:NCName">
+ <xsd:enumeration value="Facet"/>
+ <xsd:enumeration value="SimplexReceptacle"/>
+ <xsd:enumeration value="MultiplexReceptacle"/>
+ <xsd:enumeration value="EventEmitter"/>
+ <xsd:enumeration value="EventPublisher"/>
+ <xsd:enumeration value="EventConsumer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="ComponentPortDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string"/>
+ <xsd:element name="exclusiveProvider" type="xsd:string"/>
+ <xsd:element name="exclusiveUser" type="xsd:string"/>
+ <xsd:element name="optional" type="xsd:string"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPropertyDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentInterfaceDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="unbounded"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="specificType" type="xsd:string"/>
+ <xsd:element name="supportedType" type="xsd:string" maxOccurs="unbounded" />
+ <xsd:element name="idlFile" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="port" type="Deployment:ComponentPortDescription" maxOccurs="unbounded"/>
+ <xsd:element name="property" type="Deployment:ComponentPropertyDescription" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added a href attribute
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentExternalPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="provider" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="kind" type="Deployment:CCMComponentPortKind"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- InstanceDeploymentDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ExternalReferenceEndpoint">
+ <xsd:sequence>
+ <xsd:element name="location" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ConnectionResourceDeploymentDescription">
+ <xsd:sequence>
+ <xsd:element name="targetName" type="xsd:string"/>
+ <xsd:element name="requirementName" type="xsd:string"/>
+ <xsd:element name="resourceName" type="xsd:string"/>
+ <xsd:element name="resourceValue" type="Deployment:Any"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:PlanSubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="deployedResource" type="Deployment:ConnectionResourceDeploymentDescription" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationDependency">
+ <xsd:sequence>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="DeploymentPlan">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="UUID" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="implementation" type="Deployment:MonolithicDeploymentDescription" maxOccurs="unbounded" />
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:PlanConnectionDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- potentially recursive, not used
+ <xsd:element name="externalProperty" type="Deployment:PlanPropertyMapping"/>
+ -->
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="artifact" type="Deployment:ArtifactDeploymentDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+
+
+<!-- Implementation -->
+
+
+ <xsd:complexType name="Capability">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedImplementationArtifact">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive NIA->IAD->NIA -->
+ <xsd:element name="referencedArtifact" type="Deployment:ImplementationArtifactDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationArtifactDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="1"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+
+ <!-- @@ There probably should be only one location? -->
+ <xsd:element name="location" type="xsd:string" maxOccurs="unbounded"/>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:NamedImplementationArtifact" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added a href attribute
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ImplementationRequirement">
+ <xsd:sequence>
+ <xsd:element name="resourceUsage" type="Deployment:ResourceUsageKind"/>
+ <xsd:element name="resourcePort" type="xsd:string"/>
+ <xsd:element name="componentPort" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MonolithicImplementationDescription">
+ <xsd:sequence>
+ <xsd:element name="execParameter" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="primaryArtifact" type="Deployment:NamedImplementationArtifact" maxOccurs="unbounded"/>
+ <xsd:element name="deployRequirement" type="Deployment:ImplementationRequirement" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PackagedComponentImplementation">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <!-- @@ recursive CPD->PCI->CID->CAD->SID->CPD -->
+ <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="1"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added href
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentPackageReference">
+ <xsd:sequence>
+ <xsd:element name="requiredUUID" type="xsd:string"/>
+ <xsd:element name="requiredName" type="xsd:string"/>
+ <xsd:element name="requiredType" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentInstantiationDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="package" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPortEndpoint">
+ <xsd:sequence>
+ <xsd:element name="portName" type="xsd:string"/>
+ <xsd:element name="instance" type="xsd:IDREF"/> <!-- SubcomponentInstantiationDescription -->
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyConnectionDescription">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="deployRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="externalEndpoint" type="Deployment:ComponentExternalPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="internalEndpoint" type="Deployment:SubcomponentPortEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="externalReference" type="Deployment:ExternalReferenceEndpoint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="SubcomponentPropertyReference">
+ <xsd:sequence>
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="AssemblyPropertyMapping">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:SubcomponentPropertyReference"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentAssemblyDescription">
+ <xsd:sequence>
+ <xsd:element name="instance" type="Deployment:SubcomponentInstantiationDescription" maxOccurs="unbounded"/>
+ <xsd:element name="connection" type="Deployment:AssemblyConnectionDescription" maxOccurs="unbounded"/>
+ <xsd:element name="externalProperty" type="Deployment:AssemblyPropertyMapping" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ComponentImplementationDescription">
+ <!-- @@mxiong: added minOccurs="0" maxOccurs="unbounded"
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+ <xsd:element name="implements" type="Deployment:ComponentInterfaceDescription" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="assemblyImpl" type="Deployment:ComponentAssemblyDescription"/>
+ <xsd:element name="monolithicImpl" type="Deployment:MonolithicImplementationDescription"/>
+ </xsd:choice>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ <xsd:element name="capability" type="Deployment:Capability" minOccurs="0"/>
+ <xsd:element name="dependsOn" type="Deployment:ImplementationDependency" minOccurs="0"/>
+ <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ <!-- @@mxiong: added href
+ when adding config_handler support
+ for repoMan
+ -->
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+
+
+<!-- Package -->
+
+
+ <xsd:complexType name="PackageConfiguration">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="UUID" type="xsd:string"/>
+<!--
+@@ recursive, not used
+ <xsd:element name="specializedConfig" type="Deployment:PackageConfiguration"/>
+-->
+
+ <xsd:element name="basePackage" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="reference" type="Deployment:ComponentPackageReference" minOccurs="0"/>
+ <xsd:element name="selectRequirement" type="Deployment:Requirement" minOccurs="0"/>
+ <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:element name="contentLocation" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="TopLevelPackageDescription">
+ <xsd:sequence>
+ <xsd:element name="package" type="Deployment:PackageConfiguration" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- Top-level elements. -->
+
+
+ <xsd:element name="domain" type="Deployment:Domain"/>
+ <xsd:element name="deploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:element name="implementationArtifactDescription" type="Deployment:ImplementationArtifactDescription" />
+ <xsd:element name="componentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="componentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element name="componentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="packageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="topLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+
+
+
+<!-- VAULT
+
+Place for strange things. Nobody knows what they are for...
+
+-->
+
+<!--
+
+ <xsd:complexType name="EnumType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ObjrefType">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="BoundedStringType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="FixedType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="digits" type="xsd:string"/>
+ <xsd:element name="scale" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="ArrayType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="length" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="SequenceType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="bound" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="AliasType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="elementType" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="member" type="Deployment:StructMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="StructMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="modifier" type="xsd:string"/>
+ <xsd:element name="baseType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:ValueMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="ValueMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="visibility" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="typeId" type="xsd:string"/>
+ <xsd:element name="default" type="Deployment:UnionMemberType"/>
+ <xsd:element name="discriminatorType" type="Deployment:DataType"/>
+ <xsd:element name="member" type="Deployment:UnionMemberType"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="UnionMemberType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="Deployment:DataType"/>
+ <xsd:element name="label" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="NamedValue">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="value" type="Deployment:DataValue"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="Bridge">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connect" type="Deployment:Interconnect"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="Interconnect">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="connection" type="Deployment:Bridge"/>
+ <xsd:element name="connect" type="Deployment:Node"/>
+ <xsd:element name="resource" type="Deployment:Resource"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanPropertyMapping">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ <xsd:element name="externalName" type="xsd:string"/>
+ <xsd:element name="delegatesTo" type="Deployment:PlanSubcomponentPropertyReference"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PlanSubcomponentPropertyReference">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="propertyName" type="xsd:string"/>
+ <xsd:element name="instance" type="Deployment:InstanceDeploymentDescription"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+<!--
+
+ This type is not referenced anywhere.
+
+ <xsd:complexType name="RequirementSatisfier">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="resourceType" type="xsd:string"/>
+ <xsd:element name="property" type="Deployment:SatisfierProperty"/>
+ </xsd:choice>
+ </xsd:complexType>
+
+-->
+
+</xsd:schema>
diff --git a/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat b/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat
new file mode 100644
index 00000000000..b63a105a133
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+AirFrameDevice corbaloc:iiop:localhost:10001/NodeManager
+TimerDevice corbaloc:iiop:localhost:20001/NodeManager
diff --git a/modules/CIAO/examples/Display/descriptors/XMI.xsd b/modules/CIAO/examples/Display/descriptors/XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl b/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl
new file mode 100755
index 00000000000..6bdb1c85e03
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/basicNodeDaemon.pl
@@ -0,0 +1,57 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+$iorfile3 = PerlACE::LocalFile ("NodeApp3.ior");
+$iorfile4 = PerlACE::LocalFile ("NodeApp4.ior");
+$iorfile5 = PerlACE::LocalFile ("NodeApp5.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+unlink $iorfile3;
+unlink $iorfile4;
+unlink $iorfile5;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:10000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:20000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV3 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:30000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV4 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:40000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV5 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:50000 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+$SV1->Spawn ();
+$SV2->Spawn ();
+$SV3->Spawn ();
+$SV4->Spawn ();
+$SV5->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..dd1a70b51ec
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,305 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Display-DeploymentPlan</label>
+ <UUID>Display_Plan_UUID_0001</UUID>
+ <!-- Exactly one realizes
+ This realizes section may also not be right. -->
+ <realizes>
+ <label>HUDisplay-realizes-cid</label>
+ <UUID>4edb0436-da3f-450e-baed-79127c1405b2</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:HUDisplay/RateGen:1.0</supportedType>
+ <port>
+ <name>Pulse</name>
+ <specificType>IDL:HUDisplay/TimeOut:1.0</specificType>
+ <supportedType>IDL:HUDisplay/TimeOut:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <kind>EventPublisher</kind>
+ </port>
+ </realizes>
+
+
+
+
+ <implementation id="HUDisplay-RateGen-mdd">
+ <name>HUDisplay-RateGen-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>HUDisplay-RateGen_svnt</artifact>
+ <artifact>HUDisplay-RateGen_exec</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="HUDisplay-NavDisplay-mdd">
+ <name>HUDisplay-NavDisplay-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>HUDisplay-NavDisplay_svnt</artifact>
+ <artifact>HUDisplay-NavDisplay_exec</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="HUDisplay-GPS-mdd">
+ <name>HUDisplay-GPS-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>HUDisplay-GPS_svnt</artifact>
+ <artifact>HUDisplay-GPS_exec</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+
+
+ <instance id="HUDisplay-GPS-idd">
+ <name>HUDisplay-GPS-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>HUDisplay-GPS-mdd</implementation>
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>GPS.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance id="HUDisplay-RateGen-idd">
+ <name>HUDisplay-RateGen-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>HUDisplay-RateGen-mdd</implementation>
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>RateGen.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>hertz</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>2</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="HUDisplay-NavDisplay-idd">
+ <name>HUDisplay-NavDisplay-idd</name>
+ <node>AirFrameDevice</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>HUDisplay-NavDisplay-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>NavDisplay.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>Pulse_Refresh</name>
+ <internalEndpoint>
+ <portName>Pulse</portName>
+ <kind>EventPublisher</kind>
+ <instance>HUDisplay-RateGen-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>Refresh</portName>
+ <kind>EventConsumer</kind>
+ <instance>HUDisplay-GPS-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>Refresh_Ready</name>
+ <internalEndpoint>
+ <portName>Ready</portName>
+ <kind>EventPublisher</kind>
+ <instance>HUDisplay-GPS-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>Refresh</portName>
+ <kind>EventConsumer</kind>
+ <instance>HUDisplay-NavDisplay-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>GPSLocation_MyLocation_facet</name>
+ <internalEndpoint>
+ <portName>MyLocation</portName>
+ <kind>Facet</kind>
+ <instance>HUDisplay-GPS-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>GPSLocation</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>HUDisplay-NavDisplay-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+
+
+
+
+ <artifact id="HUDisplay-RateGen_svnt">
+ <name>RateGen_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>RateGen_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_HUDisplay_RateGenHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+ <artifact id="HUDisplay-RateGen_exec">
+ <name>RateGen_exec</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>RateGen_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createRateGenHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+
+ <artifact id="HUDisplay-GPS_svnt">
+ <name>GPS_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>GPS_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_HUDisplay_GPSHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+
+ <artifact id="HUDisplay-GPS_exec">
+ <name>GPS_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>GPS_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createGPSHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+
+ <artifact id="HUDisplay-NavDisplay_svnt">
+ <name>NavDisplay_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>NavDisplay_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_HUDisplay_NavDisplayHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+
+ <artifact id="HUDisplay-NavDisplay_exec">
+ <name>NavDisplay_exec</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>NavDisplay_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createNavDisplayHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ <!-- @@ This has dependancies that need to be specified, how? -->
+ </artifact>
+
+
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl b/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl
new file mode 100755
index 00000000000..008c87f6e35
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/run_NodeDaemons.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:10001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:20001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl b/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl
new file mode 100755
index 00000000000..c4323252d1b
--- /dev/null
+++ b/modules/CIAO/examples/Display/descriptors/run_test_without_ns.pl
@@ -0,0 +1,173 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DAnCE = "$ENV{'ACE_ROOT'}/TAO/CIAO/DAnCE";
+
+$daemons_running = 0;
+$em_running = 0;
+$daemons = 2;
+@ports = ( 10001, 20001 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+$controller_exec = "$CIAO_ROOT/examples/Display/RateGen/controller";
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("RateGen.ior");
+ unlink PerlACE::LocalFile ("GPS.ior");
+ unlink PerlACE::LocalFile ("NavDisplay.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -d 30";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i > 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ $daemons_running = 1;
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattened_deploymentplan.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+if (PerlACE::waitforfile_timed (
+ "GPS.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of GPS could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("RateGen.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of RateGen could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Invoking the controller\n";
+$controller = new PerlACE::Process ("$controller_exec", "-k file://RateGen.ior");
+$result = $controller->SpawnWaitKill (3000);
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# put some delay here.
+sleep (20);
+
+# invoking the controller again to stop the rategen
+print "Invoking the controller to stop RateGen\n";
+$controller = new PerlACE::Process ("$controller_exec", "-k file://RateGen.ior -f");
+$result = $controller->SpawnWaitKill (3000);
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# delay a bit more
+sleep (2);
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl
new file mode 100644
index 00000000000..18b300932ee
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.idl
@@ -0,0 +1,21 @@
+//$Id$:
+
+#ifndef CIAO_HELLO_IDL
+#define CIAO_HELLO_IDL
+
+#include <Components.idl>
+
+module Hello
+{
+ interface ReadMessage
+ {
+ string get_message();
+ };
+
+ eventtype TimeOut
+ {
+ public string data;
+ };
+};
+
+#endif /* CIAO_HELLO_IDL */
diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc
new file mode 100644
index 00000000000..468afcc1b8b
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc
@@ -0,0 +1,60 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Hello_Base"
+
+project(Hello_Base_DnC_stub): ciao_client_dnc {
+
+ sharedname = Hello_Base_DnC_stub
+ idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_BASE_SVNT_Export \
+ -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseC.cpp
+ }
+
+ Header_Files {
+ Hello_BaseC.h
+ }
+
+ Inline_Files {
+ Hello_BaseC.inl
+ }
+}
+
+project(Hello_Base_DnC_svnt) : ciao_servant_dnc {
+ after += Hello_Base_DnC_stub
+ sharedname = Hello_Base_DnC_svnt
+ libs += Hello_Base_DnC_stub
+
+ idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_BASE_SVNT_Export \
+ -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseS.cpp
+ }
+
+ Header_Files {
+ Hello_BaseS.h
+ }
+
+ Inline_Files {
+ Hello_BaseS.inl
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_stub_export.h b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_stub_export.h
new file mode 100644
index 00000000000..224fe95a845
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HELLO_BASE_STUB
+// ------------------------------
+#ifndef HELLO_BASE_STUB_EXPORT_H
+#define HELLO_BASE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HELLO_BASE_STUB_HAS_DLL)
+# define HELLO_BASE_STUB_HAS_DLL 1
+#endif /* ! HELLO_BASE_STUB_HAS_DLL */
+
+#if defined (HELLO_BASE_STUB_HAS_DLL) && (HELLO_BASE_STUB_HAS_DLL == 1)
+# if defined (HELLO_BASE_STUB_BUILD_DLL)
+# define HELLO_BASE_STUB_Export ACE_Proper_Export_Flag
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HELLO_BASE_STUB_BUILD_DLL */
+# define HELLO_BASE_STUB_Export ACE_Proper_Import_Flag
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HELLO_BASE_STUB_BUILD_DLL */
+#else /* HELLO_BASE_STUB_HAS_DLL == 1 */
+# define HELLO_BASE_STUB_Export
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HELLO_BASE_STUB_HAS_DLL == 1 */
+
+// Set HELLO_BASE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HELLO_BASE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HELLO_BASE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HELLO_BASE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HELLO_BASE_STUB_NTRACE */
+
+#if (HELLO_BASE_STUB_NTRACE == 1)
+# define HELLO_BASE_STUB_TRACE(X)
+#else /* (HELLO_BASE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HELLO_BASE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HELLO_BASE_STUB_NTRACE == 1) */
+
+#endif /* HELLO_BASE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_svnt_export.h b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_svnt_export.h
new file mode 100644
index 00000000000..57625da60c6
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Hello_Base/Hello_Base_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HELLO_BASE_SVNT
+// ------------------------------
+#ifndef HELLO_BASE_SVNT_EXPORT_H
+#define HELLO_BASE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HELLO_BASE_SVNT_HAS_DLL)
+# define HELLO_BASE_SVNT_HAS_DLL 1
+#endif /* ! HELLO_BASE_SVNT_HAS_DLL */
+
+#if defined (HELLO_BASE_SVNT_HAS_DLL) && (HELLO_BASE_SVNT_HAS_DLL == 1)
+# if defined (HELLO_BASE_SVNT_BUILD_DLL)
+# define HELLO_BASE_SVNT_Export ACE_Proper_Export_Flag
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HELLO_BASE_SVNT_BUILD_DLL */
+# define HELLO_BASE_SVNT_Export ACE_Proper_Import_Flag
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HELLO_BASE_SVNT_BUILD_DLL */
+#else /* HELLO_BASE_SVNT_HAS_DLL == 1 */
+# define HELLO_BASE_SVNT_Export
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HELLO_BASE_SVNT_HAS_DLL == 1 */
+
+// Set HELLO_BASE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HELLO_BASE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HELLO_BASE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HELLO_BASE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HELLO_BASE_SVNT_NTRACE */
+
+#if (HELLO_BASE_SVNT_NTRACE == 1)
+# define HELLO_BASE_SVNT_TRACE(X)
+#else /* (HELLO_BASE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HELLO_BASE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HELLO_BASE_SVNT_NTRACE == 1) */
+
+#endif /* HELLO_BASE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/ReDaC-Usage.html b/modules/CIAO/examples/Hello/ReDaC-Usage.html
new file mode 100644
index 00000000000..eb9b8c729b7
--- /dev/null
+++ b/modules/CIAO/examples/Hello/ReDaC-Usage.html
@@ -0,0 +1,308 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--//$Id$ -->
+
+
+
+ <title>ReDaC Service Usage</title>
+</head>
+
+
+<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" alink="#0000ff" link="#000fff" vlink="#ff0f0f">
+
+
+<hr>
+<h2>Simple Tutorial for using ReDaC (<span style="font-style: italic;">Redeployment and Reconfiguration</span>)</h2>
+
+
+<span style="font-weight: bold;">Prerequisite</span><b>:<br>
+
+
+<br>
+
+
+</b>Before you proceed further, please read the <a href="./step-by-step.html">step-by-step</a> tutorial
+page first.<b><br>
+
+
+<br>
+
+
+</b><b>Note:</b>
+<br>
+
+
+<ul>
+
+
+ <li>ReDaC is a middleware service provided by the <a href="http://www.cs.wustl.edu/%7Eschmidt/ACE_wrappers/TAO/CIAO/docs/releasenotes/dance.html">DAnCE</a>
+framework.</li>
+
+
+ <li>ReDaC service is used for redeployment and/or
+reconfiguration of your&nbsp;running component-based application on
+the fly without shutting down your application.&nbsp;</li>
+
+
+ <li>ReDaC currently works for CIAO QoS-enabled component
+middleware only.</li>
+
+
+</ul>
+
+
+<hr>
+<h2>Example Description</h2>
+
+
+We will use the Hello example to illustrate how one could use ReDaC
+service to perform redeployment and reconfiguration.
+<hr>
+<h3>Initial Deployment</h3>
+
+
+Below steps are required for the initial deployment of your application,
+which is performed by DAnCE. The below steps are different from those
+presented in the <a href="./step-by-step.html">step-by-step</a>
+tutorial page in the sense that we pass different command line options
+to the <span style="font-style: italic;">Plan_Launcher</span>
+client:<br>
+
+
+<ul>
+
+
+ <li> Go into the <em> descriptors </em> directory
+Start NodeManagers (NodeDameons) by running <code>
+run_NodeDaemons.pl </code> </li>
+
+
+
+ <ul>
+
+
+ <li>This step is the same as the one presented in the
+&nbsp;<a href="step-by-step.html">step-by-step</a>
+tutorial page. </li>
+
+
+
+ </ul>
+
+
+ <li> Start the execution manager: <code>$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager
+-o EM.ior -i NodeManagerMap.dat </code> </li>
+
+
+
+ <ul>
+
+
+ <li> As one can see, we use the
+"NodeManagerMap.dat" file to instruct the Execution_Manager how to find
+the endpoint of each individual NodeManager (i.e., Node Daemon) where
+component(s) will be deployed.</li>
+
+
+
+ </ul>
+
+
+
+ <ul>
+
+
+ <li>This step is the same as the one presented in the
+&nbsp;<a href="step-by-step.html">step-by-step</a>
+tutorial page. </li>
+
+
+
+ </ul>
+
+
+ <li> Start the plan launcher: <code>
+$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p
+flattened_deploymentplan_without_ns.cdp -k file://EM.ior -o DAM.ior</code>&nbsp;</li>
+
+
+
+ <ul>
+
+
+ <li>After this, components should be deployed
+successfully. </li>
+
+
+ <li>This step is different &nbsp;from the one presented
+in the
+&nbsp;<a href="step-by-step.html">step-by-step</a>
+tutorial page in the way that we added an additional "<code>-o</code>"
+option when running <code>Plan_Launcher</code>, which
+dumps an IOR file of DAnCE's DomainApplicationManager. &nbsp;With
+this option added, the <code>plan_launcher </code>will
+exit immediately after the application is deployed, instead of staying
+in the interactive mode. (As a normal user, you don't need to worry
+about the details of what exactly a DomainApplicationManager is.)</li>
+
+
+
+ </ul>
+
+
+</ul>
+
+
+<hr>
+<h3>Redeployment and Reconfiguration</h3>
+
+
+Basically, you could use ReDaC service in two ways. <br>
+
+
+<ol style="font-weight: bold;">
+
+
+ <li>Use ReDaC service <span style="font-style: italic;">directly</span>
+through DAnCE's&nbsp;<span style="font-style: italic;">Plan_Launcher</span>
+client</li>
+
+
+ <li><span style="font-weight: bold;">Use ReDaC
+service <span style="font-style: italic;">programmatically</span>
+by writing your own client</span></li>
+
+
+</ol>
+
+
+This tutorial illustrates how exactly you could use ReDaC.<br>
+
+
+<br style="font-weight: bold;">
+
+
+<span style="font-weight: bold;">Use ReDaC service through
+</span><span style="font-style: italic; font-weight: bold;">Plan_Launcher</span><span style="font-weight: bold;">&nbsp; of DAnCE:</span><br>
+
+
+<ul>
+
+
+ <li>As we've already mentioned, you should first deploy your
+Hello application with DAnCE, which is described in the above "Initial
+Deployment" section of this tutorial.<code> </code>
+ </li>
+
+
+ <li>
+
+ <p> Use ReDaC service through <code>Plan_Launcher</code>'s
+"-r" command line option to perform redeployment and reconfiguration.<br>
+
+
+Run the command
+ <code>$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -r
+flattened_deploymentplan_without_ns_add.cdp </code>will add
+additional components to the existing running assembly.</p>
+
+
+ </li>
+
+
+ <li>
+
+ <p>Run the command
+ <code>$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -r
+flattened_deploymentplan_without_ns_remove.cdp </code>will
+remove components from the existing running assembly.</p>
+
+
+ </li>
+
+
+ <li>Run the command
+ <code></code><code>$CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher
+-i file://DAM.ior</code> will tear down your entire application
+completely.</li>
+
+
+</ul>
+
+
+<br>
+
+
+<div style="margin-left: 40px;"><span style="font-weight: bold;">NOTE: &nbsp;</span>By
+using ReDaC through Plan_Launcher, as a user you must provide a new
+DeploymentPlan (.cdp) XML file, which captures the new deployment and
+configuration settings of your application, and the Plan_UUID of the
+new DeploymentPlan should be&nbsp;the same as the one of the old
+(running) DeploymentPlan. Otherwise, DAnCE will think you want to
+deploy a totally different deployment plan, instead of applying some
+changes to the existing plan. One could use <a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> MDD tool to create such a deployment plan XML file.<br>
+
+</div>
+
+
+<br>
+
+
+<span style="font-weight: bold;">Use ReDaC service <span style="font-style: italic;">programmatically</span>:</span><span style="font-weight: bold;"></span>
+<ul>
+
+
+
+ <p> You could also use ReDaC service programmatically by writing your
+own client to invoke ReDaC service. Basically, to accomplish this, your
+client program needs to:</p>
+
+
+ <ol>
+
+ <li>Obtain the&nbsp;<code>ExecutionManager</code> object reference, either through naming service or through IOR file.</li>
+
+ <li>Invoke the operation&nbsp;<code>perform_redeployment</code> on this interface by passing a single argument type called&nbsp;<code>DeploymentPlan</code>.</li>
+
+
+ </ol>
+
+
+</ul>
+
+
+<div style="margin-left: 40px;">The IDL signature of this operation is as follows:<br>
+
+<code><br>
+
+&nbsp;&nbsp;&nbsp; void perform_redeployment (in DeploymentPlan new_plan)<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raises (PlanError,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InstallationFailure,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownImplId,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImplEntryPointNotFound,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InvalidConnection,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InvalidProperty,<br>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::Components::RemoveFailure);</code><br>
+
+</div>
+
+
+<br>
+<div style="margin-left: 40px;">In order to simplify the creation of a the&nbsp;<code>"new_plan", </code>we are implementing a utility class which allows a developer to easily manipulate a deployment plan data structure.</div>
+
+
+<hr>
+<b>Email: </b>
+<address>ciao-users@cse.wustl.edu</address>
+
+
+</body>
+</html>
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver.cidl b/modules/CIAO/examples/Hello/Receiver/Receiver.cidl
new file mode 100644
index 00000000000..3b2e04e5161
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Receiver.idl"
+
+composition session Receiver_Impl
+{
+ home executor ReceiverHome_Exec
+ {
+ implements Hello::ReceiverHome;
+ manages Receiver_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver.idl b/modules/CIAO/examples/Hello/Receiver/Receiver.idl
new file mode 100644
index 00000000000..909b93a8081
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver.idl
@@ -0,0 +1,20 @@
+//$Id$:
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "../Hello_Base/Hello_Base.idl"
+
+module Hello
+{
+ component Receiver
+ {
+ uses ReadMessage read_message;
+ consumes TimeOut click_in;
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+};
+#endif /*RECEIVER_IDL*/
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver.mpc b/modules/CIAO/examples/Hello/Receiver/Receiver.mpc
new file mode 100644
index 00000000000..2ccb0fd930c
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver.mpc
@@ -0,0 +1,97 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Receiver"
+
+project(Hello_Base_Receiver_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_stub
+ sharedname = Receiver_DnC_stub
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+ libs += Hello_Base_DnC_stub
+
+ IDL_Files {
+ Receiver.idl
+ }
+
+ Source_Files {
+ ReceiverC.cpp
+ }
+
+ Header_Files {
+ ReceiverC.h
+ }
+
+ Inline_Files {
+ ReceiverC.inl
+ }
+}
+
+project(Hello_Base_Receiver_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_svnt \
+ Hello_Base_Receiver_DnC_stub
+ sharedname = Receiver_DnC_svnt
+ libs += Receiver_DnC_stub \
+ Hello_Base_DnC_stub \
+ Hello_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_SVNT_Export \
+ -Wb,export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Receiver.cidl
+ }
+
+ IDL_Files {
+ ReceiverE.idl
+ }
+
+ Source_Files {
+ ReceiverEC.cpp
+ ReceiverS.cpp
+ Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ ReceiverEC.h
+ ReceiverS.h
+ Receiver_svnt.h
+ }
+
+ Inline_Files {
+ ReceiverEC.inl
+ ReceiverS.inl
+ }
+}
+
+
+project(Hello_Base_Receiver_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_Receiver_DnC_svnt
+ sharedname = Receiver_DnC_exec
+ libs += Receiver_DnC_stub \
+ Receiver_DnC_svnt \
+ Hello_Base_DnC_stub \
+ Hello_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \
+ -Wb,export_include=Receiver_exec_export.h
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Receiver_exec.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp
new file mode 100644
index 00000000000..f8e55decc14
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.cpp
@@ -0,0 +1,129 @@
+//$Id$
+/*
+ * @file Receiver_exec.cpp
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ */
+
+#include "Receiver_exec.h"
+#include "CIAO_common.h"
+
+namespace CIDL_Receiver_Impl
+{
+ Receiver_exec_i::Receiver_exec_i ()
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i ()
+ {
+ }
+
+ void
+ Receiver_exec_i::push_click_in (Hello::TimeOut * ev)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ //Get the message from the Sender first.
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Informed by the Sender with message [%s]\n",
+ ev->data ()));
+
+ Hello::ReadMessage_var rev
+ = this->context_->get_connection_read_message
+ ();
+
+ if (CORBA::is_nil (rev.in ()))
+ throw CORBA::BAD_INV_ORDER ();
+
+ CORBA::String_var str =
+ rev->get_message ();
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Got message from the server [%s] \n",
+ str.in () ));
+ }
+
+ // Operations from Components::SessionComponen
+ void
+ Receiver_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::set_session_context\n"));
+
+ this->context_ =
+ Receiver_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ }
+
+ void
+ Receiver_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver_exec_i::ciao_preactivate\n"));
+ }
+
+ void
+ Receiver_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate\n"));
+ }
+
+ void
+ Receiver_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver_exec_i::ciao_postactivate\n"));
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_passivate\n"));
+ }
+
+ void
+ Receiver_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_remove\n"));
+ }
+
+
+ ReceiverHome_exec_i::ReceiverHome_exec_i ()
+ {
+ }
+
+ ReceiverHome_exec_i::~ReceiverHome_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ Components::EnterpriseComponent_ptr tmp;
+ ACE_NEW_THROW_EX (tmp,
+ Receiver_exec_i,
+ CORBA::NO_MEMORY ());
+ return tmp;
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void)
+ {
+ return new ReceiverHome_exec_i ();
+ }
+}
+
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h
new file mode 100644
index 00000000000..1322eb8d1a2
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver_exec.h
@@ -0,0 +1,105 @@
+//$Id$:
+//============================================================
+/**
+ * @file Receiver_exec.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef RECEIVER_EXEC_H
+#define RECEIVER_EXEC_H
+
+#include "ReceiverEC.h"
+#include "Receiver_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Receiver_Impl
+{
+
+ /**
+ * @class Receiver_exec_i
+ *
+ * Receiver executor implementation class.
+ */
+
+ class RECEIVER_EXEC_Export Receiver_exec_i :
+ public virtual Receiver_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Receiver_exec_i ();
+
+ /// Default destructor.
+ ~Receiver_exec_i ();
+
+ // Operation which will be called upon receiving the timeout event.
+ virtual void
+ push_click_in (Hello::TimeOut *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+ /// Copmponent specific context
+ Receiver_Exec_Context_var context_;
+ private:
+ CORBA::String_var message_;
+ };
+
+ /**
+ * @class ReceiverHome_exec_i
+ *
+ * Receiver home executor implementation class.
+ */
+ class RECEIVER_EXEC_Export ReceiverHome_exec_i :
+ public virtual ReceiverHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ ReceiverHome_exec_i ();
+
+ /// Default dtor.
+ ~ReceiverHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void);
+}
+
+#endif /* RECEIVER_EXEC_H */
+
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_exec_export.h b/modules/CIAO/examples/Hello/Receiver/Receiver_exec_export.h
new file mode 100644
index 00000000000..8ad3640d130
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_EXEC
+// ------------------------------
+#ifndef RECEIVER_EXEC_EXPORT_H
+#define RECEIVER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_EXEC_HAS_DLL)
+# define RECEIVER_EXEC_HAS_DLL 1
+#endif /* ! RECEIVER_EXEC_HAS_DLL */
+
+#if defined (RECEIVER_EXEC_HAS_DLL) && (RECEIVER_EXEC_HAS_DLL == 1)
+# if defined (RECEIVER_EXEC_BUILD_DLL)
+# define RECEIVER_EXEC_Export ACE_Proper_Export_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_EXEC_BUILD_DLL */
+# define RECEIVER_EXEC_Export ACE_Proper_Import_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_EXEC_BUILD_DLL */
+#else /* RECEIVER_EXEC_HAS_DLL == 1 */
+# define RECEIVER_EXEC_Export
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_EXEC_HAS_DLL == 1 */
+
+// Set RECEIVER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_EXEC_NTRACE */
+
+#if (RECEIVER_EXEC_NTRACE == 1)
+# define RECEIVER_EXEC_TRACE(X)
+#else /* (RECEIVER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_EXEC_NTRACE == 1) */
+
+#endif /* RECEIVER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_stub_export.h b/modules/CIAO/examples/Hello/Receiver/Receiver_stub_export.h
new file mode 100644
index 00000000000..c457802854f
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_STUB
+// ------------------------------
+#ifndef RECEIVER_STUB_EXPORT_H
+#define RECEIVER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_STUB_HAS_DLL)
+# define RECEIVER_STUB_HAS_DLL 1
+#endif /* ! RECEIVER_STUB_HAS_DLL */
+
+#if defined (RECEIVER_STUB_HAS_DLL) && (RECEIVER_STUB_HAS_DLL == 1)
+# if defined (RECEIVER_STUB_BUILD_DLL)
+# define RECEIVER_STUB_Export ACE_Proper_Export_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_STUB_BUILD_DLL */
+# define RECEIVER_STUB_Export ACE_Proper_Import_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_STUB_BUILD_DLL */
+#else /* RECEIVER_STUB_HAS_DLL == 1 */
+# define RECEIVER_STUB_Export
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_STUB_HAS_DLL == 1 */
+
+// Set RECEIVER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_STUB_NTRACE */
+
+#if (RECEIVER_STUB_NTRACE == 1)
+# define RECEIVER_STUB_TRACE(X)
+#else /* (RECEIVER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_STUB_NTRACE == 1) */
+
+#endif /* RECEIVER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Receiver/Receiver_svnt_export.h b/modules/CIAO/examples/Hello/Receiver/Receiver_svnt_export.h
new file mode 100644
index 00000000000..1c9eca2556d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Receiver/Receiver_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_SVNT
+// ------------------------------
+#ifndef RECEIVER_SVNT_EXPORT_H
+#define RECEIVER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_SVNT_HAS_DLL)
+# define RECEIVER_SVNT_HAS_DLL 1
+#endif /* ! RECEIVER_SVNT_HAS_DLL */
+
+#if defined (RECEIVER_SVNT_HAS_DLL) && (RECEIVER_SVNT_HAS_DLL == 1)
+# if defined (RECEIVER_SVNT_BUILD_DLL)
+# define RECEIVER_SVNT_Export ACE_Proper_Export_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_SVNT_BUILD_DLL */
+# define RECEIVER_SVNT_Export ACE_Proper_Import_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_SVNT_BUILD_DLL */
+#else /* RECEIVER_SVNT_HAS_DLL == 1 */
+# define RECEIVER_SVNT_Export
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_SVNT_HAS_DLL == 1 */
+
+// Set RECEIVER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_SVNT_NTRACE */
+
+#if (RECEIVER_SVNT_NTRACE == 1)
+# define RECEIVER_SVNT_TRACE(X)
+#else /* (RECEIVER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_SVNT_NTRACE == 1) */
+
+#endif /* RECEIVER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Sender/Sender.cidl b/modules/CIAO/examples/Hello/Sender/Sender.cidl
new file mode 100644
index 00000000000..8ce22a223b0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Sender.idl"
+
+composition session Sender_Impl
+{
+ home executor SenderHome_Exec
+ {
+ implements Hello::SenderHome;
+ manages Sender_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/examples/Hello/Sender/Sender.idl b/modules/CIAO/examples/Hello/Sender/Sender.idl
new file mode 100644
index 00000000000..d182b68008c
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender.idl
@@ -0,0 +1,43 @@
+//$Id$
+
+#ifndef CIAO_SENDER_IDL
+#define CIAO_SENDER_IDL
+
+
+#include "../Hello_Base/Hello_Base.idl"
+
+module Hello
+{
+ /* This is a Sender specific interface which will be used to get the
+ * process start.
+ */
+
+ interface trigger
+ {
+ void start ();
+ };
+
+ enum COLOR_SELECTION
+ {
+ empty,
+ white,
+ red,
+ yellow
+ };
+
+ component Sender supports trigger
+ {
+ provides ReadMessage push_message;
+ publishes TimeOut click_out;
+ attribute string local_message;
+ readonly attribute long hertz;
+
+ // A test attribute to test setting attributes through XML
+ attribute COLOR_SELECTION color;
+ };
+
+ home SenderHome manages Sender
+ {
+ };
+};
+#endif /*CIAO_SENDER_IDL*/
diff --git a/modules/CIAO/examples/Hello/Sender/Sender.mpc b/modules/CIAO/examples/Hello/Sender/Sender.mpc
new file mode 100644
index 00000000000..defe03b11a6
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender.mpc
@@ -0,0 +1,114 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Sender"
+
+project(Hello_Base_Sender_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_stub
+ sharedname = Sender_DnC_stub
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_STUB_BUILD_DLL
+ libs += Hello_Base_DnC_stub
+
+ IDL_Files {
+ Sender.idl
+ }
+
+ Source_Files {
+ SenderC.cpp
+ }
+
+ Header_Files {
+ SenderC.h
+ }
+
+ Inline_Files {
+ SenderC.inl
+ }
+}
+
+project(Hello_Base_Sender_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_svnt \
+ Hello_Base_Sender_DnC_stub
+ sharedname = Sender_DnC_svnt
+ libs += Sender_DnC_stub \
+ Hello_Base_DnC_stub \
+ Hello_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=SENDER_SVNT_Export \
+ -Wb,export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Sender.cidl
+ }
+
+ IDL_Files {
+ SenderE.idl
+ }
+
+ Source_Files {
+ SenderEC.cpp
+ SenderS.cpp
+ Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SenderEC.h
+ SenderS.h
+ Sender_svnt.h
+ }
+
+ Inline_Files {
+ SenderEC.inl
+ SenderS.inl
+ }
+}
+
+project(Hello_Base_Sender_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_Sender_DnC_svnt
+ sharedname = Sender_DnC_exec
+ libs += Sender_DnC_stub \
+ Sender_DnC_svnt \
+ Hello_Base_DnC_stub \
+ Hello_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=SENDER_EXEC_Export \
+ -Wb,export_include=Sender_exec_export.h
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec.cpp
+ }
+
+ Header_Files {
+ Sender_exec.h
+ }
+}
+
+project (Hello_DnC_Starter) : ciao_client_dnc, valuetype {
+ avoids += ace_for_tao
+ exename = starter
+ after += Hello_Base_Sender_DnC_stub
+ libs += Sender_DnC_stub Hello_Base_DnC_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ starter.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
diff --git a/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp b/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp
new file mode 100644
index 00000000000..ad4a4143b8d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender_exec.cpp
@@ -0,0 +1,190 @@
+//$Id$
+
+#include "Sender_exec.h"
+
+namespace CIDL_Sender_Impl
+{
+ char*
+ Message_Impl::get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender sending out message: [%s]\n", component_.message_.in ()));
+ return CORBA::string_dup (component_.message_.in ());
+ }
+
+ Sender_exec_i::~Sender_exec_i ()
+ {
+ }
+
+ void
+ Sender_exec_i::local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ message_ = CORBA::string_dup (local_message);
+ }
+
+ char *
+ Sender_exec_i::local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CORBA::string_dup (message_.in ());
+ }
+
+ void
+ Sender_exec_i::hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->hertz_ = hertz;
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::Hertz:%d\n", this->hertz_));
+ }
+
+ CORBA::Long
+ Sender_exec_i::hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->hertz_;
+ }
+
+ ::Hello::COLOR_SELECTION
+ Sender_exec_i::color ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ return this->color_;
+ }
+
+ void
+ Sender_exec_i::color (
+ ::Hello::COLOR_SELECTION color)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->color_ = color;
+ }
+
+ Hello::CCM_ReadMessage_ptr
+ Sender_exec_i::get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec.i::get_push_message called\n "));
+ return ( new Message_Impl (*this) );
+ }
+
+ void
+ Sender_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ Hello::TimeOut_var event = new OBV_Hello::TimeOut;
+ event->data ("ACE/TAO/CIAO");
+ ACE_DEBUG ((LM_DEBUG, "Sender initiates the process.\n"));
+ this->context_->push_click_out (event.in ());
+
+ ACE_DEBUG ((LM_DEBUG, "My current color is:"));
+
+ switch (this->color_)
+ {
+ case ::Hello::empty:
+ ACE_DEBUG ((LM_DEBUG, "ERROR: Enum attribute initialization failed.\n"));
+ break;
+
+ case ::Hello::white:
+ ACE_DEBUG ((LM_DEBUG, "white\n"));
+ break;
+
+ case ::Hello::red:
+ ACE_DEBUG ((LM_DEBUG, "red\n"));
+ break;
+
+ case ::Hello::yellow:
+ ACE_DEBUG ((LM_DEBUG, "yellow\n"));
+ break;
+
+ default:
+ ACE_DEBUG ((LM_DEBUG, "Unknown color!\n"));
+
+ }
+ }
+
+ void
+ Sender_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::set_session_context\n"));
+
+ this->context_ =
+ Sender_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ciao_preactivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ccm_activate\n"));
+ }
+
+ void
+ Sender_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ciao_postactivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_passivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_remove\n"));
+ }
+
+ SenderHome_exec_i::SenderHome_exec_i ()
+ {
+ }
+
+ SenderHome_exec_i::~SenderHome_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ SenderHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) creating SenderHome \n"));
+ return new Sender_exec_i;
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void)
+ {
+ return new SenderHome_exec_i ();
+ }
+}
+
diff --git a/modules/CIAO/examples/Hello/Sender/Sender_exec.h b/modules/CIAO/examples/Hello/Sender/Sender_exec.h
new file mode 100644
index 00000000000..23949e7c80d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender_exec.h
@@ -0,0 +1,176 @@
+//$Id$
+//============================================================
+/**
+ * @file Sender_exec.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef SENDER_EXEC_H
+#define SENDER_EXEC_H
+
+#include "SenderEC.h"
+#include "Sender_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Sender_Impl
+{
+ /**
+ * @class Sender_exec_i
+ *
+ * Sender executor implementation class.
+ */
+
+ class SENDER_EXEC_Export Sender_exec_i :
+ public virtual Sender_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Sender_exec_i ()
+ : message_(CORBA::string_dup ("Default Message")),
+ color_ (::Hello::empty)
+ {
+ }
+
+ /// Secondary construction.
+ Sender_exec_i (const char* local_message)
+ : message_ (CORBA::string_dup (local_message)),
+ color_ (::Hello::empty)
+ {
+ }
+
+ /// Default destructor.
+ virtual ~Sender_exec_i ();
+
+ /// Operation to set the value of the attribute "local_message"
+ virtual void local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to get the value of the attribute "local_message"
+ virtual char * local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to set the value of the attribute "hertz"
+ virtual void hertz (CORBA::Long hertz)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to get the value of the attribute "hertz"
+ virtual CORBA::Long hertz ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /* Operations for obtaining the interface reference. */
+ /* This method will be used in the assembly face so the
+ * ObjRef of this read_message facet will be sent to the
+ * client side(receptacle).
+ */
+ // Note: You can specify the return type as ::Hello::CCM_message *
+ virtual Hello::CCM_ReadMessage_ptr
+ get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Hello::COLOR_SELECTION
+ color ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ color (::Hello::COLOR_SELECTION)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operation inside of the trigger interface.
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+ /// Copmponent specific context
+ Sender_Exec_Context_var context_;
+
+ private:
+ CORBA::String_var message_;
+
+ CORBA::Long hertz_;
+
+ ::Hello::COLOR_SELECTION color_;
+
+ friend class Message_Impl;
+ };
+
+
+ //
+ //
+ //
+ class Message_Impl : public virtual Hello::CCM_ReadMessage,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Message_Impl (Sender_exec_i& component)
+ : component_ (component)
+ {
+ }
+
+ virtual char *
+ get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ Sender_exec_i& component_;
+ };
+
+ /**
+ * @class SenderHome_exec_i
+ *
+ * Sender home executor implementation class.
+ */
+ class SENDER_EXEC_Export SenderHome_exec_i :
+ public virtual SenderHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ SenderHome_exec_i ();
+
+ /// Default dtor.
+ virtual ~SenderHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void);
+}
+
+#endif /* SENDER_EXEC_H */
+
+
diff --git a/modules/CIAO/examples/Hello/Sender/Sender_exec_export.h b/modules/CIAO/examples/Hello/Sender/Sender_exec_export.h
new file mode 100644
index 00000000000..dbaa7ea15bc
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC
+// ------------------------------
+#ifndef SENDER_EXEC_EXPORT_H
+#define SENDER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_HAS_DLL)
+# define SENDER_EXEC_HAS_DLL 1
+#endif /* ! SENDER_EXEC_HAS_DLL */
+
+#if defined (SENDER_EXEC_HAS_DLL) && (SENDER_EXEC_HAS_DLL == 1)
+# if defined (SENDER_EXEC_BUILD_DLL)
+# define SENDER_EXEC_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_BUILD_DLL */
+# define SENDER_EXEC_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_BUILD_DLL */
+#else /* SENDER_EXEC_HAS_DLL == 1 */
+# define SENDER_EXEC_Export
+# define SENDER_EXEC_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_NTRACE */
+
+#if (SENDER_EXEC_NTRACE == 1)
+# define SENDER_EXEC_TRACE(X)
+#else /* (SENDER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Sender/Sender_stub_export.h b/modules/CIAO/examples/Hello/Sender/Sender_stub_export.h
new file mode 100644
index 00000000000..28c5d3131d0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_STUB
+// ------------------------------
+#ifndef SENDER_STUB_EXPORT_H
+#define SENDER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_STUB_HAS_DLL)
+# define SENDER_STUB_HAS_DLL 1
+#endif /* ! SENDER_STUB_HAS_DLL */
+
+#if defined (SENDER_STUB_HAS_DLL) && (SENDER_STUB_HAS_DLL == 1)
+# if defined (SENDER_STUB_BUILD_DLL)
+# define SENDER_STUB_Export ACE_Proper_Export_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_STUB_BUILD_DLL */
+# define SENDER_STUB_Export ACE_Proper_Import_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_STUB_BUILD_DLL */
+#else /* SENDER_STUB_HAS_DLL == 1 */
+# define SENDER_STUB_Export
+# define SENDER_STUB_SINGLETON_DECLARATION(T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_STUB_HAS_DLL == 1 */
+
+// Set SENDER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_STUB_NTRACE */
+
+#if (SENDER_STUB_NTRACE == 1)
+# define SENDER_STUB_TRACE(X)
+#else /* (SENDER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_STUB_NTRACE == 1) */
+
+#endif /* SENDER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Sender/Sender_svnt_export.h b/modules/CIAO/examples/Hello/Sender/Sender_svnt_export.h
new file mode 100644
index 00000000000..53236a883f2
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/Sender_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_SVNT
+// ------------------------------
+#ifndef SENDER_SVNT_EXPORT_H
+#define SENDER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_SVNT_HAS_DLL)
+# define SENDER_SVNT_HAS_DLL 1
+#endif /* ! SENDER_SVNT_HAS_DLL */
+
+#if defined (SENDER_SVNT_HAS_DLL) && (SENDER_SVNT_HAS_DLL == 1)
+# if defined (SENDER_SVNT_BUILD_DLL)
+# define SENDER_SVNT_Export ACE_Proper_Export_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_SVNT_BUILD_DLL */
+# define SENDER_SVNT_Export ACE_Proper_Import_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_SVNT_BUILD_DLL */
+#else /* SENDER_SVNT_HAS_DLL == 1 */
+# define SENDER_SVNT_Export
+# define SENDER_SVNT_SINGLETON_DECLARATION(T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_SVNT_HAS_DLL == 1 */
+
+// Set SENDER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_SVNT_NTRACE */
+
+#if (SENDER_SVNT_NTRACE == 1)
+# define SENDER_SVNT_TRACE(X)
+#else /* (SENDER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_SVNT_NTRACE == 1) */
+
+#endif /* SENDER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Hello/Sender/starter.cpp b/modules/CIAO/examples/Hello/Sender/starter.cpp
new file mode 100644
index 00000000000..6fa219abfba
--- /dev/null
+++ b/modules/CIAO/examples/Hello/Sender/starter.cpp
@@ -0,0 +1,90 @@
+//$Id$:
+
+#include "SenderC.h"
+#include "ace/Get_Opt.h"
+
+// IOR file of the Sender
+const char * ior = 0;
+const char * message = 0;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:m:");
+ int c = 0;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case 'm':
+ message = get_opts.opt_arg ();
+ break;
+
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Usage: %s\n"
+ "-k <Sender IOR> (default is file://Sender.ior)\n",
+ "-m <Message>\n",
+ argv [0]),
+ -1);
+ break;
+ }
+ }
+
+ if (ior == 0)
+ {
+ ior = "file://Sender.ior";
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv,
+ "");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ CORBA::Object_var obj =
+ orb->string_to_object (ior);
+
+ Hello::Sender_var sender = Hello::Sender::_narrow (obj.in ());
+
+ if (CORBA::is_nil (sender.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire Sender's objref\n"),
+ -1);
+ }
+
+ if (message)
+ {
+ sender->local_message (message);
+ }
+
+ sender->start ();
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Unknown exception \n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp
new file mode 100644
index 00000000000..eda6344646e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:DeploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello Deployment Plan</label>
+ <instance xmi:id="Sender_Instance">
+ <name>Sender_Instance</name>
+ <node>SenderNode</node>
+ </instance>
+ <instance xmi:id="Receiver_Instance">
+ <name>Receiver_Instance</name>
+ <node>ReceiverNode</node>
+ </instance>
+</Deployment:DeploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors/Domain.cdd b/modules/CIAO/examples/Hello/descriptors/Domain.cdd
new file mode 100644
index 00000000000..882b29724cd
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Domain.cdd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Deployment:Domain
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+<label>Hello Domain</label>
+<UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+<node>
+ <name>Sender</name>
+ <label>Sender's Node</label>
+</node>
+<node>
+ <name>Receiver</name>
+ <label>Receiver's Node</label>
+</node>
+</Deployment:Domain>
diff --git a/modules/CIAO/examples/Hello/descriptors/Hello.cid b/modules/CIAO/examples/Hello/descriptors/Hello.cid
new file mode 100644
index 00000000000..f7abad71ded
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Hello.cid
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello Example Assembly</label>
+ <UUID>effd4bd0-6db0-4c50-9bb7-db9decebae1c</UUID>
+ <assemblyImpl>
+ <instance xmi:id="a_Sender">
+ <name>Sender_Instance</name>
+ <package href="Sender.cpd"/>
+
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <configProperty>
+ <name>hertz</name>
+ <value>
+ <type>
+ <kind>tk_long</kind>
+ </type>
+ <value>
+ <long>50</long>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <!-- ***************************** -->
+
+ <instance xmi:id="a_Receiver">
+ <name>Receiver_Instance</name>
+ <package href="Receiver.cpd"/>
+
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>Messages</name>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <instance xmi:idref="a_Receiver"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <instance xmi:idref="a_Sender"/>
+ </internalEndpoint>
+ </connection>
+ <connection>
+ <name>Events</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <instance xmi:idref="a_Receiver"/>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <instance xmi:idref="a_Sender"/>
+ </internalEndpoint>
+ </connection>
+ </assemblyImpl>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Hello.cpd b/modules/CIAO/examples/Hello/descriptors/Hello.cpd
new file mode 100644
index 00000000000..52b0e9a6c1d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Hello.cpd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello Example Package</label>
+ <UUID>823e4287-f53c-4caa-8619-f3dfda4c4998</UUID>
+ <implementation>
+ <name>Hello</name>
+ <referencedImplementation href="Hello.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Hello.pcd b/modules/CIAO/examples/Hello/descriptors/Hello.pcd
new file mode 100644
index 00000000000..a0f5051444a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Hello.pcd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:PackageConfiguration
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Hello Example Configuration for Unix machines</label>
+ <UUID>559d65e8-0407-48c0-a158-dafe21360fef</UUID>
+ <basePackage href="Hello.cpd"/>
+</Deployment:PackageConfiguration>
diff --git a/modules/CIAO/examples/Hello/descriptors/Libraries.iad b/modules/CIAO/examples/Hello/descriptors/Libraries.iad
new file mode 100644
index 00000000000..6112a23ca3b
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Libraries.iad
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Common Libraries</label>
+ <UUID>6bae4fcd-c71c-44b4-a0d4-0e4199ce1a49</UUID>
+ <location>$ACE_ROOT/lib/libACE</location>
+ <location>$ACE_ROOT/lib/libTAO</location>
+ <location>$ACE_ROOT/lib/libCIAO_DnC_Client</location>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat b/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat
new file mode 100644
index 00000000000..fe88523971e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+SenderNode corbaloc:iiop:localhost:60001/NodeManager
+ReceiverNode corbaloc:iiop:localhost:60002/NodeManager
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver.ccd b/modules/CIAO/examples/Hello/descriptors/Receiver.ccd
new file mode 100644
index 00000000000..a5167d03e7a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver.ccd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Component </label>
+ <UUID>589462ed-e88f-4f96-a7a7-359cdc333d63</UUID>
+ <specificType>IDL:Hello/Receiver:1.0</specificType>
+ <supportedType>IDL:Hello/Receiver:1.0</supportedType>
+ <idlFile>Receiver.idl</idlFile>
+ <port>
+ <name>click_in</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:Hello/TimeOut:1.0</supportedType>
+ <specificType>IDL:Hello/TimeOut:1.0</specificType>
+ <kind>EventConsumer</kind>
+ </port>
+
+ <port>
+ <name>read_message</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>false</provider>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <kind>SimplexReceptacle</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver.cid b/modules/CIAO/examples/Hello/descriptors/Receiver.cid
new file mode 100644
index 00000000000..18d379e7eba
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver.cid
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Implementation</label>
+ <UUID>0a52c9de-7852-42e4-aac7-bf478169a21a</UUID>
+ <implements href="Receiver.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>Receiver_Stub</name>
+ <referencedArtifact href="Receiver_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Receiver_Svnt</name>
+ <referencedArtifact href="Receiver_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Receiver_Exec</name>
+ <referencedArtifact href="Receiver_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver.cpd b/modules/CIAO/examples/Hello/descriptors/Receiver.cpd
new file mode 100644
index 00000000000..3cddb924834
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Package</label>
+ <UUID>a5923ef4-9c62-4458-9fa4-869b53d834ca</UUID>
+ <realizes href="Receiver.ccd"/>
+ <implementation>
+ <name>Receiver</name>
+ <referencedImplementation href="Receiver.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver_Exec.iad b/modules/CIAO/examples/Hello/descriptors/Receiver_Exec.iad
new file mode 100644
index 00000000000..6caa480b9db
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Executor Artifact</label>
+ <UUID>412f8156-7913-4651-9110-f7a3f98c7a83</UUID>
+ <location>Receiver_DnC_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Receiver_Stub</name>
+ <referencedArtifact href="Receiver_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver_Stub.iad b/modules/CIAO/examples/Hello/descriptors/Receiver_Stub.iad
new file mode 100644
index 00000000000..80d7a509e8b
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Stub Artifact</label>
+ <UUID>4d02c22b-768e-4d1a-bf07-76da2f5d1fbf</UUID>
+ <location>Receiver_DnC_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Receiver_Svnt.iad b/modules/CIAO/examples/Hello/descriptors/Receiver_Svnt.iad
new file mode 100644
index 00000000000..54f024360c7
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Receiver_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Receiver Servant Artifact</label>
+ <UUID>ad052b10-0806-43c7-9ccc-2dfeda0e0e03</UUID>
+ <location>Receiver_DnC_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Receiver_Stub</name>
+ <referencedArtifact href="Receiver_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender.ccd b/modules/CIAO/examples/Hello/descriptors/Sender.ccd
new file mode 100644
index 00000000000..cf07fe0ef75
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender.ccd
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Sender Component</label>
+ <UUID>803f8fc7-55de-4a20-81eb-ae951d85b7f4</UUID>
+ <specificType>IDL:Hello/Sender:1.0</specificType>
+ <supportedType>IDL:Hello/Sender:1.0</supportedType>
+ <property>
+ <name>local_message</name>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ </property>
+ <port>
+ <name>supports</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Hello/trigger:1.0</supportedType>
+ <kind>Facet</kind>
+ </port>
+ <port>
+ <name>click_out</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Hello/TimeOut:1.0</supportedType>
+ <specificType>IDL:Hello/TimeOut:1.0</specificType>
+ <kind>EventPublisher</kind>
+ </port>
+ <port>
+ <name>push_message</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <kind>Facet</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender.cid b/modules/CIAO/examples/Hello/descriptors/Sender.cid
new file mode 100644
index 00000000000..c6e02fc2d25
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender.cid
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Sender Implementation</label>
+ <UUID>789e1be2-703f-4bd3-af50-b400eef91fd0</UUID>
+ <implements href="Sender.ccd"/>
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>Sender_Stub</name>
+ <referencedArtifact href="Sender_Stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Sender_Svnt</name>
+ <referencedArtifact href="Sender_Svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Sender_Exec</name>
+ <referencedArtifact href="Sender_Exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender.cpd b/modules/CIAO/examples/Hello/descriptors/Sender.cpd
new file mode 100644
index 00000000000..df2c441be3f
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender.cpd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Sender Package</label>
+ <UUID>07ebf947-2174-4a3b-bd37-bcb92986eaf4</UUID>
+ <realizes href="Sender.ccd"/>
+ <implementation>
+ <name>Sender</name>
+ <referencedImplementation href="Sender.cid"/>
+ </implementation>
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender_Exec.iad b/modules/CIAO/examples/Hello/descriptors/Sender_Exec.iad
new file mode 100644
index 00000000000..610b525e77a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender_Exec.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Sender Executor Artifact</label>
+ <UUID>5e4f2366-3810-4d4c-a269-5788a525cbe1</UUID>
+ <location>Sender_DnC_exec</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Sender_Stub</name>
+ <referencedArtifact href="Sender_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender_Stub.iad b/modules/CIAO/examples/Hello/descriptors/Sender_Stub.iad
new file mode 100644
index 00000000000..aab4e018f0e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender_Stub.iad
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Sender Stub Artifact</label>
+ <UUID>93bbdf7d-d3f7-4227-bb75-b0562ac15b92</UUID>
+ <location>Sender_DnC_stub</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/Sender_Svnt.iad b/modules/CIAO/examples/Hello/descriptors/Sender_Svnt.iad
new file mode 100644
index 00000000000..8a9d128e50d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/Sender_Svnt.iad
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <label>Sender Servant Artifact</label>
+ <UUID>04e4d246-e6eb-4b0e-8e32-60b996497cea</UUID>
+ <location>Sender_DnC_svnt</location>
+ <dependsOn>
+ <name>ACE</name>
+ <referencedArtifact href="Libraries.iad"/>
+ </dependsOn>
+ <dependsOn>
+ <name>Sender_Stub</name>
+ <referencedArtifact href="Sender_Stub.iad"/>
+ </dependsOn>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan.cdp b/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan.cdp
new file mode 100644
index 00000000000..c7fc639a70e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan.cdp
@@ -0,0 +1,240 @@
+<!-- This flattened deployment plan allows component instance to
+ register to naming service, if you don't want to use naming
+ service at all, you can use the flattened_deployment_without_ns.cdp
+ as your deployment descriptor. -->
+
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to register with naming service -->
+ <!-- The string is the naming context to bind to naming service -->
+ <configProperty>
+ <name>RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_001</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hell_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp b/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
new file mode 100644
index 00000000000..8b42fa056ef
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/flattened_deploymentplan_without_ns.cdp
@@ -0,0 +1,222 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors/package.tpd b/modules/CIAO/examples/Hello/descriptors/package.tpd
new file mode 100644
index 00000000000..d447a2abb4a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/package.tpd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:TopLevelPackageDescription
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+ <package href="Hello.pcd"/>
+</Deployment:TopLevelPackageDescription>
diff --git a/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl b/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl
new file mode 100644
index 00000000000..d5e956ade06
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/run_NodeDaemons.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60002 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Hello/descriptors/run_test.pl b/modules/CIAO/examples/Hello/descriptors/run_test.pl
new file mode 100755
index 00000000000..29baefcca38
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/run_test.pl
@@ -0,0 +1,192 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$DAnCE = "$ENV{'CIAO_ROOT'}/DAnCE";
+$daemons_running = 0;
+$em_running = 0;
+$ns_running = 0;
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter";
+
+$nsior = PerlACE::LocalFile ("ns.ior");
+
+unlink $nsior;
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+ unlink PerlACE::LocalFile ("ns.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+
+ if ($ns_running == 1) {
+ $NS->Kill ();
+ $NS->TimedWait (1);
+ }
+
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -d 30";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i >= 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke naming service
+
+$NS = new PerlACE::Process ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior");
+
+$NS->Spawn ();
+
+print STDERR "Starting Naming Service\n";
+
+if (PerlACE::waitforfile_timed ($nsior, 10) == -1)
+{
+ print STDERR "ERROR: cannot find naming service IOR file\n";
+ $NS->Kill ();
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Set up NamingService environment
+$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService";
+
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$daemons_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattened_deploymentplan.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+if (PerlACE::waitforfile_timed (
+ "Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Invoking the controller\n";
+$controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl b/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl
new file mode 100755
index 00000000000..25be260cd32
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors/run_test_without_ns.pl
@@ -0,0 +1,158 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DAnCE = "$ENV{'CIAO_ROOT'}/DAnCE";
+
+$daemons_running = 0;
+$em_running = 0;
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter";
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -d 30";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i > 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ $daemons_running = 1;
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p flattened_deploymentplan_without_ns.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+if (PerlACE::waitforfile_timed (
+ "Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Invoking the controller\n";
+$controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/NodeManagerMap.dat b/modules/CIAO/examples/Hello/descriptors_RTCCM/NodeManagerMap.dat
new file mode 100644
index 00000000000..fe88523971e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+SenderNode corbaloc:iiop:localhost:60001/NodeManager
+ReceiverNode corbaloc:iiop:localhost:60002/NodeManager
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/RTsvc.conf b/modules/CIAO/examples/Hello/descriptors_RTCCM/RTsvc.conf
new file mode 100644
index 00000000000..1bfd9e8eaba
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/RTsvc.conf
@@ -0,0 +1,5 @@
+# No options required for regular testing
+
+# For real-time testing, uncomment the following line:
+static RT_ORB_Loader "-ORBSchedPolicy SCHED_FIFO -ORBScopePolicy SYSTEM"
+
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/input.csr b/modules/CIAO/examples/Hello/descriptors_RTCCM/input.csr
new file mode 100644
index 00000000000..a3881225930
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/input.csr
@@ -0,0 +1,70 @@
+
+<CIAO:ServerResources
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/ServerResources CIAOServerResources.xsd">
+
+ <cmdline>
+ <arg> -ORBDebugLevel 10 -ORBEndpoint corbaloc://foo/bar</arg>
+ </cmdline>
+
+ <svcconf>
+ <uri>
+ svcconf.uri
+ </uri>
+ </svcconf>
+
+ <orbConfigs>
+ <resources>
+ <threadpool id="threadpool-1">
+ <stacksize>100</stacksize>
+ <static_threads>50</static_threads>
+ <dynamic_threads>25</dynamic_threads>
+ <default_priority>5</default_priority>
+ <allow_request_buffering>true</allow_request_buffering>
+ <max_buffered_requests>10</max_buffered_requests>
+ <max_request_buffered_size>20</max_request_buffered_size>
+ </threadpool>
+
+ <threadpoolWithLanes id="threadpool-2">
+ <threadpoolLane>
+ <static_threads>50</static_threads>
+ <dynamic_threads>25</dynamic_threads>
+ <priority>36</priority>
+ </threadpoolLane>
+ <stacksize>100</stacksize>
+ <allow_borrowing>true</allow_borrowing>
+ <allow_request_buffering>true</allow_request_buffering>
+ <max_buffered_requests>10</max_buffered_requests>
+ <max_request_buffered_size>20</max_request_buffered_size>
+ </threadpoolWithLanes>
+
+ <connectionBands id="cb-1">
+ <band>
+ <low>0</low>
+ <high>10</high>
+ </band>
+ <band>
+ <low>11</low>
+ <high>20</high>
+ </band>
+ </connectionBands>
+ </resources>
+
+ <policySet id="test_policy_set_id">
+ <priorityModel server_priority="10">
+ <priority_model>SERVER_DECLARED</priority_model>
+ </priorityModel>
+ <priorityModel>
+ <priority_model>CLIENT_PROPAGATED</priority_model>
+ </priorityModel>
+
+ <threadpool>threadpool-1</threadpool>
+ <threadpool>threadpool-2</threadpool>
+
+ <priorityBandedConnection>cb-1</priorityBandedConnection>
+
+ </policySet>
+ </orbConfigs>
+</CIAO:ServerResources> \ No newline at end of file
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.cdp b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.cdp
new file mode 100644
index 00000000000..72e1694b1c3
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.cdp
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+
+ <UUID>Hello_Plan_UUID_0001</UUID>
+
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType/>
+ <supportedType>IDL:Hello/Sender:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source/>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source/>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source/>
+ <implementation>Hello-Sender-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+ <deployedResource>
+ <resourceUsage>InstanceUsesResource</resourceUsage>
+ <requirementName>CIAO:PolicySet</requirementName>
+ <resourceName>test_server_resource_id</resourceName>
+ <resourceValue>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>test_policy_set_id</string>
+ </value>
+ </resourceValue>
+ </deployedResource>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source/>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>hell_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source/>
+ <node/>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source/>
+ <node/>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source/>
+ <node/>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source/>
+ <node/>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOServerResources</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>rt-config-example.csr</string>
+ </value>
+ </value>
+ </infoProperty>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.csr b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.csr
new file mode 100644
index 00000000000..fa567f78c90
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-config-example.csr
@@ -0,0 +1,73 @@
+
+<CIAO:ServerResources
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/ServerResources CIAOServerResources.xsd"
+ id="test_server_resource_id">
+
+ <cmdline>
+ <arg>-r</arg>
+ </cmdline>
+
+ <svcconf>
+ <uri>RTsvc.conf</uri>
+ </svcconf>
+
+ <orbConfigs>
+ <resources>
+ <threadpool id="threadpool-1">
+ <stacksize>0</stacksize>
+ <static_threads>5</static_threads>
+ <dynamic_threads>0</dynamic_threads>
+ <default_priority>1</default_priority>
+ <allow_request_buffering>false</allow_request_buffering>
+ <max_buffered_requests>0</max_buffered_requests>
+ <max_request_buffered_size>0</max_request_buffered_size>
+ </threadpool>
+
+ <threadpoolWithLanes id="threadpool-2">
+ <threadpoolLane>
+ <static_threads>5</static_threads>
+ <dynamic_threads>0</dynamic_threads>
+ <priority>2</priority>
+ </threadpoolLane>
+ <threadpoolLane>
+ <static_threads>5</static_threads>
+ <dynamic_threads>0</dynamic_threads>
+ <priority>1</priority>
+ </threadpoolLane>
+ <stacksize>0</stacksize>
+ <allow_borrowing>false</allow_borrowing>
+ <allow_request_buffering>false</allow_request_buffering>
+ <max_buffered_requests>0</max_buffered_requests>
+ <max_request_buffered_size>0</max_request_buffered_size>
+ </threadpoolWithLanes>
+
+ <connectionBands id="cb-1">
+ <band>
+ <low>0</low>
+ <high>10</high>
+ </band>
+ <band>
+ <low>11</low>
+ <high>20</high>
+ </band>
+ </connectionBands>
+ </resources>
+
+ <policySet id="test_policy_set_id">
+ <priorityModel server_priority="1">
+ <priority_model>SERVER_DECLARED</priority_model>
+ </priorityModel>
+ </policySet>
+
+ <policySet id="test_policy_set_2">
+ <priorityModel>
+ <priority_model>CLIENT_PROPAGATED</priority_model>
+ </priorityModel>
+ <threadpool>threadpool-2</threadpool>
+ </policySet>
+
+ </orbConfigs>
+</CIAO:ServerResources>
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-example.cdp b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-example.cdp
new file mode 100644
index 00000000000..6dc5b078d58
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt-example.cdp
@@ -0,0 +1,271 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+
+ <deployedResource>
+ <resourceUsage>InstanceUsesResource</resourceUsage>
+ <requirementName>CIAO:PolicySet</requirementName>
+ <resourceName>test_server_resource_id</resourceName>
+ <property>
+ <name>CIAO:PolicySetName</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>test_policy_set_id</string>
+ </value>
+ </value>
+ </property>
+ </deployedResource>
+
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <deployedResource>
+ <resourceUsage>InstanceUsesResource</resourceUsage>
+ <requirementName>CIAO:PolicySet</requirementName>
+ <resourceName>test_server_resource_id</resourceName>
+ <property>
+ <name>CIAO:PolicySetName</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>test_policy_set_id</string>
+ </value>
+ </value>
+ </property>
+ </deployedResource>
+
+ </instance>
+
+
+ <connection>
+ <name>hell_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOServerResources</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>rt-config-example.csr</string>
+ </value>
+ </value>
+ </infoProperty>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_RTCCM/rt_run_test.pl b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt_run_test.pl
new file mode 100755
index 00000000000..a790fef1be0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_RTCCM/rt_run_test.pl
@@ -0,0 +1,163 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$DAnCE = "$ENV{'ACE_ROOT'}/TAO/CIAO/DAnCE";
+
+$daemons_running = 0;
+$em_running = 0;
+$daemons = 2;
+@ports = ( 60001, 60002 );
+@iorfiles = ( "NodeApp1.ior", "NodeApp2.ior" );
+$status = 0;
+$dat_file = "NodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter";
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("Receiver.ior");
+ unlink PerlACE::LocalFile ("Sender.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+
+ # NON-RT
+# $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile";
+
+ # RT enabled
+ $d_param = "-ORBEndpoint $iiop -s $node_app -a \"-r\" -o $iorfile";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i > 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ $daemons_running = 1;
+ return 0;
+}
+
+delete_ior_files ();
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p rt-example.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+if (PerlACE::waitforfile_timed (
+ "Receiver.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of receiver could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+if (PerlACE::waitforfile_timed ("Sender.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Invoking the controller\n";
+$controller = new PerlACE::Process ("$controller_exec", "-k file://Sender.ior");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan.cdp b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan.cdp
new file mode 100644
index 00000000000..8b42fa056ef
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan.cdp
@@ -0,0 +1,222 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp
new file mode 100644
index 00000000000..3cd860509a6
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_add.cdp
@@ -0,0 +1,267 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd-UPDATE-XXXXXXXX">
+ <name>Hello-Receiver-idd-UPDATE-XXXXXXXXX</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_event_connection_new</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd-UPDATE-XXXXXXXX</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection_new</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd-UPDATE-XXXXXXXX</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp
new file mode 100644
index 00000000000..6a34f62e7b0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_ReDaC/deploymentplan_remove.cdp
@@ -0,0 +1,223 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <instance id="Hello-Receiver-idd-UPDATE-XXXXXXXX">
+ <name>Hello-Receiver-idd-UPDATE-XXXXXXXXX</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver_2.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_connection_new</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd-UPDATE-XXXXXXXX</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection_new</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd-UPDATE-XXXXXXXX</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMap.dat b/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMap.dat
new file mode 100644
index 00000000000..fe88523971e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMap.dat
@@ -0,0 +1,2 @@
+SenderNode corbaloc:iiop:localhost:60001/NodeManager
+ReceiverNode corbaloc:iiop:localhost:60002/NodeManager
diff --git a/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat b/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat
new file mode 100644
index 00000000000..86b670b95b0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/NodeManagerMapTwoHosts.dat
@@ -0,0 +1,2 @@
+SenderNode corbaloc:iiop:localhost:60001/NodeManager
+ReceiverNode corbaloc:iiop:129.59.129.181:60002/NodeManager
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-collocated.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-collocated.ced
new file mode 100644
index 00000000000..1166a034caf
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-collocated.ced
@@ -0,0 +1,14 @@
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>svc.conf</svc_cfg_file>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-federation.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-federation.ced
new file mode 100644
index 00000000000..d48aadd21e1
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-federation.ced
@@ -0,0 +1,50 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <!-- The remote EC's host name and port # -->
+ <addr_serv>
+ <name>addr_serv_0</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+
+ <udp_sender>
+ <name>upd_sender_1</name>
+ <addr_serv_id>addr_serv_0</addr_serv_id>
+ </udp_sender>
+ </eventServiceConfiguration>
+
+
+<!--
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <addr_serv>
+ <name>addr_serv_1</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+ <udp_receiver>
+ <name>upd_receiver_1</name>
+ <addr_serv_id>addr_serv_1</addr_serv_id>
+ <is_multicast>false</is_multicast>
+ <listen_port>1234</listen_port>
+ </udp_receiver>
+ </eventServiceConfiguration>
+-->
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-filters.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-filters.ced
new file mode 100644
index 00000000000..affc0e49dc7
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example-with-filters.ced
@@ -0,0 +1,51 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>svc.conf</svc_cfg_file>
+
+ <filter>
+ <name>my_filter_01</name>
+ <type>DISJUNCTION</type>
+ <source>Hello-Sender-idd_click_out</source>
+ <source>Hello-Sender-idd-02_click_out</source>
+ </filter>
+
+ <filter>
+ <name>my_filter_02</name>
+ <type>DISJUNCTION</type>
+ <source>Hello-Sender-idd_click_out</source>
+ </filter>
+
+ <filter>
+ <name>my_filter_03</name>
+ <type>CONJUNCTION</type>
+ <source>Hello-Sender-idd_click_out</source>
+ <source>Hello-Sender-idd-02_click_out</source>
+ </filter>
+
+ <filter>
+ <name>my_filter_04</name>
+ <type>CONJUNCTION</type>
+ <source>Hello-Sender-idd_click_out</source>
+ </filter>
+
+
+ </eventServiceConfiguration>
+
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>svc.conf</svc_cfg_file>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example.ced
new file mode 100644
index 00000000000..1166a034caf
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-example.ced
@@ -0,0 +1,14 @@
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>svc.conf</svc_cfg_file>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-mcast.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-mcast.ced
new file mode 100644
index 00000000000..9fa450602ba
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-mcast.ced
@@ -0,0 +1,58 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <filter>
+ <name>my_filter</name>
+ <type>DISJUNCTION</type>
+ <source>Hello-Sender-idd_click_out</source>
+ </filter>
+
+ <!-- The remote EC's host name and port # -->
+ <addr_serv>
+ <name>addr_serv_0</name>
+ <port>1234</port>
+ <address>224.9.9.2</address>
+ </addr_serv>
+
+ <udp_sender>
+ <name>upd_sender_1</name>
+ <addr_serv_id>addr_serv_0</addr_serv_id>
+ </udp_sender>
+ </eventServiceConfiguration>
+
+
+
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <addr_serv>
+ <name>addr_serv_1</name>
+ <port>1234</port>
+ <address>224.9.9.2</address>
+ </addr_serv>
+ <udp_receiver>
+ <name>upd_receiver_1</name>
+ <addr_serv_id>addr_serv_1</addr_serv_id>
+ <is_multicast>true</is_multicast>
+
+ <!-- Listen port for this EC's event handler -->
+ <listen_port>1234</listen_port>
+ </udp_receiver>
+ </eventServiceConfiguration>
+
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced
new file mode 100644
index 00000000000..89e85b5b21d
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-collocated.ced
@@ -0,0 +1,47 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <!-- The remote EC's host name and port # -->
+ <addr_serv>
+ <name>addr_serv_0</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+
+ <udp_sender>
+ <name>upd_sender_1</name>
+ <addr_serv_id>addr_serv_0</addr_serv_id>
+ </udp_sender>
+ </eventServiceConfiguration>
+
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <addr_serv>
+ <name>addr_serv_1</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+ <udp_receiver>
+ <name>upd_receiver_1</name>
+ <addr_serv_id>addr_serv_1</addr_serv_id>
+ <is_multicast>false</is_multicast>
+ <listen_port>1234</listen_port>
+ </udp_receiver>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced
new file mode 100644
index 00000000000..5f65ab8375f
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp-two-hosts.ced
@@ -0,0 +1,50 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <!-- Assume the ES_01 will be deployed on node tango.dre.vanderbilt.edu -->
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <!-- The remote EC's host name and port # -->
+ <addr_serv>
+ <name>addr_serv_0</name>
+ <port>1234</port>
+ <address>129.59.129.181</address>
+ </addr_serv>
+
+ <udp_sender>
+ <name>upd_sender_1</name>
+ <addr_serv_id>addr_serv_0</addr_serv_id>
+ </udp_sender>
+ </eventServiceConfiguration>
+
+
+ <!-- Assume the ES_02 will be deployed on node pacific.dre.vanderbilt.edu -->
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>ReceiverNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <addr_serv>
+ <name>addr_serv_1</name>
+ <port>1234</port>
+ <address>129.59.129.181</address>
+ </addr_serv>
+ <udp_receiver>
+ <name>upd_receiver_1</name>
+ <addr_serv_id>addr_serv_1</addr_serv_id>
+ <is_multicast>false</is_multicast>
+ <listen_port>1234</listen_port>
+ </udp_receiver>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents> \ No newline at end of file
diff --git a/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp.ced b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp.ced
new file mode 100644
index 00000000000..3d2a9d3fbb4
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/ciao-events-federation-udp.ced
@@ -0,0 +1,49 @@
+<!-- $ID$ -->
+
+<CIAO:CIAOEvents
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/CIAOEvents"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/CIAOEvents CIAOEvents.xsd">
+
+ <eventServiceConfiguration id="es_configuration-01">
+ <name>ES_01</name>
+ <node>SenderNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <!-- The remote EC's host name and port # -->
+ <addr_serv>
+ <name>addr_serv_0</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+
+ <udp_sender>
+ <name>upd_sender_1</name>
+ <addr_serv_id>addr_serv_0</addr_serv_id>
+ </udp_sender>
+ </eventServiceConfiguration>
+
+
+
+ <eventServiceConfiguration id="es_configuration-02">
+ <name>ES_02</name>
+ <node>ReceiverNode</node>
+ <type>RTEC</type>
+ <svc_cfg_file>dummy.conf</svc_cfg_file>
+
+ <addr_serv>
+ <name>addr_serv_1</name>
+ <port>1234</port>
+ <address>localhost</address>
+ </addr_serv>
+ <udp_receiver>
+ <name>upd_receiver_1</name>
+ <addr_serv_id>addr_serv_1</addr_serv_id>
+ <is_multicast>false</is_multicast>
+ <listen_port>1234</listen_port>
+ </udp_receiver>
+ </eventServiceConfiguration>
+
+</CIAO:CIAOEvents>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp
new file mode 100644
index 00000000000..37a56bbfa7e
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events.cdp
@@ -0,0 +1,260 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+<!--
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+-->
+
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-example.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp
new file mode 100644
index 00000000000..cb04f7306df
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_events_collocated.cdp
@@ -0,0 +1,260 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+<!--
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+-->
+
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-example-collocated.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp
new file mode 100644
index 00000000000..3f572c73e82
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation.cdp
@@ -0,0 +1,233 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_02</location>
+ </externalReference>
+ </connection>
+
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-example-with-federation.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp
new file mode 100644
index 00000000000..b7a7d27aed0
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_mcast.cdp
@@ -0,0 +1,231 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_02</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-federation-mcast.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp
new file mode 100644
index 00000000000..2c20ad6d061
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp.cdp
@@ -0,0 +1,246 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- The Sender Component connects to "ES_01" -->
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- The Receiver Component connects to "ES_02" -->
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_02</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-federation-udp.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp
new file mode 100644
index 00000000000..54550749406
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_collocated.cdp
@@ -0,0 +1,246 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- The Sender Component connects to "ES_01" -->
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- The Receiver Component connects to "ES_02" -->
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_02</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-federation-udp-collocated.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp
new file mode 100644
index 00000000000..e35333c6da8
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_federation_udp_two_hosts.cdp
@@ -0,0 +1,246 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- The Sender Component connects to "ES_01" -->
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- The Receiver Component connects to "ES_02" -->
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_02</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-federation-udp-two-hosts.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp
new file mode 100644
index 00000000000..e39c8ab6a2a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/flattened_deploymentplan_with_filters.cdp
@@ -0,0 +1,278 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+<!--
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+-->
+
+ <connection>
+ <name>hello_event_ec_publisher_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <connection>
+ <name>hello_event_ec_consumer_connection</name>
+
+ <!-- The position of the below "deployRequirement" element matters -->
+ <deployRequirement>
+ <resourceType>EventFilter</resourceType>
+ <name>my_filter_01</name>
+ <property>
+ <name>EventFilter</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>my_filter_01</string>
+ </value>
+ </value>
+ </property>
+ </deployRequirement>
+
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ <externalReference>
+ <location>ES_01</location>
+ </externalReference>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOEvents</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>ciao-events-example-with-filters.ced</string>
+ </value>
+ </value>
+ </infoProperty>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_events/rtec.conf b/modules/CIAO/examples/Hello/descriptors_events/rtec.conf
new file mode 100644
index 00000000000..fbbadf78b0c
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/rtec.conf
@@ -0,0 +1 @@
+static EC_Factory "-ECobserver basic"
diff --git a/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons.pl b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons.pl
new file mode 100755
index 00000000000..3e0e4787659
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 500");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60002 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 500");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl
new file mode 100755
index 00000000000..0b9ba5c4b6a
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_svc_conf.pl
@@ -0,0 +1,42 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+$ACE_ROOT=$ENV{'ACE_ROOT'};
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -c rtec.conf");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://localhost:60002 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -c rtec.conf");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl
new file mode 100644
index 00000000000..a83b4dc1638
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_events/run_NodeDaemons_with_ip.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$iorfile1 = PerlACE::LocalFile ("NodeApp1.ior");
+$iorfile2 = PerlACE::LocalFile ("NodeApp2.ior");
+
+#for ($iter = 0; $iter <= $#ARGV; $iter++) {
+# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") {
+# print "Run_Test Perl script for NodeApplicationTest \n\n";
+# print "run_test \n";
+# print "\n";
+# print "-h -- prints this information\n";
+# exit 0;
+# }
+#}
+
+
+unlink $iorfile1;
+unlink $iorfile2;
+
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+$SV1 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://129.59.129.181:60001 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 500");
+
+$SV2 = new PerlACE::Process ("$CIAO_ROOT/DAnCE/NodeManager/NodeManager",
+ "-ORBEndpoint iiop://129.59.129.181:60002 -s $CIAO_ROOT/DAnCE/NodeApplication/NodeApplication -d 500");
+
+$SV1->Spawn ();
+$SV2->Spawn ();
+
+sleep (99999999999);
diff --git a/modules/CIAO/examples/Hello/descriptors_naming/deploymentplan_naming.cdp b/modules/CIAO/examples/Hello/descriptors_naming/deploymentplan_naming.cdp
new file mode 100644
index 00000000000..7192a2bc061
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_naming/deploymentplan_naming.cdp
@@ -0,0 +1,240 @@
+<!-- This flattened deployment plan allows component instance to
+ register to naming service, if you don't want to use naming
+ service at all, you can use the flattened_deployment_without_ns.cdp
+ as your deployment descriptor. -->
+
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false></provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to register with naming service -->
+ <!-- The string is the naming context to bind to naming service -->
+ <configProperty>
+ <name>RegisterNaming</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_001</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hell_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan.cdp b/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan.cdp
new file mode 100644
index 00000000000..a206dc64080
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan.cdp
@@ -0,0 +1,224 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0001</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd">
+ <name>Hello-Sender-idd</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Receiver.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+<!--
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+-->
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp b/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp
new file mode 100644
index 00000000000..1acfa45c985
--- /dev/null
+++ b/modules/CIAO/examples/Hello/descriptors_shared_components/deploymentplan_shared_components.cdp
@@ -0,0 +1,229 @@
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <label>Hello-DeploymentPlan</label>
+ <UUID>Hello_Plan_UUID_0002</UUID>
+ <!-- Could be ZERO -->
+ <realizes>
+ <label>BasicSP-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType><!-- @@ What does here? --></specificType>
+ <supportedType>IDL:BasicSP/EC:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:Hello/ReadMessage:1.0</specificType>
+ <supportedType>IDL:Hello/ReadMessage:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="Hello-Sender-mdd">
+ <name>Hello-Sender-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Sender_exec</artifact>
+ <artifact>Hello-Sender_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <implementation id="Hello-Receiver-mdd">
+ <name>Hello-Receiver-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>Hello-Receiver_exec</artifact>
+ <artifact>Hello-Receiver_svnt</artifact>
+ <!--
+ <execParameter></execParameter>
+ <deployRequirement></deployRequirement>
+ -->
+ </implementation>
+
+ <instance id="Hello-Sender-idd-new-component">
+ <name>Hello-Sender-idd-new-component</name>
+ <node>SenderNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Sender-mdd</implementation>
+
+ <!-- Add this property if you want to write component reference to IOR -->
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Sender_new_component.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- Add this property if you want to initialize component attribute -->
+ <configProperty>
+ <name>local_message</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>This is a test message passed in through XML.</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <!-- This attribute initializes an enumerated value -->
+ <configProperty>
+ <name>color</name>
+ <value>
+ <type>
+ <kind>tk_enum</kind>
+ <enum>
+ <name>COLOR_SELECTION</name>
+ <typeId>IDL:Hello/COLOR_SELECTION:1.0</typeId>
+ <member>empty</member>
+ <member>white</member>
+ <member>red</member>
+ <member>yellow</member>
+ </enum>
+ </type>
+ <value>
+ <enum>yellow</enum>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <instance id="Hello-Receiver-idd">
+ <name>Hello-Receiver-idd</name>
+ <node>ReceiverNode</node>
+ <source><!-- @@ What goes here --></source>
+ <implementation>Hello-Receiver-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <!-- ****************************************
+ This IOR file should NOT be generated.
+ DAnCE should NOT create this component instance
+ because it is a "shared" component
+ **************************************** -->
+ <string>Receiver_new_component.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+
+ <connection>
+ <name>hello_event_connection</name>
+ <internalEndpoint>
+ <portName>click_out</portName>
+ <kind>EventPublisher</kind>
+ <instance>Hello-Sender-idd-new-component</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>click_in</portName>
+ <kind>EventConsumer</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+
+ <connection>
+ <name>hello_facet_connection</name>
+ <internalEndpoint>
+ <portName>push_message</portName>
+ <kind>Facet</kind>
+ <instance>Hello-Sender-idd-new-component</instance>
+ </internalEndpoint>
+ <internalEndpoint>
+ <portName>read_message</portName>
+ <kind>SimplexReceptacle</kind>
+ <instance>Hello-Receiver-idd</instance>
+ </internalEndpoint>
+ </connection>
+
+
+ <!-- @@ Runtime library name must match exactly in "location" tag -->
+ <artifact id="Hello-Sender_exec">
+ <name>Sender_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createSenderHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Sender_svnt">
+ <name>Sender_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Sender_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_SenderHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_exec">
+ <name>Receiver_exec</name>
+ <source><!-- @@ Not sure about this--></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createReceiverHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Hello-Receiver_svnt">
+ <name>Receiver_svnt</name>
+ <source><!-- @@ Not sure --></source>
+ <node><!-- blank --></node>
+ <location>Receiver_DnC_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Hello_ReceiverHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Hello/step-by-step.html b/modules/CIAO/examples/Hello/step-by-step.html
new file mode 100644
index 00000000000..cb73707d0b7
--- /dev/null
+++ b/modules/CIAO/examples/Hello/step-by-step.html
@@ -0,0 +1,202 @@
+<!--//$Id$ -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Step-By-Step of How to build a CIAO application</title>
+</head>
+
+<body
+ text = "#000000"
+ link = "#000fff"
+ vLink= "#ff0f0f"
+ aLink = "#0000ff"
+ bgColor = "#ffffff">
+
+<hr>
+<h2>Simple <a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a> tutorial</h2>
+<b>Note:</b>
+<UL>
+<li><a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> tools are not used in this tutorial.</li>
+<li>This is only a <em>GENERAL</em> way of building up a CIAO application and deploying it with DAnCE. The user could always change the process in his own way. For example: the IDL file content, the project structure etc.</li>
+<li>To download the code of this example please refer to the CVS repository at <code>$CIAO_ROOT/DAnCE/examples/Hello</code>.</li>
+</UL>
+<hr>
+
+<h2>Example Description</h2>
+This Hello example is contructed in the following ways:
+<UL>
+<li>1. There are 2 components in the system: Sender and Receiver</li>
+<li>2. The Sender will send out the timeout event to the Receiver.</li>
+<li>3. Upon receiving the timeout event, the Receiver will go and fetch data from the Sender. </li>
+<li>4. The user could deploy multiple instances of the Receiver without changing any C++/idl source code.</li>
+</UL>
+<hr>
+
+<h2>Step-By-Step</h2>
+<h3>Hello_Base</h3>
+
+<OL>
+<li>Write an IDL file (<code>Hello_Base.idl</code>) which contains all
+ the interfaces and events common to all the components. The reason
+ we do this is becuse the generated lib of this idl file will be
+ linked in by all the components in the system. To reduce the size
+ of the component lib we have to include only the necesary part. In
+ this example, we have an eventtype <code>timeout</code> and an
+ interface <code>ReadMessage</code>, which are used by both the
+ Sender and the Receiver, so we put both of them in Hello.idl.</li>
+ <P>
+
+<li>Look at the <code>Hello_Base.mpc</code> file to get an idea how the Hello_Base_stub and Hello_Base_svnt projects are organized. <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a> is a utility we used to generate makefiles or VC project/solution files for all <a href="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</a>, <a href="http://www.cs.wustl.edu/~schmidt/TAO.html">TAO</a> and <a href="http://www.cs.wustl.edu/~schmidt/CIAO.html">CIAO</a> libraries.</li>
+</Ol>
+
+<hr>
+
+<h3>For Every Components</h3>
+
+<ol>
+<li>Use: <br>
+
+<code>$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Sender <br>
+ $CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Receiver
+</code><br></ul>
+Note:
+<ul>
+<li>I have different directories for <code>"Hello_Base", "Sender", "Receiver"</code> respectively.</li>
+
+<li>For every <code>_stub</code> project, add:<br>
+ <code>"libs += Hello_Base_DnC_stub"</code><br>
+
+</ul><P>
+
+<li>Use the export script to generate the export files. (3 files per
+ component).</li> <P>
+
+<li>Write an idl file for every compoent. Here you can put the
+ component specific IDL definitions in this file. In this example
+ we have a interface <code>trigger</code> specific to the
+ Sender. Please note that the Sender component
+ <code>"supports"</code> (IDL keyword) this interface. </li> <P>
+
+<li>Write the CIDL file for every component.</li> <P>
+
+<li>Write <code>_exec.h</code> and <code>_exec.cpp</code> files which actually implement the component.</li>
+<P>
+</OL>
+
+Writing all those files could be troublesome to a new CCM user. The
+best way of learning this is to read the example source code. If you
+are familliar with CORBA programming, it should not take too much time
+before you can declare yourself as a CCM programmer. <P>
+
+<hr> <P>
+
+<h3>The Entry Point</h3>
+
+After both components are implemented we still need a small program to
+initialize the process. In Sender.idl there is a Sender specific
+interface with a single method in it created for this purpose. Hence
+there is a CORBA client application called <code>starter</code>. The
+<code>starter</code> will make a invocation on a supported interface
+called <code>trigger</code> on the Sender component to get the whole
+distributed application started. The <code>starter</code> will first
+obtain the Sender component object reference through the ior string
+supplied as a command argument. Please see the the last part of
+<code>Hello/Sender/Sender.mpc</code> file for details. <P>
+
+<hr>
+
+<h3>Make</h3>
+
+<UL>
+<li>Go to the directory <code>$CIAO_ROOT/DAnCE</code> and do:<br>
+ <code>$ACE_ROOT/bin/mwc.pl</code> (use -type option if you are using a compiler/IDE other than gnuace -which by default generates GNU makefiles)</li>
+ <br>For example, using <code>$ACE_ROOT/bin/mwc.pl -type vc71</code> if you are using Visual C++ 7.1 IDE.</li><P>
+<li>Look at the generated Makefile(*unx) , Solution/workspace files(Windows) and you got it.</li>
+</UL>
+
+<P><hr>
+
+<h3>Assemble</h3>
+
+Now we can step forward to build the assembly. Here we are going to
+build the simplest case only, which is 1 Receiver and 1 Sender. If you
+are interested in CIAO you could try 1 Sender with multiple
+Receiver. However, you need to change the Sender.idl to make it
+<em>publishes</em> timeout event instead of <em>emits</em> event.
+
+<UL>
+<li> You need to create an XML descriptor file to describe your
+ <em>deployment plan</em>, which is defined in a <EM>Deployment Plan Descriptor</EM> (.cdp).
+ In this file, you need to declaratively specify how the component assembly is constructed. Specificly, you need to specify the component types, component instances, component connections, implementation artifact descriptions, and whether you want to register component instances with naming service. <P>
+
+<li> Please make sure that the Modified_Deployment.xsd and XMI.xsd files are in the Hello/descriptors directory.
+The former file could be found in $CIAO_ROOT/docs/schema directory. <P>
+
+<li> Create the <em>NodeManagerMap.dat</em> file containing the CORBALOC IIOP address of each <code>NodeManager</code>
+ where it is running. Please refer to the existing <code>NodeManagerMap.dat</code> for details,
+ as you can see, we only specify 2 <code>NodeManagers</code>, which means these two components
+ will be installed in the different <code>NodeApplication</code> server. Please refer to the
+ <em>flattened_deploymentplan.cdp</em> file to see how a deployer
+ could specify the mapping between components and nodes.</li>
+
+Note: Creating the deployment plan descriptor is a tedious and
+ error-prone job, you can download <a
+ href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> to assist
+ you in this step. <P>
+</li>
+</UL>
+
+<hr>
+<h3>Deploy with <A href="../../docs/releasenotes/dance.html">DAnCE</A></h3>
+Finally you are ready to deploy the component-based application you have developed.
+<br><br>
+
+<UL>
+ <LI> If you wish to register one or more of your component
+ instances with CORBA <em> naming service</em>, then please start your naming service
+ first with multicast mode first ("-m 1" option). <P>
+
+ <LI> Go into the <em> descriptors </em> directory Start NodeManagers
+ (NodeDameon) by running <code> run_NodeDaemons.pl </code> <P>
+
+ <LI> Start the execution manager:
+ <code>$CIAO_ROOT/DAnCE/ExecutionManager/Execution_Manager -o EM.ior -i NodeManagerMap.dat </code>
+ </LI>
+
+ <ul type="square"> <li> <em>NOTE</em>: As one can see, we use the "NodeManagerMap.dat" file to instruct the
+ Execution_Manager how to find the endpoint of each individual NodeManager (i.e., Node Daemon) where
+ component(s) will be deployed, so this is non-standard. We plan to use Naming Service to do this in the future.
+ </ul><P>
+
+ <LI> Start the plan launcher:
+ <code> $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan.cdp -k file://EM.ior </code>
+
+ <ul type="square"> <li> If you don't want to register component(s) with CORBA naming service, then you don't have to start
+ your naming service, and you can use the below code to start the executor:
+
+ <code> $CIAO_ROOT/DAnCE/Plan_Launcher/plan_launcher -p flattened_deploymentplan_without_ns.cdp -k file://EM.ior </code><P>
+
+ After this, components should be deployed successfully. </ul><P>
+
+ <LI> You can go into the <em>
+ $CIAO_ROOT/DAnCE/examples/Hello/descriptor </em> directory and
+ run the
+ <code>$CIAO_ROOT/DAnCE/examples/Hello/Sender/starter</code> to
+ start the application. Please make sure that the component IOR
+ file for the Sender component (<code>Sender.ior</code>) is
+ present when you run this client. <P>
+
+ </LI>
+</UL>
+
+<hr>
+<h3>More Features</h3>
+Recently DAnCE is enabled with a feature called <em>Redeployment and Reconfiguration</em> (ReDaC). For more information
+about how to use this feature, please refer to the ReDaC-Usage-Example.html under $CIAO_ROOT/examples/Hello/.
+<br><br>
+
+<hr>
+<b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@cse.wustl.edu</ADDRESS>
+</body>
+</html>
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Component.cidl b/modules/CIAO/examples/Null_Component/Null_Component.cidl
new file mode 100644
index 00000000000..85c4d2188c3
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component.cidl
@@ -0,0 +1,21 @@
+/**
+ * @file Null_Component.cidl
+ *
+ * @author Abdul Sowayan <abdullah.sowayan@lmco.com>
+ */
+
+#ifndef NULL_COMPONENT_CIDL
+#define NULL_COMPONENT_CIDL
+
+#include "Null_Component.idl"
+
+composition session Null_Component_Impl
+{
+ home executor Null_Component_Home_Exec
+ {
+ implements Null_Component_Home;
+ manages Null_Component_Exec;
+ };
+};
+
+#endif /* NULL_COMPONENT_CIDL */
diff --git a/modules/CIAO/examples/Null_Component/Null_Component.idl b/modules/CIAO/examples/Null_Component/Null_Component.idl
new file mode 100644
index 00000000000..26df429a13b
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component.idl
@@ -0,0 +1,38 @@
+/**
+ * @file Null_Component.idl
+ *
+ * @author Abdul Sowayan <abdullah.sowayan@lmco.com>
+ *
+ * $Id$
+ */
+
+#ifndef NULL_COMPONENT_IDL
+#define NULL_COMPONENT_IDL
+
+#include <Components.idl>
+#include "Null_Interface.idl"
+
+
+/**
+ * @class Null_Component
+ *
+ * This component is intentionally left blank. Its purpose
+ * is to measure the footprint of a component in CIAO.
+ */
+component Null_Component
+{
+ provides Null_Interface null_facet;
+};
+
+/**
+ * @class Null_Component_Home
+ *
+ * @brief home for Null_Component
+ */
+home Null_Component_Home manages Null_Component
+{
+};
+
+#endif /* NULL_COMPONENT_IDL */
+
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Component.mpc b/modules/CIAO/examples/Null_Component/Null_Component.mpc
new file mode 100644
index 00000000000..b639ceb0828
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component.mpc
@@ -0,0 +1,73 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Null_Interface Null_Component"
+
+project(Null_Interface_Null_Component_stub): ciao_client_dnc {
+ after += Null_Interface_stub
+ sharedname = Null_Component_stub
+ libs += Null_Interface_stub
+ idlflags += -Wb,stub_export_macro=NULL_COMPONENT_STUB_Export \
+ -Wb,stub_export_include=Null_Component_stub_export.h \
+ -Wb,skel_export_macro=NULL_COMPONENT_SVNT_Export \
+ -Wb,skel_export_include=Null_Component_svnt_export.h
+ dynamicflags = NULL_COMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ Null_Component.idl
+ }
+
+ Source_Files {
+ Null_ComponentC.cpp
+ }
+}
+
+project(Null_Interface_Null_Component_svnt) : ciao_servant_dnc {
+ after += Null_Interface_skel Null_Interface_Null_Component_stub
+ sharedname = Null_Component_svnt
+ libs += Null_Component_stub \
+ Null_Interface_stub \
+ Null_Interface_skel
+
+ idlflags += -Wb,export_macro=NULL_COMPONENT_SVNT_Export \
+ -Wb,export_include=Null_Component_svnt_export.h
+ dynamicflags = NULL_COMPONENT_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Null_Component.cidl
+ }
+
+ IDL_Files {
+ Null_ComponentE.idl
+ }
+
+ Source_Files {
+ Null_ComponentEC.cpp
+ Null_ComponentS.cpp
+ Null_Component_svnt.cpp
+ }
+}
+
+
+project(Null_Interface_Null_Component_exec) : ciao_component_dnc {
+ after += Null_Interface_Null_Component_svnt
+ sharedname = Null_Component_exec
+ libs += Null_Component_stub \
+ Null_Component_svnt \
+ Null_Interface_stub \
+ Null_Interface_skel
+
+ idlflags += -Wb,export_macro=NULL_COMPONENT_EXEC_Export \
+ -Wb,export_include=Null_Component_exec_export.h
+ dynamicflags = NULL_COMPONENT_EXEC_BUILD_DLL
+
+ IDL_Files {
+
+ }
+
+ Source_Files {
+
+ Null_Component_exec.cpp
+ }
+}
+
+
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp b/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp
new file mode 100644
index 00000000000..c48ebb2ea0b
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component_exec.cpp
@@ -0,0 +1,183 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Null_Component_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIDL_Null_Component_Impl
+{
+ //==================================================================
+ // Facet Executor Implementation Class: Null_Interface_exec_i
+ //==================================================================
+
+ Null_Interface_exec_i::Null_Interface_exec_i (void)
+ {
+ }
+
+ Null_Interface_exec_i::~Null_Interface_exec_i (void)
+ {
+ }
+
+ // Operations from ::Null_Interface
+
+ void
+ Null_Interface_exec_i::null_operation ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: Null_Component_exec_i
+ //==================================================================
+
+ Null_Component_exec_i::Null_Component_exec_i (void)
+ {
+ }
+
+ Null_Component_exec_i::~Null_Component_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ ::CCM_Null_Interface_ptr
+ Null_Component_exec_i::get_null_facet ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException))
+ {
+ // Your code here.
+ return ::CCM_Null_Interface::_nil ();
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ Null_Component_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Null_Component_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Null_Component_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Null_Component_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Null_Component_exec_i::ccm_activate ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Null_Component_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Null_Component_exec_i::ccm_remove ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: Null_Component_Home_exec_i
+ //==================================================================
+
+ Null_Component_Home_exec_i::Null_Component_Home_exec_i (void)
+ {
+ }
+
+ Null_Component_Home_exec_i::~Null_Component_Home_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ Null_Component_Home_exec_i::create ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Null_Component_exec_i,
+ ::CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" NULL_COMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Null_Component_Home_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ Null_Component_Home_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Component_exec.h b/modules/CIAO/examples/Null_Component/Null_Component_exec.h
new file mode 100644
index 00000000000..22026431a93
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component_exec.h
@@ -0,0 +1,145 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_NULL_COMPONENT_EXEC_H
+#define CIAO_NULL_COMPONENT_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Null_Component_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Null_Component_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Null_Component_Impl
+{
+ class NULL_COMPONENT_EXEC_Export Null_Interface_exec_i
+ : public virtual ::CCM_Null_Interface,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Null_Interface_exec_i (void);
+ virtual ~Null_Interface_exec_i (void);
+
+ // Operations from ::Null_Interface
+
+ virtual void
+ null_operation ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException));
+ };
+
+ class NULL_COMPONENT_EXEC_Export Null_Component_exec_i
+ : public virtual Null_Component_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Null_Component_exec_i (void);
+ virtual ~Null_Component_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ virtual ::CCM_Null_Interface_ptr
+ get_null_facet ()
+ ACE_THROW_SPEC (( ::CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Null_Component_Context *context_;
+ };
+
+ class NULL_COMPONENT_EXEC_Export Null_Component_Home_exec_i
+ : public virtual Null_Component_Home_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Null_Component_Home_exec_i (void);
+ virtual ~Null_Component_Home_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" NULL_COMPONENT_EXEC_Export ::Components::HomeExecutorBase_ptr
+ create_Null_Component_Home_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_NULL_COMPONENT_EXEC_H */
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Component_exec_export.h b/modules/CIAO/examples/Null_Component/Null_Component_exec_export.h
new file mode 100644
index 00000000000..d5157f448fe
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NULL_COMPONENT_EXEC
+// ------------------------------
+#ifndef NULL_COMPONENT_EXEC_EXPORT_H
+#define NULL_COMPONENT_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NULL_COMPONENT_EXEC_HAS_DLL)
+# define NULL_COMPONENT_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NULL_COMPONENT_EXEC_HAS_DLL */
+
+#if !defined (NULL_COMPONENT_EXEC_HAS_DLL)
+# define NULL_COMPONENT_EXEC_HAS_DLL 1
+#endif /* ! NULL_COMPONENT_EXEC_HAS_DLL */
+
+#if defined (NULL_COMPONENT_EXEC_HAS_DLL) && (NULL_COMPONENT_EXEC_HAS_DLL == 1)
+# if defined (NULL_COMPONENT_EXEC_BUILD_DLL)
+# define NULL_COMPONENT_EXEC_Export ACE_Proper_Export_Flag
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NULL_COMPONENT_EXEC_BUILD_DLL */
+# define NULL_COMPONENT_EXEC_Export ACE_Proper_Import_Flag
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NULL_COMPONENT_EXEC_BUILD_DLL */
+#else /* NULL_COMPONENT_EXEC_HAS_DLL == 1 */
+# define NULL_COMPONENT_EXEC_Export
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARATION(T)
+# define NULL_COMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NULL_COMPONENT_EXEC_HAS_DLL == 1 */
+
+// Set NULL_COMPONENT_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NULL_COMPONENT_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NULL_COMPONENT_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NULL_COMPONENT_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NULL_COMPONENT_EXEC_NTRACE */
+
+#if (NULL_COMPONENT_EXEC_NTRACE == 1)
+# define NULL_COMPONENT_EXEC_TRACE(X)
+#else /* (NULL_COMPONENT_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NULL_COMPONENT_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NULL_COMPONENT_EXEC_NTRACE == 1) */
+
+#endif /* NULL_COMPONENT_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Null_Component/Null_Component_stub_export.h b/modules/CIAO/examples/Null_Component/Null_Component_stub_export.h
new file mode 100644
index 00000000000..a8017fc235f
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NULL_COMPONENT_STUB
+// ------------------------------
+#ifndef NULL_COMPONENT_STUB_EXPORT_H
+#define NULL_COMPONENT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NULL_COMPONENT_STUB_HAS_DLL)
+# define NULL_COMPONENT_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NULL_COMPONENT_STUB_HAS_DLL */
+
+#if !defined (NULL_COMPONENT_STUB_HAS_DLL)
+# define NULL_COMPONENT_STUB_HAS_DLL 1
+#endif /* ! NULL_COMPONENT_STUB_HAS_DLL */
+
+#if defined (NULL_COMPONENT_STUB_HAS_DLL) && (NULL_COMPONENT_STUB_HAS_DLL == 1)
+# if defined (NULL_COMPONENT_STUB_BUILD_DLL)
+# define NULL_COMPONENT_STUB_Export ACE_Proper_Export_Flag
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NULL_COMPONENT_STUB_BUILD_DLL */
+# define NULL_COMPONENT_STUB_Export ACE_Proper_Import_Flag
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NULL_COMPONENT_STUB_BUILD_DLL */
+#else /* NULL_COMPONENT_STUB_HAS_DLL == 1 */
+# define NULL_COMPONENT_STUB_Export
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARATION(T)
+# define NULL_COMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NULL_COMPONENT_STUB_HAS_DLL == 1 */
+
+// Set NULL_COMPONENT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NULL_COMPONENT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NULL_COMPONENT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NULL_COMPONENT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NULL_COMPONENT_STUB_NTRACE */
+
+#if (NULL_COMPONENT_STUB_NTRACE == 1)
+# define NULL_COMPONENT_STUB_TRACE(X)
+#else /* (NULL_COMPONENT_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NULL_COMPONENT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NULL_COMPONENT_STUB_NTRACE == 1) */
+
+#endif /* NULL_COMPONENT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Null_Component/Null_Component_svnt_export.h b/modules/CIAO/examples/Null_Component/Null_Component_svnt_export.h
new file mode 100644
index 00000000000..14d8bb8c3b1
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Component_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NULL_COMPONENT_SVNT
+// ------------------------------
+#ifndef NULL_COMPONENT_SVNT_EXPORT_H
+#define NULL_COMPONENT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NULL_COMPONENT_SVNT_HAS_DLL)
+# define NULL_COMPONENT_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NULL_COMPONENT_SVNT_HAS_DLL */
+
+#if !defined (NULL_COMPONENT_SVNT_HAS_DLL)
+# define NULL_COMPONENT_SVNT_HAS_DLL 1
+#endif /* ! NULL_COMPONENT_SVNT_HAS_DLL */
+
+#if defined (NULL_COMPONENT_SVNT_HAS_DLL) && (NULL_COMPONENT_SVNT_HAS_DLL == 1)
+# if defined (NULL_COMPONENT_SVNT_BUILD_DLL)
+# define NULL_COMPONENT_SVNT_Export ACE_Proper_Export_Flag
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NULL_COMPONENT_SVNT_BUILD_DLL */
+# define NULL_COMPONENT_SVNT_Export ACE_Proper_Import_Flag
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NULL_COMPONENT_SVNT_BUILD_DLL */
+#else /* NULL_COMPONENT_SVNT_HAS_DLL == 1 */
+# define NULL_COMPONENT_SVNT_Export
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARATION(T)
+# define NULL_COMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NULL_COMPONENT_SVNT_HAS_DLL == 1 */
+
+// Set NULL_COMPONENT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NULL_COMPONENT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NULL_COMPONENT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NULL_COMPONENT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NULL_COMPONENT_SVNT_NTRACE */
+
+#if (NULL_COMPONENT_SVNT_NTRACE == 1)
+# define NULL_COMPONENT_SVNT_TRACE(X)
+#else /* (NULL_COMPONENT_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NULL_COMPONENT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NULL_COMPONENT_SVNT_NTRACE == 1) */
+
+#endif /* NULL_COMPONENT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Null_Component/Null_Interface.idl b/modules/CIAO/examples/Null_Component/Null_Interface.idl
new file mode 100644
index 00000000000..ed841b2a921
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Interface.idl
@@ -0,0 +1,22 @@
+/**
+ * @file Null_Interface.idl
+ *
+ * @author Abdul Sowayan <abdullah.sowayan@lmco.com>
+ *
+ * $Id$
+ */
+
+#ifndef NULL_INTERFACE_IDL
+#define NULL_INTERFACE_IDL
+
+/**
+ * @interface Null_Interface
+ *
+ * @brief
+ */
+interface Null_Interface
+{
+ void null_operation();
+};
+
+#endif /* NULL_INTERFACE_IDL */
diff --git a/modules/CIAO/examples/Null_Component/Null_Interface.mpc b/modules/CIAO/examples/Null_Component/Null_Interface.mpc
new file mode 100644
index 00000000000..9e66ae6ea65
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Interface.mpc
@@ -0,0 +1,46 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Null_Interface"
+
+project(Null_Interface_stub): taolib_with_idl {
+
+ sharedname = Null_Interface_stub
+ idlflags += -St \
+ -Wb,stub_export_macro=NULL_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Null_Interface_stub_export.h \
+ -Wb,skel_export_macro=NULL_INTERFACE_SKEL_Export \
+ -Wb,skel_export_include=Null_Interface_skel_export.h
+ dynamicflags = NULL_INTERFACE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Null_Interface.idl
+ }
+
+ Source_Files {
+ Null_InterfaceC.cpp
+ }
+}
+
+project(Null_Interface_skel) : portableserver {
+ after += Null_Interface_stub
+ sharedname = Null_Interface_skel
+ libs += Null_Interface_stub
+
+ idlflags += -St \
+ -Wb,stub_export_macro=NULL_INTERFACE_STUB_Export \
+ -Wb,stub_export_include=Null_Interface_stub_export.h \
+ -Wb,skel_export_macro=NULL_INTERFACE_SKEL_Export \
+ -Wb,skel_export_include=Null_Interface_skel_export.h
+ dynamicflags = NULL_INTERFACE_SKEL_BUILD_DLL
+
+ IDL_Files {
+ Null_Interface.idl
+ }
+
+ Source_Files {
+ Null_InterfaceS.cpp
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/examples/Null_Component/Null_Interface_skel_export.h b/modules/CIAO/examples/Null_Component/Null_Interface_skel_export.h
new file mode 100644
index 00000000000..239c5cf3f6a
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Interface_skel_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NULL_INTERFACE_SVNT
+// ------------------------------
+#ifndef NULL_INTERFACE_SKEL_EXPORT_H
+#define NULL_INTERFACE_SKEL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NULL_INTERFACE_SKEL_HAS_DLL)
+# define NULL_INTERFACE_SKEL_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NULL_INTERFACE_SKEL_HAS_DLL */
+
+#if !defined (NULL_INTERFACE_SKEL_HAS_DLL)
+# define NULL_INTERFACE_SKEL_HAS_DLL 1
+#endif /* ! NULL_INTERFACE_SKEL_HAS_DLL */
+
+#if defined (NULL_INTERFACE_SKEL_HAS_DLL) && (NULL_INTERFACE_SKEL_HAS_DLL == 1)
+# if defined (NULL_INTERFACE_SKEL_BUILD_DLL)
+# define NULL_INTERFACE_SKEL_Export ACE_Proper_Export_Flag
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NULL_INTERFACE_SKEL_BUILD_DLL */
+# define NULL_INTERFACE_SKEL_Export ACE_Proper_Import_Flag
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NULL_INTERFACE_SKEL_BUILD_DLL */
+#else /* NULL_INTERFACE_SKEL_HAS_DLL == 1 */
+# define NULL_INTERFACE_SKEL_Export
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARATION(T)
+# define NULL_INTERFACE_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NULL_INTERFACE_SKEL_HAS_DLL == 1 */
+
+// Set NULL_INTERFACE_SKEL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NULL_INTERFACE_SKEL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NULL_INTERFACE_SKEL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NULL_INTERFACE_SKEL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NULL_INTERFACE_SKEL_NTRACE */
+
+#if (NULL_INTERFACE_SKEL_NTRACE == 1)
+# define NULL_INTERFACE_SKEL_TRACE(X)
+#else /* (NULL_INTERFACE_SKEL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NULL_INTERFACE_SKEL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NULL_INTERFACE_SKEL_NTRACE == 1) */
+
+#endif /* NULL_INTERFACE_SKEL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Null_Component/Null_Interface_stub_export.h b/modules/CIAO/examples/Null_Component/Null_Interface_stub_export.h
new file mode 100644
index 00000000000..09ad6ea7925
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/Null_Interface_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl NULL_INTERFACE_STUB
+// ------------------------------
+#ifndef NULL_INTERFACE_STUB_EXPORT_H
+#define NULL_INTERFACE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (NULL_INTERFACE_STUB_HAS_DLL)
+# define NULL_INTERFACE_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && NULL_INTERFACE_STUB_HAS_DLL */
+
+#if !defined (NULL_INTERFACE_STUB_HAS_DLL)
+# define NULL_INTERFACE_STUB_HAS_DLL 1
+#endif /* ! NULL_INTERFACE_STUB_HAS_DLL */
+
+#if defined (NULL_INTERFACE_STUB_HAS_DLL) && (NULL_INTERFACE_STUB_HAS_DLL == 1)
+# if defined (NULL_INTERFACE_STUB_BUILD_DLL)
+# define NULL_INTERFACE_STUB_Export ACE_Proper_Export_Flag
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* NULL_INTERFACE_STUB_BUILD_DLL */
+# define NULL_INTERFACE_STUB_Export ACE_Proper_Import_Flag
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* NULL_INTERFACE_STUB_BUILD_DLL */
+#else /* NULL_INTERFACE_STUB_HAS_DLL == 1 */
+# define NULL_INTERFACE_STUB_Export
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARATION(T)
+# define NULL_INTERFACE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* NULL_INTERFACE_STUB_HAS_DLL == 1 */
+
+// Set NULL_INTERFACE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (NULL_INTERFACE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define NULL_INTERFACE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define NULL_INTERFACE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !NULL_INTERFACE_STUB_NTRACE */
+
+#if (NULL_INTERFACE_STUB_NTRACE == 1)
+# define NULL_INTERFACE_STUB_TRACE(X)
+#else /* (NULL_INTERFACE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define NULL_INTERFACE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (NULL_INTERFACE_STUB_NTRACE == 1) */
+
+#endif /* NULL_INTERFACE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp
new file mode 100644
index 00000000000..4f50720ec1e
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.cpp
@@ -0,0 +1,103 @@
+// $Id$
+
+#include "Container_Base.h"
+#include "NodeManager/NodeManager_Impl.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+#include "tao/IORTable/IORTable.h"
+#include "tao/CDR.h"
+#include "plan.h"
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ // Initialize the ORB so that CORBA::Any will work
+ //
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+ try
+ {
+ // Get reference to Root POA.
+ CORBA::Object_var obj
+ = orb->resolve_initial_references ("RootPOA");
+
+ PortableServer::POA_var poa
+ = PortableServer::POA::_narrow (obj.in ());
+
+ // Activate POA manager
+ PortableServer::POAManager_var mgr
+ = poa->the_POAManager ();
+
+ mgr->activate ();
+
+ int homes_table_size =
+ sizeof (homes_table)/sizeof(HomeAttributes);
+
+ CIAO::HOMECREATOR_FUNCPTR_MAP home_creator_fptr_map;
+ CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP homesvnt_creator_fptr_map;
+ CIAO::Static_Config_EntryPoints_Maps static_config_entrypoints_maps;
+ static_config_entrypoints_maps.home_creator_funcptr_map_ = &home_creator_fptr_map;
+ static_config_entrypoints_maps.home_servant_creator_funcptr_map_ = &homesvnt_creator_fptr_map;
+
+ int i=0;
+ for (i=0; i<homes_table_size; ++i)
+ {
+ home_creator_fptr_map.bind (homes_table[i].executor_entrypt_,
+ homes_table[i].executor_fptr_);
+
+ homesvnt_creator_fptr_map.bind (homes_table[i].servant_entrypt_,
+ homes_table[i].servant_fptr_);
+ }
+
+ CIAO::Static_NodeManager_Impl *static_node_manager_impl;
+ // Create and install the CIAO Daemon servant
+
+ ACE_DEBUG ((LM_DEBUG, "creating static_node_manager\n"));
+
+ static_node_manager_impl =
+ new CIAO::Static_NodeManager_Impl("NodeManager",
+ orb.in (),
+ poa.in (),
+ "", //exe location
+ "", //exe options
+ 0, //spawn delay
+ &static_config_entrypoints_maps);
+
+ static_node_manager_impl->init ();
+
+ CORBA::Object_var table_object =
+ orb->resolve_initial_references ("IORTable");
+
+ IORTable::Table_var adapter =
+ IORTable::Table::_narrow (table_object.in ());
+
+ if (CORBA::is_nil (adapter.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR, "Nil IORTable\n"), -1);
+
+ CIAO::NodeManagerDaemon_var manager =
+ static_node_manager_impl->_this ();
+
+ CORBA::String_var str =
+ orb->object_to_string (manager.in ());
+
+ adapter->bind ("NodeManager",
+ str.in ());
+
+ // Run the main event loop for the ORB.
+ orb->run ();
+
+ poa->destroy (1, 1);
+
+ orb->destroy ();
+ }
+ catch (CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Caught CORBA Exception: ");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc
new file mode 100644
index 00000000000..90d141854e4
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/StaticDAnCEApp.mpc
@@ -0,0 +1,21 @@
+// -*- MPC -*-
+// $Id$
+
+project(StaticDAnCEApp *): ciao_static_dnc_app, iortable {
+ after += Null_Interface_Null_Component_exec
+ exename = StaticDAnCEApp
+
+ libs += Null_Interface_stub
+ libs += Null_Interface_skel
+ libs += Null_Component_stub
+ libs += Null_Component_svnt
+ libs += Null_Component_exec
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ StaticDAnCEApp.cpp
+ }
+}
+
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Deployment.xsd b/modules/CIAO/examples/Null_Component/descriptors/Deployment.xsd
new file mode 100644
index 00000000000..fd4ffe5bc7d
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Deployment.xsd
@@ -0,0 +1,29 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ targetNamespace="http://www.omg.org/Deployment">
+
+ <xsd:include schemaLocation="Basic_Deployment_Data.xsd"/>
+ <xsd:include schemaLocation="cpd.xsd"/>
+ <xsd:include schemaLocation="ccd.xsd"/>
+ <xsd:include schemaLocation="cdd.xsd"/>
+ <xsd:include schemaLocation="cdp.xsd"/>
+ <xsd:include schemaLocation="cid.xsd"/>
+ <xsd:include schemaLocation="iad.xsd"/>
+ <xsd:include schemaLocation="pcd.xsd"/>
+ <xsd:include schemaLocation="toplevel.xsd"/>
+
+
+<!-- Top-level elements. -->
+
+ <xsd:element name="domain" type="Deployment:Domain"/>
+ <xsd:element name="deploymentPlan" type="Deployment:DeploymentPlan"/>
+ <xsd:element name="implementationArtifactDescription" type="Deployment:ImplementationArtifactDescription" />
+ <xsd:element name="componentInterfaceDescription" type="Deployment:ComponentInterfaceDescription"/>
+ <xsd:element name="componentImplementationDescription" type="Deployment:ComponentImplementationDescription"/>
+ <xsd:element name="componentPackageDescription" type="Deployment:ComponentPackageDescription"/>
+ <xsd:element name="packageConfiguration" type="Deployment:PackageConfiguration"/>
+ <xsd:element name="topLevelPackageDescription" type="Deployment:TopLevelPackageDescription"/>
+
+</xsd:schema>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Domain.cdd b/modules/CIAO/examples/Null_Component/descriptors/Domain.cdd
new file mode 100644
index 00000000000..a7fd42463fe
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Domain.cdd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:Domain xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_Null_Component_Targets_Domain</UUID>
+
+ <node>
+ <name>NodeA</name>
+ </node>
+
+</Deployment:Domain>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat b/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat
new file mode 100644
index 00000000000..556433b464e
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/NodeMap.dat
@@ -0,0 +1,3 @@
+NodeA corbaloc:iiop:localhost:10000/NodeManager
+
+
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly.cid b/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly.cid
new file mode 100644
index 00000000000..6d19c2a050c
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly.cid
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_84CDF595-E42C-43D5-B3FD-C6C6524E068C</UUID>
+
+ <assemblyImpl>
+ <instance xmi:id="_B4BF176E-0386-49EE-B84F-3F2781F3C7BE">
+ <name>Null_Component.ComponentImplementations.Null_Assembly_Container.Null_Assembly.Null_Component</name>
+ <package href="Null_Component_Package.cpd"/>
+ </instance>
+ </assemblyImpl>
+
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly_Package.cpd b/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly_Package.cpd
new file mode 100644
index 00000000000..0e4b281531a
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Assembly_Package.cpd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_AAC92636-57DD-4503-A616-CF75AD417E99</UUID>
+
+ <implementation>
+ <name>Null_Assembly</name>
+ <referencedImplementation href="Null_Assembly.cid"/>
+ </implementation>
+
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Component.ccd b/modules/CIAO/examples/Null_Component/descriptors/Null_Component.ccd
new file mode 100644
index 00000000000..1553f012e70
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Component.ccd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentInterfaceDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_FF1F1E30-2916-4A65-96C3-EF29124400A5</UUID>
+
+ <port>
+ <name>null_facet</name>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>false</exclusiveUser>
+ <optional>false</optional>
+ <provider>true</provider>
+ <kind>Facet</kind>
+ </port>
+
+</Deployment:ComponentInterfaceDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid b/modules/CIAO/examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid
new file mode 100644
index 00000000000..93393fca1c7
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_ComponentMonolithicImpl.cid
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentImplementationDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_7B0A12C6-0490-4449-A8B3-9BF3CCDF58FA</UUID>
+
+ <implements href="Null_Component.ccd"/>
+
+ <monolithicImpl>
+ <primaryArtifact>
+ <name>Null_Component_stub</name>
+ <referencedArtifact href="Null_Component_stub.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Null_Component_svnt</name>
+ <referencedArtifact href="Null_Component_svnt.iad"/>
+ </primaryArtifact>
+ <primaryArtifact>
+ <name>Null_Component_exec</name>
+ <referencedArtifact href="Null_Component_exec.iad"/>
+ </primaryArtifact>
+ </monolithicImpl>
+
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Null_Component.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+</Deployment:ComponentImplementationDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Component_Package.cpd b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_Package.cpd
new file mode 100644
index 00000000000..d9f06a4367f
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_Package.cpd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ComponentPackageDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_ABA51225-4A40-4B07-B4EB-467AEEA5BFEE</UUID>
+
+ <realizes href="Null_Component.ccd"/>
+
+ <implementation>
+ <name>Null_ComponentMonolithicImpl</name>
+ <referencedImplementation href="Null_ComponentMonolithicImpl.cid"/>
+ </implementation>
+
+</Deployment:ComponentPackageDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Component_exec.iad b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_exec.iad
new file mode 100644
index 00000000000..9a456b15b60
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_exec.iad
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_6BECFE2C-84AB-4B4A-B14C-DB8048563368</UUID>
+
+ <location>Null_Component_exec</location>
+
+ <dependsOn>
+ <name>Null_Component_svnt</name>
+ <referencedArtifact href="Null_Component_svnt.iad"/>
+ </dependsOn>
+
+ <dependsOn>
+ <name>Null_Component_stub</name>
+ <referencedArtifact href="Null_Component_stub.iad"/>
+ </dependsOn>
+
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Null_Component_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Component_stub.iad b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_stub.iad
new file mode 100644
index 00000000000..d74f84940fb
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_stub.iad
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_5249354B-25F0-459E-BC02-5EED8A0122A7</UUID>
+
+ <location>Null_Component_stub</location>
+
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Null_Component_svnt.iad b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_svnt.iad
new file mode 100644
index 00000000000..c6283a3a52c
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Null_Component_svnt.iad
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:ImplementationArtifactDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <UUID>_EBFD46AF-1AF1-4646-891C-5FDE9657AD83</UUID>
+
+ <location>Null_Component_svnt</location>
+
+ <dependsOn>
+ <name>Null_Component_stub</name>
+ <referencedArtifact href="Null_Component_stub.iad"/>
+ </dependsOn>
+
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Null_Component_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+
+</Deployment:ImplementationArtifactDescription>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/PackageConfiguration.pcd b/modules/CIAO/examples/Null_Component/descriptors/PackageConfiguration.pcd
new file mode 100644
index 00000000000..0b09dd0c51e
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/PackageConfiguration.pcd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:PackageConfiguration xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <basePackage href="Null_Assembly_Package.cpd"/>
+
+</Deployment:PackageConfiguration>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/Plan.cdp b/modules/CIAO/examples/Null_Component/descriptors/Plan.cdp
new file mode 100644
index 00000000000..903fd30bc44
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/Plan.cdp
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <implementation id="Null_Component_ComponentImplementations_Null_ComponentImplementation_Null_ComponentMonolithicImpl">
+ <name>Null_Component_ComponentImplementations_Null_ComponentImplementation_Null_ComponentMonolithicImpl</name>
+ <source/>
+ <artifact>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_stub</artifact>
+ <artifact>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_svnt</artifact>
+ <artifact>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_exec</artifact>
+ </implementation>
+
+ <instance id="Null_Component_ComponentImplementations_Null_Assembly_Container_Null_Assembly_Null_Component">
+ <name>Null_Component_ComponentImplementations_Null_Assembly_Container_Null_Assembly_Null_Component</name>
+ <node>NodeA</node>
+ <source/>
+ <implementation>Null_Component_ComponentImplementations_Null_ComponentImplementation_Null_ComponentMonolithicImpl</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>Null_Component.ior</string>
+ </value>
+ </value>
+ </configProperty>
+ </instance>
+
+ <artifact id="Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_stub">
+ <name>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_stub</name>
+ <source/>
+ <node/>
+ <location>Null_Component_stub</location>
+ </artifact>
+
+ <artifact id="Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_svnt">
+ <name>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_svnt</name>
+ <source/>
+ <node/>
+ <location>Null_Component_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Null_Component_Home_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_exec">
+ <name>Null_Component_ImplementationArtifacts_Null_ComponentArtifacts_Null_Component_exec</name>
+ <source/>
+ <node/>
+ <location>Null_Component_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_Null_Component_Home_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/XMI.xsd b/modules/CIAO/examples/Null_Component/descriptors/XMI.xsd
new file mode 100644
index 00000000000..f4adac91934
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/XMI.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" ?>
+<xsd:schema targetNamespace="http://www.omg.org/XMI" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:attributeGroup name="IdentityAttribs">
+ <xsd:attribute form="qualified" name="label" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="uuid" type="xsd:string" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="LinkAttribs">
+ <xsd:attribute name="href" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="idref" type="xsd:IDREF" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="ObjectAttribs">
+ <xsd:attributeGroup ref="xmi:IdentityAttribs" />
+ <xsd:attributeGroup ref="xmi:LinkAttribs" />
+ <xsd:attribute fixed="2.0" form="qualified" name="version" type="xsd:string" use="optional" />
+ <xsd:attribute form="qualified" name="type" type="xsd:QName" use="optional" />
+ </xsd:attributeGroup>
+ <xsd:complexType name="Extension">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xmi:id" />
+ <xsd:attributeGroup ref="xmi:ObjectAttribs" />
+ <xsd:attribute name="extender" type="xsd:string" use="optional" />
+ <xsd:attribute name="extenderID" type="xsd:string" use="optional" />
+ </xsd:complexType>
+ <xsd:element name="Extension" type="xmi:Extension" />
+ <xsd:complexType name="Any">
+ <xsd:choice maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="skip" />
+ </xsd:choice>
+ <xsd:anyAttribute processContents="skip" />
+ </xsd:complexType>
+</xsd:schema>
diff --git a/modules/CIAO/examples/Null_Component/descriptors/package.tpd b/modules/CIAO/examples/Null_Component/descriptors/package.tpd
new file mode 100644
index 00000000000..b57255f3618
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/descriptors/package.tpd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:TopLevelPackageDescription xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+ <package href="PackageConfiguration.pcd"/>
+
+</Deployment:TopLevelPackageDescription>
diff --git a/modules/CIAO/examples/Null_Component/model/Null_Component.mga b/modules/CIAO/examples/Null_Component/model/Null_Component.mga
new file mode 100644
index 00000000000..6fde9b4175a
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/model/Null_Component.mga
Binary files differ
diff --git a/modules/CIAO/examples/Null_Component/model/Null_Component.xme b/modules/CIAO/examples/Null_Component/model/Null_Component.xme
new file mode 100644
index 00000000000..3893827cb76
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/model/Null_Component.xme
@@ -0,0 +1,843 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE project SYSTEM "mga.dtd">
+
+<project guid="{CAA6F237-1527-4481-ADB7-764DB01170E8}" cdate="Tue Oct 10 12:57:50 2006" mdate="Tue Oct 10 12:57:50 2006" version="" metaguid="{1B0D2E44-51AC-4A14-BF57-FADB2F5F9C86}" metaversion="" metaname="PICML">
+ <name>Null_Component</name>
+ <comment></comment>
+ <author></author>
+ <folder id="id-006a-00000001" relid="0x1" childrelidcntr="0x2" kind="RootFolder">
+ <name>Null_Component</name>
+ <folder id="id-006a-00000002" relid="0x2" childrelidcntr="0x2" kind="InterfaceDefinitions">
+ <name>InterfaceDefinitions</name>
+ <model id="id-0065-00000001" kind="File" relid="0x1" childrelidcntr="0x1">
+ <name>Null_Interface</name>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000002" kind="Object" role="Object" relid="0x1" childrelidcntr="0x1">
+ <name>Null_Interface</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="abstract" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="local" status="meta">
+ <value>false</value>
+ </attribute>
+ <model id="id-0065-00000003" kind="TwowayOperation" role="TwowayOperation" relid="0x1" childrelidcntr="0x0">
+ <name>null_operation</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ </model>
+ </model>
+ <model id="id-0065-00000004" kind="File" relid="0x2" childrelidcntr="0x4">
+ <name>Null_Component</name>
+ <attribute kind="PrefixTag" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000005" kind="Component" role="Component" relid="0x2" childrelidcntr="0x1">
+ <name>Null_Component</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000002" kind="ProvidedRequestPort" role="ProvidedRequestPort" relid="0x1" referred="id-0065-00000002">
+ <name>null_facet</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ </model>
+ <model id="id-0065-00000006" kind="ComponentFactory" role="ComponentFactory" relid="0x3" childrelidcntr="0x0">
+ <name>Null_Component_Home</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>793,493</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ <reference id="id-0067-00000001" kind="FileRef" role="FileRef" relid="0x1" referred="id-0065-00000001">
+ <name>FileRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="InterfaceDefinition" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>243,143</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000001" kind="ManagesComponent" role="ManagesComponent" relid="0x4">
+ <name>ManagesComponent</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ws</value>
+ </regnode>
+ <connpoint role="dst" target="id-0065-00000005"/>
+ <connpoint role="src" target="id-0065-00000006"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000003" relid="0x1" childrelidcntr="0xb" kind="PredefinedTypes">
+ <name>PredefinedTypes</name>
+ <atom id="id-0066-00000001" kind="TypeKind" relid="0xb">
+ <name>TypeKind</name>
+ </atom>
+ <atom id="id-0066-00000002" kind="TypeEncoding" relid="0xa">
+ <name>TypeEncoding</name>
+ </atom>
+ <atom id="id-0066-00000003" kind="String" relid="0x9">
+ <name>String</name>
+ </atom>
+ <atom id="id-0066-00000004" kind="Boolean" relid="0x8">
+ <name>Boolean</name>
+ </atom>
+ <atom id="id-0066-00000005" kind="ShortInteger" relid="0x7">
+ <name>ShortInteger</name>
+ </atom>
+ <atom id="id-0066-00000006" kind="RealNumber" relid="0x6">
+ <name>RealNumber</name>
+ </atom>
+ <atom id="id-0066-00000007" kind="LongInteger" relid="0x5">
+ <name>LongInteger</name>
+ </atom>
+ <atom id="id-0066-00000008" kind="GenericValueObject" relid="0x4">
+ <name>GenericValueObject</name>
+ </atom>
+ <atom id="id-0066-00000009" kind="GenericValue" relid="0x3">
+ <name>GenericValue</name>
+ </atom>
+ <atom id="id-0066-0000000a" kind="GenericObject" relid="0x2">
+ <name>GenericObject</name>
+ </atom>
+ <atom id="id-0066-0000000b" kind="Byte" relid="0x1">
+ <name>Byte</name>
+ </atom>
+ </folder>
+ <folder id="id-006a-00000004" relid="0x3" childrelidcntr="0x3" kind="ComponentImplementations">
+ <name>ComponentImplementations</name>
+ <model id="id-0065-00000007" kind="ComponentImplementationContainer" relid="0x1" childrelidcntr="0xb">
+ <name>Null_ComponentImplementation</name>
+ <model id="id-0065-00000008" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>ComponentIOR</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>282,168</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>Null_Component.ior</value>
+ </attribute>
+ <reference id="id-0067-00000003" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-0000000c" kind="MonolithicImplementation" role="MonolithicImplementation" relid="0x1">
+ <name>Null_ComponentMonolithicImpl</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>125,68</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000004" kind="ComponentRef" role="ComponentRef" relid="0x9" referred="id-0065-00000005">
+ <name>Null_ComponentRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>910,568</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000008" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x3" referred="id-0066-0000000d">
+ <name>Null_Component_stubRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>439,268</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-00000009" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x4" referred="id-0066-0000000e">
+ <name>Null_Component_svntRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>596,368</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000000a" kind="ImplementationArtifactReference" role="ImplementationArtifactReference" relid="0x5" referred="id-0066-0000000f">
+ <name>Null_Component_execRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>753,468</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000002" kind="ConfigProperty" role="ConfigProperty" relid="0xa">
+ <name>ConfigProperty</name>
+ <connpoint role="dst" target="id-0065-00000008"/>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ </connection>
+ <connection id="id-0068-00000003" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x6">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000008"/>
+ </connection>
+ <connection id="id-0068-00000004" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x7">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000009"/>
+ </connection>
+ <connection id="id-0068-00000005" kind="MonolithprimaryArtifact" role="MonolithprimaryArtifact" relid="0x8">
+ <name>MonolithprimaryArtifact</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-0000000a"/>
+ </connection>
+ <connection id="id-0068-00000006" kind="Implements" role="Implements" relid="0xb">
+ <name>Implements</name>
+ <connpoint role="src" target="id-0066-0000000c"/>
+ <connpoint role="dst" target="id-0067-00000004"/>
+ </connection>
+ </model>
+ <model id="id-0065-00000015" kind="ComponentImplementationContainer" relid="0x3" childrelidcntr="0x3">
+ <name>Null_Assembly_Container</name>
+ <model id="id-0065-00000018" kind="ComponentAssembly" role="ComponentAssembly" relid="0x3" childrelidcntr="0x1">
+ <name>Null_Assembly</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>212,114</value>
+ </regnode>
+ </regnode>
+ <regnode name="QoSModelAspect" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>212,114</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000019" kind="Component" role="Component" derivedfrom="id-0065-00000005" isinstance="yes" isprimary="yes" relid="0x1" childrelidcntr="0x0">
+ <name>Null_Component</name>
+ <regnode name="PartRegs">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>342,130</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000019" kind="ProvidedRequestPort" role="ProvidedRequestPort" derivedfrom="id-0067-00000002" isinstance="yes" isprimary="no" referred="id-0065-00000002" isbound="yes">
+ <name>null_facet</name>
+ <attribute kind="SpecifyIdTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="VersionTag" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="exclusiveProvider" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="exclusiveUser" status="meta">
+ <value>false</value>
+ </attribute>
+ <attribute kind="optional" status="meta">
+ <value>false</value>
+ </attribute>
+ </reference>
+ </model>
+ </model>
+ </model>
+ </folder>
+ <folder id="id-006a-00000005" relid="0x4" childrelidcntr="0x0" kind="ImplementationArtifacts">
+ <name>ImplementationArtifacts</name>
+ <model id="id-0065-00000009" kind="ArtifactContainer" relid="0x1" childrelidcntr="0xa">
+ <name>Null_ComponentArtifacts</name>
+ <model id="id-0065-0000000a" kind="Property" role="Property" relid="0x2" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>334,200</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createNull_ComponentHome_Servant</value>
+ </attribute>
+ <reference id="id-0067-00000005" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <model id="id-0065-0000000b" kind="Property" role="Property" relid="0x4" childrelidcntr="0x2">
+ <name>entryPoint</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>700,432</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="DataValue">
+ <value>createNull_ComponentHome_Impl</value>
+ </attribute>
+ <reference id="id-0067-00000006" kind="DataType" role="DataType" relid="0x2" referred="id-0066-00000003">
+ <name>String</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ <atom id="id-0066-0000000d" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x1">
+ <name>Null_Component_stub</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>151,84</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>Null_Component_stub</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-0000000e" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x3">
+ <name>Null_Component_svnt</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>517,316</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>Null_Component_svnt</value>
+ </attribute>
+ </atom>
+ <atom id="id-0066-0000000f" kind="ImplementationArtifact" role="ImplementationArtifact" relid="0x5">
+ <name>Null_Component_exec</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>883,548</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="configuration" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label">
+ <value></value>
+ </attribute>
+ <attribute kind="location">
+ <value>Null_Component_exec</value>
+ </attribute>
+ </atom>
+ <connection id="id-0068-00000007" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x7">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-0000000a"/>
+ <connpoint role="src" target="id-0066-0000000e"/>
+ </connection>
+ <connection id="id-0068-00000008" kind="ArtifactDependency" role="ArtifactDependency" relid="0x8">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000d"/>
+ <connpoint role="src" target="id-0066-0000000e"/>
+ </connection>
+ <connection id="id-0068-00000009" kind="ArtifactExecParameter" role="ArtifactExecParameter" relid="0x8">
+ <name>ArtifactExecParameter</name>
+ <connpoint role="dst" target="id-0065-0000000b"/>
+ <connpoint role="src" target="id-0066-0000000f"/>
+ </connection>
+ <connection id="id-0068-0000000a" kind="ArtifactDependency" role="ArtifactDependency" relid="0x9">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000e"/>
+ <connpoint role="src" target="id-0066-0000000f"/>
+ </connection>
+ <connection id="id-0068-0000000b" kind="ArtifactDependency" role="ArtifactDependency" relid="0xa">
+ <name>ArtifactDependency</name>
+ <connpoint role="dst" target="id-0066-0000000d"/>
+ <connpoint role="src" target="id-0066-0000000f"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000006" relid="0x5" childrelidcntr="0x0" kind="ComponentTypes">
+ <name>ComponentTypes</name>
+ <model id="id-0065-0000000c" kind="ComponentContainer" relid="0x1" childrelidcntr="0x1">
+ <name>Null_ComponentContainer</name>
+ <reference id="id-0067-00000007" kind="ComponentRef" role="ComponentRef" relid="0x1" referred="id-0065-00000005">
+ <name>Null_ComponentRef</name>
+ <regnode name="PartRegs" isopaque="yes">
+ <value></value>
+ <regnode name="Packaging" isopaque="yes">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>518,318</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ </model>
+ </folder>
+ <folder id="id-006a-00000007" relid="0x6" childrelidcntr="0x1" kind="PackageConfigurations">
+ <name>PackageConfigurations</name>
+ <model id="id-0065-00000010" kind="PackageConfigurationContainer" relid="0x1" childrelidcntr="0x6">
+ <name>Default</name>
+ <atom id="id-0066-00000012" kind="PackageConfiguration" role="PackageConfiguration" relid="0x2">
+ <name>PackageConfiguration</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>373,149</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-0000001c" kind="ComponentPackageReference" role="ComponentPackageReference" relid="0x5" referred="id-0066-00000014">
+ <name>Null_Assembly_Package</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>573,146</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="requiredName" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="requiredType" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="requiredUUID" status="meta">
+ <value></value>
+ </attribute>
+ </reference>
+ <connection id="id-0068-00000016" kind="PackageConfReference" role="PackageConfReference" relid="0x6">
+ <name>PackageConfReference</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000012"/>
+ <connpoint role="dst" target="id-0067-0000001c"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000008" relid="0x7" childrelidcntr="0x2" kind="ComponentPackages">
+ <name>ComponentPackages</name>
+ <model id="id-0065-0000000d" kind="PackageContainer" relid="0x1" childrelidcntr="0xa">
+ <name>Null_Component_Package</name>
+ <atom id="id-0066-00000010" kind="ComponentPackage" role="ComponentPackage" relid="0x1">
+ <name>Null_Component_Package</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>366,163</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-00000010" kind="ComponentImplementationReference" role="ComponentImplementationReference" relid="0x5" referred="id-0066-0000000c">
+ <name>Null_ComponentMonolithicImpl</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>130,158</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001a" kind="ComponentRef" role="ComponentRef" relid="0x9" referred="id-0065-00000019">
+ <name>Null_Component</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>545,137</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-0000000e" kind="Implementation" role="Implementation" relid="0x6">
+ <name>Implementation</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>We</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000010"/>
+ <connpoint role="dst" target="id-0067-00000010"/>
+ </connection>
+ <connection id="id-0068-00000014" kind="PackageInterface" role="PackageInterface" relid="0xa">
+ <name>PackageInterface</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000010"/>
+ <connpoint role="dst" target="id-0067-0000001a"/>
+ </connection>
+ </model>
+ <model id="id-0065-0000001a" kind="PackageContainer" relid="0x2" childrelidcntr="0x3">
+ <name>Null_Assembly_Package</name>
+ <atom id="id-0066-00000014" kind="ComponentPackage" role="ComponentPackage" relid="0x1">
+ <name>Null_Assembly_Package</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>282,135</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </atom>
+ <reference id="id-0067-0000001b" kind="ComponentImplementationReference" role="ComponentImplementationReference" relid="0x2" referred="id-0065-00000018">
+ <name>Null_Assembly</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>502,110</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000015" kind="Implementation" role="Implementation" relid="0x3">
+ <name>Implementation</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>Ew</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000014"/>
+ <connpoint role="dst" target="id-0067-0000001b"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-00000009" relid="0x8" childrelidcntr="0x1" kind="DeploymentPlans">
+ <name>DeploymentPlans</name>
+ <model id="id-0065-00000014" kind="DeploymentPlan" relid="0x1" childrelidcntr="0x7">
+ <name>Plan</name>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <reference id="id-0067-00000013" kind="NodeReference" role="NodeReference" relid="0x2" referred="id-0065-00000013">
+ <name>NodeA</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>305,123</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <reference id="id-0067-0000001d" kind="ComponentRef" role="ComponentRef" relid="0x7" referred="id-0065-00000019">
+ <name>Null_Component</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>475,102</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000013" kind="InstanceMapping" role="InstanceMapping" relid="0x4">
+ <name>InstanceMapping</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>w</value>
+ </regnode>
+ <connpoint role="dst" target="id-0067-00000013"/>
+ <connpoint role="src" target="id-0069-00000001"/>
+ </connection>
+ <set id="id-0069-00000001" kind="CollocationGroup" role="CollocationGroup" relid="0x1" members="id-0067-0000001d">
+ <name>CollocationGroup</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="NodeMapping" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>114,128</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </set>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000a" relid="0x9" childrelidcntr="0x1" kind="Targets">
+ <name>Targets</name>
+ <model id="id-0065-00000012" kind="Domain" relid="0x1" childrelidcntr="0x1">
+ <name>Domain</name>
+ <attribute kind="UUID" status="meta">
+ <value></value>
+ </attribute>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ <model id="id-0065-00000013" kind="Node" role="Node" relid="0x1" childrelidcntr="0x0">
+ <name>NodeA</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Target" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>198,170</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ <attribute kind="label" status="meta">
+ <value></value>
+ </attribute>
+ </model>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000b" relid="0xa" childrelidcntr="0x1" kind="TopLevelPackages">
+ <name>TopLevelPackages</name>
+ <model id="id-0065-00000011" kind="TopLevelPackageContainer" relid="0x1" childrelidcntr="0x3">
+ <name>Default</name>
+ <atom id="id-0066-00000013" kind="TopLevelPackage" role="TopLevelPackage" relid="0x1">
+ <name>TopLevelPackage</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>240,184</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </atom>
+ <reference id="id-0067-00000012" kind="PackageConfigurationReference" role="PackageConfigurationReference" relid="0x2" referred="id-0066-00000012">
+ <name>PackageConfiguration</name>
+ <regnode name="PartRegs" status="undefined">
+ <value></value>
+ <regnode name="Packaging" status="undefined">
+ <value></value>
+ <regnode name="Position" isopaque="yes">
+ <value>517,181</value>
+ </regnode>
+ </regnode>
+ </regnode>
+ </reference>
+ <connection id="id-0068-00000012" kind="package" role="package" relid="0x3">
+ <name>package</name>
+ <regnode name="autorouterPref" isopaque="yes">
+ <value>w</value>
+ </regnode>
+ <connpoint role="src" target="id-0066-00000013"/>
+ <connpoint role="dst" target="id-0067-00000012"/>
+ </connection>
+ </model>
+ </folder>
+ <folder id="id-006a-0000000c" relid="0xb" childrelidcntr="0x0" kind="ComponentBuild">
+ <name>ComponentBuild</name>
+ </folder>
+ </folder>
+</project>
diff --git a/modules/CIAO/examples/Null_Component/plan.h b/modules/CIAO/examples/Null_Component/plan.h
new file mode 100644
index 00000000000..fce247dc321
--- /dev/null
+++ b/modules/CIAO/examples/Null_Component/plan.h
@@ -0,0 +1,32 @@
+// $Id$
+
+extern "C" ::Components::HomeExecutorBase_ptr create_Null_Component_Home_Impl (void);
+extern "C" ::PortableServer::Servant create_Null_Component_Home_Servant
+ (::Components::HomeExecutorBase_ptr p,
+ ::CIAO::Session_Container *c,
+ const char*);
+
+struct HomeAttributes
+{
+ char const * component_instance_name_;
+ /// Specify the entrypoint to component executor DLL.
+ char const * executor_entrypt_;
+ ::CIAO::HomeFactory executor_fptr_;
+ /// Specify the entrypoint to component servant DLL.
+ char const * servant_entrypt_;
+ ::CIAO::ServantFactory servant_fptr_;
+};
+
+// Homes
+static const HomeAttributes homes_table[] =
+{
+ {
+ "Null_Component_ComponentImplementations_Null_Assembly_Container_Null_Assembly_Null_Component",
+ "create_Null_Component_Home_Impl",
+ create_Null_Component_Home_Impl,
+ "create_Null_Component_Home_Servant",
+ create_Null_Component_Home_Servant
+ },
+};
+
+
diff --git a/modules/CIAO/examples/Philosophers/Philosophers.idl b/modules/CIAO/examples/Philosophers/Philosophers.idl
new file mode 100644
index 00000000000..7a29bc03c23
--- /dev/null
+++ b/modules/CIAO/examples/Philosophers/Philosophers.idl
@@ -0,0 +1,75 @@
+// $Id$
+
+// The famous Dining Philosopher example in CCM tutorial slides
+
+module Example
+{
+ exception InUse {};
+
+ interface Fork
+ /**
+ * Provided facet interface definition.
+ * It should be defined by the IDL file.
+ */
+ {
+ void get () raises (InUse);
+
+ void release ();
+ };
+
+ component ForkManager
+ {
+ provides Fork the_fork;
+ };
+
+ home ForkHome manages ForkManager
+ {
+ };
+
+ enum PhilosopherState
+ {
+ EATING,
+ THINKING,
+ HUNGRY,
+ STARVING,
+ DEAD
+ };
+
+ eventtype StatusInfo
+ {
+ public string name;
+ public PhilosopherState state;
+ public unsigned long ticks_since_last_meal;
+ public boolean has_left_fork;
+ public boolean has_right_fork;
+ };
+
+ component Philosopher
+ {
+ attribute string name;
+
+ // The left fork receptacle.
+ uses Fork left;
+
+ // The right fork receptacle.
+ uses Fork right;
+
+ // The status info event source.
+ publishes StatusInfo info;
+ };
+
+ home PhilosopherHome manages Philosopher
+ {
+ factory new (in string name);
+ };
+
+ component Observer
+ {
+ // The status info sink port.
+ consumes StatusInfo info;
+ };
+
+ home ObserverHome manages Observer
+ {
+ };
+};
diff --git a/modules/CIAO/examples/Philosophers/README b/modules/CIAO/examples/Philosophers/README
new file mode 100644
index 00000000000..96a56e61b73
--- /dev/null
+++ b/modules/CIAO/examples/Philosophers/README
@@ -0,0 +1 @@
+This example is unfinished. \ No newline at end of file
diff --git a/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.idl b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.idl
new file mode 100644
index 00000000000..6cb61fed2c1
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.idl
@@ -0,0 +1,21 @@
+//$Id$:
+
+#ifndef CIAO_HELLO_IDL
+#define CIAO_HELLO_IDL
+
+#include <Components.idl>
+
+module Hello
+{
+ interface ReadMessage
+ {
+ string get_message();
+ };
+
+ eventtype TimeOut
+ {
+ };
+
+};
+
+#endif /* CIAO_HELLO_IDL */
diff --git a/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.mpc b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.mpc
new file mode 100644
index 00000000000..3e12160cb00
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base.mpc
@@ -0,0 +1,38 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Hello_Base"
+
+project(Hello_Base_DnC_Upgradeable_stub): ciao_client_dnc {
+
+ sharedname = Hello_Base_DnC_Upgradeable_stub
+ idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export -Wb,stub_export_include=Hello_Base_stub_export.h -Wb,skel_export_macro=HELLO_BASE_SVNT_Export -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseC.cpp
+ }
+}
+
+project(Hello_Base_DnC_Upgradeable_svnt) : ciao_servant_dnc {
+ after += Hello_Base_DnC_Upgradeable_stub
+ sharedname = Hello_Base_DnC_Upgradeable_svnt
+ libs += Hello_Base_DnC_Upgradeable_stub
+
+ idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export -Wb,stub_export_include=Hello_Base_stub_export.h -Wb,skel_export_macro=HELLO_BASE_SVNT_Export -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseS.cpp
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_stub_export.h b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_stub_export.h
new file mode 100644
index 00000000000..224fe95a845
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HELLO_BASE_STUB
+// ------------------------------
+#ifndef HELLO_BASE_STUB_EXPORT_H
+#define HELLO_BASE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HELLO_BASE_STUB_HAS_DLL)
+# define HELLO_BASE_STUB_HAS_DLL 1
+#endif /* ! HELLO_BASE_STUB_HAS_DLL */
+
+#if defined (HELLO_BASE_STUB_HAS_DLL) && (HELLO_BASE_STUB_HAS_DLL == 1)
+# if defined (HELLO_BASE_STUB_BUILD_DLL)
+# define HELLO_BASE_STUB_Export ACE_Proper_Export_Flag
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HELLO_BASE_STUB_BUILD_DLL */
+# define HELLO_BASE_STUB_Export ACE_Proper_Import_Flag
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HELLO_BASE_STUB_BUILD_DLL */
+#else /* HELLO_BASE_STUB_HAS_DLL == 1 */
+# define HELLO_BASE_STUB_Export
+# define HELLO_BASE_STUB_SINGLETON_DECLARATION(T)
+# define HELLO_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HELLO_BASE_STUB_HAS_DLL == 1 */
+
+// Set HELLO_BASE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HELLO_BASE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HELLO_BASE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HELLO_BASE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HELLO_BASE_STUB_NTRACE */
+
+#if (HELLO_BASE_STUB_NTRACE == 1)
+# define HELLO_BASE_STUB_TRACE(X)
+#else /* (HELLO_BASE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HELLO_BASE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HELLO_BASE_STUB_NTRACE == 1) */
+
+#endif /* HELLO_BASE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h
new file mode 100644
index 00000000000..57625da60c6
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Hello_Base/Hello_Base_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HELLO_BASE_SVNT
+// ------------------------------
+#ifndef HELLO_BASE_SVNT_EXPORT_H
+#define HELLO_BASE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HELLO_BASE_SVNT_HAS_DLL)
+# define HELLO_BASE_SVNT_HAS_DLL 1
+#endif /* ! HELLO_BASE_SVNT_HAS_DLL */
+
+#if defined (HELLO_BASE_SVNT_HAS_DLL) && (HELLO_BASE_SVNT_HAS_DLL == 1)
+# if defined (HELLO_BASE_SVNT_BUILD_DLL)
+# define HELLO_BASE_SVNT_Export ACE_Proper_Export_Flag
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HELLO_BASE_SVNT_BUILD_DLL */
+# define HELLO_BASE_SVNT_Export ACE_Proper_Import_Flag
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HELLO_BASE_SVNT_BUILD_DLL */
+#else /* HELLO_BASE_SVNT_HAS_DLL == 1 */
+# define HELLO_BASE_SVNT_Export
+# define HELLO_BASE_SVNT_SINGLETON_DECLARATION(T)
+# define HELLO_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HELLO_BASE_SVNT_HAS_DLL == 1 */
+
+// Set HELLO_BASE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HELLO_BASE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HELLO_BASE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HELLO_BASE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HELLO_BASE_SVNT_NTRACE */
+
+#if (HELLO_BASE_SVNT_NTRACE == 1)
+# define HELLO_BASE_SVNT_TRACE(X)
+#else /* (HELLO_BASE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HELLO_BASE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HELLO_BASE_SVNT_NTRACE == 1) */
+
+#endif /* HELLO_BASE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver.cidl b/modules/CIAO/examples/Swapping/Receiver/Receiver.cidl
new file mode 100644
index 00000000000..3b2e04e5161
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Receiver.idl"
+
+composition session Receiver_Impl
+{
+ home executor ReceiverHome_Exec
+ {
+ implements Hello::ReceiverHome;
+ manages Receiver_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver.idl b/modules/CIAO/examples/Swapping/Receiver/Receiver.idl
new file mode 100644
index 00000000000..8be435c687c
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver.idl
@@ -0,0 +1,21 @@
+//$Id$:
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "../Hello_Base/Hello_Base.idl"
+
+module Hello
+{
+ component Receiver
+ {
+ uses ReadMessage read_message;
+ consumes TimeOut click_in;
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+
+};
+#endif /*RECEIVER_IDL*/
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver.mpc b/modules/CIAO/examples/Swapping/Receiver/Receiver.mpc
new file mode 100644
index 00000000000..b6b13c0660b
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver.mpc
@@ -0,0 +1,63 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Receiver"
+
+project(HelloB_Receiver_DnC_Upgradeable_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_Upgradeable_stub
+ sharedname = Receiver_DnC_Upgradeable_stub
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export -Wb,stub_export_include=Receiver_stub_export.h -Wb,skel_export_macro=RECEIVER_SVNT_Export -Wb,skel_export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+ libs += Hello_Base_DnC_Upgradeable_stub
+
+ IDL_Files {
+ Receiver.idl
+ }
+
+ Source_Files {
+ ReceiverC.cpp
+ }
+}
+
+project(HelloB_Receiver_DnC_Upgradeable_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_Upgradeable_svnt HelloB_Receiver_DnC_Upgradeable_stub
+ sharedname = Receiver_DnC_Upgradeable_svnt
+ libs += Receiver_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_SVNT_Export -Wb,export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+ cidlflags -= --
+ cidlflags += --custom-container upgradeable --
+
+ CIDL_Files {
+ Receiver.cidl
+ }
+
+ IDL_Files {
+ ReceiverE.idl
+ }
+
+ Source_Files {
+ ReceiverEC.cpp
+ ReceiverS.cpp
+ Receiver_svnt.cpp
+ }
+}
+
+
+project(HelloB_Receiver_DnC_Upgradeable_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += HelloB_Receiver_DnC_Upgradeable_svnt
+ sharedname = Receiver_DnC_Upgradeable_exec
+ libs += Receiver_DnC_Upgradeable_stub Receiver_DnC_Upgradeable_svnt Hello_Base_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_EXEC_Export -Wb,export_include=Receiver_exec_export.h
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Receiver_exec.cpp
+ }
+}
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.cpp b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.cpp
new file mode 100644
index 00000000000..cf63cc2140c
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.cpp
@@ -0,0 +1,185 @@
+//$Id$
+/*
+ * @file Receiver_exec.cpp
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ */
+
+#include "Receiver_exec.h"
+#include "CIAO_common.h"
+
+namespace CIDL_Receiver_Impl
+{
+ ReceiverSwap_exec_i::ReceiverSwap_exec_i ()
+ {
+ }
+
+ ReceiverSwap_exec_i::~ReceiverSwap_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverSwap_exec_i::incarnate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new Receiver_exec_i;
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverSwap_exec_i::etherealize ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new Receiver_exec_i;
+ }
+
+ Receiver_exec_i::Receiver_exec_i ()
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i ()
+ {
+ }
+
+ void
+ Receiver_exec_i::push_click_in (Hello::TimeOut *)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ //Get the message from the Sender first.
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Informed by the Sender \n"));
+
+ Hello::ReadMessage_var rev
+ = this->context_->get_connection_read_message
+ ();
+
+ if (CORBA::is_nil (rev.in ()))
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ CORBA::String_var str =
+ rev->get_message ();
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Got message from the server [%s] \n",
+ str.in () ));
+ }
+
+ // Operations from Components::SessionComponen
+ void
+ Receiver_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::set_session_context\n"));
+
+ this->context_ =
+ Receiver_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver_exec_i::ciao_preactivate\n"));
+ }
+
+ void
+ Receiver_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate\n"));
+ }
+
+ void
+ Receiver_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver_exec_i::ciao_postactivate\n"));
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_passivate\n"));
+ /*
+ CORBA::Object_var comp_object =
+ this->context_->get_CCM_object ();
+
+ Hello::Receiver_var receiver = Hello::Receiver::_narrow (comp_object.in ());
+
+ ::Components::ConsumerDescriptions_var cons_desc =
+ receiver->get_all_consumers ();
+
+ ::Components::FacetDescriptions_var facet_desc =
+ receiver->get_all_facets ();
+
+ CORBA::ULong cons_len = cons_desc->length ();
+ CORBA::ULong facet_len = facet_desc->length ();
+ for (CORBA::ULong i = 0; i < cons_len; ++i)
+ {
+ // ACE_DEBUG ((LM_DEBUG, "consumer name is %s\n", cons_desc[i]->name ()));
+ }
+ for (CORBA::ULong i = 0; i < facet_len; ++i)
+ {
+ // ACE_DEBUG ((LM_DEBUG, "facet name is %s\n", facet_desc[i]->name ()));
+ }
+ */
+ }
+
+ void
+ Receiver_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_remove\n"));
+ }
+
+
+ ReceiverHome_exec_i::ReceiverHome_exec_i ()
+ {
+ }
+
+ ReceiverHome_exec_i::~ReceiverHome_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ Components::EnterpriseComponent_ptr tmp;
+
+ ACE_NEW_THROW_EX (tmp,
+ ReceiverSwap_exec_i,
+ CORBA::NO_MEMORY ());
+
+ /*
+ ACE_NEW_THROW_EX (tmp,
+ Receiver_exec_i,
+ CORBA::NO_MEMORY ());
+ */
+
+ return tmp;
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void)
+ {
+ return new ReceiverHome_exec_i ();
+ }
+}
+
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.h b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.h
new file mode 100644
index 00000000000..d04a4092d0a
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec.h
@@ -0,0 +1,125 @@
+//$Id$:
+//============================================================
+/**
+ * @file Receiver_exec.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef RECEIVER_EXEC_H
+#define RECEIVER_EXEC_H
+
+#include "ciao/CIAO_SwapExecC.h"
+#include "ReceiverEC.h"
+#include "Receiver_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Receiver_Impl
+{
+
+ /**
+ * @class Receiver_exec_i
+ *
+ * Receiver executor implementation class.
+ */
+
+ class RECEIVER_EXEC_Export ReceiverSwap_exec_i :
+ public virtual CIAO::Swap_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ ReceiverSwap_exec_i ();
+
+ ~ReceiverSwap_exec_i ();
+
+ virtual ::Components::EnterpriseComponent_ptr
+ incarnate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::EnterpriseComponent_ptr
+ etherealize ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+
+ class RECEIVER_EXEC_Export Receiver_exec_i :
+ public virtual Receiver_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Receiver_exec_i ();
+
+ /// Default destructor.
+ ~Receiver_exec_i ();
+
+ // Operation which will be called upon receiving the timeout event.
+ virtual void
+ push_click_in (Hello::TimeOut *ev)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+ /// Copmponent specific context
+ Receiver_Exec_Context_var context_;
+ private:
+ CORBA::String_var message_;
+ };
+
+ /**
+ * @class ReceiverHome_exec_i
+ *
+ * Receiver home executor implementation class.
+ */
+ class RECEIVER_EXEC_Export ReceiverHome_exec_i :
+ public virtual ReceiverHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ ReceiverHome_exec_i ();
+
+ /// Default dtor.
+ ~ReceiverHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void);
+}
+
+#endif /* RECEIVER_EXEC_H */
+
+
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver_exec_export.h b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec_export.h
new file mode 100644
index 00000000000..639c089cb6b
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver_exec_export.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_EXEC
+// ------------------------------
+#ifndef RECEIVER_EXEC_EXPORT_H
+#define RECEIVER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_EXEC_HAS_DLL)
+# define RECEIVER_EXEC_HAS_DLL 1
+#endif /* ! RECEIVER_EXEC_HAS_DLL */
+
+#if defined (RECEIVER_EXEC_HAS_DLL) && (RECEIVER_EXEC_HAS_DLL == 1)
+# if defined (RECEIVER_EXEC_BUILD_DLL)
+# define RECEIVER_EXEC_Export ACE_Proper_Export_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_EXEC_BUILD_DLL */
+# define RECEIVER_EXEC_Export ACE_Proper_Import_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_EXEC_BUILD_DLL */
+#else /* RECEIVER_EXEC_HAS_DLL == 1 */
+# define RECEIVER_EXEC_Export
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_EXEC_HAS_DLL == 1 */
+
+// Set RECEIVER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_EXEC_NTRACE */
+
+#if (RECEIVER_EXEC_NTRACE == 1)
+# define RECEIVER_EXEC_TRACE(X)
+#else /* (RECEIVER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_EXEC_NTRACE == 1) */
+
+#endif /* RECEIVER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver_stub_export.h b/modules/CIAO/examples/Swapping/Receiver/Receiver_stub_export.h
new file mode 100644
index 00000000000..d102fa7a514
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver_stub_export.h
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_STUB
+// ------------------------------
+#ifndef RECEIVER_STUB_EXPORT_H
+#define RECEIVER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_STUB_HAS_DLL)
+# define RECEIVER_STUB_HAS_DLL 1
+#endif /* ! RECEIVER_STUB_HAS_DLL */
+
+#if defined (RECEIVER_STUB_HAS_DLL) && (RECEIVER_STUB_HAS_DLL == 1)
+# if defined (RECEIVER_STUB_BUILD_DLL)
+# define RECEIVER_STUB_Export ACE_Proper_Export_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_STUB_BUILD_DLL */
+# define RECEIVER_STUB_Export ACE_Proper_Import_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_STUB_BUILD_DLL */
+#else /* RECEIVER_STUB_HAS_DLL == 1 */
+# define RECEIVER_STUB_Export
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_STUB_HAS_DLL == 1 */
+
+// Set RECEIVER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_STUB_NTRACE */
+
+#if (RECEIVER_STUB_NTRACE == 1)
+# define RECEIVER_STUB_TRACE(X)
+#else /* (RECEIVER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_STUB_NTRACE == 1) */
+
+#endif /* RECEIVER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Receiver/Receiver_svnt_export.h b/modules/CIAO/examples/Swapping/Receiver/Receiver_svnt_export.h
new file mode 100644
index 00000000000..1c9eca2556d
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Receiver/Receiver_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_SVNT
+// ------------------------------
+#ifndef RECEIVER_SVNT_EXPORT_H
+#define RECEIVER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_SVNT_HAS_DLL)
+# define RECEIVER_SVNT_HAS_DLL 1
+#endif /* ! RECEIVER_SVNT_HAS_DLL */
+
+#if defined (RECEIVER_SVNT_HAS_DLL) && (RECEIVER_SVNT_HAS_DLL == 1)
+# if defined (RECEIVER_SVNT_BUILD_DLL)
+# define RECEIVER_SVNT_Export ACE_Proper_Export_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_SVNT_BUILD_DLL */
+# define RECEIVER_SVNT_Export ACE_Proper_Import_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_SVNT_BUILD_DLL */
+#else /* RECEIVER_SVNT_HAS_DLL == 1 */
+# define RECEIVER_SVNT_Export
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_SVNT_HAS_DLL == 1 */
+
+// Set RECEIVER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_SVNT_NTRACE */
+
+#if (RECEIVER_SVNT_NTRACE == 1)
+# define RECEIVER_SVNT_TRACE(X)
+#else /* (RECEIVER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_SVNT_NTRACE == 1) */
+
+#endif /* RECEIVER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender.cidl b/modules/CIAO/examples/Swapping/Sender/Sender.cidl
new file mode 100644
index 00000000000..8ce22a223b0
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Sender.idl"
+
+composition session Sender_Impl
+{
+ home executor SenderHome_Exec
+ {
+ implements Hello::SenderHome;
+ manages Sender_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender.idl b/modules/CIAO/examples/Swapping/Sender/Sender.idl
new file mode 100644
index 00000000000..e2c8ca64b0e
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender.idl
@@ -0,0 +1,32 @@
+//$Id$
+
+#ifndef CIAO_SENDER_IDL
+#define CIAO_SENDER_IDL
+
+
+#include "../Hello_Base/Hello_Base.idl"
+
+module Hello
+{
+ /* This is a Sender specific interface which will be used to get the
+ * process start.
+ */
+
+ interface trigger
+ {
+ void start ();
+ };
+
+ component Sender supports trigger
+ {
+ provides ReadMessage push_message;
+ publishes TimeOut click_out;
+ attribute string local_message;
+ };
+
+ home SenderHome manages Sender
+ {
+ };
+
+};
+#endif /*CIAO_SENDER_IDL*/
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender.mpc b/modules/CIAO/examples/Swapping/Sender/Sender.mpc
new file mode 100644
index 00000000000..d0d42c7c8bc
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender.mpc
@@ -0,0 +1,121 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Sender"
+
+project(HelloB_Sender_DnC_Upgradeable_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_Upgradeable_stub
+ sharedname = Sender_DnC_Upgradeable_stub
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export -Wb,stub_export_include=Sender_stub_export.h -Wb,skel_export_macro=SENDER_SVNT_Export -Wb,skel_export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_STUB_BUILD_DLL
+ libs += Hello_Base_DnC_Upgradeable_stub
+
+ IDL_Files {
+ Sender.idl
+ }
+
+ Source_Files {
+ SenderC.cpp
+
+ }
+}
+
+project(HelloB_Sender_DnC_Upgradeable_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Hello_Base_DnC_Upgradeable_svnt \
+ HelloB_Sender_DnC_Upgradeable_stub
+ sharedname = Sender_DnC_Upgradeable_svnt
+ libs += Sender_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_stub \
+ Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=SENDER_SVNT_Export -Wb,export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+ cidlflags -= --
+ cidlflags += --custom-container upgradeable --
+
+ CIDL_Files {
+ Sender.cidl
+ }
+
+ IDL_Files {
+ SenderE.idl << SenderE.idl
+ }
+
+ Source_Files {
+ SenderEC.cpp
+ SenderS.cpp
+ Sender_svnt.cpp
+ }
+}
+
+project(HelloB_Sender_DnC_Upgradeable_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += HelloB_Sender_DnC_Upgradeable_svnt
+ sharedname = Sender_DnC_Upgradeable_exec
+ libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt Hello_Base_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=SENDER_EXEC_Export -Wb,export_include=Sender_exec_export.h
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec.cpp
+ }
+}
+
+project(HelloB_Sender_DnC_Upgradeable_exec_1) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += HelloB_Sender_DnC_Upgradeable_svnt \
+ HelloB_Sender_DnC_Upgradeable_exec
+ sharedname = Sender_DnC_Upgradeable_exec_1
+ libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt \
+ Sender_DnC_Upgradeable_exec Hello_Base_DnC_Upgradeable_stub \
+ Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=SENDER_EXEC_1_Export -Wb,\
+ export_include=Sender_exec_1_export.h
+ dynamicflags = SENDER_EXEC_1_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec_1.cpp
+ }
+}
+
+project(HelloB_Sender_DnC_Upgradeable_exec_2) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += HelloB_Sender_DnC_Upgradeable_svnt \
+ HelloB_Sender_DnC_Upgradeable_exec
+ sharedname = Sender_DnC_Upgradeable_exec_2
+ libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt \
+ Sender_DnC_Upgradeable_exec Hello_Base_DnC_Upgradeable_stub \
+ Hello_Base_DnC_Upgradeable_svnt
+
+ idlflags += -Wb,export_macro=SENDER_EXEC_2_Export -Wb,\
+ export_include=Sender_exec_2_export.h
+ dynamicflags = SENDER_EXEC_2_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec_2.cpp
+ }
+}
+
+project (Hello_DnC_Upgradeable_Starter) : ciao_client_dnc, valuetype{
+ avoids += ace_for_tao
+ exename = Upgradeable_starter
+ after += HelloB_Sender_DnC_Upgradeable_stub
+ libs += Sender_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ starter.cpp
+ }
+}
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec.cpp b/modules/CIAO/examples/Swapping/Sender/Sender_exec.cpp
new file mode 100644
index 00000000000..1f0cba9a91d
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec.cpp
@@ -0,0 +1,217 @@
+//$Id$
+
+#include "Sender_exec.h"
+
+const char* first_exe_dll_name = "Sender_DnC_exec_1";
+const char* first_exe_entrypt = "createSenderExec_Impl";
+const char* second_exe_dll_name = "Sender_DnC_exec_2";
+const char* second_exe_entrypt = "createSenderExec_Impl";
+
+namespace CIDL_Sender_Impl
+{
+ char*
+ Message_Impl::get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender sending out message. \n"));
+ return CORBA::string_dup (component_.message_.in ());
+ }
+
+ Sender_exec_i::~Sender_exec_i ()
+ {
+ }
+
+ void
+ Sender_exec_i::local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ message_ = CORBA::string_dup (local_message);
+ }
+
+ char *
+ Sender_exec_i::local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CORBA::string_dup(message_. in());
+ }
+
+ Hello::CCM_ReadMessage_ptr
+ Sender_exec_i::get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec.i::get_push_message called\n "));
+ return ( new Message_Impl (*this) );
+ }
+
+ void
+ Sender_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ Hello::TimeOut_var event = new OBV_Hello::TimeOut;
+ ACE_DEBUG ((LM_DEBUG, "Sender initiates the process.\n"));
+ this->context_->push_click_out (event);
+ }
+
+ void
+ Sender_exec_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::set_session_context\n"));
+
+ this->context_ =
+ Sender_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ciao_preactivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ccm_activate\n"));
+ }
+
+ void
+ Sender_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_i::ciao_postactivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_passivate\n"));
+ }
+
+ void
+ Sender_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_remove\n"));
+ }
+
+
+ SenderHome_exec_i::SenderHome_exec_i ()
+ {
+ }
+
+ SenderHome_exec_i::~SenderHome_exec_i ()
+ {
+ }
+
+ SenderSwap_exec_i::SenderSwap_exec_i ()
+ : count_ (0)
+ {
+ }
+
+ SenderSwap_exec_i::~SenderSwap_exec_i ()
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ SenderSwap_exec_i::incarnate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ExecFactory first_exec_creator = 0;
+ ExecFactory second_exec_creator = 0;
+ ACE_DLL first_dll, second_dll;
+
+ if (first_dll.open (first_exe_dll_name,
+ ACE_DEFAULT_SHLIB_MODE, 0) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Could not open the DLL %s\n", first_exe_dll_name));
+ return 0;
+ }
+
+ if (second_dll.open (second_exe_dll_name,
+ ACE_DEFAULT_SHLIB_MODE, 0) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Could not open the DLL %s\n",
+ second_exe_dll_name));
+ return 0;
+ }
+
+ if (first_exe_entrypt == 0 || second_exe_entrypt == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "NIL entry points\n"));
+ return 0;
+ }
+
+ void *void_ptr = 0;
+ ptrdiff_t tmp = 0;
+
+ if (0 == this->count_)
+ {
+ // Cast the void* to non-pointer type first - it's not legal to
+ // cast a pointer-to-object directly to a pointer-to-function.
+ void_ptr = first_dll.symbol (first_exe_entrypt);
+ tmp = reinterpret_cast<ptrdiff_t> (void_ptr);
+ first_exec_creator = reinterpret_cast<ExecFactory> (tmp);
+
+ Components::EnterpriseComponent_var first_executor =
+ first_exec_creator (this);
+ count_++;
+ return first_executor._retn ();
+ }
+ else if (-1 == count_)
+ {
+ // Cast the void* to non-pointer type first - it's not legal to
+ // cast a pointer-to-object directly to a pointer-to-function.
+ void_ptr = second_dll.symbol (second_exe_entrypt);
+ tmp = reinterpret_cast<ptrdiff_t> (void_ptr);
+ second_exec_creator = reinterpret_cast<ExecFactory> (tmp);
+
+ Components::EnterpriseComponent_var second_executor =
+ second_exec_creator (this);
+ --count_;
+ return second_executor._retn ();
+ }
+
+ return 0;
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ SenderSwap_exec_i::etherealize ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return 0;
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ SenderHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "%P|%t) creating SenderHome \n"));
+ return new SenderSwap_exec_i;
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void)
+ {
+ return new SenderHome_exec_i ();
+ }
+}
+
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec.h
new file mode 100644
index 00000000000..add761ed988
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec.h
@@ -0,0 +1,193 @@
+//$Id$
+//============================================================
+/**
+ * @file Sender_exec.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef SENDER_EXEC_H
+#define SENDER_EXEC_H
+
+#include "ciao/CIAO_SwapExecC.h"
+#include "SenderEC.h"
+#include "Sender_exec_export.h"
+#include "tao/LocalObject.h"
+#include "ace/DLL.h"
+#include "ciao/CCM_EventsC.h"
+
+namespace CIDL_Sender_Impl
+{
+ class SENDER_EXEC_Export Sender_exec_i :
+ public virtual Sender_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Sender_exec_i ()
+ : message_(CORBA::string_dup ("Default Message"))
+ {
+ }
+
+ /// Secondary construction.
+ Sender_exec_i (const char* local_message)
+ : message_ (CORBA::string_dup (local_message))
+ {
+ }
+
+ /// Default destructor.
+ virtual ~Sender_exec_i ();
+
+ /// Operation to set the value of the attribute
+ virtual void local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to get the value of the attribute
+ virtual char * local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /* Operations for obtaining the interface reference. */
+ /* This method will be used in the assembly face so the
+ * ObjRef of this read_message facet will be sent to the
+ * client side(receptacle).
+ */
+ // Note: You can specify the return type as ::Hello::CCM_message *
+ virtual Hello::CCM_ReadMessage_ptr
+ get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ // Operation inside of the trigger interface.
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+ /// Copmponent specific context
+ Sender_Exec_Context_var context_;
+
+ private:
+ CORBA::String_var message_;
+
+ friend class Message_Impl;
+ };
+
+
+ //
+ //
+ //
+ class Message_Impl : public virtual Hello::CCM_ReadMessage,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Message_Impl (Sender_exec_i& component)
+ : component_ (component)
+ {
+ }
+
+ virtual char *
+ get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ Sender_exec_i& component_;
+ };
+
+ class SenderSwap_exec_i;
+
+
+ typedef ::Components::EnterpriseComponent_ptr (*ExecFactory) (SenderSwap_exec_i *);
+
+ /**
+ * @class Sender_exec_i
+ *
+ * Sender executor implementation class.
+ */
+
+ class SENDER_EXEC_Export SenderSwap_exec_i :
+ public virtual CIAO::Swap_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ SenderSwap_exec_i ();
+
+ ~SenderSwap_exec_i ();
+
+ virtual ::Components::EnterpriseComponent_ptr
+ incarnate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Components::EnterpriseComponent_ptr
+ etherealize ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ void consumers (::Components::ConsumerDescriptions *p)
+ {
+ this->consumers_ = p;
+ }
+
+ ::Components::ConsumerDescriptions *consumers (void)
+ {
+ return this->consumers_._retn ();
+ }
+
+ protected:
+ int count_;
+
+ ::Components::ConsumerDescriptions_var consumers_;
+ };
+
+ class SENDER_EXEC_Export SenderHome_exec_i :
+ public virtual SenderHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ SenderHome_exec_i ();
+
+ /// Default dtor.
+ virtual ~SenderHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void);
+}
+
+#endif /* SENDER_EXEC_H */
+
+
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp
new file mode 100644
index 00000000000..f98e5390df3
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp
@@ -0,0 +1,157 @@
+//$Id$
+
+#include "Sender_exec_1.h"
+#include "Sender_exec.h"
+#include "ciao/Servant_Activator.h"
+
+namespace CIDL_Sender_Impl
+{
+ char*
+ Message_Impl_1::get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender 1 sending out message. \n"));
+ return CORBA::string_dup (component_.message_.in ());
+ }
+
+ Sender_exec_1_i::~Sender_exec_1_i ()
+ {
+ }
+
+ void
+ Sender_exec_1_i::local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ message_ = CORBA::string_dup (local_message);
+ }
+
+ char *
+ Sender_exec_1_i::local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CORBA::string_dup(message_.in ());
+ }
+
+ Hello::CCM_ReadMessage_ptr
+ Sender_exec_1_i::get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_1_i::get_push_message called\n"));
+ return ( new Message_Impl_1 (*this) );
+ }
+
+ void
+ Sender_exec_1_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ Hello::TimeOut_var event = new OBV_Hello::TimeOut;
+ ACE_DEBUG ((LM_DEBUG, "Sender 1 initiates the process.\n"));
+ this->context_->push_click_out (event);
+ }
+
+ void
+ Sender_exec_1_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::set_session_context\n"));
+
+ this->context_ =
+ Sender_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_1_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_1_i::ciao_preactivate\n"));
+ }
+
+ void
+ Sender_exec_1_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_1_i::ccm_activate\n"));
+
+ CORBA::Object_var o =
+ this->context_->get_CCM_object ();
+ }
+
+ void
+ Sender_exec_1_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_1_i::ciao_postactivate\n"));
+ }
+
+ void
+ Sender_exec_1_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::ccm_passivate\n"));
+
+ Components::ConsumerDescriptions_var retval =
+ this->context_->get_registered_consumers ("click_out");
+
+ this->base_exec_->consumers (retval._retn ());
+
+ CORBA::Object_var o =
+ this->context_->get_CCM_object ();
+
+ Hello::Sender_var sender =
+ Hello::Sender::_narrow (o.in ());
+
+ Components::FacetDescriptions_var facets =
+ sender->get_all_facets ();
+
+ const CORBA::ULong facet_len = facets->length ();
+ CORBA::ULong i = 0;
+
+ for (i = 0; i < facet_len; ++i)
+ {
+ this->context_->remove_facet (facets[i]->facet_ref ());
+ /*
+ this->context_->update_port_activator (oid);
+
+ this->context_->deactivate_facet (oid);
+ */
+ }
+
+ /*
+ this->context_->deactivate_facet ("Hello_Sender_push_message");
+ this->context_->update_port_activator ("Hello_Sender_push_message");
+ */
+ }
+
+ void
+ Sender_exec_1_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::ccm_remove\n"));
+ }
+
+ extern "C" SENDER_EXEC_1_Export ::Components::EnterpriseComponent_ptr
+ createSenderExec_Impl (SenderSwap_exec_i *p)
+ {
+ Sender_exec_1_i *tmp = new Sender_exec_1_i ();
+
+ tmp->swap_exec (p);
+
+ return tmp;
+ }
+}
+
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.h
new file mode 100644
index 00000000000..352ea6ec1b4
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1.h
@@ -0,0 +1,130 @@
+//$Id$
+//============================================================
+/**
+ * @file Sender_exec_1.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef SENDER_EXEC_1_H
+#define SENDER_EXEC_1_H
+
+#include "ciao/CIAO_SwapExecC.h"
+#include "SenderEC.h"
+#include "Sender_exec_1_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Sender_Impl
+{
+ class SenderSwap_exec_i;
+
+
+ class SENDER_EXEC_1_Export Sender_exec_1_i :
+ public virtual Sender_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Sender_exec_1_i () {};
+
+ /// Secondary construction.
+ Sender_exec_1_i (const char* local_message,
+ SenderSwap_exec_i *e)
+ : message_ (CORBA::string_dup (local_message))
+ , base_exec_ (e)
+ {
+ }
+
+ /// Default destructor.
+ virtual ~Sender_exec_1_i ();
+
+ /// Operation to set the value of the attribute
+ virtual void local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to get the value of the attribute
+ virtual char * local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /* Operations for obtaining the interface reference. */
+ /* This method will be used in the assembly face so the
+ * ObjRef of this read_message facet will be sent to the
+ * client side(receptacle).
+ */
+ // Note: You can specify the return type as ::Hello::CCM_message *
+ virtual Hello::CCM_ReadMessage_ptr
+ get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ // Operation inside of the trigger interface.
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void swap_exec (SenderSwap_exec_i *p)
+ {
+ this->base_exec_ = p;
+ }
+
+ protected:
+ /// Copmponent specific context
+ Sender_Exec_Context_var context_;
+
+ private:
+ CORBA::String_var message_;
+
+ // my incarnator
+ SenderSwap_exec_i *base_exec_;
+
+ friend class Message_Impl_1;
+ };
+
+ class Message_Impl_1 : public virtual Hello::CCM_ReadMessage,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Message_Impl_1 (Sender_exec_1_i& component)
+ : component_ (component)
+ {
+ }
+
+ virtual char *
+ get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ Sender_exec_1_i& component_;
+ };
+
+ extern "C" SENDER_EXEC_1_Export ::Components::EnterpriseComponent_ptr
+ createSenderExec_Impl (SenderSwap_exec_i *p);
+}
+
+#endif /* SENDER_EXEC_H */
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h
new file mode 100644
index 00000000000..ed661c8ae77
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC_1
+// ------------------------------
+#ifndef SENDER_EXEC_1_EXPORT_H
+#define SENDER_EXEC_1_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_1_HAS_DLL)
+# define SENDER_EXEC_1_HAS_DLL 1
+#endif /* ! SENDER_EXEC_1_HAS_DLL */
+
+#if defined (SENDER_EXEC_1_HAS_DLL) && (SENDER_EXEC_1_HAS_DLL == 1)
+# if defined (SENDER_EXEC_1_BUILD_DLL)
+# define SENDER_EXEC_1_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_1_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_1_BUILD_DLL */
+# define SENDER_EXEC_1_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_1_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_1_BUILD_DLL */
+#else /* SENDER_EXEC_1_HAS_DLL == 1 */
+# define SENDER_EXEC_1_Export
+# define SENDER_EXEC_1_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_1_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_1_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_1_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_1_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_1_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_1_NTRACE */
+
+#if (SENDER_EXEC_1_NTRACE == 1)
+# define SENDER_EXEC_1_TRACE(X)
+#else /* (SENDER_EXEC_1_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_1_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_1_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_1_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp
new file mode 100644
index 00000000000..6b273012098
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp
@@ -0,0 +1,142 @@
+//$Id$
+
+#include "Sender_exec_2.h"
+#include "Sender_exec.h"
+
+namespace CIDL_Sender_Impl
+{
+ char*
+ Message_Impl_2::get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender 2 sending out message. \n"));
+ return CORBA::string_dup (component_.message_.in ());
+ }
+
+ Sender_exec_2_i::~Sender_exec_2_i ()
+ {
+ }
+
+ void
+ Sender_exec_2_i::local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ message_ = CORBA::string_dup (local_message);
+ }
+
+ char *
+ Sender_exec_2_i::local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return CORBA::string_dup(message_.in ());
+ }
+
+ Hello::CCM_ReadMessage_ptr
+ Sender_exec_2_i::get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_2_i::get_push_message called\n"));
+ return ( new Message_Impl_2 (*this) );
+ }
+
+ void
+ Sender_exec_2_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ Hello::TimeOut_var event = new OBV_Hello::TimeOut;
+ ACE_DEBUG ((LM_DEBUG, "Sender 2 initiates the process.\n"));
+ this->context_->push_click_out (event);
+ }
+
+ void
+ Sender_exec_2_i::set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::set_session_context\n"));
+
+ this->context_ =
+ Sender_Exec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_2_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_2_i::ciao_preactivate\n"));
+ }
+
+ void
+ Sender_exec_2_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_2_i::ccm_activate\n"));
+
+ ::Components::ConsumerDescriptions_var c =
+ this->base_exec_->consumers ();
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ throw CORBA::INTERNAL ();
+ }
+
+ CORBA::Object_var o =
+ this->context_->get_CCM_object ();
+
+ Hello::Sender_var sender =
+ Hello::Sender::_narrow (o.in ());
+
+ for (CORBA::ULong cnt = 0; cnt != c->length (); ++cnt)
+ {
+ sender->subscribe ("click_out",
+ (*c)[cnt]->consumer ());
+ }
+ }
+
+ void
+ Sender_exec_2_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Sender_exec_2_i::ciao_postactivate\n"));
+ }
+
+ void
+ Sender_exec_2_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::ccm_passivate\n"));
+ }
+
+ void
+ Sender_exec_2_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+ {
+ ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::ccm_remove\n"));
+ }
+
+ extern "C" SENDER_EXEC_2_Export ::Components::EnterpriseComponent_ptr
+ createSenderExec_Impl (SenderSwap_exec_i *p)
+ {
+ Sender_exec_2_i *tmp =
+ new Sender_exec_2_i ();
+
+ tmp->swap_exec (p);
+
+ return tmp;
+ }
+}
+
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.h
new file mode 100644
index 00000000000..9b548cf6626
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2.h
@@ -0,0 +1,131 @@
+//$Id$
+//============================================================
+/**
+ * @file Sender_exec_2.h
+ *
+ * Header file for the Executor implementation.
+ */
+//============================================================
+
+#ifndef SENDER_EXEC_2_H
+#define SENDER_EXEC_2_H
+
+#include "ciao/CIAO_SwapExecC.h"
+#include "SenderEC.h"
+#include "Sender_exec_2_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Sender_Impl
+{
+ class SenderSwap_exec_i;
+
+ class SENDER_EXEC_2_Export Sender_exec_2_i :
+ public virtual Sender_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ Sender_exec_2_i ()
+ : message_(CORBA::string_dup ("Default Message"))
+ {
+ }
+
+ /// Secondary construction.
+ Sender_exec_2_i (const char* local_message,
+ SenderSwap_exec_i *e)
+ : message_ (CORBA::string_dup (local_message))
+ , base_exec_ (e)
+ {
+ }
+
+ /// Default destructor.
+ virtual ~Sender_exec_2_i ();
+
+ /// Operation to set the value of the attribute
+ virtual void local_message (const char * local_message)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /// Operation to get the value of the attribute
+ virtual char * local_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ /* Operations for obtaining the interface reference. */
+ /* This method will be used in the assembly face so the
+ * ObjRef of this read_message facet will be sent to the
+ * client side(receptacle).
+ */
+ // Note: You can specify the return type as ::Hello::CCM_message *
+ virtual Hello::CCM_ReadMessage_ptr
+ get_push_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ // Operation inside of the trigger interface.
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ void swap_exec (SenderSwap_exec_i *p)
+ {
+ this->base_exec_ = p;
+ }
+
+ protected:
+ /// Copmponent specific context
+ Sender_Exec_Context_var context_;
+
+ private:
+ CORBA::String_var message_;
+
+ SenderSwap_exec_i *base_exec_;
+
+ friend class Message_Impl_2;
+ };
+
+ class Message_Impl_2 : public virtual Hello::CCM_ReadMessage,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Message_Impl_2 (Sender_exec_2_i& component)
+ : component_ (component)
+ {
+ }
+
+ virtual char *
+ get_message ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ Sender_exec_2_i& component_;
+ };
+
+ extern "C" SENDER_EXEC_2_Export ::Components::EnterpriseComponent_ptr
+ createSenderExec_Impl (SenderSwap_exec_i *p);
+}
+
+#endif /* SENDER_EXEC_H */
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h
new file mode 100644
index 00000000000..c03b5754ca7
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC_2
+// ------------------------------
+#ifndef SENDER_EXEC_2_EXPORT_H
+#define SENDER_EXEC_2_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_2_HAS_DLL)
+# define SENDER_EXEC_2_HAS_DLL 1
+#endif /* ! SENDER_EXEC_2_HAS_DLL */
+
+#if defined (SENDER_EXEC_2_HAS_DLL) && (SENDER_EXEC_2_HAS_DLL == 1)
+# if defined (SENDER_EXEC_2_BUILD_DLL)
+# define SENDER_EXEC_2_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_2_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_2_BUILD_DLL */
+# define SENDER_EXEC_2_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_2_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_2_BUILD_DLL */
+#else /* SENDER_EXEC_2_HAS_DLL == 1 */
+# define SENDER_EXEC_2_Export
+# define SENDER_EXEC_2_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_2_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_2_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_2_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_2_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_2_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_2_NTRACE */
+
+#if (SENDER_EXEC_2_NTRACE == 1)
+# define SENDER_EXEC_2_TRACE(X)
+#else /* (SENDER_EXEC_2_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_2_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_2_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_2_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_exec_export.h b/modules/CIAO/examples/Swapping/Sender/Sender_exec_export.h
new file mode 100644
index 00000000000..dbaa7ea15bc
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC
+// ------------------------------
+#ifndef SENDER_EXEC_EXPORT_H
+#define SENDER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_HAS_DLL)
+# define SENDER_EXEC_HAS_DLL 1
+#endif /* ! SENDER_EXEC_HAS_DLL */
+
+#if defined (SENDER_EXEC_HAS_DLL) && (SENDER_EXEC_HAS_DLL == 1)
+# if defined (SENDER_EXEC_BUILD_DLL)
+# define SENDER_EXEC_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_BUILD_DLL */
+# define SENDER_EXEC_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_BUILD_DLL */
+#else /* SENDER_EXEC_HAS_DLL == 1 */
+# define SENDER_EXEC_Export
+# define SENDER_EXEC_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_NTRACE */
+
+#if (SENDER_EXEC_NTRACE == 1)
+# define SENDER_EXEC_TRACE(X)
+#else /* (SENDER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_stub_export.h b/modules/CIAO/examples/Swapping/Sender/Sender_stub_export.h
new file mode 100644
index 00000000000..28c5d3131d0
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_STUB
+// ------------------------------
+#ifndef SENDER_STUB_EXPORT_H
+#define SENDER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_STUB_HAS_DLL)
+# define SENDER_STUB_HAS_DLL 1
+#endif /* ! SENDER_STUB_HAS_DLL */
+
+#if defined (SENDER_STUB_HAS_DLL) && (SENDER_STUB_HAS_DLL == 1)
+# if defined (SENDER_STUB_BUILD_DLL)
+# define SENDER_STUB_Export ACE_Proper_Export_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_STUB_BUILD_DLL */
+# define SENDER_STUB_Export ACE_Proper_Import_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_STUB_BUILD_DLL */
+#else /* SENDER_STUB_HAS_DLL == 1 */
+# define SENDER_STUB_Export
+# define SENDER_STUB_SINGLETON_DECLARATION(T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_STUB_HAS_DLL == 1 */
+
+// Set SENDER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_STUB_NTRACE */
+
+#if (SENDER_STUB_NTRACE == 1)
+# define SENDER_STUB_TRACE(X)
+#else /* (SENDER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_STUB_NTRACE == 1) */
+
+#endif /* SENDER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/Sender_svnt_export.h b/modules/CIAO/examples/Swapping/Sender/Sender_svnt_export.h
new file mode 100644
index 00000000000..53236a883f2
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/Sender_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_SVNT
+// ------------------------------
+#ifndef SENDER_SVNT_EXPORT_H
+#define SENDER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_SVNT_HAS_DLL)
+# define SENDER_SVNT_HAS_DLL 1
+#endif /* ! SENDER_SVNT_HAS_DLL */
+
+#if defined (SENDER_SVNT_HAS_DLL) && (SENDER_SVNT_HAS_DLL == 1)
+# if defined (SENDER_SVNT_BUILD_DLL)
+# define SENDER_SVNT_Export ACE_Proper_Export_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_SVNT_BUILD_DLL */
+# define SENDER_SVNT_Export ACE_Proper_Import_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_SVNT_BUILD_DLL */
+#else /* SENDER_SVNT_HAS_DLL == 1 */
+# define SENDER_SVNT_Export
+# define SENDER_SVNT_SINGLETON_DECLARATION(T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_SVNT_HAS_DLL == 1 */
+
+// Set SENDER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_SVNT_NTRACE */
+
+#if (SENDER_SVNT_NTRACE == 1)
+# define SENDER_SVNT_TRACE(X)
+#else /* (SENDER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_SVNT_NTRACE == 1) */
+
+#endif /* SENDER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/examples/Swapping/Sender/starter.cpp b/modules/CIAO/examples/Swapping/Sender/starter.cpp
new file mode 100644
index 00000000000..92718744cd5
--- /dev/null
+++ b/modules/CIAO/examples/Swapping/Sender/starter.cpp
@@ -0,0 +1,97 @@
+//$Id$:
+
+#include "SenderC.h"
+#include "ace/Get_Opt.h"
+
+//IOR file of the Sender
+const char * ior = 0;
+const char * message = "starters message";
+
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:m");
+ int c = 0;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case 'm':
+ message = get_opts.opt_arg ();
+ break;
+
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-k <Sender IOR> (default is file://sender.ior)\n",
+ "-m <Message> (default is starters message)\n"
+ "\n",
+ argv [0]),
+ -1);
+ break;
+ }
+ }
+
+ if (ior == 0)
+ {
+ ior = "file://sender.ior";
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv,
+ "");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ CORBA::Object_var obj =
+ orb->string_to_object (ior);
+
+ Hello::Sender_var sender = Hello::Sender::_narrow (obj.in ());
+
+ if (CORBA::is_nil (sender.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire Sender's objref\n"),
+ -1);
+ }
+
+ char *return_message;
+ sender->local_message (message);
+ return_message = sender->local_message ();
+ ACE_DEBUG ((LM_DEBUG, "the message is %s\n", return_message));
+
+ sender->start ();
+ sender->remove ();
+
+ ACE_DEBUG ((LM_DEBUG, "creating one more servant here\n"));
+ sender->start ();
+ //sender->remove ();
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Unknown exception \n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark.idl b/modules/CIAO/performance-tests/Benchmark/Benchmark.idl
new file mode 100644
index 00000000000..d363628c891
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Benchmark.idl
@@ -0,0 +1,48 @@
+// $Id$
+//=============================================================================
+/**
+ * @file Benchmark.idl
+ *
+ * Definition of test interfaces used in the Benchmark module.
+ *
+ * @author Diego, Arvind <arvindk@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_BENCHMARK_IDL
+#define CIAO_BENCHMARK_IDL
+
+
+module Benchmark
+{
+
+ /**
+ * @interface RoundTrip
+ *
+ * This Latency test provides operations to measure the round-trip
+ * latency of the ORB. The interface is same as that of
+ * $TAO_ROOT/performance-tests/Latency/Single_Threaded
+ */
+
+ /// Measure roundtrip delay
+ interface LatencyTest
+ {
+ /// A simple method to measure roundtrip delays
+ long makeCall (in long send_time);
+
+ };
+
+ /**
+ * @interface Controller
+ *
+ * This interface is used to start the tests.
+ */
+ interface Controller
+ {
+ /// Start the test
+ void start ();
+ };
+
+};
+
+#endif /*CIAO_BENCHMARK_IDL*/
diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc b/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc
new file mode 100644
index 00000000000..59cb34c414d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Benchmark.mpc
@@ -0,0 +1,49 @@
+// $Id$
+
+project(Benchmark_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ sharedname = Benchmark_stub
+ idlflags += -Wb,stub_export_macro=BENCHMARK_STUB_Export -Wb,stub_export_include=Benchmark_stub_export.h -Wb,skel_export_macro=BENCHMARK_SVNT_Export -Wb,skel_export_include=Benchmark_svnt_export.h
+ dynamicflags = BENCHMARK_STUB_BUILD_DLL
+
+ IDL_Files {
+ Benchmark.idl
+ }
+
+ Source_Files {
+ BenchmarkC.cpp
+ }
+}
+
+project(Benchmark_svnt) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_stub
+ sharedname = Benchmark_svnt
+ libs += Benchmark_stub
+
+ idlflags += -Wb,export_macro=BENCHMARK_SVNT_Export -Wb,export_include=Benchmark_svnt_export.h
+ dynamicflags = BENCHMARK_SVNT_BUILD_DLL
+ IDL_Files {
+ }
+
+ Source_Files {
+ BenchmarkS.cpp
+ }
+}
+
+project (*server) : taoserver, strategies,ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_svnt
+ libs += Benchmark_svnt Benchmark_stub
+
+ Source_Files {
+ server.cpp
+ LatencyTest.cpp
+ BenchmarkEC.cpp
+ BenchmarkES.cpp
+ }
+
+ IDL_Files {
+ BenchmarkE.idl
+ }
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/BenchmarkE.idl b/modules/CIAO/performance-tests/Benchmark/BenchmarkE.idl
new file mode 100644
index 00000000000..1886b02c12a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/BenchmarkE.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file BenchmarkE.idl
+ *
+ * @author Diego, Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_BENCHMARKE_IDL
+#define CIAO_BENCHMARKE_IDL
+
+#include "Benchmark.idl"
+
+module Benchmark
+{
+
+ /**
+ * @interface CCM_RoundTrip
+ *
+ * Executor interface mapping for provides interfaces.
+ *
+ */
+ local interface CCM_RoundTrip
+ {
+ long makeCall(in long data);
+ };
+
+
+};
+
+#endif /* CIAO_BENCHMARKE_IDL */
diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark_stub_export.h b/modules/CIAO/performance-tests/Benchmark/Benchmark_stub_export.h
new file mode 100644
index 00000000000..d522c90f830
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Benchmark_stub_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BENCHMARK_STUB
+// ------------------------------
+#ifndef BENCHMARK_STUB_EXPORT_H
+#define BENCHMARK_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BENCHMARK_STUB_HAS_DLL)
+# define BENCHMARK_STUB_HAS_DLL 1
+#endif /* ! BENCHMARK_STUB_HAS_DLL */
+
+#if defined (BENCHMARK_STUB_HAS_DLL) && (BENCHMARK_STUB_HAS_DLL == 1)
+# if defined (BENCHMARK_STUB_BUILD_DLL)
+# define BENCHMARK_STUB_Export ACE_Proper_Export_Flag
+# define BENCHMARK_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BENCHMARK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BENCHMARK_STUB_BUILD_DLL */
+# define BENCHMARK_STUB_Export ACE_Proper_Import_Flag
+# define BENCHMARK_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BENCHMARK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BENCHMARK_STUB_BUILD_DLL */
+#else /* BENCHMARK_STUB_HAS_DLL == 1 */
+# define BENCHMARK_STUB_Export
+# define BENCHMARK_STUB_SINGLETON_DECLARATION(T)
+# define BENCHMARK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BENCHMARK_STUB_HAS_DLL == 1 */
+
+// Set BENCHMARK_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BENCHMARK_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BENCHMARK_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BENCHMARK_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BENCHMARK_STUB_NTRACE */
+
+#if (BENCHMARK_STUB_NTRACE == 1)
+# define BENCHMARK_STUB_TRACE(X)
+#else /* (BENCHMARK_STUB_NTRACE == 1) */
+# define BENCHMARK_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (BENCHMARK_STUB_NTRACE == 1) */
+
+#endif /* BENCHMARK_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/Benchmark_svnt_export.h b/modules/CIAO/performance-tests/Benchmark/Benchmark_svnt_export.h
new file mode 100644
index 00000000000..8b2ab3b803a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Benchmark_svnt_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BENCHMARK_SVNT
+// ------------------------------
+#ifndef BENCHMARK_SVNT_EXPORT_H
+#define BENCHMARK_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BENCHMARK_SVNT_HAS_DLL)
+# define BENCHMARK_SVNT_HAS_DLL 1
+#endif /* ! BENCHMARK_SVNT_HAS_DLL */
+
+#if defined (BENCHMARK_SVNT_HAS_DLL) && (BENCHMARK_SVNT_HAS_DLL == 1)
+# if defined (BENCHMARK_SVNT_BUILD_DLL)
+# define BENCHMARK_SVNT_Export ACE_Proper_Export_Flag
+# define BENCHMARK_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BENCHMARK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BENCHMARK_SVNT_BUILD_DLL */
+# define BENCHMARK_SVNT_Export ACE_Proper_Import_Flag
+# define BENCHMARK_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BENCHMARK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BENCHMARK_SVNT_BUILD_DLL */
+#else /* BENCHMARK_SVNT_HAS_DLL == 1 */
+# define BENCHMARK_SVNT_Export
+# define BENCHMARK_SVNT_SINGLETON_DECLARATION(T)
+# define BENCHMARK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BENCHMARK_SVNT_HAS_DLL == 1 */
+
+// Set BENCHMARK_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BENCHMARK_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BENCHMARK_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BENCHMARK_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BENCHMARK_SVNT_NTRACE */
+
+#if (BENCHMARK_SVNT_NTRACE == 1)
+# define BENCHMARK_SVNT_TRACE(X)
+#else /* (BENCHMARK_SVNT_NTRACE == 1) */
+# define BENCHMARK_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (BENCHMARK_SVNT_NTRACE == 1) */
+
+#endif /* BENCHMARK_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp b/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp
new file mode 100644
index 00000000000..443506298bb
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/LatencyTest.cpp
@@ -0,0 +1,24 @@
+//
+// $Id$
+//
+#include "LatencyTest.h"
+
+LatencyTest::LatencyTest (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+
+CORBA::Long
+LatencyTest::makeCall (CORBA::Long send_time)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return send_time;
+}
+
+void
+LatencyTest::shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0);
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/LatencyTest.h b/modules/CIAO/performance-tests/Benchmark/LatencyTest.h
new file mode 100644
index 00000000000..7bd3de194bf
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/LatencyTest.h
@@ -0,0 +1,33 @@
+//
+// $Id$
+//
+
+#ifndef LATENCYTEST_H
+#define LATENCYTEST_H
+#include /**/ "ace/pre.h"
+
+#include "BenchmarkS.h"
+
+/// Implement the Test::LatencyTest interface
+class LatencyTest
+: public virtual POA_Benchmark::LatencyTest
+{
+ public:
+ /// Constructor
+ LatencyTest (CORBA::ORB_ptr orb);
+
+ // = The skeleton methods
+ virtual CORBA::Long makeCall (CORBA::Long send_time)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ /// Use an ORB reference to conver strings to objects and shutdown
+ /// the application.
+ CORBA::ORB_var orb_;
+};
+
+#include /**/ "ace/post.h"
+#endif /* LATENCYTEST_H */
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp
new file mode 100644
index 00000000000..a6d8d9d8202
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.cpp
@@ -0,0 +1,30 @@
+//
+// $Id$
+//
+
+#include "Client_Task.h"
+
+Client_Task::Client_Task (Benchmark::RoundTripClient_ptr roundtrip)
+ : roundtrip_(Benchmark::RoundTripClient::_duplicate(roundtrip))
+{
+}
+
+int
+Client_Task::svc (void)
+{
+ //Creat the Controller
+ Benchmark::Controller_var controller = this->roundtrip_->provide_controller();
+
+ //check if controller is non nil
+ if (CORBA::is_nil (controller.in ()))
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil Benchmark::Controller reference \n"),
+ 1);
+
+ ACE_DEBUG ((LM_DEBUG, "Sending Trigger\n"));
+
+ //send out the trigger message
+ controller->start();
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h
new file mode 100644
index 00000000000..e3330a76307
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Client_Task.h
@@ -0,0 +1,29 @@
+//
+// $Id$
+//
+
+#ifndef CLIENT_TASK_H
+#define CLIENT_TASK_H
+#include /**/ "ace/pre.h"
+
+#include "RoundTripClientC.h"
+#include "ace/Task.h"
+
+/// Implement the Test::Client_Task interface
+class Client_Task : public ACE_Task_Base
+{
+public:
+ /// Constructor
+ Client_Task (Benchmark::RoundTripClient_ptr roundtrip);
+
+ /// The service method
+ virtual int svc (void);
+
+private:
+
+ /// The object reference used for this test
+ Benchmark::RoundTripClient_var roundtrip_;
+};
+
+#include /**/ "ace/post.h"
+#endif /* CLIENT_TASK_H */
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc
new file mode 100644
index 00000000000..40927889016
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/Multi_Threaded.mpc
@@ -0,0 +1,18 @@
+// $Id$
+
+project (Multi_Threaded_client) : ciao_client_dnc, valuetype , strategies {
+ exename = client
+ after += RoundTripClient_stub
+ libs += RoundTripClient_stub Benchmark_stub
+ libpaths += ..
+ includes += ../RoundTripClient
+ avoids += ace_for_tao
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ Client_Task.cpp
+ }
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt
new file mode 100644
index 00000000000..a0ae140a0ee
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/NOTE.txt
@@ -0,0 +1,15 @@
+$Id$
+
+PRE Condition:
+=============
+This test assumes that there is an appropriate svc.conf file present in
+$CIAO_ROOOT/tools/ComponentServer. Moreover, the Component Server does not
+curerntly expose interfaces to configure multi-threading. Hence, this
+experiment, will produce the desired results *only* when this feature has been
+added in CIAO. Till then, the server will run in single-threaded mode.
+
+Similarly, the client also requires the svc.conf file that enables
+multi-threading. This file is present in this directory.
+
+The svc.conf file required for this experiment can be obtained from
+$TAO_ROOT/performance-tests/Latency/Thread_Pool
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README
new file mode 100644
index 00000000000..0cadcfc8e51
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/README
@@ -0,0 +1,12 @@
+/**
+
+@page Multi_Threaded README File
+
+ This black box experiment measures "multi-threading" support present in CIAO.
+In this test, a client component spawns four threads that concurrently invoke operations
+on the server. The latency, throughput and jitter for each thread is printed out. The
+motivation of this test is to observe scalability when a ComponentServer receives
+multiple requests from parallel clients. A sister test, ../Multi_Process documents
+behavior as parallel clients (separate processes) invoke requests on the server.
+
+*/
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp
new file mode 100644
index 00000000000..92bf6aecd2d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/client.cpp
@@ -0,0 +1,93 @@
+//
+// $Id$
+//
+
+//==============================================================
+/**
+ * @file client.cpp
+ *
+ * This is a client program that also acts as an Event Trigger. Four client tasks simultaneously
+ * send out trigger to the ClientRoundTrip component to start the latency measurements in
+ * parallel. This test is used to test scalability as the number of client components increase
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//===============================================================
+
+#include "Client_Task.h"
+#include "tao/Strategies/advanced_resource.h"
+
+//IOR of the components
+const char *ior1 = "file://comp1.ior";
+const char *ior2 = "file://comp2.ior";
+const char *ior3 = "file://comp3.ior";
+const char *ior4 = "file://comp4.ior";
+
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ // Resolve HomeFinder interface
+ CORBA::Object_var obj1
+ = orb->string_to_object (ior1);
+
+ CORBA::Object_var obj2
+ = orb->string_to_object (ior2);
+
+ CORBA::Object_var obj3
+ = orb->string_to_object (ior3);
+
+ CORBA::Object_var obj4
+ = orb->string_to_object (ior4);
+
+ if (CORBA::is_nil (obj1.in ()) ||
+ CORBA::is_nil (obj2.in ()) ||
+ CORBA::is_nil (obj3.in ()) ||
+ CORBA::is_nil (obj4.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Nil Benchmark::RoundtripClient reference \n"),
+ 1);
+ }
+
+ //Narrow to appropriate interfaces
+ Benchmark::RoundTripClient_var client1=
+ Benchmark::RoundTripClient::_narrow (obj1.in());
+
+ Benchmark::RoundTripClient_var client2=
+ Benchmark::RoundTripClient::_narrow (obj1.in());
+
+ Benchmark::RoundTripClient_var client3=
+ Benchmark::RoundTripClient::_narrow (obj1.in());
+
+ Benchmark::RoundTripClient_var client4=
+ Benchmark::RoundTripClient::_narrow (obj1.in());
+
+ //Create Tasks
+ Client_Task task1(client1.in());
+ Client_Task task2(client2.in());
+ Client_Task task3(client3.in());
+ Client_Task task4(client4.in());
+
+ task1.activate(THR_NEW_LWP | THR_JOINABLE);
+ task2.activate(THR_NEW_LWP | THR_JOINABLE);
+ task3.activate(THR_NEW_LWP | THR_JOINABLE);
+ task4.activate(THR_NEW_LWP | THR_JOINABLE);
+
+ task1.thr_mgr()->wait();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception Caught:");
+ return 1;
+ }
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl
new file mode 100755
index 00000000000..fe52b35d6a2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/run_test.pl
@@ -0,0 +1,87 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+#
+# @@ Run this script from ../descriptors/ instead.
+#
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$daemon_ior = PerlACE::LocalFile ("daemon.ior");
+$am_ior = PerlACE::LocalFile ("am.ior");
+
+$ACE_ROOT=$ENV{'ACE_ROOT'};
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+unlink $daemon_ior;
+unlink $am_ior;
+
+# CIAO Daemon command line arguments
+$daemon_args = "-c $CIAO_ROOT/tools/ComponentServer/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+# CIAO Daemon command line arguments
+$daemon_args2 = "-c $CIAO_ROOT/tools/ComponentServer/svc.conf -ORBEndpoint iiop://localhost:12000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+$assembly_manager_args = "-o $am_ior -c test.dat";
+
+$ad_args = " -k file://$am_ior -a Multi_Threaded.cad";
+
+# CIAO daemon process definition
+$DS = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args");
+
+## Starting up the CIAO daemon
+$DS->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+# CIAO daemon process definition
+$DS2 = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args2");
+
+## Starting up the CIAO daemon
+$DS2->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+$AM = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager",
+ $assembly_manager_args);
+$AM->Spawn ();
+if (PerlACE::waitforfile_timed ($am_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n";
+ $AM->Kill ();
+ exit 1;
+}
+
+$AD = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer",
+ $ad_args);
+$AD->Spawn ();
+
+sleep (5);
+
+#Start the client to send the trigger message
+$CL = new PerlACE::Process ("../Multi_Threaded/client", "");
+$CL->SpawnWaitKill(60);
+
+$AM->Kill ();
+$AD->Kill ();
+$DS->Kill ();
+$CL->Kill ();
+$DS2->Kill ();
+
+unlink $daemon_ior;
+unlink $am_ior;
+
+exit $status;
diff --git a/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf
new file mode 100644
index 00000000000..46ff5409fdf
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/Multi_Threaded/svc.conf
@@ -0,0 +1,5 @@
+#
+# $Id$
+#
+static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBFlushingStrategy blocking"
+static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBClientConnectionHandler RW"
diff --git a/modules/CIAO/performance-tests/Benchmark/README b/modules/CIAO/performance-tests/Benchmark/README
new file mode 100644
index 00000000000..ec8463d2aae
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/README
@@ -0,0 +1,32 @@
+/**
+
+@page BasicSP README File
+
+ The most basic of the Boeing scenarios that form part of the
+OEP. This is done to illustrate how the OEP can be implemented using
+CIAO.
+
+ This example does not yet use MPC to generate MSVC
+projects/workspaces/solutions or makefiles - we are still
+working on getting the execution of the CIDL compiler
+integrated into MPC. The CIDL compiler execution has
+been added to MSVC projects, which for now are checked
+into the CVS repository. CIDL compiler execution is not yet
+integrated with makefiles. The CIDL compiler can be executed by
+hand before starting the build for either this example or the
+example in ACE_ROOT/TAO/CIAO/examples/OEP/Display.
+
+ Compilation of the CIDL compiler source code requires the
+Boost library, which is not included in this distribution of
+ACE+TAO+CIAO. The Boost library is available at
+
+http://www.boost.org
+
+ Alternatively, a binary executable of the CIAO
+CIDL compiler can be downloaded from
+
+http://www.dre.vanderbilt.edu/CIAO/CIDL.html
+
+Versions are available at the above site for Linux and Windows.
+
+*/
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/README b/modules/CIAO/performance-tests/Benchmark/RoundTrip/README
new file mode 100644
index 00000000000..8bd003eaf72
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/README
@@ -0,0 +1,9 @@
+/**
+
+@page RoundTrip README File
+
+ The RoundTrip component. This component measures the round-trip
+latency for single-threaded case. This test adapted from
+$TAO_ROOT/performance-tests/Latency/Single_Threaded
+
+*/
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.cidl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.cidl
new file mode 100644
index 00000000000..724789ac42d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.cidl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef ROUNDTRIP_CIDL
+#define ROUNDTRIP_CIDL
+
+#include "RoundTrip.idl"
+
+composition session RoundTrip_Impl
+{
+
+ home executor RoundTripHome_Exec
+ {
+ implements Benchmark::RoundTripHome;
+ manages RoundTrip_Exec;
+ };
+
+};
+
+#endif /* ROUNDTRIP_CIDL */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl
new file mode 100644
index 00000000000..73a00422297
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.idl
@@ -0,0 +1,29 @@
+// $Id$
+//=============================================================================
+/**
+ * @file RoundTrip.idl
+ *
+ * Definition of the Component that provides the LatencyTest interface
+ *
+ */
+//=============================================================================
+
+#ifndef CIAO_ROUNDTRIP_IDL
+#define CIAO_ROUNDTRIP_IDL
+
+#include "../Benchmark.idl"
+#include <Components.idl>
+
+module Benchmark
+{
+ component RoundTrip
+ {
+ provides LatencyTest latency;
+ };
+
+ home RoundTripHome manages RoundTrip
+ {
+ };
+};
+
+#endif /* CIAO_ROUNDTRIP_IDL*/
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc
new file mode 100644
index 00000000000..3a6e310d8ae
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip.mpc
@@ -0,0 +1,95 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p Benchmark -i -c RoundTrip"
+
+project(RoundTrip_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_stub
+ sharedname = RoundTrip_stub
+
+ libs += Benchmark_stub
+
+ idlflags += -Wb,stub_export_macro=ROUNDTRIP_STUB_Export
+ idlflags += -Wb,stub_export_include=RoundTrip_stub_export.h
+ idlflags += -Wb,skel_export_macro=ROUNDTRIP_SVNT_Export
+ idlflags += -Wb,skel_export_include=RoundTrip_svnt_export.h
+
+ dynamicflags = ROUNDTRIP_STUB_BUILD_DLL
+
+ IDL_Files {
+ RoundTrip.idl
+ }
+
+ Source_Files {
+ RoundTripC.cpp
+ }
+}
+
+project(RoundTrip_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_svnt RoundTrip_stub
+ sharedname = RoundTrip_svnt
+
+ libs += RoundTrip_stub Benchmark_stub Benchmark_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=ROUNDTRIP_SVNT_Export
+ idlflags += -Wb,export_include=RoundTrip_svnt_export.h
+
+ dynamicflags = ROUNDTRIP_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ RoundTrip.cidl
+ }
+
+ IDL_Files {
+ RoundTripE.idl
+ }
+
+ Source_Files {
+ RoundTripEC.cpp
+ RoundTripS.cpp
+ RoundTrip_svnt.cpp
+ }
+}
+
+
+project(RoundTrip_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += RoundTrip_svnt
+ sharedname = RoundTrip_exec
+
+ libs += RoundTrip_stub Benchmark_stub Benchmark_svnt RoundTrip_svnt
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=ROUNDTRIP_EXEC_Export
+ idlflags += -Wb,export_include=RoundTrip_exec_export.h
+
+ dynamicflags = ROUNDTRIP_EXEC_BUILD_DLL
+
+ IDL_Files {
+ RoundTripEI.idl
+ }
+
+ Source_Files {
+ RoundTripEIC.cpp
+ RoundTrip_exec.cpp
+ }
+}
+
+
+
+project (RoundTrip_client) : ciao_client_dnc, valuetype, strategies{
+ avoids += ace_for_tao
+ exename = client
+ after += RoundTrip_stub
+ libs += RoundTrip_stub Benchmark_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl
new file mode 100644
index 00000000000..a28de5948d2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTripEI.idl
@@ -0,0 +1,33 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file RoundTripEI.idl
+ *
+ *
+ * @author
+ */
+//=============================================================================
+
+#ifndef CIAO_ROUNDTRIPEI_IDL
+#define CIAO_ROUNDTRIPEI_IDL
+
+#include "RoundTripE.idl"
+
+module Benchmark
+{
+ /**
+ * @interface RoundTrip_Exec
+ *
+ * The actually Test executor need to support
+ * Components::SessionComponent interface. Therefore, we need to
+ * define the component executor interface explicitly here.
+ */
+ local interface RoundTrip_Exec : CCM_RoundTrip, CCM_LatencyTest,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* CIAO_TESTEI_IDL */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp
new file mode 100644
index 00000000000..07dd8d48095
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.cpp
@@ -0,0 +1,151 @@
+// $Id$
+
+#include "RoundTrip_exec.h"
+#include "CIAO_common.h"
+
+//-- ACE Scheduling Params
+#include "ace/Sched_Params.h"
+
+#include "ace/OS_NS_errno.h"
+
+//=================================================================
+
+void
+set_priority ()
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "client (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "client (%P|%t): sched_params failed\n"));
+ }
+}
+
+
+
+MyImpl::RoundTrip_exec_i::RoundTrip_exec_i ()
+{
+
+}
+
+MyImpl::RoundTrip_exec_i::~RoundTrip_exec_i ()
+{
+}
+
+::Benchmark::CCM_LatencyTest *
+MyImpl::RoundTrip_exec_i::get_latency ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ::Benchmark::CCM_LatencyTest::_duplicate (this);
+}
+
+/* Main method that invokes the octet_sequence */
+CORBA::Long
+MyImpl::RoundTrip_exec_i::makeCall (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return data * data * data;
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::RoundTrip_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTrip_exec_i::set_session_context\n"));
+ //cout << "MyImpl::RoundTrip_exec_i::set_session_context\n" << endl;
+
+ this->context_ =
+ Benchmark::CCM_RoundTrip_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::RoundTrip_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RoundTrip_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTrip_exec_i::ccm_activate\n"));
+ //cout << "MyImpl::RoundTrip_exec_i::ccm_activate\n";
+
+ // Starting method!
+ //set_priority();
+}
+
+void
+MyImpl::RoundTrip_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+
+}
+
+void
+MyImpl::RoundTrip_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTrip_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::RoundTrip_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTrip_exec_i::ccm_remove\n"));
+}
+
+
+MyImpl::RoundTripHome_exec_i::RoundTripHome_exec_i ()
+{
+}
+
+MyImpl::RoundTripHome_exec_i::~RoundTripHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RoundTripHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::RoundTrip_exec_i;
+}
+
+
+extern "C" ROUNDTRIP_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRoundTripHome_Impl (void)
+{
+ //cout << "Creating Round_trip impl" << endl;
+ return new MyImpl::RoundTripHome_exec_i ();
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h
new file mode 100644
index 00000000000..e2262581bd7
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec.h
@@ -0,0 +1,121 @@
+// -*- C++ -*-
+
+//============================================================
+/**
+ * @file RoundTrip_exec.h
+ *
+ * Header file for the Executor implementation.
+ *
+ * $Id$
+ *
+ * @author Diego Sevilla <dsevilla@um.es>
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//============================================================
+
+#ifndef ROUNDTRIP_EXEC_H
+#define ROUNDTRIP_EXEC_H
+
+#include "RoundTripEIC.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+namespace MyImpl
+{
+
+ /**
+ * @class RoundTrip_exec_i
+ *
+ * RoundTrip executor implementation class.
+ */
+
+ class ROUNDTRIP_EXEC_Export RoundTrip_exec_i :
+ public virtual Benchmark::RoundTrip_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ RoundTrip_exec_i ();
+
+ /// Operation to test the data
+ virtual CORBA::Long makeCall (CORBA::Long data)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual ::Benchmark::CCM_LatencyTest*
+ get_latency ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by timeout_Handler
+ void pulse (void);
+
+ protected:
+
+ /// Destructor.
+ ~RoundTrip_exec_i ();
+
+ protected:
+ /// Copmponent specific context
+ Benchmark::CCM_RoundTrip_Context_var context_;
+
+ };
+
+ /**
+ * @class RoundTripHome_exec_i
+ *
+ * RoundTrip home executor implementation class.
+ */
+ class ROUNDTRIP_EXEC_Export RoundTripHome_exec_i :
+ public virtual Benchmark::CCM_RoundTripHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ RoundTripHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ protected:
+
+ /// Destructor.
+ ~RoundTripHome_exec_i ();
+
+ };
+
+}
+
+extern "C" ROUNDTRIP_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRoundTripHome_Impl (void);
+
+#endif /* ROUNDTRIP_EXEC_H */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h
new file mode 100644
index 00000000000..41abae47f67
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_exec_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIP_EXEC
+// ------------------------------
+#ifndef ROUNDTRIP_EXEC_EXPORT_H
+#define ROUNDTRIP_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIP_EXEC_HAS_DLL)
+# define ROUNDTRIP_EXEC_HAS_DLL 1
+#endif /* ! ROUNDTRIP_EXEC_HAS_DLL */
+
+#if defined (ROUNDTRIP_EXEC_HAS_DLL) && (ROUNDTRIP_EXEC_HAS_DLL == 1)
+# if defined (ROUNDTRIP_EXEC_BUILD_DLL)
+# define ROUNDTRIP_EXEC_Export ACE_Proper_Export_Flag
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIP_EXEC_BUILD_DLL */
+# define ROUNDTRIP_EXEC_Export ACE_Proper_Import_Flag
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIP_EXEC_BUILD_DLL */
+#else /* ROUNDTRIP_EXEC_HAS_DLL == 1 */
+# define ROUNDTRIP_EXEC_Export
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARATION(T)
+# define ROUNDTRIP_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIP_EXEC_HAS_DLL == 1 */
+
+// Set ROUNDTRIP_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIP_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIP_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIP_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIP_EXEC_NTRACE */
+
+#if (ROUNDTRIP_EXEC_NTRACE == 1)
+# define ROUNDTRIP_EXEC_TRACE(X)
+#else /* (ROUNDTRIP_EXEC_NTRACE == 1) */
+# define ROUNDTRIP_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIP_EXEC_NTRACE == 1) */
+
+#endif /* ROUNDTRIP_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h
new file mode 100644
index 00000000000..3300c0a8b9d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_stub_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIP_STUB
+// ------------------------------
+#ifndef ROUNDTRIP_STUB_EXPORT_H
+#define ROUNDTRIP_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIP_STUB_HAS_DLL)
+# define ROUNDTRIP_STUB_HAS_DLL 1
+#endif /* ! ROUNDTRIP_STUB_HAS_DLL */
+
+#if defined (ROUNDTRIP_STUB_HAS_DLL) && (ROUNDTRIP_STUB_HAS_DLL == 1)
+# if defined (ROUNDTRIP_STUB_BUILD_DLL)
+# define ROUNDTRIP_STUB_Export ACE_Proper_Export_Flag
+# define ROUNDTRIP_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIP_STUB_BUILD_DLL */
+# define ROUNDTRIP_STUB_Export ACE_Proper_Import_Flag
+# define ROUNDTRIP_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIP_STUB_BUILD_DLL */
+#else /* ROUNDTRIP_STUB_HAS_DLL == 1 */
+# define ROUNDTRIP_STUB_Export
+# define ROUNDTRIP_STUB_SINGLETON_DECLARATION(T)
+# define ROUNDTRIP_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIP_STUB_HAS_DLL == 1 */
+
+// Set ROUNDTRIP_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIP_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIP_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIP_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIP_STUB_NTRACE */
+
+#if (ROUNDTRIP_STUB_NTRACE == 1)
+# define ROUNDTRIP_STUB_TRACE(X)
+#else /* (ROUNDTRIP_STUB_NTRACE == 1) */
+# define ROUNDTRIP_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIP_STUB_NTRACE == 1) */
+
+#endif /* ROUNDTRIP_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h
new file mode 100644
index 00000000000..9db7ca9eaa3
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/RoundTrip_svnt_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIP_SVNT
+// ------------------------------
+#ifndef ROUNDTRIP_SVNT_EXPORT_H
+#define ROUNDTRIP_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIP_SVNT_HAS_DLL)
+# define ROUNDTRIP_SVNT_HAS_DLL 1
+#endif /* ! ROUNDTRIP_SVNT_HAS_DLL */
+
+#if defined (ROUNDTRIP_SVNT_HAS_DLL) && (ROUNDTRIP_SVNT_HAS_DLL == 1)
+# if defined (ROUNDTRIP_SVNT_BUILD_DLL)
+# define ROUNDTRIP_SVNT_Export ACE_Proper_Export_Flag
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIP_SVNT_BUILD_DLL */
+# define ROUNDTRIP_SVNT_Export ACE_Proper_Import_Flag
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIP_SVNT_BUILD_DLL */
+#else /* ROUNDTRIP_SVNT_HAS_DLL == 1 */
+# define ROUNDTRIP_SVNT_Export
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARATION(T)
+# define ROUNDTRIP_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIP_SVNT_HAS_DLL == 1 */
+
+// Set ROUNDTRIP_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIP_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIP_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIP_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIP_SVNT_NTRACE */
+
+#if (ROUNDTRIP_SVNT_NTRACE == 1)
+# define ROUNDTRIP_SVNT_TRACE(X)
+#else /* (ROUNDTRIP_SVNT_NTRACE == 1) */
+# define ROUNDTRIP_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIP_SVNT_NTRACE == 1) */
+
+#endif /* ROUNDTRIP_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp
new file mode 100644
index 00000000000..9de1cb46a2d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/client.cpp
@@ -0,0 +1,174 @@
+// $Id$
+
+//==============================================================
+/**
+ * @file client.cpp
+ *
+ * This is a simple client test program that interact with the RoundTrip
+ * component implementation. The single threaded client issues
+ * two-way operations, the total latency (response time) is measured
+ * NOTE: this client implementation has been adapted from the
+ * $TAO_ROOT/performance-results/Latency/Single_Threaded/
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//==============================================================
+#include "RoundTripC.h"
+#include "tao/Strategies/advanced_resource.h"
+#include "ace/Get_Opt.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Sched_Params.h"
+#include "ace/Stats.h"
+#include "ace/Sample_History.h"
+#include "ace/OS_NS_errno.h"
+
+const char *ior = "file://test.ior";
+int niterations = 100;
+int do_dump_history = 0;
+
+int
+parse_args (int argc, char *argv[])
+{
+ //parse arguments
+ ACE_Get_Opt get_opts (argc, argv, "hxk:i:");
+ char c;
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'h':
+ do_dump_history = 1;
+ break;
+
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case 'i':
+ niterations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ /* Could be any other parameter like -ORBSvcConf file so ignore */
+ break;
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+void
+set_priority ()
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "client (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "client (%P|%t): sched_params failed\n"));
+ }
+
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ //set priority on the platform
+ set_priority();
+
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ if (parse_args(argc, argv) == -1)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Error parsing Arguments\n"));
+ return -1;
+ }
+
+ // Resolve HomeFinder interface
+ CORBA::Object_var obj
+ = orb->string_to_object (ior);
+
+ Benchmark::RoundTripHome_var home
+ = Benchmark::RoundTripHome::_narrow (obj.in ());
+
+ if (CORBA::is_nil (home.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire TestHome objref\n"), -1);
+
+ Benchmark::RoundTrip_var test
+ = home->create ();
+
+ //Get the RoundTrip reference
+ Benchmark::LatencyTest_var round_trip = test->provide_latency ();
+
+ //Warmup the System by making some empty calls
+ long start = 0L;
+ for (int j = 0; j < 100; ++j)
+ {
+ round_trip->makeCall (start);
+ }
+
+ ///// Start Test ////////////////////////////////////////////
+ ACE_Sample_History history (niterations);
+
+ ACE_hrtime_t test_start = ACE_OS::gethrtime ();
+ for (int i = 0; i < niterations; ++i)
+ {
+ ACE_hrtime_t start = ACE_OS::gethrtime ();
+
+ //Test value to be sent to the server
+ long test = 0;
+
+ (void) round_trip->makeCall (test);
+
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+ history.sample (now - start);
+ }
+
+ ACE_hrtime_t test_end = ACE_OS::gethrtime ();
+
+ ACE_DEBUG ((LM_DEBUG, "test finished\n"));
+
+ ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
+ ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
+ ACE_DEBUG ((LM_DEBUG, "done\n"));
+
+ if (do_dump_history)
+ {
+ history.dump_samples ("HISTORY", gsf);
+ }
+
+ ACE_Basic_Stats stats;
+ history.collect_basic_stats (stats);
+ stats.dump_results ("Total", gsf);
+
+ ACE_Throughput_Stats::dump_throughput ("Total", gsf,
+ test_end - test_start,
+ stats.samples_count ());
+
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception Handled:");
+ return 1;
+ }
+
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl b/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl
new file mode 100755
index 00000000000..584351da998
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/run_test.pl
@@ -0,0 +1,115 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+#
+# @@ Run this script from ../descriptors/ instead.
+#
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$daemon_ior = PerlACE::LocalFile ("daemon.ior");
+$svr_ior = PerlACE::LocalFile ("server.ior");
+$home_ior = PerlACE::LocalFile ("test.ior");
+
+$ACE_ROOT=$ENV{'ACE_ROOT'};
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+unlink $daemon_ior;
+unlink $svr_ior;
+unlink $home_ior;
+
+# CIAO Daemon command line arguments
+$daemon_args = "-c ../RoundTrip/svc.conf -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+# CIAO Daemon Controller location:
+$controller = "$CIAO_ROOT/tools/Daemon/DaemonController";
+
+# Daemon controller common command line arguments
+$common_args = "-ORBInitRef CIAODaemon=file://$daemon_ior";
+
+# Daemon controller start_home command
+$start_args = "start_home -s RoundTrip.csd -m $home_ior -c $svr_ior";
+
+# Daemon controller end_home command
+$end_args = "end_home -c file://$svr_ior";
+
+# Daemon controller shutdown command
+$shutdown_args = "shutdown";
+
+# Client program command line arguments
+$cl_args = "-ORBSvcConf ../RoundTrip/svc.conf -i 300000";
+
+# CIAO daemon process definition
+$DS = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args");
+
+# Client process definition
+$CL = new PerlACE::Process ("../RoundTrip/client",
+ $cl_args);
+
+## Starting up the CIAO daemon
+$DS->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+## Starting up a ComponentServer running the Roundtrip home.
+$DC = new PerlACE::Process ("$controller",
+ "$common_args $start_args");
+
+$DC->SpawnWaitKill (60);
+if (PerlACE::waitforfile_timed ($home_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find home ior file <$home_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+$client = $CL->SpawnWaitKill (60);
+
+if ($client != 0) {
+ print STDERR "ERROR: client returned $client\n";
+ $status = 1;
+}
+
+## Terminating the ComponentServer running.
+$DC = new PerlACE::Process ("$controller",
+ "$common_args $end_args");
+
+$ctrl = $DC->SpawnWaitKill (60);
+if ($ctrl != 0) {
+ print STDERR "ERROR: Fail to end component server\n";
+ $DC->Kill ();
+ exit 1;
+}
+
+## Terminating the ComponentServer running the RateGen home.
+$DC = new PerlACE::Process ("$controller",
+ "$common_args $shutdown_args");
+
+$ctrl = $DC->SpawnWaitKill (60);
+if ($ctrl != 0) {
+ print STDERR "ERROR: Fail to shutdown CIAODaemon\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+$ctrl = $DS->WaitKill (60);
+if ($ctrl != 0) {
+ print STDERR "ERROR: CIAODaemon didn't shutdown gracefully $ctrl\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+unlink $daemon_ior;
+unlink $svr_ior;
+unlink $home_ior;
+
+exit $status;
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf b/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf
new file mode 100644
index 00000000000..e1706aae4e5
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTrip/svc.conf
@@ -0,0 +1,6 @@
+#
+# $Id$
+#
+dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory () "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null"
+static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0"
+static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW"
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl
new file mode 100644
index 00000000000..febcbed08df
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.cidl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef ROUNDTRIPCLIENT_CIDL
+#define ROUNDTRIPCLIENT_CIDL
+
+#include "RoundTripClient.idl"
+
+composition session RoundTripClient_Impl
+{
+
+ home executor RoundTripClientHome_Exec
+ {
+ implements Benchmark::RoundTripClientHome;
+ manages RoundTripClient_Exec;
+ };
+
+};
+
+#endif /* ROUNDTRIPCLIENT_CIDL */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl
new file mode 100644
index 00000000000..3f891ce00d3
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.idl
@@ -0,0 +1,30 @@
+// $Id$
+//=============================================================================
+/**
+ * @file RoundTripClient.idl
+ *
+ * Definition of the Component that uses the LatencyTest interface
+ * provided by RoundTrip component
+ */
+//=============================================================================
+
+#ifndef CIAO_ROUNDTRIPCLIENT_IDL
+#define CIAO_ROUNDTRIPCLIENT_IDL
+
+#include <Components.idl>
+#include "../Benchmark.idl"
+
+module Benchmark
+{
+ component RoundTripClient
+ {
+ uses LatencyTest latency;
+ provides Controller controller;
+ };
+
+ home RoundTripClientHome manages RoundTripClient
+ {
+ };
+};
+
+#endif /* CIAO_ROUNDTRIPCLIENT_IDL*/
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
new file mode 100644
index 00000000000..6ccc38cc06b
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient.mpc
@@ -0,0 +1,109 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p Benchmark -i -c RoundTripClient"
+
+project(RoundTripClient_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_stub
+ sharedname = RoundTripClient_stub
+
+ libs += Benchmark_stub
+
+ idlflags += -Wb,stub_export_macro=ROUNDTRIPCLIENT_STUB_Export
+ idlflags += -Wb,stub_export_include=RoundTripClient_stub_export.h
+ idlflags += -Wb,skel_export_macro=ROUNDTRIPCLIENT_SVNT_Export
+ idlflags += -Wb,skel_export_include=RoundTripClient_svnt_export.h
+
+ dynamicflags = ROUNDTRIPCLIENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ RoundTripClient.idl
+ }
+
+ Source_Files {
+ RoundTripClientC.cpp
+ }
+}
+
+project(RoundTripClient_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Benchmark_svnt RoundTripClient_stub
+ sharedname = RoundTripClient_svnt
+ libs += RoundTripClient_stub Benchmark_stub Benchmark_svnt
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=ROUNDTRIPCLIENT_SVNT_Export
+ idlflags +=-Wb,export_include=RoundTripClient_svnt_export.h
+
+ dynamicflags = ROUNDTRIPCLIENT_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ RoundTripClient.cidl
+ }
+
+ IDL_Files {
+ RoundTripClientE.idl
+ }
+
+ Source_Files {
+ RoundTripClientEC.cpp
+ RoundTripClientS.cpp
+ RoundTripClient_svnt.cpp
+ }
+}
+
+
+project(RoundTripClient_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += RoundTripClient_svnt
+
+ sharedname = RoundTripClient_exec
+
+ libs += RoundTripClient_stub Benchmark_stub Benchmark_svnt RoundTripClient_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=ROUNDTRIPCLIENT_EXEC_Export
+ idlflags += -Wb,export_include=RoundTripClient_exec_export.h
+
+ dynamicflags = ROUNDTRIPCLIENT_EXEC_BUILD_DLL
+
+ IDL_Files {
+ RoundTripClientEI.idl
+ }
+
+ Source_Files {
+ RoundTripClientEIC.cpp
+ RoundTripClient_exec.cpp
+ }
+}
+
+
+project (*client) : ciao_client_dnc {
+ avoids += ace_for_tao
+ exename = client
+ after += RoundTripClient_stub
+ libs += RoundTripClient_stub Benchmark_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
+
+//project (RoundTripClient_controller) : ciao_client_dnc {
+// exename = controller
+// after += RoundTripClient_stub
+// libs += RoundTripClient_stub Benchmark_stub
+// libpaths += ..
+//
+// IDL_Files {
+// }
+//
+// Source_Files {
+// controller.cpp
+// }
+//}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl
new file mode 100644
index 00000000000..d9009c56e8a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClientEI.idl
@@ -0,0 +1,34 @@
+// $Id$
+
+//=============================================================================
+/**
+ * @file RoundTripClientEI.idl
+ *
+ *
+ * @author
+ */
+//=============================================================================
+
+#ifndef CIAO_ROUNDTRIPCLIENTEI_IDL
+#define CIAO_ROUNDTRIPCLIENTEI_IDL
+
+#include "RoundTripClientE.idl"
+
+module Benchmark
+{
+ /**
+ * @interface RoundTripClient_Exec
+ *
+ * The actually Test executor need to support
+ * Components::SessionComponent interface. Therefore, we need to
+ * define the component executor interface explicitly here.
+ */
+ local interface RoundTripClient_Exec : CCM_RoundTripClient,
+ Components::SessionComponent,
+ CCM_Controller //Monolithic
+ {
+ };
+
+};
+
+#endif /* CIAO_ROUNDTRIPCLIENTEI_IDL */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
new file mode 100644
index 00000000000..ab8ede89b50
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.cpp
@@ -0,0 +1,183 @@
+// $Id$
+
+#include "ace/Stats.h"
+#include "ace/Sample_History.h"
+#include "ace/High_Res_Timer.h"
+#include "CIAO_common.h"
+#include "ace/Env_Value_T.h"
+
+#include "RoundTripClient_exec.h"
+
+const int niterations = 100000; //Default no of iterations
+//=================================================================
+
+MyImpl::RoundTripClient_exec_i::RoundTripClient_exec_i ()
+{
+
+}
+
+MyImpl::RoundTripClient_exec_i::~RoundTripClient_exec_i ()
+{
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::RoundTripClient_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RoundTripClient_exec_i::set_session_context\n"));
+
+ //Since this is in collocated mode; The server-component will change the
+ //scheduling strategy to real-time scheduling
+
+ this->context_ =
+ Benchmark::CCM_RoundTripClient_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+
+ // Urm, we actually discard exceptions thrown from this operation.
+}
+
+//Start the collocated test here
+void
+MyImpl::RoundTripClient_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RoundTripClient_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTripClient_exec_i::ccm_activate\n"));
+}
+
+void
+MyImpl::RoundTripClient_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RoundTripClient_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ ///////////// Start test /////////////////////////////////////////
+
+ // Let's try to start tests from here...
+ Benchmark::LatencyTest_var lt =
+ context_->get_connection_latency ();
+
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RoundTripClient_exec::start obtain obj ref\n"));
+
+ CORBA::Long test_data = 0L;
+
+ //Warm up the system
+ int i = 0;
+ for (i=0; i < 100; i++)
+ lt->makeCall (test_data);
+
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::start: warmed up the system\n"));
+
+ ACE_Sample_History history (niterations);
+
+ ACE_hrtime_t test_start = ACE_OS::gethrtime ();
+ for (i = 0; i < niterations; ++i)
+ {
+ ACE_hrtime_t start = ACE_OS::gethrtime ();
+
+ //Test value to be sent to the server
+ long test = 0;
+
+ (void) lt->makeCall (test);
+
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+ history.sample (now - start);
+ }
+
+ ACE_hrtime_t test_end = ACE_OS::gethrtime ();
+
+ ACE_DEBUG ((LM_DEBUG, "test finished\n"));
+
+ ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
+ ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
+ ACE_DEBUG ((LM_DEBUG, "done\n"));
+
+ ACE_Env_Value<int> envar ("CIAO_DUMP_SAMPLE_HISTORY", 0);
+ if (envar != 0)
+ {
+ history.dump_samples ("HISTORY", gsf);
+ }
+
+ ACE_Basic_Stats stats;
+ history.collect_basic_stats (stats);
+ stats.dump_results ("Total", gsf);
+
+ ACE_Throughput_Stats::dump_throughput ("Total", gsf,
+ test_end - test_start,
+ stats.samples_count ());
+
+}
+
+::Benchmark::CCM_Controller_ptr
+MyImpl::RoundTripClient_exec_i::get_controller ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return ::Benchmark::CCM_Controller::_duplicate (this);
+}
+
+
+void
+MyImpl::RoundTripClient_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTripClient_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::RoundTripClient_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::RoundTripClient_exec_i::ccm_remove\n"));
+}
+
+
+MyImpl::RoundTripClientHome_exec_i::RoundTripClientHome_exec_i ()
+{
+}
+
+MyImpl::RoundTripClientHome_exec_i::~RoundTripClientHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RoundTripClientHome_exec_i::create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::RoundTripClient_exec_i;
+}
+
+
+extern "C" ROUNDTRIPCLIENT_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRoundTripClientHome_Impl (void)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "Creating RoundTrip_client impl \n"));
+ return new MyImpl::RoundTripClientHome_exec_i ();
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h
new file mode 100644
index 00000000000..127684294f4
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec.h
@@ -0,0 +1,110 @@
+// $Id$
+
+//============================================================
+/**
+ * @file RoundTripClient_exec.h
+ *
+ * Header file for the Executor implementation.
+ *
+ * @author Diego <dsevilla@um.es>
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//============================================================
+
+#ifndef BENCHMARK_ROUNDTRIPCLIENT_EXEC_H
+#define BENCHMARK_ROUNDTRIPCLIENT_EXEC_H
+
+#include "RoundTripClientEIC.h"
+#include "tao/LocalObject.h"
+
+
+namespace MyImpl
+{
+
+ /**
+ * @class RoundTripClient_exec_i
+ *
+ * RoundTripClient executor implementation class.
+ */
+
+ class ROUNDTRIPCLIENT_EXEC_Export RoundTripClient_exec_i :
+ public virtual Benchmark::RoundTripClient_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+
+ public:
+ /// Default constructor.
+ RoundTripClient_exec_i ();
+
+ /// Default destructor.
+ ~RoundTripClient_exec_i ();
+
+ // Operations from Components::SessionComponent
+ virtual void set_session_context (Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual ::Benchmark::CCM_Controller_ptr
+ get_controller ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+
+ protected:
+ /// Copmponent specific context
+ Benchmark::CCM_RoundTripClient_Context_var context_;
+
+ };
+
+ /**
+ * @class RoundTripClientHome_exec_i
+ *
+ * RoundTripClient home executor implementation class.
+ */
+ class ROUNDTRIPCLIENT_EXEC_Export RoundTripClientHome_exec_i :
+ public virtual Benchmark::CCM_RoundTripClientHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ RoundTripClientHome_exec_i ();
+
+ /// Default dtor.
+ ~RoundTripClientHome_exec_i ();
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" ROUNDTRIPCLIENT_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRoundTripClientHome_Impl (void);
+
+#endif /* CIAO_ROUNDTRIPCLIENTGEN_EXEC_H */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h
new file mode 100644
index 00000000000..4a9827a8cbc
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_exec_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIPCLIENT_EXEC
+// ------------------------------
+#ifndef ROUNDTRIPCLIENT_EXEC_EXPORT_H
+#define ROUNDTRIPCLIENT_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIPCLIENT_EXEC_HAS_DLL)
+# define ROUNDTRIPCLIENT_EXEC_HAS_DLL 1
+#endif /* ! ROUNDTRIPCLIENT_EXEC_HAS_DLL */
+
+#if defined (ROUNDTRIPCLIENT_EXEC_HAS_DLL) && (ROUNDTRIPCLIENT_EXEC_HAS_DLL == 1)
+# if defined (ROUNDTRIPCLIENT_EXEC_BUILD_DLL)
+# define ROUNDTRIPCLIENT_EXEC_Export ACE_Proper_Export_Flag
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIPCLIENT_EXEC_BUILD_DLL */
+# define ROUNDTRIPCLIENT_EXEC_Export ACE_Proper_Import_Flag
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIPCLIENT_EXEC_BUILD_DLL */
+#else /* ROUNDTRIPCLIENT_EXEC_HAS_DLL == 1 */
+# define ROUNDTRIPCLIENT_EXEC_Export
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARATION(T)
+# define ROUNDTRIPCLIENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIPCLIENT_EXEC_HAS_DLL == 1 */
+
+// Set ROUNDTRIPCLIENT_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIPCLIENT_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIPCLIENT_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIPCLIENT_EXEC_NTRACE */
+
+#if (ROUNDTRIPCLIENT_EXEC_NTRACE == 1)
+# define ROUNDTRIPCLIENT_EXEC_TRACE(X)
+#else /* (ROUNDTRIPCLIENT_EXEC_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIPCLIENT_EXEC_NTRACE == 1) */
+
+#endif /* ROUNDTRIPCLIENT_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h
new file mode 100644
index 00000000000..1020507fdff
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_stub_export.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIPCLIENT_STUB
+// ------------------------------
+#ifndef ROUNDTRIPCLIENT_STUB_EXPORT_H
+#define ROUNDTRIPCLIENT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIPCLIENT_STUB_HAS_DLL)
+# define ROUNDTRIPCLIENT_STUB_HAS_DLL 1
+#endif /* ! ROUNDTRIPCLIENT_STUB_HAS_DLL */
+
+#if defined (ROUNDTRIPCLIENT_STUB_HAS_DLL) && (ROUNDTRIPCLIENT_STUB_HAS_DLL == 1)
+# if defined (ROUNDTRIPCLIENT_STUB_BUILD_DLL)
+# define ROUNDTRIPCLIENT_STUB_Export ACE_Proper_Export_Flag
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIPCLIENT_STUB_BUILD_DLL */
+# define ROUNDTRIPCLIENT_STUB_Export ACE_Proper_Import_Flag
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIPCLIENT_STUB_BUILD_DLL */
+#else /* ROUNDTRIPCLIENT_STUB_HAS_DLL == 1 */
+# define ROUNDTRIPCLIENT_STUB_Export
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARATION(T)
+# define ROUNDTRIPCLIENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIPCLIENT_STUB_HAS_DLL == 1 */
+
+// Set ROUNDTRIPCLIENT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIPCLIENT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIPCLIENT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIPCLIENT_STUB_NTRACE */
+
+#if (ROUNDTRIPCLIENT_STUB_NTRACE == 1)
+# define ROUNDTRIPCLIENT_STUB_TRACE(X)
+#else /* (ROUNDTRIPCLIENT_STUB_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIPCLIENT_STUB_NTRACE == 1) */
+
+#endif /* ROUNDTRIPCLIENT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h
new file mode 100644
index 00000000000..a760c548604
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/RoundTripClient_svnt_export.h
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ROUNDTRIPCLIENT_SVNT
+// ------------------------------
+#ifndef ROUNDTRIPCLIENT_SVNT_EXPORT_H
+#define ROUNDTRIPCLIENT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ROUNDTRIPCLIENT_SVNT_HAS_DLL)
+# define ROUNDTRIPCLIENT_SVNT_HAS_DLL 1
+#endif /* ! ROUNDTRIPCLIENT_SVNT_HAS_DLL */
+
+#if defined (ROUNDTRIPCLIENT_SVNT_HAS_DLL) && (ROUNDTRIPCLIENT_SVNT_HAS_DLL == 1)
+# if defined (ROUNDTRIPCLIENT_SVNT_BUILD_DLL)
+# define ROUNDTRIPCLIENT_SVNT_Export ACE_Proper_Export_Flag
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ROUNDTRIPCLIENT_SVNT_BUILD_DLL */
+# define ROUNDTRIPCLIENT_SVNT_Export ACE_Proper_Import_Flag
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ROUNDTRIPCLIENT_SVNT_BUILD_DLL */
+#else /* ROUNDTRIPCLIENT_SVNT_HAS_DLL == 1 */
+# define ROUNDTRIPCLIENT_SVNT_Export
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARATION(T)
+# define ROUNDTRIPCLIENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ROUNDTRIPCLIENT_SVNT_HAS_DLL == 1 */
+
+// Set ROUNDTRIPCLIENT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ROUNDTRIPCLIENT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ROUNDTRIPCLIENT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ROUNDTRIPCLIENT_SVNT_NTRACE */
+
+#if (ROUNDTRIPCLIENT_SVNT_NTRACE == 1)
+# define ROUNDTRIPCLIENT_SVNT_TRACE(X)
+#else /* (ROUNDTRIPCLIENT_SVNT_NTRACE == 1) */
+# define ROUNDTRIPCLIENT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ROUNDTRIPCLIENT_SVNT_NTRACE == 1) */
+
+#endif /* ROUNDTRIPCLIENT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp
new file mode 100644
index 00000000000..23b58d9cece
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/client.cpp
@@ -0,0 +1,51 @@
+// $Id$
+
+//==============================================================
+/**
+ * @file client.cpp
+ *
+ * This is a simple client test program that interact with the RoundTrip
+ * component implementation. The single threaded client issues
+ * two-way operations, the total latency (response time) is measured
+ * NOTE: this client implementation has been adapted from the
+ * $TAO_ROOT/performance-results/Latency/Single_Threaded/
+ *
+ * @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
+ */
+//==============================================================
+#include "RoundTripClientC.h"
+
+const char *ior = "file://test.ior";
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+
+ // Initialize orb
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ // Resolve HomeFinder interface
+ CORBA::Object_var obj
+ = orb->string_to_object (ior);
+ Benchmark::RoundTripClient_var test =
+ Benchmark::RoundTripClient::_narrow(obj.in());
+ //Get the RoundTrip reference
+ Benchmark::Controller_var trigger = test->provide_controller ();
+
+ //Send a trigger to start the test
+ trigger->start();
+
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception Handled:");
+ return 1;
+ }
+
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl
new file mode 100755
index 00000000000..e26d55c1a66
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test.pl
@@ -0,0 +1,103 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+#
+# @@ Run this script from ../descriptors/ instead.
+#
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$daemon_ior = PerlACE::LocalFile ("daemon.ior");
+$am_ior = PerlACE::LocalFile ("am.ior");
+
+$ACE_ROOT=$ENV{'ACE_ROOT'};
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+if ($CIAO_ROOT eq "") {
+ $CIAO_ROOT="$ACE_ROOT/TAO/CIAO";
+}
+
+unlink $daemon_ior;
+unlink $am_ior;
+
+
+# CIAO Daemon command line arguments
+$daemon_args1 = "-ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+#CIAO Daemond Remote command line arguments
+$daemon_args2 = "-ORBEndpoint iiop://localhost:12000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+$assembly_manager_args = "-o $am_ior -c test.dat";
+
+$ad_args = " -k file://$am_ior -a RoundTripClient.cad";
+
+# CIAO daemon process definition
+$DS = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args1");
+
+## Starting up the CIAO daemon
+$DS->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+# CIAO daemon process definition
+$DS2 = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args2");
+
+## Starting up the CIAO daemon
+$DS2->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+$AM = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager",
+ $assembly_manager_args);
+$AM->Spawn ();
+if (PerlACE::waitforfile_timed ($am_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n";
+ $AM->Kill ();
+ exit 1;
+}
+
+$AD = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer",
+ $ad_args);
+$AD->Spawn ();
+
+sleep (5);
+
+#Start the client to send the trigger message
+$CL = new PerlACE::Process ("../RoundTripClient/client", "");
+$CL->SpawnWaitKill(60);
+
+#$ctrl = $DS->WaitKill (5);
+#$AM->WaitKill(5);
+#$AD->WaitKill(5);
+
+$AM->Kill ();
+$AD->Kill ();
+$DS->Kill ();
+$DS2->Kill();
+
+#if ($ctrl != 0) {
+# print STDERR "ERROR: CIAODaemon didn't shutdown gracefully $ctrl\n";
+# $DS->Kill ();
+# exit 1;
+#}
+
+$CL->Kill ();
+
+unlink $daemon_ior;
+unlink $am_ior;
+
+exit $status;
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl
new file mode 100755
index 00000000000..bb665cc499a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl
@@ -0,0 +1,78 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+#
+# @@ Run this script from ../descriptors/ instead.
+#
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$status = 0;
+$daemon_ior = PerlACE::LocalFile ("daemon.ior");
+$am_ior = PerlACE::LocalFile ("am.ior");
+
+$ACE_ROOT=$ENV{'ACE_ROOT'};
+$CIAO_ROOT=$ENV{'CIAO_ROOT'};
+
+if ($CIAO_ROOT eq "") {
+ $CIAO_ROOT="$ACE_ROOT/TAO/CIAO";
+}
+
+unlink $daemon_ior;
+unlink $am_ior;
+
+
+# CIAO Daemon command line arguments
+$daemon_args = "-c $CIAO_ROOT/performance-tests/Benchmark/RoundTrip/svc.conf -ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer";
+
+$assembly_manager_args = "-o $am_ior -c test.dat";
+
+$ad_args = " -k file://$am_ior -a Test-IOR.cad";
+
+# CIAO daemon process definition
+$DS = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon",
+ "$daemon_args");
+
+## Starting up the CIAO daemon
+$DS->Spawn ();
+if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n";
+ $DS->Kill ();
+ exit 1;
+}
+
+
+$AM = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager",
+ $assembly_manager_args);
+$AM->Spawn ();
+if (PerlACE::waitforfile_timed ($am_ior, 15) == -1) {
+ print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n";
+ $AM->Kill ();
+ exit 1;
+}
+
+$AD = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer",
+ $ad_args);
+$AD->Spawn ();
+
+sleep (5);
+
+#Start the client to send the trigger message
+$CL = new PerlACE::Process ("../RoundTripClient/client", "");
+$CL->SpawnWaitKill(60);
+
+$AM->Kill ();
+$AD->Kill ();
+$DS->Kill ();
+#$CL->Kill ();
+
+#unlink $daemon_ior;
+#unlink $am_ior;
+unlink rtserver.ior;
+
+exit $status;
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp
new file mode 100644
index 00000000000..a1e3ed4f588
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp
@@ -0,0 +1,28 @@
+//
+// $Id$
+//
+#include "LatencyTest.h"
+#include "CIAO_common.h"
+
+LatencyTest_Impl::LatencyTest_Impl (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+
+CORBA::Long
+LatencyTest_Impl::makeCall (CORBA::Long send_time)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "Sending Time back \n"));
+
+ return send_time;
+}
+
+void
+LatencyTest_Impl::shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0);
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h
new file mode 100644
index 00000000000..9a13823eefe
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h
@@ -0,0 +1,42 @@
+//
+// $Id$
+//
+
+#ifndef LATENCYTEST_H
+#define LATENCYTEST_H
+#include /**/ "ace/pre.h"
+
+#include "../BenchmarkS.h"
+
+#if defined (_MSC_VER)
+# pragma warning(push)
+# pragma warning (disable:4250)
+#endif /* _MSC_VER */
+
+/// Implement the Test::LatencyTest interface
+class LatencyTest_Impl :
+ public virtual POA_Benchmark::LatencyTest
+{
+public:
+ /// Constructor
+ LatencyTest_Impl (CORBA::ORB_ptr orb);
+
+ // = The skeleton methods
+ virtual CORBA::Long makeCall (CORBA::Long send_time)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void shutdown ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+private:
+ /// Use an ORB reference to conver strings to objects and shutdown
+ /// the application.
+ CORBA::ORB_var orb_;
+};
+
+#if defined(_MSC_VER)
+# pragma warning(pop)
+#endif /* _MSC_VER */
+
+#include /**/ "ace/post.h"
+#endif /* LATENCYTEST_H */
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
new file mode 100644
index 00000000000..35a3dbed71b
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc
@@ -0,0 +1,14 @@
+// $Id$
+project (RoundTripServer) : strategies, ciao_component_dnc {
+ after += Benchmark_svnt
+ libs += Benchmark_stub Benchmark_svnt
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ server.cpp
+ LatencyTest.cpp
+ }
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl
new file mode 100644
index 00000000000..b7f83dbedd8
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl
@@ -0,0 +1,16 @@
+//
+// $Id$
+//
+
+/// Measure roundtrip delay
+interface LatencyTest
+{
+ /// A simple method to measure roundtrip delays
+ /**
+ * The operation simply returns its argument, this is used in AMI
+ * and deferred synchronous tests to measure the roundtrip delay
+ * without the need for a different reply handler for each
+ * request.
+ */
+ long makeCall (in long send_time);
+};
diff --git a/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp
new file mode 100644
index 00000000000..7259a966207
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp
@@ -0,0 +1,96 @@
+// $Id$
+
+#include "LatencyTest.h"
+#include "ace/Sched_Params.h"
+#include "ace/OS_NS_errno.h"
+
+#include "tao/Strategies/advanced_resource.h"
+
+const char *ior_output_file = "rtserver.ior";
+
+int
+main (int argc, char *argv[])
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
+ priority);
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "server (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "server (%P|%t): sched_params failed\n"));
+ }
+
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ LatencyTest_Impl *roundtrip_impl;
+ ACE_NEW_RETURN (roundtrip_impl,
+ LatencyTest_Impl (orb.in ()),
+ 1);
+ PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
+
+ Benchmark::LatencyTest_var roundtrip =
+ roundtrip_impl->_this ();
+
+ CORBA::String_var ior =
+ orb->object_to_string (roundtrip.in ());
+
+ // If the ior_output_file exists, output the ior to it
+ FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: %s",
+ ior_output_file),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", ior.in ());
+ ACE_OS::fclose (output_file);
+
+ ACE_DEBUG ((LM_DEBUG, "%s", ior.in ()));
+
+ poa_manager->activate ();
+
+ orb->run ();
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
+
+ root_poa->destroy (1, 1);
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad
new file mode 100644
index 00000000000..6ab0dd70aa0
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Benchmark.cad
@@ -0,0 +1,34 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE componentassembly SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/componentassembly.dtd">
+
+<componentassembly id="Single-process Basic assembly">
+ <componentfiles>
+ <componentfile id="com-RoundTrip">
+ <fileinarchive name="RoundTrip.csd"/>
+ </componentfile>
+ </componentfiles>
+
+ <partitioning>
+
+ <!-- A plain vanilla partition. We don't even need the processcollocation tag here. -->
+ <homeplacement id="a_RoundTripHome">
+ <componentfileref idref="com-RoundTrip"/>
+ <componentinstantiation id="a_RoundTrip">
+ <registercomponent>
+ <!-- writeiortofile is a non-standard CIAO extension. -->
+ <writeiortofile name="test.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+ </partitioning>
+
+ <!--
+ <connections>
+ </connections>
+ -->
+
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini b/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini
new file mode 100644
index 00000000000..ffe36ca3422
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/CIAO_Installation_Data.ini
@@ -0,0 +1,5 @@
+[ComponentInstallation]
+DCE:cf88cb97-b5a8-4522-9fa3-e626c75c5470=RoundTripClient_svnt
+DCE:568a3872-f7bb-4b3f-baba-44c6824d966d=RoundTripClient_exec
+DCE:2498aa68-09aa-478c-8ae1-30ed67924f82=RoundTrip_exec
+DCE:88c14bff-5158-4f48-9b22-8a1120e87f76=RoundTrip_svnt
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad
new file mode 100644
index 00000000000..0c0be0cb71c
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Multi_Threaded.cad
@@ -0,0 +1,112 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE componentassembly SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/componentassembly.dtd">
+<componentassembly id="Multi-client Component Scalability test">
+ <componentfiles>
+ <componentfile id="com-RoundTrip">
+ <fileinarchive name="RoundTrip.csd"/>
+ </componentfile>
+ <componentfile id="com-RoundTripClient">
+ <fileinarchive name="RoundTripClient.csd"/>
+ </componentfile>
+ </componentfiles>
+
+ <partitioning>
+
+ <homeplacement id="a_RoundTripHome">
+ <componentfileref idref="com-RoundTrip"/>
+ <componentinstantiation id="a_RoundTrip"/>
+ </homeplacement>
+
+ <processcollocation>
+ <homeplacement id="a_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="a_RoundTripClient">
+ <registercomponent>
+ <writeiortofile name="comp1.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+
+ <homeplacement id="b_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="b_RoundTripClient">
+ <registercomponent>
+ <writeiortofile name="comp2.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+ <homeplacement id="c_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="c_RoundTripClient">
+ <registercomponent>
+ <writeiortofile name="comp3.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+
+ <homeplacement id="d_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="d_RoundTripClient">
+ <registercomponent>
+ <writeiortofile name="comp4.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+ <destination>Remote</destination>
+ </processcollocation>
+
+ </partitioning>
+
+
+ <connections>
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="a_RoundTripClient"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>latency</providesidentifier>
+ <componentinstantiationref idref="a_RoundTrip"/>
+ </providesport>
+ </connectinterface>
+
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="b_RoundTripClient"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>latency</providesidentifier>
+ <componentinstantiationref idref="a_RoundTrip"/>
+ </providesport>
+ </connectinterface>
+
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="c_RoundTripClient"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>latency</providesidentifier>
+ <componentinstantiationref idref="a_RoundTrip"/>
+ </providesport>
+ </connectinterface>
+
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="d_RoundTripClient"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>latency</providesidentifier>
+ <componentinstantiationref idref="a_RoundTrip"/>
+ </providesport>
+ </connectinterface>
+ </connections>
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt b/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt
new file mode 100644
index 00000000000..7bcd2fbfade
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/NOTE.txt
@@ -0,0 +1,65 @@
+This directory contains various XML descriptors and configuration
+files required to run benchmarking experiments using CIAO in
+different ways. Let's go over a few important files first:
+
+test.dat:
+---------
+
+ This file describes the deployment daemons CIAO's Assembly_Manager
+ will contact to instantiate ComponentServer's, home's, and component
+ instances. Each line specify the name of a installation
+ "destination" (I used this to specify <processcollocation>
+ destination in various *.cad files) and the corresponding IOR for
+ the CIAO_Daemon. The first entry is the "default" destination the
+ deployment framework will use.
+
+ For example, test.dat now contains:
+
+ Default corbaloc:iiop:localhost:10000/ServerActivator
+ Remote corbaloc:iiop:localhost:12000/ServerActivator
+
+ You can copy and modify the copy to deploy the components in various
+ different locations to let the application truely "distributed".
+ For example, changing the remote ServerActivator to:
+ corbaloc:iiop:deuce.doc.wustl.edu:13000/ServerActivator
+
+ Remember to start up the Assembly_Manager in Step 2 using the
+ revised "test.dat" you created, and start up the CIAO_Daemon's in
+ Step 1 according to the specification.
+
+*.cad:
+------
+
+ These files specify how an application should be composed. The
+ specification includes, where to install a component, what
+ implementation to use, and how to connect components together.
+ Currently, we have:
+
+ Benchmark.cad: Plain vanilla assembly descriptor. This file installs
+ the RoundTrip component on the location given in test.dat.
+ RoundTripClient.cad : A descriptor file for the client component
+ RoundTripClient that uses the interface provided by
+ RoundTrip.
+ Test-IOR.cad: This cad file should be used to for testing a CORBA server
+ with a CIAO client. The IOR of the server should added in
+ this file.
+
+There are automated perl scripts that can run the tests to generate the
+required results. These are located in the individual component directories
+Round Trip and RoundTripClient. The descriptors directory has the required
+.cad files that specify the component configuration used in the various
+experiments.
+
+To run a simple CORBA component with a normal client:
+ cd descriptors;
+ ../Roundtrip/run_test.pl
+
+ cd descritors;
+ ../RoundTripClient/run_test.pl
+ Script that runs two components one acts as a client and the other as the
+ server. Statistics are printed for RoundTrip latency jitter etc
+
+ cd descritors;
+ ../RoundTripClient/run_test_ior_cad.pl
+ Script runs a CORBA server and a CIAO component that acts as a client.
+ Similar statistics are printed.
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd
new file mode 100644
index 00000000000..ebf8c4e1e15
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.csd
@@ -0,0 +1,46 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+
+<!DOCTYPE softpkg SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/softpkg.dtd">
+
+<!-- RoundTrip's Software Package Descriptor -->
+<!-- This file describes various RoundTrip executor -->
+<!-- implementations. -->
+
+<softpkg name="CIAO-TEST" version="1.0">
+ <pkgtype>CORBA Component</pkgtype>
+ <title>RoundTrip</title>
+ <author>
+ <company>ISIS at Vanderbilt University</company>
+ <webpage href="http://www.dre.vanderbilt.edu/"/>
+ </author>
+ <description>A RoundTrip component.</description>
+ <license href="http://www.cs.wustl.edu/~schmidt/ACE-copying.html"/>
+ <idl id="IDL:Benchmark/RoundTrip:1.0" homeid="IDL:Benchmark/RoundTripHome:1.0">
+ <fileinarchive name="RoundTrip.idl"/>
+ </idl>
+ <descriptor type="CORBA Component">
+ <fileinarchive name="RoundTrip.ccd"/>
+ </descriptor>
+ <implementation id="DCE:2498aa68-09aa-478c-8ae1-30ed67924f82">
+
+ <!-- CIAO extension -->
+ <dependency type="CIAODLL">
+ <softpkgref>
+ <!-- .ssd stands for Servant Software Descriptors which is a CIAO extension -->
+ <fileinarchive name="RoundTrip.ssd"/>
+ <implref idref="DCE:88c14bff-5158-4f48-9b22-8a1120e87f76"/>
+ </softpkgref>
+ </dependency>
+
+ <code type="DLL">
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="RoundTrip_exec"/>
+ <entrypoint>createRoundTripHome_Impl</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd
new file mode 100644
index 00000000000..b9720b9f2f1
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTrip.ssd
@@ -0,0 +1,43 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+
+<!DOCTYPE softpkg SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/softpkg.dtd">
+
+<!-- RoundTrip's Servant Software Descriptor -->
+<!-- This file describes various RoundTrip servant -->
+<!-- implementations. -->
+
+<softpkg name="CIAO-RoundTrip-Servant" version="1.0">
+ <pkgtype>CIAO Servant</pkgtype>
+ <title>Benchmark::RoundTrip Servants</title>
+ <author>
+ <company>ISIS at Vanderbilt University</company>
+ <webpage href="http://www.dre.vanderbilt.edu/"/>
+ </author>
+ <description>Single-Threaded Latency test component for benchmarking.</description>
+ <license href="http://www.cs.wustl.edu/~schmidt/ACE-copying.html"/>
+ <idl id="IDL:Benchmark/RoundTrip:1.0" homeid="IDL:Benchmark/RoundTripHome:1.0">
+ <fileinarchive name="RoundTrip.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="RoundTrip.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:88c14bff-5158-4f48-9b22-8a1120e87f76">
+
+ <dependency type="ORB">
+ <name>TAO</name>
+ </dependency>
+
+ <code>
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="RoundTrip_svnt"/>
+ <entrypoint>createRoundTripHome_Servant</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad
new file mode 100644
index 00000000000..d53416195a2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.cad
@@ -0,0 +1,49 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE componentassembly SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/componentassembly.dtd">
+<componentassembly id="Collocated Round-Trip test">
+ <componentfiles>
+ <componentfile id="com-RoundTrip">
+ <fileinarchive name="RoundTrip.csd"/>
+ </componentfile>
+ <componentfile id="com-RoundTripClient">
+ <fileinarchive name="RoundTripClient.csd"/>
+ </componentfile>
+ </componentfiles>
+
+ <partitioning>
+
+<homeplacement id="a_RoundTripHome">
+ <componentfileref idref="com-RoundTrip"/>
+ <componentinstantiation id="a_RoundTrip"/>
+ </homeplacement>
+
+<homeplacement id="a_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="a_RoundTripClient">
+ <registercomponent>
+ <!-- writeiortofile is a non-standard CIAO extension. -->
+ <writeiortofile name="test.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+ <!-- A plain vanilla partition. We don't even need the processcollocation tag here. -->
+
+ </partitioning>
+
+ <connections>
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="a_RoundTripClient"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>latency</providesidentifier>
+ <componentinstantiationref idref="a_RoundTrip"/>
+ </providesport>
+ </connectinterface>
+ </connections>
+
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd
new file mode 100644
index 00000000000..c52288e3207
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.csd
@@ -0,0 +1,44 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/softpkg.dtd">
+<!-- RoundTripClient's Software Package Descriptor -->
+<!-- This file describes various RoundTripClient executor -->
+<!-- implementations. -->
+
+
+<softpkg name="CIAO-TEST" version="1.0">
+ <pkgtype>CORBA Component</pkgtype>
+ <title>RoundTripClient</title>
+ <author>
+ <company>ISIS at Vanderbilt University</company>
+ <webpage href="http://www.dre.vanderbilt.edu/"/>
+ </author>
+ <description>A RoundTripClient component.</description>
+ <license href="http://www.cs.wustl.edu/~schmidt/ACE-copying.html"/>
+ <idl id="IDL:Benchmark/RoundTripClient:1.0" homeid="IDL:Benchmark/RoundTripClientHome:1.0">
+ <fileinarchive name="RoundTripClient.idl"/>
+ </idl>
+ <descriptor type="CORBA Component">
+ <fileinarchive name="RoundTripClient.ccd"/>
+ </descriptor>
+ <implementation id="DCE:568a3872-f7bb-4b3f-baba-44c6824d966d">
+
+ <!-- CIAO extension -->
+ <dependency type="CIAODLL">
+ <softpkgref>
+ <!-- .ssd stands for Servant Software Descriptors which is a CIAO extension -->
+ <fileinarchive name="RoundTripClient.ssd"/>
+ <implref idref="DCE:cf88cb97-b5a8-4522-9fa3-e626c75c5470"/>
+ </softpkgref>
+ </dependency>
+
+ <code type="DLL">
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="RoundTripClient_exec"/>
+ <entrypoint>createRoundTripClientHome_Impl</entrypoint>
+ </code>
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd
new file mode 100644
index 00000000000..86397731ed2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/RoundTripClient.ssd
@@ -0,0 +1,39 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/softpkg.dtd">
+<!-- RoundTripClient's Servant Software Descriptor -->
+<!-- This file describes various RoundTripClient servant -->
+<!-- implementations. -->
+
+<softpkg name="CIAO-RoundTripClient-Servant" version="1.0">
+ <pkgtype>CIAO Servant</pkgtype>
+ <title>Benchmark::RoundTripClient Servants</title>
+ <author>
+ <company>ISIS at Vanderbilt University</company>
+ <webpage href="http://www.dre.vanderbilt.edu/"/>
+ </author>
+ <description>Single-Threaded Latency test component for benchmarking.</description>
+ <license href="http://www.cs.wustl.edu/~schmidt/ACE-copying.html"/>
+ <idl id="IDL:Benchmark/RoundTripClient:1.0" homeid="IDL:Benchmark/RoundTripClientHome:1.0">
+ <fileinarchive name="RoundTripClient.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="RoundTripClient.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:cf88cb97-b5a8-4522-9fa3-e626c75c5470">
+
+ <dependency type="ORB">
+ <name>TAO</name>
+ </dependency>
+
+ <code>
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="RoundTripClient_svnt"/>
+ <entrypoint>createRoundTripClientHome_Servant</entrypoint>
+ </code>
+ </implementation>
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad b/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad
new file mode 100644
index 00000000000..a917affec85
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad
@@ -0,0 +1,41 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE componentassembly SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/componentassembly.dtd">
+
+<componentassembly id="Single-process Basic assembly">
+ <componentfiles>
+ <componentfile id="com-RoundTripClient">
+ <fileinarchive name="RoundTripClient.csd"/>
+ </componentfile>
+ </componentfiles>
+
+ <partitioning>
+ <homeplacement id="a_RoundTripClientHome">
+ <componentfileref idref="com-RoundTripClient"/>
+ <componentinstantiation id="a_RoundTripClient">
+ <registercomponent>
+ <!-- writeiortofile is a non-standard CIAO extension. -->
+ <writeiortofile name="test.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+ </partitioning>
+
+<connections>
+ <connectinterface>
+ <usesport>
+ <usesidentifier>latency</usesidentifier>
+ <componentinstantiationref idref="a_RoundTripClient"/>
+ </usesport>
+ <existinginterface>
+ <findby>
+ <!-- One needs to add the correct IOR of the server here -->
+ <stringifiedobjectref>file://rtserver.ior</stringifiedobjectref>
+ </findby>
+ </existinginterface>
+ </connectinterface>
+</connections>
+
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat b/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat
new file mode 100644
index 00000000000..014fb02c9bc
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/test-multi-process.dat
@@ -0,0 +1,5 @@
+Default corbaloc:iiop:localhost:10000/ServerActivator
+Remote1 corbaloc:iiop:localhost:12000/ServerActivator
+Remote2 corbaloc:iiop:localhost:13000/ServerActivator
+Remote3 corbaloc:iiop:localhost:14000/ServerActivator
+Remote4 corbaloc:iiop:localhost:15000/ServerActivator
diff --git a/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat b/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat
new file mode 100644
index 00000000000..d355abc779a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/descriptors/test.dat
@@ -0,0 +1,2 @@
+Default corbaloc:iiop:localhost:10000/ServerActivator
+Remote corbaloc:iiop:localhost:12000/ServerActivator
diff --git a/modules/CIAO/performance-tests/Benchmark/server.cpp b/modules/CIAO/performance-tests/Benchmark/server.cpp
new file mode 100644
index 00000000000..c7f39d42809
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/server.cpp
@@ -0,0 +1,89 @@
+// $Id$
+
+#include "LatencyTest.h"
+
+#include "ace/Sched_Params.h"
+#include "ace/OS_NS_errno.h"
+
+#include "tao/Strategies/advanced_resource.h"
+
+const char *ior_output_file = "test.ior";
+
+int
+main (int argc, char *argv[])
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
+ priority);
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "server (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "server (%P|%t): sched_params failed\n"));
+ }
+
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ LatencyTest *roundtrip_impl;
+ ACE_NEW_RETURN (roundtrip_impl,
+ LatencyTest (orb.in ()),
+ 1);
+ PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
+
+ //Get the RoundTrip reference
+ Benchmark::LatencyTest_var roundtrip =
+ roundtrip_impl->_this ();
+
+ CORBA::String_var ior =
+ orb->object_to_string (roundtrip.in ());
+
+ // If the ior_output_file exists, output the ior to it
+ ACE_DEBUG ((LM_DEBUG, "%s", ior.in ()));
+
+ poa_manager->activate ();
+
+ orb->run ();
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
+
+ root_poa->destroy (1, 1);
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/Benchmark/svc.conf b/modules/CIAO/performance-tests/Benchmark/svc.conf
new file mode 100644
index 00000000000..7b8129f5667
--- /dev/null
+++ b/modules/CIAO/performance-tests/Benchmark/svc.conf
@@ -0,0 +1,6 @@
+#
+# $Id$
+#
+static Advanced_Resource_Factory "-ORBReactorMaskSignals 0 -ORBInputCDRAllocator null -ORBReactorType select_st -ORBConnectionCacheLock null"
+static Server_Strategy_Factory "-ORBPOALock null -ORBAllowReactivationOfSystemids 0"
+static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBProfileLock null -ORBClientConnectionHandler RW"
diff --git a/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp b/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp
new file mode 100644
index 00000000000..2ea3c57a1c3
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Controller/Controller.cpp
@@ -0,0 +1,229 @@
+// $Id$
+
+#include "SenderC.h"
+#include "ReceiverC.h"
+#include "tao/ORB_Constants.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_string.h"
+
+
+static const char *sender_ior = "file://sender.ior";
+static const char *distributor_ior = "file://distributor.ior";
+static const char *receiver_ior = "file://receiver.ior";
+static int shutdown_sender = 0;
+static int shutdown_distributor = 0;
+static int shutdown_receiver = 0;
+static CORBA::ULong iterations = 5;
+static CORBA::ULong invocation_rate = 5;
+static int count_missed_end_deadlines = 0;
+static int do_dump_history = 0;
+static int print_missed_invocations = 0;
+static CORBA::ULong message_size = 100;
+static const char *test_protocol = "IIOP";
+static int print_statistics = 1;
+static int number_of_connection_attempts = 20;
+static int enable_diffserv_code_points = 0;
+static int corba_priority = 0;
+static const char *test_type = "PACED";
+
+static int
+parse_args (int argc, char **argv)
+{
+ ACE_Get_Opt get_opts (argc, argv, "a:b:c:d:e:i:m:p:r:s:t:u:v:w:x:y:z:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'a':
+ test_type = get_opts.opt_arg ();
+ break;
+
+ case 'b':
+ enable_diffserv_code_points = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'c':
+ corba_priority = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'd':
+ do_dump_history = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'e':
+ count_missed_end_deadlines = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'i':
+ iterations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'm':
+ print_missed_invocations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'p':
+ test_protocol = get_opts.opt_arg ();
+ break;
+
+ case 'r':
+ invocation_rate = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 's':
+ message_size = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 't':
+ print_statistics = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'u':
+ sender_ior = get_opts.opt_arg ();
+ break;
+
+ case 'v':
+ distributor_ior = get_opts.opt_arg ();
+ break;
+
+ case 'w':
+ receiver_ior = get_opts.opt_arg ();
+ break;
+
+ case 'x':
+ shutdown_sender = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'y':
+ shutdown_distributor = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case 'z':
+ shutdown_receiver = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "\t-a <test type> (defaults to %s [valid values are PACED, THROUGHPUT, and LATENCY)\n"
+ "\t-b <enable diffserv code points> (defaults to %d)\n"
+ "\t-c <corba priority> (defaults to %d)\n"
+ "\t-d <show history> (defaults to %d)\n"
+ "\t-e <count missed end deadlines> (defaults to %d)\n"
+ "\t-h <help: shows options menu>\n"
+ "\t-i <iterations> (defaults to %d)\n"
+ "\t-m <print missed invocations for paced workers> (defaults to %d)\n"
+ "\t-p <test protocol> (defaults to %s [valid values are IIOP, DIOP, and SCIOP])\n"
+ "\t-r <invocation rate> (defaults to %d)\n"
+ "\t-s <message size> (defaults to %d)\n"
+ "\t-t <print stats> (defaults to %d)\n"
+ "\t-u <sender ior> (defaults to %s)\n"
+ "\t-v <distributor ior> (defaults to %s)\n"
+ "\t-w <receiver ior> (defaults to %s)\n"
+ "\t-x <shutdown sender> (defaults to %d)\n"
+ "\t-y <shutdown distributor> (defaults to %d)\n"
+ "\t-z <shutdown receiver> (defaults to %d)\n"
+ "\n",
+ argv[0],
+ test_type,
+ enable_diffserv_code_points,
+ corba_priority,
+ do_dump_history,
+ count_missed_end_deadlines,
+ iterations,
+ print_missed_invocations,
+ test_protocol,
+ invocation_rate,
+ message_size,
+ print_statistics,
+ sender_ior,
+ distributor_ior,
+ receiver_ior,
+ shutdown_sender,
+ shutdown_distributor,
+ shutdown_receiver),
+ -1);
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "");
+
+ int result =
+ parse_args (argc, argv);
+ if (result != 0)
+ return result;
+
+ CORBA::Object_var object =
+ orb->string_to_object (sender_ior);
+
+ Protocols::Sender_var sender =
+ Protocols::Sender::_narrow (object.in ());
+
+ object =
+ orb->string_to_object (receiver_ior);
+
+ CORBA::ULong test_protocol_tag = IOP::TAG_INTERNET_IOP;
+ if (ACE_OS::strcmp (test_protocol, "DIOP") == 0)
+ test_protocol_tag = TAO_TAG_DIOP_PROFILE;
+ else if (ACE_OS::strcmp (test_protocol, "SCIOP") == 0)
+ test_protocol_tag = TAO_TAG_SCIOP_PROFILE;
+
+ Protocols::Sender_Controller::Test_Type test_type_tag = Protocols::Sender_Controller::PACED;
+ if (ACE_OS::strcmp (test_type, "THROUGHPUT") == 0)
+ test_type_tag = Protocols::Sender_Controller::THROUGHPUT;
+ else if (ACE_OS::strcmp (test_type, "LATENCY") == 0)
+ test_type_tag = Protocols::Sender_Controller::LATENCY;
+
+ sender->start (iterations,
+ invocation_rate,
+ count_missed_end_deadlines,
+ do_dump_history,
+ print_missed_invocations,
+ message_size,
+ test_protocol_tag,
+ print_statistics,
+ number_of_connection_attempts,
+ enable_diffserv_code_points,
+ corba_priority,
+ test_type_tag);
+
+ if (shutdown_sender)
+ sender->shutdown ();
+
+ if (shutdown_distributor)
+ {
+ Protocols::Receiver_var distributor =
+ Protocols::Receiver::_narrow (object.in ());
+
+ distributor->shutdown ();
+ }
+
+ if (shutdown_receiver)
+ {
+ Protocols::Receiver_var receiver =
+ Protocols::Receiver::_narrow (object.in ());
+
+ receiver->shutdown ();
+ }
+
+ return 0;
+ }
+ catch (CORBA::Exception &exception)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Unexpected exception caught by client: %s (%s)\n",
+ exception._name (),
+ exception._rep_id ()));
+
+ return -1;
+ }
+}
diff --git a/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc b/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc
new file mode 100644
index 00000000000..b857bb7481b
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Controller/Controller.mpc
@@ -0,0 +1,9 @@
+// $Id$
+
+project (perf*) : ciao_client_dnc, rtcorba {
+ avoids += ace_for_tao
+ after += Protocols_Sender_stub Protocols_Receiver_stub
+ includes += ../Sender
+ includes += ../Receiver
+ libs += Protocols_Receiver_stub Protocols_Sender_stub Protocols_stub
+}
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.cidl b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.cidl
new file mode 100644
index 00000000000..c69fc91d864
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.cidl
@@ -0,0 +1,13 @@
+// $Id$
+
+#include "Receiver.idl"
+
+composition session ReceiverImpl
+{
+ home executor ReceiverHomeExec
+ {
+ implements Protocols::ReceiverHome;
+ manages ReceiverExec;
+ };
+};
+
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl
new file mode 100644
index 00000000000..ca2ed444513
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.idl
@@ -0,0 +1,21 @@
+// $Id$
+
+#include <Components.idl>
+#include "../common/Protocols.idl"
+
+module Protocols
+{
+ interface Receiver_Controller
+ {
+ void shutdown ();
+ };
+
+ component Receiver supports Receiver_Controller
+ {
+ provides test writer;
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+};
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc
new file mode 100644
index 00000000000..a87f99d602f
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver.mpc
@@ -0,0 +1,81 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Protocols Receiver"
+
+project(Protocols_Receiver_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ libs += Protocols_stub
+ after += Protocols_stub
+ sharedname = Protocols_Receiver_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+
+ IDL_Files {
+ Receiver.idl
+ }
+
+ Source_Files {
+ ReceiverC.cpp
+ }
+
+ Header_Files {
+ Receiver_stub_export.h
+ }
+}
+
+project(Protocols_Receiver_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Protocols_skel Protocols_Receiver_stub
+ sharedname = Protocols_Receiver_svnt
+ libs += Protocols_Receiver_stub Protocols_stub Protocols_skel
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=RECEIVER_SVNT_Export \
+ -Wb,export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Receiver.cidl
+ }
+
+ IDL_Files {
+ ReceiverE.idl
+ }
+
+ Source_Files {
+ ReceiverEC.cpp
+ ReceiverS.cpp
+ Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ Receiver_svnt_export.h
+ }
+}
+
+
+project(Protocols_Receiver_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Protocols_Receiver_svnt
+ sharedname = Protocols_Receiver_exec
+ libs += Protocols_Receiver_stub Protocols_Receiver_svnt Protocols_stub Protocols_skel
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Receiver_exec_export.h
+ }
+}
+
+
+
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp
new file mode 100644
index 00000000000..4ca39d6f56d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.cpp
@@ -0,0 +1,318 @@
+// $Id$
+
+#include "Receiver_exec.h"
+#include "ace/Stats.h"
+#include "tao/debug.h"
+
+static int do_dump_history = 0;
+static int print_missed_invocations = 0;
+static ACE_UINT32 gsf = 0;
+
+namespace CIDL_ReceiverImpl
+{
+ test_i::test_i (void)
+ : inter_arrival_times_ (0),
+ iterations_ (0),
+ session_id_ (-1)
+ {
+ gsf = ACE_High_Res_Timer::global_scale_factor ();
+ }
+
+ void
+ test_i::start_test (CORBA::Long session_id,
+ const char *protocol,
+ CORBA::ULong invocation_rate,
+ CORBA::ULong message_size,
+ CORBA::ULong iterations)
+ throw (CORBA::SystemException)
+ {
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Session id starts %d\n",
+ session_id));
+
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Protocol = %5s Invocation Rate = %3d Message Size = %5d Expected Latency = %4d ",
+ protocol,
+ invocation_rate,
+ message_size,
+ 1000 / invocation_rate));
+
+ // Remember test parameters.
+ this->session_id_ = session_id;
+ this->iterations_ = iterations;
+ this->number_of_invocations_received_ = 0;
+
+ //
+ // Initialize counters and tables.
+ //
+ this->inter_arrival_times_ =
+ new ACE_Sample_History (iterations);
+
+ this->first_invocation_ = 1;
+
+ this->invocations_received_.size (iterations);
+ for (CORBA::ULong i = 0;
+ i < iterations;
+ ++i)
+ this->invocations_received_[i] = 0;
+
+ // Record start time.
+ this->test_start_ =
+ ACE_OS::gethrtime ();
+ }
+
+ void
+ test_i::end_test (void)
+ throw (CORBA::SystemException)
+ {
+ // Record end time.
+ this->test_end_ =
+ ACE_OS::gethrtime ();
+
+ if (do_dump_history)
+ {
+ this->inter_arrival_times_->dump_samples ("Inter-arrival times", gsf);
+ }
+
+ ACE_Basic_Stats stats;
+ this->inter_arrival_times_->collect_basic_stats (stats);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Max Latency = %6d ",
+ stats.max_ / gsf / 1000));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Invocations expected / received / missed / missed %% = %6d / %6d / %6d / %5.2f\n",
+ this->iterations_,
+ this->number_of_invocations_received_,
+ this->iterations_ - this->number_of_invocations_received_,
+ (this->iterations_ - this->number_of_invocations_received_) / (double) this->iterations_ * 100));
+
+ if (print_missed_invocations)
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nFollowing invocations were never received:\n"));
+
+ for (CORBA::ULong i = 0;
+ i < this->iterations_;
+ ++i)
+ {
+ if (this->invocations_received_[i] == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%d ",
+ i));
+ }
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "\n"));
+ }
+
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Session id ends %d\n",
+ this->session_id_));
+
+ stats.dump_results ("Inter-arrival times", gsf);
+
+ ACE_Throughput_Stats::dump_throughput ("Inter-arrival times", gsf,
+ this->test_end_ - this->test_start_,
+ stats.samples_count ());
+ }
+
+ this->session_id_ = -1;
+
+ delete this->inter_arrival_times_;
+ }
+
+ void
+ test_i::oneway_sync (void)
+ throw (CORBA::SystemException)
+ {
+ }
+
+ void
+ test_i::twoway_sync (void)
+ throw (CORBA::SystemException)
+ {
+ }
+
+ void
+ test_i::oneway_method (CORBA::Long session_id,
+ CORBA::ULong iteration,
+ const Protocols::test::octets &payload)
+ throw (CORBA::SystemException)
+ {
+ if (this->session_id_ != session_id)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Late message with iteration id = %d: will not count message\n",
+ iteration));
+ return;
+ }
+
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "test_i::oneway_method -> session id = %d iteration = %d payload size = %d\n",
+ session_id,
+ iteration,
+ payload.length ()));
+ }
+
+ this->invocations_received_[iteration] = 1;
+ ++this->number_of_invocations_received_;
+
+ ACE_hrtime_t time_of_current_call =
+ ACE_OS::gethrtime ();
+
+ if (this->first_invocation_)
+ this->first_invocation_ = 0;
+ else
+ this->inter_arrival_times_->sample (time_of_current_call - this->time_of_last_call_);
+
+ this->time_of_last_call_ = time_of_current_call;
+ }
+
+ void
+ test_i::twoway_method (CORBA::Long &session_id,
+ CORBA::ULong &iteration,
+ Protocols::test::octets &payload)
+ throw (CORBA::SystemException)
+ {
+ if (this->session_id_ != session_id)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Late message with iteration id = %d: will not count message\n",
+ iteration));
+ return;
+ }
+
+ if (TAO_debug_level > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "test_i::twoway_method -> session id = %d iteration = %d payload size = %d\n",
+ session_id,
+ iteration,
+ payload.length ()));
+ }
+
+ this->invocations_received_[iteration] = 1;
+ ++this->number_of_invocations_received_;
+
+ ACE_hrtime_t time_of_current_call =
+ ACE_OS::gethrtime ();
+
+ if (this->first_invocation_)
+ this->first_invocation_ = 0;
+ else
+ this->inter_arrival_times_->sample (time_of_current_call - this->time_of_last_call_);
+
+ this->time_of_last_call_ = time_of_current_call;
+ }
+
+ ReceiverExec_i::ReceiverExec_i (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ReceiverExec_i\n"));
+
+ int argc = 0;
+ char **argv = 0;
+
+ this->orb_ =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ }
+
+ ::Protocols::CCM_test_ptr
+ ReceiverExec_i::get_writer (void)
+ throw (CORBA::SystemException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::get_writer\n"));
+ return new test_i;
+ }
+
+ void
+ ReceiverExec_i::shutdown (void)
+ throw (CORBA::SystemException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::shutdown\n"));
+ this->orb_->shutdown ();
+ }
+
+ void
+ ReceiverExec_i::set_session_context (Components::SessionContext_ptr ctx)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::set_session_context\n"));
+
+ this->context_ =
+ ReceiverExec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+ }
+
+ void
+ ReceiverExec_i::ccm_activate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_activate\n"));
+ }
+
+ void
+ ReceiverExec_i::ccm_passivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_passivate\n"));
+ }
+
+ void
+ ReceiverExec_i::ccm_remove (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_remove\n"));
+ }
+
+ void
+ ReceiverExec_i::ciao_preactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_preactivate\n"));
+ }
+
+ void
+ ReceiverExec_i::ciao_postactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverExec_i::ccm_postactivate\n"));
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverHomeExec_i::create (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+ {
+ ACE_DEBUG ((LM_DEBUG, "ReceiverHome_exec::create\n"));
+ return new ReceiverExec_i;
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void)
+ {
+ ACE_DEBUG ((LM_DEBUG, "createReceiverHome_Impl\n"));
+ return new ReceiverHomeExec_i;
+ }
+}
+
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h
new file mode 100644
index 00000000000..20b90f76dac
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec.h
@@ -0,0 +1,121 @@
+// $Id$
+
+#include "ReceiverEC.h"
+#include "Receiver_exec_export.h"
+#include "tao/LocalObject.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Sample_History.h"
+#include "ace/Array.h"
+
+namespace CIDL_ReceiverImpl
+{
+ class RECEIVER_EXEC_Export ReceiverExec_i :
+ public virtual ReceiverExec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ ReceiverExec_i (void);
+
+ ::Protocols::CCM_test_ptr get_writer (void)
+ throw (CORBA::SystemException);
+
+ void shutdown (void)
+ throw (CORBA::SystemException);
+
+ void set_session_context (Components::SessionContext_ptr ctx)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_activate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_passivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_remove (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ciao_preactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ciao_postactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ protected:
+
+ ReceiverExec_Context_var context_;
+
+ CORBA::ORB_var orb_;
+
+ };
+
+ class RECEIVER_EXEC_Export test_i :
+ public virtual Protocols::CCM_test,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ test_i (void);
+
+ void start_test (CORBA::Long session_id,
+ const char *protocol,
+ CORBA::ULong invocation_rate,
+ CORBA::ULong message_size,
+ CORBA::ULong iterations)
+ throw (CORBA::SystemException);
+
+ void end_test (void)
+ throw (CORBA::SystemException);
+
+ void oneway_sync (void)
+ throw (CORBA::SystemException);
+
+ void twoway_sync (void)
+ throw (CORBA::SystemException);
+
+ void oneway_method (CORBA::Long session_id,
+ CORBA::ULong iteration,
+ const Protocols::test::octets &payload)
+ throw (CORBA::SystemException);
+
+ void twoway_method (CORBA::Long &session_id,
+ CORBA::ULong &iteration,
+ Protocols::test::octets &payload)
+ throw (CORBA::SystemException);
+
+ private:
+ typedef ACE_Array_Base<CORBA::Boolean> Invocations;
+ Invocations invocations_received_;
+ ACE_hrtime_t time_of_last_call_;
+ ACE_hrtime_t test_start_;
+ ACE_hrtime_t test_end_;
+ CORBA::Boolean first_invocation_;
+ ACE_Sample_History *inter_arrival_times_;
+ CORBA::ULong iterations_;
+ CORBA::ULong number_of_invocations_received_;
+ CORBA::Long session_id_;
+ };
+
+ class RECEIVER_EXEC_Export ReceiverHomeExec_i :
+ public virtual ReceiverHomeExec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ ::Components::EnterpriseComponent_ptr create (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void);
+}
+
+
+
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec_export.h b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec_export.h
new file mode 100644
index 00000000000..8ad3640d130
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_EXEC
+// ------------------------------
+#ifndef RECEIVER_EXEC_EXPORT_H
+#define RECEIVER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_EXEC_HAS_DLL)
+# define RECEIVER_EXEC_HAS_DLL 1
+#endif /* ! RECEIVER_EXEC_HAS_DLL */
+
+#if defined (RECEIVER_EXEC_HAS_DLL) && (RECEIVER_EXEC_HAS_DLL == 1)
+# if defined (RECEIVER_EXEC_BUILD_DLL)
+# define RECEIVER_EXEC_Export ACE_Proper_Export_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_EXEC_BUILD_DLL */
+# define RECEIVER_EXEC_Export ACE_Proper_Import_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_EXEC_BUILD_DLL */
+#else /* RECEIVER_EXEC_HAS_DLL == 1 */
+# define RECEIVER_EXEC_Export
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_EXEC_HAS_DLL == 1 */
+
+// Set RECEIVER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_EXEC_NTRACE */
+
+#if (RECEIVER_EXEC_NTRACE == 1)
+# define RECEIVER_EXEC_TRACE(X)
+#else /* (RECEIVER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_EXEC_NTRACE == 1) */
+
+#endif /* RECEIVER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_stub_export.h b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_stub_export.h
new file mode 100644
index 00000000000..c457802854f
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_STUB
+// ------------------------------
+#ifndef RECEIVER_STUB_EXPORT_H
+#define RECEIVER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_STUB_HAS_DLL)
+# define RECEIVER_STUB_HAS_DLL 1
+#endif /* ! RECEIVER_STUB_HAS_DLL */
+
+#if defined (RECEIVER_STUB_HAS_DLL) && (RECEIVER_STUB_HAS_DLL == 1)
+# if defined (RECEIVER_STUB_BUILD_DLL)
+# define RECEIVER_STUB_Export ACE_Proper_Export_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_STUB_BUILD_DLL */
+# define RECEIVER_STUB_Export ACE_Proper_Import_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_STUB_BUILD_DLL */
+#else /* RECEIVER_STUB_HAS_DLL == 1 */
+# define RECEIVER_STUB_Export
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_STUB_HAS_DLL == 1 */
+
+// Set RECEIVER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_STUB_NTRACE */
+
+#if (RECEIVER_STUB_NTRACE == 1)
+# define RECEIVER_STUB_TRACE(X)
+#else /* (RECEIVER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_STUB_NTRACE == 1) */
+
+#endif /* RECEIVER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_svnt_export.h b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_svnt_export.h
new file mode 100644
index 00000000000..1c9eca2556d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Receiver/Receiver_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_SVNT
+// ------------------------------
+#ifndef RECEIVER_SVNT_EXPORT_H
+#define RECEIVER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_SVNT_HAS_DLL)
+# define RECEIVER_SVNT_HAS_DLL 1
+#endif /* ! RECEIVER_SVNT_HAS_DLL */
+
+#if defined (RECEIVER_SVNT_HAS_DLL) && (RECEIVER_SVNT_HAS_DLL == 1)
+# if defined (RECEIVER_SVNT_BUILD_DLL)
+# define RECEIVER_SVNT_Export ACE_Proper_Export_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_SVNT_BUILD_DLL */
+# define RECEIVER_SVNT_Export ACE_Proper_Import_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_SVNT_BUILD_DLL */
+#else /* RECEIVER_SVNT_HAS_DLL == 1 */
+# define RECEIVER_SVNT_Export
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_SVNT_HAS_DLL == 1 */
+
+// Set RECEIVER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_SVNT_NTRACE */
+
+#if (RECEIVER_SVNT_NTRACE == 1)
+# define RECEIVER_SVNT_TRACE(X)
+#else /* (RECEIVER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_SVNT_NTRACE == 1) */
+
+#endif /* RECEIVER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender.cidl b/modules/CIAO/performance-tests/Protocols/Sender/Sender.cidl
new file mode 100644
index 00000000000..b5be8747d98
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender.cidl
@@ -0,0 +1,13 @@
+// $Id$
+
+#include "Sender.idl"
+
+composition session SenderImpl
+{
+ home executor SenderHomeExec
+ {
+ implements Protocols::SenderHome;
+ manages SenderExec;
+ };
+};
+
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl b/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl
new file mode 100644
index 00000000000..200eaa0350a
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender.idl
@@ -0,0 +1,41 @@
+// $Id$
+
+#include <Components.idl>
+#include "../common/Protocols.idl"
+
+module Protocols
+{
+ interface Sender_Controller
+ {
+ enum Test_Type
+ {
+ PACED,
+ THROUGHPUT,
+ LATENCY
+ };
+
+ void start (in unsigned long iterations,
+ in unsigned long invocation_rate,
+ in boolean count_missed_end_deadlines,
+ in boolean do_dump_history,
+ in boolean print_missed_invocations,
+ in unsigned long message_size,
+ in unsigned long test_protocol_tag,
+ in boolean print_statistics,
+ in unsigned long number_of_connection_attempts,
+ in boolean enable_diffserv_code_points,
+ in short priority,
+ in Test_Type testtype);
+
+ void shutdown ();
+ };
+
+ component Sender supports Sender_Controller
+ {
+ uses test reader;
+ };
+
+ home SenderHome manages Sender
+ {
+ };
+};
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc b/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc
new file mode 100644
index 00000000000..2f65f552b5b
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender.mpc
@@ -0,0 +1,82 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Protocols Sender"
+
+project(Protocols_Sender_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ libs += Protocols_stub
+ after += Protocols_stub
+ sharedname = Protocols_Sender_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ Sender.idl
+ }
+
+ Source_Files {
+ SenderC.cpp
+ }
+
+ Header_Files {
+ Sender_stub_export.h
+ }
+}
+
+project(Protocols_Sender_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Protocols_skel Protocols_Sender_stub
+ sharedname = Protocols_Sender_svnt
+ libs += Protocols_Sender_stub Protocols_stub Protocols_skel
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=SENDER_SVNT_Export \
+ -Wb,export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Sender.cidl
+ }
+
+ IDL_Files {
+ SenderE.idl
+ }
+
+ Source_Files {
+ SenderEC.cpp
+ SenderS.cpp
+ Sender_svnt.cpp
+ }
+
+ Header_Files {
+ Sender_svnt_export.h
+ }
+}
+
+
+project(Protocols_Sender_exec) : ciao_component_dnc, rtcorba {
+ avoids += ace_for_tao
+ after += Protocols_Sender_svnt
+ sharedname = Protocols_Sender_exec
+ libs += Protocols_Sender_stub Protocols_Sender_svnt Protocols_stub Protocols_skel
+ includes += $(TAO_ROOT)/tests/RTCORBA/Diffserv
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec.cpp
+ }
+
+ Header_Files {
+ Sender_exec_export.h
+ }
+}
+
+
+
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp
new file mode 100644
index 00000000000..d579426574d
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.cpp
@@ -0,0 +1,720 @@
+// $Id$
+
+#include "tao/ORB_Constants.h"
+#include "tao/debug.h"
+#include "tao/RTCORBA/RTCORBA.h"
+#include "tao/RTCORBA/Network_Priority_Mapping_Manager.h"
+#include "tao/RTCORBA/Network_Priority_Mapping.h"
+#include "tao/RTCORBA/RT_Policy_i.h"
+#include "ace/OS_NS_unistd.h"
+#include "ace/OS_NS_string.h"
+#include "ace/OS_NS_stdlib.h"
+#include "ace/OS_NS_time.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Stats.h"
+#include "ace/Array.h"
+#include "ace/Sample_History.h"
+#include "Custom_Network_Priority_Mapping.h"
+#include "Custom_Network_Priority_Mapping.cpp"
+#include "Sender_exec.h"
+
+static ACE_UINT32 gsf = 0;
+
+double
+to_seconds (ACE_UINT64 hrtime,
+ ACE_UINT32 sf)
+{
+ double seconds =
+#if defined ACE_LACKS_LONGLONG_T
+ hrtime / sf;
+#else /* ! ACE_LACKS_LONGLONG_T */
+ static_cast<double> (ACE_UINT64_DBLCAST_ADAPTER (hrtime / sf));
+#endif /* ! ACE_LACKS_LONGLONG_T */
+ seconds /= ACE_HR_SCALE_CONVERSION;
+
+ return seconds;
+}
+
+ACE_UINT64
+to_hrtime (double seconds,
+ ACE_UINT32 sf)
+{
+ return ACE_UINT64 (seconds * sf * ACE_HR_SCALE_CONVERSION);
+}
+
+class Worker
+{
+public:
+ Worker (CORBA::ORB_ptr orb,
+ RTCORBA::RTORB_ptr rtorb,
+ CORBA::PolicyManager_ptr policy_manager,
+ Protocols::test_ptr test,
+ ::CORBA::ULong iterations,
+ ::CORBA::ULong invocation_rate,
+ ::CORBA::Boolean count_missed_end_deadlines,
+ ::CORBA::Boolean do_dump_history,
+ ::CORBA::Boolean print_missed_invocations,
+ ::CORBA::ULong message_size,
+ ::CORBA::ULong test_protocol_tag,
+ ::CORBA::ULong number_of_connection_attempts,
+ ::CORBA::Boolean enable_diffserv_code_points,
+ ::Protocols::Sender_Controller::Test_Type test_type);
+
+ void run (void);
+
+ void print_stats (void);
+
+ void setup (void);
+
+private:
+
+ ACE_hrtime_t deadline_for_current_call (CORBA::ULong i);
+ void missed_start_deadline (CORBA::ULong invocation);
+ void missed_end_deadline (CORBA::ULong invocation);
+
+ RTCORBA::RTORB_var rtorb_;
+ CORBA::PolicyManager_var policy_manager_;
+ Protocols::test_var test_;
+ ACE_Sample_History history_;
+ ACE_hrtime_t interval_between_calls_;
+ ACE_hrtime_t test_start_;
+ ACE_hrtime_t test_end_;
+ CORBA::ULong missed_start_deadlines_;
+ CORBA::ULong missed_end_deadlines_;
+
+ typedef ACE_Array_Base<CORBA::ULong> Missed_Invocations;
+ Missed_Invocations missed_start_invocations_;
+ Missed_Invocations missed_end_invocations_;
+
+ CORBA::PolicyList base_protocol_policy_;
+ CORBA::PolicyList test_protocol_policy_;
+
+ CORBA::Long session_id_;
+
+ ::CORBA::ULong iterations_;
+ ::CORBA::ULong invocation_rate_;
+ ::CORBA::Boolean count_missed_end_deadlines_;
+ ::CORBA::Boolean do_dump_history_;
+ ::CORBA::Boolean print_missed_invocations_;
+ ::CORBA::ULong message_size_;
+ ::CORBA::ULong test_protocol_tag_;
+ ::CORBA::ULong number_of_connection_attempts_;
+ ::CORBA::Boolean enable_diffserv_code_points_;
+ ::Protocols::Sender_Controller::Test_Type test_type_;
+};
+
+Worker::Worker (CORBA::ORB_ptr orb,
+ RTCORBA::RTORB_ptr rtorb,
+ CORBA::PolicyManager_ptr policy_manager,
+ Protocols::test_ptr test,
+ ::CORBA::ULong iterations,
+ ::CORBA::ULong invocation_rate,
+ ::CORBA::Boolean count_missed_end_deadlines,
+ ::CORBA::Boolean do_dump_history,
+ ::CORBA::Boolean print_missed_invocations,
+ ::CORBA::ULong message_size,
+ ::CORBA::ULong test_protocol_tag,
+ ::CORBA::ULong number_of_connection_attempts,
+ ::CORBA::Boolean enable_diffserv_code_points,
+ ::Protocols::Sender_Controller::Test_Type test_type)
+ : rtorb_ (RTCORBA::RTORB::_duplicate (rtorb)),
+ policy_manager_ (CORBA::PolicyManager::_duplicate (policy_manager)),
+ test_ (Protocols::test::_duplicate (test)),
+ history_ (iterations),
+ interval_between_calls_ (),
+ missed_start_deadlines_ (0),
+ missed_end_deadlines_ (0),
+ missed_start_invocations_ (iterations),
+ missed_end_invocations_ (iterations),
+ iterations_ (iterations),
+ invocation_rate_ (invocation_rate),
+ count_missed_end_deadlines_ (count_missed_end_deadlines),
+ do_dump_history_ (do_dump_history),
+ print_missed_invocations_ (print_missed_invocations),
+ message_size_ (message_size),
+ test_protocol_tag_ (test_protocol_tag),
+ number_of_connection_attempts_ (number_of_connection_attempts),
+ enable_diffserv_code_points_ (enable_diffserv_code_points),
+ test_type_ (test_type)
+{
+ // Each sender will have a random session id. This helps in
+ // identifying late packets arriving at the server.
+ ACE_OS::srand ((unsigned) ACE_OS::time (NULL));
+ this->session_id_ = ACE_OS::rand ();
+
+ // Interval is inverse of rate.
+ this->interval_between_calls_ =
+ to_hrtime (1 / double (this->invocation_rate_), gsf);
+
+ // Base protocol is used for setting up and tearing down the test.
+ this->base_protocol_policy_.length (1);
+
+ // Test protocol is the one being tested.
+ this->test_protocol_policy_.length (1);
+
+ RTCORBA::ProtocolProperties_var base_transport_protocol_properties =
+ TAO_Protocol_Properties_Factory::create_transport_protocol_property (IOP::TAG_INTERNET_IOP,
+ orb->orb_core ());
+
+ RTCORBA::TCPProtocolProperties_var tcp_base_transport_protocol_properties =
+ RTCORBA::TCPProtocolProperties::_narrow (base_transport_protocol_properties.in ());
+
+ tcp_base_transport_protocol_properties->enable_network_priority (this->enable_diffserv_code_points_);
+
+ RTCORBA::ProtocolList protocols;
+ protocols.length (1);
+ protocols[0].transport_protocol_properties =
+ base_transport_protocol_properties;
+ protocols[0].orb_protocol_properties =
+ RTCORBA::ProtocolProperties::_nil ();
+
+ // IIOP is always used for the base protocol.
+ protocols[0].protocol_type = IOP::TAG_INTERNET_IOP;
+
+ this->base_protocol_policy_[0] =
+ this->rtorb_->create_client_protocol_policy (protocols);
+
+ // User decides the test protocol.
+ protocols[0].protocol_type = test_protocol_tag;
+
+ RTCORBA::ProtocolProperties_var test_transport_protocol_properties =
+ TAO_Protocol_Properties_Factory::create_transport_protocol_property (protocols[0].protocol_type,
+ orb->orb_core ());
+
+ if (protocols[0].protocol_type == TAO_TAG_DIOP_PROFILE)
+ {
+ RTCORBA::UserDatagramProtocolProperties_var udp_test_transport_protocol_properties =
+ RTCORBA::UserDatagramProtocolProperties::_narrow (test_transport_protocol_properties.in ());
+
+ udp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points);
+ }
+ else if (protocols[0].protocol_type == TAO_TAG_SCIOP_PROFILE)
+ {
+ RTCORBA::StreamControlProtocolProperties_var sctp_test_transport_protocol_properties =
+ RTCORBA::StreamControlProtocolProperties::_narrow (test_transport_protocol_properties.in ());
+
+ sctp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points);
+ }
+ else if (protocols[0].protocol_type == IOP::TAG_INTERNET_IOP)
+ {
+ RTCORBA::TCPProtocolProperties_var tcp_test_transport_protocol_properties =
+ RTCORBA::TCPProtocolProperties::_narrow (test_transport_protocol_properties.in ());
+
+ tcp_test_transport_protocol_properties->enable_network_priority (enable_diffserv_code_points);
+ }
+
+ protocols[0].transport_protocol_properties =
+ test_transport_protocol_properties;
+
+ this->test_protocol_policy_[0] =
+ this->rtorb_->create_client_protocol_policy (protocols);
+}
+
+void
+Worker::print_stats (void)
+{
+ CORBA::ULong missed_total_deadlines =
+ this->missed_start_deadlines_ + this->missed_end_deadlines_;
+
+ CORBA::ULong made_total_deadlines =
+ this->iterations_ - missed_total_deadlines;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "\n************ Statistics ************\n\n"));
+
+ //
+ // Senders-side stats for PACED invocations are not too relevant
+ // since we are doing one way calls.
+ //
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Rate = %d/sec; Iterations = %d; ",
+ this->invocation_rate_,
+ this->iterations_));
+
+ if (this->count_missed_end_deadlines_)
+ ACE_DEBUG ((LM_DEBUG,
+ "Deadlines made/missed[start,end]/%% = %d/%d[%d,%d]/%.2f%%; Effective Rate = %.2f\n",
+ made_total_deadlines,
+ missed_total_deadlines,
+ this->missed_start_deadlines_,
+ this->missed_end_deadlines_,
+ made_total_deadlines * 100 / (double) this->iterations_,
+ made_total_deadlines / to_seconds (this->test_end_ - this->test_start_, gsf)));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "Deadlines made/missed/%% = %d/%d/%.2f%%; Effective Rate = %.2f\n",
+ made_total_deadlines,
+ missed_total_deadlines,
+ made_total_deadlines * 100 / (double) this->iterations_,
+ made_total_deadlines / to_seconds (this->test_end_ - this->test_start_, gsf)));
+
+ if (this->print_missed_invocations_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nMissed start invocations are:\n"));
+
+ for (CORBA::ULong j = 0;
+ j < this->missed_start_deadlines_;
+ ++j)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%d ",
+ this->missed_start_invocations_[j]));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "\n"));
+
+ if (this->count_missed_end_deadlines_)
+ {
+ ACE_DEBUG ((LM_DEBUG, "\nMissed end invocations are:\n"));
+
+ for (CORBA::ULong j = 0;
+ j < this->missed_end_deadlines_;
+ ++j)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%d ",
+ this->missed_end_invocations_[j]));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "\n"));
+ }
+ }
+ }
+
+ // Individual calls are relevant for the PACED and LATENCY tests.
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED ||
+ this->test_type_ == ::Protocols::Sender_Controller::LATENCY)
+ {
+ if (this->do_dump_history_)
+ {
+ this->history_.dump_samples ("HISTORY", gsf);
+ }
+
+ ACE_Basic_Stats stats;
+ this->history_.collect_basic_stats (stats);
+ stats.dump_results ("Total", gsf);
+
+ ACE_Throughput_Stats::dump_throughput ("Total", gsf,
+ this->test_end_ - this->test_start_,
+ this->iterations_);
+ }
+ else
+ {
+ ACE_hrtime_t elapsed_time =
+ this->test_end_ - this->test_start_;
+
+ double seconds =
+ to_seconds (elapsed_time, gsf);
+
+ ACE_hrtime_t bits = this->iterations_;
+ bits *= this->message_size_ * 8;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "%Q bits sent in %5.1f seconds at a rate of %5.2f Mbps\n",
+ bits,
+ seconds,
+ bits / seconds / 1000 / 1000));
+ }
+}
+
+ACE_hrtime_t
+Worker::deadline_for_current_call (CORBA::ULong i)
+{
+ ACE_hrtime_t deadline_for_current_call =
+ this->interval_between_calls_;
+
+ deadline_for_current_call *= (i + 1);
+
+ deadline_for_current_call += this->test_start_;
+
+ return deadline_for_current_call;
+}
+
+void
+Worker::missed_start_deadline (CORBA::ULong invocation)
+{
+ this->missed_start_invocations_[this->missed_start_deadlines_++] =
+ invocation;
+}
+
+void
+Worker::missed_end_deadline (CORBA::ULong invocation)
+{
+ if (this->count_missed_end_deadlines_)
+ this->missed_end_invocations_[this->missed_end_deadlines_++] =
+ invocation;
+}
+
+void
+Worker::setup (void)
+{
+ // Make sure we have a connection to the server using the test
+ // protocol.
+ this->policy_manager_->set_policy_overrides (this->test_protocol_policy_,
+ CORBA::SET_OVERRIDE);
+
+ // Since the network maybe unavailable temporarily, make sure to try
+ // for a few times before giving up.
+ for (CORBA::ULong j = 0;;)
+ {
+ try
+ {
+ // Send a message to ensure that the connection is setup.
+ this->test_->oneway_sync ();
+
+ break;
+ }
+ catch (CORBA::TRANSIENT &)
+ {
+ ++j;
+
+ if (j < this->number_of_connection_attempts_)
+ {
+ ACE_OS::sleep (1);
+
+ continue;
+ }
+ }
+
+ ACE_ERROR ((LM_ERROR,
+ "Cannot setup test protocol\n"));
+
+ ACE_OS::exit (-1);
+ }
+
+ const char *test_protocol = 0;
+ if (this->test_protocol_tag_ == IOP::TAG_INTERNET_IOP)
+ test_protocol = "IIOP";
+ else if (this->test_protocol_tag_ == TAO_TAG_DIOP_PROFILE)
+ test_protocol = "DIOP";
+ else if (this->test_protocol_tag_ == TAO_TAG_SCIOP_PROFILE)
+ test_protocol = "SCIOP";
+
+ // Use IIOP for setting up the test since the test protocol maybe
+ // unreliable.
+ this->policy_manager_->set_policy_overrides (this->base_protocol_policy_,
+ CORBA::SET_OVERRIDE);
+
+ // Since the network maybe unavailable temporarily, make sure to try
+ // for a few times before giving up.
+ for (CORBA::ULong k = 0;;)
+ {
+ try
+ {
+ // Let the server know what to expect..
+ this->test_->start_test (this->session_id_,
+ test_protocol,
+ this->invocation_rate_,
+ this->message_size_,
+ this->iterations_);
+
+ break;
+ }
+ catch (CORBA::TRANSIENT &)
+ {
+ ACE_OS::sleep (1);
+
+ if (k < this->number_of_connection_attempts_)
+ {
+ ACE_OS::sleep (1);
+
+ continue;
+ }
+ }
+
+ ACE_ERROR ((LM_ERROR,
+ "Cannot setup base protocol\n"));
+
+ ACE_OS::exit (-1);
+ }
+
+ return;
+}
+
+void
+Worker::run (void)
+{
+ // Select the test protocol for these invocation.
+ this->policy_manager_->set_policy_overrides (this->test_protocol_policy_,
+ CORBA::SET_OVERRIDE);
+
+ // Payload.
+ ::Protocols::test::octets_var payload (new ::Protocols::test::octets);
+ payload->length (this->message_size_);
+
+ CORBA::Octet *buffer =
+ payload->get_buffer ();
+
+ // Not necessary but good for debugging.
+ ACE_OS::memset (buffer,
+ 1,
+ this->message_size_ * sizeof (CORBA::Octet));
+
+ // Record the start time of the test.
+ this->test_start_ =
+ ACE_OS::gethrtime ();
+
+ // Test with several iterations.
+ for (CORBA::ULong i = 0;
+ i < this->iterations_;
+ ++i)
+ {
+ ACE_hrtime_t time_before_call = 0;
+ ACE_hrtime_t deadline_for_current_call = 0;
+
+ // For PACED and LATENCY, each sender call is individually
+ // noted.
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED ||
+ this->test_type_ == ::Protocols::Sender_Controller::LATENCY)
+ {
+ time_before_call =
+ ACE_OS::gethrtime ();
+
+ // Pacing code.
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED)
+ {
+ deadline_for_current_call =
+ this->deadline_for_current_call (i);
+
+ if (time_before_call > deadline_for_current_call)
+ {
+ this->missed_start_deadline (i);
+ continue;
+ }
+ }
+ }
+
+ // Use oneways for PACING and THROUGHPUT.
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED ||
+ this->test_type_ == ::Protocols::Sender_Controller::THROUGHPUT)
+ {
+ this->test_->oneway_method (this->session_id_,
+ i,
+ payload.in ());
+ }
+ else
+ {
+ // Use twoway calls for LATENCY.
+ this->test_->twoway_method (this->session_id_,
+ i,
+ payload.inout ());
+ }
+
+ // For PACED and LATENCY, each sender call is individually
+ // noted.
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED ||
+ this->test_type_ == ::Protocols::Sender_Controller::LATENCY)
+ {
+ ACE_hrtime_t time_after_call =
+ ACE_OS::gethrtime ();
+
+ if (this->test_type_ == ::Protocols::Sender_Controller::LATENCY)
+ this->history_.sample ((time_after_call - time_before_call) / 2);
+ else
+ this->history_.sample (time_after_call - time_before_call);
+
+ if (this->test_type_ == ::Protocols::Sender_Controller::PACED)
+ {
+ if (time_after_call > deadline_for_current_call)
+ {
+ this->missed_end_deadline (i);
+ continue;
+ }
+
+ ACE_hrtime_t sleep_time =
+ deadline_for_current_call - time_after_call;
+
+ ACE_OS::sleep (ACE_Time_Value (0,
+ long (to_seconds (sleep_time, gsf) *
+ ACE_ONE_SECOND_IN_USECS)));
+ }
+ }
+ }
+
+ // This call is used to ensure that all the THROUGHPUT related data
+ // has reached the server.
+ if (this->test_type_ == ::Protocols::Sender_Controller::THROUGHPUT &&
+ this->test_protocol_tag_ != TAO_TAG_DIOP_PROFILE)
+ {
+ this->test_->twoway_sync ();
+ }
+
+ // Record end time for the test.
+ this->test_end_ = ACE_OS::gethrtime ();
+
+ // Use IIOP to indicate end of test to server.
+ this->policy_manager_->set_policy_overrides (this->base_protocol_policy_,
+ CORBA::SET_OVERRIDE);
+
+ // Tell server that the test is over.
+ this->test_->end_test ();
+}
+
+CIDL_SenderImpl::SenderExec_i::SenderExec_i (void)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::SenderExec_i\n"));
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::start (
+ ::CORBA::ULong iterations,
+ ::CORBA::ULong invocation_rate,
+ ::CORBA::Boolean count_missed_end_deadlines,
+ ::CORBA::Boolean do_dump_history,
+ ::CORBA::Boolean print_missed_invocations,
+ ::CORBA::ULong message_size,
+ ::CORBA::ULong test_protocol_tag,
+ ::CORBA::Boolean print_statistics,
+ ::CORBA::ULong number_of_connection_attempts,
+ ::CORBA::Boolean enable_diffserv_code_points,
+ ::CORBA::Short priority,
+ ::Protocols::Sender_Controller::Test_Type test_type
+ )
+ throw (CORBA::SystemException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::start\n"));
+
+ gsf = ACE_High_Res_Timer::global_scale_factor ();
+
+ int argc = 0;
+ char **argv = 0;
+
+ this->orb_ =
+ CORBA::ORB_init (argc,
+ argv,
+ "");
+
+ CORBA::Object_var object =
+ this->orb_->resolve_initial_references ("RTORB");
+
+ RTCORBA::RTORB_var rtorb =
+ RTCORBA::RTORB::_narrow (object.in ());
+
+ object =
+ this->orb_->resolve_initial_references ("ORBPolicyManager");
+
+ CORBA::PolicyManager_var policy_manager =
+ CORBA::PolicyManager::_narrow (object.in ());
+
+ object =
+ this->orb_->resolve_initial_references ("NetworkPriorityMappingManager");
+
+ RTCORBA::NetworkPriorityMappingManager_var mapping_manager =
+ RTCORBA::NetworkPriorityMappingManager::_narrow (object.in ());
+
+ Custom_Network_Priority_Mapping *custom_network_priority_mapping =
+ new Custom_Network_Priority_Mapping;
+
+ // Set the desired corba priority on the network mapping manager
+ custom_network_priority_mapping->corba_priority (priority);
+
+ mapping_manager->mapping (custom_network_priority_mapping);
+
+ Protocols::test_var test =
+ this->context_->get_connection_reader ();
+
+ Worker worker (this->orb_.in (),
+ rtorb.in (),
+ policy_manager.in (),
+ test.in (),
+ iterations,
+ invocation_rate,
+ count_missed_end_deadlines,
+ do_dump_history,
+ print_missed_invocations,
+ message_size,
+ test_protocol_tag,
+ number_of_connection_attempts,
+ enable_diffserv_code_points,
+ test_type);
+
+ worker.setup ();
+
+ worker.run ();
+
+ if (print_statistics)
+ worker.print_stats ();
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::shutdown (void)
+ throw (CORBA::SystemException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::shutdown\n"));
+ this->orb_->shutdown ();
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ )
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::set_session_context\n"));
+
+ this->context_ =
+ CIDL_SenderImpl::SenderExec_Context::_narrow (ctx);
+
+ if (CORBA::is_nil (this->context_.in ()))
+ throw CORBA::INTERNAL ();
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::ccm_activate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_activate\n"));
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::ccm_passivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_passivate\n"));
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::ccm_remove (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_remove\n"));
+}
+
+
+void
+CIDL_SenderImpl::SenderExec_i::ciao_preactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_preactivate\n"));
+}
+
+void
+CIDL_SenderImpl::SenderExec_i::ciao_postactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderExec_i::ccm_postactivate\n"));
+}
+
+::Components::EnterpriseComponent_ptr
+CIDL_SenderImpl::SenderHomeExec_i::create (void)
+ throw (CORBA::SystemException,
+ Components::CCMException)
+{
+ ACE_DEBUG ((LM_DEBUG, "CIDL_SenderImpl::SenderHome_exec::create\n"));
+ return new CIDL_SenderImpl::SenderExec_i;
+}
+
+extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+createSenderHome_Impl (void)
+{
+ ACE_DEBUG ((LM_DEBUG, "createSenderHome_Impl\n"));
+ return new CIDL_SenderImpl::SenderHomeExec_i;
+}
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h
new file mode 100644
index 00000000000..44563ee65b9
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec.h
@@ -0,0 +1,82 @@
+// $Id$
+
+#include "SenderEC.h"
+#include "Sender_exec_export.h"
+#include "tao/LocalObject.h"
+
+class Custom_Network_Priority_Mapping;
+
+namespace CIDL_SenderImpl
+{
+ class SENDER_EXEC_Export SenderExec_i :
+ public virtual SenderExec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ SenderExec_i (void);
+
+ void start (::CORBA::ULong iterations,
+ ::CORBA::ULong invocation_rate,
+ ::CORBA::Boolean count_missed_end_deadlines,
+ ::CORBA::Boolean do_dump_history,
+ ::CORBA::Boolean print_missed_invocations,
+ ::CORBA::ULong message_size,
+ ::CORBA::ULong test_protocol_tag,
+ ::CORBA::Boolean print_statistics,
+ ::CORBA::ULong number_of_connection_attempts,
+ ::CORBA::Boolean enable_diffserv_code_points,
+ ::CORBA::Short priority,
+ ::Protocols::Sender_Controller::Test_Type test_type)
+ throw (CORBA::SystemException);
+
+ void shutdown (void)
+ throw (CORBA::SystemException);
+
+ void set_session_context (Components::SessionContext_ptr ctx)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_activate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_passivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ccm_remove (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ciao_preactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ void ciao_postactivate (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+
+ protected:
+
+ SenderExec_Context_var context_;
+
+ CORBA::ORB_var orb_;
+
+ };
+
+ class SENDER_EXEC_Export SenderHomeExec_i :
+ public virtual SenderHomeExec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ ::Components::EnterpriseComponent_ptr create (void)
+ throw (CORBA::SystemException,
+ Components::CCMException);
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void);
+}
+
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec_export.h b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec_export.h
new file mode 100644
index 00000000000..dbaa7ea15bc
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC
+// ------------------------------
+#ifndef SENDER_EXEC_EXPORT_H
+#define SENDER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_HAS_DLL)
+# define SENDER_EXEC_HAS_DLL 1
+#endif /* ! SENDER_EXEC_HAS_DLL */
+
+#if defined (SENDER_EXEC_HAS_DLL) && (SENDER_EXEC_HAS_DLL == 1)
+# if defined (SENDER_EXEC_BUILD_DLL)
+# define SENDER_EXEC_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_BUILD_DLL */
+# define SENDER_EXEC_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_BUILD_DLL */
+#else /* SENDER_EXEC_HAS_DLL == 1 */
+# define SENDER_EXEC_Export
+# define SENDER_EXEC_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_NTRACE */
+
+#if (SENDER_EXEC_NTRACE == 1)
+# define SENDER_EXEC_TRACE(X)
+#else /* (SENDER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_stub_export.h b/modules/CIAO/performance-tests/Protocols/Sender/Sender_stub_export.h
new file mode 100644
index 00000000000..28c5d3131d0
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_STUB
+// ------------------------------
+#ifndef SENDER_STUB_EXPORT_H
+#define SENDER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_STUB_HAS_DLL)
+# define SENDER_STUB_HAS_DLL 1
+#endif /* ! SENDER_STUB_HAS_DLL */
+
+#if defined (SENDER_STUB_HAS_DLL) && (SENDER_STUB_HAS_DLL == 1)
+# if defined (SENDER_STUB_BUILD_DLL)
+# define SENDER_STUB_Export ACE_Proper_Export_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_STUB_BUILD_DLL */
+# define SENDER_STUB_Export ACE_Proper_Import_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_STUB_BUILD_DLL */
+#else /* SENDER_STUB_HAS_DLL == 1 */
+# define SENDER_STUB_Export
+# define SENDER_STUB_SINGLETON_DECLARATION(T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_STUB_HAS_DLL == 1 */
+
+// Set SENDER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_STUB_NTRACE */
+
+#if (SENDER_STUB_NTRACE == 1)
+# define SENDER_STUB_TRACE(X)
+#else /* (SENDER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_STUB_NTRACE == 1) */
+
+#endif /* SENDER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/Sender/Sender_svnt_export.h b/modules/CIAO/performance-tests/Protocols/Sender/Sender_svnt_export.h
new file mode 100644
index 00000000000..53236a883f2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/Sender/Sender_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_SVNT
+// ------------------------------
+#ifndef SENDER_SVNT_EXPORT_H
+#define SENDER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_SVNT_HAS_DLL)
+# define SENDER_SVNT_HAS_DLL 1
+#endif /* ! SENDER_SVNT_HAS_DLL */
+
+#if defined (SENDER_SVNT_HAS_DLL) && (SENDER_SVNT_HAS_DLL == 1)
+# if defined (SENDER_SVNT_BUILD_DLL)
+# define SENDER_SVNT_Export ACE_Proper_Export_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_SVNT_BUILD_DLL */
+# define SENDER_SVNT_Export ACE_Proper_Import_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_SVNT_BUILD_DLL */
+#else /* SENDER_SVNT_HAS_DLL == 1 */
+# define SENDER_SVNT_Export
+# define SENDER_SVNT_SINGLETON_DECLARATION(T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_SVNT_HAS_DLL == 1 */
+
+// Set SENDER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_SVNT_NTRACE */
+
+#if (SENDER_SVNT_NTRACE == 1)
+# define SENDER_SVNT_TRACE(X)
+#else /* (SENDER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_SVNT_NTRACE == 1) */
+
+#endif /* SENDER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols.idl b/modules/CIAO/performance-tests/Protocols/common/Protocols.idl
new file mode 100644
index 00000000000..f7f584e9fff
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/common/Protocols.idl
@@ -0,0 +1,29 @@
+// $Id$
+
+module Protocols
+{
+ interface test
+ {
+ void start_test (in long session_id,
+ in string protocol,
+ in unsigned long invocation_rate,
+ in unsigned long message_size,
+ in unsigned long iterations);
+
+ void end_test ();
+
+ oneway void oneway_sync ();
+
+ void twoway_sync ();
+
+ typedef sequence<octet> octets;
+
+ oneway void oneway_method (in long session_id,
+ in unsigned long iteration,
+ in octets payload);
+
+ void twoway_method (inout long session_id,
+ inout unsigned long iteration,
+ inout octets payload);
+ };
+};
diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc b/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc
new file mode 100644
index 00000000000..e7dc5609bc2
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/common/Protocols.mpc
@@ -0,0 +1,54 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Protocols"
+
+project(Protocols_stub): taolib_with_idl {
+
+ sharedname = Protocols_stub
+ idlflags += -St \
+ -Wb,stub_export_macro=PROTOCOLS_STUB_Export \
+ -Wb,stub_export_include=Protocols_stub_export.h \
+ -Wb,skel_export_macro=PROTOCOLS_SKEL_Export \
+ -Wb,skel_export_include=Protocols_skel_export.h
+ dynamicflags = PROTOCOLS_STUB_BUILD_DLL
+
+ IDL_Files {
+ Protocols.idl
+ }
+
+ Source_Files {
+ ProtocolsC.cpp
+ }
+
+ Header_Files {
+ Protocols_stub_export.h
+ }
+}
+
+project(Protocols_skel) : portableserver {
+ after += Protocols_stub
+ sharedname = Protocols_skel
+ libs += Protocols_stub
+
+ idlflags += -St \
+ -Wb,stub_export_macro=PROTOCOLS_STUB_Export \
+ -Wb,stub_export_include=Protocols_stub_export.h \
+ -Wb,skel_export_macro=PROTOCOLS_SKEL_Export \
+ -Wb,skel_export_include=Protocols_skel_export.h
+ dynamicflags = PROTOCOLS_SKEL_BUILD_DLL
+
+ IDL_Files {
+ Protocols.idl
+ }
+
+ Source_Files {
+ ProtocolsS.cpp
+ }
+
+ Header_Files {
+ Protocols_skel_export.h
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols_skel_export.h b/modules/CIAO/performance-tests/Protocols/common/Protocols_skel_export.h
new file mode 100644
index 00000000000..38692d63f09
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/common/Protocols_skel_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PROTOCOLS_SVNT
+// ------------------------------
+#ifndef PROTOCOLS_SKEL_EXPORT_H
+#define PROTOCOLS_SKEL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PROTOCOLS_SKEL_HAS_DLL)
+# define PROTOCOLS_SKEL_HAS_DLL 1
+#endif /* ! PROTOCOLS_SKEL_HAS_DLL */
+
+#if defined (PROTOCOLS_SKEL_HAS_DLL) && (PROTOCOLS_SKEL_HAS_DLL == 1)
+# if defined (PROTOCOLS_SKEL_BUILD_DLL)
+# define PROTOCOLS_SKEL_Export ACE_Proper_Export_Flag
+# define PROTOCOLS_SKEL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PROTOCOLS_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PROTOCOLS_SKEL_BUILD_DLL */
+# define PROTOCOLS_SKEL_Export ACE_Proper_Import_Flag
+# define PROTOCOLS_SKEL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PROTOCOLS_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PROTOCOLS_SKEL_BUILD_DLL */
+#else /* PROTOCOLS_SKEL_HAS_DLL == 1 */
+# define PROTOCOLS_SKEL_Export
+# define PROTOCOLS_SKEL_SINGLETON_DECLARATION(T)
+# define PROTOCOLS_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PROTOCOLS_SKEL_HAS_DLL == 1 */
+
+// Set PROTOCOLS_SKEL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PROTOCOLS_SKEL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PROTOCOLS_SKEL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PROTOCOLS_SKEL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PROTOCOLS_SKEL_NTRACE */
+
+#if (PROTOCOLS_SKEL_NTRACE == 1)
+# define PROTOCOLS_SKEL_TRACE(X)
+#else /* (PROTOCOLS_SKEL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PROTOCOLS_SKEL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PROTOCOLS_SKEL_NTRACE == 1) */
+
+#endif /* PROTOCOLS_SKEL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/common/Protocols_stub_export.h b/modules/CIAO/performance-tests/Protocols/common/Protocols_stub_export.h
new file mode 100644
index 00000000000..ab2de919ebd
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/common/Protocols_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl PROTOCOLS_STUB
+// ------------------------------
+#ifndef PROTOCOLS_STUB_EXPORT_H
+#define PROTOCOLS_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (PROTOCOLS_STUB_HAS_DLL)
+# define PROTOCOLS_STUB_HAS_DLL 1
+#endif /* ! PROTOCOLS_STUB_HAS_DLL */
+
+#if defined (PROTOCOLS_STUB_HAS_DLL) && (PROTOCOLS_STUB_HAS_DLL == 1)
+# if defined (PROTOCOLS_STUB_BUILD_DLL)
+# define PROTOCOLS_STUB_Export ACE_Proper_Export_Flag
+# define PROTOCOLS_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PROTOCOLS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PROTOCOLS_STUB_BUILD_DLL */
+# define PROTOCOLS_STUB_Export ACE_Proper_Import_Flag
+# define PROTOCOLS_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PROTOCOLS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PROTOCOLS_STUB_BUILD_DLL */
+#else /* PROTOCOLS_STUB_HAS_DLL == 1 */
+# define PROTOCOLS_STUB_Export
+# define PROTOCOLS_STUB_SINGLETON_DECLARATION(T)
+# define PROTOCOLS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PROTOCOLS_STUB_HAS_DLL == 1 */
+
+// Set PROTOCOLS_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PROTOCOLS_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PROTOCOLS_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PROTOCOLS_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PROTOCOLS_STUB_NTRACE */
+
+#if (PROTOCOLS_STUB_NTRACE == 1)
+# define PROTOCOLS_STUB_TRACE(X)
+#else /* (PROTOCOLS_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PROTOCOLS_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PROTOCOLS_STUB_NTRACE == 1) */
+
+#endif /* PROTOCOLS_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini b/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini
new file mode 100644
index 00000000000..379d481d131
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/CIAO_Installation_Data.ini
@@ -0,0 +1,5 @@
+[ComponentInstallation]
+DCE:83d9348a-3248-445c-82c6-e38294943d65=Protocols_Sender_exec
+DCE:2c16cd81-a364-4422-b9e0-ee2ebe084954=Protocols_Sender_svnt
+DCE:6b6d29ca-c6e7-4823-806d-157113767331=Protocols_Receiver_svnt
+DCE:34b61767-2b7d-459d-985d-ece6255275d5=Protocols_Receiver_exec
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd
new file mode 100644
index 00000000000..44606201edc
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.csd
@@ -0,0 +1,40 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "../../../docs/XML/softpkg.dtd">
+
+<softpkg name="Receiver" version="1.0">
+
+ <pkgtype>CORBA Component</pkgtype>
+
+ <title>Receiver</title>
+
+ <idl id="IDL:Protocols/Receiver:1.0"
+ homeid="IDL:Protocols/ReceiverHome:1.0">
+ <fileinarchive name="Receiver.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="Receiver.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:34b61767-2b7d-459d-985d-ece6255275d5">
+
+ <!-- CIAO extension -->
+ <dependency type="CIAODLL">
+ <softpkgref>
+ <fileinarchive name="Receiver.ssd"/>
+ <implref idref="DCE:6b6d29ca-c6e7-4823-806d-157113767331"/>
+ </softpkgref>
+ </dependency>
+
+ <code type="DLL">
+ <fileinarchive name="Protocols_Receiver_exec"/>
+ <entrypoint>createReceiverHome_Impl</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd
new file mode 100644
index 00000000000..83f896c5416
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/Receiver.ssd
@@ -0,0 +1,37 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "../../../docs/XML/softpkg.dtd">
+
+<softpkg name="Receiver-Servant" version="1.0">
+
+ <pkgtype>CIAO Servant</pkgtype>
+
+ <title>componentizedSender::Receiver Servants</title>
+
+ <idl id="IDL:Protocols/Receiver:1.0"
+ homeid="IDL:Protocols/ReceiverHome:1.0">
+ <fileinarchive name="Receiver.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="Receiver.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:6b6d29ca-c6e7-4823-806d-157113767331">
+
+ <dependency type="ORB">
+ <name>TAO</name>
+ </dependency>
+
+ <code>
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="Protocols_Receiver_svnt"/>
+ <entrypoint>createReceiverHome_Servant</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd
new file mode 100644
index 00000000000..f2d899f3338
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.csd
@@ -0,0 +1,40 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "../../../docs/XML/softpkg.dtd">
+
+<softpkg name="Sender" version="1.0">
+
+ <pkgtype>CORBA Component</pkgtype>
+
+ <title>Sender</title>
+
+ <idl id="IDL:Protocols/Sender:1.0"
+ homeid="IDL:Protocols/SenderHome:1.0">
+ <fileinarchive name="Sender.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="Sender.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:83d9348a-3248-445c-82c6-e38294943d65">
+
+ <!-- CIAO extension -->
+ <dependency type="CIAODLL">
+ <softpkgref>
+ <fileinarchive name="Sender.ssd"/>
+ <implref idref="DCE:2c16cd81-a364-4422-b9e0-ee2ebe084954"/>
+ </softpkgref>
+ </dependency>
+
+ <code type="DLL">
+ <fileinarchive name="Protocols_Sender_exec"/>
+ <entrypoint>createSenderHome_Impl</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd
new file mode 100644
index 00000000000..411bbbc66d6
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/Sender.ssd
@@ -0,0 +1,37 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- If this file is moved to a different directory, make sure to change the
+ path to the DTD below. Otherwise the examples won't work. -->
+<!DOCTYPE softpkg SYSTEM "../../../docs/XML/softpkg.dtd">
+
+<softpkg name="Sender-Servant" version="1.0">
+
+ <pkgtype>CIAO Servant</pkgtype>
+
+ <title>componentizedSender::Sender Servants</title>
+
+ <idl id="IDL:Protocols/Sender:1.0"
+ homeid="IDL:Protocols/SenderHome:1.0">
+ <fileinarchive name="Sender.idl"/>
+ </idl>
+
+ <descriptor type="CORBA Component">
+ <fileinarchive name="Sender.ccd"/>
+ </descriptor>
+
+ <implementation id="DCE:2c16cd81-a364-4422-b9e0-ee2ebe084954">
+
+ <dependency type="ORB">
+ <name>TAO</name>
+ </dependency>
+
+ <code>
+ <!-- No need to specify extension below since ACE takes care of that, -->
+ <fileinarchive name="Protocols_Sender_svnt"/>
+ <entrypoint>createSenderHome_Servant</entrypoint>
+ </code>
+
+ </implementation>
+
+</softpkg>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/default.cad b/modules/CIAO/performance-tests/Protocols/descriptors/default.cad
new file mode 100644
index 00000000000..7f518423e70
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/default.cad
@@ -0,0 +1,59 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- This file must be pre-processed for final location based on $CIAO_ROOT -->
+<!DOCTYPE componentassembly SYSTEM "../../../docs/XML/componentassembly.dtd">
+
+
+<componentassembly id="componentized assembly">
+
+ <componentfiles>
+
+ <componentfile id="com-Sender">
+ <fileinarchive name="Sender.csd"/>
+ </componentfile>
+
+ <componentfile id="com-Receiver">
+ <fileinarchive name="Receiver.csd"/>
+ </componentfile>
+
+ </componentfiles>
+
+ <partitioning>
+
+ <homeplacement id="a_SenderHome">
+ <componentfileref idref="com-Sender"/>
+ <componentinstantiation id="a_Sender">
+ <registercomponent>
+ <writeiortofile name="sender.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+ <homeplacement id="a_ReceiverHome">
+ <componentfileref idref="com-Receiver"/>
+ <componentinstantiation id="a_Receiver">
+ <registercomponent>
+ <writeiortofile name="receiver.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+ </partitioning>
+
+ <connections>
+
+ <connectinterface>
+ <usesport>
+ <usesidentifier>reader</usesidentifier>
+ <componentinstantiationref idref="a_Sender"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>writer</providesidentifier>
+ <componentinstantiationref idref="a_Receiver"/>
+ </providesport>
+ </connectinterface>
+
+ </connections>
+
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad b/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad
new file mode 100644
index 00000000000..d17a09a25e8
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/remote.cad
@@ -0,0 +1,62 @@
+<?xml version="1.0"?> <!-- -*- SGML -*- -->
+
+<!-- $Id$ -->
+<!-- This file must be pre-processed for final location based on $CIAO_ROOT -->
+<!DOCTYPE componentassembly SYSTEM "../../../docs/XML/componentassembly.dtd">
+
+
+<componentassembly id="componentized assembly">
+
+ <componentfiles>
+
+ <componentfile id="com-Sender">
+ <fileinarchive name="Sender.csd"/>
+ </componentfile>
+
+ <componentfile id="com-Receiver">
+ <fileinarchive name="Receiver.csd"/>
+ </componentfile>
+
+ </componentfiles>
+
+ <partitioning>
+
+ <homeplacement id="a_SenderHome">
+ <componentfileref idref="com-Sender"/>
+ <componentinstantiation id="a_Sender">
+ <registercomponent>
+ <writeiortofile name="sender.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+
+ <processcollocation>
+ <homeplacement id="a_ReceiverHome">
+ <componentfileref idref="com-Receiver"/>
+ <componentinstantiation id="a_Receiver">
+ <registercomponent>
+ <writeiortofile name="receiver.ior"/>
+ </registercomponent>
+ </componentinstantiation>
+ </homeplacement>
+ <destination>Remote</destination>
+ </processcollocation>
+
+ </partitioning>
+
+ <connections>
+
+ <connectinterface>
+ <usesport>
+ <usesidentifier>reader</usesidentifier>
+ <componentinstantiationref idref="a_Sender"/>
+ </usesport>
+ <providesport>
+ <providesidentifier>writer</providesidentifier>
+ <componentinstantiationref idref="a_Receiver"/>
+ </providesport>
+ </connectinterface>
+
+ </connections>
+
+</componentassembly>
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl b/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl
new file mode 100755
index 00000000000..b9ec459dcde
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/run_test.pl
@@ -0,0 +1,77 @@
+# -*- perl -*-
+# $Id$
+
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$ACE_ROOT = $ENV {'ACE_ROOT'};
+$CIAO_ROOT = $ENV {'CIAO_ROOT'};
+
+$ORBdebuglevel = 0;
+$protocols = "-ORBEndpoint \'iiop://\'";
+#$protocols = "-ORBEndpoint \'iiop://;diop://:5678;sciop://\'";
+
+$daemon_1 = new PerlACE::Process ("${CIAO_ROOT}/tools/Daemon/CIAO_Daemon",
+ "-ORBEndpoint iiop://localhost:20000 " .
+ "-n \"${CIAO_ROOT}/tools/RTComponentServer/RTComponentServer -ORBdebuglevel $ORBdebuglevel\"");
+
+$daemon_2 = new PerlACE::Process ("${CIAO_ROOT}/tools/Daemon/CIAO_Daemon",
+ "-ORBEndpoint iiop://localhost:12000 " .
+ "-n \"${CIAO_ROOT}/tools/RTComponentServer/RTComponentServer -ORBdebuglevel $ORBdebuglevel $protocols\"");
+
+$assembly_manager_args = "-o assembly_manager.ior -c test.dat";
+$assembly_manager = new PerlACE::Process ("${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager", "$assembly_manager_args");
+
+$assembly_deployer_args = "-k file://assembly_manager.ior -a remote.cad -o assembly";
+$assembly_deployer = new PerlACE::Process ("${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer", "$assembly_deployer_args");
+
+$controller = new PerlACE::Process ("../Controller/Controller", "-x 1 -z 1");
+
+# Remove all ior files
+unlink "assembly_manager.ior";
+unlink "daemon.ior";
+unlink "receiver.ior";
+unlink "sender.ior";
+unlink "assembly";
+
+# Start the daemons.
+$daemon_1->Spawn ();
+$daemon_2->Spawn ();
+
+# Start the assembly manager
+$assembly_manager->Spawn ();
+
+# Wait till the assembly manager finishes writing the IOR
+PerlACE::waitforfile ("assembly_manager.ior");
+
+# Start the Assembly_Deployer
+$assembly_deployer->Spawn ();
+
+# Wait till the sender and receiver to finish writing their IORs
+PerlACE::waitforfile ("sender.ior");
+PerlACE::waitforfile ("receiver.ior");
+
+# Now start the controller
+$controller->Spawn ();
+
+# Wait for controller to get done.
+$controller->Wait ();
+$controller->{RUNNING} = 0;
+
+# Kill daemons.
+$daemon_1->Kill ();
+$daemon_2->Kill ();
+$assembly_manager->Kill ();
+$assembly_deployer->Kill ();
+
+# Remove all ior files
+unlink "assembly_manager.ior";
+unlink "daemon.ior";
+unlink "receiver.ior";
+unlink "sender.ior";
+unlink "assembly";
+
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf b/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf
new file mode 100644
index 00000000000..711df131ebc
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/svc.conf
@@ -0,0 +1 @@
+dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory()
diff --git a/modules/CIAO/performance-tests/Protocols/descriptors/test.dat b/modules/CIAO/performance-tests/Protocols/descriptors/test.dat
new file mode 100644
index 00000000000..087a2a967e4
--- /dev/null
+++ b/modules/CIAO/performance-tests/Protocols/descriptors/test.dat
@@ -0,0 +1,2 @@
+Default corbaloc:iiop:localhost:20000/ServerActivator
+Remote corbaloc:iiop:localhost:12000/ServerActivator
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/README b/modules/CIAO/performance-tests/mico/mico-thrput-st/README
new file mode 100644
index 00000000000..ee534c0c0a4
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/README
@@ -0,0 +1,26 @@
+//
+//$Id$
+//
+Throughput Experiment
+====================
+
+This experiment is used to gather latency and throughput related metrics for MICO ORB.
+The benchmark uses ACE to analyze the data sample and generate results. In order to run
+this benchmark the following is required
+
+1: MICO ORB configured in single-threaded mode
+2: This directory placed under $MICO_ROOT/demo/<name-of-directory>
+3: The envrionment setting required for running this test is provided in
+ the mico-env file.
+4: These tests can only run on *nix systems as of now. For windows project files will
+ be added shortly
+
+Compilation
+===========
+To compile the files
+
+$make
+
+To run the experiment
+=====================
+./RoundTrip
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip
new file mode 100755
index 00000000000..395ef4f73e4
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+MICORC=/dev/null
+export MICORC
+
+# run Naming Service
+
+echo "Starting Naming Service ..."
+
+rm -f nsd.ior
+nsd --ior nsd.ior &
+nsd_pid=$!
+
+trap "kill $nsd_pid > /dev/null 2> /dev/null" 0
+
+# wait for Naming Service to start
+
+for i in 0 1 2 3 4 5 6 7 8 9 ; do
+ if test -r nsd.ior ; then break ; else sleep 1 ; fi
+done
+
+# start Server
+
+echo "Starting Server ..."
+
+./server -ORBInitRef NameService=file://`pwd`/nsd.ior &
+server_pid=$!
+
+trap "kill $nsd_pid $server_pid > /dev/null 2> /dev/null" 0
+
+# give server some time to start
+
+sleep 3
+
+# run Client
+
+echo "Running Client ..."
+
+./client -ORBInitRef NameService=file://`pwd`/nsd.ior -i 500000
+
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl
new file mode 100644
index 00000000000..475433dfec4
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip.idl
@@ -0,0 +1,13 @@
+//$Id$
+interface Roundtrip
+{
+ /// A simple method to measure roundtrip delays
+ /**
+ * The operation simply returns its argument, this is used in AMI
+ * and deferred synchronous tests to measure the roundtrip delay
+ * without the need for a different reply handler for each
+ * request.
+ */
+ unsigned long long test_method (in unsigned long long send_time);
+
+};
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc
new file mode 100644
index 00000000000..88338765186
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.cc
@@ -0,0 +1,10 @@
+//
+//$Id$
+//
+
+#include "RoundTrip_impl.h"
+
+CORBA::ULongLong RoundTrip_impl::test_method (CORBA::ULongLong send_time)
+{
+ return send_time;
+}
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h
new file mode 100644
index 00000000000..86213cf1b9d
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/RoundTrip_impl.h
@@ -0,0 +1,9 @@
+//
+//$Id$
+//
+#include "RoundTrip.h"
+
+class RoundTrip_impl : virtual public POA_Roundtrip {
+ public:
+ CORBA::ULongLong test_method (CORBA::ULongLong send_time);
+};
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc
new file mode 100644
index 00000000000..74e04bcdf2b
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/client.cc
@@ -0,0 +1,150 @@
+//
+//$Id$
+//
+//FUZZ: disable check_for_missing_rir_env
+
+#define USE_POA
+//#define NESTED
+
+#include <CORBA.h>
+#include <coss/CosNaming.h>
+
+#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS
+#include <iostream>
+#else // HAVE_ANSI_CPLUSPLUS_HEADERS
+#include <iostream.h>
+#endif // HAVE_ANSI_CPLUSPLUS_HEADERS
+
+#include "RoundTrip.h"
+
+#include "ace/Get_Opt.h"
+#include "ace/High_Res_Timer.h"
+#include "ace/Sched_Params.h"
+#include "ace/Stats.h"
+#include "ace/Sample_History.h"
+
+using namespace std;
+
+
+int do_dump_history = 0;
+int niterations = 1000;
+
+int
+parse_args (int argc, char *argv[])
+{
+ //parse arguments
+ ACE_Get_Opt get_opts (argc, argv, "hxi:");
+ char c;
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'h':
+ do_dump_history = 1;
+ break;
+
+ case 'i':
+ niterations = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ /* Could be any other parameter like -ORBSvcConf file so ignore */
+ break;
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+void
+set_priority ()
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "client (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "client (%P|%t): sched_params failed\n"));
+ }
+
+}
+
+int
+main (int argc, char *argv[])
+{
+
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
+
+ CORBA::Object_var obj = orb->resolve_initial_references ("NameService");
+ CosNaming::NamingContextExt_var nc =
+ CosNaming::NamingContextExt::_narrow (obj);
+ assert (!CORBA::is_nil (nc));
+
+ //Obtain reference from the naming context
+ obj = nc->resolve_str ("RoundTrip");
+
+ Roundtrip_var bench = Roundtrip::_narrow (obj);
+
+ parse_args(argc, argv);
+ set_priority();
+
+ //Warmup the System by making some empty calls
+ CORBA::Long start = 0L;
+ for (int j = 0; j < 100; ++j)
+ {
+ bench->test_method (start);
+ }
+
+
+ CORBA::ULongLong time_stamp = 1234;
+ ACE_Sample_History history (niterations);
+ ACE_hrtime_t test_start = ACE_OS::gethrtime ();
+
+ for (int i = 0; i < niterations; ++i)
+ {
+
+ ACE_hrtime_t start = ACE_OS::gethrtime ();
+
+ bench->test_method (time_stamp);
+
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+ history.sample (now - start);
+ }
+
+ ACE_hrtime_t test_end = ACE_OS::gethrtime ();
+
+ ACE_DEBUG ((LM_DEBUG, "test finished\n"));
+
+ ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
+ ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
+ ACE_DEBUG ((LM_DEBUG, "done\n"));
+
+ if (do_dump_history)
+ {
+ history.dump_samples ("HISTORY", gsf);
+ }
+
+ ACE_Basic_Stats stats;
+ history.collect_basic_stats (stats);
+ stats.dump_results ("Total", gsf);
+
+ ACE_Throughput_Stats::dump_throughput ("Total", gsf,
+ test_end - test_start,
+ stats.samples_count ());
+
+ //Remove the component
+ cout << "client finished" << endl;
+
+ return 0;
+}
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env b/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env
new file mode 100755
index 00000000000..67b444acef9
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/mico-env
@@ -0,0 +1,14 @@
+##############
+## MICO ENVIRONMENT SETTINGS
+#############
+#
+# If MICO has been built in /build/ccm/mico-obj
+# then add the following to your path and Library paths
+# for Bash Shell:
+#
+#export PATH=/build/ccm/mico-obj/bin:$PATH
+#export LD_LIBRARY_PATH=/build/ccm/mico-obj/lib:$LD_LIBRARY_PATH
+#
+# Note: The place where object files and binaries are built could be
+# different from source files. The environment variables use the obj
+# path rather than source path
diff --git a/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc b/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc
new file mode 100644
index 00000000000..9bf90eda0ed
--- /dev/null
+++ b/modules/CIAO/performance-tests/mico/mico-thrput-st/server.cc
@@ -0,0 +1,43 @@
+//
+//$Id$
+//
+// FUZZ: disable check_for_missing_rir_env
+#include <CORBA.h>
+#include <coss/CosNaming.h>
+
+#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS
+#include <iostream>
+#else // HAVE_ANSI_CPLUSPLUS_HEADERS
+#include <iostream.h>
+#endif // HAVE_ANSI_CPLUSPLUS_HEADERS
+
+#include "RoundTrip_impl.h"
+int
+main (int argc, char *argv[])
+{
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb");
+
+ //Obtain reference to Naming service
+ CORBA::Object_var naming_context_object =
+ orb->resolve_initial_references ("NameService");
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_context_object.in ());
+
+ CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow (obj);
+ RoundTrip_impl* rt_impl = new RoundTrip_impl();
+ PortableServer::ObjectId_var oid = poa->activate_object (rt_impl);
+ Roundtrip_var rt_obj = rt_impl->_this();
+
+ //Add to Naming Service
+ CosNaming::Name name (1);
+ name.length (1);
+ name[0].id = CORBA::string_dup ("RoundTrip");
+ naming_context->bind (name, rt_obj.in());
+
+ //allow incoming requests
+ poa->the_POAManager()->activate();
+
+ orb->run ();
+ return 0;
+}
diff --git a/modules/CIAO/rules.ciao.GNU b/modules/CIAO/rules.ciao.GNU
new file mode 100644
index 00000000000..a3c76dc47a7
--- /dev/null
+++ b/modules/CIAO/rules.ciao.GNU
@@ -0,0 +1,64 @@
+# -*- Makefile -*-
+
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+# Common Makefile rules for all of CIAO
+#
+#----------------------------------------------------------------------------
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif
+
+ifndef CIAO_ROOT
+ CIAO_ROOT = $(TAO_ROOT)/CIAO
+endif
+
+ifndef TAO_IDL3_TO_IDL2
+ TAO_IDL3_TO_IDL2 = $(CIAO_ROOT)/tools/IDL3_TO_IDL2/tao_idl3_to_idl2
+ TAO_IDL3_TO_IDL2_DEP = $(TAO_IDL3_TO_IDL2)$(EXEEXT)
+else
+ifndef TAO_IDL3_TO_IDL2_DEP
+ TAO_IDL3_TO_IDL2_DEP = $(TAO_IDL3_TO_IDL2)
+endif
+endif
+
+ifeq (,$(findstring -L$(CIAO_ROOT)/ciao,$(LDFLAGS)))
+ LDFLAGS += -L$(CIAO_ROOT)/ciao
+endif
+ifeq (,$(findstring -I$(CIAO_ROOT),$(INCLDIRS)))
+ INCLDIRS += -I$(CIAO_ROOT)
+endif
+
+# Turn on symbol versioning. The scheme that we follow is to allow
+# applications dependent on libraries, with same version numbers (major,
+# minor and beta) to run, but applications with dependencies on libraries
+# with different minor or major or beta versions to fail.
+#
+ifeq (cmd,$(findstring cmd,$(SHELL)))
+CIAO_MAJOR_VERSION := $(shell awk "/CIAO_MAJOR_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h)
+CIAO_MINOR_VERSION := $(shell awk "/CIAO_MINOR_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h)
+CIAO_BETA_VERSION := $(shell awk "/CIAO_BETA_VERSION/ { print $$3}" ${CIAO_ROOT}/ciao/Version.h)
+else
+CIAO_MAJOR_VERSION := $(shell awk '/CIAO_MAJOR_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h)
+CIAO_MINOR_VERSION := $(shell awk '/CIAO_MINOR_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h)
+CIAO_BETA_VERSION := $(shell awk '/CIAO_BETA_VERSION/ { print $$3}' ${CIAO_ROOT}/ciao/Version.h)
+endif
+
+# Version number of the libraries
+#
+ifeq ($(versioned_so),1)
+ # Only set SOVERSION for CIAO if versioning is turned on and SOVERION is
+ # blank, which gives users to ability to override it.
+ ifeq ($(SOVERSION),)
+ SOVERSION = .$(CIAO_MAJOR_VERSION).$(CIAO_MINOR_VERSION).$(CIAO_BETA_VERSION)
+ endif # SOVERSION
+
+ # Name that will be written into the dynamic library
+ #
+ ifneq ($(SONAME),)
+ SONAME = $(SHLIB).$(CIAO_MAJOR_VERSION).$(CIAO_MINOR_VERSION).$(CIAO_BETA_VERSION)
+ endif # SONAME
+endif # versioned_so
diff --git a/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM b/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM
new file mode 100644
index 00000000000..df98c63f06d
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/Logs/PROBLEM-REPORT-FORM
@@ -0,0 +1,93 @@
+To: ciao-users@cs.wustl.edu
+Subject: RTComponentServer: Session_Container::get_objref blocks
+
+ CIAO VERSION: 0.4.7
+ TAO VERSION : 1.4.7
+ ACE VERSION : 5.4.7
+
+ HOST MACHINE and OPERATING SYSTEM:
+ Intel(R) Pentium(R) D CPU 3.00GHZ
+ Microsoft Windows XP Professional Version 2002 Service Pack 2
+
+ COMPILER NAME AND VERSION (AND PATCHLEVEL):
+ Microsoft Visual C++ .NET 2003
+ Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 13.10.3077
+
+ THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
+ specific file, simply state which one]:
+ #include "ace/config-win32.h"
+
+ THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
+ use a link to a platform-specific file, simply state which one
+ (unless this isn't used in this case, e.g., with Microsoft Visual
+ C++)]:
+
+ CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
+ ssl=0
+ qos=1
+ cidl=0
+ rwho=0
+ sctp=0
+ qt=1
+
+ AREA/CLASS/EXAMPLE AFFECTED:
+ CIAO/ciao/Session_Container::get_objref
+
+
+ DOES THE PROBLEM AFFECT:
+ COMPILATION?
+ No
+ LINKING?
+ No
+ EXECUTION?
+ Yes
+ OTHER (please specify)?
+[Please indicate whether ACE/TAO/CIAO, your application, or both are affected.]
+
+ SYNOPSIS:
+ A call of Session_Container::get_objref blocks forever.
+
+ DESCRIPTION:
+ I'm running two clients simultaneously callings the methods acquireSession
+ and releaseSession of the CORBA component TSEC_CheckPoint ( please see
+ sample code in TSEC_CheckPoint_exec.cpp lines 233... and 283... and also
+ controller.cpp line 150... ) configured with realtime policies. After the
+ start of the second client the component TSEC_CheckPoint blocks in the
+ method Session_Container::get_objref ( please see the log file
+ DebuggerCallStack.log ).
+
+ The serious code line of TSEC_CheckPoint_exec.cpp is:
+ CORBA::Object_var obj = this->getObjRef( p_sessionImpl) ;
+
+ If only one client is calling acquireSession every thing works fine.
+ But if I start a second client which is calling acquireSession then the
+ block happens.
+
+ I'm using the patch from 20051612 for the files
+ Container_Base.cpp and Container_Base.h which I merge with the CIAO
+ version 047.
+
+ If i use CIAO version < 043 everythings works fine with no blocks.
+
+ REPEAT BY:
+ Please build the sample code:
+ - cd interfaces
+ - mwc.pl -type nmake
+ - nmake realclean clean depend all
+ - touch *.idl
+ - nmake
+ - cd SEC_CheckPoint
+ - mwc.pl -type nmake
+ - nmake realclean clean depend all
+
+ Please run the sample:
+ - cd descriptors
+ - start_da.bat
+ - start_am.bat
+ - start_test.bat
+ - start_testcase_1.bat
+ - start_testcase_2.bat
+
+
+ SAMPLE FIX/WORKAROUND:
+[If available ]
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl
new file mode 100644
index 00000000000..07748288e51
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef TSEC_CHECKPOINT_CIDL
+#define TSEC_CHECKPOINT_CIDL
+
+#include "TSEC_CheckPoint.idl"
+
+composition session TSEC_CheckPoint_Impl
+{
+ home executor TSEC_CheckPointHome_Exec
+ {
+ implements ENW::TSEC_CheckPointHome;
+ manages TSEC_CheckPoint_Exec;
+ };
+};
+
+#endif // TSEC_CHECKPOINT_CIDL
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl
new file mode 100644
index 00000000000..83d68fc4353
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.idl
@@ -0,0 +1,27 @@
+//$Id$
+
+#ifndef TSEC_CHECKPOINT_IDL
+#define TSEC_CHECKPOINT_IDL
+
+#include "../interfaces/ENW.idl"
+
+
+module ENW
+{
+ component TSEC_CheckPoint supports ISessionService
+ {
+ provides ISessionService sessionService;
+
+ consumes ET_LifeToken lifeTokenIn;
+ publishes ET_LifeToken lifeTokenOut;
+
+ };
+
+ home TSEC_CheckPointHome manages TSEC_CheckPoint
+ {
+ factory new_TSEC_CheckPoint( in string Version );
+ };
+};
+
+
+#endif // TSEC_CHECKPOINT_IDL
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc
new file mode 100644
index 00000000000..1cd931b2d71
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint.mpc
@@ -0,0 +1,102 @@
+//$Id$
+
+project(TSEC_CheckPoint_stub): ciao_client_dnc, event {
+ avoids += ace_for_tao
+ after += ENW_stub
+ libpaths += ../interfaces
+ libs += ENW_stub
+ sharedname = TSEC_CheckPoint_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=TSEC_CHECKPOINT_STUB_Export \
+ -Wb,stub_export_include=TSEC_CheckPoint_stub_export.h \
+ -Wb,skel_export_macro=TSEC_CHECKPOINT_SVNT_Export \
+ -Wb,skel_export_include=TSEC_CheckPoint_svnt_export.h
+ dynamicflags = TSEC_CHECKPOINT_STUB_BUILD_DLL
+
+ IDL_Files {
+ TSEC_CheckPoint.idl
+ }
+
+ Source_Files {
+ TSEC_CheckPointC.cpp
+ }
+}
+
+project(TSEC_CheckPoint_svnt) : ciao_servant_dnc, event {
+ avoids += ace_for_tao
+ after += TSEC_CheckPoint_stub
+ after += ENW_skel ENW_stub
+ sharedname = TSEC_CheckPoint_svnt
+ libpaths += ../interfaces
+ libs += TSEC_CheckPoint_stub
+ libs += ENW_stub ENW_skel
+
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=TSEC_CHECKPOINT_SVNT_Export \
+ -Wb,export_include=TSEC_CheckPoint_svnt_export.h
+ dynamicflags = TSEC_CHECKPOINT_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ TSEC_CheckPoint.cidl
+ }
+
+ IDL_Files {
+ TSEC_CheckPointE.idl
+ }
+
+ Source_Files {
+ TSEC_CheckPointEC.cpp
+ TSEC_CheckPointS.cpp
+ TSEC_CheckPoint_svnt.cpp
+ }
+}
+
+
+project(TSEC_CheckPoint_exec) : ciao_component_dnc, event {
+ avoids += ace_for_tao
+ after += TSEC_CheckPoint_svnt
+ after += ENW_skel ENW_stub
+
+ includes += ../interfaces
+
+ sharedname = TSEC_CheckPoint_exec
+ libpaths += ../interfaces
+ libs += TSEC_CheckPoint_stub TSEC_CheckPoint_svnt
+ libs += ENW_stub ENW_skel CIAO_DnC_Server TAO_CosNaming
+
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=TSEC_CHECKPOINT_EXEC_Export \
+ -Wb,export_include=TSEC_CheckPoint_exec_export.h
+ dynamicflags = TSEC_CHECKPOINT_EXEC_BUILD_DLL
+
+ IDL_Files {
+ TSEC_CheckPointEI.idl
+ }
+
+ Source_Files {
+ TSEC_CheckPointEIC.cpp
+ TSEC_CheckPoint_exec.cpp
+ }
+}
+
+
+project(TSEC_CheckPoint_controller) : ciao_client_dnc, valuetype, event {
+ avoids += ace_for_tao
+ exename = controller
+ after += TSEC_CheckPoint_stub
+ libs += TSEC_CheckPoint_stub ENW_stub
+ libpaths += ../interfaces
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
+
+
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl
new file mode 100644
index 00000000000..9cd47181299
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPointEI.idl
@@ -0,0 +1,19 @@
+// $Id$
+
+#ifndef TSEC_CHECKPOINTEI_IDL
+#define TSEC_CHECKPOINTEI_IDL
+
+#include "TSEC_CheckPointE.idl"
+
+module ENW
+{
+ local interface TSEC_CheckPoint_Exec :
+ CCM_TSEC_CheckPoint,
+ CCM_ISessionService,
+ Components::SessionComponent
+ {
+ };
+
+};
+
+#endif /* TSEC_CHECKPOINTEI_IDL */
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp
new file mode 100644
index 00000000000..005b183df40
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.cpp
@@ -0,0 +1,613 @@
+//$Id$
+
+//-------------------------------------------------------------------
+// Includes
+//-------------------------------------------------------------------
+
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+
+#include "tao/LocalObject.h"
+#include <orbsvcs/CosNamingC.h>
+
+#include "ciao/CIAO_common.h"
+#include "ciao/Version.h"
+
+#include "TSEC_CheckPoint_exec.h"
+#include "TSEC_CheckPoint_svnt.h"
+
+
+//-------------------------------------------------------------------
+// Defines
+//-------------------------------------------------------------------
+
+#define SEPARATION_LINE "----------------------------------------" \
+ "----------------------------------------\n"
+
+
+//-------------------------------------------------------------------
+// Statics
+//-------------------------------------------------------------------
+
+static const char* argv[] =
+{
+ "TSEC_CheckPoint"
+};
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_SessionEntry::TSEC_SessionEntry()
+: _p_sessionImpl( 0 )
+{
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_SessionEntry::TSEC_SessionEntry
+(
+ TSEC_Session_impl* pSessionImpl,
+ ENW::TSession_ptr Session
+)
+: _p_sessionImpl( pSessionImpl )
+{
+ if( !CORBA::is_nil( Session ) )
+ {
+ _session = ENW::TSession::_duplicate( Session );
+ }
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_Session_impl::TSEC_Session_impl
+(
+ TSEC_CheckPoint_exec_i& Parent,
+ CORBA::Long Ident
+)
+ : _isInUse(0),_ident( Ident ),_parent( Parent )
+{
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_Session_impl::~TSEC_Session_impl()
+{
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+CORBA::ULong
+Impl::TSEC_Session_impl::hash
+(
+ CORBA::ULong Maximum
+)
+{
+ CORBA::ULong hash =
+ static_cast <CORBA::ULong> (reinterpret_cast <ptrdiff_t> (this));
+
+ return hash % Maximum;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+CORBA::Long
+Impl::TSEC_Session_impl::getIdent
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ //ACE_GUARD_RETURN( TMutex, guard, _parent.getMutex(), -1 );
+
+ return _ident;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+CORBA::Boolean
+Impl::TSEC_Session_impl::isInUse
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ //ACE_GUARD_RETURN( TMutex, guard, _parent.getMutex(), FALSE );
+ return _isInUse;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_CheckPoint_exec_i::TSEC_CheckPoint_exec_i()
+: _p_sessionContainer( 0 ),
+ _isActivated( false )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::"
+ "TSEC_CheckPoint_exec_i\n" ) );
+
+ this->init();
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_CheckPoint_exec_i::TSEC_CheckPoint_exec_i
+(
+ const char* /*Version*/
+)
+: _p_sessionContainer( 0 ),
+ _isActivated( false )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::"
+ "TSEC_CheckPoint_exec_i\n" ) );
+ this->init();
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_CheckPoint_exec_i::~TSEC_CheckPoint_exec_i()
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::"
+ "~TSEC_CheckPoint_exec_i\n" ) );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+CORBA::Object_ptr
+Impl::TSEC_CheckPoint_exec_i::getObjRef
+(
+ PortableServer::Servant Servant
+) ACE_THROW_SPEC( (CORBA::SystemException ) )
+{
+ return this->_p_sessionContainer->get_objref( Servant );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+int
+Impl::TSEC_CheckPoint_exec_i::init
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ ACE_DEBUG ((LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::init\n"));
+
+ int argc = sizeof( argv ) / sizeof( argv[0] );
+
+ CORBA::ORB_var orb = CORBA::ORB_init( argc,
+ const_cast<char **> (argv)
+ );
+ _orb = CORBA::ORB::_duplicate( orb.in () );
+
+ return 0;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+CORBA::Object_ptr
+Impl::TSEC_CheckPoint_exec_i::installServant
+(
+ PortableServer::Servant Servant
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ assert( this->_p_sessionContainer );
+
+ return this->_p_sessionContainer->install_servant( Servant,
+ CIAO::Container::Component );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::uninstallServant
+(
+ CORBA::Object_ptr ObjRef
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ assert( this->_p_sessionContainer );
+
+ this->_p_sessionContainer->uninstall( ObjRef, CIAO::Container::Component );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+ENW::TSession_ptr
+Impl::TSEC_CheckPoint_exec_i::createSession
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ static long cnt = 0L;
+
+ ENW::TSession_var session = ENW::TSession::_nil();
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::createSession...\n" ) );
+
+ TSEC_Session_impl* p_sessionImpl = new TSEC_Session_impl( *this, ++cnt );
+ PortableServer::ServantBase_var safe_servant( p_sessionImpl );
+ CORBA::Object_var obj = this->installServant( p_sessionImpl
+ );
+ session = ENW::TSession::_narrow ( obj.in () );
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::createSession...[DONE]\n" ) );
+
+ return session._retn();
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+::CORBA::Boolean
+Impl::TSEC_CheckPoint_exec_i::destroySession
+(
+ ENW::TSession_ptr Session
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::destroySession...\n" ) );
+
+ if( CORBA::is_nil( Session ) )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::destroySession...[ERROR]\n" ) );
+ return 0;
+ }
+
+ this->uninstallServant( Session );
+
+ return 1;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+ENW::TSession_ptr
+Impl::TSEC_CheckPoint_exec_i::acquireSession
+(
+ CORBA::Long Ident
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ ENW::EUnknownIdent ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::acquireSession...\n" ) );
+
+ if( Ident <= 0 || Ident > TSEC_SESSION_MAX_IDENT )
+ {
+ if( Ident != -1 )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) );
+ throw ENW::EUnknownIdent();
+ }
+ }
+
+ ENW::TSession_var session = ENW::TSession::_nil();
+ TSEC_Session_impl* p_sessionImpl = 0;
+
+ try
+ {
+ {
+ //ACE_GUARD_RETURN( TMutex, guard, _mutex, ENW::TSession::_nil() );
+ p_sessionImpl = sessionVector[Ident-1]._p_sessionImpl;
+ }
+
+ p_sessionImpl->isInUse( 1 );
+ CORBA::Object_var obj = this->getObjRef( p_sessionImpl) ;
+ session = ENW::TSession::_narrow ( obj.in () );
+ //session = sessionVector[Ident-1]._session;
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Reason\n");
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) );
+
+ return session._retn();
+ }
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[DONE]\n" ) );
+
+ return session._retn();
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+::CORBA::Boolean
+Impl::TSEC_CheckPoint_exec_i::releaseSession
+(
+ CORBA::Long Ident,
+ ENW::TSession_ptr Session
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ ENW::EUnknownSession ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...\n" ) );
+
+ if( CORBA::is_nil( Session ) )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) );
+ throw ENW::EUnknownSession();
+ }
+
+ //CORBA::Long ident = Session->getIdent();
+ CORBA::Long ident = Ident;
+
+ if( ident <= 0 || ident > TSEC_SESSION_MAX_IDENT )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) );
+ return 0;;
+ }
+
+ TSEC_Session_impl* p_sessionImpl = 0;
+
+ {
+ //ACE_GUARD_RETURN( TMutex, guard, _mutex, FALSE );
+
+ p_sessionImpl = sessionVector[ident-1]._p_sessionImpl;
+ }
+
+ assert( p_sessionImpl );
+
+
+ if( !p_sessionImpl->isInUse() )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[ERROR]\n" ) );
+ return 0;
+ }
+
+ p_sessionImpl->isInUse( 0);
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) TSEC_CheckPoint_exec_i::releaseSession...[DONE]\n" ) );
+
+ return 1;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+ENW::CCM_ISessionService_ptr
+Impl::TSEC_CheckPoint_exec_i::get_sessionService
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ return ENW::CCM_ISessionService::_duplicate( this );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::set_session_context
+(
+ Components::SessionContext_ptr Ctx
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG,
+ "Impl::TSEC_CheckPoint_exec_i::set_session_context\n" ) );
+
+ this->_context =
+ ENW::CCM_TSEC_CheckPoint_Context::_narrow( Ctx
+ );
+
+ if( CORBA::is_nil( this->_context.in() ) )
+ {
+ throw CORBA::INTERNAL();
+ }
+
+ CIDL_TSEC_CheckPoint_Impl::TSEC_CheckPoint_Context* p_checkPoint_Context =
+ CIDL_TSEC_CheckPoint_Impl::TSEC_CheckPoint_Context::_narrow( Ctx );
+
+ if( !p_checkPoint_Context )
+ {
+ throw CORBA::INTERNAL();
+ }
+
+ this->_p_sessionContainer = p_checkPoint_Context->_ciao_the_Container();
+
+ if( !_p_sessionContainer )
+ {
+ throw CORBA::INTERNAL();
+ }
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::push_lifeTokenIn
+(
+ ENW::ET_LifeToken* /* Event */
+) ACE_THROW_SPEC( ( CORBA::SystemException ) )
+{
+ _awaitingLifeToken = false;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::ciao_preactivate
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ciao_preactivate\n" ) );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::ccm_activate
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_activate\n" ) );
+
+ TSEC_Session_impl* p_sessionImpl = 0;
+
+ for( CORBA::Long i = 0; i < TSEC_SESSION_MAX_IDENT; ++i )
+ {
+ p_sessionImpl = new TSEC_Session_impl( *this, i + 1 );
+ PortableServer::ServantBase_var safe_servant( p_sessionImpl );
+ CORBA::Object_var obj = this->installServant( p_sessionImpl
+ );
+ ENW::TSession_var session =
+ ENW::TSession::_narrow ( obj.in () );
+ sessionVector[i] = TSEC_SessionEntry( p_sessionImpl, session.in () );
+ }
+
+ _isActivated = true;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::ciao_postactivate
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ciao_postactivate\n" ) );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::ccm_passivate
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_passivate\n" ) );
+ _isActivated = false;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+void
+Impl::TSEC_CheckPoint_exec_i::ccm_remove
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+ ACE_DEBUG( ( LM_DEBUG, "Impl::TSEC_CheckPoint_exec_i::ccm_remove\n" ) );
+ _isActivated = false;
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_CheckPointHome_exec_i::TSEC_CheckPointHome_exec_i()
+{
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+Impl::TSEC_CheckPointHome_exec_i::~TSEC_CheckPointHome_exec_i()
+{
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+::Components::EnterpriseComponent_ptr
+Impl::TSEC_CheckPointHome_exec_i::new_TSEC_CheckPoint
+(
+ const char* Version
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ))
+{
+ return new Impl::TSEC_CheckPoint_exec_i( Version );
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+::Components::EnterpriseComponent_ptr
+Impl::TSEC_CheckPointHome_exec_i::create
+(
+) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) )
+{
+
+ return new Impl::TSEC_CheckPoint_exec_i();
+}
+
+
+//-------------------------------------------------------------------
+// Operation
+//-------------------------------------------------------------------
+
+extern "C" TSEC_CHECKPOINT_EXEC_Export ::Components::HomeExecutorBase_ptr
+createTSEC_CheckPointHome_Impl()
+{
+ return new Impl::TSEC_CheckPointHome_exec_i();
+}
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h
new file mode 100644
index 00000000000..5e5c3809813
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec.h
@@ -0,0 +1,260 @@
+//$Id$
+
+//===================================================================
+/**
+ * @file TSEC_CheckPoint_exec.h
+ *
+ * Header file for the Executor implementation.
+ */
+//===================================================================
+
+#ifndef TSEC_CheckPoint_EXEC_H
+#define TSEC_CheckPoint_EXEC_H
+
+//-------------------------------------------------------------------
+// Includes
+//-------------------------------------------------------------------
+
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+#include "tao/LocalObject.h"
+
+#include "ciao/Container_Base.h"
+
+#include "ENWS.h"
+#include "TSEC_CheckPointEIC.h"
+#include "TSEC_CheckPoint_exec_export.h"
+
+
+//-------------------------------------------------------------------
+// Defines
+//-------------------------------------------------------------------
+
+#define TSEC_SESSION_ID_MAX 0xffffffff
+#define TSEC_SESSION_MAX_IDENT 2
+
+
+//-------------------------------------------------------------------
+// Type definitions
+//-------------------------------------------------------------------
+
+
+//-------------------------------------------------------------------
+// Forward declarations
+//-------------------------------------------------------------------
+
+
+//-------------------------------------------------------------------
+// Classes
+//-------------------------------------------------------------------
+
+namespace Impl
+{
+ typedef ACE_SYNCH_MUTEX TMutex;
+
+ class TSEC_CheckPoint_exec_i;
+
+ class TSEC_Session_impl :
+ public virtual POA_ENW::TSession,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ TSEC_Session_impl
+ (
+ TSEC_CheckPoint_exec_i& Parent,
+ CORBA::Long Ident
+ );
+
+ virtual ~TSEC_Session_impl();
+
+ CORBA::Long getIdent() ACE_THROW_SPEC( ( CORBA::SystemException ) );
+ CORBA::Boolean isInUse() ACE_THROW_SPEC( ( CORBA::SystemException ) );
+ void isInUse( CORBA::Boolean Flag ) { _isInUse = Flag; }
+
+ protected:
+ CORBA::Boolean _isInUse;
+ CORBA::Long _ident;
+
+ TSEC_CheckPoint_exec_i& _parent;
+
+ CORBA::ULong hash
+ (
+ CORBA::ULong Maximum
+ );
+
+ TSEC_CheckPoint_exec_i& getParent() { return _parent; }
+
+ };
+
+ struct TSEC_SessionEntry
+ {
+ TSEC_SessionEntry();
+
+ TSEC_SessionEntry
+ (
+ TSEC_Session_impl* pSessionImpl,
+ ENW::TSession_ptr Session
+ );
+
+ TSEC_Session_impl* _p_sessionImpl;
+ ENW::TSession_var _session;
+ };
+
+ class TSEC_CHECKPOINT_EXEC_Export TSEC_CheckPoint_exec_i :
+ public virtual ENW::TSEC_CheckPoint_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ TSEC_CheckPoint_exec_i();
+ TSEC_CheckPoint_exec_i( const char* Version );
+
+ virtual ~TSEC_CheckPoint_exec_i();
+
+ // Attribute Operationen:
+ //
+
+
+ // Interface ISessionService
+ //
+
+ virtual ENW::CCM_ISessionService_ptr get_sessionService
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+
+ virtual ENW::TSession_ptr createSession
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ virtual CORBA::Boolean destroySession
+ (
+ ENW::TSession_ptr Session
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ virtual ENW::TSession_ptr acquireSession
+ (
+ CORBA::Long Ident
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ ENW::EUnknownIdent ) );
+
+ virtual CORBA::Boolean releaseSession
+ (
+ CORBA::Long Ident,
+ ENW::TSession_ptr Session
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ ENW::EUnknownSession ) );
+
+
+ // Events
+ //
+
+ virtual void push_lifeTokenIn
+ (
+ ENW::ET_LifeToken* Event
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+
+ // Operations from Components::SessionComponent
+ //
+
+ virtual void set_session_context
+ (
+ Components::SessionContext_ptr ctx
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+ virtual void ciao_preactivate
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+ virtual void ccm_activate
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+ virtual void ciao_postactivate
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+
+ virtual void ccm_passivate
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+ virtual void ccm_remove
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+
+ CORBA::Object_ptr getObjRef
+ (
+ PortableServer::Servant Servant
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ int init(
+ )ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ CORBA::Object_ptr installServant
+ (
+ PortableServer::Servant Servant
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ void uninstallServant
+ (
+ CORBA::Object_ptr ObjRef
+ ) ACE_THROW_SPEC( ( CORBA::SystemException ) );
+
+ TMutex& getMutex() { return _mutex; }
+
+ protected:
+ // Copmponent specific context
+
+ ENW::CCM_TSEC_CheckPoint_Context_var _context;
+ ::CIAO::Session_Container* _p_sessionContainer;
+ TMutex _mutex;
+ CORBA::ORB_var _orb;
+
+ private:
+ bool _awaitingLifeToken;
+ bool _isActivated;
+
+ //TSEC_Session_impl* sessionVector[TSEC_SESSION_MAX_IDENT];
+ TSEC_SessionEntry sessionVector[TSEC_SESSION_MAX_IDENT];
+ };
+
+ /**
+ * home executor implementation class.
+ */
+ class TSEC_CHECKPOINT_EXEC_Export TSEC_CheckPointHome_exec_i :
+ public virtual ENW::CCM_TSEC_CheckPointHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+
+ TSEC_CheckPointHome_exec_i();
+
+ virtual ~TSEC_CheckPointHome_exec_i();
+
+ // Explicit home operations.
+ virtual ::Components::EnterpriseComponent_ptr new_TSEC_CheckPoint
+ (
+ const char* Version
+ ) ACE_THROW_SPEC(( CORBA::SystemException));
+
+ // Implicit home operations.
+ virtual ::Components::EnterpriseComponent_ptr create
+ (
+ ) ACE_THROW_SPEC( ( CORBA::SystemException,
+ Components::CCMException ) );
+ };
+} // Impl
+
+extern "C" TSEC_CHECKPOINT_EXEC_Export ::Components::HomeExecutorBase_ptr
+createTSEC_CheckPointHome_Impl();
+
+#endif // TSEC_CheckPoint_EXEC_H
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h
new file mode 100644
index 00000000000..4b0bf7770ef
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_exec_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TSEC_CHECKPOINT_EXEC
+// ------------------------------
+#ifndef TSEC_CHECKPOINT_EXEC_EXPORT_H
+#define TSEC_CHECKPOINT_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TSEC_CHECKPOINT_EXEC_HAS_DLL)
+# define TSEC_CHECKPOINT_EXEC_HAS_DLL 1
+#endif /* ! TSEC_CHECKPOINT_EXEC_HAS_DLL */
+
+#if defined (TSEC_CHECKPOINT_EXEC_HAS_DLL) && (TSEC_CHECKPOINT_EXEC_HAS_DLL == 1)
+# if defined (TSEC_CHECKPOINT_EXEC_BUILD_DLL)
+# define TSEC_CHECKPOINT_EXEC_Export ACE_Proper_Export_Flag
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TSEC_CHECKPOINT_EXEC_BUILD_DLL */
+# define TSEC_CHECKPOINT_EXEC_Export ACE_Proper_Import_Flag
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TSEC_CHECKPOINT_EXEC_BUILD_DLL */
+#else /* TSEC_CHECKPOINT_EXEC_HAS_DLL == 1 */
+# define TSEC_CHECKPOINT_EXEC_Export
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARATION(T)
+# define TSEC_CHECKPOINT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TSEC_CHECKPOINT_EXEC_HAS_DLL == 1 */
+
+// Set TSEC_CHECKPOINT_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TSEC_CHECKPOINT_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TSEC_CHECKPOINT_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TSEC_CHECKPOINT_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TSEC_CHECKPOINT_EXEC_NTRACE */
+
+#if (TSEC_CHECKPOINT_EXEC_NTRACE == 1)
+# define TSEC_CHECKPOINT_EXEC_TRACE(X)
+#else /* (TSEC_CHECKPOINT_EXEC_NTRACE == 1) */
+# define TSEC_CHECKPOINT_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (TSEC_CHECKPOINT_EXEC_NTRACE == 1) */
+
+#endif /* TSEC_CHECKPOINT_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h
new file mode 100644
index 00000000000..5619f37d45d
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_stub_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TSEC_CHECKPOINT_STUB
+// ------------------------------
+#ifndef TSEC_CHECKPOINT_STUB_EXPORT_H
+#define TSEC_CHECKPOINT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TSEC_CHECKPOINT_STUB_HAS_DLL)
+# define TSEC_CHECKPOINT_STUB_HAS_DLL 1
+#endif /* ! TSEC_CHECKPOINT_STUB_HAS_DLL */
+
+#if defined (TSEC_CHECKPOINT_STUB_HAS_DLL) && (TSEC_CHECKPOINT_STUB_HAS_DLL == 1)
+# if defined (TSEC_CHECKPOINT_STUB_BUILD_DLL)
+# define TSEC_CHECKPOINT_STUB_Export ACE_Proper_Export_Flag
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TSEC_CHECKPOINT_STUB_BUILD_DLL */
+# define TSEC_CHECKPOINT_STUB_Export ACE_Proper_Import_Flag
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TSEC_CHECKPOINT_STUB_BUILD_DLL */
+#else /* TSEC_CHECKPOINT_STUB_HAS_DLL == 1 */
+# define TSEC_CHECKPOINT_STUB_Export
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARATION(T)
+# define TSEC_CHECKPOINT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TSEC_CHECKPOINT_STUB_HAS_DLL == 1 */
+
+// Set TSEC_CHECKPOINT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TSEC_CHECKPOINT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TSEC_CHECKPOINT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TSEC_CHECKPOINT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TSEC_CHECKPOINT_STUB_NTRACE */
+
+#if (TSEC_CHECKPOINT_STUB_NTRACE == 1)
+# define TSEC_CHECKPOINT_STUB_TRACE(X)
+#else /* (TSEC_CHECKPOINT_STUB_NTRACE == 1) */
+# define TSEC_CHECKPOINT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (TSEC_CHECKPOINT_STUB_NTRACE == 1) */
+
+#endif /* TSEC_CHECKPOINT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h
new file mode 100644
index 00000000000..99666df89e6
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/TSEC_CheckPoint_svnt_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl TSEC_CHECKPOINT_SVNT
+// ------------------------------
+#ifndef TSEC_CHECKPOINT_SVNT_EXPORT_H
+#define TSEC_CHECKPOINT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (TSEC_CHECKPOINT_SVNT_HAS_DLL)
+# define TSEC_CHECKPOINT_SVNT_HAS_DLL 1
+#endif /* ! TSEC_CHECKPOINT_SVNT_HAS_DLL */
+
+#if defined (TSEC_CHECKPOINT_SVNT_HAS_DLL) && (TSEC_CHECKPOINT_SVNT_HAS_DLL == 1)
+# if defined (TSEC_CHECKPOINT_SVNT_BUILD_DLL)
+# define TSEC_CHECKPOINT_SVNT_Export ACE_Proper_Export_Flag
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TSEC_CHECKPOINT_SVNT_BUILD_DLL */
+# define TSEC_CHECKPOINT_SVNT_Export ACE_Proper_Import_Flag
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TSEC_CHECKPOINT_SVNT_BUILD_DLL */
+#else /* TSEC_CHECKPOINT_SVNT_HAS_DLL == 1 */
+# define TSEC_CHECKPOINT_SVNT_Export
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARATION(T)
+# define TSEC_CHECKPOINT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TSEC_CHECKPOINT_SVNT_HAS_DLL == 1 */
+
+// Set TSEC_CHECKPOINT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (TSEC_CHECKPOINT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define TSEC_CHECKPOINT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define TSEC_CHECKPOINT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !TSEC_CHECKPOINT_SVNT_NTRACE */
+
+#if (TSEC_CHECKPOINT_SVNT_NTRACE == 1)
+# define TSEC_CHECKPOINT_SVNT_TRACE(X)
+#else /* (TSEC_CHECKPOINT_SVNT_NTRACE == 1) */
+# define TSEC_CHECKPOINT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (TSEC_CHECKPOINT_SVNT_NTRACE == 1) */
+
+#endif /* TSEC_CHECKPOINT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp
new file mode 100644
index 00000000000..6e7d40bcea5
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/SEC_CheckPoint/controller.cpp
@@ -0,0 +1,197 @@
+//$Id$
+
+
+/**
+ * @file controller.cpp
+ *
+ * This program interact with a TSEC_CheckPoint component, using its supported
+ * interface "ISessionService"
+ */
+
+
+//-------------------------------------------------------------------
+// Includes
+//-------------------------------------------------------------------
+
+#include <ace/streams.h>
+#include <ace/Get_Opt.h>
+
+#include "TSEC_CheckPointC.h"
+
+
+//-------------------------------------------------------------------
+// Defines
+//-------------------------------------------------------------------
+
+#define SEPARATION_LINE "----------------------------------------" \
+ "----------------------------------------\n"
+
+#define TESTCASE_NOT_DEFINED 0
+#define TESTCASE_ACQUIRE_RELEASE_SESSION 1
+#define TESTCASE_CREATE_DESTROY_SESSION 2
+
+
+//-------------------------------------------------------------------
+// Statics
+//-------------------------------------------------------------------
+
+static int _testcase = TESTCASE_NOT_DEFINED;
+static int _loop = 0;
+static int _ident = 1;
+static const char* _sessionService_ior = 0;
+
+
+//-------------------------------------------------------------------
+// Function
+//-------------------------------------------------------------------
+
+int
+parse_args
+(
+ int argc,
+ char* argv[]
+)
+{
+ ACE_Get_Opt get_opts( argc, argv, "i:k:l:t:" );
+ int c;
+
+ while( ( c = get_opts() ) != -1 )
+ {
+ switch( c )
+ {
+ case 'i':
+ _ident = ACE_OS::atoi( get_opts.opt_arg() );
+ break;
+
+ case 'k':
+ _sessionService_ior = get_opts.opt_arg();
+ break;
+
+ case 'l':
+ _loop = ACE_OS::atoi( get_opts.opt_arg() );
+ break;
+
+ case 't':
+ _testcase = ACE_OS::atoi( get_opts.opt_arg() );
+ break;
+
+ case '?': // display help for use of the server.
+ default:
+ ACE_ERROR_RETURN( ( LM_ERROR,
+ "usage: %s\n"
+ "-i <Ident> (default is 1)\n"
+ "-k <TSEC_CheckPoint IOR> (default is file://TSEC_CheckPoint.ior)\n"
+ "-t <testcase number> (default is 1)\n"
+ "\n",
+ argv[0] ),
+ -1 );
+ break;
+ }
+ }
+
+ if ( _sessionService_ior == 0 )
+ {
+ _sessionService_ior = "file://TSEC_CheckPoint.ior";
+ }
+
+ if( _testcase == 0 )
+ {
+ _testcase = TESTCASE_ACQUIRE_RELEASE_SESSION;
+ }
+
+ return 0;
+}
+
+
+//-------------------------------------------------------------------
+// Function
+//-------------------------------------------------------------------
+
+int
+main
+(
+ int argc,
+ char* argv[]
+)
+{
+ try
+ {
+ // Initialize orb
+ CORBA::ORB_var orb =
+ CORBA::ORB_init( argc, argv, "" );
+
+ if( parse_args( argc, argv ) != 0 )
+ {
+ return -1;
+ }
+
+ CORBA::Object_var obj = orb->string_to_object( _sessionService_ior
+ );
+
+ ENW::ISessionService_var sessionService =
+ ENW::ISessionService::_narrow (obj.in () );
+
+ if( CORBA::is_nil( sessionService.in() ) )
+ {
+ ACE_ERROR_RETURN( ( LM_ERROR,
+ "Unable to acquire 'SessionService' objref\n" ),
+ -1 );
+ }
+
+ ACE_DEBUG( ( LM_DEBUG, SEPARATION_LINE ) );
+
+ for( int i = 0; i < _loop; ++i )
+ {
+ switch( _testcase )
+ {
+ case TESTCASE_ACQUIRE_RELEASE_SESSION:
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase acquire release session...[running]\n" ) );
+
+ ENW::TSession_var session = sessionService->acquireSession( _ident );
+ //CORBA::Long ident = session->getIdent();
+ sessionService->releaseSession( _ident, session.in () );
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase acquire release session...[ready]\n" ) );
+ }
+
+ break;
+
+ case TESTCASE_CREATE_DESTROY_SESSION:
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[running]\n" ) );
+
+ ENW::TSession_var session = sessionService->createSession();
+ CORBA::Long ident = session->getIdent();
+ ACE_DEBUG(( LM_DEBUG, "(%P|%t@%T) Ident: %d\n", ident ) );
+
+ if( !sessionService->destroySession( session.in () ) )
+ {
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[ERROR]\n" ) );
+ }
+
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Executing testcase create destroy session...[ready]\n" ) );
+ }
+
+ break;
+
+ default:
+ ACE_DEBUG( ( LM_DEBUG, "(%P|%t@%T) Testcase is undefined!\n" ) );
+ break;
+
+ }
+ }
+
+ orb->destroy( );
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ cerr << "Uncaught CORBA exception" << endl;
+
+ return 1;
+ }
+
+ return 0;
+}
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp b/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp
new file mode 100644
index 00000000000..d814af11a50
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/DeploymentPlan.cdp
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan
+ xmlns:Deployment="http://www.omg.org/Deployment"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+ <label>CheckPoint-DeploymentPlan</label>
+
+ <UUID>CheckPoint_Plan_UUID_0001</UUID>
+
+ <realizes>
+ <label>CheckPoint-realizes-cid</label>
+ <UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+ <specificType/>
+ <supportedType>IDL:ENW/Sender:1.0</supportedType>
+ <port>
+ <name>read_message</name>
+ <specificType>IDL:ENW/ISessionService:1.0</specificType>
+ <supportedType>IDL:ENW/ISessionService:1.0</supportedType>
+ <provider>false</provider>
+ <exclusiveProvider>false</exclusiveProvider>
+ <exclusiveUser>true</exclusiveUser>
+ <optional>false</optional>
+ <kind>SimplexReceptacle</kind>
+ </port>
+ </realizes>
+
+ <implementation id="CheckPoint-TSEC_CheckPoint-mdd">
+ <name>CheckPoint-TSEC_CheckPoint-mdd</name>
+ <source><!-- @@ Don't know what goes here --></source>
+ <artifact>CheckPoint-TSEC_CheckPoint_exec</artifact>
+ <artifact>CheckPoint-TSEC_CheckPoint_svnt</artifact>
+ </implementation>
+
+ <instance id="CheckPoint-TSEC_CheckPoint-idd">
+ <name>CheckPoint-TSEC_CheckPoint-idd</name>
+ <node>CheckPointNode</node>
+ <source/>
+ <implementation>CheckPoint-TSEC_CheckPoint-mdd</implementation>
+ <configProperty>
+ <name>ComponentIOR</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>TSEC_CheckPoint.ior</string>
+ </value>
+ </value>
+ </configProperty>
+
+ <deployedResource>
+ <resourceUsage>InstanceUsesResource</resourceUsage>
+ <requirementName>CIAO:PolicySet</requirementName>
+ <resourceName>test_server_resource_id</resourceName>
+ <resourceValue>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>test_policy_set_id</string>
+ </value>
+ </resourceValue>
+ </deployedResource>
+ </instance>
+
+ <artifact id="CheckPoint-TSEC_CheckPoint_exec">
+ <name>TSEC_CheckPoint_exec</name>
+ <source/>
+ <node/>
+ <location>TSEC_CheckPoint_exec</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>createTSEC_CheckPointHome_Impl</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <artifact id="CheckPoint-TSEC_CheckPoint_svnt">
+ <name>TSEC_CheckPoint_svnt</name>
+ <source/>
+ <node/>
+ <location>TSEC_CheckPoint_svnt</location>
+ <execParameter>
+ <name>entryPoint</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>create_ENW_TSEC_CheckPointHome_Servant</string>
+ </value>
+ </value>
+ </execParameter>
+ </artifact>
+
+ <infoProperty>
+ <name>CIAOServerResources</name>
+ <value>
+ <type>
+ <kind>tk_string</kind>
+ </type>
+ <value>
+ <string>rt-config-example.csr</string>
+ </value>
+ </value>
+ </infoProperty>
+
+</Deployment:deploymentPlan>
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat b/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat
new file mode 100644
index 00000000000..ec06179aca7
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/TestNodeManagerMap.dat
@@ -0,0 +1,2 @@
+CheckPointNode corbaloc:iiop:localhost:30000/NodeManager
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr b/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr
new file mode 100644
index 00000000000..e1d120352aa
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/rt-config-example.csr
@@ -0,0 +1,30 @@
+
+<CIAO:ServerResources
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/ServerResources CIAOServerResources.xsd"
+ id="test_server_resource_id">
+
+ <orbConfigs>
+ <resources>
+ <threadpool id="threadpool-1">
+ <stacksize>0</stacksize>
+ <static_threads>6</static_threads>
+ <dynamic_threads>0</dynamic_threads>
+ <default_priority>2</default_priority>
+ <allow_request_buffering>false</allow_request_buffering>
+ <max_buffered_requests>0</max_buffered_requests>
+ <max_request_buffered_size>0</max_request_buffered_size>
+ </threadpool>
+ </resources>
+
+ <policySet id="test_policy_set_id">
+ <priorityModel server_priority="2">
+ <priority_model>SERVER_DECLARED</priority_model>
+ </priorityModel>
+ <threadpool>threadpool-1</threadpool>
+ </policySet>
+
+ </orbConfigs>
+</CIAO:ServerResources> \ No newline at end of file
diff --git a/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl b/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl
new file mode 100644
index 00000000000..6688e0a224f
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/descriptors/run_test.pl
@@ -0,0 +1,177 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+use lib "$ENV{'ACE_ROOT'}/bin";
+use PerlACE::Run_Test;
+
+$DAnCE = "$ENV{'ACE_ROOT'}/TAO/CIAO/DAnCE";
+$CIAO_ROOT = "$ENV{'CIAO_ROOT'}";
+$TAO_ROOT = "$ENV{'TAO_ROOT'}";
+$daemons_running = 0;
+$em_running = 0;
+$daemons = 1;
+@ports = ( 30000 );
+@iorfiles = ( "NodeApp.ior" );
+$status = 0;
+$dat_file = "TestNodeManagerMap.dat";
+$cdp_file = "DeploymentPlan.cdp";
+$controller_exec = "../SEC_CheckPoint/controller";
+
+$E = 0;
+$EM = 0;
+
+# Delete if there are any .ior files.
+sub delete_ior_files {
+ for ($i = 0; $i < $daemons; ++$i) {
+ unlink $iorfiles[$i];
+ }
+ unlink PerlACE::LocalFile ("EM.ior");
+ unlink PerlACE::LocalFile ("TSEC_CheckPoint.ior");
+ unlink PerlACE::LocalFile ("DAM.ior");
+}
+
+sub kill_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+}
+
+sub kill_open_processes {
+ if ($daemons_running == 1) {
+ kill_node_daemons ();
+ }
+
+ if ($em_running == 1) {
+ $EM->Kill ();
+ $EM->TimedWait (1);
+ }
+}
+
+sub run_node_daemons {
+ for ($i = 0; $i < $daemons; ++$i)
+ {
+ $iorfile = $iorfiles[$i];
+ $port = $ports[$i];
+
+ $iiop = "iiop://localhost:$port";
+ $node_app = "$DAnCE/NodeApplication/NodeApplication";
+
+ $d_cmd = "$DAnCE/NodeManager/NodeManager";
+ $d_param = "-ORBEndpoint $iiop -s $node_app -o $iorfile -a \"-r\"";
+
+ $Daemons[$i] = new PerlACE::Process ($d_cmd, $d_param);
+
+
+ $result = $Daemons[$i]->Spawn ();
+ push(@processes, $Daemons[$i]);
+
+ if (PerlACE::waitforfile_timed ($iorfile,
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of node daemon $i could not be found\n";
+ for (; $i > 0; --$i) {
+ $Daemons[$i]->Kill (); $Daemons[$i]->TimedWait (1);
+ }
+ return -1;
+ }
+ }
+ $daemons_running = 1;
+ return 0;
+}
+
+delete_ior_files ();
+
+
+# Invoke node daemons.
+print "Invoking node daemons\n";
+$status = run_node_daemons ();
+
+if ($status != 0) {
+ print STDERR "ERROR: Unable to execute the node daemons\n";
+ exit 1;
+}
+
+$ns_running = 1;
+
+# Invoke execution manager.
+print "Invoking execution manager\n";
+$EM = new PerlACE::Process ("$DAnCE/ExecutionManager/Execution_Manager",
+ "-o EM.ior -i $dat_file");
+$EM->Spawn ();
+
+if (PerlACE::waitforfile_timed ("EM.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR
+ "ERROR: The ior file of execution manager could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+$em_running = 1;
+
+# Invoke executor - start the application -.
+print "Invoking executor - start the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-p DeploymentPlan.cdp -k file://EM.ior -o DAM.ior");
+
+$E->SpawnWaitKill (5000);
+
+
+if (PerlACE::waitforfile_timed ("TSEC_CheckPoint.ior",
+ $PerlACE::wait_interval_for_process_creation) == -1) {
+ print STDERR "ERROR: The ior file of sender could not be found\n";
+ kill_open_processes ();
+ exit 1;
+}
+
+print "Running testcase 1\n";
+
+$controller = new PerlACE::Process ("$controller_exec", "-i 1 -k file://TSEC_CheckPoint.ior -t 1 -l 100000");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+
+print "Running testcase 2\n";
+
+$controller = new PerlACE::Process ("$controller_exec", "-i 2 -k file://TSEC_CheckPoint.ior -t 1 -l 100000");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+print "Running testcase 3\n";
+
+$controller = new PerlACE::Process ("$controller_exec", "-k file://TSEC_CheckPoint.ior -t 2 -l 100000");
+$result = $controller->SpawnWaitKill (3000);
+
+if ($result != 0) {
+ print STDERR "ERROR: The controller returned $result\n";
+ $status = 1;
+}
+
+
+# Invoke executor - stop the application -.
+print "Invoking executor - stop the application -\n";
+$E =
+ new PerlACE::Process ("$DAnCE/Plan_Launcher/plan_launcher",
+ "-k file://EM.ior -i file://DAM.ior");
+$E->SpawnWaitKill (3000);
+
+print "Executor returned.\n";
+print "Shutting down rest of the processes.\n";
+
+delete_ior_files ();
+kill_open_processes ();
+
+exit $status;
diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl
new file mode 100644
index 00000000000..f62febba8a3
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.idl
@@ -0,0 +1,52 @@
+//$Id$
+
+#ifndef ENW_IDL
+#define ENW_IDL
+
+#include <Components.idl>
+
+
+module ENW
+{
+ exception EUnknownIdent
+ {
+ };
+
+ exception EUnknownSession
+ {
+ };
+
+ eventtype ET_LifeToken
+ {
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ //
+ // ICheckPoint-Interfaces
+ //
+
+ const long IdNotDefined = -1;
+
+ interface TSession
+ {
+ long getIdent();
+ boolean isInUse();
+ };
+
+ interface ISessionService
+ {
+ TSession createSession();
+ boolean destroySession( in TSession Session );
+
+ TSession acquireSession( in long Ident )
+ raises( EUnknownIdent );
+
+ boolean releaseSession( in long Ident,
+ in TSession Session )
+ raises( EUnknownSession );
+ };
+
+};
+
+
+#endif //ENW_IDL
diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc
new file mode 100644
index 00000000000..22227109f39
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW.mpc
@@ -0,0 +1,45 @@
+//$Id$
+
+project(ENW_stub): ciao_client_dnc, event {
+
+ sharedname = ENW_stub
+ idlflags -= -GT
+ idlflags += -Wb,stub_export_macro=ENW_STUB_Export \
+ -Wb,stub_export_include=ENW_stub_export.h \
+ -Wb,skel_export_macro=ENW_SKEL_Export \
+ -Wb,skel_export_include=ENW_skel_export.h
+ dynamicflags = ENW_STUB_BUILD_DLL
+
+ IDL_Files {
+ ENW.idl
+ }
+
+ Source_Files {
+ ENWC.cpp
+ }
+}
+
+project(ENW_skel) : ciao_servant_dnc, event {
+ after += ENW_stub
+ sharedname = ENW_skel
+ libs += ENW_stub
+ idlflags -= -GT
+ idlflags += -Wb,stub_export_macro=ENW_STUB_Export \
+ -Wb,stub_export_include=ENW_stub_export.h \
+ -Wb,skel_export_macro=ENW_SKEL_Export \
+ -Wb,skel_export_include=ENW_skel_export.h
+
+ dynamicflags = ENW_SKEL_BUILD_DLL
+
+ IDL_Files {
+ ENW.idl
+ }
+
+ Source_Files {
+ ENWS.cpp
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_skel_export.h b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_skel_export.h
new file mode 100644
index 00000000000..05e87fade4b
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_skel_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ENW_SVNT
+// ------------------------------
+#ifndef ENW_SKEL_EXPORT_H
+#define ENW_SKEL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ENW_SKEL_HAS_DLL)
+# define ENW_SKEL_HAS_DLL 1
+#endif /* ! ENW_SKEL_HAS_DLL */
+
+#if defined (ENW_SKEL_HAS_DLL) && (ENW_SKEL_HAS_DLL == 1)
+# if defined (ENW_SKEL_BUILD_DLL)
+# define ENW_SKEL_Export ACE_Proper_Export_Flag
+# define ENW_SKEL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ENW_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ENW_SKEL_BUILD_DLL */
+# define ENW_SKEL_Export ACE_Proper_Import_Flag
+# define ENW_SKEL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ENW_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ENW_SKEL_BUILD_DLL */
+#else /* ENW_SKEL_HAS_DLL == 1 */
+# define ENW_SKEL_Export
+# define ENW_SKEL_SINGLETON_DECLARATION(T)
+# define ENW_SKEL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ENW_SKEL_HAS_DLL == 1 */
+
+// Set ENW_SKEL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ENW_SKEL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ENW_SKEL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ENW_SKEL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ENW_SKEL_NTRACE */
+
+#if (ENW_SKEL_NTRACE == 1)
+# define ENW_SKEL_TRACE(X)
+#else /* (ENW_SKEL_NTRACE == 1) */
+# define ENW_SKEL_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ENW_SKEL_NTRACE == 1) */
+
+#endif /* ENW_SKEL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_stub_export.h b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_stub_export.h
new file mode 100644
index 00000000000..ce5a4067f67
--- /dev/null
+++ b/modules/CIAO/tests/Bug_2130_Regression/interfaces/ENW_stub_export.h
@@ -0,0 +1,50 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ENW_STUB
+// ------------------------------
+#ifndef ENW_STUB_EXPORT_H
+#define ENW_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ENW_STUB_HAS_DLL)
+# define ENW_STUB_HAS_DLL 1
+#endif /* ! ENW_STUB_HAS_DLL */
+
+#if defined (ENW_STUB_HAS_DLL) && (ENW_STUB_HAS_DLL == 1)
+# if defined (ENW_STUB_BUILD_DLL)
+# define ENW_STUB_Export ACE_Proper_Export_Flag
+# define ENW_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ENW_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ENW_STUB_BUILD_DLL */
+# define ENW_STUB_Export ACE_Proper_Import_Flag
+# define ENW_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ENW_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ENW_STUB_BUILD_DLL */
+#else /* ENW_STUB_HAS_DLL == 1 */
+# define ENW_STUB_Export
+# define ENW_STUB_SINGLETON_DECLARATION(T)
+# define ENW_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ENW_STUB_HAS_DLL == 1 */
+
+// Set ENW_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ENW_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ENW_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ENW_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ENW_STUB_NTRACE */
+
+#if (ENW_STUB_NTRACE == 1)
+# define ENW_STUB_TRACE(X)
+#else /* (ENW_STUB_NTRACE == 1) */
+# define ENW_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+#endif /* (ENW_STUB_NTRACE == 1) */
+
+#endif /* ENW_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/Basic.idl b/modules/CIAO/tests/CIDL/CodeGen/Basic.idl
new file mode 100644
index 00000000000..2d8ab209e5a
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/Basic.idl
@@ -0,0 +1,57 @@
+// $Id$
+//=============================================================================
+/**
+ * @file Basic.idl
+ *
+ * Definition of events, and common interfaces used in the BasicSP module.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//=============================================================================
+
+#ifndef CIAO_BASIC_IDL
+#define CIAO_BASIC_IDL
+
+#include <Components.idl>
+
+// @@NOTE: Do we need a pragma prefix. Anyway its broken now in TAO..
+
+module Extra
+{
+ exception NoReason {};
+ exception NoRhyme {};
+
+ interface Superfluous
+ {
+ attribute string useless_attr;
+ long superfluous_op (in string empty_arg)
+ raises (NoReason);
+ };
+
+ interface Supernumerary
+ {
+ void supernumerary_op (out string dummy_arg)
+ raises (NoRhyme, NoReason);
+ };
+};
+
+// #pragma prefix ""
+
+module Basic
+{
+ interface ReadData : Extra::Superfluous
+ {
+ string get_data ();
+ };
+
+ interface AnalyzeData
+ {
+ void perform_analysis (inout string data);
+ attribute boolean fine_tooth_comb;
+ };
+
+ eventtype TimeOut {};
+ eventtype DataAvailable {};
+};
+
+#endif /*CIAO_BASIC_IDL*/
diff --git a/modules/CIAO/tests/CIDL/CodeGen/Basic_stub_export.h b/modules/CIAO/tests/CIDL/CodeGen/Basic_stub_export.h
new file mode 100644
index 00000000000..c47d1d3f45f
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/Basic_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BASIC_STUB
+// ------------------------------
+#ifndef BASIC_STUB_EXPORT_H
+#define BASIC_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BASIC_STUB_HAS_DLL)
+# define BASIC_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BASIC_STUB_HAS_DLL */
+
+#if !defined (BASIC_STUB_HAS_DLL)
+# define BASIC_STUB_HAS_DLL 1
+#endif /* ! BASIC_STUB_HAS_DLL */
+
+#if defined (BASIC_STUB_HAS_DLL) && (BASIC_STUB_HAS_DLL == 1)
+# if defined (BASIC_STUB_BUILD_DLL)
+# define BASIC_STUB_Export ACE_Proper_Export_Flag
+# define BASIC_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASIC_STUB_BUILD_DLL */
+# define BASIC_STUB_Export ACE_Proper_Import_Flag
+# define BASIC_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASIC_STUB_BUILD_DLL */
+#else /* BASIC_STUB_HAS_DLL == 1 */
+# define BASIC_STUB_Export
+# define BASIC_STUB_SINGLETON_DECLARATION(T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASIC_STUB_HAS_DLL == 1 */
+
+// Set BASIC_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASIC_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASIC_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASIC_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASIC_STUB_NTRACE */
+
+#if (BASIC_STUB_NTRACE == 1)
+# define BASIC_STUB_TRACE(X)
+#else /* (BASIC_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASIC_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASIC_STUB_NTRACE == 1) */
+
+#endif /* BASIC_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/Basic_svnt_export.h b/modules/CIAO/tests/CIDL/CodeGen/Basic_svnt_export.h
new file mode 100644
index 00000000000..996ea3e3160
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/Basic_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s BASIC_SVNT
+// ------------------------------
+#ifndef BASIC_SVNT_EXPORT_H
+#define BASIC_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (BASIC_SVNT_HAS_DLL)
+# define BASIC_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && BASIC_SVNT_HAS_DLL */
+
+#if !defined (BASIC_SVNT_HAS_DLL)
+# define BASIC_SVNT_HAS_DLL 1
+#endif /* ! BASIC_SVNT_HAS_DLL */
+
+#if defined (BASIC_SVNT_HAS_DLL) && (BASIC_SVNT_HAS_DLL == 1)
+# if defined (BASIC_SVNT_BUILD_DLL)
+# define BASIC_SVNT_Export ACE_Proper_Export_Flag
+# define BASIC_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASIC_SVNT_BUILD_DLL */
+# define BASIC_SVNT_Export ACE_Proper_Import_Flag
+# define BASIC_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASIC_SVNT_BUILD_DLL */
+#else /* BASIC_SVNT_HAS_DLL == 1 */
+# define BASIC_SVNT_Export
+# define BASIC_SVNT_SINGLETON_DECLARATION(T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASIC_SVNT_HAS_DLL == 1 */
+
+// Set BASIC_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASIC_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASIC_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASIC_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASIC_SVNT_NTRACE */
+
+#if (BASIC_SVNT_NTRACE == 1)
+# define BASIC_SVNT_TRACE(X)
+#else /* (BASIC_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASIC_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASIC_SVNT_NTRACE == 1) */
+
+#endif /* BASIC_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen.cidl b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.cidl
new file mode 100644
index 00000000000..e8570e23f38
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.cidl
@@ -0,0 +1,19 @@
+//$Id$
+
+#ifndef CODEGEN_CIDL
+#define CODEGEN_CIDL
+
+#include "CodeGen.idl"
+
+composition session CodeGen_Impl
+{
+ home executor CodeGenHome_Exec
+ {
+ implements Basic::CodeGenHome;
+ manages CodeGen_Exec;
+ };
+};
+
+#endif /* CODEGEN_CIDL */
+
+
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl
new file mode 100644
index 00000000000..e14f5fde42e
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.idl
@@ -0,0 +1,45 @@
+//$Id$
+#include "Basic.idl"
+
+module Basic
+{
+ component Base supports Extra::Supernumerary, Extra::Superfluous
+ {
+ provides ReadData data_read;
+ attribute boolean is_not_necessary;
+ };
+
+ component CodeGen : Base
+ {
+ provides ReadData data_out;
+ uses ReadData data_in;
+ publishes DataAvailable out_avail;
+ consumes DataAvailable in_avail;
+ provides AnalyzeData data_crunch;
+
+ readonly attribute boolean is_necessary;
+ };
+
+ home BaseHome supports Extra::Supernumerary manages Base
+ {
+ void base_do_nothing ();
+
+ factory create_no_base (in long fake_id)
+ raises (Extra::NoRhyme);
+
+ finder find_no_base ();
+
+ readonly attribute boolean is_useful;
+ };
+
+ home CodeGenHome : BaseHome manages CodeGen
+ {
+ factory create_no_derived ();
+
+ finder find_no_derived ();
+
+ attribute boolean is_not_useful;
+
+ string do_nothing ();
+ };
+};
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc
new file mode 100644
index 00000000000..318631a32d2
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen.mpc
@@ -0,0 +1,120 @@
+// $Id$
+
+project(CIDL_Basic_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ sharedname = CIDL_Basic_stub
+ idlflags += -Wb,stub_export_macro=BASIC_STUB_Export -Wb,stub_export_include=Basic_stub_export.h -Wb,skel_export_macro=BASIC_SVNT_Export -Wb,skel_export_include=Basic_svnt_export.h
+ dynamicflags = BASIC_STUB_BUILD_DLL
+
+ IDL_Files {
+ Basic.idl
+ }
+
+ Source_Files {
+ BasicC.cpp
+ }
+
+ Header_Files {
+ BasicC.h
+ Basic_stub_export.h
+ }
+}
+
+project(CIDL_Basic_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += CIDL_Basic_stub
+ sharedname = CIDL_Basic_svnt
+ libs += CIDL_Basic_stub
+
+ idlflags += -Wb,stub_export_macro=BASIC_STUB_Export -Wb,stub_export_include=Basic_stub_export.h -Wb,skel_export_macro=BASIC_SVNT_Export -Wb,skel_export_include=Basic_svnt_export.h
+ dynamicflags = BASIC_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Basic.idl
+ }
+
+ Source_Files {
+ BasicS.cpp
+ }
+
+ Header_Files {
+ BasicS.h
+ Basic_svnt_export.h
+ }
+}
+
+project(CodeGen_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += CIDL_Basic_stub
+ libs += CIDL_Basic_stub
+ sharedname = CodeGen_stub
+ idlflags += -Wb,stub_export_macro=CODEGEN_STUB_Export -Wb,stub_export_include=CodeGen_stub_export.h -Wb,skel_export_macro=CODEGEN_SVNT_Export -Wb,skel_export_include=CodeGen_svnt_export.h
+ dynamicflags = CODEGEN_STUB_BUILD_DLL
+
+ IDL_Files {
+ CodeGen.idl
+ }
+
+ Source_Files {
+ CodeGenC.cpp
+ }
+
+ Header_Files {
+ CodeGenC.h
+ CodeGen_stub_export.h
+ }
+}
+
+project(CodeGen_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += CIDL_Basic_svnt CodeGen_stub
+ sharedname = CodeGen_svnt
+ libs += CodeGen_stub CIDL_Basic_stub CIDL_Basic_svnt
+ idlflags += -Wb,export_macro=CODEGEN_SVNT_Export -Wb,export_include=CodeGen_svnt_export.h
+ dynamicflags = CODEGEN_SVNT_BUILD_DLL
+ cidlflags -= --
+ cidlflags += --gen-exec-impl --exec-export-include CodeGen_exec_export.h --
+
+ CIDL_Files {
+ CodeGen.cidl
+ }
+
+ IDL_Files {
+ CodeGenE.idl
+ }
+
+ Source_Files {
+ CodeGenEC.cpp
+ CodeGenS.cpp
+ CodeGen_svnt.cpp
+ }
+
+ Header_Files {
+ CodeGenEC.h
+ CodeGenS.h
+ CodeGen_svnt.h
+ CodeGen_svnt_export.h
+ }
+}
+
+
+project(CodeGen_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += CodeGen_svnt CodeGen_stub
+ sharedname = CodeGen_exec
+ libs += CodeGen_stub CodeGen_svnt CIDL_Basic_stub CIDL_Basic_svnt
+ dynamicflags = CODEGEN_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ CodeGen_exec.cpp
+ }
+
+ Header_Files {
+ CodeGen_exec.h
+ CodeGen_exec_export.h
+ }
+}
+
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen_exec_export.h b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_exec_export.h
new file mode 100644
index 00000000000..545561f1278
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_exec_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s CODEGEN_EXEC
+// ------------------------------
+#ifndef CODEGEN_EXEC_EXPORT_H
+#define CODEGEN_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CODEGEN_EXEC_HAS_DLL)
+# define CODEGEN_EXEC_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CODEGEN_EXEC_HAS_DLL */
+
+#if !defined (CODEGEN_EXEC_HAS_DLL)
+# define CODEGEN_EXEC_HAS_DLL 1
+#endif /* ! CODEGEN_EXEC_HAS_DLL */
+
+#if defined (CODEGEN_EXEC_HAS_DLL) && (CODEGEN_EXEC_HAS_DLL == 1)
+# if defined (CODEGEN_EXEC_BUILD_DLL)
+# define CODEGEN_EXEC_Export ACE_Proper_Export_Flag
+# define CODEGEN_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CODEGEN_EXEC_BUILD_DLL */
+# define CODEGEN_EXEC_Export ACE_Proper_Import_Flag
+# define CODEGEN_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CODEGEN_EXEC_BUILD_DLL */
+#else /* CODEGEN_EXEC_HAS_DLL == 1 */
+# define CODEGEN_EXEC_Export
+# define CODEGEN_EXEC_SINGLETON_DECLARATION(T)
+# define CODEGEN_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CODEGEN_EXEC_HAS_DLL == 1 */
+
+// Set CODEGEN_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CODEGEN_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CODEGEN_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CODEGEN_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CODEGEN_EXEC_NTRACE */
+
+#if (CODEGEN_EXEC_NTRACE == 1)
+# define CODEGEN_EXEC_TRACE(X)
+#else /* (CODEGEN_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CODEGEN_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CODEGEN_EXEC_NTRACE == 1) */
+
+#endif /* CODEGEN_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen_stub_export.h b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_stub_export.h
new file mode 100644
index 00000000000..bd48c6a60ab
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_stub_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s CODEGEN_STUB
+// ------------------------------
+#ifndef CODEGEN_STUB_EXPORT_H
+#define CODEGEN_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CODEGEN_STUB_HAS_DLL)
+# define CODEGEN_STUB_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CODEGEN_STUB_HAS_DLL */
+
+#if !defined (CODEGEN_STUB_HAS_DLL)
+# define CODEGEN_STUB_HAS_DLL 1
+#endif /* ! CODEGEN_STUB_HAS_DLL */
+
+#if defined (CODEGEN_STUB_HAS_DLL) && (CODEGEN_STUB_HAS_DLL == 1)
+# if defined (CODEGEN_STUB_BUILD_DLL)
+# define CODEGEN_STUB_Export ACE_Proper_Export_Flag
+# define CODEGEN_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CODEGEN_STUB_BUILD_DLL */
+# define CODEGEN_STUB_Export ACE_Proper_Import_Flag
+# define CODEGEN_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CODEGEN_STUB_BUILD_DLL */
+#else /* CODEGEN_STUB_HAS_DLL == 1 */
+# define CODEGEN_STUB_Export
+# define CODEGEN_STUB_SINGLETON_DECLARATION(T)
+# define CODEGEN_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CODEGEN_STUB_HAS_DLL == 1 */
+
+// Set CODEGEN_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CODEGEN_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CODEGEN_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CODEGEN_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CODEGEN_STUB_NTRACE */
+
+#if (CODEGEN_STUB_NTRACE == 1)
+# define CODEGEN_STUB_TRACE(X)
+#else /* (CODEGEN_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CODEGEN_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CODEGEN_STUB_NTRACE == 1) */
+
+#endif /* CODEGEN_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/CodeGen_svnt_export.h b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_svnt_export.h
new file mode 100644
index 00000000000..4c1f720b01f
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/CodeGen_svnt_export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s CODEGEN_SVNT
+// ------------------------------
+#ifndef CODEGEN_SVNT_EXPORT_H
+#define CODEGEN_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CODEGEN_SVNT_HAS_DLL)
+# define CODEGEN_SVNT_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CODEGEN_SVNT_HAS_DLL */
+
+#if !defined (CODEGEN_SVNT_HAS_DLL)
+# define CODEGEN_SVNT_HAS_DLL 1
+#endif /* ! CODEGEN_SVNT_HAS_DLL */
+
+#if defined (CODEGEN_SVNT_HAS_DLL) && (CODEGEN_SVNT_HAS_DLL == 1)
+# if defined (CODEGEN_SVNT_BUILD_DLL)
+# define CODEGEN_SVNT_Export ACE_Proper_Export_Flag
+# define CODEGEN_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CODEGEN_SVNT_BUILD_DLL */
+# define CODEGEN_SVNT_Export ACE_Proper_Import_Flag
+# define CODEGEN_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CODEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CODEGEN_SVNT_BUILD_DLL */
+#else /* CODEGEN_SVNT_HAS_DLL == 1 */
+# define CODEGEN_SVNT_Export
+# define CODEGEN_SVNT_SINGLETON_DECLARATION(T)
+# define CODEGEN_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CODEGEN_SVNT_HAS_DLL == 1 */
+
+// Set CODEGEN_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CODEGEN_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CODEGEN_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CODEGEN_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CODEGEN_SVNT_NTRACE */
+
+#if (CODEGEN_SVNT_NTRACE == 1)
+# define CODEGEN_SVNT_TRACE(X)
+#else /* (CODEGEN_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CODEGEN_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CODEGEN_SVNT_NTRACE == 1) */
+
+#endif /* CODEGEN_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/CIDL/CodeGen/README b/modules/CIAO/tests/CIDL/CodeGen/README
new file mode 100644
index 00000000000..da6e8f6ee90
--- /dev/null
+++ b/modules/CIAO/tests/CIDL/CodeGen/README
@@ -0,0 +1,40 @@
+
+Code Generation Test
+========================
+
+While the tests in CIAO_ROOT/tests/IDL3 target IDL3 support
+and IDL3-specific code generation in particular, the tests
+in CIAO_ROOT/CIDL target CIDL features and code generated
+from .cidl files. The test in this directory particularly
+stresses the code generation of the CIDL compiler. This
+code includes the executor mapping IDL, the servant code,
+and the executor implementation code. The latter is not
+fully generated of course, it's merely classes (one for
+each component executor, home executor, and facet executor)
+with the spec-defined operations filled in, but with the
+IDL-defined operations and attributes left blank.
+
+The IDL files in this test include most if not all of the
+IDL3 features that might cause a problem in code generation -
+catching operations and attributes for supported interfaces,
+operations and attributes for supported interface base
+classes, operations and attributes for inherited home
+classes, factory and finder operations for homes and those
+inherited from base homes - you get the idea. More stuff
+will be added as we think of it or a problem crops up.The object
+of this test is for all builds to complete successfully -
+there's no execution involved, since every build is a
+library, there's no executable to drive it.
+
+Please see the README file in CIAO_ROOT for info on how
+to set up builds with MPC. The builds in this test depend
+directly on CIAO_Container, CIAO_Servant and CIAO_Stub,
+and indirectly on everything those three depend on. There's
+a list in the above mentioned README file - to build those
+libraries, you'll of course need ACE (ACE_ROOT/ace), TAO
+(ACE_ROOT/TAO/tao) the IDL compiler (3 builds in
+ACE_ROOT/TAO/TAO_IDL) and gperf (ACE_ROOT/apps/gperf/src).
+
+Enjoy!
+
+Jeff \ No newline at end of file
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl
new file mode 100644
index 00000000000..15c32fe82b3
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.idl
@@ -0,0 +1,51 @@
+// $Id$
+/**
+ * @file Attributes.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include <Components.idl>
+
+module Attributes
+{
+ component Foo
+ {
+ attribute float test;
+ attribute long testA, testB;
+ };
+
+ component Bar
+ {
+ readonly attribute float test1;
+ readonly attribute long testB, testC;
+ };
+
+ exception FooException
+ {
+ };
+
+ exception BarException
+ {
+ };
+
+ component FooRaises
+ {
+ attribute float test2 getraises (FooException);
+ };
+
+ component BarRaises
+ {
+ attribute float test3 setraises (BarException);
+ };
+
+ component FooBarRaises
+ {
+ attribute float test4
+ getraises (FooException) setraises (BarException);
+ };
+
+ component ROFooRaises
+ {
+ readonly attribute float test5 raises (FooException);
+ };
+};
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc
new file mode 100644
index 00000000000..9776b118333
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Attributes"
+
+project(Attributes_stub): ciao_client_dnc {
+
+ sharedname = Attributes_stub
+ idlflags += -Wb,stub_export_macro=ATTRIBUTES_STUB_Export -Wb,stub_export_include=Attributes_stub_export.h -Wb,skel_export_macro=ATTRIBUTES_SVNT_Export -Wb,skel_export_include=Attributes_svnt_export.h
+ dynamicflags = ATTRIBUTES_STUB_BUILD_DLL
+
+ IDL_Files {
+ Attributes.idl
+ }
+
+ Source_Files {
+ AttributesC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h
new file mode 100644
index 00000000000..9d4d2c15a8d
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ATTRIBUTES_STUB
+// ------------------------------
+#ifndef ATTRIBUTES_STUB_EXPORT_H
+#define ATTRIBUTES_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ATTRIBUTES_STUB_HAS_DLL)
+# define ATTRIBUTES_STUB_HAS_DLL 1
+#endif /* ! ATTRIBUTES_STUB_HAS_DLL */
+
+#if defined (ATTRIBUTES_STUB_HAS_DLL) && (ATTRIBUTES_STUB_HAS_DLL == 1)
+# if defined (ATTRIBUTES_STUB_BUILD_DLL)
+# define ATTRIBUTES_STUB_Export ACE_Proper_Export_Flag
+# define ATTRIBUTES_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ATTRIBUTES_STUB_BUILD_DLL */
+# define ATTRIBUTES_STUB_Export ACE_Proper_Import_Flag
+# define ATTRIBUTES_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ATTRIBUTES_STUB_BUILD_DLL */
+#else /* ATTRIBUTES_STUB_HAS_DLL == 1 */
+# define ATTRIBUTES_STUB_Export
+# define ATTRIBUTES_STUB_SINGLETON_DECLARATION(T)
+# define ATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ATTRIBUTES_STUB_HAS_DLL == 1 */
+
+// Set ATTRIBUTES_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ATTRIBUTES_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ATTRIBUTES_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ATTRIBUTES_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ATTRIBUTES_STUB_NTRACE */
+
+#if (ATTRIBUTES_STUB_NTRACE == 1)
+# define ATTRIBUTES_STUB_TRACE(X)
+#else /* (ATTRIBUTES_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ATTRIBUTES_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ATTRIBUTES_STUB_NTRACE == 1) */
+
+#endif /* ATTRIBUTES_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h
new file mode 100644
index 00000000000..d0502647130
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Attributes/Attributes_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl generate_export_file.pl ATTRIBUTES_SVNT
+// ------------------------------
+#ifndef GENERATE_EXPORT_FILE.PL_EXPORT_H
+#define GENERATE_EXPORT_FILE.PL_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (GENERATE_EXPORT_FILE.PL_HAS_DLL)
+# define GENERATE_EXPORT_FILE.PL_HAS_DLL 1
+#endif /* ! GENERATE_EXPORT_FILE.PL_HAS_DLL */
+
+#if defined (GENERATE_EXPORT_FILE.PL_HAS_DLL) && (GENERATE_EXPORT_FILE.PL_HAS_DLL == 1)
+# if defined (GENERATE_EXPORT_FILE.PL_BUILD_DLL)
+# define generate_export_file.pl_Export ACE_Proper_Export_Flag
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* GENERATE_EXPORT_FILE.PL_BUILD_DLL */
+# define generate_export_file.pl_Export ACE_Proper_Import_Flag
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* GENERATE_EXPORT_FILE.PL_BUILD_DLL */
+#else /* GENERATE_EXPORT_FILE.PL_HAS_DLL == 1 */
+# define generate_export_file.pl_Export
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARATION(T)
+# define GENERATE_EXPORT_FILE.PL_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* GENERATE_EXPORT_FILE.PL_HAS_DLL == 1 */
+
+// Set GENERATE_EXPORT_FILE.PL_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (GENERATE_EXPORT_FILE.PL_NTRACE)
+# if (ACE_NTRACE == 1)
+# define GENERATE_EXPORT_FILE.PL_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define GENERATE_EXPORT_FILE.PL_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !GENERATE_EXPORT_FILE.PL_NTRACE */
+
+#if (GENERATE_EXPORT_FILE.PL_NTRACE == 1)
+# define GENERATE_EXPORT_FILE.PL_TRACE(X)
+#else /* (GENERATE_EXPORT_FILE.PL_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define GENERATE_EXPORT_FILE.PL_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (GENERATE_EXPORT_FILE.PL_NTRACE == 1) */
+
+#endif /* GENERATE_EXPORT_FILE.PL_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl
new file mode 100644
index 00000000000..7d995acb617
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.idl
@@ -0,0 +1,29 @@
+// $Id$
+/**
+ * @file EventSink.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include <Components.idl>
+
+module EventSink
+{
+ eventtype foo_event
+ {
+ };
+
+ eventtype bar_event
+ {
+ };
+
+ component Foo
+ {
+ consumes foo_event foo;
+ };
+
+ component Bar : Foo
+ {
+ consumes bar_event bar;
+ };
+
+};
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc
new file mode 100644
index 00000000000..918c9d56747
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink.mpc
@@ -0,0 +1,18 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n EventSink"
+
+project(EventSink_stub): ciao_client_dnc {
+
+ sharedname = EventSink_stub
+ idlflags += -Wb,stub_export_macro=EVENTSINK_STUB_Export -Wb,stub_export_include=EventSink_stub_export.h -Wb,skel_export_macro=EVENTSINK_SVNT_Export -Wb,skel_export_include=EventSink_svnt_export.h
+ dynamicflags = EVENTSINK_STUB_BUILD_DLL
+
+ IDL_Files {
+ EventSink.idl
+ }
+
+ Source_Files {
+ EventSinkC.cpp
+ }
+}
+
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h
new file mode 100644
index 00000000000..5e6963b7f4f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTSINK_STUB
+// ------------------------------
+#ifndef EVENTSINK_STUB_EXPORT_H
+#define EVENTSINK_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTSINK_STUB_HAS_DLL)
+# define EVENTSINK_STUB_HAS_DLL 1
+#endif /* ! EVENTSINK_STUB_HAS_DLL */
+
+#if defined (EVENTSINK_STUB_HAS_DLL) && (EVENTSINK_STUB_HAS_DLL == 1)
+# if defined (EVENTSINK_STUB_BUILD_DLL)
+# define EVENTSINK_STUB_Export ACE_Proper_Export_Flag
+# define EVENTSINK_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTSINK_STUB_BUILD_DLL */
+# define EVENTSINK_STUB_Export ACE_Proper_Import_Flag
+# define EVENTSINK_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTSINK_STUB_BUILD_DLL */
+#else /* EVENTSINK_STUB_HAS_DLL == 1 */
+# define EVENTSINK_STUB_Export
+# define EVENTSINK_STUB_SINGLETON_DECLARATION(T)
+# define EVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTSINK_STUB_HAS_DLL == 1 */
+
+// Set EVENTSINK_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTSINK_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTSINK_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTSINK_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTSINK_STUB_NTRACE */
+
+#if (EVENTSINK_STUB_NTRACE == 1)
+# define EVENTSINK_STUB_TRACE(X)
+#else /* (EVENTSINK_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTSINK_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTSINK_STUB_NTRACE == 1) */
+
+#endif /* EVENTSINK_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h
new file mode 100644
index 00000000000..e1dbe769461
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSink/EventSink_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTSINK_SVNT
+// ------------------------------
+#ifndef EVENTSINK_SVNT_EXPORT_H
+#define EVENTSINK_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTSINK_SVNT_HAS_DLL)
+# define EVENTSINK_SVNT_HAS_DLL 1
+#endif /* ! EVENTSINK_SVNT_HAS_DLL */
+
+#if defined (EVENTSINK_SVNT_HAS_DLL) && (EVENTSINK_SVNT_HAS_DLL == 1)
+# if defined (EVENTSINK_SVNT_BUILD_DLL)
+# define EVENTSINK_SVNT_Export ACE_Proper_Export_Flag
+# define EVENTSINK_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTSINK_SVNT_BUILD_DLL */
+# define EVENTSINK_SVNT_Export ACE_Proper_Import_Flag
+# define EVENTSINK_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTSINK_SVNT_BUILD_DLL */
+#else /* EVENTSINK_SVNT_HAS_DLL == 1 */
+# define EVENTSINK_SVNT_Export
+# define EVENTSINK_SVNT_SINGLETON_DECLARATION(T)
+# define EVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTSINK_SVNT_HAS_DLL == 1 */
+
+// Set EVENTSINK_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTSINK_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTSINK_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTSINK_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTSINK_SVNT_NTRACE */
+
+#if (EVENTSINK_SVNT_NTRACE == 1)
+# define EVENTSINK_SVNT_TRACE(X)
+#else /* (EVENTSINK_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTSINK_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTSINK_SVNT_NTRACE == 1) */
+
+#endif /* EVENTSINK_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl
new file mode 100644
index 00000000000..2ac7e663556
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.idl
@@ -0,0 +1,24 @@
+// $Id$
+/**
+ * @file EventSource.idl
+ * @author Will Otte <wotte@dre.vanderblit.edu>
+ */
+
+#include <Components.idl>
+
+module PublishesEmits
+{
+ eventtype foo_event
+ {
+ };
+
+ component Foo
+ {
+ publishes foo_event foo;
+ };
+
+ component Bar
+ {
+ emits foo_event foo;
+ };
+};
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc
new file mode 100644
index 00000000000..71995df3a31
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n EventSource"
+
+project(EventSource_stub): ciao_client_dnc {
+
+ sharedname = EventSource_stub
+ idlflags += -Wb,stub_export_macro=EVENTSOURCE_STUB_Export -Wb,stub_export_include=EventSource_stub_export.h -Wb,skel_export_macro=EVENTSOURCE_SVNT_Export -Wb,skel_export_include=EventSource_svnt_export.h
+ dynamicflags = EVENTSOURCE_STUB_BUILD_DLL
+
+ IDL_Files {
+ EventSource.idl
+ }
+
+ Source_Files {
+ EventSourceC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h
new file mode 100644
index 00000000000..8c80a91e464
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTSOURCE_STUB
+// ------------------------------
+#ifndef EVENTSOURCE_STUB_EXPORT_H
+#define EVENTSOURCE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTSOURCE_STUB_HAS_DLL)
+# define EVENTSOURCE_STUB_HAS_DLL 1
+#endif /* ! EVENTSOURCE_STUB_HAS_DLL */
+
+#if defined (EVENTSOURCE_STUB_HAS_DLL) && (EVENTSOURCE_STUB_HAS_DLL == 1)
+# if defined (EVENTSOURCE_STUB_BUILD_DLL)
+# define EVENTSOURCE_STUB_Export ACE_Proper_Export_Flag
+# define EVENTSOURCE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTSOURCE_STUB_BUILD_DLL */
+# define EVENTSOURCE_STUB_Export ACE_Proper_Import_Flag
+# define EVENTSOURCE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTSOURCE_STUB_BUILD_DLL */
+#else /* EVENTSOURCE_STUB_HAS_DLL == 1 */
+# define EVENTSOURCE_STUB_Export
+# define EVENTSOURCE_STUB_SINGLETON_DECLARATION(T)
+# define EVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTSOURCE_STUB_HAS_DLL == 1 */
+
+// Set EVENTSOURCE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTSOURCE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTSOURCE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTSOURCE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTSOURCE_STUB_NTRACE */
+
+#if (EVENTSOURCE_STUB_NTRACE == 1)
+# define EVENTSOURCE_STUB_TRACE(X)
+#else /* (EVENTSOURCE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTSOURCE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTSOURCE_STUB_NTRACE == 1) */
+
+#endif /* EVENTSOURCE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h
new file mode 100644
index 00000000000..78c609aa7ef
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/EventSource/EventSource_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTSOURCE_SVNT
+// ------------------------------
+#ifndef EVENTSOURCE_SVNT_EXPORT_H
+#define EVENTSOURCE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTSOURCE_SVNT_HAS_DLL)
+# define EVENTSOURCE_SVNT_HAS_DLL 1
+#endif /* ! EVENTSOURCE_SVNT_HAS_DLL */
+
+#if defined (EVENTSOURCE_SVNT_HAS_DLL) && (EVENTSOURCE_SVNT_HAS_DLL == 1)
+# if defined (EVENTSOURCE_SVNT_BUILD_DLL)
+# define EVENTSOURCE_SVNT_Export ACE_Proper_Export_Flag
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTSOURCE_SVNT_BUILD_DLL */
+# define EVENTSOURCE_SVNT_Export ACE_Proper_Import_Flag
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTSOURCE_SVNT_BUILD_DLL */
+#else /* EVENTSOURCE_SVNT_HAS_DLL == 1 */
+# define EVENTSOURCE_SVNT_Export
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARATION(T)
+# define EVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTSOURCE_SVNT_HAS_DLL == 1 */
+
+// Set EVENTSOURCE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTSOURCE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTSOURCE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTSOURCE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTSOURCE_SVNT_NTRACE */
+
+#if (EVENTSOURCE_SVNT_NTRACE == 1)
+# define EVENTSOURCE_SVNT_TRACE(X)
+#else /* (EVENTSOURCE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTSOURCE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTSOURCE_SVNT_NTRACE == 1) */
+
+#endif /* EVENTSOURCE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl
new file mode 100644
index 00000000000..0d134e40d52
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.idl
@@ -0,0 +1,46 @@
+// $Id$
+/**
+ * @file Facets.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * This IDL file tests Facets within components.
+ */
+
+#include <Components.idl>
+
+module Facets
+{
+ interface foo_interface
+ {
+ };
+
+ interface bar_interface
+ {
+ };
+
+ component Foo
+ {
+ provides foo_interface foo;
+ };
+
+ component Bar : Foo
+ {
+ provides bar_interface bar;
+ };
+
+ component FooFoo : Foo
+ {
+ provides foo_interface foofoo;
+ };
+
+ component FooBar
+ {
+ provides foo_interface foo;
+ provides bar_interface bar;
+ };
+
+ component ObjectProvider
+ {
+ provides Object foo_object;
+ };
+};
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc
new file mode 100644
index 00000000000..0e60e3be139
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Facets"
+
+project(Facets_stub): ciao_client_dnc {
+
+ sharedname = Facets_stub
+ idlflags += -Wb,stub_export_macro=FACETS_STUB_Export -Wb,stub_export_include=Facets_stub_export.h -Wb,skel_export_macro=FACETS_SVNT_Export -Wb,skel_export_include=Facets_svnt_export.h
+ dynamicflags = FACETS_STUB_BUILD_DLL
+
+ IDL_Files {
+ Facets.idl
+ }
+
+ Source_Files {
+ FacetsC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h
new file mode 100644
index 00000000000..c672c9f7afe
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FACETS_STUB
+// ------------------------------
+#ifndef FACETS_STUB_EXPORT_H
+#define FACETS_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FACETS_STUB_HAS_DLL)
+# define FACETS_STUB_HAS_DLL 1
+#endif /* ! FACETS_STUB_HAS_DLL */
+
+#if defined (FACETS_STUB_HAS_DLL) && (FACETS_STUB_HAS_DLL == 1)
+# if defined (FACETS_STUB_BUILD_DLL)
+# define FACETS_STUB_Export ACE_Proper_Export_Flag
+# define FACETS_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FACETS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FACETS_STUB_BUILD_DLL */
+# define FACETS_STUB_Export ACE_Proper_Import_Flag
+# define FACETS_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FACETS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FACETS_STUB_BUILD_DLL */
+#else /* FACETS_STUB_HAS_DLL == 1 */
+# define FACETS_STUB_Export
+# define FACETS_STUB_SINGLETON_DECLARATION(T)
+# define FACETS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FACETS_STUB_HAS_DLL == 1 */
+
+// Set FACETS_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FACETS_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FACETS_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FACETS_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FACETS_STUB_NTRACE */
+
+#if (FACETS_STUB_NTRACE == 1)
+# define FACETS_STUB_TRACE(X)
+#else /* (FACETS_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FACETS_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FACETS_STUB_NTRACE == 1) */
+
+#endif /* FACETS_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h
new file mode 100644
index 00000000000..83f80320592
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Facets/Facets_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FACETS_SVNT
+// ------------------------------
+#ifndef FACETS_SVNT_EXPORT_H
+#define FACETS_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FACETS_SVNT_HAS_DLL)
+# define FACETS_SVNT_HAS_DLL 1
+#endif /* ! FACETS_SVNT_HAS_DLL */
+
+#if defined (FACETS_SVNT_HAS_DLL) && (FACETS_SVNT_HAS_DLL == 1)
+# if defined (FACETS_SVNT_BUILD_DLL)
+# define FACETS_SVNT_Export ACE_Proper_Export_Flag
+# define FACETS_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FACETS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FACETS_SVNT_BUILD_DLL */
+# define FACETS_SVNT_Export ACE_Proper_Import_Flag
+# define FACETS_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FACETS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FACETS_SVNT_BUILD_DLL */
+#else /* FACETS_SVNT_HAS_DLL == 1 */
+# define FACETS_SVNT_Export
+# define FACETS_SVNT_SINGLETON_DECLARATION(T)
+# define FACETS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FACETS_SVNT_HAS_DLL == 1 */
+
+// Set FACETS_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FACETS_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FACETS_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FACETS_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FACETS_SVNT_NTRACE */
+
+#if (FACETS_SVNT_NTRACE == 1)
+# define FACETS_SVNT_TRACE(X)
+#else /* (FACETS_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FACETS_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FACETS_SVNT_NTRACE == 1) */
+
+#endif /* FACETS_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl
new file mode 100644
index 00000000000..99162919b47
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.idl
@@ -0,0 +1,68 @@
+// $Id$
+/**
+ * @file Receptacles.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests Receptacles within components.
+ */
+
+#include <Components.idl>
+
+module ReceptaclesSingle
+{
+ interface foo_interface
+ {
+ };
+
+ interface bar_interface
+ {
+ };
+
+ component Foo
+ {
+ uses foo_interface foo;
+ };
+
+ component Bar : Foo
+ {
+ uses bar_interface bar;
+ };
+
+ component FooBar
+ {
+ uses foo_interface foo;
+ uses bar_interface bar;
+ };
+
+ component ObjectFoo
+ {
+ uses Object foo;
+ };
+
+};
+
+module ReceptaclesMultiple
+{
+ interface foo_interface
+ {
+ };
+
+ interface bar_interface
+ {
+ };
+
+ component Foo
+ {
+ uses multiple foo_interface foo;
+ };
+
+ component Bar
+ {
+ uses multiple bar_interface bar;
+ };
+
+ component ObjectFoo
+ {
+ uses multiple Object foo;
+ };
+};
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc
new file mode 100644
index 00000000000..78dd6b6978b
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Receptacles"
+
+project(Receptacles_stub): ciao_client_dnc {
+
+ sharedname = Receptacles_stub
+ idlflags += -Wb,stub_export_macro=RECEPTACLES_STUB_Export -Wb,stub_export_include=Receptacles_stub_export.h -Wb,skel_export_macro=RECEPTACLES_SVNT_Export -Wb,skel_export_include=Receptacles_svnt_export.h
+ dynamicflags = RECEPTACLES_STUB_BUILD_DLL
+
+ IDL_Files {
+ Receptacles.idl
+ }
+
+ Source_Files {
+ ReceptaclesC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h
new file mode 100644
index 00000000000..39c2bbeb0ca
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEPTACLES_STUB
+// ------------------------------
+#ifndef RECEPTACLES_STUB_EXPORT_H
+#define RECEPTACLES_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEPTACLES_STUB_HAS_DLL)
+# define RECEPTACLES_STUB_HAS_DLL 1
+#endif /* ! RECEPTACLES_STUB_HAS_DLL */
+
+#if defined (RECEPTACLES_STUB_HAS_DLL) && (RECEPTACLES_STUB_HAS_DLL == 1)
+# if defined (RECEPTACLES_STUB_BUILD_DLL)
+# define RECEPTACLES_STUB_Export ACE_Proper_Export_Flag
+# define RECEPTACLES_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEPTACLES_STUB_BUILD_DLL */
+# define RECEPTACLES_STUB_Export ACE_Proper_Import_Flag
+# define RECEPTACLES_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEPTACLES_STUB_BUILD_DLL */
+#else /* RECEPTACLES_STUB_HAS_DLL == 1 */
+# define RECEPTACLES_STUB_Export
+# define RECEPTACLES_STUB_SINGLETON_DECLARATION(T)
+# define RECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEPTACLES_STUB_HAS_DLL == 1 */
+
+// Set RECEPTACLES_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEPTACLES_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEPTACLES_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEPTACLES_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEPTACLES_STUB_NTRACE */
+
+#if (RECEPTACLES_STUB_NTRACE == 1)
+# define RECEPTACLES_STUB_TRACE(X)
+#else /* (RECEPTACLES_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEPTACLES_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEPTACLES_STUB_NTRACE == 1) */
+
+#endif /* RECEPTACLES_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h
new file mode 100644
index 00000000000..d0dcd4e3b67
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/ComplexComponent/Receptacles/Receptacles_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEPTACLES_SVNT
+// ------------------------------
+#ifndef RECEPTACLES_SVNT_EXPORT_H
+#define RECEPTACLES_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEPTACLES_SVNT_HAS_DLL)
+# define RECEPTACLES_SVNT_HAS_DLL 1
+#endif /* ! RECEPTACLES_SVNT_HAS_DLL */
+
+#if defined (RECEPTACLES_SVNT_HAS_DLL) && (RECEPTACLES_SVNT_HAS_DLL == 1)
+# if defined (RECEPTACLES_SVNT_BUILD_DLL)
+# define RECEPTACLES_SVNT_Export ACE_Proper_Export_Flag
+# define RECEPTACLES_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEPTACLES_SVNT_BUILD_DLL */
+# define RECEPTACLES_SVNT_Export ACE_Proper_Import_Flag
+# define RECEPTACLES_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEPTACLES_SVNT_BUILD_DLL */
+#else /* RECEPTACLES_SVNT_HAS_DLL == 1 */
+# define RECEPTACLES_SVNT_Export
+# define RECEPTACLES_SVNT_SINGLETON_DECLARATION(T)
+# define RECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEPTACLES_SVNT_HAS_DLL == 1 */
+
+// Set RECEPTACLES_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEPTACLES_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEPTACLES_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEPTACLES_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEPTACLES_SVNT_NTRACE */
+
+#if (RECEPTACLES_SVNT_NTRACE == 1)
+# define RECEPTACLES_SVNT_TRACE(X)
+#else /* (RECEPTACLES_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEPTACLES_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEPTACLES_SVNT_NTRACE == 1) */
+
+#endif /* RECEPTACLES_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl
new file mode 100644
index 00000000000..cc07a3f12e9
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.idl
@@ -0,0 +1,87 @@
+// $Id$
+/**
+ * @file SimpleComponent.idl
+ *
+ * Tests simple component declarations.
+ */
+
+#include <Components.idl>
+
+module VerySimple
+{
+
+ component Foo
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ };
+
+};
+
+module SupportsInterface
+{
+ interface foo_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ };
+
+};
+
+
+module SupportsMultiple
+{
+ interface foo_interface
+ {
+ };
+
+ interface bar_interface
+ {
+ };
+
+ component FooBar supports foo_interface, bar_interface
+ {
+ };
+
+ home FooBarHome manages FooBar
+ {
+ };
+};
+
+module Inheritance
+{
+ interface foo_interface
+ {
+ };
+
+ interface Bar_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ component Bar : Foo
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ };
+
+ home BarHome manages Bar
+ {
+ };
+
+
+};
+
diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc
new file mode 100644
index 00000000000..df62e90c6da
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl SimpleComponent"
+
+project(SimpleComponent_stub): ciao_client_dnc {
+
+ sharedname = SimpleComponent_stub
+ idlflags += -Wb,stub_export_macro=SIMPLECOMPONENT_STUB_Export -Wb,stub_export_include=SimpleComponent_stub_export.h -Wb,skel_export_macro=SIMPLECOMPONENT_SVNT_Export -Wb,skel_export_include=SimpleComponent_svnt_export.h
+ dynamicflags = SIMPLECOMPONENT_STUB_BUILD_DLL
+
+ IDL_Files {
+ SimpleComponent.idl
+ }
+
+ Source_Files {
+ SimpleComponentC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h
new file mode 100644
index 00000000000..2faae1ed285
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLECOMPONENT_EXEC
+// ------------------------------
+#ifndef SIMPLECOMPONENT_EXEC_EXPORT_H
+#define SIMPLECOMPONENT_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLECOMPONENT_EXEC_HAS_DLL)
+# define SIMPLECOMPONENT_EXEC_HAS_DLL 1
+#endif /* ! SIMPLECOMPONENT_EXEC_HAS_DLL */
+
+#if defined (SIMPLECOMPONENT_EXEC_HAS_DLL) && (SIMPLECOMPONENT_EXEC_HAS_DLL == 1)
+# if defined (SIMPLECOMPONENT_EXEC_BUILD_DLL)
+# define SIMPLECOMPONENT_EXEC_Export ACE_Proper_Export_Flag
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLECOMPONENT_EXEC_BUILD_DLL */
+# define SIMPLECOMPONENT_EXEC_Export ACE_Proper_Import_Flag
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLECOMPONENT_EXEC_BUILD_DLL */
+#else /* SIMPLECOMPONENT_EXEC_HAS_DLL == 1 */
+# define SIMPLECOMPONENT_EXEC_Export
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARATION(T)
+# define SIMPLECOMPONENT_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLECOMPONENT_EXEC_HAS_DLL == 1 */
+
+// Set SIMPLECOMPONENT_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLECOMPONENT_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLECOMPONENT_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLECOMPONENT_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLECOMPONENT_EXEC_NTRACE */
+
+#if (SIMPLECOMPONENT_EXEC_NTRACE == 1)
+# define SIMPLECOMPONENT_EXEC_TRACE(X)
+#else /* (SIMPLECOMPONENT_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLECOMPONENT_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLECOMPONENT_EXEC_NTRACE == 1) */
+
+#endif /* SIMPLECOMPONENT_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h
new file mode 100644
index 00000000000..45beb98405b
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLECOMPONENT_STUB
+// ------------------------------
+#ifndef SIMPLECOMPONENT_STUB_EXPORT_H
+#define SIMPLECOMPONENT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLECOMPONENT_STUB_HAS_DLL)
+# define SIMPLECOMPONENT_STUB_HAS_DLL 1
+#endif /* ! SIMPLECOMPONENT_STUB_HAS_DLL */
+
+#if defined (SIMPLECOMPONENT_STUB_HAS_DLL) && (SIMPLECOMPONENT_STUB_HAS_DLL == 1)
+# if defined (SIMPLECOMPONENT_STUB_BUILD_DLL)
+# define SIMPLECOMPONENT_STUB_Export ACE_Proper_Export_Flag
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLECOMPONENT_STUB_BUILD_DLL */
+# define SIMPLECOMPONENT_STUB_Export ACE_Proper_Import_Flag
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLECOMPONENT_STUB_BUILD_DLL */
+#else /* SIMPLECOMPONENT_STUB_HAS_DLL == 1 */
+# define SIMPLECOMPONENT_STUB_Export
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARATION(T)
+# define SIMPLECOMPONENT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLECOMPONENT_STUB_HAS_DLL == 1 */
+
+// Set SIMPLECOMPONENT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLECOMPONENT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLECOMPONENT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLECOMPONENT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLECOMPONENT_STUB_NTRACE */
+
+#if (SIMPLECOMPONENT_STUB_NTRACE == 1)
+# define SIMPLECOMPONENT_STUB_TRACE(X)
+#else /* (SIMPLECOMPONENT_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLECOMPONENT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLECOMPONENT_STUB_NTRACE == 1) */
+
+#endif /* SIMPLECOMPONENT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h
new file mode 100644
index 00000000000..07f08b8eaa0
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Components/SimpleComponent/SimpleComponent_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SIMPLECOMPONENT_SVNT
+// ------------------------------
+#ifndef SIMPLECOMPONENT_SVNT_EXPORT_H
+#define SIMPLECOMPONENT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SIMPLECOMPONENT_SVNT_HAS_DLL)
+# define SIMPLECOMPONENT_SVNT_HAS_DLL 1
+#endif /* ! SIMPLECOMPONENT_SVNT_HAS_DLL */
+
+#if defined (SIMPLECOMPONENT_SVNT_HAS_DLL) && (SIMPLECOMPONENT_SVNT_HAS_DLL == 1)
+# if defined (SIMPLECOMPONENT_SVNT_BUILD_DLL)
+# define SIMPLECOMPONENT_SVNT_Export ACE_Proper_Export_Flag
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SIMPLECOMPONENT_SVNT_BUILD_DLL */
+# define SIMPLECOMPONENT_SVNT_Export ACE_Proper_Import_Flag
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SIMPLECOMPONENT_SVNT_BUILD_DLL */
+#else /* SIMPLECOMPONENT_SVNT_HAS_DLL == 1 */
+# define SIMPLECOMPONENT_SVNT_Export
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARATION(T)
+# define SIMPLECOMPONENT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SIMPLECOMPONENT_SVNT_HAS_DLL == 1 */
+
+// Set SIMPLECOMPONENT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SIMPLECOMPONENT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SIMPLECOMPONENT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SIMPLECOMPONENT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SIMPLECOMPONENT_SVNT_NTRACE */
+
+#if (SIMPLECOMPONENT_SVNT_NTRACE == 1)
+# define SIMPLECOMPONENT_SVNT_TRACE(X)
+#else /* (SIMPLECOMPONENT_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SIMPLECOMPONENT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SIMPLECOMPONENT_SVNT_NTRACE == 1) */
+
+#endif /* SIMPLECOMPONENT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl
new file mode 100644
index 00000000000..15eb50971b3
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.idl
@@ -0,0 +1,38 @@
+// $Id$
+/**
+ * @file Abstract.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compilation of abstract events.
+ */
+
+#include <Components.idl>
+
+module AbstractEvents
+{
+ abstract eventtype foo_event
+ {
+ };
+
+ abstract eventtype InhFoo_event : foo_event
+ {
+ };
+
+ abstract eventtype bar_event
+ {
+ };
+
+ abstract eventtype foobar_event : foo_event, bar_event
+ {
+ };
+
+ // test event multiple inheretance
+
+ eventtype concrete_foo
+ {
+ };
+
+ eventtype concrete_foobar : concrete_foo, foo_event
+ {
+ };
+};
diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc
new file mode 100644
index 00000000000..e1a4a36cc54
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Abstract"
+
+project(Abstract_stub): ciao_client_dnc {
+
+ sharedname = Abstract_stub
+ idlflags += -Wb,stub_export_macro=ABSTRACT_STUB_Export -Wb,stub_export_include=Abstract_stub_export.h -Wb,skel_export_macro=ABSTRACT_SVNT_Export -Wb,skel_export_include=Abstract_svnt_export.h
+ dynamicflags = ABSTRACT_STUB_BUILD_DLL
+
+ IDL_Files {
+ Abstract.idl
+ }
+
+ Source_Files {
+ AbstractC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_stub_export.h b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_stub_export.h
new file mode 100644
index 00000000000..43d8e34ee72
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ABSTRACT_STUB
+// ------------------------------
+#ifndef ABSTRACT_STUB_EXPORT_H
+#define ABSTRACT_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ABSTRACT_STUB_HAS_DLL)
+# define ABSTRACT_STUB_HAS_DLL 1
+#endif /* ! ABSTRACT_STUB_HAS_DLL */
+
+#if defined (ABSTRACT_STUB_HAS_DLL) && (ABSTRACT_STUB_HAS_DLL == 1)
+# if defined (ABSTRACT_STUB_BUILD_DLL)
+# define ABSTRACT_STUB_Export ACE_Proper_Export_Flag
+# define ABSTRACT_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ABSTRACT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ABSTRACT_STUB_BUILD_DLL */
+# define ABSTRACT_STUB_Export ACE_Proper_Import_Flag
+# define ABSTRACT_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ABSTRACT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ABSTRACT_STUB_BUILD_DLL */
+#else /* ABSTRACT_STUB_HAS_DLL == 1 */
+# define ABSTRACT_STUB_Export
+# define ABSTRACT_STUB_SINGLETON_DECLARATION(T)
+# define ABSTRACT_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ABSTRACT_STUB_HAS_DLL == 1 */
+
+// Set ABSTRACT_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ABSTRACT_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ABSTRACT_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ABSTRACT_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ABSTRACT_STUB_NTRACE */
+
+#if (ABSTRACT_STUB_NTRACE == 1)
+# define ABSTRACT_STUB_TRACE(X)
+#else /* (ABSTRACT_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ABSTRACT_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ABSTRACT_STUB_NTRACE == 1) */
+
+#endif /* ABSTRACT_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_svnt_export.h b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_svnt_export.h
new file mode 100644
index 00000000000..53b5032df69
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Abstract/Abstract_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ABSTRACT_SVNT
+// ------------------------------
+#ifndef ABSTRACT_SVNT_EXPORT_H
+#define ABSTRACT_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ABSTRACT_SVNT_HAS_DLL)
+# define ABSTRACT_SVNT_HAS_DLL 1
+#endif /* ! ABSTRACT_SVNT_HAS_DLL */
+
+#if defined (ABSTRACT_SVNT_HAS_DLL) && (ABSTRACT_SVNT_HAS_DLL == 1)
+# if defined (ABSTRACT_SVNT_BUILD_DLL)
+# define ABSTRACT_SVNT_Export ACE_Proper_Export_Flag
+# define ABSTRACT_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ABSTRACT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ABSTRACT_SVNT_BUILD_DLL */
+# define ABSTRACT_SVNT_Export ACE_Proper_Import_Flag
+# define ABSTRACT_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ABSTRACT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ABSTRACT_SVNT_BUILD_DLL */
+#else /* ABSTRACT_SVNT_HAS_DLL == 1 */
+# define ABSTRACT_SVNT_Export
+# define ABSTRACT_SVNT_SINGLETON_DECLARATION(T)
+# define ABSTRACT_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ABSTRACT_SVNT_HAS_DLL == 1 */
+
+// Set ABSTRACT_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ABSTRACT_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ABSTRACT_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ABSTRACT_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ABSTRACT_SVNT_NTRACE */
+
+#if (ABSTRACT_SVNT_NTRACE == 1)
+# define ABSTRACT_SVNT_TRACE(X)
+#else /* (ABSTRACT_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ABSTRACT_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ABSTRACT_SVNT_NTRACE == 1) */
+
+#endif /* ABSTRACT_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Events/Any/Any.mpc b/modules/CIAO/tests/IDL3/Events/Any/Any.mpc
new file mode 100644
index 00000000000..d0b72182ca1
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Any/Any.mpc
@@ -0,0 +1,26 @@
+// $Id$
+
+project(EventAny_local): ciao_client_dnc {
+ exename = EventAny
+ idlflags += -SS
+
+ IDL_Files {
+ EventAny.idl
+ }
+
+ Source_Files {
+ EventAnyC.cpp
+ main.cpp
+ }
+
+ Header_Files {
+ EventAnyC.h
+ }
+
+ Inline_Files {
+ EventAnyC.inl
+ }
+
+ Template_Files {
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl b/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl
new file mode 100644
index 00000000000..d53ddf55c08
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Any/EventAny.idl
@@ -0,0 +1,16 @@
+// $Id$
+/**
+ * @file EventAny.idl
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ *
+ * Tests Any insertion/extraction of event types,
+ * and (de)marshaling of such Anys.
+ */
+
+#include <Components.idl>
+
+eventtype StringMsg
+{
+ public string str_msg;
+};
+
diff --git a/modules/CIAO/tests/IDL3/Events/Any/README b/modules/CIAO/tests/IDL3/Events/Any/README
new file mode 100644
index 00000000000..7bf91be5776
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Any/README
@@ -0,0 +1,35 @@
+
+Event Any Test
+=======================
+
+This test defines, instantiates, and initializes an IDL
+eventtype with a public string member, inserts it into
+an Any, marshals the Any, demarshals the Any, extracts
+the eventtype, and compares the resulting member string
+with the original. The purpose of the test is to ensure
+that (1) the demarshaling of the Any and (2) the
+extraction of the eventtype, are successful, since both
+these actions are done interpretively by traversing the
+eventtype's type code. The motivation for the test was
+the failure of these actions due to missing cases in
+the interpretive demarshaling code corresponding to
+the kind of the eventtype's type code (CORBA::tk_event).
+
+There are several places the test can fail:
+
+- marshaling of the Any
+- demarshaling of the Any
+- extraction from the Any
+- string compare of the sent and received eventtype members
+
+Note that the test code registers a valuetype factory
+with the orb, a necessary step in extracting the
+eventtype from the Any. In a real-world use case (such
+as an event channel) such a factory would have to
+be registered with the orb anywhere the eventtype is
+to be demarshaled from a CDR stream or extracted from
+an Any that was itself demarshaled.
+
+Jeff Parsons
+
+
diff --git a/modules/CIAO/tests/IDL3/Events/Any/main.cpp b/modules/CIAO/tests/IDL3/Events/Any/main.cpp
new file mode 100644
index 00000000000..77551725735
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Any/main.cpp
@@ -0,0 +1,84 @@
+// $Id$
+
+#include "EventAnyC.h"
+#include "ace/Get_Opt.h"
+
+void
+insert_into_any (CORBA::Any& any, Components::EventBase* vb)
+{
+ any <<= vb;
+}
+
+void
+debug_msg (const char *msg)
+{
+ ACE_ERROR ((LM_ERROR, "Error: %s\n", msg));
+}
+
+int
+main (int argc, char *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "");
+ StringMsg_init *StringMsg_factory = new StringMsg_init;
+
+ orb->register_value_factory (StringMsg_factory->tao_repository_id (),
+ StringMsg_factory);
+ StringMsg_factory->_remove_ref (); // release ownership
+
+ const char *test_str = "a message";
+
+ StringMsg_var ev = new OBV_StringMsg;
+ ev->str_msg (test_str);
+
+ CORBA::Any in_any;
+ insert_into_any (in_any, ev.in ());
+
+ TAO_OutputCDR out;
+ CORBA::Boolean good = out << in_any;
+
+ if (!good)
+ {
+ debug_msg ("Any marshaling failed");
+ return -1;
+ }
+
+ TAO_InputCDR in (out);
+ CORBA::Any out_any;
+ good = in >> out_any;
+
+ if (!good)
+ {
+ debug_msg ("Any demarshaling failed");
+ return -1;
+ }
+
+ StringMsg *ev_out = 0;
+ good = out_any >>= ev_out;
+
+ if (!good)
+ {
+ debug_msg ("Any extraction failed");
+ return -1;
+ }
+
+ const char *result_str = ev_out->str_msg ();
+
+ if (result_str == 0 || ACE_OS::strcmp (result_str, test_str) != 0)
+ {
+ debug_msg ("Extracted member string null or incorrect");
+ return -1;
+ }
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("caught exception:");
+ return 1;
+ }
+
+ return 0;
+}
+
diff --git a/modules/CIAO/tests/IDL3/Events/Any/run_test.pl b/modules/CIAO/tests/IDL3/Events/Any/run_test.pl
new file mode 100755
index 00000000000..f13f9726b5b
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Any/run_test.pl
@@ -0,0 +1,31 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+# The first three lines above let this script run without specifying the
+# full path to perl, as long as it is in the user's PATH.
+# Taken from perlrun man page.
+
+# Do not use environment variables here since not all platforms use ACE_ROOT
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::Run_Test;
+use English;
+
+$status = 0;
+$exflags = "";
+
+# Run the test
+
+$EX = new PerlACE::Process ("EventAny");
+$EX->Arguments ($exflags);
+$test = $EX->SpawnWaitKill (10);
+
+if ($test != 0) {
+ print STDERR "ERROR: test error status $test\n";
+ $status = 1;
+}
+
+exit $status;
diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl b/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl
new file mode 100644
index 00000000000..f9169026e88
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular.idl
@@ -0,0 +1,44 @@
+// $Id$
+/**
+ * @file Regular.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compilation of regular event types.
+ */
+
+#include <Components.idl>
+
+module RegularEvents
+{
+ eventtype foo
+ {
+ };
+
+ eventtype bar
+ {
+ };
+
+ eventtype InhFoo : foo
+ {
+ };
+
+ /* @@
+ * TAO_IDL cannot handle custom yet.
+ custom eventtype custom_foo
+ {
+ };
+
+ custom eventtype custom_InhFoo : foo
+ {
+ };
+ */
+
+ eventtype Baz
+ {
+ long test_op ();
+ void test_op_a (in long foo, out float bar);
+ InhFoo test_op_b ();
+ };
+
+
+};
diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc b/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc
new file mode 100644
index 00000000000..1ff6519f0ca
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular.mpc
@@ -0,0 +1,20 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Regular"
+
+project(Regular_stub): ciao_client_dnc {
+
+ sharedname = Regular_stub
+ idlflags += -Wb,stub_export_macro=REGULAR_STUB_Export \
+ -Wb,stub_export_include=Regular_stub_export.h \
+ -Wb,skel_export_macro=REGULAR_SVNT_Export \
+ -Wb,skel_export_include=Regular_svnt_export.h
+ dynamicflags = REGULAR_STUB_BUILD_DLL
+
+ IDL_Files {
+ Regular.idl
+ }
+
+ Source_Files {
+ RegularC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular_stub_export.h b/modules/CIAO/tests/IDL3/Events/Regular/Regular_stub_export.h
new file mode 100644
index 00000000000..9c8b885ba96
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl REGULAR_STUB
+// ------------------------------
+#ifndef REGULAR_STUB_EXPORT_H
+#define REGULAR_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (REGULAR_STUB_HAS_DLL)
+# define REGULAR_STUB_HAS_DLL 1
+#endif /* ! REGULAR_STUB_HAS_DLL */
+
+#if defined (REGULAR_STUB_HAS_DLL) && (REGULAR_STUB_HAS_DLL == 1)
+# if defined (REGULAR_STUB_BUILD_DLL)
+# define REGULAR_STUB_Export ACE_Proper_Export_Flag
+# define REGULAR_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define REGULAR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* REGULAR_STUB_BUILD_DLL */
+# define REGULAR_STUB_Export ACE_Proper_Import_Flag
+# define REGULAR_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define REGULAR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* REGULAR_STUB_BUILD_DLL */
+#else /* REGULAR_STUB_HAS_DLL == 1 */
+# define REGULAR_STUB_Export
+# define REGULAR_STUB_SINGLETON_DECLARATION(T)
+# define REGULAR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* REGULAR_STUB_HAS_DLL == 1 */
+
+// Set REGULAR_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (REGULAR_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define REGULAR_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define REGULAR_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !REGULAR_STUB_NTRACE */
+
+#if (REGULAR_STUB_NTRACE == 1)
+# define REGULAR_STUB_TRACE(X)
+#else /* (REGULAR_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define REGULAR_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (REGULAR_STUB_NTRACE == 1) */
+
+#endif /* REGULAR_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Events/Regular/Regular_svnt_export.h b/modules/CIAO/tests/IDL3/Events/Regular/Regular_svnt_export.h
new file mode 100644
index 00000000000..a8faf5e0b6f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Events/Regular/Regular_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl REGULAR_SVNT
+// ------------------------------
+#ifndef REGULAR_SVNT_EXPORT_H
+#define REGULAR_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (REGULAR_SVNT_HAS_DLL)
+# define REGULAR_SVNT_HAS_DLL 1
+#endif /* ! REGULAR_SVNT_HAS_DLL */
+
+#if defined (REGULAR_SVNT_HAS_DLL) && (REGULAR_SVNT_HAS_DLL == 1)
+# if defined (REGULAR_SVNT_BUILD_DLL)
+# define REGULAR_SVNT_Export ACE_Proper_Export_Flag
+# define REGULAR_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define REGULAR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* REGULAR_SVNT_BUILD_DLL */
+# define REGULAR_SVNT_Export ACE_Proper_Import_Flag
+# define REGULAR_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define REGULAR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* REGULAR_SVNT_BUILD_DLL */
+#else /* REGULAR_SVNT_HAS_DLL == 1 */
+# define REGULAR_SVNT_Export
+# define REGULAR_SVNT_SINGLETON_DECLARATION(T)
+# define REGULAR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* REGULAR_SVNT_HAS_DLL == 1 */
+
+// Set REGULAR_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (REGULAR_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define REGULAR_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define REGULAR_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !REGULAR_SVNT_NTRACE */
+
+#if (REGULAR_SVNT_NTRACE == 1)
+# define REGULAR_SVNT_TRACE(X)
+#else /* (REGULAR_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define REGULAR_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (REGULAR_SVNT_NTRACE == 1) */
+
+#endif /* REGULAR_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl
new file mode 100644
index 00000000000..7dd338d871e
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.idl
@@ -0,0 +1,54 @@
+// $Id$
+/**
+ * @file HomeAttributes.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests attributes in homes
+ */
+
+#include <Components.idl>
+
+module HomeAttributes
+{
+ interface foo_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ attribute float test;
+ attribute long testA, testB;
+ };
+
+ exception FooException
+ {
+ };
+
+ exception BarException
+ {
+ };
+
+ home ROFooHome manages Foo
+ {
+ readonly attribute float test1;
+ readonly attribute long testB, testC;
+ };
+
+ home FooRaisesHome manages Foo
+ {
+ attribute float test2 getraises (FooException);
+ attribute float test3 setraises (BarException);
+ attribute float test4
+ getraises (FooException) setraises (BarException);
+ };
+
+ home ROFooRaisesHome manages Foo
+ {
+ readonly attribute float test5 raises (FooException);
+ };
+
+};
diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc
new file mode 100644
index 00000000000..4105b180342
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n HomeAttributes"
+
+project(HomeAttributes_stub): ciao_client_dnc {
+
+ sharedname = HomeAttributes_stub
+ idlflags += -Wb,stub_export_macro=HOMEATTRIBUTES_STUB_Export -Wb,stub_export_include=HomeAttributes_stub_export.h -Wb,skel_export_macro=HOMEATTRIBUTES_SVNT_Export -Wb,skel_export_include=HomeAttributes_svnt_export.h
+ dynamicflags = HOMEATTRIBUTES_STUB_BUILD_DLL
+
+ IDL_Files {
+ HomeAttributes.idl
+ }
+
+ Source_Files {
+ HomeAttributesC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_stub_export.h b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_stub_export.h
new file mode 100644
index 00000000000..191b303e6d3
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HOMEATTRIBUTES_STUB
+// ------------------------------
+#ifndef HOMEATTRIBUTES_STUB_EXPORT_H
+#define HOMEATTRIBUTES_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HOMEATTRIBUTES_STUB_HAS_DLL)
+# define HOMEATTRIBUTES_STUB_HAS_DLL 1
+#endif /* ! HOMEATTRIBUTES_STUB_HAS_DLL */
+
+#if defined (HOMEATTRIBUTES_STUB_HAS_DLL) && (HOMEATTRIBUTES_STUB_HAS_DLL == 1)
+# if defined (HOMEATTRIBUTES_STUB_BUILD_DLL)
+# define HOMEATTRIBUTES_STUB_Export ACE_Proper_Export_Flag
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HOMEATTRIBUTES_STUB_BUILD_DLL */
+# define HOMEATTRIBUTES_STUB_Export ACE_Proper_Import_Flag
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HOMEATTRIBUTES_STUB_BUILD_DLL */
+#else /* HOMEATTRIBUTES_STUB_HAS_DLL == 1 */
+# define HOMEATTRIBUTES_STUB_Export
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARATION(T)
+# define HOMEATTRIBUTES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HOMEATTRIBUTES_STUB_HAS_DLL == 1 */
+
+// Set HOMEATTRIBUTES_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HOMEATTRIBUTES_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HOMEATTRIBUTES_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HOMEATTRIBUTES_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HOMEATTRIBUTES_STUB_NTRACE */
+
+#if (HOMEATTRIBUTES_STUB_NTRACE == 1)
+# define HOMEATTRIBUTES_STUB_TRACE(X)
+#else /* (HOMEATTRIBUTES_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HOMEATTRIBUTES_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HOMEATTRIBUTES_STUB_NTRACE == 1) */
+
+#endif /* HOMEATTRIBUTES_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_svnt_export.h b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_svnt_export.h
new file mode 100644
index 00000000000..88639ab9f16
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Attributes/HomeAttributes_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HOMEATTRIBUTES_SVNT
+// ------------------------------
+#ifndef HOMEATTRIBUTES_SVNT_EXPORT_H
+#define HOMEATTRIBUTES_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HOMEATTRIBUTES_SVNT_HAS_DLL)
+# define HOMEATTRIBUTES_SVNT_HAS_DLL 1
+#endif /* ! HOMEATTRIBUTES_SVNT_HAS_DLL */
+
+#if defined (HOMEATTRIBUTES_SVNT_HAS_DLL) && (HOMEATTRIBUTES_SVNT_HAS_DLL == 1)
+# if defined (HOMEATTRIBUTES_SVNT_BUILD_DLL)
+# define HOMEATTRIBUTES_SVNT_Export ACE_Proper_Export_Flag
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HOMEATTRIBUTES_SVNT_BUILD_DLL */
+# define HOMEATTRIBUTES_SVNT_Export ACE_Proper_Import_Flag
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HOMEATTRIBUTES_SVNT_BUILD_DLL */
+#else /* HOMEATTRIBUTES_SVNT_HAS_DLL == 1 */
+# define HOMEATTRIBUTES_SVNT_Export
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARATION(T)
+# define HOMEATTRIBUTES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HOMEATTRIBUTES_SVNT_HAS_DLL == 1 */
+
+// Set HOMEATTRIBUTES_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HOMEATTRIBUTES_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HOMEATTRIBUTES_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HOMEATTRIBUTES_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HOMEATTRIBUTES_SVNT_NTRACE */
+
+#if (HOMEATTRIBUTES_SVNT_NTRACE == 1)
+# define HOMEATTRIBUTES_SVNT_TRACE(X)
+#else /* (HOMEATTRIBUTES_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HOMEATTRIBUTES_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HOMEATTRIBUTES_SVNT_NTRACE == 1) */
+
+#endif /* HOMEATTRIBUTES_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl
new file mode 100644
index 00000000000..3d9f4c5162e
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.idl
@@ -0,0 +1,31 @@
+// $Id$
+/**
+ * @file Basic.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compileability of basic Home types.
+ */
+
+#include <Components.idl>
+
+module BasicHomes
+{
+
+ interface foo_interface {};
+
+ component Foo supports foo_interface {};
+
+ home FooHome manages Foo
+ {
+ };
+
+
+ interface bar_interface {};
+
+ component Bar supports bar_interface {};
+
+ home BarHome supports foo_interface manages Bar
+ {
+ };
+
+};
diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc
new file mode 100644
index 00000000000..c79cf8c919b
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Basic"
+
+project(IDL3_Basic_stub): ciao_client_dnc {
+
+ sharedname = Homes_Basic_stub
+ idlflags += -Wb,stub_export_macro=BASIC_STUB_Export -Wb,stub_export_include=Basic_stub_export.h -Wb,skel_export_macro=BASIC_SVNT_Export -Wb,skel_export_include=Basic_svnt_export.h
+ dynamicflags = BASIC_STUB_BUILD_DLL
+
+ IDL_Files {
+ Basic.idl
+ }
+
+ Source_Files {
+ BasicC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic_stub_export.h b/modules/CIAO/tests/IDL3/Homes/Basic/Basic_stub_export.h
new file mode 100644
index 00000000000..97727bb3a01
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BASIC_STUB
+// ------------------------------
+#ifndef BASIC_STUB_EXPORT_H
+#define BASIC_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BASIC_STUB_HAS_DLL)
+# define BASIC_STUB_HAS_DLL 1
+#endif /* ! BASIC_STUB_HAS_DLL */
+
+#if defined (BASIC_STUB_HAS_DLL) && (BASIC_STUB_HAS_DLL == 1)
+# if defined (BASIC_STUB_BUILD_DLL)
+# define BASIC_STUB_Export ACE_Proper_Export_Flag
+# define BASIC_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASIC_STUB_BUILD_DLL */
+# define BASIC_STUB_Export ACE_Proper_Import_Flag
+# define BASIC_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASIC_STUB_BUILD_DLL */
+#else /* BASIC_STUB_HAS_DLL == 1 */
+# define BASIC_STUB_Export
+# define BASIC_STUB_SINGLETON_DECLARATION(T)
+# define BASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASIC_STUB_HAS_DLL == 1 */
+
+// Set BASIC_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASIC_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASIC_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASIC_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASIC_STUB_NTRACE */
+
+#if (BASIC_STUB_NTRACE == 1)
+# define BASIC_STUB_TRACE(X)
+#else /* (BASIC_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASIC_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASIC_STUB_NTRACE == 1) */
+
+#endif /* BASIC_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Basic/Basic_svnt_export.h b/modules/CIAO/tests/IDL3/Homes/Basic/Basic_svnt_export.h
new file mode 100644
index 00000000000..3bc632db060
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Basic/Basic_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl BASIC_SVNT
+// ------------------------------
+#ifndef BASIC_SVNT_EXPORT_H
+#define BASIC_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (BASIC_SVNT_HAS_DLL)
+# define BASIC_SVNT_HAS_DLL 1
+#endif /* ! BASIC_SVNT_HAS_DLL */
+
+#if defined (BASIC_SVNT_HAS_DLL) && (BASIC_SVNT_HAS_DLL == 1)
+# if defined (BASIC_SVNT_BUILD_DLL)
+# define BASIC_SVNT_Export ACE_Proper_Export_Flag
+# define BASIC_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* BASIC_SVNT_BUILD_DLL */
+# define BASIC_SVNT_Export ACE_Proper_Import_Flag
+# define BASIC_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* BASIC_SVNT_BUILD_DLL */
+#else /* BASIC_SVNT_HAS_DLL == 1 */
+# define BASIC_SVNT_Export
+# define BASIC_SVNT_SINGLETON_DECLARATION(T)
+# define BASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* BASIC_SVNT_HAS_DLL == 1 */
+
+// Set BASIC_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (BASIC_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define BASIC_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define BASIC_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !BASIC_SVNT_NTRACE */
+
+#if (BASIC_SVNT_NTRACE == 1)
+# define BASIC_SVNT_TRACE(X)
+#else /* (BASIC_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define BASIC_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (BASIC_SVNT_NTRACE == 1) */
+
+#endif /* BASIC_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl
new file mode 100644
index 00000000000..c9520b11c0a
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.idl
@@ -0,0 +1,35 @@
+// $Id$
+/**
+ * @file Factory.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compilation of Homes with Factorys.
+ */
+
+#include <Components.idl>
+
+module FactoryHomes
+{
+ exception foo_exception
+ {
+ };
+
+ interface foo_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ factory FooFactory (in string foo, in short bar) raises (foo_exception);
+ };
+
+ eventtype food
+ {
+ };
+
+
+};
diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc
new file mode 100644
index 00000000000..c861d0df611
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Factory"
+
+project(Factory_stub): ciao_client_dnc {
+
+ sharedname = Factory_stub
+ idlflags += -Wb,stub_export_macro=FACTORY_STUB_Export -Wb,stub_export_include=Factory_stub_export.h -Wb,skel_export_macro=FACTORY_SVNT_Export -Wb,skel_export_include=Factory_svnt_export.h
+ dynamicflags = FACTORY_STUB_BUILD_DLL
+
+ IDL_Files {
+ Factory.idl
+ }
+
+ Source_Files {
+ FactoryC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory_stub_export.h b/modules/CIAO/tests/IDL3/Homes/Factory/Factory_stub_export.h
new file mode 100644
index 00000000000..d1e43b3c0ec
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FACTORY_STUB
+// ------------------------------
+#ifndef FACTORY_STUB_EXPORT_H
+#define FACTORY_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FACTORY_STUB_HAS_DLL)
+# define FACTORY_STUB_HAS_DLL 1
+#endif /* ! FACTORY_STUB_HAS_DLL */
+
+#if defined (FACTORY_STUB_HAS_DLL) && (FACTORY_STUB_HAS_DLL == 1)
+# if defined (FACTORY_STUB_BUILD_DLL)
+# define FACTORY_STUB_Export ACE_Proper_Export_Flag
+# define FACTORY_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FACTORY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FACTORY_STUB_BUILD_DLL */
+# define FACTORY_STUB_Export ACE_Proper_Import_Flag
+# define FACTORY_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FACTORY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FACTORY_STUB_BUILD_DLL */
+#else /* FACTORY_STUB_HAS_DLL == 1 */
+# define FACTORY_STUB_Export
+# define FACTORY_STUB_SINGLETON_DECLARATION(T)
+# define FACTORY_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FACTORY_STUB_HAS_DLL == 1 */
+
+// Set FACTORY_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FACTORY_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FACTORY_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FACTORY_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FACTORY_STUB_NTRACE */
+
+#if (FACTORY_STUB_NTRACE == 1)
+# define FACTORY_STUB_TRACE(X)
+#else /* (FACTORY_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FACTORY_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FACTORY_STUB_NTRACE == 1) */
+
+#endif /* FACTORY_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Factory/Factory_svnt_export.h b/modules/CIAO/tests/IDL3/Homes/Factory/Factory_svnt_export.h
new file mode 100644
index 00000000000..747fde7ba3d
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Factory/Factory_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FACTORY_SVNT
+// ------------------------------
+#ifndef FACTORY_SVNT_EXPORT_H
+#define FACTORY_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FACTORY_SVNT_HAS_DLL)
+# define FACTORY_SVNT_HAS_DLL 1
+#endif /* ! FACTORY_SVNT_HAS_DLL */
+
+#if defined (FACTORY_SVNT_HAS_DLL) && (FACTORY_SVNT_HAS_DLL == 1)
+# if defined (FACTORY_SVNT_BUILD_DLL)
+# define FACTORY_SVNT_Export ACE_Proper_Export_Flag
+# define FACTORY_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FACTORY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FACTORY_SVNT_BUILD_DLL */
+# define FACTORY_SVNT_Export ACE_Proper_Import_Flag
+# define FACTORY_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FACTORY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FACTORY_SVNT_BUILD_DLL */
+#else /* FACTORY_SVNT_HAS_DLL == 1 */
+# define FACTORY_SVNT_Export
+# define FACTORY_SVNT_SINGLETON_DECLARATION(T)
+# define FACTORY_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FACTORY_SVNT_HAS_DLL == 1 */
+
+// Set FACTORY_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FACTORY_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FACTORY_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FACTORY_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FACTORY_SVNT_NTRACE */
+
+#if (FACTORY_SVNT_NTRACE == 1)
+# define FACTORY_SVNT_TRACE(X)
+#else /* (FACTORY_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FACTORY_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FACTORY_SVNT_NTRACE == 1) */
+
+#endif /* FACTORY_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl
new file mode 100644
index 00000000000..5057b162fc3
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.idl
@@ -0,0 +1,30 @@
+// $Id$
+/**
+ * @file Finder.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compilation of Homes with Factorys.
+ */
+
+#include <Components.idl>
+
+module FactoryHomes
+{
+ exception foo_exception
+ {
+ };
+
+ interface foo_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ factory FooFinder (in string foo, in short bar) raises (foo_exception);
+ };
+
+};
diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc
new file mode 100644
index 00000000000..9881aad88f1
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Finder"
+
+project(Finder_stub): ciao_client_dnc {
+
+ sharedname = Finder_stub
+ idlflags += -Wb,stub_export_macro=FINDER_STUB_Export -Wb,stub_export_include=Finder_stub_export.h -Wb,skel_export_macro=FINDER_SVNT_Export -Wb,skel_export_include=Finder_svnt_export.h
+ dynamicflags = FINDER_STUB_BUILD_DLL
+
+ IDL_Files {
+ Finder.idl
+ }
+
+ Source_Files {
+ FinderC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder_stub_export.h b/modules/CIAO/tests/IDL3/Homes/Finder/Finder_stub_export.h
new file mode 100644
index 00000000000..9ff0b76fd8a
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FINDER_STUB
+// ------------------------------
+#ifndef FINDER_STUB_EXPORT_H
+#define FINDER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FINDER_STUB_HAS_DLL)
+# define FINDER_STUB_HAS_DLL 1
+#endif /* ! FINDER_STUB_HAS_DLL */
+
+#if defined (FINDER_STUB_HAS_DLL) && (FINDER_STUB_HAS_DLL == 1)
+# if defined (FINDER_STUB_BUILD_DLL)
+# define FINDER_STUB_Export ACE_Proper_Export_Flag
+# define FINDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FINDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FINDER_STUB_BUILD_DLL */
+# define FINDER_STUB_Export ACE_Proper_Import_Flag
+# define FINDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FINDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FINDER_STUB_BUILD_DLL */
+#else /* FINDER_STUB_HAS_DLL == 1 */
+# define FINDER_STUB_Export
+# define FINDER_STUB_SINGLETON_DECLARATION(T)
+# define FINDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FINDER_STUB_HAS_DLL == 1 */
+
+// Set FINDER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FINDER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FINDER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FINDER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FINDER_STUB_NTRACE */
+
+#if (FINDER_STUB_NTRACE == 1)
+# define FINDER_STUB_TRACE(X)
+#else /* (FINDER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FINDER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FINDER_STUB_NTRACE == 1) */
+
+#endif /* FINDER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Finder/Finder_svnt_export.h b/modules/CIAO/tests/IDL3/Homes/Finder/Finder_svnt_export.h
new file mode 100644
index 00000000000..46e8202dab5
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Finder/Finder_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl FINDER_SVNT
+// ------------------------------
+#ifndef FINDER_SVNT_EXPORT_H
+#define FINDER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (FINDER_SVNT_HAS_DLL)
+# define FINDER_SVNT_HAS_DLL 1
+#endif /* ! FINDER_SVNT_HAS_DLL */
+
+#if defined (FINDER_SVNT_HAS_DLL) && (FINDER_SVNT_HAS_DLL == 1)
+# if defined (FINDER_SVNT_BUILD_DLL)
+# define FINDER_SVNT_Export ACE_Proper_Export_Flag
+# define FINDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define FINDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* FINDER_SVNT_BUILD_DLL */
+# define FINDER_SVNT_Export ACE_Proper_Import_Flag
+# define FINDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define FINDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* FINDER_SVNT_BUILD_DLL */
+#else /* FINDER_SVNT_HAS_DLL == 1 */
+# define FINDER_SVNT_Export
+# define FINDER_SVNT_SINGLETON_DECLARATION(T)
+# define FINDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* FINDER_SVNT_HAS_DLL == 1 */
+
+// Set FINDER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (FINDER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define FINDER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define FINDER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !FINDER_SVNT_NTRACE */
+
+#if (FINDER_SVNT_NTRACE == 1)
+# define FINDER_SVNT_TRACE(X)
+#else /* (FINDER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define FINDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (FINDER_SVNT_NTRACE == 1) */
+
+#endif /* FINDER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl
new file mode 100644
index 00000000000..e1bce50fc2f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.idl
@@ -0,0 +1,33 @@
+// $Id$
+/**
+ * @file Inheritance.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests the compilation of Home inheritance.
+ */
+
+#include <Components.idl>
+
+module HomeInheritance
+{
+ interface foo_interface
+ {
+ };
+
+ component Foo supports foo_interface
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ };
+
+ component Bar
+ {
+ };
+
+ home BarHome : FooHome manages Bar
+ {
+ };
+
+};
diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc
new file mode 100644
index 00000000000..6faf9f0b6cc
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Inheritance"
+
+project(Inheritance_stub): ciao_client_dnc {
+
+ sharedname = Inheritance_stub
+ idlflags += -Wb,stub_export_macro=INHERITANCE_STUB_Export -Wb,stub_export_include=Inheritance_stub_export.h -Wb,skel_export_macro=INHERITANCE_SVNT_Export -Wb,skel_export_include=Inheritance_svnt_export.h
+ dynamicflags = INHERITANCE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Inheritance.idl
+ }
+
+ Source_Files {
+ InheritanceC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_stub_export.h b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_stub_export.h
new file mode 100644
index 00000000000..e5bf83d5f7f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INHERITANCE_STUB
+// ------------------------------
+#ifndef INHERITANCE_STUB_EXPORT_H
+#define INHERITANCE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INHERITANCE_STUB_HAS_DLL)
+# define INHERITANCE_STUB_HAS_DLL 1
+#endif /* ! INHERITANCE_STUB_HAS_DLL */
+
+#if defined (INHERITANCE_STUB_HAS_DLL) && (INHERITANCE_STUB_HAS_DLL == 1)
+# if defined (INHERITANCE_STUB_BUILD_DLL)
+# define INHERITANCE_STUB_Export ACE_Proper_Export_Flag
+# define INHERITANCE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INHERITANCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INHERITANCE_STUB_BUILD_DLL */
+# define INHERITANCE_STUB_Export ACE_Proper_Import_Flag
+# define INHERITANCE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INHERITANCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INHERITANCE_STUB_BUILD_DLL */
+#else /* INHERITANCE_STUB_HAS_DLL == 1 */
+# define INHERITANCE_STUB_Export
+# define INHERITANCE_STUB_SINGLETON_DECLARATION(T)
+# define INHERITANCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INHERITANCE_STUB_HAS_DLL == 1 */
+
+// Set INHERITANCE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INHERITANCE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INHERITANCE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INHERITANCE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INHERITANCE_STUB_NTRACE */
+
+#if (INHERITANCE_STUB_NTRACE == 1)
+# define INHERITANCE_STUB_TRACE(X)
+#else /* (INHERITANCE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INHERITANCE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INHERITANCE_STUB_NTRACE == 1) */
+
+#endif /* INHERITANCE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_svnt_export.h b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_svnt_export.h
new file mode 100644
index 00000000000..fa4e1c0026b
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Homes/Inheritance/Inheritance_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl INHERITANCE_SVNT
+// ------------------------------
+#ifndef INHERITANCE_SVNT_EXPORT_H
+#define INHERITANCE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (INHERITANCE_SVNT_HAS_DLL)
+# define INHERITANCE_SVNT_HAS_DLL 1
+#endif /* ! INHERITANCE_SVNT_HAS_DLL */
+
+#if defined (INHERITANCE_SVNT_HAS_DLL) && (INHERITANCE_SVNT_HAS_DLL == 1)
+# if defined (INHERITANCE_SVNT_BUILD_DLL)
+# define INHERITANCE_SVNT_Export ACE_Proper_Export_Flag
+# define INHERITANCE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define INHERITANCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* INHERITANCE_SVNT_BUILD_DLL */
+# define INHERITANCE_SVNT_Export ACE_Proper_Import_Flag
+# define INHERITANCE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define INHERITANCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* INHERITANCE_SVNT_BUILD_DLL */
+#else /* INHERITANCE_SVNT_HAS_DLL == 1 */
+# define INHERITANCE_SVNT_Export
+# define INHERITANCE_SVNT_SINGLETON_DECLARATION(T)
+# define INHERITANCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* INHERITANCE_SVNT_HAS_DLL == 1 */
+
+// Set INHERITANCE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (INHERITANCE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define INHERITANCE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define INHERITANCE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !INHERITANCE_SVNT_NTRACE */
+
+#if (INHERITANCE_SVNT_NTRACE == 1)
+# define INHERITANCE_SVNT_TRACE(X)
+#else /* (INHERITANCE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define INHERITANCE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (INHERITANCE_SVNT_NTRACE == 1) */
+
+#endif /* INHERITANCE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/README b/modules/CIAO/tests/IDL3/ImpliedIDL/All/README
new file mode 100644
index 00000000000..fe43b62b221
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/README
@@ -0,0 +1,69 @@
+ Converting IDL3 to IDL2
+ =======================
+
+Introduction
+============
+
+This directory contains a test for the executable
+tao_idl3_to_idl2, which inputs a single IDL file and
+outputs a single IDL file which has the IDL3 declarations
+from the input file converted to the corresponding 'implied
+IDL' declarations specificed by the mapping in the CCM
+document.
+
+This utility can be used in conjunction with some IDL compiler
+that does not support IDL3 keywords and syntax. The output of
+the utility can be processed by such a compiler, yielding code
+in the target programming language equivalent to that which
+would have been generated in one step by a CCM-aware IDL compiler.
+
+The tao_idl3_to_idl2 executable itself is built in
+CIAO_ROOT/tools/IDL3_to_IDL2. It uses the TAO IDL compiler
+front end parsing engine and the TAO IDL compiler driver
+files, so it depends on ACE. The IDL generation is
+accomplished by a custom backend library.
+
+Running The Test
+================
+
+This test is only to determine that the generated IDL files
+are valid. So once the converted IDL file (having the
+extension _IDL2.idl) is generated by tao_idl3_to_idl2, the
+TAO IDL compiler is executed on the generated IDL file and
+the resulting C++ files compiled. If the compilation is
+successful for all such files, the test is a success.
+
+Notable Build Features
+======================
+
+Two features of the MPC file for this test are of interest:
+
+1.
+Two of the three IDL files in the test, pass_through.idl and
+include.idl, contain no IDL3 constructs, but merely test the
+executable's regeneration of IDL2 constructs. Since one IDL
+file is included in the other, there is a dependency that
+requires both IDL files to be processed before running the
+IDL compiler on pass_through_IDL2.idl. The line
+
+ pass_through_IDL2.idl << include_IDL2.idl
+
+indicates this dependency to the MPC tool, ensuring the correct
+order of execution.
+
+2.
+The -Sm option passed to the IDL compiler must be used when
+processing an IDL file resulting from the execution of
+tao_idl3_to_idl2. This option disables the action of the
+tao_idl backend 'preprocessor' (which is 'on' by default)
+that adds implied IDL nodes to the Abstract Syntax Tree
+for subsequent C++ code generation. In the case of an eventtype,
+the CCM spec requires additional code generation for a corresponding
+implied 'event consumer' IDL interface, as well as for the
+eventtype itself. The tao_idl3_to_idl2 executable adds this
+interface explicitly to the generated IDL file, along with the
+original eventtype. Without the -Sm option, the event consumer
+interface would appear redundantly in both explicit and implied
+IDL, resulting in a name clash. Since the IDL compiler cannot
+know the origin of the IDL file it is processing, the -Sm
+option encapsulates that knowledge. \ No newline at end of file
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc
new file mode 100644
index 00000000000..ca32b465573
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/all.mpc
@@ -0,0 +1,28 @@
+// -*- MPC -*-
+// $Id$
+
+project(ConvertIDL3) : taoidl3toidl2defaults, ciao_component_dnc {
+ idlflags += -Sm
+
+ IDL3TOIDL2_Files {
+ convert.idl
+ include.idl
+ pass_through.idl
+ }
+
+ IDL_Files {
+ convert_IDL2.idl
+ include_IDL2.idl
+ pass_through_IDL2.idl << include_IDL2.idl
+ }
+
+ Source_Files {
+ convert_IDL2C.cpp
+ convert_IDL2S.cpp
+ include_IDL2C.cpp
+ include_IDL2S.cpp
+ pass_through_IDL2C.cpp
+ pass_through_IDL2S.cpp
+ }
+}
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl
new file mode 100644
index 00000000000..68600a619b3
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/convert.idl
@@ -0,0 +1,53 @@
+// $Id$
+/**
+ * @file convert.idl
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ *
+ * Tests all conversions of IDL3 constructs to IDL2.
+ */
+
+#include <Components.idl>
+
+eventtype eattype;
+interface sface {};
+interface pface {};
+interface uface {};
+interface umface {};
+
+valuetype pkey : Components::PrimaryKeyBase
+{
+ public string info;
+};
+
+valuetype pubtype_base {};
+eventtype pubtype : pubtype_base {};
+eventtype emitype : pubtype {};
+eventtype eattype {};
+
+component CompBase supports sface
+{
+};
+
+component CompDerived : CompBase
+{
+ provides pface pface_provider;
+ uses uface uface_user;
+ uses multiple umface umface_umuser;
+ publishes pubtype pubtype_publisher;
+ emits emitype emitype_emitter;
+ consumes eattype eattype_consumer;
+};
+
+home CompBaseHome supports sface manages CompBase
+{
+};
+
+home CompDerivedHome : CompBaseHome manages CompDerived primarykey pkey
+{
+ exception ch_except {};
+ void ch_op () raises (ch_except);
+ factory def_init ();
+ finder kitchen_sink (in string uid, in pkey key, in boolean all)
+ raises (ch_except);
+};
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl
new file mode 100644
index 00000000000..6a08a6c03d6
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/include.idl
@@ -0,0 +1,30 @@
+// $Id$
+/**
+ * @file include.idl
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ *
+ * Tests tool's regeneration of IDL2 constructs, which
+ * should be basically unchanged.
+ */
+
+module pre_mod
+{
+ typedef long longarray[3][14][7];
+
+ exception wrong
+ {
+ sequence<sequence<long> > longseqseq;
+ string reasons[4][2];
+ wstring<3> why;
+ };
+
+ enum which
+ {
+ ZERO,
+ ONE,
+ TWO
+ };
+};
+
+const pre_mod::which which_one = pre_mod::ONE;
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl
new file mode 100644
index 00000000000..f5a4a76627c
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/All/pass_through.idl
@@ -0,0 +1,83 @@
+// $Id$
+/**
+ * @file pass_through.idl
+ * @author Jeff Parsons <j.parsons@vanderbilt.edu>
+ *
+ * Tests tool's regeneration of IDL2 constructs, which
+ * should be basically unchanged.
+ */
+
+#pragma prefix "glooby"
+
+#include "include.idl"
+
+module pre_mod
+{
+ union uke switch (which)
+ {
+ case ONE:
+ case ZERO: string str_mem;
+ default: short s_mem;
+ };
+};
+
+module mod
+{
+ typeid mod "rama:lama/ding:dong";
+
+ interface base
+ {
+ readonly attribute unsigned long long ull_attr
+ raises (pre_mod::wrong);
+ };
+
+ interface foo
+ {
+ typeprefix foo "preefy";
+
+ exception wrongety_wrong
+ {
+ base unrelated;
+ string explanation;
+ };
+
+ attribute base base_attr
+ getraises (wrongety_wrong)
+ setraises (pre_mod::wrong, wrongety_wrong);
+ };
+
+ interface bleep;
+
+ abstract interface bar
+ {
+ base bar_op (in base inarg);
+ };
+
+ interface bleep : base, foo
+ {
+ oneway void oneway_op (in string strarg, in any anyarg);
+ bleep get_me ();
+ pre_mod::uke get_uke (out boolean success)
+ raises (pre_mod::wrong, foo::wrongety_wrong);
+ void throw_something ()
+ raises (pre_mod::wrong);
+ };
+
+ abstract valuetype vt_abase
+ {
+ };
+
+ valuetype vt_cbase
+ {
+ private bleep priv_bleep;
+ public string pub_str;
+ factory vt_init (in bleep bleeparg, in string stringarg)
+ raises (pre_mod::wrong);
+ };
+
+ valuetype vt : vt_cbase, vt_abase supports foo, bar
+ {
+ factory vt_default ();
+ };
+};
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl
new file mode 100644
index 00000000000..a5d5897f8cc
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.idl
@@ -0,0 +1,25 @@
+// $Id$
+/**
+ * @file ICBasic.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests implied idl functionality of basic components.
+ */
+
+#include <Components.idl>
+
+module Basic
+{
+ component Foo
+ {
+ };
+
+ interface Bar
+ {
+ Foo test_op_1 ();
+ void test_op_2 (in Foo f);
+ void test_op_3 (out Foo f);
+ };
+
+
+};
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc
new file mode 100644
index 00000000000..c1767d3310f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n ICBasic"
+
+project(ICBasic_stub): ciao_client_dnc {
+
+ sharedname = ICBasic_stub
+ idlflags += -Wb,stub_export_macro=ICBASIC_STUB_Export -Wb,stub_export_include=ICBasic_stub_export.h -Wb,skel_export_macro=ICBASIC_SVNT_Export -Wb,skel_export_include=ICBasic_svnt_export.h
+ dynamicflags = ICBASIC_STUB_BUILD_DLL
+
+ IDL_Files {
+ ICBasic.idl
+ }
+
+ Source_Files {
+ ICBasicC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h
new file mode 100644
index 00000000000..1e735493546
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICBASIC_STUB
+// ------------------------------
+#ifndef ICBASIC_STUB_EXPORT_H
+#define ICBASIC_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICBASIC_STUB_HAS_DLL)
+# define ICBASIC_STUB_HAS_DLL 1
+#endif /* ! ICBASIC_STUB_HAS_DLL */
+
+#if defined (ICBASIC_STUB_HAS_DLL) && (ICBASIC_STUB_HAS_DLL == 1)
+# if defined (ICBASIC_STUB_BUILD_DLL)
+# define ICBASIC_STUB_Export ACE_Proper_Export_Flag
+# define ICBASIC_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICBASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICBASIC_STUB_BUILD_DLL */
+# define ICBASIC_STUB_Export ACE_Proper_Import_Flag
+# define ICBASIC_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICBASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICBASIC_STUB_BUILD_DLL */
+#else /* ICBASIC_STUB_HAS_DLL == 1 */
+# define ICBASIC_STUB_Export
+# define ICBASIC_STUB_SINGLETON_DECLARATION(T)
+# define ICBASIC_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICBASIC_STUB_HAS_DLL == 1 */
+
+// Set ICBASIC_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICBASIC_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICBASIC_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICBASIC_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICBASIC_STUB_NTRACE */
+
+#if (ICBASIC_STUB_NTRACE == 1)
+# define ICBASIC_STUB_TRACE(X)
+#else /* (ICBASIC_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICBASIC_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICBASIC_STUB_NTRACE == 1) */
+
+#endif /* ICBASIC_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h
new file mode 100644
index 00000000000..b6c09e43f24
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Basic/ICBasic_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICBASIC_SVNT
+// ------------------------------
+#ifndef ICBASIC_SVNT_EXPORT_H
+#define ICBASIC_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICBASIC_SVNT_HAS_DLL)
+# define ICBASIC_SVNT_HAS_DLL 1
+#endif /* ! ICBASIC_SVNT_HAS_DLL */
+
+#if defined (ICBASIC_SVNT_HAS_DLL) && (ICBASIC_SVNT_HAS_DLL == 1)
+# if defined (ICBASIC_SVNT_BUILD_DLL)
+# define ICBASIC_SVNT_Export ACE_Proper_Export_Flag
+# define ICBASIC_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICBASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICBASIC_SVNT_BUILD_DLL */
+# define ICBASIC_SVNT_Export ACE_Proper_Import_Flag
+# define ICBASIC_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICBASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICBASIC_SVNT_BUILD_DLL */
+#else /* ICBASIC_SVNT_HAS_DLL == 1 */
+# define ICBASIC_SVNT_Export
+# define ICBASIC_SVNT_SINGLETON_DECLARATION(T)
+# define ICBASIC_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICBASIC_SVNT_HAS_DLL == 1 */
+
+// Set ICBASIC_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICBASIC_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICBASIC_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICBASIC_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICBASIC_SVNT_NTRACE */
+
+#if (ICBASIC_SVNT_NTRACE == 1)
+# define ICBASIC_SVNT_TRACE(X)
+#else /* (ICBASIC_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICBASIC_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICBASIC_SVNT_NTRACE == 1) */
+
+#endif /* ICBASIC_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl
new file mode 100644
index 00000000000..01d41895a3a
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.idl
@@ -0,0 +1,27 @@
+// $Id$
+/**
+ * @file ICEventSink.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests implied idl features of event sinks
+ */
+
+#include <Components.idl>
+
+module ImpliedEventSink
+{
+ eventtype foo_event
+ {
+ };
+
+ component Foo
+ {
+ consumes foo_event foo;
+ };
+ /*
+ interface test
+ {
+ ImpliedEventSink::FooEventConsumers::foo_eventConsumer test_a ();
+ };
+ */
+};
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc
new file mode 100644
index 00000000000..ac7b02caf97
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n ICEventSink"
+
+project(ICEventSink_stub): ciao_client_dnc {
+
+ sharedname = ICEventSink_stub
+ idlflags += -Wb,stub_export_macro=ICEVENTSINK_STUB_Export -Wb,stub_export_include=ICEventSink_stub_export.h -Wb,skel_export_macro=ICEVENTSINK_SVNT_Export -Wb,skel_export_include=ICEventSink_svnt_export.h
+ dynamicflags = ICEVENTSINK_STUB_BUILD_DLL
+
+ IDL_Files {
+ ICEventSink.idl
+ }
+
+ Source_Files {
+ ICEventSinkC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h
new file mode 100644
index 00000000000..d32e9541f3e
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICEVENTSINK_STUB
+// ------------------------------
+#ifndef ICEVENTSINK_STUB_EXPORT_H
+#define ICEVENTSINK_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICEVENTSINK_STUB_HAS_DLL)
+# define ICEVENTSINK_STUB_HAS_DLL 1
+#endif /* ! ICEVENTSINK_STUB_HAS_DLL */
+
+#if defined (ICEVENTSINK_STUB_HAS_DLL) && (ICEVENTSINK_STUB_HAS_DLL == 1)
+# if defined (ICEVENTSINK_STUB_BUILD_DLL)
+# define ICEVENTSINK_STUB_Export ACE_Proper_Export_Flag
+# define ICEVENTSINK_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICEVENTSINK_STUB_BUILD_DLL */
+# define ICEVENTSINK_STUB_Export ACE_Proper_Import_Flag
+# define ICEVENTSINK_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICEVENTSINK_STUB_BUILD_DLL */
+#else /* ICEVENTSINK_STUB_HAS_DLL == 1 */
+# define ICEVENTSINK_STUB_Export
+# define ICEVENTSINK_STUB_SINGLETON_DECLARATION(T)
+# define ICEVENTSINK_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICEVENTSINK_STUB_HAS_DLL == 1 */
+
+// Set ICEVENTSINK_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICEVENTSINK_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICEVENTSINK_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICEVENTSINK_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICEVENTSINK_STUB_NTRACE */
+
+#if (ICEVENTSINK_STUB_NTRACE == 1)
+# define ICEVENTSINK_STUB_TRACE(X)
+#else /* (ICEVENTSINK_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICEVENTSINK_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICEVENTSINK_STUB_NTRACE == 1) */
+
+#endif /* ICEVENTSINK_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h
new file mode 100644
index 00000000000..2df3d57fbdf
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSink/ICEventSink_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICEVENTSINK_SVNT
+// ------------------------------
+#ifndef ICEVENTSINK_SVNT_EXPORT_H
+#define ICEVENTSINK_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICEVENTSINK_SVNT_HAS_DLL)
+# define ICEVENTSINK_SVNT_HAS_DLL 1
+#endif /* ! ICEVENTSINK_SVNT_HAS_DLL */
+
+#if defined (ICEVENTSINK_SVNT_HAS_DLL) && (ICEVENTSINK_SVNT_HAS_DLL == 1)
+# if defined (ICEVENTSINK_SVNT_BUILD_DLL)
+# define ICEVENTSINK_SVNT_Export ACE_Proper_Export_Flag
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICEVENTSINK_SVNT_BUILD_DLL */
+# define ICEVENTSINK_SVNT_Export ACE_Proper_Import_Flag
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICEVENTSINK_SVNT_BUILD_DLL */
+#else /* ICEVENTSINK_SVNT_HAS_DLL == 1 */
+# define ICEVENTSINK_SVNT_Export
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARATION(T)
+# define ICEVENTSINK_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICEVENTSINK_SVNT_HAS_DLL == 1 */
+
+// Set ICEVENTSINK_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICEVENTSINK_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICEVENTSINK_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICEVENTSINK_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICEVENTSINK_SVNT_NTRACE */
+
+#if (ICEVENTSINK_SVNT_NTRACE == 1)
+# define ICEVENTSINK_SVNT_TRACE(X)
+#else /* (ICEVENTSINK_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICEVENTSINK_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICEVENTSINK_SVNT_NTRACE == 1) */
+
+#endif /* ICEVENTSINK_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl
new file mode 100644
index 00000000000..08baec86e3f
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.idl
@@ -0,0 +1,38 @@
+// $Id$
+/**
+ * @file ICEventSource.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests implied IDL of event sources.
+ */
+
+#include <Components.idl>
+
+module ImpliedSources
+{
+ eventtype foo_event
+ {
+ };
+
+ eventtype bar_event
+ {
+ };
+
+ component Foo
+ {
+ publishes foo_event foo;
+ };
+
+ component Bar
+ {
+ emits bar_event bar;
+ };
+ /*
+ interface test
+ {
+ ImpliedSources::FooEventConsumers::foo_eventConsumer test_op ();
+ ImpliedSources::BarEventConsumers::bar_eventConsumer test_op_1 ();
+ };
+ */
+};
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc
new file mode 100644
index 00000000000..b8eaded62c5
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n ICEventSource"
+
+project(ICEventSource_stub): ciao_client_dnc {
+
+ sharedname = ICEventSource_stub
+ idlflags += -Wb,stub_export_macro=ICEVENTSOURCE_STUB_Export -Wb,stub_export_include=ICEventSource_stub_export.h -Wb,skel_export_macro=ICEVENTSOURCE_SVNT_Export -Wb,skel_export_include=ICEventSource_svnt_export.h
+ dynamicflags = ICEVENTSOURCE_STUB_BUILD_DLL
+
+ IDL_Files {
+ ICEventSource.idl
+ }
+
+ Source_Files {
+ ICEventSourceC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_stub_export.h
new file mode 100644
index 00000000000..a5e067553d2
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICEVENTSOURCE_STUB
+// ------------------------------
+#ifndef ICEVENTSOURCE_STUB_EXPORT_H
+#define ICEVENTSOURCE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICEVENTSOURCE_STUB_HAS_DLL)
+# define ICEVENTSOURCE_STUB_HAS_DLL 1
+#endif /* ! ICEVENTSOURCE_STUB_HAS_DLL */
+
+#if defined (ICEVENTSOURCE_STUB_HAS_DLL) && (ICEVENTSOURCE_STUB_HAS_DLL == 1)
+# if defined (ICEVENTSOURCE_STUB_BUILD_DLL)
+# define ICEVENTSOURCE_STUB_Export ACE_Proper_Export_Flag
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICEVENTSOURCE_STUB_BUILD_DLL */
+# define ICEVENTSOURCE_STUB_Export ACE_Proper_Import_Flag
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICEVENTSOURCE_STUB_BUILD_DLL */
+#else /* ICEVENTSOURCE_STUB_HAS_DLL == 1 */
+# define ICEVENTSOURCE_STUB_Export
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARATION(T)
+# define ICEVENTSOURCE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICEVENTSOURCE_STUB_HAS_DLL == 1 */
+
+// Set ICEVENTSOURCE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICEVENTSOURCE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICEVENTSOURCE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICEVENTSOURCE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICEVENTSOURCE_STUB_NTRACE */
+
+#if (ICEVENTSOURCE_STUB_NTRACE == 1)
+# define ICEVENTSOURCE_STUB_TRACE(X)
+#else /* (ICEVENTSOURCE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICEVENTSOURCE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICEVENTSOURCE_STUB_NTRACE == 1) */
+
+#endif /* ICEVENTSOURCE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_svnt_export.h
new file mode 100644
index 00000000000..24ca972b917
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/EventSource/ICEventSource_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICEVENTSOURCE_SVNT
+// ------------------------------
+#ifndef ICEVENTSOURCE_SVNT_EXPORT_H
+#define ICEVENTSOURCE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICEVENTSOURCE_SVNT_HAS_DLL)
+# define ICEVENTSOURCE_SVNT_HAS_DLL 1
+#endif /* ! ICEVENTSOURCE_SVNT_HAS_DLL */
+
+#if defined (ICEVENTSOURCE_SVNT_HAS_DLL) && (ICEVENTSOURCE_SVNT_HAS_DLL == 1)
+# if defined (ICEVENTSOURCE_SVNT_BUILD_DLL)
+# define ICEVENTSOURCE_SVNT_Export ACE_Proper_Export_Flag
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICEVENTSOURCE_SVNT_BUILD_DLL */
+# define ICEVENTSOURCE_SVNT_Export ACE_Proper_Import_Flag
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICEVENTSOURCE_SVNT_BUILD_DLL */
+#else /* ICEVENTSOURCE_SVNT_HAS_DLL == 1 */
+# define ICEVENTSOURCE_SVNT_Export
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARATION(T)
+# define ICEVENTSOURCE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICEVENTSOURCE_SVNT_HAS_DLL == 1 */
+
+// Set ICEVENTSOURCE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICEVENTSOURCE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICEVENTSOURCE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICEVENTSOURCE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICEVENTSOURCE_SVNT_NTRACE */
+
+#if (ICEVENTSOURCE_SVNT_NTRACE == 1)
+# define ICEVENTSOURCE_SVNT_TRACE(X)
+#else /* (ICEVENTSOURCE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICEVENTSOURCE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICEVENTSOURCE_SVNT_NTRACE == 1) */
+
+#endif /* ICEVENTSOURCE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl
new file mode 100644
index 00000000000..7af66e50e8c
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.idl
@@ -0,0 +1,28 @@
+// $Id$
+/**
+ * @file ICReceptacles.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests equivalent idl for receptacles.
+ */
+#include <Components.idl>
+
+module EquivReceptacles
+{
+ interface foo_interface
+ {
+ };
+
+ component Foo
+ {
+ uses multiple foo_interface foo_recep;
+ };
+
+ /**
+ interface bar
+ {
+ Foo::foo_recepConnections get_seq ();
+ Foo::foo_recepConnection get_struct ();
+ };
+ */
+};
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc
new file mode 100644
index 00000000000..9ab64c3df92
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles.mpc
@@ -0,0 +1,18 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n ICReceptacles"
+
+project(ICReceptacles_stub): ciao_client_dnc {
+
+ sharedname = ICReceptacles_stub
+ idlflags += -Wb,stub_export_macro=ICRECEPTACLES_STUB_Export -Wb,stub_export_include=ICReceptacles_stub_export.h -Wb,skel_export_macro=ICRECEPTACLES_SVNT_Export -Wb,skel_export_include=ICReceptacles_svnt_export.h
+ dynamicflags = ICRECEPTACLES_STUB_BUILD_DLL
+
+ IDL_Files {
+ ICReceptacles.idl
+ }
+
+ Source_Files {
+ ICReceptaclesC.cpp
+ }
+}
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_stub_export.h
new file mode 100644
index 00000000000..f23222462d2
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICRECEPTACLES_STUB
+// ------------------------------
+#ifndef ICRECEPTACLES_STUB_EXPORT_H
+#define ICRECEPTACLES_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICRECEPTACLES_STUB_HAS_DLL)
+# define ICRECEPTACLES_STUB_HAS_DLL 1
+#endif /* ! ICRECEPTACLES_STUB_HAS_DLL */
+
+#if defined (ICRECEPTACLES_STUB_HAS_DLL) && (ICRECEPTACLES_STUB_HAS_DLL == 1)
+# if defined (ICRECEPTACLES_STUB_BUILD_DLL)
+# define ICRECEPTACLES_STUB_Export ACE_Proper_Export_Flag
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICRECEPTACLES_STUB_BUILD_DLL */
+# define ICRECEPTACLES_STUB_Export ACE_Proper_Import_Flag
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICRECEPTACLES_STUB_BUILD_DLL */
+#else /* ICRECEPTACLES_STUB_HAS_DLL == 1 */
+# define ICRECEPTACLES_STUB_Export
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARATION(T)
+# define ICRECEPTACLES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICRECEPTACLES_STUB_HAS_DLL == 1 */
+
+// Set ICRECEPTACLES_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICRECEPTACLES_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICRECEPTACLES_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICRECEPTACLES_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICRECEPTACLES_STUB_NTRACE */
+
+#if (ICRECEPTACLES_STUB_NTRACE == 1)
+# define ICRECEPTACLES_STUB_TRACE(X)
+#else /* (ICRECEPTACLES_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICRECEPTACLES_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICRECEPTACLES_STUB_NTRACE == 1) */
+
+#endif /* ICRECEPTACLES_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_svnt_export.h
new file mode 100644
index 00000000000..6929ea5edd2
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Components/Receptacles/ICReceptacles_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl ICRECEPTACLES_SVNT
+// ------------------------------
+#ifndef ICRECEPTACLES_SVNT_EXPORT_H
+#define ICRECEPTACLES_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (ICRECEPTACLES_SVNT_HAS_DLL)
+# define ICRECEPTACLES_SVNT_HAS_DLL 1
+#endif /* ! ICRECEPTACLES_SVNT_HAS_DLL */
+
+#if defined (ICRECEPTACLES_SVNT_HAS_DLL) && (ICRECEPTACLES_SVNT_HAS_DLL == 1)
+# if defined (ICRECEPTACLES_SVNT_BUILD_DLL)
+# define ICRECEPTACLES_SVNT_Export ACE_Proper_Export_Flag
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* ICRECEPTACLES_SVNT_BUILD_DLL */
+# define ICRECEPTACLES_SVNT_Export ACE_Proper_Import_Flag
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* ICRECEPTACLES_SVNT_BUILD_DLL */
+#else /* ICRECEPTACLES_SVNT_HAS_DLL == 1 */
+# define ICRECEPTACLES_SVNT_Export
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARATION(T)
+# define ICRECEPTACLES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* ICRECEPTACLES_SVNT_HAS_DLL == 1 */
+
+// Set ICRECEPTACLES_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (ICRECEPTACLES_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define ICRECEPTACLES_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define ICRECEPTACLES_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !ICRECEPTACLES_SVNT_NTRACE */
+
+#if (ICRECEPTACLES_SVNT_NTRACE == 1)
+# define ICRECEPTACLES_SVNT_TRACE(X)
+#else /* (ICRECEPTACLES_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define ICRECEPTACLES_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (ICRECEPTACLES_SVNT_NTRACE == 1) */
+
+#endif /* ICRECEPTACLES_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl
new file mode 100644
index 00000000000..62092c9e958
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.idl
@@ -0,0 +1,22 @@
+// $Id$
+/**
+ * @file Events.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests implied IDL for event types.
+ */
+
+#include <Components.idl>
+
+module ImpliedEvent
+{
+ eventtype foo
+ {
+ };
+ /*
+ interface test_foo
+ {
+ fooConsumer test_op ();
+ };
+ */
+};
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc
new file mode 100644
index 00000000000..c5b51e417c4
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events.mpc
@@ -0,0 +1,17 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Events"
+
+project(Events_stub): ciao_client_dnc {
+
+ sharedname = Events_stub
+ idlflags += -Wb,stub_export_macro=EVENTS_STUB_Export -Wb,stub_export_include=Events_stub_export.h -Wb,skel_export_macro=EVENTS_SVNT_Export -Wb,skel_export_include=Events_svnt_export.h
+ dynamicflags = EVENTS_STUB_BUILD_DLL
+
+ IDL_Files {
+ Events.idl
+ }
+
+ Source_Files {
+ EventsC.cpp
+ }
+}
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_stub_export.h
new file mode 100644
index 00000000000..096a67f9beb
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTS_STUB
+// ------------------------------
+#ifndef EVENTS_STUB_EXPORT_H
+#define EVENTS_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTS_STUB_HAS_DLL)
+# define EVENTS_STUB_HAS_DLL 1
+#endif /* ! EVENTS_STUB_HAS_DLL */
+
+#if defined (EVENTS_STUB_HAS_DLL) && (EVENTS_STUB_HAS_DLL == 1)
+# if defined (EVENTS_STUB_BUILD_DLL)
+# define EVENTS_STUB_Export ACE_Proper_Export_Flag
+# define EVENTS_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTS_STUB_BUILD_DLL */
+# define EVENTS_STUB_Export ACE_Proper_Import_Flag
+# define EVENTS_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTS_STUB_BUILD_DLL */
+#else /* EVENTS_STUB_HAS_DLL == 1 */
+# define EVENTS_STUB_Export
+# define EVENTS_STUB_SINGLETON_DECLARATION(T)
+# define EVENTS_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTS_STUB_HAS_DLL == 1 */
+
+// Set EVENTS_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTS_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTS_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTS_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTS_STUB_NTRACE */
+
+#if (EVENTS_STUB_NTRACE == 1)
+# define EVENTS_STUB_TRACE(X)
+#else /* (EVENTS_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTS_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTS_STUB_NTRACE == 1) */
+
+#endif /* EVENTS_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_svnt_export.h
new file mode 100644
index 00000000000..5f647a0740a
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Events/Events_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl EVENTS_SVNT
+// ------------------------------
+#ifndef EVENTS_SVNT_EXPORT_H
+#define EVENTS_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (EVENTS_SVNT_HAS_DLL)
+# define EVENTS_SVNT_HAS_DLL 1
+#endif /* ! EVENTS_SVNT_HAS_DLL */
+
+#if defined (EVENTS_SVNT_HAS_DLL) && (EVENTS_SVNT_HAS_DLL == 1)
+# if defined (EVENTS_SVNT_BUILD_DLL)
+# define EVENTS_SVNT_Export ACE_Proper_Export_Flag
+# define EVENTS_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define EVENTS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* EVENTS_SVNT_BUILD_DLL */
+# define EVENTS_SVNT_Export ACE_Proper_Import_Flag
+# define EVENTS_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define EVENTS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* EVENTS_SVNT_BUILD_DLL */
+#else /* EVENTS_SVNT_HAS_DLL == 1 */
+# define EVENTS_SVNT_Export
+# define EVENTS_SVNT_SINGLETON_DECLARATION(T)
+# define EVENTS_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* EVENTS_SVNT_HAS_DLL == 1 */
+
+// Set EVENTS_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (EVENTS_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define EVENTS_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define EVENTS_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !EVENTS_SVNT_NTRACE */
+
+#if (EVENTS_SVNT_NTRACE == 1)
+# define EVENTS_SVNT_TRACE(X)
+#else /* (EVENTS_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define EVENTS_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (EVENTS_SVNT_NTRACE == 1) */
+
+#endif /* EVENTS_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl
new file mode 100644
index 00000000000..3440458b4b2
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.idl
@@ -0,0 +1,28 @@
+// $Id$
+/**
+ * @file Homes.idl
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Tests equivalent IDL semantics for Homes
+ */
+
+#include <Components.idl>
+
+module ImplicitHomes
+{
+ component Foo
+ {
+ };
+
+ home FooHome manages Foo
+ {
+ };
+ /*
+ interface test
+ {
+ FooHomeExplicit test_op ();
+ FooHomeImplicit test_op_1 ();
+ FooHome test_op_2 ();
+ };
+ */
+};
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc
new file mode 100644
index 00000000000..6865c71b120
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes.mpc
@@ -0,0 +1,18 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Homes"
+
+project(Homes_stub): ciao_client_dnc {
+
+ sharedname = Homes_stub
+ idlflags += -Wb,stub_export_macro=HOMES_STUB_Export -Wb,stub_export_include=Homes_stub_export.h -Wb,skel_export_macro=HOMES_SVNT_Export -Wb,skel_export_include=Homes_svnt_export.h
+ dynamicflags = HOMES_STUB_BUILD_DLL
+
+ IDL_Files {
+ Homes.idl
+ }
+
+ Source_Files {
+ HomesC.cpp
+ }
+}
+
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_stub_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_stub_export.h
new file mode 100644
index 00000000000..2d9a1562f59
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HOMES_STUB
+// ------------------------------
+#ifndef HOMES_STUB_EXPORT_H
+#define HOMES_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HOMES_STUB_HAS_DLL)
+# define HOMES_STUB_HAS_DLL 1
+#endif /* ! HOMES_STUB_HAS_DLL */
+
+#if defined (HOMES_STUB_HAS_DLL) && (HOMES_STUB_HAS_DLL == 1)
+# if defined (HOMES_STUB_BUILD_DLL)
+# define HOMES_STUB_Export ACE_Proper_Export_Flag
+# define HOMES_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HOMES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HOMES_STUB_BUILD_DLL */
+# define HOMES_STUB_Export ACE_Proper_Import_Flag
+# define HOMES_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HOMES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HOMES_STUB_BUILD_DLL */
+#else /* HOMES_STUB_HAS_DLL == 1 */
+# define HOMES_STUB_Export
+# define HOMES_STUB_SINGLETON_DECLARATION(T)
+# define HOMES_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HOMES_STUB_HAS_DLL == 1 */
+
+// Set HOMES_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HOMES_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HOMES_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HOMES_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HOMES_STUB_NTRACE */
+
+#if (HOMES_STUB_NTRACE == 1)
+# define HOMES_STUB_TRACE(X)
+#else /* (HOMES_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HOMES_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HOMES_STUB_NTRACE == 1) */
+
+#endif /* HOMES_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_svnt_export.h b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_svnt_export.h
new file mode 100644
index 00000000000..d8d89bd8d61
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/ImpliedIDL/Homes/Homes_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl HOMES_SVNT
+// ------------------------------
+#ifndef HOMES_SVNT_EXPORT_H
+#define HOMES_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (HOMES_SVNT_HAS_DLL)
+# define HOMES_SVNT_HAS_DLL 1
+#endif /* ! HOMES_SVNT_HAS_DLL */
+
+#if defined (HOMES_SVNT_HAS_DLL) && (HOMES_SVNT_HAS_DLL == 1)
+# if defined (HOMES_SVNT_BUILD_DLL)
+# define HOMES_SVNT_Export ACE_Proper_Export_Flag
+# define HOMES_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define HOMES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* HOMES_SVNT_BUILD_DLL */
+# define HOMES_SVNT_Export ACE_Proper_Import_Flag
+# define HOMES_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define HOMES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* HOMES_SVNT_BUILD_DLL */
+#else /* HOMES_SVNT_HAS_DLL == 1 */
+# define HOMES_SVNT_Export
+# define HOMES_SVNT_SINGLETON_DECLARATION(T)
+# define HOMES_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* HOMES_SVNT_HAS_DLL == 1 */
+
+// Set HOMES_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (HOMES_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define HOMES_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define HOMES_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !HOMES_SVNT_NTRACE */
+
+#if (HOMES_SVNT_NTRACE == 1)
+# define HOMES_SVNT_TRACE(X)
+#else /* (HOMES_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define HOMES_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (HOMES_SVNT_NTRACE == 1) */
+
+#endif /* HOMES_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/IDL3/Lookup/README b/modules/CIAO/tests/IDL3/Lookup/README
new file mode 100644
index 00000000000..a92531070a6
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Lookup/README
@@ -0,0 +1,21 @@
+
+Lookup Test
+=======================
+
+This test is for IDL compiler handling of references using local
+names to declarations in base interfaces, components, valuetypes
+and homes, and in supported interfaces. This type of reference
+is legal IDL.
+
+The primary point of the test is that the IDL compiler outputs
+no errors in processing the IDL file, and the secondary point
+is that the generated code compiles successfully. Therefore,
+we have no need for export files, export macros, or *_BUILD_DLL
+flags.
+
+Thanks to Boris Kolpackov <boris@dre.vanderbilt.edu> for the
+original example IDL file, which has been slightly modified
+for use in this test.
+
+
+Jeff Parsons \ No newline at end of file
diff --git a/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl b/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl
new file mode 100644
index 00000000000..74d9b85de22
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Lookup/lookup_test.idl
@@ -0,0 +1,76 @@
+// $Id$
+/**
+ * @file lookup_test.idl
+ * @authors Boris Kolpackov <boris@dre.vanderbilt.edu>
+ * Jeff Parsons <j.parsons@vanderbilt.edu>
+ *
+ * Tests IDL compiler lookup when local names are used
+ * to reference declarations in supported interfaces,
+ * base valuetypes, base components, and base homes.
+ */
+
+
+#ifndef IDL3_LOOKUP_TEST_IDL
+#define IDL3_LOOKUP_TEST_IDL
+
+#include <Components.idl>
+
+module M
+{
+ interface IB
+ {
+ exception Ex {};
+ typedef long Foo;
+ };
+
+ interface I : IB
+ {
+ void f (in Foo bar) raises (Ex);
+ };
+
+ valuetype VB
+ {
+ typedef long Bar;
+ };
+
+ valuetype V : VB supports IB
+ {
+ void f (in Bar foo) raises (Ex);
+ };
+
+ valuetype EB
+ {
+ typedef long Bar;
+ };
+
+ valuetype E : EB supports IB
+ {
+ void f (in Bar foo) raises (Ex);
+ };
+
+ interface T
+ {
+ typedef long Bar;
+ };
+
+ component CB supports T
+ {
+ };
+
+ component C : CB
+ {
+ attribute Bar baz;
+ };
+
+ home HB supports IB manages CB
+ {
+ typedef long Bar;
+ };
+
+ home H : HB manages C
+ {
+ void f (in Bar b) raises (Ex);
+ };
+};
+
+#endif /* IDL3_LOOKUP_TEST_IDL */
diff --git a/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc b/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc
new file mode 100644
index 00000000000..1449c788ea1
--- /dev/null
+++ b/modules/CIAO/tests/IDL3/Lookup/lookup_test.mpc
@@ -0,0 +1,18 @@
+// $Id$
+
+project(LookupTest_stub): ciao_client_dnc {
+
+ sharedname = LookupTest_stub
+
+ IDL_Files {
+ lookup_test.idl
+ }
+
+ Source_Files {
+ lookup_testC.cpp
+ }
+
+ Header_Files {
+ lookup_testC.h
+ }
+}
diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum.mpc b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum.mpc
new file mode 100644
index 00000000000..3862be24788
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum.mpc
@@ -0,0 +1,60 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Minimum_Base"
+
+project(Minimum_Base_DnC_stub): ciao_client_dnc {
+
+ sharedname = Minimum_Base_DnC_stub
+ idlflags += -Wb,stub_export_macro=MINIMUM_BASE_STUB_Export \
+ -Wb,stub_export_include=Minimum_Base_stub_export.h \
+ -Wb,skel_export_macro=MINIMUM_BASE_SVNT_Export \
+ -Wb,skel_export_include=Minimum_Base_svnt_export.h
+ dynamicflags = MINIMUM_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Minimum_Base.idl
+ }
+
+ Source_Files {
+ Minimum_BaseC.cpp
+ }
+
+ Header_Files {
+ Minimum_BaseC.h
+ }
+
+ Inline_Files {
+ Minimum_BaseC.inl
+ }
+}
+
+project(Minimum_Base_DnC_svnt) : ciao_servant_dnc {
+ after += Minimum_Base_DnC_stub
+ sharedname = Minimum_Base_DnC_svnt
+ libs += Minimum_Base_DnC_stub
+
+ idlflags += -Wb,stub_export_macro=MINIMUM_BASE_STUB_Export \
+ -Wb,stub_export_include=Minimum_Base_stub_export.h \
+ -Wb,skel_export_macro=MINIMUM_BASE_SVNT_Export \
+ -Wb,skel_export_include=Minimum_Base_svnt_export.h
+ dynamicflags = MINIMUM_BASE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Minimum_Base.idl
+ }
+
+ Source_Files {
+ Minimum_BaseS.cpp
+ }
+
+ Header_Files {
+ Minimum_BaseS.h
+ }
+
+ Inline_Files {
+ Minimum_BaseS.inl
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl
new file mode 100644
index 00000000000..e82cb0066a8
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base.idl
@@ -0,0 +1,17 @@
+//$Id$:
+
+#ifndef CIAO_MINIMUM_IDL
+#define CIAO_MINIMUM_IDL
+
+#include <Components.idl>
+
+module Minimum
+{
+ interface ReadMessage
+ {
+ void foo ();
+ };
+
+};
+
+#endif /* CIAO_MINIMUM_IDL */
diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_stub_export.h b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_stub_export.h
new file mode 100644
index 00000000000..9ca0e6c6be1
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl MINIMUM_BASE_STUB
+// ------------------------------
+#ifndef MINIMUM_BASE_STUB_EXPORT_H
+#define MINIMUM_BASE_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (MINIMUM_BASE_STUB_HAS_DLL)
+# define MINIMUM_BASE_STUB_HAS_DLL 1
+#endif /* ! MINIMUM_BASE_STUB_HAS_DLL */
+
+#if defined (MINIMUM_BASE_STUB_HAS_DLL) && (MINIMUM_BASE_STUB_HAS_DLL == 1)
+# if defined (MINIMUM_BASE_STUB_BUILD_DLL)
+# define MINIMUM_BASE_STUB_Export ACE_Proper_Export_Flag
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* MINIMUM_BASE_STUB_BUILD_DLL */
+# define MINIMUM_BASE_STUB_Export ACE_Proper_Import_Flag
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* MINIMUM_BASE_STUB_BUILD_DLL */
+#else /* MINIMUM_BASE_STUB_HAS_DLL == 1 */
+# define MINIMUM_BASE_STUB_Export
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARATION(T)
+# define MINIMUM_BASE_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* MINIMUM_BASE_STUB_HAS_DLL == 1 */
+
+// Set MINIMUM_BASE_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (MINIMUM_BASE_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define MINIMUM_BASE_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define MINIMUM_BASE_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !MINIMUM_BASE_STUB_NTRACE */
+
+#if (MINIMUM_BASE_STUB_NTRACE == 1)
+# define MINIMUM_BASE_STUB_TRACE(X)
+#else /* (MINIMUM_BASE_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define MINIMUM_BASE_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (MINIMUM_BASE_STUB_NTRACE == 1) */
+
+#endif /* MINIMUM_BASE_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h
new file mode 100644
index 00000000000..52adebee2f5
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Minimum_Base/Minimum_Base_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl MINIMUM_BASE_SVNT
+// ------------------------------
+#ifndef MINIMUM_BASE_SVNT_EXPORT_H
+#define MINIMUM_BASE_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (MINIMUM_BASE_SVNT_HAS_DLL)
+# define MINIMUM_BASE_SVNT_HAS_DLL 1
+#endif /* ! MINIMUM_BASE_SVNT_HAS_DLL */
+
+#if defined (MINIMUM_BASE_SVNT_HAS_DLL) && (MINIMUM_BASE_SVNT_HAS_DLL == 1)
+# if defined (MINIMUM_BASE_SVNT_BUILD_DLL)
+# define MINIMUM_BASE_SVNT_Export ACE_Proper_Export_Flag
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* MINIMUM_BASE_SVNT_BUILD_DLL */
+# define MINIMUM_BASE_SVNT_Export ACE_Proper_Import_Flag
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* MINIMUM_BASE_SVNT_BUILD_DLL */
+#else /* MINIMUM_BASE_SVNT_HAS_DLL == 1 */
+# define MINIMUM_BASE_SVNT_Export
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARATION(T)
+# define MINIMUM_BASE_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* MINIMUM_BASE_SVNT_HAS_DLL == 1 */
+
+// Set MINIMUM_BASE_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (MINIMUM_BASE_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define MINIMUM_BASE_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define MINIMUM_BASE_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !MINIMUM_BASE_SVNT_NTRACE */
+
+#if (MINIMUM_BASE_SVNT_NTRACE == 1)
+# define MINIMUM_BASE_SVNT_TRACE(X)
+#else /* (MINIMUM_BASE_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define MINIMUM_BASE_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (MINIMUM_BASE_SVNT_NTRACE == 1) */
+
+#endif /* MINIMUM_BASE_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver.cidl b/modules/CIAO/tests/Minimum/Receiver/Receiver.cidl
new file mode 100644
index 00000000000..89ae29a86e2
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Receiver.idl"
+
+composition session Receiver_Impl
+{
+ home executor ReceiverHome_Exec
+ {
+ implements Minimum::ReceiverHome;
+ manages Receiver_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver.idl b/modules/CIAO/tests/Minimum/Receiver/Receiver.idl
new file mode 100644
index 00000000000..219baec17d0
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver.idl
@@ -0,0 +1,18 @@
+//$Id$:
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "../Minimum_Base/Minimum_Base.idl"
+
+module Minimum
+{
+ component Receiver
+ {
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+};
+#endif /*RECEIVER_IDL*/
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc b/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc
new file mode 100644
index 00000000000..268e8cca925
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver.mpc
@@ -0,0 +1,97 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Minimum_Base Receiver"
+
+project(Minimum_Base_Receiver_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_DnC_stub
+ sharedname = Minimum_Receiver_DnC_stub
+ idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \
+ -Wb,stub_export_include=Receiver_stub_export.h \
+ -Wb,skel_export_macro=RECEIVER_SVNT_Export \
+ -Wb,skel_export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+ libs += Minimum_Base_DnC_stub
+
+ IDL_Files {
+ Receiver.idl
+ }
+
+ Source_Files {
+ ReceiverC.cpp
+ }
+
+ Header_Files {
+ ReceiverC.h
+ }
+
+ Inline_Files {
+ ReceiverC.inl
+ }
+}
+
+project(Minimum_Base_Receiver_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_DnC_svnt \
+ Minimum_Base_Receiver_DnC_stub
+ sharedname = Minimum_Receiver_DnC_svnt
+ libs += Minimum_Receiver_DnC_stub \
+ Minimum_Base_DnC_stub \
+ Minimum_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_SVNT_Export \
+ -Wb,export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Receiver.cidl
+ }
+
+ IDL_Files {
+ ReceiverE.idl
+ }
+
+ Source_Files {
+ ReceiverEC.cpp
+ ReceiverS.cpp
+ Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ ReceiverEC.h
+ ReceiverS.h
+ Receiver_svnt.h
+ }
+
+ Inline_Files {
+ ReceiverEC.inl
+ ReceiverS.inl
+ }
+}
+
+
+project(Minimum_Base_Receiver_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_Receiver_DnC_svnt
+ sharedname = Minimum_Receiver_DnC_exec
+ libs += Minimum_Receiver_DnC_stub \
+ Minimum_Receiver_DnC_svnt \
+ Minimum_Base_DnC_stub \
+ Minimum_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \
+ -Wb,export_include=Receiver_exec_export.h
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Receiver_exec.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+}
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp
new file mode 100644
index 00000000000..3aca5735ae0
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.cpp
@@ -0,0 +1,161 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Receiver_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIDL_Receiver_Impl
+{
+ //==================================================================
+ // Component Executor Implementation Class: Receiver_exec_i
+ //==================================================================
+
+ Receiver_exec_i::Receiver_exec_i (void)
+ {
+ }
+
+ Receiver_exec_i::~Receiver_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ void
+ Receiver_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Receiver_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Receiver_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Receiver_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Receiver_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Receiver_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Receiver_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: ReceiverHome_exec_i
+ //==================================================================
+
+ ReceiverHome_exec_i::ReceiverHome_exec_i (void)
+ {
+ }
+
+ ReceiverHome_exec_i::~ReceiverHome_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ ReceiverHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Receiver_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ ReceiverHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h
new file mode 100644
index 00000000000..a90c6941de7
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec.h
@@ -0,0 +1,126 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_RECEIVER_EXEC_H
+#define CIAO_RECEIVER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Receiver_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Receiver_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Receiver_Impl
+{
+ class RECEIVER_EXEC_Export Receiver_exec_i
+ : public virtual Receiver_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Receiver_exec_i (void);
+ virtual ~Receiver_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Receiver_Context *context_;
+ };
+
+ class RECEIVER_EXEC_Export ReceiverHome_exec_i
+ : public virtual ReceiverHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ ReceiverHome_exec_i (void);
+ virtual ~ReceiverHome_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createReceiverHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_RECEIVER_EXEC_H */
+
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_exec_export.h b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec_export.h
new file mode 100644
index 00000000000..8ad3640d130
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_EXEC
+// ------------------------------
+#ifndef RECEIVER_EXEC_EXPORT_H
+#define RECEIVER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_EXEC_HAS_DLL)
+# define RECEIVER_EXEC_HAS_DLL 1
+#endif /* ! RECEIVER_EXEC_HAS_DLL */
+
+#if defined (RECEIVER_EXEC_HAS_DLL) && (RECEIVER_EXEC_HAS_DLL == 1)
+# if defined (RECEIVER_EXEC_BUILD_DLL)
+# define RECEIVER_EXEC_Export ACE_Proper_Export_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_EXEC_BUILD_DLL */
+# define RECEIVER_EXEC_Export ACE_Proper_Import_Flag
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_EXEC_BUILD_DLL */
+#else /* RECEIVER_EXEC_HAS_DLL == 1 */
+# define RECEIVER_EXEC_Export
+# define RECEIVER_EXEC_SINGLETON_DECLARATION(T)
+# define RECEIVER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_EXEC_HAS_DLL == 1 */
+
+// Set RECEIVER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_EXEC_NTRACE */
+
+#if (RECEIVER_EXEC_NTRACE == 1)
+# define RECEIVER_EXEC_TRACE(X)
+#else /* (RECEIVER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_EXEC_NTRACE == 1) */
+
+#endif /* RECEIVER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_stub_export.h b/modules/CIAO/tests/Minimum/Receiver/Receiver_stub_export.h
new file mode 100644
index 00000000000..c457802854f
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_STUB
+// ------------------------------
+#ifndef RECEIVER_STUB_EXPORT_H
+#define RECEIVER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_STUB_HAS_DLL)
+# define RECEIVER_STUB_HAS_DLL 1
+#endif /* ! RECEIVER_STUB_HAS_DLL */
+
+#if defined (RECEIVER_STUB_HAS_DLL) && (RECEIVER_STUB_HAS_DLL == 1)
+# if defined (RECEIVER_STUB_BUILD_DLL)
+# define RECEIVER_STUB_Export ACE_Proper_Export_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_STUB_BUILD_DLL */
+# define RECEIVER_STUB_Export ACE_Proper_Import_Flag
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_STUB_BUILD_DLL */
+#else /* RECEIVER_STUB_HAS_DLL == 1 */
+# define RECEIVER_STUB_Export
+# define RECEIVER_STUB_SINGLETON_DECLARATION(T)
+# define RECEIVER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_STUB_HAS_DLL == 1 */
+
+// Set RECEIVER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_STUB_NTRACE */
+
+#if (RECEIVER_STUB_NTRACE == 1)
+# define RECEIVER_STUB_TRACE(X)
+#else /* (RECEIVER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_STUB_NTRACE == 1) */
+
+#endif /* RECEIVER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Receiver/Receiver_svnt_export.h b/modules/CIAO/tests/Minimum/Receiver/Receiver_svnt_export.h
new file mode 100644
index 00000000000..1c9eca2556d
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Receiver/Receiver_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RECEIVER_SVNT
+// ------------------------------
+#ifndef RECEIVER_SVNT_EXPORT_H
+#define RECEIVER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RECEIVER_SVNT_HAS_DLL)
+# define RECEIVER_SVNT_HAS_DLL 1
+#endif /* ! RECEIVER_SVNT_HAS_DLL */
+
+#if defined (RECEIVER_SVNT_HAS_DLL) && (RECEIVER_SVNT_HAS_DLL == 1)
+# if defined (RECEIVER_SVNT_BUILD_DLL)
+# define RECEIVER_SVNT_Export ACE_Proper_Export_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RECEIVER_SVNT_BUILD_DLL */
+# define RECEIVER_SVNT_Export ACE_Proper_Import_Flag
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RECEIVER_SVNT_BUILD_DLL */
+#else /* RECEIVER_SVNT_HAS_DLL == 1 */
+# define RECEIVER_SVNT_Export
+# define RECEIVER_SVNT_SINGLETON_DECLARATION(T)
+# define RECEIVER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RECEIVER_SVNT_HAS_DLL == 1 */
+
+// Set RECEIVER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RECEIVER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RECEIVER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RECEIVER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RECEIVER_SVNT_NTRACE */
+
+#if (RECEIVER_SVNT_NTRACE == 1)
+# define RECEIVER_SVNT_TRACE(X)
+#else /* (RECEIVER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RECEIVER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RECEIVER_SVNT_NTRACE == 1) */
+
+#endif /* RECEIVER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender.cidl b/modules/CIAO/tests/Minimum/Sender/Sender.cidl
new file mode 100644
index 00000000000..cc21140818c
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender.cidl
@@ -0,0 +1,17 @@
+//$Id$
+
+#ifndef SENDER_CIDL
+#define SENDER_CIDL
+
+#include "Sender.idl"
+
+composition session Sender_Impl
+{
+ home executor SenderHome_Exec
+ {
+ implements Minimum::SenderHome;
+ manages Sender_Exec;
+ };
+};
+
+#endif /* SENDER_CIDL */
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender.idl b/modules/CIAO/tests/Minimum/Sender/Sender.idl
new file mode 100644
index 00000000000..74b9bf76f9a
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender.idl
@@ -0,0 +1,28 @@
+//$Id$
+
+#ifndef CIAO_SENDER_IDL
+#define CIAO_SENDER_IDL
+
+
+#include "../Minimum_Base/Minimum_Base.idl"
+
+module Minimum
+{
+ /* This is a Sender specific interface which will be used to get the
+ * process start.
+ */
+
+ interface trigger
+ {
+ void bar ();
+ };
+
+ component Sender supports trigger
+ {
+ };
+
+ home SenderHome manages Sender
+ {
+ };
+};
+#endif /*CIAO_SENDER_IDL*/
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender.mpc b/modules/CIAO/tests/Minimum/Sender/Sender.mpc
new file mode 100644
index 00000000000..a0acee45fbc
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender.mpc
@@ -0,0 +1,95 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Minimum_Base Sender"
+
+project(Minimum_Base_Sender_DnC_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_DnC_stub
+ sharedname = Minimum_Sender_DnC_stub
+ idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_STUB_BUILD_DLL
+ libs += Minimum_Base_DnC_stub
+
+ IDL_Files {
+ Sender.idl
+ }
+
+ Source_Files {
+ SenderC.cpp
+ }
+
+ Header_Files {
+ SenderC.h
+ }
+
+ Inline_Files {
+ SenderC.inl
+ }
+}
+
+project(Minimum_Base_Sender_DnC_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_DnC_svnt \
+ Minimum_Base_Sender_DnC_stub
+ sharedname = Minimum_Sender_DnC_svnt
+ libs += Minimum_Sender_DnC_stub \
+ Minimum_Base_DnC_stub \
+ Minimum_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=SENDER_SVNT_Export \
+ -Wb,export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Sender.cidl
+ }
+
+ IDL_Files {
+ SenderE.idl
+ }
+
+ Source_Files {
+ SenderEC.cpp
+ SenderS.cpp
+ Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SenderEC.h
+ SenderS.h
+ Sender_svnt.h
+ }
+
+ Inline_Files {
+ SenderEC.inl
+ SenderS.inl
+ }
+}
+
+project(Minimum_Base_Sender_DnC_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Minimum_Base_Sender_DnC_svnt
+ sharedname = Minimum_Sender_DnC_exec
+ libs += Minimum_Sender_DnC_stub \
+ Minimum_Sender_DnC_svnt \
+ Minimum_Base_DnC_stub \
+ Minimum_Base_DnC_svnt
+
+ idlflags += -Wb,export_macro=SENDER_EXEC_Export \
+ -Wb,export_include=Sender_exec_export.h
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec.cpp
+ }
+
+ Header_Files {
+ Sender_exec.h
+ }
+}
+
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp b/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp
new file mode 100644
index 00000000000..b8b1a1c516e
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender_exec.cpp
@@ -0,0 +1,168 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Sender_exec.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIDL_Sender_Impl
+{
+ //==================================================================
+ // Component Executor Implementation Class: Sender_exec_i
+ //==================================================================
+
+ Sender_exec_i::Sender_exec_i (void)
+ {
+ }
+
+ Sender_exec_i::~Sender_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ void
+ Sender_exec_i::bar ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ // Your code here.
+ }
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ void
+ Sender_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ =
+ Sender_Context::_narrow (
+ ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Sender_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Sender_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Sender_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Sender_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ void
+ Sender_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Your code here.
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: SenderHome_exec_i
+ //==================================================================
+
+ SenderHome_exec_i::SenderHome_exec_i (void)
+ {
+ }
+
+ SenderHome_exec_i::~SenderHome_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ ::Components::EnterpriseComponent_ptr
+ SenderHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ Sender_exec_i,
+ CORBA::NO_MEMORY ());
+
+ return retval;
+ }
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ SenderHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_exec.h b/modules/CIAO/tests/Minimum/Sender/Sender_exec.h
new file mode 100644
index 00000000000..179bb6453a8
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender_exec.h
@@ -0,0 +1,130 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_SENDER_EXEC_H
+#define CIAO_SENDER_EXEC_H
+
+#include /**/ "ace/pre.h"
+
+#include "Sender_svnt.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Sender_exec_export.h"
+#include "tao/LocalObject.h"
+
+namespace CIDL_Sender_Impl
+{
+ class SENDER_EXEC_Export Sender_exec_i
+ : public virtual Sender_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ Sender_exec_i (void);
+ virtual ~Sender_exec_i (void);
+
+ // Supported or inherited operations.
+
+ virtual void
+ bar ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Attribute operations.
+
+ // Port operations.
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ Sender_Context *context_;
+ };
+
+ class SENDER_EXEC_Export SenderHome_exec_i
+ : public virtual SenderHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ SenderHome_exec_i (void);
+ virtual ~SenderHome_exec_i (void);
+
+ // Supported or inherited operations.
+
+ // Home operations.
+
+ // Factory and finder operations.
+
+ // Attribute operations.
+
+ // Implicit operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createSenderHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_SENDER_EXEC_H */
+
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_exec_export.h b/modules/CIAO/tests/Minimum/Sender/Sender_exec_export.h
new file mode 100644
index 00000000000..dbaa7ea15bc
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_EXEC
+// ------------------------------
+#ifndef SENDER_EXEC_EXPORT_H
+#define SENDER_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_EXEC_HAS_DLL)
+# define SENDER_EXEC_HAS_DLL 1
+#endif /* ! SENDER_EXEC_HAS_DLL */
+
+#if defined (SENDER_EXEC_HAS_DLL) && (SENDER_EXEC_HAS_DLL == 1)
+# if defined (SENDER_EXEC_BUILD_DLL)
+# define SENDER_EXEC_Export ACE_Proper_Export_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_EXEC_BUILD_DLL */
+# define SENDER_EXEC_Export ACE_Proper_Import_Flag
+# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_EXEC_BUILD_DLL */
+#else /* SENDER_EXEC_HAS_DLL == 1 */
+# define SENDER_EXEC_Export
+# define SENDER_EXEC_SINGLETON_DECLARATION(T)
+# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_EXEC_HAS_DLL == 1 */
+
+// Set SENDER_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_EXEC_NTRACE */
+
+#if (SENDER_EXEC_NTRACE == 1)
+# define SENDER_EXEC_TRACE(X)
+#else /* (SENDER_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_EXEC_NTRACE == 1) */
+
+#endif /* SENDER_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_stub_export.h b/modules/CIAO/tests/Minimum/Sender/Sender_stub_export.h
new file mode 100644
index 00000000000..28c5d3131d0
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_STUB
+// ------------------------------
+#ifndef SENDER_STUB_EXPORT_H
+#define SENDER_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_STUB_HAS_DLL)
+# define SENDER_STUB_HAS_DLL 1
+#endif /* ! SENDER_STUB_HAS_DLL */
+
+#if defined (SENDER_STUB_HAS_DLL) && (SENDER_STUB_HAS_DLL == 1)
+# if defined (SENDER_STUB_BUILD_DLL)
+# define SENDER_STUB_Export ACE_Proper_Export_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_STUB_BUILD_DLL */
+# define SENDER_STUB_Export ACE_Proper_Import_Flag
+# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_STUB_BUILD_DLL */
+#else /* SENDER_STUB_HAS_DLL == 1 */
+# define SENDER_STUB_Export
+# define SENDER_STUB_SINGLETON_DECLARATION(T)
+# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_STUB_HAS_DLL == 1 */
+
+// Set SENDER_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_STUB_NTRACE */
+
+#if (SENDER_STUB_NTRACE == 1)
+# define SENDER_STUB_TRACE(X)
+#else /* (SENDER_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_STUB_NTRACE == 1) */
+
+#endif /* SENDER_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/Minimum/Sender/Sender_svnt_export.h b/modules/CIAO/tests/Minimum/Sender/Sender_svnt_export.h
new file mode 100644
index 00000000000..53236a883f2
--- /dev/null
+++ b/modules/CIAO/tests/Minimum/Sender/Sender_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl SENDER_SVNT
+// ------------------------------
+#ifndef SENDER_SVNT_EXPORT_H
+#define SENDER_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (SENDER_SVNT_HAS_DLL)
+# define SENDER_SVNT_HAS_DLL 1
+#endif /* ! SENDER_SVNT_HAS_DLL */
+
+#if defined (SENDER_SVNT_HAS_DLL) && (SENDER_SVNT_HAS_DLL == 1)
+# if defined (SENDER_SVNT_BUILD_DLL)
+# define SENDER_SVNT_Export ACE_Proper_Export_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* SENDER_SVNT_BUILD_DLL */
+# define SENDER_SVNT_Export ACE_Proper_Import_Flag
+# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* SENDER_SVNT_BUILD_DLL */
+#else /* SENDER_SVNT_HAS_DLL == 1 */
+# define SENDER_SVNT_Export
+# define SENDER_SVNT_SINGLETON_DECLARATION(T)
+# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* SENDER_SVNT_HAS_DLL == 1 */
+
+// Set SENDER_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (SENDER_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define SENDER_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define SENDER_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !SENDER_SVNT_NTRACE */
+
+#if (SENDER_SVNT_NTRACE == 1)
+# define SENDER_SVNT_TRACE(X)
+#else /* (SENDER_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define SENDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (SENDER_SVNT_NTRACE == 1) */
+
+#endif /* SENDER_SVNT_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tests/tests.mwc b/modules/CIAO/tests/tests.mwc
new file mode 100644
index 00000000000..6479880bd23
--- /dev/null
+++ b/modules/CIAO/tests/tests.mwc
@@ -0,0 +1,9 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+ exclude {
+ RTCCM
+ }
+
+} \ No newline at end of file
diff --git a/modules/CIAO/tools/Config_Handlers/ADD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/ADD_Handler.cpp
new file mode 100644
index 00000000000..d844226c9ef
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ADD_Handler.cpp
@@ -0,0 +1,178 @@
+// $Id$
+#include "ADD_Handler.h"
+#include "cdp.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Property_Handler.h"
+#include "ace/UUID.h"
+
+ACE_RCSID (DAnCE,
+ ADD_Handler,
+ "$Id$")
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ IDREF_Base<CORBA::ULong> ADD_Handler::IDREF;
+
+ void
+ ADD_Handler::artifact_deployment_descrs (
+ const DeploymentPlan &src,
+ ::Deployment::ArtifactDeploymentDescriptions &dest)
+ {
+ CIAO_TRACE("ADD_Handler::atrifact_deployment_descrs");
+ DeploymentPlan::artifact_const_iterator aci_e =
+ src.end_artifact ();
+ dest.length (src.count_artifact ());
+ CORBA::ULong pos = 0;
+ for (DeploymentPlan::artifact_const_iterator aci_b =
+ src.begin_artifact ();
+ aci_e != aci_b;
+ ++aci_b)
+ {
+ ADD_Handler::artifact_deployment_descr ((*aci_b),
+ dest[pos],
+ pos);
+ pos++;
+ }
+ }
+
+ void
+ ADD_Handler::artifact_deployment_descr (
+ const ArtifactDeploymentDescription &src,
+ Deployment::ArtifactDeploymentDescription &dest,
+ CORBA::ULong pos)
+ {
+ CIAO_TRACE("ADD_Handler::atrifact_deployment_descr");
+ dest.name = src.name ().c_str ();
+
+
+ dest.node = src.node ().c_str ();
+
+ ArtifactDeploymentDescription::location_const_iterator end =
+ src.end_location ();
+
+ dest.location.length (src.count_location ());
+ CORBA::ULong len = 0;
+ for (ArtifactDeploymentDescription::location_const_iterator
+ start = src.begin_location ();
+ start != end;
+ ++start)
+ {
+ dest.location[len++] = start->c_str ();
+ }
+
+ ArtifactDeploymentDescription::source_const_iterator sce =
+ src.end_source ();
+ len = 0;
+ dest.source.length (src.count_source ());
+ for (ArtifactDeploymentDescription::source_const_iterator
+ scb = src.begin_source ();
+ scb != sce;
+ ++scb)
+ {
+ dest.source[len++] = scb->c_str ();
+ }
+
+ // @@TODO: See this loop is repeated
+ ArtifactDeploymentDescription::execParameter_const_iterator adce =
+ src.end_execParameter ();
+ len = 0;
+ dest.execParameter.length (src.count_execParameter ());
+ for (ArtifactDeploymentDescription::execParameter_const_iterator adcb =
+ src.begin_execParameter ();
+ adcb != adce;
+ ++adcb)
+ {
+ Property_Handler::handle_property ((*adcb),
+ dest.execParameter[len++]);
+ }
+
+ if (src.id_p ())
+ {
+ ACE_CString cstr (src.id ().c_str ());
+
+ ADD_Handler::IDREF.bind_ref (cstr,pos);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) Warning: ADD %s has no idref.\n",
+ src.name ().c_str ()));
+ }
+
+#if 0
+ // @@ MAJO: Don't know how to handle this.
+ if (src.deployRequirement_p ())
+ {
+ Req_Handler handler;
+ add.deployRequirement.length (
+ add.deployRequirement.length () + 1);
+ handler.get_Requirement (
+ add.deployRequirement[add.deployRequirement.length () - 1],
+ src.deployRequirement ());
+ }
+
+ if (src.deployedResource_p ())
+ {
+ RDD_Handler handler;
+ add.deployedResource.length (
+ add.deployedResource.length () + 1);
+ handler.get_ResourceDeploymentDescription (
+ add.deployedResource[add.deployedResource.length () - 1],
+ src.deployedResource ());
+ }
+#endif /* 0 */
+ }
+
+ ArtifactDeploymentDescription
+ ADD_Handler::artifact_deployment_descr (
+ const Deployment::ArtifactDeploymentDescription &src)
+ {
+ CIAO_TRACE("ADD_Handler::atrifact_deployment_descr - reverse");
+ //Get the name and node and store them in the add
+ XMLSchema::string< char > name ((src.name));
+ XMLSchema::string< char > node ((src.node));
+
+ ArtifactDeploymentDescription add (name,node);
+
+ //Get the location(s) and store it/them in the add
+ size_t total = src.location.length ();
+ for (size_t i = 0; i < total; ++i)
+ {
+ XMLSchema::string< char > curr ((src.location[i]));
+ add.add_location (curr);
+ }
+
+ //As above, for the source(s)
+ total = src.source.length ();
+ for (size_t j = 0; j < total; ++j)
+ {
+ XMLSchema::string< char > curr ((src.source[j]));
+ add.add_source (curr);
+ }
+
+ //As above for the execParameter(s)
+ total = src.execParameter.length ();
+ for (size_t k = 0; k < total; ++k)
+ {
+ add.add_execParameter (Property_Handler::get_property (src.execParameter[k]));
+ }
+
+ // Generate a UUID to use for the IDREF.
+ ACE_Utils::UUID uuid;
+ ACE_Utils::UUID_GENERATOR::instance ()->generateUUID (uuid);
+ ACE_CString add_id ("_");
+ add_id += *uuid.to_string ();
+
+ XMLSchema::ID< ACE_TCHAR > xml_id (add_id.c_str ());
+
+ // Bind the ref and set it in the IDD
+ ADD_Handler::IDREF.bind_next_available (add_id);
+
+ add.id (xml_id);
+
+ return add;
+ }
+ }
+ }
diff --git a/modules/CIAO/tools/Config_Handlers/ADD_Handler.h b/modules/CIAO/tools/Config_Handlers/ADD_Handler.h
new file mode 100644
index 00000000000..0db82b30fb2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ADD_Handler.h
@@ -0,0 +1,73 @@
+//==============================================================
+/**
+* @file ADD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_ADD_Handler_H
+#define CIAO_CONFIG_HANDLERS_ADD_Handler_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+#include "tao/Basic_Types.h"
+#include "IDREF_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace Deployment
+{
+struct ArtifactDeploymentDescription;
+class ArtifactDeploymentDescriptions;
+}
+
+
+namespace CIAO
+{
+
+namespace Config_Handlers
+{
+class DeploymentPlan;
+class ArtifactDeploymentDescription;
+
+/*
+* @class ADD_Handler
+*
+* @brief Handler class for <ArtifactDeploymentDescription> types.
+*
+* This class defines handler methods to map values from XSC
+* ArtifactDeploymentDescription objects, parsed from the
+* // @@ Jules, why Any type?
+* descriptor files, to the corresponding CORBA IDL Any type.
+*/
+class Config_Handlers_Export ADD_Handler
+{
+public:
+static void artifact_deployment_descrs (
+const DeploymentPlan &src,
+::Deployment::ArtifactDeploymentDescriptions &dest);
+
+static ArtifactDeploymentDescription
+artifact_deployment_descr (
+const Deployment::ArtifactDeploymentDescription &src);
+
+/// The IDREF Table associated with this class
+static IDREF_Base<CORBA::ULong> IDREF;
+
+private:
+static void artifact_deployment_descr (
+const ArtifactDeploymentDescription& desc,
+::Deployment::ArtifactDeploymentDescription &dest,
+CORBA::ULong l = 0);
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ADD_Handler_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Any_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Any_Handler.cpp
new file mode 100644
index 00000000000..535d5a88d8a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Any_Handler.cpp
@@ -0,0 +1,47 @@
+// $Id$
+
+#include /**/ "ace/pre.h"
+
+#include "Any_Handler.h"
+#include "DataType_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "tao/AnyTypeCode/Any.h"
+#include "ciao/CIAO_common.h"
+#include "DynAny_Handler/DynAny_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ Any_Handler::Any_Handler (void)
+ {
+ }
+
+ Any_Handler::~Any_Handler (void)
+ {
+ }
+
+ void
+ Any_Handler::extract_into_any (const Any& desc,
+ CORBA::Any& toconfig)
+
+ {
+ CIAO_TRACE("Any_Handler::extract_into_any");
+ DynamicAny::DynAny_var dyn = DYNANY_HANDLER->extract_into_dynany (desc.type (),
+ desc.value ());
+
+ toconfig = *dyn->to_any ();
+
+ dyn->destroy ();
+ }
+
+ Any Any_Handler::get_any (const ::CORBA::Any& src)
+ {
+ CIAO_TRACE("Any_Handler::extract_into_any - reverse");
+
+ return DYNANY_HANDLER->extract_from_dynany (src);
+ }
+ }
+}
+#include /**/ "ace/post.h"
diff --git a/modules/CIAO/tools/Config_Handlers/Any_Handler.h b/modules/CIAO/tools/Config_Handlers/Any_Handler.h
new file mode 100644
index 00000000000..fcd594375ee
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Any_Handler.h
@@ -0,0 +1,61 @@
+//==============================================================
+/**
+ * @file Any_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_ANY_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_ANY_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/Versioned_Namespace.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+namespace CORBA
+{
+ class Any;
+}
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class Any;
+
+ /*
+ * @class Any_Handler
+ *
+ * @brief Handler class for <ComponentInterfaceDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC Any objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL Any type.
+ *
+ */
+ class Config_Handlers_Common_Export Any_Handler
+ {
+ public:
+ Any_Handler (void);
+ virtual ~Any_Handler (void);
+
+ static void extract_into_any (const Any& desc,
+ ::CORBA::Any& toconfig);
+
+ static Any get_any (const CORBA::Any &src);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ANY_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/BasicSP.cdp b/modules/CIAO/tools/Config_Handlers/BasicSP.cdp
new file mode 100644
index 00000000000..dee3dc87fcf
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/BasicSP.cdp
@@ -0,0 +1,489 @@
+<Deployment:deploymentPlan
+xmlns:Deployment="http://www.omg.org/Deployment"
+xmlns:xmi="http://www.omg.org/XMI"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.omg.org/Deployment Modified_Deployment.xsd">
+
+<label>BasicSP-DeploymentPlan</label>
+<UUID><!-- @@ fill in --> </UUID>
+<!-- Exactly one realizes
+This realizes section may also not be right. -->
+<realizes>
+<label>BasicSP-realizes-cid</label>
+<UUID>c0965470-7b83-11d9-9669-0800200c9a66</UUID>
+<specificType><!-- @@ What does here? --></specificType>
+<supportedType>IDL:BasicSP/BMClosedED:1.0</supportedType>
+<supportedType>IDL:BasicSP/BMDevice:1.0</supportedType>
+<supportedType>IDL:BasicSP/BMDisplay:1.0</supportedType>
+<supportedType>IDL:BasicSP/EC:1.0</supportedType>
+<!--
+<idlFile></idlFile>
+<configProperty></configProperty>
+-->
+
+<port>
+<name>in_avail</name>
+<specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+<supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+<provider>false</provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>EventConsumer</kind>
+</port>
+
+<port>
+<name>out_avail</name>
+<specificType>IDL:BasicSP/DataAvailable:1.0</specificType>
+<supportedType>IDL:BasicSP/DataAvailable:1.0</supportedType>
+<provider>true</provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>EventPublisher</kind>
+</port>
+
+<port>
+<name>dataout</name>
+<specificType>IDL:BasicSP/ReadData:1.0</specificType>
+<supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+<provider>true</provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>Facet</kind>
+</port>
+
+<port>
+<name>datain</name>
+<specificType>IDL:BasicSP/ReadData:1.0</specificType>
+<supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+<provider>true</provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>SimplexReceptacle</kind>
+</port>
+
+<port>
+<name>data_read</name>
+<specificType>IDL:BasicSP/ReadData:1.0</specificType>
+<supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+<provider>false></provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>EventPublisher</kind>
+</port>
+
+<port>
+<name>timeout</name>
+<specificType>IDL:BasicSP/TimeOut:1.0</specificType>
+<supportedType>IDL:BasicSP/TimeOut:1.0</supportedType>
+<provider>false></provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>EventConsumer</kind>
+</port>
+
+<port>
+<name>comp_data</name>
+<specificType>IDL:BasicSP/ReadData:1.0</specificType>
+<supportedType>IDL:BasicSP/ReadData:1.0</supportedType>
+<provider>false</provider>
+<exclusiveProvider>false</exclusiveProvider>
+<exclusiveUser>false</exclusiveUser>
+<optional>false</optional>
+<kind>SimplexReceptacle</kind>
+</port>
+
+<!--
+<property></property>
+<infoProperty></infoProperty>
+-->
+</realizes>
+
+<implementation id="BasicSP-BMClosedED-mdd">
+<name>BasicSP-BMClosedED-mdd</name>
+<source><!-- @@ Don't know what goes here --></source>
+<artifact>BasicSP-BMClosedED_DnC_svnt</artifact>
+<artifact>BasicSP-BMClosedED_DnC_stub</artifact>
+<artifact>BasicSP-BMClosedED_DnC_exec</artifact>
+<!--
+<execParameter></execParameter>
+<deployRequirement></deployRequirement>
+-->
+</implementation>
+
+<implementation id="BasicSP-BMDevice-mdd">
+<name>BasicSP-BMDevice-mdd</name>
+<source><!-- @@ Don't know what goes here --></source>
+
+<artifact>BasicSP-BMDevice_DnC_exec</artifact>
+<artifact>BasicSP-BMDevice_DnC_stub</artifact>
+<artifact>BasicSP-BMDevice_DnC_svnt</artifact>
+<!--
+<execParameter></execParameter>
+<deployRequirement></deployRequirement>
+-->
+</implementation>
+
+<implementation id="BasicSP-BMDisplay-mdd">
+<name>BasicSP-BMDisplay-mdd</name>
+<source><!-- @@ Don't know what goes here --></source>
+<artifact>BasicSP-BMDisplay_DnC_exec</artifact>
+<artifact>BasicSP-BMDisplay_DnC_svnt</artifact>
+<artifact>BasicSP-BMDisplay_DnC_stub</artifact>
+
+<!--
+<execParameter></execParameter>
+<deployRequirement></deployRequirement>
+-->
+</implementation>
+
+<implementation id="BasicSP-EC-mdd">
+<name>BasicSP-EC-mdd</name>
+<source><!-- @@ Don't know what goes here --></source>
+
+<artifact>BasicSP-EC_DnC_stub</artifact>
+<artifact>BasicSP-EC_DnC_svnt</artifact>
+<artifact>BasicSP-EC_DnC_exec</artifact>
+
+<!--
+<execParameter></execParameter>
+<deployRequirement></deployRequirement>
+-->
+</implementation>
+
+<instance id="BasicSP-BMClosedED-idd">
+<name>BasicSP-BMClosedED-idd</name>
+<node>BMDisplay</node>
+<source><!-- @@ What goes here --></source>
+<implementation>BasicSP-BMClosedED-mdd</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>BMClosedED.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="BasicSP-BMDevice-idd">
+<name>BasicSP-BMDevice-idd</name>
+<node>BMDisplay</node>
+<source><!-- @@ What goes here --></source>
+<implementation>BasicSP-BMDevice-mdd</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>BMDevice.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="BasicSP-BMDisplay-idd">
+<name>BasicSP-BMDisplay-idd</name>
+<node>BMDisplay</node>
+<source><!-- @@ What goes here --></source>
+<implementation>BasicSP-BMDisplay-mdd</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>BMDisplay.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="BasicSP-EC-idd">
+<name>BasicSP-EC-idd</name>
+<node>EC</node>
+<source><!-- @@ What goes here --></source>
+<implementation>BasicSP-EC-mdd</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>EC.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<connection>
+<name>datain_data_read</name>
+<internalEndpoint>
+<portName>data_read</portName>
+<kind>Facet</kind>
+<instance>BasicSP-BMDevice-idd</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>datain</portName>
+<kind>SimplexReceptacle</kind>
+<instance>BasicSP-BMClosedED-idd</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>comp_data_dataout</name>
+<internalEndpoint>
+<portName>dataout</portName>
+<kind>Facet</kind>
+<instance>BasicSP-BMClosedED-idd</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>comp_data</portName>
+<kind>SimplexReceptacle</kind>
+<instance>BasicSP-BMDisplay-idd</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>timeout_timeout</name>
+<internalEndpoint>
+<portName>timeout</portName>
+<kind>EventPublisher</kind>
+<instance>BasicSP-EC-idd</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>timeout</portName>
+<kind>EventConsumer</kind>
+<instance>BasicSP-BMDevice-idd</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>in_avail_data_available</name>
+<internalEndpoint>
+<portName>data_available</portName>
+<kind>EventPublisher</kind>
+<instance>BasicSP-BMDevice-idd</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>in_avail</portName>
+<kind>EventConsumer</kind>
+<instance>BasicSP-BMClosedED-idd</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>data_ready_out_avail</name>
+<internalEndpoint>
+<portName>out_avail</portName>
+<kind>EventPublisher</kind>
+<instance>BasicSP-BMClosedED-idd</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>data_ready</portName>
+<kind>EventConsumer</kind>
+<instance>BasicSP-BMDisplay-idd</instance>
+</internalEndpoint>
+</connection>
+
+<artifact id="BasicSP-BMClosedED_DnC_exec">
+<name>BMClosedED_DnC_exec</name>
+<source><!-- @@ Not sure about this--></source>
+<node><!-- blank --></node>
+<location>BMClosedED_DnC_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMClosedEDHome_Impl</string>
+</value>
+</value>
+</execParameter>
+
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMClosedED_DnC_svnt">
+<name>BMClosedED_DnC_svnt</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMClosedED_DnC_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMClosedEDHome_Servant</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMClosedED_DnC_stub">
+<name>BMClosedED_DnC_stub</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMClosedED_DnC_stub</location>
+
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDevice_DnC_exec">
+<name>BMDevice_DnC_exec</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDevice_DnC_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMDeviceHome_Impl</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDevice_DnC_stub">
+<name>BMDevice_DnC_stub</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDevice_DnC_stub</location>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDevice_DnC_svnt">
+<name>BMDevice_DnC_svnt</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDevice_DnC_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMDeviceHome_Servant</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDisplay_DnC_exec">
+<name>BMDisplay_DnC_exec</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDisplay_DnC_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMDisplayHome_Impl</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDisplay_DnC_svnt">
+<name>BMDisplay_DnC_svnt</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDisplay_DnC_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createBMDisplayHome_Servant</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-BMDisplay_DnC_stub">
+<name>BMDisplay_DnC_stub</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>BMDisplay_DnC_stub</location>
+
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-EC_DnC_stub">
+<name>EC_DnC_stub</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>EC_DnC_stub</location>
+
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-EC_DnC_svnt">
+<name>EC_DnC_svnt</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>EC_DnC_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createECHome_Servant</string>
+</value>
+</value>
+</execParameter>
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+
+<artifact id="BasicSP-EC_DnC_exec">
+<name>EC_DnC_exec</name>
+<source><!-- @@ Not sure --></source>
+<node><!-- blank --></node>
+<location>EC_DnC_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>createECHome_Impl</string>
+</value>
+</value>
+</execParameter>
+
+<!-- @@ This has dependancies that need to be specified, how? -->
+</artifact>
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.cpp b/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.cpp
new file mode 100644
index 00000000000..25191d1daaf
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.cpp
@@ -0,0 +1,14086 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "Basic_Deployment_Data.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // TCKind
+ //
+
+ TCKind::Value TCKind::
+ integral () const
+ {
+ return v_;
+ }
+
+ bool
+ operator== (::CIAO::Config_Handlers::TCKind const& a, ::CIAO::Config_Handlers::TCKind const& b)
+ {
+ return a.v_ == b.v_;
+ }
+
+ bool
+ operator!= (::CIAO::Config_Handlers::TCKind const& a, ::CIAO::Config_Handlers::TCKind const& b)
+ {
+ return a.v_ != b.v_;
+ }
+
+ TCKind::
+ TCKind (TCKind::Value v)
+ : v_ (v)
+ {
+ }
+
+ // DataType
+ //
+
+ DataType::
+ DataType (::CIAO::Config_Handlers::TCKind const& kind__)
+ :
+ ::XSCRT::Type (),
+ kind_ (new ::CIAO::Config_Handlers::TCKind (kind__)),
+ regulator__ ()
+ {
+ kind_->container (this);
+ }
+
+ DataType::
+ DataType (::CIAO::Config_Handlers::DataType const& s)
+ :
+ ::XSCRT::Type (),
+ kind_ (new ::CIAO::Config_Handlers::TCKind (*s.kind_)),
+ enum__ (s.enum__.get () ? new ::CIAO::Config_Handlers::EnumType (*s.enum__) : 0),
+ regulator__ ()
+ {
+ kind_->container (this);
+ if (enum__.get ()) enum__->container (this);
+ }
+
+ ::CIAO::Config_Handlers::DataType& DataType::
+ operator= (::CIAO::Config_Handlers::DataType const& s)
+ {
+ kind (s.kind ());
+
+ if (s.enum__.get ()) enum_ (*(s.enum__));
+ else enum__ = ::std::auto_ptr< ::CIAO::Config_Handlers::EnumType > (0);
+
+ return *this;
+ }
+
+
+ // DataType
+ //
+ ::CIAO::Config_Handlers::TCKind const& DataType::
+ kind () const
+ {
+ return *kind_;
+ }
+
+ void DataType::
+ kind (::CIAO::Config_Handlers::TCKind const& e)
+ {
+ *kind_ = e;
+ }
+
+ // DataType
+ //
+ bool DataType::
+ enum_p () const
+ {
+ return enum__.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::EnumType const& DataType::
+ enum_ () const
+ {
+ return *enum__;
+ }
+
+ void DataType::
+ enum_ (::CIAO::Config_Handlers::EnumType const& e)
+ {
+ if (enum__.get ())
+ {
+ *enum__ = e;
+ }
+
+ else
+ {
+ enum__ = ::std::auto_ptr< ::CIAO::Config_Handlers::EnumType > (new ::CIAO::Config_Handlers::EnumType (e));
+ enum__->container (this);
+ }
+ }
+
+
+ // DataValue
+ //
+
+ DataValue::
+ DataValue ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ DataValue::
+ DataValue (::CIAO::Config_Handlers::DataValue const& s)
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ {
+ for (short_const_iterator i (s.short_.begin ());i != s.short_.end ();++i) add_short (*i);
+ }
+
+ {
+ for (long_const_iterator i (s.long_.begin ());i != s.long_.end ();++i) add_long (*i);
+ }
+
+ {
+ for (ushort_const_iterator i (s.ushort_.begin ());i != s.ushort_.end ();++i) add_ushort (*i);
+ }
+
+ {
+ for (ulong_const_iterator i (s.ulong_.begin ());i != s.ulong_.end ();++i) add_ulong (*i);
+ }
+
+ {
+ for (float_const_iterator i (s.float_.begin ());i != s.float_.end ();++i) add_float (*i);
+ }
+
+ {
+ for (double_const_iterator i (s.double_.begin ());i != s.double_.end ();++i) add_double (*i);
+ }
+
+ {
+ for (boolean_const_iterator i (s.boolean_.begin ());i != s.boolean_.end ();++i) add_boolean (*i);
+ }
+
+ {
+ for (octet_const_iterator i (s.octet_.begin ());i != s.octet_.end ();++i) add_octet (*i);
+ }
+
+ {
+ for (enum_const_iterator i (s.enum_.begin ());i != s.enum_.end ();++i) add_enum (*i);
+ }
+
+ {
+ for (string_const_iterator i (s.string_.begin ());i != s.string_.end ();++i) add_string (*i);
+ }
+
+ {
+ for (longlong_const_iterator i (s.longlong_.begin ());i != s.longlong_.end ();++i) add_longlong (*i);
+ }
+
+ {
+ for (ulonglong_const_iterator i (s.ulonglong_.begin ());i != s.ulonglong_.end ();++i) add_ulonglong (*i);
+ }
+
+ {
+ for (longdouble_const_iterator i (s.longdouble_.begin ());i != s.longdouble_.end ();++i) add_longdouble (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::DataValue& DataValue::
+ operator= (::CIAO::Config_Handlers::DataValue const& s)
+ {
+ short_.clear ();
+ {
+ for (short_const_iterator i (s.short_.begin ());i != s.short_.end ();++i) add_short (*i);
+ }
+
+ long_.clear ();
+ {
+ for (long_const_iterator i (s.long_.begin ());i != s.long_.end ();++i) add_long (*i);
+ }
+
+ ushort_.clear ();
+ {
+ for (ushort_const_iterator i (s.ushort_.begin ());i != s.ushort_.end ();++i) add_ushort (*i);
+ }
+
+ ulong_.clear ();
+ {
+ for (ulong_const_iterator i (s.ulong_.begin ());i != s.ulong_.end ();++i) add_ulong (*i);
+ }
+
+ float_.clear ();
+ {
+ for (float_const_iterator i (s.float_.begin ());i != s.float_.end ();++i) add_float (*i);
+ }
+
+ double_.clear ();
+ {
+ for (double_const_iterator i (s.double_.begin ());i != s.double_.end ();++i) add_double (*i);
+ }
+
+ boolean_.clear ();
+ {
+ for (boolean_const_iterator i (s.boolean_.begin ());i != s.boolean_.end ();++i) add_boolean (*i);
+ }
+
+ octet_.clear ();
+ {
+ for (octet_const_iterator i (s.octet_.begin ());i != s.octet_.end ();++i) add_octet (*i);
+ }
+
+ enum_.clear ();
+ {
+ for (enum_const_iterator i (s.enum_.begin ());i != s.enum_.end ();++i) add_enum (*i);
+ }
+
+ string_.clear ();
+ {
+ for (string_const_iterator i (s.string_.begin ());i != s.string_.end ();++i) add_string (*i);
+ }
+
+ longlong_.clear ();
+ {
+ for (longlong_const_iterator i (s.longlong_.begin ());i != s.longlong_.end ();++i) add_longlong (*i);
+ }
+
+ ulonglong_.clear ();
+ {
+ for (ulonglong_const_iterator i (s.ulonglong_.begin ());i != s.ulonglong_.end ();++i) add_ulonglong (*i);
+ }
+
+ longdouble_.clear ();
+ {
+ for (longdouble_const_iterator i (s.longdouble_.begin ());i != s.longdouble_.end ();++i) add_longdouble (*i);
+ }
+
+ return *this;
+ }
+
+
+ // DataValue
+ //
+ DataValue::short_iterator DataValue::
+ begin_short ()
+ {
+ return short_.begin ();
+ }
+
+ DataValue::short_iterator DataValue::
+ end_short ()
+ {
+ return short_.end ();
+ }
+
+ DataValue::short_const_iterator DataValue::
+ begin_short () const
+ {
+ return short_.begin ();
+ }
+
+ DataValue::short_const_iterator DataValue::
+ end_short () const
+ {
+ return short_.end ();
+ }
+
+ void DataValue::
+ add_short (::XMLSchema::short_ const& e)
+ {
+ short_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_short(void) const
+ {
+ return short_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::long_iterator DataValue::
+ begin_long ()
+ {
+ return long_.begin ();
+ }
+
+ DataValue::long_iterator DataValue::
+ end_long ()
+ {
+ return long_.end ();
+ }
+
+ DataValue::long_const_iterator DataValue::
+ begin_long () const
+ {
+ return long_.begin ();
+ }
+
+ DataValue::long_const_iterator DataValue::
+ end_long () const
+ {
+ return long_.end ();
+ }
+
+ void DataValue::
+ add_long (::XMLSchema::int_ const& e)
+ {
+ long_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_long(void) const
+ {
+ return long_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::ushort_iterator DataValue::
+ begin_ushort ()
+ {
+ return ushort_.begin ();
+ }
+
+ DataValue::ushort_iterator DataValue::
+ end_ushort ()
+ {
+ return ushort_.end ();
+ }
+
+ DataValue::ushort_const_iterator DataValue::
+ begin_ushort () const
+ {
+ return ushort_.begin ();
+ }
+
+ DataValue::ushort_const_iterator DataValue::
+ end_ushort () const
+ {
+ return ushort_.end ();
+ }
+
+ void DataValue::
+ add_ushort (::XMLSchema::unsignedShort const& e)
+ {
+ ushort_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_ushort(void) const
+ {
+ return ushort_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::ulong_iterator DataValue::
+ begin_ulong ()
+ {
+ return ulong_.begin ();
+ }
+
+ DataValue::ulong_iterator DataValue::
+ end_ulong ()
+ {
+ return ulong_.end ();
+ }
+
+ DataValue::ulong_const_iterator DataValue::
+ begin_ulong () const
+ {
+ return ulong_.begin ();
+ }
+
+ DataValue::ulong_const_iterator DataValue::
+ end_ulong () const
+ {
+ return ulong_.end ();
+ }
+
+ void DataValue::
+ add_ulong (::XMLSchema::unsignedInt const& e)
+ {
+ ulong_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_ulong(void) const
+ {
+ return ulong_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::float_iterator DataValue::
+ begin_float ()
+ {
+ return float_.begin ();
+ }
+
+ DataValue::float_iterator DataValue::
+ end_float ()
+ {
+ return float_.end ();
+ }
+
+ DataValue::float_const_iterator DataValue::
+ begin_float () const
+ {
+ return float_.begin ();
+ }
+
+ DataValue::float_const_iterator DataValue::
+ end_float () const
+ {
+ return float_.end ();
+ }
+
+ void DataValue::
+ add_float (::XMLSchema::float_ const& e)
+ {
+ float_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_float(void) const
+ {
+ return float_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::double_iterator DataValue::
+ begin_double ()
+ {
+ return double_.begin ();
+ }
+
+ DataValue::double_iterator DataValue::
+ end_double ()
+ {
+ return double_.end ();
+ }
+
+ DataValue::double_const_iterator DataValue::
+ begin_double () const
+ {
+ return double_.begin ();
+ }
+
+ DataValue::double_const_iterator DataValue::
+ end_double () const
+ {
+ return double_.end ();
+ }
+
+ void DataValue::
+ add_double (::XMLSchema::double_ const& e)
+ {
+ double_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_double(void) const
+ {
+ return double_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::boolean_iterator DataValue::
+ begin_boolean ()
+ {
+ return boolean_.begin ();
+ }
+
+ DataValue::boolean_iterator DataValue::
+ end_boolean ()
+ {
+ return boolean_.end ();
+ }
+
+ DataValue::boolean_const_iterator DataValue::
+ begin_boolean () const
+ {
+ return boolean_.begin ();
+ }
+
+ DataValue::boolean_const_iterator DataValue::
+ end_boolean () const
+ {
+ return boolean_.end ();
+ }
+
+ void DataValue::
+ add_boolean (::XMLSchema::boolean const& e)
+ {
+ boolean_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_boolean(void) const
+ {
+ return boolean_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::octet_iterator DataValue::
+ begin_octet ()
+ {
+ return octet_.begin ();
+ }
+
+ DataValue::octet_iterator DataValue::
+ end_octet ()
+ {
+ return octet_.end ();
+ }
+
+ DataValue::octet_const_iterator DataValue::
+ begin_octet () const
+ {
+ return octet_.begin ();
+ }
+
+ DataValue::octet_const_iterator DataValue::
+ end_octet () const
+ {
+ return octet_.end ();
+ }
+
+ void DataValue::
+ add_octet (::XMLSchema::unsignedByte const& e)
+ {
+ octet_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_octet(void) const
+ {
+ return octet_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::enum_iterator DataValue::
+ begin_enum ()
+ {
+ return enum_.begin ();
+ }
+
+ DataValue::enum_iterator DataValue::
+ end_enum ()
+ {
+ return enum_.end ();
+ }
+
+ DataValue::enum_const_iterator DataValue::
+ begin_enum () const
+ {
+ return enum_.begin ();
+ }
+
+ DataValue::enum_const_iterator DataValue::
+ end_enum () const
+ {
+ return enum_.end ();
+ }
+
+ void DataValue::
+ add_enum (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ enum_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_enum(void) const
+ {
+ return enum_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::string_iterator DataValue::
+ begin_string ()
+ {
+ return string_.begin ();
+ }
+
+ DataValue::string_iterator DataValue::
+ end_string ()
+ {
+ return string_.end ();
+ }
+
+ DataValue::string_const_iterator DataValue::
+ begin_string () const
+ {
+ return string_.begin ();
+ }
+
+ DataValue::string_const_iterator DataValue::
+ end_string () const
+ {
+ return string_.end ();
+ }
+
+ void DataValue::
+ add_string (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ string_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_string(void) const
+ {
+ return string_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::longlong_iterator DataValue::
+ begin_longlong ()
+ {
+ return longlong_.begin ();
+ }
+
+ DataValue::longlong_iterator DataValue::
+ end_longlong ()
+ {
+ return longlong_.end ();
+ }
+
+ DataValue::longlong_const_iterator DataValue::
+ begin_longlong () const
+ {
+ return longlong_.begin ();
+ }
+
+ DataValue::longlong_const_iterator DataValue::
+ end_longlong () const
+ {
+ return longlong_.end ();
+ }
+
+ void DataValue::
+ add_longlong (::XMLSchema::long_ const& e)
+ {
+ longlong_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_longlong(void) const
+ {
+ return longlong_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::ulonglong_iterator DataValue::
+ begin_ulonglong ()
+ {
+ return ulonglong_.begin ();
+ }
+
+ DataValue::ulonglong_iterator DataValue::
+ end_ulonglong ()
+ {
+ return ulonglong_.end ();
+ }
+
+ DataValue::ulonglong_const_iterator DataValue::
+ begin_ulonglong () const
+ {
+ return ulonglong_.begin ();
+ }
+
+ DataValue::ulonglong_const_iterator DataValue::
+ end_ulonglong () const
+ {
+ return ulonglong_.end ();
+ }
+
+ void DataValue::
+ add_ulonglong (::XMLSchema::unsignedLong const& e)
+ {
+ ulonglong_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_ulonglong(void) const
+ {
+ return ulonglong_.size ();
+ }
+
+ // DataValue
+ //
+ DataValue::longdouble_iterator DataValue::
+ begin_longdouble ()
+ {
+ return longdouble_.begin ();
+ }
+
+ DataValue::longdouble_iterator DataValue::
+ end_longdouble ()
+ {
+ return longdouble_.end ();
+ }
+
+ DataValue::longdouble_const_iterator DataValue::
+ begin_longdouble () const
+ {
+ return longdouble_.begin ();
+ }
+
+ DataValue::longdouble_const_iterator DataValue::
+ end_longdouble () const
+ {
+ return longdouble_.end ();
+ }
+
+ void DataValue::
+ add_longdouble (::XMLSchema::double_ const& e)
+ {
+ longdouble_.push_back (e);
+ }
+
+ size_t DataValue::
+ count_longdouble(void) const
+ {
+ return longdouble_.size ();
+ }
+
+
+ // EnumType
+ //
+
+ EnumType::
+ EnumType (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::string< ACE_TCHAR > const& typeId__)
+ :
+ ::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+typeId_ (new ::XMLSchema::string< ACE_TCHAR > (typeId__)),
+regulator__ ()
+{
+name_->container (this);
+typeId_->container (this);
+}
+
+EnumType::
+EnumType (::CIAO::Config_Handlers::EnumType const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+typeId_ (new ::XMLSchema::string< ACE_TCHAR > (*s.typeId_)),
+regulator__ ()
+{
+name_->container (this);
+typeId_->container (this);
+{
+for (member_const_iterator i (s.member_.begin ());i != s.member_.end ();++i) add_member (*i);
+}
+}
+
+::CIAO::Config_Handlers::EnumType& EnumType::
+operator= (::CIAO::Config_Handlers::EnumType const& s)
+{
+name (s.name ());
+
+typeId (s.typeId ());
+
+member_.clear ();
+{
+for (member_const_iterator i (s.member_.begin ());i != s.member_.end ();++i) add_member (*i);
+}
+
+return *this;
+}
+
+
+// EnumType
+//
+::XMLSchema::string< ACE_TCHAR > const& EnumType::
+name () const
+{
+return *name_;
+}
+
+void EnumType::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// EnumType
+//
+::XMLSchema::string< ACE_TCHAR > const& EnumType::
+typeId () const
+{
+return *typeId_;
+}
+
+void EnumType::
+typeId (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*typeId_ = e;
+}
+
+// EnumType
+//
+EnumType::member_iterator EnumType::
+begin_member ()
+{
+return member_.begin ();
+}
+
+EnumType::member_iterator EnumType::
+end_member ()
+{
+return member_.end ();
+}
+
+EnumType::member_const_iterator EnumType::
+begin_member () const
+{
+return member_.begin ();
+}
+
+EnumType::member_const_iterator EnumType::
+end_member () const
+{
+return member_.end ();
+}
+
+void EnumType::
+add_member (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+member_.push_back (e);
+}
+
+size_t EnumType::
+count_member(void) const
+{
+return member_.size ();
+}
+
+
+// Any
+//
+
+Any::
+Any (::CIAO::Config_Handlers::DataType const& type__,
+::CIAO::Config_Handlers::DataValue const& value__)
+:
+::XSCRT::Type (),
+type_ (new ::CIAO::Config_Handlers::DataType (type__)),
+value_ (new ::CIAO::Config_Handlers::DataValue (value__)),
+regulator__ ()
+{
+type_->container (this);
+value_->container (this);
+}
+
+Any::
+Any (::CIAO::Config_Handlers::Any const& s)
+:
+::XSCRT::Type (),
+type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)),
+value_ (new ::CIAO::Config_Handlers::DataValue (*s.value_)),
+regulator__ ()
+{
+type_->container (this);
+value_->container (this);
+}
+
+::CIAO::Config_Handlers::Any& Any::
+operator= (::CIAO::Config_Handlers::Any const& s)
+{
+type (s.type ());
+
+value (s.value ());
+
+return *this;
+}
+
+
+// Any
+//
+::CIAO::Config_Handlers::DataType const& Any::
+type () const
+{
+return *type_;
+}
+
+void Any::
+type (::CIAO::Config_Handlers::DataType const& e)
+{
+*type_ = e;
+}
+
+// Any
+//
+::CIAO::Config_Handlers::DataValue const& Any::
+value () const
+{
+return *value_;
+}
+
+void Any::
+value (::CIAO::Config_Handlers::DataValue const& e)
+{
+*value_ = e;
+}
+
+
+// Property
+//
+
+Property::
+Property (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::Any const& value__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+value_ (new ::CIAO::Config_Handlers::Any (value__)),
+regulator__ ()
+{
+name_->container (this);
+value_->container (this);
+}
+
+Property::
+Property (::CIAO::Config_Handlers::Property const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+value_ (new ::CIAO::Config_Handlers::Any (*s.value_)),
+regulator__ ()
+{
+name_->container (this);
+value_->container (this);
+}
+
+::CIAO::Config_Handlers::Property& Property::
+operator= (::CIAO::Config_Handlers::Property const& s)
+{
+name (s.name ());
+
+value (s.value ());
+
+return *this;
+}
+
+
+// Property
+//
+::XMLSchema::string< ACE_TCHAR > const& Property::
+name () const
+{
+return *name_;
+}
+
+void Property::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Property
+//
+::CIAO::Config_Handlers::Any const& Property::
+value () const
+{
+return *value_;
+}
+
+void Property::
+value (::CIAO::Config_Handlers::Any const& e)
+{
+*value_ = e;
+}
+
+
+// SatisfierPropertyKind
+//
+
+SatisfierPropertyKind::Value SatisfierPropertyKind::
+integral () const
+{
+return v_;
+}
+
+bool
+operator== (::CIAO::Config_Handlers::SatisfierPropertyKind const& a, ::CIAO::Config_Handlers::SatisfierPropertyKind const& b)
+{
+return a.v_ == b.v_;
+}
+
+bool
+operator!= (::CIAO::Config_Handlers::SatisfierPropertyKind const& a, ::CIAO::Config_Handlers::SatisfierPropertyKind const& b)
+{
+return a.v_ != b.v_;
+}
+
+SatisfierPropertyKind::
+SatisfierPropertyKind (SatisfierPropertyKind::Value v)
+: v_ (v)
+{
+}
+
+// SatisfierProperty
+//
+
+SatisfierProperty::
+SatisfierProperty (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::SatisfierPropertyKind const& kind__,
+::XMLSchema::boolean const& dynamic__,
+::CIAO::Config_Handlers::Any const& value__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+kind_ (new ::CIAO::Config_Handlers::SatisfierPropertyKind (kind__)),
+dynamic_ (new ::XMLSchema::boolean (dynamic__)),
+value_ (new ::CIAO::Config_Handlers::Any (value__)),
+regulator__ ()
+{
+name_->container (this);
+kind_->container (this);
+dynamic_->container (this);
+value_->container (this);
+}
+
+SatisfierProperty::
+SatisfierProperty (::CIAO::Config_Handlers::SatisfierProperty const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+kind_ (new ::CIAO::Config_Handlers::SatisfierPropertyKind (*s.kind_)),
+dynamic_ (new ::XMLSchema::boolean (*s.dynamic_)),
+value_ (new ::CIAO::Config_Handlers::Any (*s.value_)),
+regulator__ ()
+{
+name_->container (this);
+kind_->container (this);
+dynamic_->container (this);
+value_->container (this);
+}
+
+::CIAO::Config_Handlers::SatisfierProperty& SatisfierProperty::
+operator= (::CIAO::Config_Handlers::SatisfierProperty const& s)
+{
+name (s.name ());
+
+kind (s.kind ());
+
+dynamic (s.dynamic ());
+
+value (s.value ());
+
+return *this;
+}
+
+
+// SatisfierProperty
+//
+::XMLSchema::string< ACE_TCHAR > const& SatisfierProperty::
+name () const
+{
+return *name_;
+}
+
+void SatisfierProperty::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// SatisfierProperty
+//
+::CIAO::Config_Handlers::SatisfierPropertyKind const& SatisfierProperty::
+kind () const
+{
+return *kind_;
+}
+
+void SatisfierProperty::
+kind (::CIAO::Config_Handlers::SatisfierPropertyKind const& e)
+{
+*kind_ = e;
+}
+
+// SatisfierProperty
+//
+::XMLSchema::boolean const& SatisfierProperty::
+dynamic () const
+{
+return *dynamic_;
+}
+
+void SatisfierProperty::
+dynamic (::XMLSchema::boolean const& e)
+{
+*dynamic_ = e;
+}
+
+// SatisfierProperty
+//
+::CIAO::Config_Handlers::Any const& SatisfierProperty::
+value () const
+{
+return *value_;
+}
+
+void SatisfierProperty::
+value (::CIAO::Config_Handlers::Any const& e)
+{
+*value_ = e;
+}
+
+
+// Resource
+//
+
+Resource::
+Resource (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+Resource::
+Resource (::CIAO::Config_Handlers::Resource const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+regulator__ ()
+{
+name_->container (this);
+{
+for (resourceType_const_iterator i (s.resourceType_.begin ());i != s.resourceType_.end ();++i) add_resourceType (*i);
+}
+
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::Resource& Resource::
+operator= (::CIAO::Config_Handlers::Resource const& s)
+{
+name (s.name ());
+
+resourceType_.clear ();
+{
+for (resourceType_const_iterator i (s.resourceType_.begin ());i != s.resourceType_.end ();++i) add_resourceType (*i);
+}
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// Resource
+//
+::XMLSchema::string< ACE_TCHAR > const& Resource::
+name () const
+{
+return *name_;
+}
+
+void Resource::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Resource
+//
+Resource::resourceType_iterator Resource::
+begin_resourceType ()
+{
+return resourceType_.begin ();
+}
+
+Resource::resourceType_iterator Resource::
+end_resourceType ()
+{
+return resourceType_.end ();
+}
+
+Resource::resourceType_const_iterator Resource::
+begin_resourceType () const
+{
+return resourceType_.begin ();
+}
+
+Resource::resourceType_const_iterator Resource::
+end_resourceType () const
+{
+return resourceType_.end ();
+}
+
+void Resource::
+add_resourceType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+resourceType_.push_back (e);
+}
+
+size_t Resource::
+count_resourceType(void) const
+{
+return resourceType_.size ();
+}
+
+// Resource
+//
+Resource::property_iterator Resource::
+begin_property ()
+{
+return property_.begin ();
+}
+
+Resource::property_iterator Resource::
+end_property ()
+{
+return property_.end ();
+}
+
+Resource::property_const_iterator Resource::
+begin_property () const
+{
+return property_.begin ();
+}
+
+Resource::property_const_iterator Resource::
+end_property () const
+{
+return property_.end ();
+}
+
+void Resource::
+add_property (::CIAO::Config_Handlers::SatisfierProperty const& e)
+{
+property_.push_back (e);
+}
+
+size_t Resource::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// Requirement
+//
+
+Requirement::
+Requirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+resourceType_->container (this);
+name_->container (this);
+}
+
+Requirement::
+Requirement (::CIAO::Config_Handlers::Requirement const& s)
+:
+::XSCRT::Type (),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+regulator__ ()
+{
+resourceType_->container (this);
+name_->container (this);
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::Requirement& Requirement::
+operator= (::CIAO::Config_Handlers::Requirement const& s)
+{
+resourceType (s.resourceType ());
+
+name (s.name ());
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// Requirement
+//
+::XMLSchema::string< ACE_TCHAR > const& Requirement::
+resourceType () const
+{
+return *resourceType_;
+}
+
+void Requirement::
+resourceType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceType_ = e;
+}
+
+// Requirement
+//
+::XMLSchema::string< ACE_TCHAR > const& Requirement::
+name () const
+{
+return *name_;
+}
+
+void Requirement::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Requirement
+//
+Requirement::property_iterator Requirement::
+begin_property ()
+{
+return property_.begin ();
+}
+
+Requirement::property_iterator Requirement::
+end_property ()
+{
+return property_.end ();
+}
+
+Requirement::property_const_iterator Requirement::
+begin_property () const
+{
+return property_.begin ();
+}
+
+Requirement::property_const_iterator Requirement::
+end_property () const
+{
+return property_.end ();
+}
+
+void Requirement::
+add_property (::CIAO::Config_Handlers::Property const& e)
+{
+property_.push_back (e);
+}
+
+size_t Requirement::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// ResourceDeploymentDescription
+//
+
+ResourceDeploymentDescription::
+ResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__)
+:
+::XSCRT::Type (),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)),
+regulator__ ()
+{
+requirementName_->container (this);
+resourceName_->container (this);
+}
+
+ResourceDeploymentDescription::
+ResourceDeploymentDescription (::CIAO::Config_Handlers::ResourceDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)),
+regulator__ ()
+{
+requirementName_->container (this);
+resourceName_->container (this);
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::ResourceDeploymentDescription& ResourceDeploymentDescription::
+operator= (::CIAO::Config_Handlers::ResourceDeploymentDescription const& s)
+{
+requirementName (s.requirementName ());
+
+resourceName (s.resourceName ());
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// ResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ResourceDeploymentDescription::
+requirementName () const
+{
+return *requirementName_;
+}
+
+void ResourceDeploymentDescription::
+requirementName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*requirementName_ = e;
+}
+
+// ResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ResourceDeploymentDescription::
+resourceName () const
+{
+return *resourceName_;
+}
+
+void ResourceDeploymentDescription::
+resourceName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceName_ = e;
+}
+
+// ResourceDeploymentDescription
+//
+ResourceDeploymentDescription::property_iterator ResourceDeploymentDescription::
+begin_property ()
+{
+return property_.begin ();
+}
+
+ResourceDeploymentDescription::property_iterator ResourceDeploymentDescription::
+end_property ()
+{
+return property_.end ();
+}
+
+ResourceDeploymentDescription::property_const_iterator ResourceDeploymentDescription::
+begin_property () const
+{
+return property_.begin ();
+}
+
+ResourceDeploymentDescription::property_const_iterator ResourceDeploymentDescription::
+end_property () const
+{
+return property_.end ();
+}
+
+void ResourceDeploymentDescription::
+add_property (::CIAO::Config_Handlers::Property const& e)
+{
+property_.push_back (e);
+}
+
+size_t ResourceDeploymentDescription::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// ArtifactDeploymentDescription
+//
+
+ArtifactDeploymentDescription::
+ArtifactDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& node__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+node_ (new ::XMLSchema::string< ACE_TCHAR > (node__)),
+regulator__ ()
+{
+name_->container (this);
+node_->container (this);
+}
+
+ArtifactDeploymentDescription::
+ArtifactDeploymentDescription (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+node_ (new ::XMLSchema::string< ACE_TCHAR > (*s.node_)),
+id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+regulator__ ()
+{
+name_->container (this);
+{
+for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+}
+
+node_->container (this);
+{
+for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+}
+
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+{
+for (deployedResource_const_iterator i (s.deployedResource_.begin ());i != s.deployedResource_.end ();++i) add_deployedResource (*i);
+}
+
+if (id_.get ()) id_->container (this);
+}
+
+::CIAO::Config_Handlers::ArtifactDeploymentDescription& ArtifactDeploymentDescription::
+operator= (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& s)
+{
+name (s.name ());
+
+source_.clear ();
+{
+for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+}
+
+node (s.node ());
+
+location_.clear ();
+{
+for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+}
+
+execParameter_.clear ();
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+deployedResource_.clear ();
+{
+for (deployedResource_const_iterator i (s.deployedResource_.begin ());i != s.deployedResource_.end ();++i) add_deployedResource (*i);
+}
+
+if (s.id_.get ()) id (*(s.id_));
+else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// ArtifactDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ArtifactDeploymentDescription::
+name () const
+{
+return *name_;
+}
+
+void ArtifactDeploymentDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// ArtifactDeploymentDescription
+//
+ArtifactDeploymentDescription::source_iterator ArtifactDeploymentDescription::
+begin_source ()
+{
+return source_.begin ();
+}
+
+ArtifactDeploymentDescription::source_iterator ArtifactDeploymentDescription::
+end_source ()
+{
+return source_.end ();
+}
+
+ArtifactDeploymentDescription::source_const_iterator ArtifactDeploymentDescription::
+begin_source () const
+{
+return source_.begin ();
+}
+
+ArtifactDeploymentDescription::source_const_iterator ArtifactDeploymentDescription::
+end_source () const
+{
+return source_.end ();
+}
+
+void ArtifactDeploymentDescription::
+add_source (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+source_.push_back (e);
+}
+
+size_t ArtifactDeploymentDescription::
+count_source(void) const
+{
+return source_.size ();
+}
+
+// ArtifactDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ArtifactDeploymentDescription::
+node () const
+{
+return *node_;
+}
+
+void ArtifactDeploymentDescription::
+node (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*node_ = e;
+}
+
+// ArtifactDeploymentDescription
+//
+ArtifactDeploymentDescription::location_iterator ArtifactDeploymentDescription::
+begin_location ()
+{
+return location_.begin ();
+}
+
+ArtifactDeploymentDescription::location_iterator ArtifactDeploymentDescription::
+end_location ()
+{
+return location_.end ();
+}
+
+ArtifactDeploymentDescription::location_const_iterator ArtifactDeploymentDescription::
+begin_location () const
+{
+return location_.begin ();
+}
+
+ArtifactDeploymentDescription::location_const_iterator ArtifactDeploymentDescription::
+end_location () const
+{
+return location_.end ();
+}
+
+void ArtifactDeploymentDescription::
+add_location (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+location_.push_back (e);
+}
+
+size_t ArtifactDeploymentDescription::
+count_location(void) const
+{
+return location_.size ();
+}
+
+// ArtifactDeploymentDescription
+//
+ArtifactDeploymentDescription::execParameter_iterator ArtifactDeploymentDescription::
+begin_execParameter ()
+{
+return execParameter_.begin ();
+}
+
+ArtifactDeploymentDescription::execParameter_iterator ArtifactDeploymentDescription::
+end_execParameter ()
+{
+return execParameter_.end ();
+}
+
+ArtifactDeploymentDescription::execParameter_const_iterator ArtifactDeploymentDescription::
+begin_execParameter () const
+{
+return execParameter_.begin ();
+}
+
+ArtifactDeploymentDescription::execParameter_const_iterator ArtifactDeploymentDescription::
+end_execParameter () const
+{
+return execParameter_.end ();
+}
+
+void ArtifactDeploymentDescription::
+add_execParameter (::CIAO::Config_Handlers::Property const& e)
+{
+execParameter_.push_back (e);
+}
+
+size_t ArtifactDeploymentDescription::
+count_execParameter(void) const
+{
+return execParameter_.size ();
+}
+
+// ArtifactDeploymentDescription
+//
+ArtifactDeploymentDescription::deployRequirement_iterator ArtifactDeploymentDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+ArtifactDeploymentDescription::deployRequirement_iterator ArtifactDeploymentDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+ArtifactDeploymentDescription::deployRequirement_const_iterator ArtifactDeploymentDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+ArtifactDeploymentDescription::deployRequirement_const_iterator ArtifactDeploymentDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void ArtifactDeploymentDescription::
+add_deployRequirement (::CIAO::Config_Handlers::Requirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t ArtifactDeploymentDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// ArtifactDeploymentDescription
+//
+ArtifactDeploymentDescription::deployedResource_iterator ArtifactDeploymentDescription::
+begin_deployedResource ()
+{
+return deployedResource_.begin ();
+}
+
+ArtifactDeploymentDescription::deployedResource_iterator ArtifactDeploymentDescription::
+end_deployedResource ()
+{
+return deployedResource_.end ();
+}
+
+ArtifactDeploymentDescription::deployedResource_const_iterator ArtifactDeploymentDescription::
+begin_deployedResource () const
+{
+return deployedResource_.begin ();
+}
+
+ArtifactDeploymentDescription::deployedResource_const_iterator ArtifactDeploymentDescription::
+end_deployedResource () const
+{
+return deployedResource_.end ();
+}
+
+void ArtifactDeploymentDescription::
+add_deployedResource (::CIAO::Config_Handlers::ResourceDeploymentDescription const& e)
+{
+deployedResource_.push_back (e);
+}
+
+size_t ArtifactDeploymentDescription::
+count_deployedResource(void) const
+{
+return deployedResource_.size ();
+}
+
+// ArtifactDeploymentDescription
+//
+bool ArtifactDeploymentDescription::
+id_p () const
+{
+return id_.get () != 0;
+}
+
+::XMLSchema::ID< ACE_TCHAR > const& ArtifactDeploymentDescription::
+id () const
+{
+return *id_;
+}
+
+::XMLSchema::ID< ACE_TCHAR >& ArtifactDeploymentDescription::
+id ()
+{
+return *id_;
+}
+
+void ArtifactDeploymentDescription::
+id (::XMLSchema::ID< ACE_TCHAR > const& e)
+{
+if (id_.get ())
+{
+*id_ = e;
+}
+
+else
+{
+id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+id_->container (this);
+}
+}
+
+
+// MonolithicDeploymentDescription
+//
+
+MonolithicDeploymentDescription::
+MonolithicDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+MonolithicDeploymentDescription::
+MonolithicDeploymentDescription (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+regulator__ ()
+{
+name_->container (this);
+{
+for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+}
+
+{
+for (artifact_const_iterator i (s.artifact_.begin ());i != s.artifact_.end ();++i) add_artifact (*i);
+}
+
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+if (id_.get ()) id_->container (this);
+}
+
+::CIAO::Config_Handlers::MonolithicDeploymentDescription& MonolithicDeploymentDescription::
+operator= (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& s)
+{
+name (s.name ());
+
+source_.clear ();
+{
+for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+}
+
+artifact_.clear ();
+{
+for (artifact_const_iterator i (s.artifact_.begin ());i != s.artifact_.end ();++i) add_artifact (*i);
+}
+
+execParameter_.clear ();
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+if (s.id_.get ()) id (*(s.id_));
+else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// MonolithicDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& MonolithicDeploymentDescription::
+name () const
+{
+return *name_;
+}
+
+void MonolithicDeploymentDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// MonolithicDeploymentDescription
+//
+MonolithicDeploymentDescription::source_iterator MonolithicDeploymentDescription::
+begin_source ()
+{
+return source_.begin ();
+}
+
+MonolithicDeploymentDescription::source_iterator MonolithicDeploymentDescription::
+end_source ()
+{
+return source_.end ();
+}
+
+MonolithicDeploymentDescription::source_const_iterator MonolithicDeploymentDescription::
+begin_source () const
+{
+return source_.begin ();
+}
+
+MonolithicDeploymentDescription::source_const_iterator MonolithicDeploymentDescription::
+end_source () const
+{
+return source_.end ();
+}
+
+void MonolithicDeploymentDescription::
+add_source (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+source_.push_back (e);
+}
+
+size_t MonolithicDeploymentDescription::
+count_source(void) const
+{
+return source_.size ();
+}
+
+// MonolithicDeploymentDescription
+//
+MonolithicDeploymentDescription::artifact_iterator MonolithicDeploymentDescription::
+begin_artifact ()
+{
+return artifact_.begin ();
+}
+
+MonolithicDeploymentDescription::artifact_iterator MonolithicDeploymentDescription::
+end_artifact ()
+{
+return artifact_.end ();
+}
+
+MonolithicDeploymentDescription::artifact_const_iterator MonolithicDeploymentDescription::
+begin_artifact () const
+{
+return artifact_.begin ();
+}
+
+MonolithicDeploymentDescription::artifact_const_iterator MonolithicDeploymentDescription::
+end_artifact () const
+{
+return artifact_.end ();
+}
+
+void MonolithicDeploymentDescription::
+add_artifact (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+{
+artifact_.push_back (e);
+}
+
+size_t MonolithicDeploymentDescription::
+count_artifact(void) const
+{
+return artifact_.size ();
+}
+
+// MonolithicDeploymentDescription
+//
+MonolithicDeploymentDescription::execParameter_iterator MonolithicDeploymentDescription::
+begin_execParameter ()
+{
+return execParameter_.begin ();
+}
+
+MonolithicDeploymentDescription::execParameter_iterator MonolithicDeploymentDescription::
+end_execParameter ()
+{
+return execParameter_.end ();
+}
+
+MonolithicDeploymentDescription::execParameter_const_iterator MonolithicDeploymentDescription::
+begin_execParameter () const
+{
+return execParameter_.begin ();
+}
+
+MonolithicDeploymentDescription::execParameter_const_iterator MonolithicDeploymentDescription::
+end_execParameter () const
+{
+return execParameter_.end ();
+}
+
+void MonolithicDeploymentDescription::
+add_execParameter (::CIAO::Config_Handlers::Property const& e)
+{
+execParameter_.push_back (e);
+}
+
+size_t MonolithicDeploymentDescription::
+count_execParameter(void) const
+{
+return execParameter_.size ();
+}
+
+// MonolithicDeploymentDescription
+//
+MonolithicDeploymentDescription::deployRequirement_iterator MonolithicDeploymentDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+MonolithicDeploymentDescription::deployRequirement_iterator MonolithicDeploymentDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+MonolithicDeploymentDescription::deployRequirement_const_iterator MonolithicDeploymentDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+MonolithicDeploymentDescription::deployRequirement_const_iterator MonolithicDeploymentDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void MonolithicDeploymentDescription::
+add_deployRequirement (::CIAO::Config_Handlers::Requirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t MonolithicDeploymentDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// MonolithicDeploymentDescription
+//
+bool MonolithicDeploymentDescription::
+id_p () const
+{
+return id_.get () != 0;
+}
+
+::XMLSchema::ID< ACE_TCHAR > const& MonolithicDeploymentDescription::
+id () const
+{
+return *id_;
+}
+
+::XMLSchema::ID< ACE_TCHAR >& MonolithicDeploymentDescription::
+id ()
+{
+return *id_;
+}
+
+void MonolithicDeploymentDescription::
+id (::XMLSchema::ID< ACE_TCHAR > const& e)
+{
+if (id_.get ())
+{
+*id_ = e;
+}
+
+else
+{
+id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+id_->container (this);
+}
+}
+
+
+// ResourceUsageKind
+//
+
+ResourceUsageKind::Value ResourceUsageKind::
+integral () const
+{
+return v_;
+}
+
+bool
+operator== (::CIAO::Config_Handlers::ResourceUsageKind const& a, ::CIAO::Config_Handlers::ResourceUsageKind const& b)
+{
+return a.v_ == b.v_;
+}
+
+bool
+operator!= (::CIAO::Config_Handlers::ResourceUsageKind const& a, ::CIAO::Config_Handlers::ResourceUsageKind const& b)
+{
+return a.v_ != b.v_;
+}
+
+ResourceUsageKind::
+ResourceUsageKind (ResourceUsageKind::Value v)
+: v_ (v)
+{
+}
+
+// InstanceResourceDeploymentDescription
+//
+
+InstanceResourceDeploymentDescription::
+InstanceResourceDeploymentDescription (::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage__,
+::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__)
+:
+::XSCRT::Type (),
+resourceUsage_ (new ::CIAO::Config_Handlers::ResourceUsageKind (resourceUsage__)),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)),
+regulator__ ()
+{
+resourceUsage_->container (this);
+requirementName_->container (this);
+resourceName_->container (this);
+}
+
+InstanceResourceDeploymentDescription::
+InstanceResourceDeploymentDescription (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+resourceUsage_ (new ::CIAO::Config_Handlers::ResourceUsageKind (*s.resourceUsage_)),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)),
+regulator__ ()
+{
+resourceUsage_->container (this);
+requirementName_->container (this);
+resourceName_->container (this);
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription& InstanceResourceDeploymentDescription::
+operator= (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& s)
+{
+resourceUsage (s.resourceUsage ());
+
+requirementName (s.requirementName ());
+
+resourceName (s.resourceName ());
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// InstanceResourceDeploymentDescription
+//
+::CIAO::Config_Handlers::ResourceUsageKind const& InstanceResourceDeploymentDescription::
+resourceUsage () const
+{
+return *resourceUsage_;
+}
+
+void InstanceResourceDeploymentDescription::
+resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& e)
+{
+*resourceUsage_ = e;
+}
+
+// InstanceResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& InstanceResourceDeploymentDescription::
+requirementName () const
+{
+return *requirementName_;
+}
+
+void InstanceResourceDeploymentDescription::
+requirementName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*requirementName_ = e;
+}
+
+// InstanceResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& InstanceResourceDeploymentDescription::
+resourceName () const
+{
+return *resourceName_;
+}
+
+void InstanceResourceDeploymentDescription::
+resourceName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceName_ = e;
+}
+
+// InstanceResourceDeploymentDescription
+//
+InstanceResourceDeploymentDescription::property_iterator InstanceResourceDeploymentDescription::
+begin_property ()
+{
+return property_.begin ();
+}
+
+InstanceResourceDeploymentDescription::property_iterator InstanceResourceDeploymentDescription::
+end_property ()
+{
+return property_.end ();
+}
+
+InstanceResourceDeploymentDescription::property_const_iterator InstanceResourceDeploymentDescription::
+begin_property () const
+{
+return property_.begin ();
+}
+
+InstanceResourceDeploymentDescription::property_const_iterator InstanceResourceDeploymentDescription::
+end_property () const
+{
+return property_.end ();
+}
+
+void InstanceResourceDeploymentDescription::
+add_property (::CIAO::Config_Handlers::Property const& e)
+{
+property_.push_back (e);
+}
+
+size_t InstanceResourceDeploymentDescription::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// InstanceDeploymentDescription
+//
+
+InstanceDeploymentDescription::
+InstanceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& node__,
+::XMLSchema::string< ACE_TCHAR > const& source__,
+::XMLSchema::IDREF< ACE_TCHAR > const& implementation__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+node_ (new ::XMLSchema::string< ACE_TCHAR > (node__)),
+source_ (new ::XMLSchema::string< ACE_TCHAR > (source__)),
+implementation_ (new ::XMLSchema::IDREF< ACE_TCHAR > (implementation__)),
+regulator__ ()
+{
+name_->container (this);
+node_->container (this);
+source_->container (this);
+implementation_->container (this);
+}
+
+InstanceDeploymentDescription::
+InstanceDeploymentDescription (::CIAO::Config_Handlers::InstanceDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+node_ (new ::XMLSchema::string< ACE_TCHAR > (*s.node_)),
+source_ (new ::XMLSchema::string< ACE_TCHAR > (*s.source_)),
+implementation_ (new ::XMLSchema::IDREF< ACE_TCHAR > (*s.implementation_)),
+deployedResource_ (s.deployedResource_.get () ? new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (*s.deployedResource_) : 0),
+deployedSharedResource_ (s.deployedSharedResource_.get () ? new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (*s.deployedSharedResource_) : 0),
+id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+regulator__ ()
+{
+name_->container (this);
+node_->container (this);
+source_->container (this);
+implementation_->container (this);
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+if (deployedResource_.get ()) deployedResource_->container (this);
+if (deployedSharedResource_.get ()) deployedSharedResource_->container (this);
+if (id_.get ()) id_->container (this);
+}
+
+::CIAO::Config_Handlers::InstanceDeploymentDescription& InstanceDeploymentDescription::
+operator= (::CIAO::Config_Handlers::InstanceDeploymentDescription const& s)
+{
+name (s.name ());
+
+node (s.node ());
+
+source (s.source ());
+
+implementation (s.implementation ());
+
+configProperty_.clear ();
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+if (s.deployedResource_.get ()) deployedResource (*(s.deployedResource_));
+else deployedResource_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > (0);
+
+if (s.deployedSharedResource_.get ()) deployedSharedResource (*(s.deployedSharedResource_));
+else deployedSharedResource_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > (0);
+
+if (s.id_.get ()) id (*(s.id_));
+else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// InstanceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription::
+name () const
+{
+return *name_;
+}
+
+void InstanceDeploymentDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// InstanceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription::
+node () const
+{
+return *node_;
+}
+
+void InstanceDeploymentDescription::
+node (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*node_ = e;
+}
+
+// InstanceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& InstanceDeploymentDescription::
+source () const
+{
+return *source_;
+}
+
+void InstanceDeploymentDescription::
+source (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*source_ = e;
+}
+
+// InstanceDeploymentDescription
+//
+::XMLSchema::IDREF< ACE_TCHAR > const& InstanceDeploymentDescription::
+implementation () const
+{
+return *implementation_;
+}
+
+void InstanceDeploymentDescription::
+implementation (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+{
+*implementation_ = e;
+}
+
+// InstanceDeploymentDescription
+//
+InstanceDeploymentDescription::configProperty_iterator InstanceDeploymentDescription::
+begin_configProperty ()
+{
+return configProperty_.begin ();
+}
+
+InstanceDeploymentDescription::configProperty_iterator InstanceDeploymentDescription::
+end_configProperty ()
+{
+return configProperty_.end ();
+}
+
+InstanceDeploymentDescription::configProperty_const_iterator InstanceDeploymentDescription::
+begin_configProperty () const
+{
+return configProperty_.begin ();
+}
+
+InstanceDeploymentDescription::configProperty_const_iterator InstanceDeploymentDescription::
+end_configProperty () const
+{
+return configProperty_.end ();
+}
+
+void InstanceDeploymentDescription::
+add_configProperty (::CIAO::Config_Handlers::Property const& e)
+{
+configProperty_.push_back (e);
+}
+
+size_t InstanceDeploymentDescription::
+count_configProperty(void) const
+{
+return configProperty_.size ();
+}
+
+// InstanceDeploymentDescription
+//
+bool InstanceDeploymentDescription::
+deployedResource_p () const
+{
+return deployedResource_.get () != 0;
+}
+
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& InstanceDeploymentDescription::
+deployedResource () const
+{
+return *deployedResource_;
+}
+
+void InstanceDeploymentDescription::
+deployedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& e)
+{
+if (deployedResource_.get ())
+{
+*deployedResource_ = e;
+}
+
+else
+{
+deployedResource_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > (new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (e));
+deployedResource_->container (this);
+}
+}
+
+// InstanceDeploymentDescription
+//
+bool InstanceDeploymentDescription::
+deployedSharedResource_p () const
+{
+return deployedSharedResource_.get () != 0;
+}
+
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& InstanceDeploymentDescription::
+deployedSharedResource () const
+{
+return *deployedSharedResource_;
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& e)
+{
+if (deployedSharedResource_.get ())
+{
+*deployedSharedResource_ = e;
+}
+
+else
+{
+deployedSharedResource_ = ::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > (new ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription (e));
+deployedSharedResource_->container (this);
+}
+}
+
+// InstanceDeploymentDescription
+//
+bool InstanceDeploymentDescription::
+id_p () const
+{
+return id_.get () != 0;
+}
+
+::XMLSchema::ID< ACE_TCHAR > const& InstanceDeploymentDescription::
+id () const
+{
+return *id_;
+}
+
+::XMLSchema::ID< ACE_TCHAR >& InstanceDeploymentDescription::
+id ()
+{
+return *id_;
+}
+
+void InstanceDeploymentDescription::
+id (::XMLSchema::ID< ACE_TCHAR > const& e)
+{
+if (id_.get ())
+{
+*id_ = e;
+}
+
+else
+{
+id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+id_->container (this);
+}
+}
+
+
+// CCMComponentPortKind
+//
+
+CCMComponentPortKind::Value CCMComponentPortKind::
+integral () const
+{
+return v_;
+}
+
+bool
+operator== (::CIAO::Config_Handlers::CCMComponentPortKind const& a, ::CIAO::Config_Handlers::CCMComponentPortKind const& b)
+{
+return a.v_ == b.v_;
+}
+
+bool
+operator!= (::CIAO::Config_Handlers::CCMComponentPortKind const& a, ::CIAO::Config_Handlers::CCMComponentPortKind const& b)
+{
+return a.v_ != b.v_;
+}
+
+CCMComponentPortKind::
+CCMComponentPortKind (CCMComponentPortKind::Value v)
+: v_ (v)
+{
+}
+
+// ComponentPortDescription
+//
+
+ComponentPortDescription::
+ComponentPortDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::boolean const& provider__,
+::XMLSchema::boolean const& exclusiveProvider__,
+::XMLSchema::boolean const& exclusiveUser__,
+::XMLSchema::boolean const& optional__,
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+provider_ (new ::XMLSchema::boolean (provider__)),
+exclusiveProvider_ (new ::XMLSchema::boolean (exclusiveProvider__)),
+exclusiveUser_ (new ::XMLSchema::boolean (exclusiveUser__)),
+optional_ (new ::XMLSchema::boolean (optional__)),
+kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (kind__)),
+regulator__ ()
+{
+name_->container (this);
+provider_->container (this);
+exclusiveProvider_->container (this);
+exclusiveUser_->container (this);
+optional_->container (this);
+kind_->container (this);
+}
+
+ComponentPortDescription::
+ComponentPortDescription (::CIAO::Config_Handlers::ComponentPortDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+specificType_ (s.specificType_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.specificType_) : 0),
+provider_ (new ::XMLSchema::boolean (*s.provider_)),
+exclusiveProvider_ (new ::XMLSchema::boolean (*s.exclusiveProvider_)),
+exclusiveUser_ (new ::XMLSchema::boolean (*s.exclusiveUser_)),
+optional_ (new ::XMLSchema::boolean (*s.optional_)),
+kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (*s.kind_)),
+regulator__ ()
+{
+name_->container (this);
+if (specificType_.get ()) specificType_->container (this);
+{
+for (supportedType_const_iterator i (s.supportedType_.begin ());i != s.supportedType_.end ();++i) add_supportedType (*i);
+}
+
+provider_->container (this);
+exclusiveProvider_->container (this);
+exclusiveUser_->container (this);
+optional_->container (this);
+kind_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentPortDescription& ComponentPortDescription::
+operator= (::CIAO::Config_Handlers::ComponentPortDescription const& s)
+{
+name (s.name ());
+
+if (s.specificType_.get ()) specificType (*(s.specificType_));
+else specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+supportedType_.clear ();
+{
+for (supportedType_const_iterator i (s.supportedType_.begin ());i != s.supportedType_.end ();++i) add_supportedType (*i);
+}
+
+provider (s.provider ());
+
+exclusiveProvider (s.exclusiveProvider ());
+
+exclusiveUser (s.exclusiveUser ());
+
+optional (s.optional ());
+
+kind (s.kind ());
+
+return *this;
+}
+
+
+// ComponentPortDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ComponentPortDescription::
+name () const
+{
+return *name_;
+}
+
+void ComponentPortDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// ComponentPortDescription
+//
+bool ComponentPortDescription::
+specificType_p () const
+{
+return specificType_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPortDescription::
+specificType () const
+{
+return *specificType_;
+}
+
+void ComponentPortDescription::
+specificType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (specificType_.get ())
+{
+*specificType_ = e;
+}
+
+else
+{
+specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+specificType_->container (this);
+}
+}
+
+// ComponentPortDescription
+//
+ComponentPortDescription::supportedType_iterator ComponentPortDescription::
+begin_supportedType ()
+{
+return supportedType_.begin ();
+}
+
+ComponentPortDescription::supportedType_iterator ComponentPortDescription::
+end_supportedType ()
+{
+return supportedType_.end ();
+}
+
+ComponentPortDescription::supportedType_const_iterator ComponentPortDescription::
+begin_supportedType () const
+{
+return supportedType_.begin ();
+}
+
+ComponentPortDescription::supportedType_const_iterator ComponentPortDescription::
+end_supportedType () const
+{
+return supportedType_.end ();
+}
+
+void ComponentPortDescription::
+add_supportedType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+supportedType_.push_back (e);
+}
+
+size_t ComponentPortDescription::
+count_supportedType(void) const
+{
+return supportedType_.size ();
+}
+
+// ComponentPortDescription
+//
+::XMLSchema::boolean const& ComponentPortDescription::
+provider () const
+{
+return *provider_;
+}
+
+void ComponentPortDescription::
+provider (::XMLSchema::boolean const& e)
+{
+*provider_ = e;
+}
+
+// ComponentPortDescription
+//
+::XMLSchema::boolean const& ComponentPortDescription::
+exclusiveProvider () const
+{
+return *exclusiveProvider_;
+}
+
+void ComponentPortDescription::
+exclusiveProvider (::XMLSchema::boolean const& e)
+{
+*exclusiveProvider_ = e;
+}
+
+// ComponentPortDescription
+//
+::XMLSchema::boolean const& ComponentPortDescription::
+exclusiveUser () const
+{
+return *exclusiveUser_;
+}
+
+void ComponentPortDescription::
+exclusiveUser (::XMLSchema::boolean const& e)
+{
+*exclusiveUser_ = e;
+}
+
+// ComponentPortDescription
+//
+::XMLSchema::boolean const& ComponentPortDescription::
+optional () const
+{
+return *optional_;
+}
+
+void ComponentPortDescription::
+optional (::XMLSchema::boolean const& e)
+{
+*optional_ = e;
+}
+
+// ComponentPortDescription
+//
+::CIAO::Config_Handlers::CCMComponentPortKind const& ComponentPortDescription::
+kind () const
+{
+return *kind_;
+}
+
+void ComponentPortDescription::
+kind (::CIAO::Config_Handlers::CCMComponentPortKind const& e)
+{
+*kind_ = e;
+}
+
+
+// ComponentPropertyDescription
+//
+
+ComponentPropertyDescription::
+ComponentPropertyDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::DataType const& type__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+type_ (new ::CIAO::Config_Handlers::DataType (type__)),
+regulator__ ()
+{
+name_->container (this);
+type_->container (this);
+}
+
+ComponentPropertyDescription::
+ComponentPropertyDescription (::CIAO::Config_Handlers::ComponentPropertyDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+type_ (new ::CIAO::Config_Handlers::DataType (*s.type_)),
+regulator__ ()
+{
+name_->container (this);
+type_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentPropertyDescription& ComponentPropertyDescription::
+operator= (::CIAO::Config_Handlers::ComponentPropertyDescription const& s)
+{
+name (s.name ());
+
+type (s.type ());
+
+return *this;
+}
+
+
+// ComponentPropertyDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ComponentPropertyDescription::
+name () const
+{
+return *name_;
+}
+
+void ComponentPropertyDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// ComponentPropertyDescription
+//
+::CIAO::Config_Handlers::DataType const& ComponentPropertyDescription::
+type () const
+{
+return *type_;
+}
+
+void ComponentPropertyDescription::
+type (::CIAO::Config_Handlers::DataType const& e)
+{
+*type_ = e;
+}
+
+
+// ComponentExternalPortEndpoint
+//
+
+ComponentExternalPortEndpoint::
+ComponentExternalPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)),
+regulator__ ()
+{
+portName_->container (this);
+}
+
+ComponentExternalPortEndpoint::
+ComponentExternalPortEndpoint (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& s)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)),
+regulator__ ()
+{
+portName_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentExternalPortEndpoint& ComponentExternalPortEndpoint::
+operator= (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& s)
+{
+portName (s.portName ());
+
+return *this;
+}
+
+
+// ComponentExternalPortEndpoint
+//
+::XMLSchema::string< ACE_TCHAR > const& ComponentExternalPortEndpoint::
+portName () const
+{
+return *portName_;
+}
+
+void ComponentExternalPortEndpoint::
+portName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*portName_ = e;
+}
+
+
+// PlanSubcomponentPortEndpoint
+//
+
+PlanSubcomponentPortEndpoint::
+PlanSubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__,
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind__,
+::XMLSchema::IDREF< ACE_TCHAR > const& instance__)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)),
+kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (kind__)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (instance__)),
+regulator__ ()
+{
+portName_->container (this);
+kind_->container (this);
+instance_->container (this);
+}
+
+PlanSubcomponentPortEndpoint::
+PlanSubcomponentPortEndpoint (::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint const& s)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)),
+provider_ (s.provider_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.provider_) : 0),
+kind_ (new ::CIAO::Config_Handlers::CCMComponentPortKind (*s.kind_)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (*s.instance_)),
+regulator__ ()
+{
+portName_->container (this);
+if (provider_.get ()) provider_->container (this);
+kind_->container (this);
+instance_->container (this);
+}
+
+::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint& PlanSubcomponentPortEndpoint::
+operator= (::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint const& s)
+{
+portName (s.portName ());
+
+if (s.provider_.get ()) provider (*(s.provider_));
+else provider_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+kind (s.kind ());
+
+instance (s.instance ());
+
+return *this;
+}
+
+
+// PlanSubcomponentPortEndpoint
+//
+::XMLSchema::string< ACE_TCHAR > const& PlanSubcomponentPortEndpoint::
+portName () const
+{
+return *portName_;
+}
+
+void PlanSubcomponentPortEndpoint::
+portName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*portName_ = e;
+}
+
+// PlanSubcomponentPortEndpoint
+//
+bool PlanSubcomponentPortEndpoint::
+provider_p () const
+{
+return provider_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& PlanSubcomponentPortEndpoint::
+provider () const
+{
+return *provider_;
+}
+
+void PlanSubcomponentPortEndpoint::
+provider (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (provider_.get ())
+{
+*provider_ = e;
+}
+
+else
+{
+provider_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+provider_->container (this);
+}
+}
+
+// PlanSubcomponentPortEndpoint
+//
+::CIAO::Config_Handlers::CCMComponentPortKind const& PlanSubcomponentPortEndpoint::
+kind () const
+{
+return *kind_;
+}
+
+void PlanSubcomponentPortEndpoint::
+kind (::CIAO::Config_Handlers::CCMComponentPortKind const& e)
+{
+*kind_ = e;
+}
+
+// PlanSubcomponentPortEndpoint
+//
+::XMLSchema::IDREF< ACE_TCHAR > const& PlanSubcomponentPortEndpoint::
+instance () const
+{
+return *instance_;
+}
+
+void PlanSubcomponentPortEndpoint::
+instance (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+{
+*instance_ = e;
+}
+
+
+// ExternalReferenceEndpoint
+//
+
+ExternalReferenceEndpoint::
+ExternalReferenceEndpoint (::XMLSchema::string< ACE_TCHAR > const& location__)
+:
+::XSCRT::Type (),
+location_ (new ::XMLSchema::string< ACE_TCHAR > (location__)),
+regulator__ ()
+{
+location_->container (this);
+}
+
+ExternalReferenceEndpoint::
+ExternalReferenceEndpoint (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& s)
+:
+::XSCRT::Type (),
+location_ (new ::XMLSchema::string< ACE_TCHAR > (*s.location_)),
+regulator__ ()
+{
+location_->container (this);
+}
+
+::CIAO::Config_Handlers::ExternalReferenceEndpoint& ExternalReferenceEndpoint::
+operator= (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& s)
+{
+location (s.location ());
+
+return *this;
+}
+
+
+// ExternalReferenceEndpoint
+//
+::XMLSchema::string< ACE_TCHAR > const& ExternalReferenceEndpoint::
+location () const
+{
+return *location_;
+}
+
+void ExternalReferenceEndpoint::
+location (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*location_ = e;
+}
+
+
+// ConnectionResourceDeploymentDescription
+//
+
+ConnectionResourceDeploymentDescription::
+ConnectionResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& targetName__,
+::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__)
+:
+::XSCRT::Type (),
+targetName_ (new ::XMLSchema::string< ACE_TCHAR > (targetName__)),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (requirementName__)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (resourceName__)),
+regulator__ ()
+{
+targetName_->container (this);
+requirementName_->container (this);
+resourceName_->container (this);
+}
+
+ConnectionResourceDeploymentDescription::
+ConnectionResourceDeploymentDescription (::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription const& s)
+:
+::XSCRT::Type (),
+targetName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.targetName_)),
+requirementName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requirementName_)),
+resourceName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceName_)),
+regulator__ ()
+{
+targetName_->container (this);
+requirementName_->container (this);
+resourceName_->container (this);
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription& ConnectionResourceDeploymentDescription::
+operator= (::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription const& s)
+{
+targetName (s.targetName ());
+
+requirementName (s.requirementName ());
+
+resourceName (s.resourceName ());
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// ConnectionResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription::
+targetName () const
+{
+return *targetName_;
+}
+
+void ConnectionResourceDeploymentDescription::
+targetName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*targetName_ = e;
+}
+
+// ConnectionResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription::
+requirementName () const
+{
+return *requirementName_;
+}
+
+void ConnectionResourceDeploymentDescription::
+requirementName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*requirementName_ = e;
+}
+
+// ConnectionResourceDeploymentDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& ConnectionResourceDeploymentDescription::
+resourceName () const
+{
+return *resourceName_;
+}
+
+void ConnectionResourceDeploymentDescription::
+resourceName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceName_ = e;
+}
+
+// ConnectionResourceDeploymentDescription
+//
+ConnectionResourceDeploymentDescription::property_iterator ConnectionResourceDeploymentDescription::
+begin_property ()
+{
+return property_.begin ();
+}
+
+ConnectionResourceDeploymentDescription::property_iterator ConnectionResourceDeploymentDescription::
+end_property ()
+{
+return property_.end ();
+}
+
+ConnectionResourceDeploymentDescription::property_const_iterator ConnectionResourceDeploymentDescription::
+begin_property () const
+{
+return property_.begin ();
+}
+
+ConnectionResourceDeploymentDescription::property_const_iterator ConnectionResourceDeploymentDescription::
+end_property () const
+{
+return property_.end ();
+}
+
+void ConnectionResourceDeploymentDescription::
+add_property (::CIAO::Config_Handlers::Property const& e)
+{
+property_.push_back (e);
+}
+
+size_t ConnectionResourceDeploymentDescription::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// PlanConnectionDescription
+//
+
+PlanConnectionDescription::
+PlanConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+PlanConnectionDescription::
+PlanConnectionDescription (::CIAO::Config_Handlers::PlanConnectionDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+source_ (s.source_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.source_) : 0),
+regulator__ ()
+{
+name_->container (this);
+if (source_.get ()) source_->container (this);
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+{
+for (externalEndpoint_const_iterator i (s.externalEndpoint_.begin ());i != s.externalEndpoint_.end ();++i) add_externalEndpoint (*i);
+}
+
+{
+for (internalEndpoint_const_iterator i (s.internalEndpoint_.begin ());i != s.internalEndpoint_.end ();++i) add_internalEndpoint (*i);
+}
+
+{
+for (externalReference_const_iterator i (s.externalReference_.begin ());i != s.externalReference_.end ();++i) add_externalReference (*i);
+}
+
+{
+for (deployedResource_const_iterator i (s.deployedResource_.begin ());i != s.deployedResource_.end ();++i) add_deployedResource (*i);
+}
+}
+
+::CIAO::Config_Handlers::PlanConnectionDescription& PlanConnectionDescription::
+operator= (::CIAO::Config_Handlers::PlanConnectionDescription const& s)
+{
+name (s.name ());
+
+if (s.source_.get ()) source (*(s.source_));
+else source_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+externalEndpoint_.clear ();
+{
+for (externalEndpoint_const_iterator i (s.externalEndpoint_.begin ());i != s.externalEndpoint_.end ();++i) add_externalEndpoint (*i);
+}
+
+internalEndpoint_.clear ();
+{
+for (internalEndpoint_const_iterator i (s.internalEndpoint_.begin ());i != s.internalEndpoint_.end ();++i) add_internalEndpoint (*i);
+}
+
+externalReference_.clear ();
+{
+for (externalReference_const_iterator i (s.externalReference_.begin ());i != s.externalReference_.end ();++i) add_externalReference (*i);
+}
+
+deployedResource_.clear ();
+{
+for (deployedResource_const_iterator i (s.deployedResource_.begin ());i != s.deployedResource_.end ();++i) add_deployedResource (*i);
+}
+
+return *this;
+}
+
+
+// PlanConnectionDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& PlanConnectionDescription::
+name () const
+{
+return *name_;
+}
+
+void PlanConnectionDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// PlanConnectionDescription
+//
+bool PlanConnectionDescription::
+source_p () const
+{
+return source_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& PlanConnectionDescription::
+source () const
+{
+return *source_;
+}
+
+void PlanConnectionDescription::
+source (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (source_.get ())
+{
+*source_ = e;
+}
+
+else
+{
+source_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+source_->container (this);
+}
+}
+
+// PlanConnectionDescription
+//
+PlanConnectionDescription::deployRequirement_iterator PlanConnectionDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+PlanConnectionDescription::deployRequirement_iterator PlanConnectionDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+PlanConnectionDescription::deployRequirement_const_iterator PlanConnectionDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+PlanConnectionDescription::deployRequirement_const_iterator PlanConnectionDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void PlanConnectionDescription::
+add_deployRequirement (::CIAO::Config_Handlers::Requirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t PlanConnectionDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// PlanConnectionDescription
+//
+PlanConnectionDescription::externalEndpoint_iterator PlanConnectionDescription::
+begin_externalEndpoint ()
+{
+return externalEndpoint_.begin ();
+}
+
+PlanConnectionDescription::externalEndpoint_iterator PlanConnectionDescription::
+end_externalEndpoint ()
+{
+return externalEndpoint_.end ();
+}
+
+PlanConnectionDescription::externalEndpoint_const_iterator PlanConnectionDescription::
+begin_externalEndpoint () const
+{
+return externalEndpoint_.begin ();
+}
+
+PlanConnectionDescription::externalEndpoint_const_iterator PlanConnectionDescription::
+end_externalEndpoint () const
+{
+return externalEndpoint_.end ();
+}
+
+void PlanConnectionDescription::
+add_externalEndpoint (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& e)
+{
+externalEndpoint_.push_back (e);
+}
+
+size_t PlanConnectionDescription::
+count_externalEndpoint(void) const
+{
+return externalEndpoint_.size ();
+}
+
+// PlanConnectionDescription
+//
+PlanConnectionDescription::internalEndpoint_iterator PlanConnectionDescription::
+begin_internalEndpoint ()
+{
+return internalEndpoint_.begin ();
+}
+
+PlanConnectionDescription::internalEndpoint_iterator PlanConnectionDescription::
+end_internalEndpoint ()
+{
+return internalEndpoint_.end ();
+}
+
+PlanConnectionDescription::internalEndpoint_const_iterator PlanConnectionDescription::
+begin_internalEndpoint () const
+{
+return internalEndpoint_.begin ();
+}
+
+PlanConnectionDescription::internalEndpoint_const_iterator PlanConnectionDescription::
+end_internalEndpoint () const
+{
+return internalEndpoint_.end ();
+}
+
+void PlanConnectionDescription::
+add_internalEndpoint (::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint const& e)
+{
+internalEndpoint_.push_back (e);
+}
+
+size_t PlanConnectionDescription::
+count_internalEndpoint(void) const
+{
+return internalEndpoint_.size ();
+}
+
+// PlanConnectionDescription
+//
+PlanConnectionDescription::externalReference_iterator PlanConnectionDescription::
+begin_externalReference ()
+{
+return externalReference_.begin ();
+}
+
+PlanConnectionDescription::externalReference_iterator PlanConnectionDescription::
+end_externalReference ()
+{
+return externalReference_.end ();
+}
+
+PlanConnectionDescription::externalReference_const_iterator PlanConnectionDescription::
+begin_externalReference () const
+{
+return externalReference_.begin ();
+}
+
+PlanConnectionDescription::externalReference_const_iterator PlanConnectionDescription::
+end_externalReference () const
+{
+return externalReference_.end ();
+}
+
+void PlanConnectionDescription::
+add_externalReference (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& e)
+{
+externalReference_.push_back (e);
+}
+
+size_t PlanConnectionDescription::
+count_externalReference(void) const
+{
+return externalReference_.size ();
+}
+
+// PlanConnectionDescription
+//
+PlanConnectionDescription::deployedResource_iterator PlanConnectionDescription::
+begin_deployedResource ()
+{
+return deployedResource_.begin ();
+}
+
+PlanConnectionDescription::deployedResource_iterator PlanConnectionDescription::
+end_deployedResource ()
+{
+return deployedResource_.end ();
+}
+
+PlanConnectionDescription::deployedResource_const_iterator PlanConnectionDescription::
+begin_deployedResource () const
+{
+return deployedResource_.begin ();
+}
+
+PlanConnectionDescription::deployedResource_const_iterator PlanConnectionDescription::
+end_deployedResource () const
+{
+return deployedResource_.end ();
+}
+
+void PlanConnectionDescription::
+add_deployedResource (::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription const& e)
+{
+deployedResource_.push_back (e);
+}
+
+size_t PlanConnectionDescription::
+count_deployedResource(void) const
+{
+return deployedResource_.size ();
+}
+
+
+// ImplementationDependency
+//
+
+ImplementationDependency::
+ImplementationDependency (::XMLSchema::string< ACE_TCHAR > const& requiredType__)
+:
+::XSCRT::Type (),
+requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (requiredType__)),
+regulator__ ()
+{
+requiredType_->container (this);
+}
+
+ImplementationDependency::
+ImplementationDependency (::CIAO::Config_Handlers::ImplementationDependency const& s)
+:
+::XSCRT::Type (),
+requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requiredType_)),
+regulator__ ()
+{
+requiredType_->container (this);
+}
+
+::CIAO::Config_Handlers::ImplementationDependency& ImplementationDependency::
+operator= (::CIAO::Config_Handlers::ImplementationDependency const& s)
+{
+requiredType (s.requiredType ());
+
+return *this;
+}
+
+
+// ImplementationDependency
+//
+::XMLSchema::string< ACE_TCHAR > const& ImplementationDependency::
+requiredType () const
+{
+return *requiredType_;
+}
+
+void ImplementationDependency::
+requiredType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*requiredType_ = e;
+}
+
+
+// Capability
+//
+
+Capability::
+Capability (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+Capability::
+Capability (::CIAO::Config_Handlers::Capability const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+regulator__ ()
+{
+name_->container (this);
+{
+for (resourceType_const_iterator i (s.resourceType_.begin ());i != s.resourceType_.end ();++i) add_resourceType (*i);
+}
+
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::Capability& Capability::
+operator= (::CIAO::Config_Handlers::Capability const& s)
+{
+name (s.name ());
+
+resourceType_.clear ();
+{
+for (resourceType_const_iterator i (s.resourceType_.begin ());i != s.resourceType_.end ();++i) add_resourceType (*i);
+}
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// Capability
+//
+::XMLSchema::string< ACE_TCHAR > const& Capability::
+name () const
+{
+return *name_;
+}
+
+void Capability::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Capability
+//
+Capability::resourceType_iterator Capability::
+begin_resourceType ()
+{
+return resourceType_.begin ();
+}
+
+Capability::resourceType_iterator Capability::
+end_resourceType ()
+{
+return resourceType_.end ();
+}
+
+Capability::resourceType_const_iterator Capability::
+begin_resourceType () const
+{
+return resourceType_.begin ();
+}
+
+Capability::resourceType_const_iterator Capability::
+end_resourceType () const
+{
+return resourceType_.end ();
+}
+
+void Capability::
+add_resourceType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+resourceType_.push_back (e);
+}
+
+size_t Capability::
+count_resourceType(void) const
+{
+return resourceType_.size ();
+}
+
+// Capability
+//
+Capability::property_iterator Capability::
+begin_property ()
+{
+return property_.begin ();
+}
+
+Capability::property_iterator Capability::
+end_property ()
+{
+return property_.end ();
+}
+
+Capability::property_const_iterator Capability::
+begin_property () const
+{
+return property_.begin ();
+}
+
+Capability::property_const_iterator Capability::
+end_property () const
+{
+return property_.end ();
+}
+
+void Capability::
+add_property (::CIAO::Config_Handlers::SatisfierProperty const& e)
+{
+property_.push_back (e);
+}
+
+size_t Capability::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// ImplementationRequirement
+//
+
+ImplementationRequirement::
+ImplementationRequirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+resourceType_->container (this);
+name_->container (this);
+}
+
+ImplementationRequirement::
+ImplementationRequirement (::CIAO::Config_Handlers::ImplementationRequirement const& s)
+:
+::XSCRT::Type (),
+resourceUsage_ (s.resourceUsage_.get () ? new ::CIAO::Config_Handlers::ResourceUsageKind (*s.resourceUsage_) : 0),
+resourcePort_ (s.resourcePort_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.resourcePort_) : 0),
+componentPort_ (s.componentPort_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.componentPort_) : 0),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+regulator__ ()
+{
+if (resourceUsage_.get ()) resourceUsage_->container (this);
+if (resourcePort_.get ()) resourcePort_->container (this);
+if (componentPort_.get ()) componentPort_->container (this);
+resourceType_->container (this);
+name_->container (this);
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+}
+
+::CIAO::Config_Handlers::ImplementationRequirement& ImplementationRequirement::
+operator= (::CIAO::Config_Handlers::ImplementationRequirement const& s)
+{
+if (s.resourceUsage_.get ()) resourceUsage (*(s.resourceUsage_));
+else resourceUsage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > (0);
+
+if (s.resourcePort_.get ()) resourcePort (*(s.resourcePort_));
+else resourcePort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.componentPort_.get ()) componentPort (*(s.componentPort_));
+else componentPort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+resourceType (s.resourceType ());
+
+name (s.name ());
+
+property_.clear ();
+{
+for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+}
+
+return *this;
+}
+
+
+// ImplementationRequirement
+//
+bool ImplementationRequirement::
+resourceUsage_p () const
+{
+return resourceUsage_.get () != 0;
+}
+
+::CIAO::Config_Handlers::ResourceUsageKind const& ImplementationRequirement::
+resourceUsage () const
+{
+return *resourceUsage_;
+}
+
+void ImplementationRequirement::
+resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& e)
+{
+if (resourceUsage_.get ())
+{
+*resourceUsage_ = e;
+}
+
+else
+{
+resourceUsage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > (new ::CIAO::Config_Handlers::ResourceUsageKind (e));
+resourceUsage_->container (this);
+}
+}
+
+// ImplementationRequirement
+//
+bool ImplementationRequirement::
+resourcePort_p () const
+{
+return resourcePort_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement::
+resourcePort () const
+{
+return *resourcePort_;
+}
+
+void ImplementationRequirement::
+resourcePort (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (resourcePort_.get ())
+{
+*resourcePort_ = e;
+}
+
+else
+{
+resourcePort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourcePort_->container (this);
+}
+}
+
+// ImplementationRequirement
+//
+bool ImplementationRequirement::
+componentPort_p () const
+{
+return componentPort_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement::
+componentPort () const
+{
+return *componentPort_;
+}
+
+void ImplementationRequirement::
+componentPort (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (componentPort_.get ())
+{
+*componentPort_ = e;
+}
+
+else
+{
+componentPort_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+componentPort_->container (this);
+}
+}
+
+// ImplementationRequirement
+//
+::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement::
+resourceType () const
+{
+return *resourceType_;
+}
+
+void ImplementationRequirement::
+resourceType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceType_ = e;
+}
+
+// ImplementationRequirement
+//
+::XMLSchema::string< ACE_TCHAR > const& ImplementationRequirement::
+name () const
+{
+return *name_;
+}
+
+void ImplementationRequirement::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// ImplementationRequirement
+//
+ImplementationRequirement::property_iterator ImplementationRequirement::
+begin_property ()
+{
+return property_.begin ();
+}
+
+ImplementationRequirement::property_iterator ImplementationRequirement::
+end_property ()
+{
+return property_.end ();
+}
+
+ImplementationRequirement::property_const_iterator ImplementationRequirement::
+begin_property () const
+{
+return property_.begin ();
+}
+
+ImplementationRequirement::property_const_iterator ImplementationRequirement::
+end_property () const
+{
+return property_.end ();
+}
+
+void ImplementationRequirement::
+add_property (::CIAO::Config_Handlers::Property const& e)
+{
+property_.push_back (e);
+}
+
+size_t ImplementationRequirement::
+count_property(void) const
+{
+return property_.size ();
+}
+
+
+// ComponentPackageReference
+//
+
+ComponentPackageReference::
+ComponentPackageReference (::XMLSchema::string< ACE_TCHAR > const& requiredType__)
+:
+::XSCRT::Type (),
+requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (requiredType__)),
+regulator__ ()
+{
+requiredType_->container (this);
+}
+
+ComponentPackageReference::
+ComponentPackageReference (::CIAO::Config_Handlers::ComponentPackageReference const& s)
+:
+::XSCRT::Type (),
+requiredUUID_ (s.requiredUUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.requiredUUID_) : 0),
+requiredName_ (s.requiredName_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.requiredName_) : 0),
+requiredType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.requiredType_)),
+regulator__ ()
+{
+if (requiredUUID_.get ()) requiredUUID_->container (this);
+if (requiredName_.get ()) requiredName_->container (this);
+requiredType_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentPackageReference& ComponentPackageReference::
+operator= (::CIAO::Config_Handlers::ComponentPackageReference const& s)
+{
+if (s.requiredUUID_.get ()) requiredUUID (*(s.requiredUUID_));
+else requiredUUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.requiredName_.get ()) requiredName (*(s.requiredName_));
+else requiredName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+requiredType (s.requiredType ());
+
+return *this;
+}
+
+
+// ComponentPackageReference
+//
+bool ComponentPackageReference::
+requiredUUID_p () const
+{
+return requiredUUID_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageReference::
+requiredUUID () const
+{
+return *requiredUUID_;
+}
+
+void ComponentPackageReference::
+requiredUUID (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (requiredUUID_.get ())
+{
+*requiredUUID_ = e;
+}
+
+else
+{
+requiredUUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requiredUUID_->container (this);
+}
+}
+
+// ComponentPackageReference
+//
+bool ComponentPackageReference::
+requiredName_p () const
+{
+return requiredName_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageReference::
+requiredName () const
+{
+return *requiredName_;
+}
+
+void ComponentPackageReference::
+requiredName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (requiredName_.get ())
+{
+*requiredName_ = e;
+}
+
+else
+{
+requiredName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requiredName_->container (this);
+}
+}
+
+// ComponentPackageReference
+//
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageReference::
+requiredType () const
+{
+return *requiredType_;
+}
+
+void ComponentPackageReference::
+requiredType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*requiredType_ = e;
+}
+
+
+// SubcomponentPortEndpoint
+//
+
+SubcomponentPortEndpoint::
+SubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__,
+::XMLSchema::IDREF< ACE_TCHAR > const& instance__)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (portName__)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (instance__)),
+regulator__ ()
+{
+portName_->container (this);
+instance_->container (this);
+}
+
+SubcomponentPortEndpoint::
+SubcomponentPortEndpoint (::CIAO::Config_Handlers::SubcomponentPortEndpoint const& s)
+:
+::XSCRT::Type (),
+portName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.portName_)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (*s.instance_)),
+regulator__ ()
+{
+portName_->container (this);
+instance_->container (this);
+}
+
+::CIAO::Config_Handlers::SubcomponentPortEndpoint& SubcomponentPortEndpoint::
+operator= (::CIAO::Config_Handlers::SubcomponentPortEndpoint const& s)
+{
+portName (s.portName ());
+
+instance (s.instance ());
+
+return *this;
+}
+
+
+// SubcomponentPortEndpoint
+//
+::XMLSchema::string< ACE_TCHAR > const& SubcomponentPortEndpoint::
+portName () const
+{
+return *portName_;
+}
+
+void SubcomponentPortEndpoint::
+portName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*portName_ = e;
+}
+
+// SubcomponentPortEndpoint
+//
+::XMLSchema::IDREF< ACE_TCHAR > const& SubcomponentPortEndpoint::
+instance () const
+{
+return *instance_;
+}
+
+void SubcomponentPortEndpoint::
+instance (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+{
+*instance_ = e;
+}
+
+
+// AssemblyConnectionDescription
+//
+
+AssemblyConnectionDescription::
+AssemblyConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+AssemblyConnectionDescription::
+AssemblyConnectionDescription (::CIAO::Config_Handlers::AssemblyConnectionDescription const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+regulator__ ()
+{
+name_->container (this);
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+{
+for (internalEndpoint_const_iterator i (s.internalEndpoint_.begin ());i != s.internalEndpoint_.end ();++i) add_internalEndpoint (*i);
+}
+
+{
+for (externalEndpoint_const_iterator i (s.externalEndpoint_.begin ());i != s.externalEndpoint_.end ();++i) add_externalEndpoint (*i);
+}
+
+{
+for (externalReference_const_iterator i (s.externalReference_.begin ());i != s.externalReference_.end ();++i) add_externalReference (*i);
+}
+}
+
+::CIAO::Config_Handlers::AssemblyConnectionDescription& AssemblyConnectionDescription::
+operator= (::CIAO::Config_Handlers::AssemblyConnectionDescription const& s)
+{
+name (s.name ());
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+internalEndpoint_.clear ();
+{
+for (internalEndpoint_const_iterator i (s.internalEndpoint_.begin ());i != s.internalEndpoint_.end ();++i) add_internalEndpoint (*i);
+}
+
+externalEndpoint_.clear ();
+{
+for (externalEndpoint_const_iterator i (s.externalEndpoint_.begin ());i != s.externalEndpoint_.end ();++i) add_externalEndpoint (*i);
+}
+
+externalReference_.clear ();
+{
+for (externalReference_const_iterator i (s.externalReference_.begin ());i != s.externalReference_.end ();++i) add_externalReference (*i);
+}
+
+return *this;
+}
+
+
+// AssemblyConnectionDescription
+//
+::XMLSchema::string< ACE_TCHAR > const& AssemblyConnectionDescription::
+name () const
+{
+return *name_;
+}
+
+void AssemblyConnectionDescription::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// AssemblyConnectionDescription
+//
+AssemblyConnectionDescription::deployRequirement_iterator AssemblyConnectionDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+AssemblyConnectionDescription::deployRequirement_iterator AssemblyConnectionDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+AssemblyConnectionDescription::deployRequirement_const_iterator AssemblyConnectionDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+AssemblyConnectionDescription::deployRequirement_const_iterator AssemblyConnectionDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void AssemblyConnectionDescription::
+add_deployRequirement (::CIAO::Config_Handlers::Requirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t AssemblyConnectionDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// AssemblyConnectionDescription
+//
+AssemblyConnectionDescription::internalEndpoint_iterator AssemblyConnectionDescription::
+begin_internalEndpoint ()
+{
+return internalEndpoint_.begin ();
+}
+
+AssemblyConnectionDescription::internalEndpoint_iterator AssemblyConnectionDescription::
+end_internalEndpoint ()
+{
+return internalEndpoint_.end ();
+}
+
+AssemblyConnectionDescription::internalEndpoint_const_iterator AssemblyConnectionDescription::
+begin_internalEndpoint () const
+{
+return internalEndpoint_.begin ();
+}
+
+AssemblyConnectionDescription::internalEndpoint_const_iterator AssemblyConnectionDescription::
+end_internalEndpoint () const
+{
+return internalEndpoint_.end ();
+}
+
+void AssemblyConnectionDescription::
+add_internalEndpoint (::CIAO::Config_Handlers::SubcomponentPortEndpoint const& e)
+{
+internalEndpoint_.push_back (e);
+}
+
+size_t AssemblyConnectionDescription::
+count_internalEndpoint(void) const
+{
+return internalEndpoint_.size ();
+}
+
+// AssemblyConnectionDescription
+//
+AssemblyConnectionDescription::externalEndpoint_iterator AssemblyConnectionDescription::
+begin_externalEndpoint ()
+{
+return externalEndpoint_.begin ();
+}
+
+AssemblyConnectionDescription::externalEndpoint_iterator AssemblyConnectionDescription::
+end_externalEndpoint ()
+{
+return externalEndpoint_.end ();
+}
+
+AssemblyConnectionDescription::externalEndpoint_const_iterator AssemblyConnectionDescription::
+begin_externalEndpoint () const
+{
+return externalEndpoint_.begin ();
+}
+
+AssemblyConnectionDescription::externalEndpoint_const_iterator AssemblyConnectionDescription::
+end_externalEndpoint () const
+{
+return externalEndpoint_.end ();
+}
+
+void AssemblyConnectionDescription::
+add_externalEndpoint (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& e)
+{
+externalEndpoint_.push_back (e);
+}
+
+size_t AssemblyConnectionDescription::
+count_externalEndpoint(void) const
+{
+return externalEndpoint_.size ();
+}
+
+// AssemblyConnectionDescription
+//
+AssemblyConnectionDescription::externalReference_iterator AssemblyConnectionDescription::
+begin_externalReference ()
+{
+return externalReference_.begin ();
+}
+
+AssemblyConnectionDescription::externalReference_iterator AssemblyConnectionDescription::
+end_externalReference ()
+{
+return externalReference_.end ();
+}
+
+AssemblyConnectionDescription::externalReference_const_iterator AssemblyConnectionDescription::
+begin_externalReference () const
+{
+return externalReference_.begin ();
+}
+
+AssemblyConnectionDescription::externalReference_const_iterator AssemblyConnectionDescription::
+end_externalReference () const
+{
+return externalReference_.end ();
+}
+
+void AssemblyConnectionDescription::
+add_externalReference (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& e)
+{
+externalReference_.push_back (e);
+}
+
+size_t AssemblyConnectionDescription::
+count_externalReference(void) const
+{
+return externalReference_.size ();
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+// TCKind
+//
+
+TCKind::
+TCKind (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+: ::XSCRT::Type (e)
+{
+::std::basic_string< ACE_TCHAR > v (e.value ());
+
+if (v == "tk_null") v_ = tk_null_l;
+else if (v == "tk_void") v_ = tk_void_l;
+else if (v == "tk_short") v_ = tk_short_l;
+else if (v == "tk_long") v_ = tk_long_l;
+else if (v == "tk_ushort") v_ = tk_ushort_l;
+else if (v == "tk_ulong") v_ = tk_ulong_l;
+else if (v == "tk_float") v_ = tk_float_l;
+else if (v == "tk_double") v_ = tk_double_l;
+else if (v == "tk_boolean") v_ = tk_boolean_l;
+else if (v == "tk_char") v_ = tk_char_l;
+else if (v == "tk_octet") v_ = tk_octet_l;
+else if (v == "tk_any") v_ = tk_any_l;
+else if (v == "tk_TypeCode") v_ = tk_TypeCode_l;
+else if (v == "tk_Principal") v_ = tk_Principal_l;
+else if (v == "tk_objref") v_ = tk_objref_l;
+else if (v == "tk_struct") v_ = tk_struct_l;
+else if (v == "tk_union") v_ = tk_union_l;
+else if (v == "tk_enum") v_ = tk_enum_l;
+else if (v == "tk_string") v_ = tk_string_l;
+else if (v == "tk_sequence") v_ = tk_sequence_l;
+else if (v == "tk_array") v_ = tk_array_l;
+else if (v == "tk_alias") v_ = tk_alias_l;
+else if (v == "tk_except") v_ = tk_except_l;
+else if (v == "tk_longlong") v_ = tk_longlong_l;
+else if (v == "tk_ulonglong") v_ = tk_ulonglong_l;
+else if (v == "tk_longdouble") v_ = tk_longdouble_l;
+else if (v == "tk_wchar") v_ = tk_wchar_l;
+else if (v == "tk_wstring") v_ = tk_wstring_l;
+else if (v == "tk_wfixed") v_ = tk_wfixed_l;
+else if (v == "tk_value") v_ = tk_value_l;
+else if (v == "tk_value_box") v_ = tk_value_box_l;
+else if (v == "tk_native") v_ = tk_native_l;
+else if (v == "tk_abstract_interface") v_ = tk_abstract_interface_l;
+else if (v == "tk_local_interface") v_ = tk_local_interface_l;
+else if (v == "tk_component") v_ = tk_component_l;
+else if (v == "tk_home") v_ = tk_home_l;
+else if (v == "tk_event") v_ = tk_event_l;
+else
+{
+}
+}
+
+TCKind::
+TCKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+: ::XSCRT::Type (a)
+{
+::std::basic_string< ACE_TCHAR > v (a.value ());
+
+if (v == "tk_null") v_ = tk_null_l;
+else if (v == "tk_void") v_ = tk_void_l;
+else if (v == "tk_short") v_ = tk_short_l;
+else if (v == "tk_long") v_ = tk_long_l;
+else if (v == "tk_ushort") v_ = tk_ushort_l;
+else if (v == "tk_ulong") v_ = tk_ulong_l;
+else if (v == "tk_float") v_ = tk_float_l;
+else if (v == "tk_double") v_ = tk_double_l;
+else if (v == "tk_boolean") v_ = tk_boolean_l;
+else if (v == "tk_char") v_ = tk_char_l;
+else if (v == "tk_octet") v_ = tk_octet_l;
+else if (v == "tk_any") v_ = tk_any_l;
+else if (v == "tk_TypeCode") v_ = tk_TypeCode_l;
+else if (v == "tk_Principal") v_ = tk_Principal_l;
+else if (v == "tk_objref") v_ = tk_objref_l;
+else if (v == "tk_struct") v_ = tk_struct_l;
+else if (v == "tk_union") v_ = tk_union_l;
+else if (v == "tk_enum") v_ = tk_enum_l;
+else if (v == "tk_string") v_ = tk_string_l;
+else if (v == "tk_sequence") v_ = tk_sequence_l;
+else if (v == "tk_array") v_ = tk_array_l;
+else if (v == "tk_alias") v_ = tk_alias_l;
+else if (v == "tk_except") v_ = tk_except_l;
+else if (v == "tk_longlong") v_ = tk_longlong_l;
+else if (v == "tk_ulonglong") v_ = tk_ulonglong_l;
+else if (v == "tk_longdouble") v_ = tk_longdouble_l;
+else if (v == "tk_wchar") v_ = tk_wchar_l;
+else if (v == "tk_wstring") v_ = tk_wstring_l;
+else if (v == "tk_wfixed") v_ = tk_wfixed_l;
+else if (v == "tk_value") v_ = tk_value_l;
+else if (v == "tk_value_box") v_ = tk_value_box_l;
+else if (v == "tk_native") v_ = tk_native_l;
+else if (v == "tk_abstract_interface") v_ = tk_abstract_interface_l;
+else if (v == "tk_local_interface") v_ = tk_local_interface_l;
+else if (v == "tk_component") v_ = tk_component_l;
+else if (v == "tk_home") v_ = tk_home_l;
+else if (v == "tk_event") v_ = tk_event_l;
+else
+{
+}
+}
+
+TCKind const TCKind::tk_null (TCKind::tk_null_l);
+TCKind const TCKind::tk_void (TCKind::tk_void_l);
+TCKind const TCKind::tk_short (TCKind::tk_short_l);
+TCKind const TCKind::tk_long (TCKind::tk_long_l);
+TCKind const TCKind::tk_ushort (TCKind::tk_ushort_l);
+TCKind const TCKind::tk_ulong (TCKind::tk_ulong_l);
+TCKind const TCKind::tk_float (TCKind::tk_float_l);
+TCKind const TCKind::tk_double (TCKind::tk_double_l);
+TCKind const TCKind::tk_boolean (TCKind::tk_boolean_l);
+TCKind const TCKind::tk_char (TCKind::tk_char_l);
+TCKind const TCKind::tk_octet (TCKind::tk_octet_l);
+TCKind const TCKind::tk_any (TCKind::tk_any_l);
+TCKind const TCKind::tk_TypeCode (TCKind::tk_TypeCode_l);
+TCKind const TCKind::tk_Principal (TCKind::tk_Principal_l);
+TCKind const TCKind::tk_objref (TCKind::tk_objref_l);
+TCKind const TCKind::tk_struct (TCKind::tk_struct_l);
+TCKind const TCKind::tk_union (TCKind::tk_union_l);
+TCKind const TCKind::tk_enum (TCKind::tk_enum_l);
+TCKind const TCKind::tk_string (TCKind::tk_string_l);
+TCKind const TCKind::tk_sequence (TCKind::tk_sequence_l);
+TCKind const TCKind::tk_array (TCKind::tk_array_l);
+TCKind const TCKind::tk_alias (TCKind::tk_alias_l);
+TCKind const TCKind::tk_except (TCKind::tk_except_l);
+TCKind const TCKind::tk_longlong (TCKind::tk_longlong_l);
+TCKind const TCKind::tk_ulonglong (TCKind::tk_ulonglong_l);
+TCKind const TCKind::tk_longdouble (TCKind::tk_longdouble_l);
+TCKind const TCKind::tk_wchar (TCKind::tk_wchar_l);
+TCKind const TCKind::tk_wstring (TCKind::tk_wstring_l);
+TCKind const TCKind::tk_wfixed (TCKind::tk_wfixed_l);
+TCKind const TCKind::tk_value (TCKind::tk_value_l);
+TCKind const TCKind::tk_value_box (TCKind::tk_value_box_l);
+TCKind const TCKind::tk_native (TCKind::tk_native_l);
+TCKind const TCKind::tk_abstract_interface (TCKind::tk_abstract_interface_l);
+TCKind const TCKind::tk_local_interface (TCKind::tk_local_interface_l);
+TCKind const TCKind::tk_component (TCKind::tk_component_l);
+TCKind const TCKind::tk_home (TCKind::tk_home_l);
+TCKind const TCKind::tk_event (TCKind::tk_event_l);
+
+// DataType
+//
+
+DataType::
+DataType (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "kind")
+{
+kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::TCKind > (new ::CIAO::Config_Handlers::TCKind (e));
+kind_->container (this);
+}
+
+else if (n == "enum")
+{
+::CIAO::Config_Handlers::EnumType t (e);
+enum_ (t);
+}
+
+else
+{
+}
+}
+}
+
+// DataValue
+//
+
+DataValue::
+DataValue (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "short")
+{
+::XMLSchema::short_ t (e);
+add_short (t);
+}
+
+else if (n == "long")
+{
+::XMLSchema::int_ t (e);
+add_long (t);
+}
+
+else if (n == "ushort")
+{
+::XMLSchema::unsignedShort t (e);
+add_ushort (t);
+}
+
+else if (n == "ulong")
+{
+::XMLSchema::unsignedInt t (e);
+add_ulong (t);
+}
+
+else if (n == "float")
+{
+::XMLSchema::float_ t (e);
+add_float (t);
+}
+
+else if (n == "double")
+{
+::XMLSchema::double_ t (e);
+add_double (t);
+}
+
+else if (n == "boolean")
+{
+::XMLSchema::boolean t (e);
+add_boolean (t);
+}
+
+else if (n == "octet")
+{
+::XMLSchema::unsignedByte t (e);
+add_octet (t);
+}
+
+else if (n == "enum")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_enum (t);
+}
+
+else if (n == "string")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_string (t);
+}
+
+else if (n == "longlong")
+{
+::XMLSchema::long_ t (e);
+add_longlong (t);
+}
+
+else if (n == "ulonglong")
+{
+::XMLSchema::unsignedLong t (e);
+add_ulonglong (t);
+}
+
+else if (n == "longdouble")
+{
+::XMLSchema::double_ t (e);
+add_longdouble (t);
+}
+
+else
+{
+}
+}
+}
+
+// EnumType
+//
+
+EnumType::
+EnumType (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "typeId")
+{
+typeId_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+typeId_->container (this);
+}
+
+else if (n == "member")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_member (t);
+}
+
+else
+{
+}
+}
+}
+
+// Any
+//
+
+Any::
+Any (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "type")
+{
+type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e));
+type_->container (this);
+}
+
+else if (n == "value")
+{
+value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > (new ::CIAO::Config_Handlers::DataValue (e));
+value_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// Property
+//
+
+Property::
+Property (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "value")
+{
+value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Any > (new ::CIAO::Config_Handlers::Any (e));
+value_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// SatisfierPropertyKind
+//
+
+SatisfierPropertyKind::
+SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+: ::XSCRT::Type (e)
+{
+::std::basic_string< ACE_TCHAR > v (e.value ());
+
+if (v == "Quantity") v_ = Quantity_l;
+else if (v == "Capacity") v_ = Capacity_l;
+else if (v == "Minimum") v_ = Minimum_l;
+else if (v == "Maximum") v_ = Maximum_l;
+else if (v == "Attribute") v_ = Attribute_l;
+else if (v == "Selection") v_ = Selection_l;
+else
+{
+}
+}
+
+SatisfierPropertyKind::
+SatisfierPropertyKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+: ::XSCRT::Type (a)
+{
+::std::basic_string< ACE_TCHAR > v (a.value ());
+
+if (v == "Quantity") v_ = Quantity_l;
+else if (v == "Capacity") v_ = Capacity_l;
+else if (v == "Minimum") v_ = Minimum_l;
+else if (v == "Maximum") v_ = Maximum_l;
+else if (v == "Attribute") v_ = Attribute_l;
+else if (v == "Selection") v_ = Selection_l;
+else
+{
+}
+}
+
+SatisfierPropertyKind const SatisfierPropertyKind::Quantity (SatisfierPropertyKind::Quantity_l);
+SatisfierPropertyKind const SatisfierPropertyKind::Capacity (SatisfierPropertyKind::Capacity_l);
+SatisfierPropertyKind const SatisfierPropertyKind::Minimum (SatisfierPropertyKind::Minimum_l);
+SatisfierPropertyKind const SatisfierPropertyKind::Maximum (SatisfierPropertyKind::Maximum_l);
+SatisfierPropertyKind const SatisfierPropertyKind::Attribute (SatisfierPropertyKind::Attribute_l);
+SatisfierPropertyKind const SatisfierPropertyKind::Selection (SatisfierPropertyKind::Selection_l);
+
+// SatisfierProperty
+//
+
+SatisfierProperty::
+SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "kind")
+{
+kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierPropertyKind > (new ::CIAO::Config_Handlers::SatisfierPropertyKind (e));
+kind_->container (this);
+}
+
+else if (n == "dynamic")
+{
+dynamic_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+dynamic_->container (this);
+}
+
+else if (n == "value")
+{
+value_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Any > (new ::CIAO::Config_Handlers::Any (e));
+value_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// Resource
+//
+
+Resource::
+Resource (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "resourceType")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_resourceType (t);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::SatisfierProperty t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// Requirement
+//
+
+Requirement::
+Requirement (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "resourceType")
+{
+resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceType_->container (this);
+}
+
+else if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// ResourceDeploymentDescription
+//
+
+ResourceDeploymentDescription::
+ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "requirementName")
+{
+requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requirementName_->container (this);
+}
+
+else if (n == "resourceName")
+{
+resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceName_->container (this);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// ArtifactDeploymentDescription
+//
+
+ArtifactDeploymentDescription::
+ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "source")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_source (t);
+}
+
+else if (n == "node")
+{
+node_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+node_->container (this);
+}
+
+else if (n == "location")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_location (t);
+}
+
+else if (n == "execParameter")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_execParameter (t);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_deployRequirement (t);
+}
+
+else if (n == "deployedResource")
+{
+::CIAO::Config_Handlers::ResourceDeploymentDescription t (e);
+add_deployedResource (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "id")
+{
+::XMLSchema::ID< ACE_TCHAR > t (a);
+id (t);
+}
+
+else
+{
+}
+}
+}
+
+// MonolithicDeploymentDescription
+//
+
+MonolithicDeploymentDescription::
+MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "source")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_source (t);
+}
+
+else if (n == "artifact")
+{
+::XMLSchema::IDREF< ACE_TCHAR > t (e);
+add_artifact (t);
+}
+
+else if (n == "execParameter")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_execParameter (t);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_deployRequirement (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "id")
+{
+::XMLSchema::ID< ACE_TCHAR > t (a);
+id (t);
+}
+
+else
+{
+}
+}
+}
+
+// ResourceUsageKind
+//
+
+ResourceUsageKind::
+ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+: ::XSCRT::Type (e)
+{
+::std::basic_string< ACE_TCHAR > v (e.value ());
+
+if (v == "None") v_ = None_l;
+else if (v == "InstanceUsesResource") v_ = InstanceUsesResource_l;
+else if (v == "ResourceUsesInstance") v_ = ResourceUsesInstance_l;
+else if (v == "PortUsesResource") v_ = PortUsesResource_l;
+else if (v == "ResourceUsesPort") v_ = ResourceUsesPort_l;
+else
+{
+}
+}
+
+ResourceUsageKind::
+ResourceUsageKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+: ::XSCRT::Type (a)
+{
+::std::basic_string< ACE_TCHAR > v (a.value ());
+
+if (v == "None") v_ = None_l;
+else if (v == "InstanceUsesResource") v_ = InstanceUsesResource_l;
+else if (v == "ResourceUsesInstance") v_ = ResourceUsesInstance_l;
+else if (v == "PortUsesResource") v_ = PortUsesResource_l;
+else if (v == "ResourceUsesPort") v_ = ResourceUsesPort_l;
+else
+{
+}
+}
+
+ResourceUsageKind const ResourceUsageKind::None (ResourceUsageKind::None_l);
+ResourceUsageKind const ResourceUsageKind::InstanceUsesResource (ResourceUsageKind::InstanceUsesResource_l);
+ResourceUsageKind const ResourceUsageKind::ResourceUsesInstance (ResourceUsageKind::ResourceUsesInstance_l);
+ResourceUsageKind const ResourceUsageKind::PortUsesResource (ResourceUsageKind::PortUsesResource_l);
+ResourceUsageKind const ResourceUsageKind::ResourceUsesPort (ResourceUsageKind::ResourceUsesPort_l);
+
+// InstanceResourceDeploymentDescription
+//
+
+InstanceResourceDeploymentDescription::
+InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "resourceUsage")
+{
+resourceUsage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > (new ::CIAO::Config_Handlers::ResourceUsageKind (e));
+resourceUsage_->container (this);
+}
+
+else if (n == "requirementName")
+{
+requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requirementName_->container (this);
+}
+
+else if (n == "resourceName")
+{
+resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceName_->container (this);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// InstanceDeploymentDescription
+//
+
+InstanceDeploymentDescription::
+InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "node")
+{
+node_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+node_->container (this);
+}
+
+else if (n == "source")
+{
+source_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+source_->container (this);
+}
+
+else if (n == "implementation")
+{
+implementation_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e));
+implementation_->container (this);
+}
+
+else if (n == "configProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_configProperty (t);
+}
+
+else if (n == "deployedResource")
+{
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription t (e);
+deployedResource (t);
+}
+
+else if (n == "deployedSharedResource")
+{
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription t (e);
+deployedSharedResource (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "id")
+{
+::XMLSchema::ID< ACE_TCHAR > t (a);
+id (t);
+}
+
+else
+{
+}
+}
+}
+
+// CCMComponentPortKind
+//
+
+CCMComponentPortKind::
+CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+: ::XSCRT::Type (e)
+{
+::std::basic_string< ACE_TCHAR > v (e.value ());
+
+if (v == "Facet") v_ = Facet_l;
+else if (v == "SimplexReceptacle") v_ = SimplexReceptacle_l;
+else if (v == "MultiplexReceptacle") v_ = MultiplexReceptacle_l;
+else if (v == "EventEmitter") v_ = EventEmitter_l;
+else if (v == "EventPublisher") v_ = EventPublisher_l;
+else if (v == "EventConsumer") v_ = EventConsumer_l;
+else
+{
+}
+}
+
+CCMComponentPortKind::
+CCMComponentPortKind (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+: ::XSCRT::Type (a)
+{
+::std::basic_string< ACE_TCHAR > v (a.value ());
+
+if (v == "Facet") v_ = Facet_l;
+else if (v == "SimplexReceptacle") v_ = SimplexReceptacle_l;
+else if (v == "MultiplexReceptacle") v_ = MultiplexReceptacle_l;
+else if (v == "EventEmitter") v_ = EventEmitter_l;
+else if (v == "EventPublisher") v_ = EventPublisher_l;
+else if (v == "EventConsumer") v_ = EventConsumer_l;
+else
+{
+}
+}
+
+CCMComponentPortKind const CCMComponentPortKind::Facet (CCMComponentPortKind::Facet_l);
+CCMComponentPortKind const CCMComponentPortKind::SimplexReceptacle (CCMComponentPortKind::SimplexReceptacle_l);
+CCMComponentPortKind const CCMComponentPortKind::MultiplexReceptacle (CCMComponentPortKind::MultiplexReceptacle_l);
+CCMComponentPortKind const CCMComponentPortKind::EventEmitter (CCMComponentPortKind::EventEmitter_l);
+CCMComponentPortKind const CCMComponentPortKind::EventPublisher (CCMComponentPortKind::EventPublisher_l);
+CCMComponentPortKind const CCMComponentPortKind::EventConsumer (CCMComponentPortKind::EventConsumer_l);
+
+// ComponentPortDescription
+//
+
+ComponentPortDescription::
+ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "specificType")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+specificType (t);
+}
+
+else if (n == "supportedType")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_supportedType (t);
+}
+
+else if (n == "provider")
+{
+provider_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+provider_->container (this);
+}
+
+else if (n == "exclusiveProvider")
+{
+exclusiveProvider_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+exclusiveProvider_->container (this);
+}
+
+else if (n == "exclusiveUser")
+{
+exclusiveUser_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+exclusiveUser_->container (this);
+}
+
+else if (n == "optional")
+{
+optional_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+optional_->container (this);
+}
+
+else if (n == "kind")
+{
+kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > (new ::CIAO::Config_Handlers::CCMComponentPortKind (e));
+kind_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentPropertyDescription
+//
+
+ComponentPropertyDescription::
+ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "type")
+{
+type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::DataType > (new ::CIAO::Config_Handlers::DataType (e));
+type_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentExternalPortEndpoint
+//
+
+ComponentExternalPortEndpoint::
+ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "portName")
+{
+portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+portName_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// PlanSubcomponentPortEndpoint
+//
+
+PlanSubcomponentPortEndpoint::
+PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "portName")
+{
+portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+portName_->container (this);
+}
+
+else if (n == "provider")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+provider (t);
+}
+
+else if (n == "kind")
+{
+kind_ = ::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > (new ::CIAO::Config_Handlers::CCMComponentPortKind (e));
+kind_->container (this);
+}
+
+else if (n == "instance")
+{
+instance_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e));
+instance_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ExternalReferenceEndpoint
+//
+
+ExternalReferenceEndpoint::
+ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "location")
+{
+location_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+location_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ConnectionResourceDeploymentDescription
+//
+
+ConnectionResourceDeploymentDescription::
+ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "targetName")
+{
+targetName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+targetName_->container (this);
+}
+
+else if (n == "requirementName")
+{
+requirementName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requirementName_->container (this);
+}
+
+else if (n == "resourceName")
+{
+resourceName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceName_->container (this);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// PlanConnectionDescription
+//
+
+PlanConnectionDescription::
+PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "source")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+source (t);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_deployRequirement (t);
+}
+
+else if (n == "externalEndpoint")
+{
+::CIAO::Config_Handlers::ComponentExternalPortEndpoint t (e);
+add_externalEndpoint (t);
+}
+
+else if (n == "internalEndpoint")
+{
+::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint t (e);
+add_internalEndpoint (t);
+}
+
+else if (n == "externalReference")
+{
+::CIAO::Config_Handlers::ExternalReferenceEndpoint t (e);
+add_externalReference (t);
+}
+
+else if (n == "deployedResource")
+{
+::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription t (e);
+add_deployedResource (t);
+}
+
+else
+{
+}
+}
+}
+
+// ImplementationDependency
+//
+
+ImplementationDependency::
+ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "requiredType")
+{
+requiredType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requiredType_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// Capability
+//
+
+Capability::
+Capability (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "resourceType")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_resourceType (t);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::SatisfierProperty t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// ImplementationRequirement
+//
+
+ImplementationRequirement::
+ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "resourceUsage")
+{
+::CIAO::Config_Handlers::ResourceUsageKind t (e);
+resourceUsage (t);
+}
+
+else if (n == "resourcePort")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+resourcePort (t);
+}
+
+else if (n == "componentPort")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+componentPort (t);
+}
+
+else if (n == "resourceType")
+{
+resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceType_->container (this);
+}
+
+else if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "property")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_property (t);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentPackageReference
+//
+
+ComponentPackageReference::
+ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "requiredUUID")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+requiredUUID (t);
+}
+
+else if (n == "requiredName")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+requiredName (t);
+}
+
+else if (n == "requiredType")
+{
+requiredType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+requiredType_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// SubcomponentPortEndpoint
+//
+
+SubcomponentPortEndpoint::
+SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "portName")
+{
+portName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+portName_->container (this);
+}
+
+else if (n == "instance")
+{
+instance_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e));
+instance_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// AssemblyConnectionDescription
+//
+
+AssemblyConnectionDescription::
+AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_deployRequirement (t);
+}
+
+else if (n == "internalEndpoint")
+{
+::CIAO::Config_Handlers::SubcomponentPortEndpoint t (e);
+add_internalEndpoint (t);
+}
+
+else if (n == "externalEndpoint")
+{
+::CIAO::Config_Handlers::ComponentExternalPortEndpoint t (e);
+add_externalEndpoint (t);
+}
+
+else if (n == "externalReference")
+{
+::CIAO::Config_Handlers::ExternalReferenceEndpoint t (e);
+add_externalReference (t);
+}
+
+else
+{
+}
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace
+{
+::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+struct TCKindTypeInfoInitializer
+{
+TCKindTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (TCKind));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+TCKindTypeInfoInitializer TCKindTypeInfoInitializer_;
+
+struct DataTypeTypeInfoInitializer
+{
+DataTypeTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (DataType));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+DataTypeTypeInfoInitializer DataTypeTypeInfoInitializer_;
+
+struct DataValueTypeInfoInitializer
+{
+DataValueTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (DataValue));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+DataValueTypeInfoInitializer DataValueTypeInfoInitializer_;
+
+struct EnumTypeTypeInfoInitializer
+{
+EnumTypeTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (EnumType));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+EnumTypeTypeInfoInitializer EnumTypeTypeInfoInitializer_;
+
+struct AnyTypeInfoInitializer
+{
+AnyTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Any));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+AnyTypeInfoInitializer AnyTypeInfoInitializer_;
+
+struct PropertyTypeInfoInitializer
+{
+PropertyTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Property));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+PropertyTypeInfoInitializer PropertyTypeInfoInitializer_;
+
+struct SatisfierPropertyKindTypeInfoInitializer
+{
+SatisfierPropertyKindTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SatisfierPropertyKind));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SatisfierPropertyKindTypeInfoInitializer SatisfierPropertyKindTypeInfoInitializer_;
+
+struct SatisfierPropertyTypeInfoInitializer
+{
+SatisfierPropertyTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SatisfierProperty));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SatisfierPropertyTypeInfoInitializer SatisfierPropertyTypeInfoInitializer_;
+
+struct ResourceTypeInfoInitializer
+{
+ResourceTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Resource));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ResourceTypeInfoInitializer ResourceTypeInfoInitializer_;
+
+struct RequirementTypeInfoInitializer
+{
+RequirementTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Requirement));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+RequirementTypeInfoInitializer RequirementTypeInfoInitializer_;
+
+struct ResourceDeploymentDescriptionTypeInfoInitializer
+{
+ResourceDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ResourceDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ResourceDeploymentDescriptionTypeInfoInitializer ResourceDeploymentDescriptionTypeInfoInitializer_;
+
+struct ArtifactDeploymentDescriptionTypeInfoInitializer
+{
+ArtifactDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ArtifactDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ArtifactDeploymentDescriptionTypeInfoInitializer ArtifactDeploymentDescriptionTypeInfoInitializer_;
+
+struct MonolithicDeploymentDescriptionTypeInfoInitializer
+{
+MonolithicDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (MonolithicDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+MonolithicDeploymentDescriptionTypeInfoInitializer MonolithicDeploymentDescriptionTypeInfoInitializer_;
+
+struct ResourceUsageKindTypeInfoInitializer
+{
+ResourceUsageKindTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ResourceUsageKind));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ResourceUsageKindTypeInfoInitializer ResourceUsageKindTypeInfoInitializer_;
+
+struct InstanceResourceDeploymentDescriptionTypeInfoInitializer
+{
+InstanceResourceDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (InstanceResourceDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+InstanceResourceDeploymentDescriptionTypeInfoInitializer InstanceResourceDeploymentDescriptionTypeInfoInitializer_;
+
+struct InstanceDeploymentDescriptionTypeInfoInitializer
+{
+InstanceDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (InstanceDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+InstanceDeploymentDescriptionTypeInfoInitializer InstanceDeploymentDescriptionTypeInfoInitializer_;
+
+struct CCMComponentPortKindTypeInfoInitializer
+{
+CCMComponentPortKindTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (CCMComponentPortKind));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+CCMComponentPortKindTypeInfoInitializer CCMComponentPortKindTypeInfoInitializer_;
+
+struct ComponentPortDescriptionTypeInfoInitializer
+{
+ComponentPortDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentPortDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentPortDescriptionTypeInfoInitializer ComponentPortDescriptionTypeInfoInitializer_;
+
+struct ComponentPropertyDescriptionTypeInfoInitializer
+{
+ComponentPropertyDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentPropertyDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentPropertyDescriptionTypeInfoInitializer ComponentPropertyDescriptionTypeInfoInitializer_;
+
+struct ComponentExternalPortEndpointTypeInfoInitializer
+{
+ComponentExternalPortEndpointTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentExternalPortEndpoint));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentExternalPortEndpointTypeInfoInitializer ComponentExternalPortEndpointTypeInfoInitializer_;
+
+struct PlanSubcomponentPortEndpointTypeInfoInitializer
+{
+PlanSubcomponentPortEndpointTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (PlanSubcomponentPortEndpoint));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+PlanSubcomponentPortEndpointTypeInfoInitializer PlanSubcomponentPortEndpointTypeInfoInitializer_;
+
+struct ExternalReferenceEndpointTypeInfoInitializer
+{
+ExternalReferenceEndpointTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ExternalReferenceEndpoint));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ExternalReferenceEndpointTypeInfoInitializer ExternalReferenceEndpointTypeInfoInitializer_;
+
+struct ConnectionResourceDeploymentDescriptionTypeInfoInitializer
+{
+ConnectionResourceDeploymentDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ConnectionResourceDeploymentDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ConnectionResourceDeploymentDescriptionTypeInfoInitializer ConnectionResourceDeploymentDescriptionTypeInfoInitializer_;
+
+struct PlanConnectionDescriptionTypeInfoInitializer
+{
+PlanConnectionDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (PlanConnectionDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+PlanConnectionDescriptionTypeInfoInitializer PlanConnectionDescriptionTypeInfoInitializer_;
+
+struct ImplementationDependencyTypeInfoInitializer
+{
+ImplementationDependencyTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ImplementationDependency));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ImplementationDependencyTypeInfoInitializer ImplementationDependencyTypeInfoInitializer_;
+
+struct CapabilityTypeInfoInitializer
+{
+CapabilityTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Capability));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+CapabilityTypeInfoInitializer CapabilityTypeInfoInitializer_;
+
+struct ImplementationRequirementTypeInfoInitializer
+{
+ImplementationRequirementTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ImplementationRequirement));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ImplementationRequirementTypeInfoInitializer ImplementationRequirementTypeInfoInitializer_;
+
+struct ComponentPackageReferenceTypeInfoInitializer
+{
+ComponentPackageReferenceTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentPackageReference));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentPackageReferenceTypeInfoInitializer ComponentPackageReferenceTypeInfoInitializer_;
+
+struct SubcomponentPortEndpointTypeInfoInitializer
+{
+SubcomponentPortEndpointTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SubcomponentPortEndpoint));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SubcomponentPortEndpointTypeInfoInitializer SubcomponentPortEndpointTypeInfoInitializer_;
+
+struct AssemblyConnectionDescriptionTypeInfoInitializer
+{
+AssemblyConnectionDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (AssemblyConnectionDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+AssemblyConnectionDescriptionTypeInfoInitializer AssemblyConnectionDescriptionTypeInfoInitializer_;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+// DataType
+//
+//
+
+void DataType::
+traverse (Type& o)
+{
+pre (o);
+kind (o);
+if (o.enum_p ()) enum_ (o);
+else enum_none (o);
+post (o);
+}
+
+void DataType::
+traverse (Type const& o)
+{
+pre (o);
+kind (o);
+if (o.enum_p ()) enum_ (o);
+else enum_none (o);
+post (o);
+}
+
+void DataType::
+pre (Type&)
+{
+}
+
+void DataType::
+pre (Type const&)
+{
+}
+
+void DataType::
+kind (Type& o)
+{
+dispatch (o.kind ());
+}
+
+void DataType::
+kind (Type const& o)
+{
+dispatch (o.kind ());
+}
+
+void DataType::
+enum_ (Type& o)
+{
+dispatch (o.enum_ ());
+}
+
+void DataType::
+enum_ (Type const& o)
+{
+dispatch (o.enum_ ());
+}
+
+void DataType::
+enum_none (Type&)
+{
+}
+
+void DataType::
+enum_none (Type const&)
+{
+}
+
+void DataType::
+post (Type&)
+{
+}
+
+void DataType::
+post (Type const&)
+{
+}
+
+// DataValue
+//
+//
+
+void DataValue::
+traverse (Type& o)
+{
+pre (o);
+short_ (o);
+long_ (o);
+ushort (o);
+ulong (o);
+float_ (o);
+double_ (o);
+boolean (o);
+octet (o);
+enum_ (o);
+string (o);
+longlong (o);
+ulonglong (o);
+longdouble (o);
+post (o);
+}
+
+void DataValue::
+traverse (Type const& o)
+{
+pre (o);
+short_ (o);
+long_ (o);
+ushort (o);
+ulong (o);
+float_ (o);
+double_ (o);
+boolean (o);
+octet (o);
+enum_ (o);
+string (o);
+longlong (o);
+ulonglong (o);
+longdouble (o);
+post (o);
+}
+
+void DataValue::
+pre (Type&)
+{
+}
+
+void DataValue::
+pre (Type const&)
+{
+}
+
+void DataValue::
+short_ (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::short_iterator b (o.begin_short()), e (o.end_short());
+
+if (b != e)
+{
+short_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) short_next (o);
+}
+
+short_post (o);
+}
+
+else short_none (o);
+}
+
+void DataValue::
+short_ (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::short_const_iterator b (o.begin_short()), e (o.end_short());
+
+if (b != e)
+{
+short_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) short_next (o);
+}
+
+short_post (o);
+}
+
+else short_none (o);
+}
+
+void DataValue::
+short_pre (Type&)
+{
+}
+
+void DataValue::
+short_pre (Type const&)
+{
+}
+
+void DataValue::
+short_next (Type&)
+{
+}
+
+void DataValue::
+short_next (Type const&)
+{
+}
+
+void DataValue::
+short_post (Type&)
+{
+}
+
+void DataValue::
+short_post (Type const&)
+{
+}
+
+void DataValue::
+short_none (Type&)
+{
+}
+
+void DataValue::
+short_none (Type const&)
+{
+}
+
+void DataValue::
+long_ (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::long_iterator b (o.begin_long()), e (o.end_long());
+
+if (b != e)
+{
+long_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) long_next (o);
+}
+
+long_post (o);
+}
+
+else long_none (o);
+}
+
+void DataValue::
+long_ (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::long_const_iterator b (o.begin_long()), e (o.end_long());
+
+if (b != e)
+{
+long_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) long_next (o);
+}
+
+long_post (o);
+}
+
+else long_none (o);
+}
+
+void DataValue::
+long_pre (Type&)
+{
+}
+
+void DataValue::
+long_pre (Type const&)
+{
+}
+
+void DataValue::
+long_next (Type&)
+{
+}
+
+void DataValue::
+long_next (Type const&)
+{
+}
+
+void DataValue::
+long_post (Type&)
+{
+}
+
+void DataValue::
+long_post (Type const&)
+{
+}
+
+void DataValue::
+long_none (Type&)
+{
+}
+
+void DataValue::
+long_none (Type const&)
+{
+}
+
+void DataValue::
+ushort (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ushort_iterator b (o.begin_ushort()), e (o.end_ushort());
+
+if (b != e)
+{
+ushort_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ushort_next (o);
+}
+
+ushort_post (o);
+}
+
+else ushort_none (o);
+}
+
+void DataValue::
+ushort (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ushort_const_iterator b (o.begin_ushort()), e (o.end_ushort());
+
+if (b != e)
+{
+ushort_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ushort_next (o);
+}
+
+ushort_post (o);
+}
+
+else ushort_none (o);
+}
+
+void DataValue::
+ushort_pre (Type&)
+{
+}
+
+void DataValue::
+ushort_pre (Type const&)
+{
+}
+
+void DataValue::
+ushort_next (Type&)
+{
+}
+
+void DataValue::
+ushort_next (Type const&)
+{
+}
+
+void DataValue::
+ushort_post (Type&)
+{
+}
+
+void DataValue::
+ushort_post (Type const&)
+{
+}
+
+void DataValue::
+ushort_none (Type&)
+{
+}
+
+void DataValue::
+ushort_none (Type const&)
+{
+}
+
+void DataValue::
+ulong (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ulong_iterator b (o.begin_ulong()), e (o.end_ulong());
+
+if (b != e)
+{
+ulong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ulong_next (o);
+}
+
+ulong_post (o);
+}
+
+else ulong_none (o);
+}
+
+void DataValue::
+ulong (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ulong_const_iterator b (o.begin_ulong()), e (o.end_ulong());
+
+if (b != e)
+{
+ulong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ulong_next (o);
+}
+
+ulong_post (o);
+}
+
+else ulong_none (o);
+}
+
+void DataValue::
+ulong_pre (Type&)
+{
+}
+
+void DataValue::
+ulong_pre (Type const&)
+{
+}
+
+void DataValue::
+ulong_next (Type&)
+{
+}
+
+void DataValue::
+ulong_next (Type const&)
+{
+}
+
+void DataValue::
+ulong_post (Type&)
+{
+}
+
+void DataValue::
+ulong_post (Type const&)
+{
+}
+
+void DataValue::
+ulong_none (Type&)
+{
+}
+
+void DataValue::
+ulong_none (Type const&)
+{
+}
+
+void DataValue::
+float_ (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::float_iterator b (o.begin_float()), e (o.end_float());
+
+if (b != e)
+{
+float_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) float_next (o);
+}
+
+float_post (o);
+}
+
+else float_none (o);
+}
+
+void DataValue::
+float_ (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::float_const_iterator b (o.begin_float()), e (o.end_float());
+
+if (b != e)
+{
+float_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) float_next (o);
+}
+
+float_post (o);
+}
+
+else float_none (o);
+}
+
+void DataValue::
+float_pre (Type&)
+{
+}
+
+void DataValue::
+float_pre (Type const&)
+{
+}
+
+void DataValue::
+float_next (Type&)
+{
+}
+
+void DataValue::
+float_next (Type const&)
+{
+}
+
+void DataValue::
+float_post (Type&)
+{
+}
+
+void DataValue::
+float_post (Type const&)
+{
+}
+
+void DataValue::
+float_none (Type&)
+{
+}
+
+void DataValue::
+float_none (Type const&)
+{
+}
+
+void DataValue::
+double_ (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::double_iterator b (o.begin_double()), e (o.end_double());
+
+if (b != e)
+{
+double_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) double_next (o);
+}
+
+double_post (o);
+}
+
+else double_none (o);
+}
+
+void DataValue::
+double_ (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::double_const_iterator b (o.begin_double()), e (o.end_double());
+
+if (b != e)
+{
+double_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) double_next (o);
+}
+
+double_post (o);
+}
+
+else double_none (o);
+}
+
+void DataValue::
+double_pre (Type&)
+{
+}
+
+void DataValue::
+double_pre (Type const&)
+{
+}
+
+void DataValue::
+double_next (Type&)
+{
+}
+
+void DataValue::
+double_next (Type const&)
+{
+}
+
+void DataValue::
+double_post (Type&)
+{
+}
+
+void DataValue::
+double_post (Type const&)
+{
+}
+
+void DataValue::
+double_none (Type&)
+{
+}
+
+void DataValue::
+double_none (Type const&)
+{
+}
+
+void DataValue::
+boolean (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::boolean_iterator b (o.begin_boolean()), e (o.end_boolean());
+
+if (b != e)
+{
+boolean_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) boolean_next (o);
+}
+
+boolean_post (o);
+}
+
+else boolean_none (o);
+}
+
+void DataValue::
+boolean (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::boolean_const_iterator b (o.begin_boolean()), e (o.end_boolean());
+
+if (b != e)
+{
+boolean_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) boolean_next (o);
+}
+
+boolean_post (o);
+}
+
+else boolean_none (o);
+}
+
+void DataValue::
+boolean_pre (Type&)
+{
+}
+
+void DataValue::
+boolean_pre (Type const&)
+{
+}
+
+void DataValue::
+boolean_next (Type&)
+{
+}
+
+void DataValue::
+boolean_next (Type const&)
+{
+}
+
+void DataValue::
+boolean_post (Type&)
+{
+}
+
+void DataValue::
+boolean_post (Type const&)
+{
+}
+
+void DataValue::
+boolean_none (Type&)
+{
+}
+
+void DataValue::
+boolean_none (Type const&)
+{
+}
+
+void DataValue::
+octet (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::octet_iterator b (o.begin_octet()), e (o.end_octet());
+
+if (b != e)
+{
+octet_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) octet_next (o);
+}
+
+octet_post (o);
+}
+
+else octet_none (o);
+}
+
+void DataValue::
+octet (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::octet_const_iterator b (o.begin_octet()), e (o.end_octet());
+
+if (b != e)
+{
+octet_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) octet_next (o);
+}
+
+octet_post (o);
+}
+
+else octet_none (o);
+}
+
+void DataValue::
+octet_pre (Type&)
+{
+}
+
+void DataValue::
+octet_pre (Type const&)
+{
+}
+
+void DataValue::
+octet_next (Type&)
+{
+}
+
+void DataValue::
+octet_next (Type const&)
+{
+}
+
+void DataValue::
+octet_post (Type&)
+{
+}
+
+void DataValue::
+octet_post (Type const&)
+{
+}
+
+void DataValue::
+octet_none (Type&)
+{
+}
+
+void DataValue::
+octet_none (Type const&)
+{
+}
+
+void DataValue::
+enum_ (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::enum_iterator b (o.begin_enum()), e (o.end_enum());
+
+if (b != e)
+{
+enum_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) enum_next (o);
+}
+
+enum_post (o);
+}
+
+else enum_none (o);
+}
+
+void DataValue::
+enum_ (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::enum_const_iterator b (o.begin_enum()), e (o.end_enum());
+
+if (b != e)
+{
+enum_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) enum_next (o);
+}
+
+enum_post (o);
+}
+
+else enum_none (o);
+}
+
+void DataValue::
+enum_pre (Type&)
+{
+}
+
+void DataValue::
+enum_pre (Type const&)
+{
+}
+
+void DataValue::
+enum_next (Type&)
+{
+}
+
+void DataValue::
+enum_next (Type const&)
+{
+}
+
+void DataValue::
+enum_post (Type&)
+{
+}
+
+void DataValue::
+enum_post (Type const&)
+{
+}
+
+void DataValue::
+enum_none (Type&)
+{
+}
+
+void DataValue::
+enum_none (Type const&)
+{
+}
+
+void DataValue::
+string (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::string_iterator b (o.begin_string()), e (o.end_string());
+
+if (b != e)
+{
+string_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) string_next (o);
+}
+
+string_post (o);
+}
+
+else string_none (o);
+}
+
+void DataValue::
+string (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::string_const_iterator b (o.begin_string()), e (o.end_string());
+
+if (b != e)
+{
+string_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) string_next (o);
+}
+
+string_post (o);
+}
+
+else string_none (o);
+}
+
+void DataValue::
+string_pre (Type&)
+{
+}
+
+void DataValue::
+string_pre (Type const&)
+{
+}
+
+void DataValue::
+string_next (Type&)
+{
+}
+
+void DataValue::
+string_next (Type const&)
+{
+}
+
+void DataValue::
+string_post (Type&)
+{
+}
+
+void DataValue::
+string_post (Type const&)
+{
+}
+
+void DataValue::
+string_none (Type&)
+{
+}
+
+void DataValue::
+string_none (Type const&)
+{
+}
+
+void DataValue::
+longlong (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::longlong_iterator b (o.begin_longlong()), e (o.end_longlong());
+
+if (b != e)
+{
+longlong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) longlong_next (o);
+}
+
+longlong_post (o);
+}
+
+else longlong_none (o);
+}
+
+void DataValue::
+longlong (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::longlong_const_iterator b (o.begin_longlong()), e (o.end_longlong());
+
+if (b != e)
+{
+longlong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) longlong_next (o);
+}
+
+longlong_post (o);
+}
+
+else longlong_none (o);
+}
+
+void DataValue::
+longlong_pre (Type&)
+{
+}
+
+void DataValue::
+longlong_pre (Type const&)
+{
+}
+
+void DataValue::
+longlong_next (Type&)
+{
+}
+
+void DataValue::
+longlong_next (Type const&)
+{
+}
+
+void DataValue::
+longlong_post (Type&)
+{
+}
+
+void DataValue::
+longlong_post (Type const&)
+{
+}
+
+void DataValue::
+longlong_none (Type&)
+{
+}
+
+void DataValue::
+longlong_none (Type const&)
+{
+}
+
+void DataValue::
+ulonglong (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ulonglong_iterator b (o.begin_ulonglong()), e (o.end_ulonglong());
+
+if (b != e)
+{
+ulonglong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ulonglong_next (o);
+}
+
+ulonglong_post (o);
+}
+
+else ulonglong_none (o);
+}
+
+void DataValue::
+ulonglong (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::ulonglong_const_iterator b (o.begin_ulonglong()), e (o.end_ulonglong());
+
+if (b != e)
+{
+ulonglong_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) ulonglong_next (o);
+}
+
+ulonglong_post (o);
+}
+
+else ulonglong_none (o);
+}
+
+void DataValue::
+ulonglong_pre (Type&)
+{
+}
+
+void DataValue::
+ulonglong_pre (Type const&)
+{
+}
+
+void DataValue::
+ulonglong_next (Type&)
+{
+}
+
+void DataValue::
+ulonglong_next (Type const&)
+{
+}
+
+void DataValue::
+ulonglong_post (Type&)
+{
+}
+
+void DataValue::
+ulonglong_post (Type const&)
+{
+}
+
+void DataValue::
+ulonglong_none (Type&)
+{
+}
+
+void DataValue::
+ulonglong_none (Type const&)
+{
+}
+
+void DataValue::
+longdouble (Type& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::longdouble_iterator b (o.begin_longdouble()), e (o.end_longdouble());
+
+if (b != e)
+{
+longdouble_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) longdouble_next (o);
+}
+
+longdouble_post (o);
+}
+
+else longdouble_none (o);
+}
+
+void DataValue::
+longdouble (Type const& o)
+{
+// VC6 anathema strikes again
+//
+DataValue::Type::longdouble_const_iterator b (o.begin_longdouble()), e (o.end_longdouble());
+
+if (b != e)
+{
+longdouble_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) longdouble_next (o);
+}
+
+longdouble_post (o);
+}
+
+else longdouble_none (o);
+}
+
+void DataValue::
+longdouble_pre (Type&)
+{
+}
+
+void DataValue::
+longdouble_pre (Type const&)
+{
+}
+
+void DataValue::
+longdouble_next (Type&)
+{
+}
+
+void DataValue::
+longdouble_next (Type const&)
+{
+}
+
+void DataValue::
+longdouble_post (Type&)
+{
+}
+
+void DataValue::
+longdouble_post (Type const&)
+{
+}
+
+void DataValue::
+longdouble_none (Type&)
+{
+}
+
+void DataValue::
+longdouble_none (Type const&)
+{
+}
+
+void DataValue::
+post (Type&)
+{
+}
+
+void DataValue::
+post (Type const&)
+{
+}
+
+// EnumType
+//
+//
+
+void EnumType::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+typeId (o);
+member (o);
+post (o);
+}
+
+void EnumType::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+typeId (o);
+member (o);
+post (o);
+}
+
+void EnumType::
+pre (Type&)
+{
+}
+
+void EnumType::
+pre (Type const&)
+{
+}
+
+void EnumType::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void EnumType::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void EnumType::
+typeId (Type& o)
+{
+dispatch (o.typeId ());
+}
+
+void EnumType::
+typeId (Type const& o)
+{
+dispatch (o.typeId ());
+}
+
+void EnumType::
+member (Type& o)
+{
+// VC6 anathema strikes again
+//
+EnumType::Type::member_iterator b (o.begin_member()), e (o.end_member());
+
+if (b != e)
+{
+member_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) member_next (o);
+}
+
+member_post (o);
+}
+}
+
+void EnumType::
+member (Type const& o)
+{
+// VC6 anathema strikes again
+//
+EnumType::Type::member_const_iterator b (o.begin_member()), e (o.end_member());
+
+if (b != e)
+{
+member_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) member_next (o);
+}
+
+member_post (o);
+}
+}
+
+void EnumType::
+member_pre (Type&)
+{
+}
+
+void EnumType::
+member_pre (Type const&)
+{
+}
+
+void EnumType::
+member_next (Type&)
+{
+}
+
+void EnumType::
+member_next (Type const&)
+{
+}
+
+void EnumType::
+member_post (Type&)
+{
+}
+
+void EnumType::
+member_post (Type const&)
+{
+}
+
+void EnumType::
+post (Type&)
+{
+}
+
+void EnumType::
+post (Type const&)
+{
+}
+
+// Any
+//
+//
+
+void Any::
+traverse (Type& o)
+{
+pre (o);
+type (o);
+value (o);
+post (o);
+}
+
+void Any::
+traverse (Type const& o)
+{
+pre (o);
+type (o);
+value (o);
+post (o);
+}
+
+void Any::
+pre (Type&)
+{
+}
+
+void Any::
+pre (Type const&)
+{
+}
+
+void Any::
+type (Type& o)
+{
+dispatch (o.type ());
+}
+
+void Any::
+type (Type const& o)
+{
+dispatch (o.type ());
+}
+
+void Any::
+value (Type& o)
+{
+dispatch (o.value ());
+}
+
+void Any::
+value (Type const& o)
+{
+dispatch (o.value ());
+}
+
+void Any::
+post (Type&)
+{
+}
+
+void Any::
+post (Type const&)
+{
+}
+
+// Property
+//
+//
+
+void Property::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+value (o);
+post (o);
+}
+
+void Property::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+value (o);
+post (o);
+}
+
+void Property::
+pre (Type&)
+{
+}
+
+void Property::
+pre (Type const&)
+{
+}
+
+void Property::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Property::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Property::
+value (Type& o)
+{
+dispatch (o.value ());
+}
+
+void Property::
+value (Type const& o)
+{
+dispatch (o.value ());
+}
+
+void Property::
+post (Type&)
+{
+}
+
+void Property::
+post (Type const&)
+{
+}
+
+// SatisfierProperty
+//
+//
+
+void SatisfierProperty::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+kind (o);
+dynamic (o);
+value (o);
+post (o);
+}
+
+void SatisfierProperty::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+kind (o);
+dynamic (o);
+value (o);
+post (o);
+}
+
+void SatisfierProperty::
+pre (Type&)
+{
+}
+
+void SatisfierProperty::
+pre (Type const&)
+{
+}
+
+void SatisfierProperty::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void SatisfierProperty::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void SatisfierProperty::
+kind (Type& o)
+{
+dispatch (o.kind ());
+}
+
+void SatisfierProperty::
+kind (Type const& o)
+{
+dispatch (o.kind ());
+}
+
+void SatisfierProperty::
+dynamic (Type& o)
+{
+dispatch (o.dynamic ());
+}
+
+void SatisfierProperty::
+dynamic (Type const& o)
+{
+dispatch (o.dynamic ());
+}
+
+void SatisfierProperty::
+value (Type& o)
+{
+dispatch (o.value ());
+}
+
+void SatisfierProperty::
+value (Type const& o)
+{
+dispatch (o.value ());
+}
+
+void SatisfierProperty::
+post (Type&)
+{
+}
+
+void SatisfierProperty::
+post (Type const&)
+{
+}
+
+// Resource
+//
+//
+
+void Resource::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+property (o);
+post (o);
+}
+
+void Resource::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+property (o);
+post (o);
+}
+
+void Resource::
+pre (Type&)
+{
+}
+
+void Resource::
+pre (Type const&)
+{
+}
+
+void Resource::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Resource::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Resource::
+resourceType (Type& o)
+{
+// VC6 anathema strikes again
+//
+Resource::Type::resourceType_iterator b (o.begin_resourceType()), e (o.end_resourceType());
+
+if (b != e)
+{
+resourceType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resourceType_next (o);
+}
+
+resourceType_post (o);
+}
+}
+
+void Resource::
+resourceType (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Resource::Type::resourceType_const_iterator b (o.begin_resourceType()), e (o.end_resourceType());
+
+if (b != e)
+{
+resourceType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resourceType_next (o);
+}
+
+resourceType_post (o);
+}
+}
+
+void Resource::
+resourceType_pre (Type&)
+{
+}
+
+void Resource::
+resourceType_pre (Type const&)
+{
+}
+
+void Resource::
+resourceType_next (Type&)
+{
+}
+
+void Resource::
+resourceType_next (Type const&)
+{
+}
+
+void Resource::
+resourceType_post (Type&)
+{
+}
+
+void Resource::
+resourceType_post (Type const&)
+{
+}
+
+void Resource::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+Resource::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Resource::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Resource::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Resource::
+property_pre (Type&)
+{
+}
+
+void Resource::
+property_pre (Type const&)
+{
+}
+
+void Resource::
+property_next (Type&)
+{
+}
+
+void Resource::
+property_next (Type const&)
+{
+}
+
+void Resource::
+property_post (Type&)
+{
+}
+
+void Resource::
+property_post (Type const&)
+{
+}
+
+void Resource::
+property_none (Type&)
+{
+}
+
+void Resource::
+property_none (Type const&)
+{
+}
+
+void Resource::
+post (Type&)
+{
+}
+
+void Resource::
+post (Type const&)
+{
+}
+
+// Requirement
+//
+//
+
+void Requirement::
+traverse (Type& o)
+{
+pre (o);
+resourceType (o);
+name (o);
+property (o);
+post (o);
+}
+
+void Requirement::
+traverse (Type const& o)
+{
+pre (o);
+resourceType (o);
+name (o);
+property (o);
+post (o);
+}
+
+void Requirement::
+pre (Type&)
+{
+}
+
+void Requirement::
+pre (Type const&)
+{
+}
+
+void Requirement::
+resourceType (Type& o)
+{
+dispatch (o.resourceType ());
+}
+
+void Requirement::
+resourceType (Type const& o)
+{
+dispatch (o.resourceType ());
+}
+
+void Requirement::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Requirement::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Requirement::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+Requirement::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Requirement::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Requirement::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Requirement::
+property_pre (Type&)
+{
+}
+
+void Requirement::
+property_pre (Type const&)
+{
+}
+
+void Requirement::
+property_next (Type&)
+{
+}
+
+void Requirement::
+property_next (Type const&)
+{
+}
+
+void Requirement::
+property_post (Type&)
+{
+}
+
+void Requirement::
+property_post (Type const&)
+{
+}
+
+void Requirement::
+property_none (Type&)
+{
+}
+
+void Requirement::
+property_none (Type const&)
+{
+}
+
+void Requirement::
+post (Type&)
+{
+}
+
+void Requirement::
+post (Type const&)
+{
+}
+
+// ResourceDeploymentDescription
+//
+//
+
+void ResourceDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void ResourceDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void ResourceDeploymentDescription::
+pre (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void ResourceDeploymentDescription::
+requirementName (Type& o)
+{
+dispatch (o.requirementName ());
+}
+
+void ResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+dispatch (o.requirementName ());
+}
+
+void ResourceDeploymentDescription::
+resourceName (Type& o)
+{
+dispatch (o.resourceName ());
+}
+
+void ResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+dispatch (o.resourceName ());
+}
+
+void ResourceDeploymentDescription::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+ResourceDeploymentDescription::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ResourceDeploymentDescription::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ResourceDeploymentDescription::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ResourceDeploymentDescription::
+property_pre (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_pre (Type const&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_next (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_next (Type const&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_post (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_post (Type const&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_none (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+property_none (Type const&)
+{
+}
+
+void ResourceDeploymentDescription::
+post (Type&)
+{
+}
+
+void ResourceDeploymentDescription::
+post (Type const&)
+{
+}
+
+// ArtifactDeploymentDescription
+//
+//
+
+void ArtifactDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+source (o);
+node (o);
+location (o);
+execParameter (o);
+deployRequirement (o);
+deployedResource (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void ArtifactDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+source (o);
+node (o);
+location (o);
+execParameter (o);
+deployRequirement (o);
+deployedResource (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void ArtifactDeploymentDescription::
+pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void ArtifactDeploymentDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void ArtifactDeploymentDescription::
+source (Type& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::source_iterator b (o.begin_source()), e (o.end_source());
+
+if (b != e)
+{
+source_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) source_next (o);
+}
+
+source_post (o);
+}
+}
+
+void ArtifactDeploymentDescription::
+source (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::source_const_iterator b (o.begin_source()), e (o.end_source());
+
+if (b != e)
+{
+source_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) source_next (o);
+}
+
+source_post (o);
+}
+}
+
+void ArtifactDeploymentDescription::
+source_pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+source_pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+source_next (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+source_next (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+source_post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+source_post (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+node (Type& o)
+{
+dispatch (o.node ());
+}
+
+void ArtifactDeploymentDescription::
+node (Type const& o)
+{
+dispatch (o.node ());
+}
+
+void ArtifactDeploymentDescription::
+location (Type& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::location_iterator b (o.begin_location()), e (o.end_location());
+
+if (b != e)
+{
+location_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) location_next (o);
+}
+
+location_post (o);
+}
+}
+
+void ArtifactDeploymentDescription::
+location (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::location_const_iterator b (o.begin_location()), e (o.end_location());
+
+if (b != e)
+{
+location_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) location_next (o);
+}
+
+location_post (o);
+}
+}
+
+void ArtifactDeploymentDescription::
+location_pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+location_pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+location_next (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+location_next (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+location_post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+location_post (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter (Type& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void ArtifactDeploymentDescription::
+execParameter (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void ArtifactDeploymentDescription::
+execParameter_pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_next (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_next (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_post (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_none (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+execParameter_none (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource (Type& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::deployedResource_iterator b (o.begin_deployedResource()), e (o.end_deployedResource());
+
+if (b != e)
+{
+deployedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployedResource_next (o);
+}
+
+deployedResource_post (o);
+}
+
+else deployedResource_none (o);
+}
+
+void ArtifactDeploymentDescription::
+deployedResource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ArtifactDeploymentDescription::Type::deployedResource_const_iterator b (o.begin_deployedResource()), e (o.end_deployedResource());
+
+if (b != e)
+{
+deployedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployedResource_next (o);
+}
+
+deployedResource_post (o);
+}
+
+else deployedResource_none (o);
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_pre (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_pre (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_next (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_next (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_post (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_none (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_none (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+id (Type& o)
+{
+dispatch (o.id ());
+}
+
+void ArtifactDeploymentDescription::
+id (Type const& o)
+{
+dispatch (o.id ());
+}
+
+void ArtifactDeploymentDescription::
+id_none (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+id_none (Type const&)
+{
+}
+
+void ArtifactDeploymentDescription::
+post (Type&)
+{
+}
+
+void ArtifactDeploymentDescription::
+post (Type const&)
+{
+}
+
+// MonolithicDeploymentDescription
+//
+//
+
+void MonolithicDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+source (o);
+artifact (o);
+execParameter (o);
+deployRequirement (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void MonolithicDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+source (o);
+artifact (o);
+execParameter (o);
+deployRequirement (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void MonolithicDeploymentDescription::
+pre (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void MonolithicDeploymentDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void MonolithicDeploymentDescription::
+source (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::source_iterator b (o.begin_source()), e (o.end_source());
+
+if (b != e)
+{
+source_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) source_next (o);
+}
+
+source_post (o);
+}
+}
+
+void MonolithicDeploymentDescription::
+source (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::source_const_iterator b (o.begin_source()), e (o.end_source());
+
+if (b != e)
+{
+source_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) source_next (o);
+}
+
+source_post (o);
+}
+}
+
+void MonolithicDeploymentDescription::
+source_pre (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+source_pre (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+source_next (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+source_next (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+source_post (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+source_post (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::artifact_iterator b (o.begin_artifact()), e (o.end_artifact());
+
+if (b != e)
+{
+artifact_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) artifact_next (o);
+}
+
+artifact_post (o);
+}
+}
+
+void MonolithicDeploymentDescription::
+artifact (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::artifact_const_iterator b (o.begin_artifact()), e (o.end_artifact());
+
+if (b != e)
+{
+artifact_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) artifact_next (o);
+}
+
+artifact_post (o);
+}
+}
+
+void MonolithicDeploymentDescription::
+artifact_pre (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact_pre (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact_next (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact_next (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact_post (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+artifact_post (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void MonolithicDeploymentDescription::
+execParameter (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void MonolithicDeploymentDescription::
+execParameter_pre (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_pre (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_next (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_next (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_post (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_post (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_none (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+execParameter_none (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicDeploymentDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+id (Type& o)
+{
+dispatch (o.id ());
+}
+
+void MonolithicDeploymentDescription::
+id (Type const& o)
+{
+dispatch (o.id ());
+}
+
+void MonolithicDeploymentDescription::
+id_none (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+id_none (Type const&)
+{
+}
+
+void MonolithicDeploymentDescription::
+post (Type&)
+{
+}
+
+void MonolithicDeploymentDescription::
+post (Type const&)
+{
+}
+
+// InstanceResourceDeploymentDescription
+//
+//
+
+void InstanceResourceDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+resourceUsage (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void InstanceResourceDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+resourceUsage (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void InstanceResourceDeploymentDescription::
+pre (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+resourceUsage (Type& o)
+{
+dispatch (o.resourceUsage ());
+}
+
+void InstanceResourceDeploymentDescription::
+resourceUsage (Type const& o)
+{
+dispatch (o.resourceUsage ());
+}
+
+void InstanceResourceDeploymentDescription::
+requirementName (Type& o)
+{
+dispatch (o.requirementName ());
+}
+
+void InstanceResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+dispatch (o.requirementName ());
+}
+
+void InstanceResourceDeploymentDescription::
+resourceName (Type& o)
+{
+dispatch (o.resourceName ());
+}
+
+void InstanceResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+dispatch (o.resourceName ());
+}
+
+void InstanceResourceDeploymentDescription::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+InstanceResourceDeploymentDescription::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void InstanceResourceDeploymentDescription::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+InstanceResourceDeploymentDescription::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void InstanceResourceDeploymentDescription::
+property_pre (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_pre (Type const&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_next (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_next (Type const&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_post (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_post (Type const&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_none (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+property_none (Type const&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+post (Type&)
+{
+}
+
+void InstanceResourceDeploymentDescription::
+post (Type const&)
+{
+}
+
+// InstanceDeploymentDescription
+//
+//
+
+void InstanceDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+node (o);
+source (o);
+implementation (o);
+configProperty (o);
+if (o.deployedResource_p ()) deployedResource (o);
+else deployedResource_none (o);
+if (o.deployedSharedResource_p ()) deployedSharedResource (o);
+else deployedSharedResource_none (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void InstanceDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+node (o);
+source (o);
+implementation (o);
+configProperty (o);
+if (o.deployedResource_p ()) deployedResource (o);
+else deployedResource_none (o);
+if (o.deployedSharedResource_p ()) deployedSharedResource (o);
+else deployedSharedResource_none (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void InstanceDeploymentDescription::
+pre (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void InstanceDeploymentDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void InstanceDeploymentDescription::
+node (Type& o)
+{
+dispatch (o.node ());
+}
+
+void InstanceDeploymentDescription::
+node (Type const& o)
+{
+dispatch (o.node ());
+}
+
+void InstanceDeploymentDescription::
+source (Type& o)
+{
+dispatch (o.source ());
+}
+
+void InstanceDeploymentDescription::
+source (Type const& o)
+{
+dispatch (o.source ());
+}
+
+void InstanceDeploymentDescription::
+implementation (Type& o)
+{
+dispatch (o.implementation ());
+}
+
+void InstanceDeploymentDescription::
+implementation (Type const& o)
+{
+dispatch (o.implementation ());
+}
+
+void InstanceDeploymentDescription::
+configProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+InstanceDeploymentDescription::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void InstanceDeploymentDescription::
+configProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+InstanceDeploymentDescription::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void InstanceDeploymentDescription::
+configProperty_pre (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_pre (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_next (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_next (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_post (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_post (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_none (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+configProperty_none (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+deployedResource (Type& o)
+{
+dispatch (o.deployedResource ());
+}
+
+void InstanceDeploymentDescription::
+deployedResource (Type const& o)
+{
+dispatch (o.deployedResource ());
+}
+
+void InstanceDeploymentDescription::
+deployedResource_none (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+deployedResource_none (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource (Type& o)
+{
+dispatch (o.deployedSharedResource ());
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource (Type const& o)
+{
+dispatch (o.deployedSharedResource ());
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource_none (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource_none (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+id (Type& o)
+{
+dispatch (o.id ());
+}
+
+void InstanceDeploymentDescription::
+id (Type const& o)
+{
+dispatch (o.id ());
+}
+
+void InstanceDeploymentDescription::
+id_none (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+id_none (Type const&)
+{
+}
+
+void InstanceDeploymentDescription::
+post (Type&)
+{
+}
+
+void InstanceDeploymentDescription::
+post (Type const&)
+{
+}
+
+// ComponentPortDescription
+//
+//
+
+void ComponentPortDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.specificType_p ()) specificType (o);
+else specificType_none (o);
+supportedType (o);
+provider (o);
+exclusiveProvider (o);
+exclusiveUser (o);
+optional (o);
+kind (o);
+post (o);
+}
+
+void ComponentPortDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.specificType_p ()) specificType (o);
+else specificType_none (o);
+supportedType (o);
+provider (o);
+exclusiveProvider (o);
+exclusiveUser (o);
+optional (o);
+kind (o);
+post (o);
+}
+
+void ComponentPortDescription::
+pre (Type&)
+{
+}
+
+void ComponentPortDescription::
+pre (Type const&)
+{
+}
+
+void ComponentPortDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void ComponentPortDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void ComponentPortDescription::
+specificType (Type& o)
+{
+dispatch (o.specificType ());
+}
+
+void ComponentPortDescription::
+specificType (Type const& o)
+{
+dispatch (o.specificType ());
+}
+
+void ComponentPortDescription::
+specificType_none (Type&)
+{
+}
+
+void ComponentPortDescription::
+specificType_none (Type const&)
+{
+}
+
+void ComponentPortDescription::
+supportedType (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPortDescription::Type::supportedType_iterator b (o.begin_supportedType()), e (o.end_supportedType());
+
+if (b != e)
+{
+supportedType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) supportedType_next (o);
+}
+
+supportedType_post (o);
+}
+
+else supportedType_none (o);
+}
+
+void ComponentPortDescription::
+supportedType (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPortDescription::Type::supportedType_const_iterator b (o.begin_supportedType()), e (o.end_supportedType());
+
+if (b != e)
+{
+supportedType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) supportedType_next (o);
+}
+
+supportedType_post (o);
+}
+
+else supportedType_none (o);
+}
+
+void ComponentPortDescription::
+supportedType_pre (Type&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_pre (Type const&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_next (Type&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_next (Type const&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_post (Type&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_post (Type const&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_none (Type&)
+{
+}
+
+void ComponentPortDescription::
+supportedType_none (Type const&)
+{
+}
+
+void ComponentPortDescription::
+provider (Type& o)
+{
+dispatch (o.provider ());
+}
+
+void ComponentPortDescription::
+provider (Type const& o)
+{
+dispatch (o.provider ());
+}
+
+void ComponentPortDescription::
+exclusiveProvider (Type& o)
+{
+dispatch (o.exclusiveProvider ());
+}
+
+void ComponentPortDescription::
+exclusiveProvider (Type const& o)
+{
+dispatch (o.exclusiveProvider ());
+}
+
+void ComponentPortDescription::
+exclusiveUser (Type& o)
+{
+dispatch (o.exclusiveUser ());
+}
+
+void ComponentPortDescription::
+exclusiveUser (Type const& o)
+{
+dispatch (o.exclusiveUser ());
+}
+
+void ComponentPortDescription::
+optional (Type& o)
+{
+dispatch (o.optional ());
+}
+
+void ComponentPortDescription::
+optional (Type const& o)
+{
+dispatch (o.optional ());
+}
+
+void ComponentPortDescription::
+kind (Type& o)
+{
+dispatch (o.kind ());
+}
+
+void ComponentPortDescription::
+kind (Type const& o)
+{
+dispatch (o.kind ());
+}
+
+void ComponentPortDescription::
+post (Type&)
+{
+}
+
+void ComponentPortDescription::
+post (Type const&)
+{
+}
+
+// ComponentPropertyDescription
+//
+//
+
+void ComponentPropertyDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+type (o);
+post (o);
+}
+
+void ComponentPropertyDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+type (o);
+post (o);
+}
+
+void ComponentPropertyDescription::
+pre (Type&)
+{
+}
+
+void ComponentPropertyDescription::
+pre (Type const&)
+{
+}
+
+void ComponentPropertyDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void ComponentPropertyDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void ComponentPropertyDescription::
+type (Type& o)
+{
+dispatch (o.type ());
+}
+
+void ComponentPropertyDescription::
+type (Type const& o)
+{
+dispatch (o.type ());
+}
+
+void ComponentPropertyDescription::
+post (Type&)
+{
+}
+
+void ComponentPropertyDescription::
+post (Type const&)
+{
+}
+
+// ComponentExternalPortEndpoint
+//
+//
+
+void ComponentExternalPortEndpoint::
+traverse (Type& o)
+{
+pre (o);
+portName (o);
+post (o);
+}
+
+void ComponentExternalPortEndpoint::
+traverse (Type const& o)
+{
+pre (o);
+portName (o);
+post (o);
+}
+
+void ComponentExternalPortEndpoint::
+pre (Type&)
+{
+}
+
+void ComponentExternalPortEndpoint::
+pre (Type const&)
+{
+}
+
+void ComponentExternalPortEndpoint::
+portName (Type& o)
+{
+dispatch (o.portName ());
+}
+
+void ComponentExternalPortEndpoint::
+portName (Type const& o)
+{
+dispatch (o.portName ());
+}
+
+void ComponentExternalPortEndpoint::
+post (Type&)
+{
+}
+
+void ComponentExternalPortEndpoint::
+post (Type const&)
+{
+}
+
+// PlanSubcomponentPortEndpoint
+//
+//
+
+void PlanSubcomponentPortEndpoint::
+traverse (Type& o)
+{
+pre (o);
+portName (o);
+if (o.provider_p ()) provider (o);
+else provider_none (o);
+kind (o);
+instance (o);
+post (o);
+}
+
+void PlanSubcomponentPortEndpoint::
+traverse (Type const& o)
+{
+pre (o);
+portName (o);
+if (o.provider_p ()) provider (o);
+else provider_none (o);
+kind (o);
+instance (o);
+post (o);
+}
+
+void PlanSubcomponentPortEndpoint::
+pre (Type&)
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+pre (Type const&)
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+portName (Type& o)
+{
+dispatch (o.portName ());
+}
+
+void PlanSubcomponentPortEndpoint::
+portName (Type const& o)
+{
+dispatch (o.portName ());
+}
+
+void PlanSubcomponentPortEndpoint::
+provider (Type& o)
+{
+dispatch (o.provider ());
+}
+
+void PlanSubcomponentPortEndpoint::
+provider (Type const& o)
+{
+dispatch (o.provider ());
+}
+
+void PlanSubcomponentPortEndpoint::
+provider_none (Type&)
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+provider_none (Type const&)
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+kind (Type& o)
+{
+dispatch (o.kind ());
+}
+
+void PlanSubcomponentPortEndpoint::
+kind (Type const& o)
+{
+dispatch (o.kind ());
+}
+
+void PlanSubcomponentPortEndpoint::
+instance (Type& o)
+{
+dispatch (o.instance ());
+}
+
+void PlanSubcomponentPortEndpoint::
+instance (Type const& o)
+{
+dispatch (o.instance ());
+}
+
+void PlanSubcomponentPortEndpoint::
+post (Type&)
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+post (Type const&)
+{
+}
+
+// ExternalReferenceEndpoint
+//
+//
+
+void ExternalReferenceEndpoint::
+traverse (Type& o)
+{
+pre (o);
+location (o);
+post (o);
+}
+
+void ExternalReferenceEndpoint::
+traverse (Type const& o)
+{
+pre (o);
+location (o);
+post (o);
+}
+
+void ExternalReferenceEndpoint::
+pre (Type&)
+{
+}
+
+void ExternalReferenceEndpoint::
+pre (Type const&)
+{
+}
+
+void ExternalReferenceEndpoint::
+location (Type& o)
+{
+dispatch (o.location ());
+}
+
+void ExternalReferenceEndpoint::
+location (Type const& o)
+{
+dispatch (o.location ());
+}
+
+void ExternalReferenceEndpoint::
+post (Type&)
+{
+}
+
+void ExternalReferenceEndpoint::
+post (Type const&)
+{
+}
+
+// ConnectionResourceDeploymentDescription
+//
+//
+
+void ConnectionResourceDeploymentDescription::
+traverse (Type& o)
+{
+pre (o);
+targetName (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+traverse (Type const& o)
+{
+pre (o);
+targetName (o);
+requirementName (o);
+resourceName (o);
+property (o);
+post (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+pre (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+pre (Type const&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+targetName (Type& o)
+{
+dispatch (o.targetName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+targetName (Type const& o)
+{
+dispatch (o.targetName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+requirementName (Type& o)
+{
+dispatch (o.requirementName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+dispatch (o.requirementName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+resourceName (Type& o)
+{
+dispatch (o.resourceName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+dispatch (o.resourceName ());
+}
+
+void ConnectionResourceDeploymentDescription::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+ConnectionResourceDeploymentDescription::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ConnectionResourceDeploymentDescription::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+property_pre (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_pre (Type const&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_next (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_next (Type const&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_post (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_post (Type const&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_none (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+property_none (Type const&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+post (Type&)
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+post (Type const&)
+{
+}
+
+// PlanConnectionDescription
+//
+//
+
+void PlanConnectionDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.source_p ()) source (o);
+else source_none (o);
+deployRequirement (o);
+externalEndpoint (o);
+internalEndpoint (o);
+externalReference (o);
+deployedResource (o);
+post (o);
+}
+
+void PlanConnectionDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.source_p ()) source (o);
+else source_none (o);
+deployRequirement (o);
+externalEndpoint (o);
+internalEndpoint (o);
+externalReference (o);
+deployedResource (o);
+post (o);
+}
+
+void PlanConnectionDescription::
+pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void PlanConnectionDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void PlanConnectionDescription::
+source (Type& o)
+{
+dispatch (o.source ());
+}
+
+void PlanConnectionDescription::
+source (Type const& o)
+{
+dispatch (o.source ());
+}
+
+void PlanConnectionDescription::
+source_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+source_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void PlanConnectionDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void PlanConnectionDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint (Type& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::externalEndpoint_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint());
+
+if (b != e)
+{
+externalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalEndpoint_next (o);
+}
+
+externalEndpoint_post (o);
+}
+
+else externalEndpoint_none (o);
+}
+
+void PlanConnectionDescription::
+externalEndpoint (Type const& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::externalEndpoint_const_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint());
+
+if (b != e)
+{
+externalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalEndpoint_next (o);
+}
+
+externalEndpoint_post (o);
+}
+
+else externalEndpoint_none (o);
+}
+
+void PlanConnectionDescription::
+externalEndpoint_pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_next (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_next (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_post (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalEndpoint_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint (Type& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::internalEndpoint_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint());
+
+if (b != e)
+{
+internalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) internalEndpoint_next (o);
+}
+
+internalEndpoint_post (o);
+}
+
+else internalEndpoint_none (o);
+}
+
+void PlanConnectionDescription::
+internalEndpoint (Type const& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::internalEndpoint_const_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint());
+
+if (b != e)
+{
+internalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) internalEndpoint_next (o);
+}
+
+internalEndpoint_post (o);
+}
+
+else internalEndpoint_none (o);
+}
+
+void PlanConnectionDescription::
+internalEndpoint_pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_next (Type&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_next (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_post (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+internalEndpoint_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference (Type& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::externalReference_iterator b (o.begin_externalReference()), e (o.end_externalReference());
+
+if (b != e)
+{
+externalReference_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalReference_next (o);
+}
+
+externalReference_post (o);
+}
+
+else externalReference_none (o);
+}
+
+void PlanConnectionDescription::
+externalReference (Type const& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::externalReference_const_iterator b (o.begin_externalReference()), e (o.end_externalReference());
+
+if (b != e)
+{
+externalReference_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalReference_next (o);
+}
+
+externalReference_post (o);
+}
+
+else externalReference_none (o);
+}
+
+void PlanConnectionDescription::
+externalReference_pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_next (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_next (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_post (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+externalReference_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource (Type& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::deployedResource_iterator b (o.begin_deployedResource()), e (o.end_deployedResource());
+
+if (b != e)
+{
+deployedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployedResource_next (o);
+}
+
+deployedResource_post (o);
+}
+
+else deployedResource_none (o);
+}
+
+void PlanConnectionDescription::
+deployedResource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+PlanConnectionDescription::Type::deployedResource_const_iterator b (o.begin_deployedResource()), e (o.end_deployedResource());
+
+if (b != e)
+{
+deployedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployedResource_next (o);
+}
+
+deployedResource_post (o);
+}
+
+else deployedResource_none (o);
+}
+
+void PlanConnectionDescription::
+deployedResource_pre (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_pre (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_next (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_next (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_post (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_none (Type&)
+{
+}
+
+void PlanConnectionDescription::
+deployedResource_none (Type const&)
+{
+}
+
+void PlanConnectionDescription::
+post (Type&)
+{
+}
+
+void PlanConnectionDescription::
+post (Type const&)
+{
+}
+
+// ImplementationDependency
+//
+//
+
+void ImplementationDependency::
+traverse (Type& o)
+{
+pre (o);
+requiredType (o);
+post (o);
+}
+
+void ImplementationDependency::
+traverse (Type const& o)
+{
+pre (o);
+requiredType (o);
+post (o);
+}
+
+void ImplementationDependency::
+pre (Type&)
+{
+}
+
+void ImplementationDependency::
+pre (Type const&)
+{
+}
+
+void ImplementationDependency::
+requiredType (Type& o)
+{
+dispatch (o.requiredType ());
+}
+
+void ImplementationDependency::
+requiredType (Type const& o)
+{
+dispatch (o.requiredType ());
+}
+
+void ImplementationDependency::
+post (Type&)
+{
+}
+
+void ImplementationDependency::
+post (Type const&)
+{
+}
+
+// Capability
+//
+//
+
+void Capability::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+property (o);
+post (o);
+}
+
+void Capability::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+property (o);
+post (o);
+}
+
+void Capability::
+pre (Type&)
+{
+}
+
+void Capability::
+pre (Type const&)
+{
+}
+
+void Capability::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Capability::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Capability::
+resourceType (Type& o)
+{
+// VC6 anathema strikes again
+//
+Capability::Type::resourceType_iterator b (o.begin_resourceType()), e (o.end_resourceType());
+
+if (b != e)
+{
+resourceType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resourceType_next (o);
+}
+
+resourceType_post (o);
+}
+}
+
+void Capability::
+resourceType (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Capability::Type::resourceType_const_iterator b (o.begin_resourceType()), e (o.end_resourceType());
+
+if (b != e)
+{
+resourceType_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resourceType_next (o);
+}
+
+resourceType_post (o);
+}
+}
+
+void Capability::
+resourceType_pre (Type&)
+{
+}
+
+void Capability::
+resourceType_pre (Type const&)
+{
+}
+
+void Capability::
+resourceType_next (Type&)
+{
+}
+
+void Capability::
+resourceType_next (Type const&)
+{
+}
+
+void Capability::
+resourceType_post (Type&)
+{
+}
+
+void Capability::
+resourceType_post (Type const&)
+{
+}
+
+void Capability::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+Capability::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Capability::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Capability::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void Capability::
+property_pre (Type&)
+{
+}
+
+void Capability::
+property_pre (Type const&)
+{
+}
+
+void Capability::
+property_next (Type&)
+{
+}
+
+void Capability::
+property_next (Type const&)
+{
+}
+
+void Capability::
+property_post (Type&)
+{
+}
+
+void Capability::
+property_post (Type const&)
+{
+}
+
+void Capability::
+property_none (Type&)
+{
+}
+
+void Capability::
+property_none (Type const&)
+{
+}
+
+void Capability::
+post (Type&)
+{
+}
+
+void Capability::
+post (Type const&)
+{
+}
+
+// ImplementationRequirement
+//
+//
+
+void ImplementationRequirement::
+traverse (Type& o)
+{
+pre (o);
+if (o.resourceUsage_p ()) resourceUsage (o);
+else resourceUsage_none (o);
+if (o.resourcePort_p ()) resourcePort (o);
+else resourcePort_none (o);
+if (o.componentPort_p ()) componentPort (o);
+else componentPort_none (o);
+resourceType (o);
+name (o);
+property (o);
+post (o);
+}
+
+void ImplementationRequirement::
+traverse (Type const& o)
+{
+pre (o);
+if (o.resourceUsage_p ()) resourceUsage (o);
+else resourceUsage_none (o);
+if (o.resourcePort_p ()) resourcePort (o);
+else resourcePort_none (o);
+if (o.componentPort_p ()) componentPort (o);
+else componentPort_none (o);
+resourceType (o);
+name (o);
+property (o);
+post (o);
+}
+
+void ImplementationRequirement::
+pre (Type&)
+{
+}
+
+void ImplementationRequirement::
+pre (Type const&)
+{
+}
+
+void ImplementationRequirement::
+resourceUsage (Type& o)
+{
+dispatch (o.resourceUsage ());
+}
+
+void ImplementationRequirement::
+resourceUsage (Type const& o)
+{
+dispatch (o.resourceUsage ());
+}
+
+void ImplementationRequirement::
+resourceUsage_none (Type&)
+{
+}
+
+void ImplementationRequirement::
+resourceUsage_none (Type const&)
+{
+}
+
+void ImplementationRequirement::
+resourcePort (Type& o)
+{
+dispatch (o.resourcePort ());
+}
+
+void ImplementationRequirement::
+resourcePort (Type const& o)
+{
+dispatch (o.resourcePort ());
+}
+
+void ImplementationRequirement::
+resourcePort_none (Type&)
+{
+}
+
+void ImplementationRequirement::
+resourcePort_none (Type const&)
+{
+}
+
+void ImplementationRequirement::
+componentPort (Type& o)
+{
+dispatch (o.componentPort ());
+}
+
+void ImplementationRequirement::
+componentPort (Type const& o)
+{
+dispatch (o.componentPort ());
+}
+
+void ImplementationRequirement::
+componentPort_none (Type&)
+{
+}
+
+void ImplementationRequirement::
+componentPort_none (Type const&)
+{
+}
+
+void ImplementationRequirement::
+resourceType (Type& o)
+{
+dispatch (o.resourceType ());
+}
+
+void ImplementationRequirement::
+resourceType (Type const& o)
+{
+dispatch (o.resourceType ());
+}
+
+void ImplementationRequirement::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void ImplementationRequirement::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void ImplementationRequirement::
+property (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationRequirement::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ImplementationRequirement::
+property (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationRequirement::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+if (b != e)
+{
+property_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) property_next (o);
+}
+
+property_post (o);
+}
+
+else property_none (o);
+}
+
+void ImplementationRequirement::
+property_pre (Type&)
+{
+}
+
+void ImplementationRequirement::
+property_pre (Type const&)
+{
+}
+
+void ImplementationRequirement::
+property_next (Type&)
+{
+}
+
+void ImplementationRequirement::
+property_next (Type const&)
+{
+}
+
+void ImplementationRequirement::
+property_post (Type&)
+{
+}
+
+void ImplementationRequirement::
+property_post (Type const&)
+{
+}
+
+void ImplementationRequirement::
+property_none (Type&)
+{
+}
+
+void ImplementationRequirement::
+property_none (Type const&)
+{
+}
+
+void ImplementationRequirement::
+post (Type&)
+{
+}
+
+void ImplementationRequirement::
+post (Type const&)
+{
+}
+
+// ComponentPackageReference
+//
+//
+
+void ComponentPackageReference::
+traverse (Type& o)
+{
+pre (o);
+if (o.requiredUUID_p ()) requiredUUID (o);
+else requiredUUID_none (o);
+if (o.requiredName_p ()) requiredName (o);
+else requiredName_none (o);
+requiredType (o);
+post (o);
+}
+
+void ComponentPackageReference::
+traverse (Type const& o)
+{
+pre (o);
+if (o.requiredUUID_p ()) requiredUUID (o);
+else requiredUUID_none (o);
+if (o.requiredName_p ()) requiredName (o);
+else requiredName_none (o);
+requiredType (o);
+post (o);
+}
+
+void ComponentPackageReference::
+pre (Type&)
+{
+}
+
+void ComponentPackageReference::
+pre (Type const&)
+{
+}
+
+void ComponentPackageReference::
+requiredUUID (Type& o)
+{
+dispatch (o.requiredUUID ());
+}
+
+void ComponentPackageReference::
+requiredUUID (Type const& o)
+{
+dispatch (o.requiredUUID ());
+}
+
+void ComponentPackageReference::
+requiredUUID_none (Type&)
+{
+}
+
+void ComponentPackageReference::
+requiredUUID_none (Type const&)
+{
+}
+
+void ComponentPackageReference::
+requiredName (Type& o)
+{
+dispatch (o.requiredName ());
+}
+
+void ComponentPackageReference::
+requiredName (Type const& o)
+{
+dispatch (o.requiredName ());
+}
+
+void ComponentPackageReference::
+requiredName_none (Type&)
+{
+}
+
+void ComponentPackageReference::
+requiredName_none (Type const&)
+{
+}
+
+void ComponentPackageReference::
+requiredType (Type& o)
+{
+dispatch (o.requiredType ());
+}
+
+void ComponentPackageReference::
+requiredType (Type const& o)
+{
+dispatch (o.requiredType ());
+}
+
+void ComponentPackageReference::
+post (Type&)
+{
+}
+
+void ComponentPackageReference::
+post (Type const&)
+{
+}
+
+// SubcomponentPortEndpoint
+//
+//
+
+void SubcomponentPortEndpoint::
+traverse (Type& o)
+{
+pre (o);
+portName (o);
+instance (o);
+post (o);
+}
+
+void SubcomponentPortEndpoint::
+traverse (Type const& o)
+{
+pre (o);
+portName (o);
+instance (o);
+post (o);
+}
+
+void SubcomponentPortEndpoint::
+pre (Type&)
+{
+}
+
+void SubcomponentPortEndpoint::
+pre (Type const&)
+{
+}
+
+void SubcomponentPortEndpoint::
+portName (Type& o)
+{
+dispatch (o.portName ());
+}
+
+void SubcomponentPortEndpoint::
+portName (Type const& o)
+{
+dispatch (o.portName ());
+}
+
+void SubcomponentPortEndpoint::
+instance (Type& o)
+{
+dispatch (o.instance ());
+}
+
+void SubcomponentPortEndpoint::
+instance (Type const& o)
+{
+dispatch (o.instance ());
+}
+
+void SubcomponentPortEndpoint::
+post (Type&)
+{
+}
+
+void SubcomponentPortEndpoint::
+post (Type const&)
+{
+}
+
+// AssemblyConnectionDescription
+//
+//
+
+void AssemblyConnectionDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+deployRequirement (o);
+internalEndpoint (o);
+externalEndpoint (o);
+externalReference (o);
+post (o);
+}
+
+void AssemblyConnectionDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+deployRequirement (o);
+internalEndpoint (o);
+externalEndpoint (o);
+externalReference (o);
+post (o);
+}
+
+void AssemblyConnectionDescription::
+pre (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+pre (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void AssemblyConnectionDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void AssemblyConnectionDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void AssemblyConnectionDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint (Type& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::internalEndpoint_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint());
+
+if (b != e)
+{
+internalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) internalEndpoint_next (o);
+}
+
+internalEndpoint_post (o);
+}
+
+else internalEndpoint_none (o);
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint (Type const& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::internalEndpoint_const_iterator b (o.begin_internalEndpoint()), e (o.end_internalEndpoint());
+
+if (b != e)
+{
+internalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) internalEndpoint_next (o);
+}
+
+internalEndpoint_post (o);
+}
+
+else internalEndpoint_none (o);
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_pre (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_pre (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_next (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_next (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_post (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_post (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_none (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_none (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint (Type& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::externalEndpoint_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint());
+
+if (b != e)
+{
+externalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalEndpoint_next (o);
+}
+
+externalEndpoint_post (o);
+}
+
+else externalEndpoint_none (o);
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint (Type const& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::externalEndpoint_const_iterator b (o.begin_externalEndpoint()), e (o.end_externalEndpoint());
+
+if (b != e)
+{
+externalEndpoint_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalEndpoint_next (o);
+}
+
+externalEndpoint_post (o);
+}
+
+else externalEndpoint_none (o);
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_pre (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_pre (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_next (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_next (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_post (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_post (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_none (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_none (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference (Type& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::externalReference_iterator b (o.begin_externalReference()), e (o.end_externalReference());
+
+if (b != e)
+{
+externalReference_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalReference_next (o);
+}
+
+externalReference_post (o);
+}
+
+else externalReference_none (o);
+}
+
+void AssemblyConnectionDescription::
+externalReference (Type const& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyConnectionDescription::Type::externalReference_const_iterator b (o.begin_externalReference()), e (o.end_externalReference());
+
+if (b != e)
+{
+externalReference_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalReference_next (o);
+}
+
+externalReference_post (o);
+}
+
+else externalReference_none (o);
+}
+
+void AssemblyConnectionDescription::
+externalReference_pre (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_pre (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_next (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_next (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_post (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_post (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_none (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+externalReference_none (Type const&)
+{
+}
+
+void AssemblyConnectionDescription::
+post (Type&)
+{
+}
+
+void AssemblyConnectionDescription::
+post (Type const&)
+{
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+// TCKind
+//
+//
+
+TCKind::
+TCKind (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+TCKind::
+TCKind ()
+{
+}
+
+void TCKind::
+traverse (Type const& o)
+{
+::std::basic_string< ACE_TCHAR > s;
+
+if (o == ::CIAO::Config_Handlers::TCKind::tk_null) s = "tk_null";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_void) s = "tk_void";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_short) s = "tk_short";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_long) s = "tk_long";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_ushort) s = "tk_ushort";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_ulong) s = "tk_ulong";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_float) s = "tk_float";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_double) s = "tk_double";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_boolean) s = "tk_boolean";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_char) s = "tk_char";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_octet) s = "tk_octet";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_any) s = "tk_any";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_TypeCode) s = "tk_TypeCode";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_Principal) s = "tk_Principal";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_objref) s = "tk_objref";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_struct) s = "tk_struct";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_union) s = "tk_union";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_enum) s = "tk_enum";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_string) s = "tk_string";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_sequence) s = "tk_sequence";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_array) s = "tk_array";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_alias) s = "tk_alias";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_except) s = "tk_except";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_longlong) s = "tk_longlong";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_ulonglong) s = "tk_ulonglong";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_longdouble) s = "tk_longdouble";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_wchar) s = "tk_wchar";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_wstring) s = "tk_wstring";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_wfixed) s = "tk_wfixed";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_value) s = "tk_value";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_value_box) s = "tk_value_box";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_native) s = "tk_native";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_abstract_interface) s = "tk_abstract_interface";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_local_interface) s = "tk_local_interface";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_component) s = "tk_component";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_home) s = "tk_home";
+else if (o == ::CIAO::Config_Handlers::TCKind::tk_event) s = "tk_event";
+else
+{
+}
+
+if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ())
+{
+a->value (s);
+}
+
+else
+{
+top_().value (s);
+}
+}
+
+// DataType
+//
+//
+
+DataType::
+DataType (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+DataType::
+DataType ()
+{
+}
+
+void DataType::
+traverse (Type const& o)
+{
+Traversal::DataType::traverse (o);
+}
+
+void DataType::
+kind (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("kind", top_ ()));
+Traversal::DataType::kind (o);
+pop_ ();
+}
+
+void DataType::
+enum_ (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("enum", top_ ()));
+Traversal::DataType::enum_ (o);
+pop_ ();
+}
+
+// DataValue
+//
+//
+
+DataValue::
+DataValue (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+DataValue::
+DataValue ()
+{
+}
+
+void DataValue::
+traverse (Type const& o)
+{
+Traversal::DataValue::traverse (o);
+}
+
+void DataValue::
+short_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("short", top_ ()));
+}
+
+void DataValue::
+short_next (Type const& o)
+{
+short_post (o);
+short_pre (o);
+}
+
+void DataValue::
+short_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+long_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("long", top_ ()));
+}
+
+void DataValue::
+long_next (Type const& o)
+{
+long_post (o);
+long_pre (o);
+}
+
+void DataValue::
+long_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+ushort_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("ushort", top_ ()));
+}
+
+void DataValue::
+ushort_next (Type const& o)
+{
+ushort_post (o);
+ushort_pre (o);
+}
+
+void DataValue::
+ushort_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+ulong_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("ulong", top_ ()));
+}
+
+void DataValue::
+ulong_next (Type const& o)
+{
+ulong_post (o);
+ulong_pre (o);
+}
+
+void DataValue::
+ulong_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+float_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("float", top_ ()));
+}
+
+void DataValue::
+float_next (Type const& o)
+{
+float_post (o);
+float_pre (o);
+}
+
+void DataValue::
+float_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+double_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("double", top_ ()));
+}
+
+void DataValue::
+double_next (Type const& o)
+{
+double_post (o);
+double_pre (o);
+}
+
+void DataValue::
+double_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+boolean_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("boolean", top_ ()));
+}
+
+void DataValue::
+boolean_next (Type const& o)
+{
+boolean_post (o);
+boolean_pre (o);
+}
+
+void DataValue::
+boolean_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+octet_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("octet", top_ ()));
+}
+
+void DataValue::
+octet_next (Type const& o)
+{
+octet_post (o);
+octet_pre (o);
+}
+
+void DataValue::
+octet_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+enum_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("enum", top_ ()));
+}
+
+void DataValue::
+enum_next (Type const& o)
+{
+enum_post (o);
+enum_pre (o);
+}
+
+void DataValue::
+enum_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+string_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("string", top_ ()));
+}
+
+void DataValue::
+string_next (Type const& o)
+{
+string_post (o);
+string_pre (o);
+}
+
+void DataValue::
+string_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+longlong_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("longlong", top_ ()));
+}
+
+void DataValue::
+longlong_next (Type const& o)
+{
+longlong_post (o);
+longlong_pre (o);
+}
+
+void DataValue::
+longlong_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+ulonglong_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("ulonglong", top_ ()));
+}
+
+void DataValue::
+ulonglong_next (Type const& o)
+{
+ulonglong_post (o);
+ulonglong_pre (o);
+}
+
+void DataValue::
+ulonglong_post (Type const&)
+{
+pop_ ();
+}
+
+void DataValue::
+longdouble_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("longdouble", top_ ()));
+}
+
+void DataValue::
+longdouble_next (Type const& o)
+{
+longdouble_post (o);
+longdouble_pre (o);
+}
+
+void DataValue::
+longdouble_post (Type const&)
+{
+pop_ ();
+}
+
+// EnumType
+//
+//
+
+EnumType::
+EnumType (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+EnumType::
+EnumType ()
+{
+}
+
+void EnumType::
+traverse (Type const& o)
+{
+Traversal::EnumType::traverse (o);
+}
+
+void EnumType::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::EnumType::name (o);
+pop_ ();
+}
+
+void EnumType::
+typeId (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("typeId", top_ ()));
+Traversal::EnumType::typeId (o);
+pop_ ();
+}
+
+void EnumType::
+member_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("member", top_ ()));
+}
+
+void EnumType::
+member_next (Type const& o)
+{
+member_post (o);
+member_pre (o);
+}
+
+void EnumType::
+member_post (Type const&)
+{
+pop_ ();
+}
+
+// Any
+//
+//
+
+Any::
+Any (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Any::
+Any ()
+{
+}
+
+void Any::
+traverse (Type const& o)
+{
+Traversal::Any::traverse (o);
+}
+
+void Any::
+type (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("type", top_ ()));
+Traversal::Any::type (o);
+pop_ ();
+}
+
+void Any::
+value (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("value", top_ ()));
+Traversal::Any::value (o);
+pop_ ();
+}
+
+// Property
+//
+//
+
+Property::
+Property (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Property::
+Property ()
+{
+}
+
+void Property::
+traverse (Type const& o)
+{
+Traversal::Property::traverse (o);
+}
+
+void Property::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Property::name (o);
+pop_ ();
+}
+
+void Property::
+value (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("value", top_ ()));
+Traversal::Property::value (o);
+pop_ ();
+}
+
+// SatisfierPropertyKind
+//
+//
+
+SatisfierPropertyKind::
+SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SatisfierPropertyKind::
+SatisfierPropertyKind ()
+{
+}
+
+void SatisfierPropertyKind::
+traverse (Type const& o)
+{
+::std::basic_string< ACE_TCHAR > s;
+
+if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Quantity) s = "Quantity";
+else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Capacity) s = "Capacity";
+else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Minimum) s = "Minimum";
+else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Maximum) s = "Maximum";
+else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Attribute) s = "Attribute";
+else if (o == ::CIAO::Config_Handlers::SatisfierPropertyKind::Selection) s = "Selection";
+else
+{
+}
+
+if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ())
+{
+a->value (s);
+}
+
+else
+{
+top_().value (s);
+}
+}
+
+// SatisfierProperty
+//
+//
+
+SatisfierProperty::
+SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SatisfierProperty::
+SatisfierProperty ()
+{
+}
+
+void SatisfierProperty::
+traverse (Type const& o)
+{
+Traversal::SatisfierProperty::traverse (o);
+}
+
+void SatisfierProperty::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::SatisfierProperty::name (o);
+pop_ ();
+}
+
+void SatisfierProperty::
+kind (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("kind", top_ ()));
+Traversal::SatisfierProperty::kind (o);
+pop_ ();
+}
+
+void SatisfierProperty::
+dynamic (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dynamic", top_ ()));
+Traversal::SatisfierProperty::dynamic (o);
+pop_ ();
+}
+
+void SatisfierProperty::
+value (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("value", top_ ()));
+Traversal::SatisfierProperty::value (o);
+pop_ ();
+}
+
+// Resource
+//
+//
+
+Resource::
+Resource (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Resource::
+Resource ()
+{
+}
+
+void Resource::
+traverse (Type const& o)
+{
+Traversal::Resource::traverse (o);
+}
+
+void Resource::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Resource::name (o);
+pop_ ();
+}
+
+void Resource::
+resourceType_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceType", top_ ()));
+}
+
+void Resource::
+resourceType_next (Type const& o)
+{
+resourceType_post (o);
+resourceType_pre (o);
+}
+
+void Resource::
+resourceType_post (Type const&)
+{
+pop_ ();
+}
+
+void Resource::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void Resource::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void Resource::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// Requirement
+//
+//
+
+Requirement::
+Requirement (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Requirement::
+Requirement ()
+{
+}
+
+void Requirement::
+traverse (Type const& o)
+{
+Traversal::Requirement::traverse (o);
+}
+
+void Requirement::
+resourceType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceType", top_ ()));
+Traversal::Requirement::resourceType (o);
+pop_ ();
+}
+
+void Requirement::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Requirement::name (o);
+pop_ ();
+}
+
+void Requirement::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void Requirement::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void Requirement::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// ResourceDeploymentDescription
+//
+//
+
+ResourceDeploymentDescription::
+ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ResourceDeploymentDescription::
+ResourceDeploymentDescription ()
+{
+}
+
+void ResourceDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::ResourceDeploymentDescription::traverse (o);
+}
+
+void ResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requirementName", top_ ()));
+Traversal::ResourceDeploymentDescription::requirementName (o);
+pop_ ();
+}
+
+void ResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceName", top_ ()));
+Traversal::ResourceDeploymentDescription::resourceName (o);
+pop_ ();
+}
+
+void ResourceDeploymentDescription::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void ResourceDeploymentDescription::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void ResourceDeploymentDescription::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// ArtifactDeploymentDescription
+//
+//
+
+ArtifactDeploymentDescription::
+ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ArtifactDeploymentDescription::
+ArtifactDeploymentDescription ()
+{
+}
+
+void ArtifactDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::ArtifactDeploymentDescription::traverse (o);
+}
+
+void ArtifactDeploymentDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::ArtifactDeploymentDescription::name (o);
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+source_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("source", top_ ()));
+}
+
+void ArtifactDeploymentDescription::
+source_next (Type const& o)
+{
+source_post (o);
+source_pre (o);
+}
+
+void ArtifactDeploymentDescription::
+source_post (Type const&)
+{
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+node (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("node", top_ ()));
+Traversal::ArtifactDeploymentDescription::node (o);
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+location_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("location", top_ ()));
+}
+
+void ArtifactDeploymentDescription::
+location_next (Type const& o)
+{
+location_post (o);
+location_pre (o);
+}
+
+void ArtifactDeploymentDescription::
+location_post (Type const&)
+{
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+execParameter_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("execParameter", top_ ()));
+}
+
+void ArtifactDeploymentDescription::
+execParameter_next (Type const& o)
+{
+execParameter_post (o);
+execParameter_pre (o);
+}
+
+void ArtifactDeploymentDescription::
+execParameter_post (Type const&)
+{
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void ArtifactDeploymentDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployedResource", top_ ()));
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_next (Type const& o)
+{
+deployedResource_post (o);
+deployedResource_pre (o);
+}
+
+void ArtifactDeploymentDescription::
+deployedResource_post (Type const&)
+{
+pop_ ();
+}
+
+void ArtifactDeploymentDescription::
+id (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+attr_ (&a);
+Traversal::ArtifactDeploymentDescription::id (o);
+attr_ (0);
+}
+
+// MonolithicDeploymentDescription
+//
+//
+
+MonolithicDeploymentDescription::
+MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+MonolithicDeploymentDescription::
+MonolithicDeploymentDescription ()
+{
+}
+
+void MonolithicDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::MonolithicDeploymentDescription::traverse (o);
+}
+
+void MonolithicDeploymentDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::MonolithicDeploymentDescription::name (o);
+pop_ ();
+}
+
+void MonolithicDeploymentDescription::
+source_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("source", top_ ()));
+}
+
+void MonolithicDeploymentDescription::
+source_next (Type const& o)
+{
+source_post (o);
+source_pre (o);
+}
+
+void MonolithicDeploymentDescription::
+source_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicDeploymentDescription::
+artifact_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("artifact", top_ ()));
+}
+
+void MonolithicDeploymentDescription::
+artifact_next (Type const& o)
+{
+artifact_post (o);
+artifact_pre (o);
+}
+
+void MonolithicDeploymentDescription::
+artifact_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicDeploymentDescription::
+execParameter_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("execParameter", top_ ()));
+}
+
+void MonolithicDeploymentDescription::
+execParameter_next (Type const& o)
+{
+execParameter_post (o);
+execParameter_pre (o);
+}
+
+void MonolithicDeploymentDescription::
+execParameter_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void MonolithicDeploymentDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicDeploymentDescription::
+id (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+attr_ (&a);
+Traversal::MonolithicDeploymentDescription::id (o);
+attr_ (0);
+}
+
+// ResourceUsageKind
+//
+//
+
+ResourceUsageKind::
+ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ResourceUsageKind::
+ResourceUsageKind ()
+{
+}
+
+void ResourceUsageKind::
+traverse (Type const& o)
+{
+::std::basic_string< ACE_TCHAR > s;
+
+if (o == ::CIAO::Config_Handlers::ResourceUsageKind::None) s = "None";
+else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::InstanceUsesResource) s = "InstanceUsesResource";
+else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::ResourceUsesInstance) s = "ResourceUsesInstance";
+else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::PortUsesResource) s = "PortUsesResource";
+else if (o == ::CIAO::Config_Handlers::ResourceUsageKind::ResourceUsesPort) s = "ResourceUsesPort";
+else
+{
+}
+
+if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ())
+{
+a->value (s);
+}
+
+else
+{
+top_().value (s);
+}
+}
+
+// InstanceResourceDeploymentDescription
+//
+//
+
+InstanceResourceDeploymentDescription::
+InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+InstanceResourceDeploymentDescription::
+InstanceResourceDeploymentDescription ()
+{
+}
+
+void InstanceResourceDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::InstanceResourceDeploymentDescription::traverse (o);
+}
+
+void InstanceResourceDeploymentDescription::
+resourceUsage (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceUsage", top_ ()));
+Traversal::InstanceResourceDeploymentDescription::resourceUsage (o);
+pop_ ();
+}
+
+void InstanceResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requirementName", top_ ()));
+Traversal::InstanceResourceDeploymentDescription::requirementName (o);
+pop_ ();
+}
+
+void InstanceResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceName", top_ ()));
+Traversal::InstanceResourceDeploymentDescription::resourceName (o);
+pop_ ();
+}
+
+void InstanceResourceDeploymentDescription::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void InstanceResourceDeploymentDescription::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void InstanceResourceDeploymentDescription::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// InstanceDeploymentDescription
+//
+//
+
+InstanceDeploymentDescription::
+InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+InstanceDeploymentDescription::
+InstanceDeploymentDescription ()
+{
+}
+
+void InstanceDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::InstanceDeploymentDescription::traverse (o);
+}
+
+void InstanceDeploymentDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::InstanceDeploymentDescription::name (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+node (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("node", top_ ()));
+Traversal::InstanceDeploymentDescription::node (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+source (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("source", top_ ()));
+Traversal::InstanceDeploymentDescription::source (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+implementation (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("implementation", top_ ()));
+Traversal::InstanceDeploymentDescription::implementation (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+configProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+}
+
+void InstanceDeploymentDescription::
+configProperty_next (Type const& o)
+{
+configProperty_post (o);
+configProperty_pre (o);
+}
+
+void InstanceDeploymentDescription::
+configProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+deployedResource (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployedResource", top_ ()));
+Traversal::InstanceDeploymentDescription::deployedResource (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+deployedSharedResource (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployedSharedResource", top_ ()));
+Traversal::InstanceDeploymentDescription::deployedSharedResource (o);
+pop_ ();
+}
+
+void InstanceDeploymentDescription::
+id (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+attr_ (&a);
+Traversal::InstanceDeploymentDescription::id (o);
+attr_ (0);
+}
+
+// CCMComponentPortKind
+//
+//
+
+CCMComponentPortKind::
+CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+CCMComponentPortKind::
+CCMComponentPortKind ()
+{
+}
+
+void CCMComponentPortKind::
+traverse (Type const& o)
+{
+::std::basic_string< ACE_TCHAR > s;
+
+if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::Facet) s = "Facet";
+else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::SimplexReceptacle) s = "SimplexReceptacle";
+else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::MultiplexReceptacle) s = "MultiplexReceptacle";
+else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventEmitter) s = "EventEmitter";
+else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventPublisher) s = "EventPublisher";
+else if (o == ::CIAO::Config_Handlers::CCMComponentPortKind::EventConsumer) s = "EventConsumer";
+else
+{
+}
+
+if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ())
+{
+a->value (s);
+}
+
+else
+{
+top_().value (s);
+}
+}
+
+// ComponentPortDescription
+//
+//
+
+ComponentPortDescription::
+ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentPortDescription::
+ComponentPortDescription ()
+{
+}
+
+void ComponentPortDescription::
+traverse (Type const& o)
+{
+Traversal::ComponentPortDescription::traverse (o);
+}
+
+void ComponentPortDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::ComponentPortDescription::name (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+specificType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("specificType", top_ ()));
+Traversal::ComponentPortDescription::specificType (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+supportedType_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("supportedType", top_ ()));
+}
+
+void ComponentPortDescription::
+supportedType_next (Type const& o)
+{
+supportedType_post (o);
+supportedType_pre (o);
+}
+
+void ComponentPortDescription::
+supportedType_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentPortDescription::
+provider (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("provider", top_ ()));
+Traversal::ComponentPortDescription::provider (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+exclusiveProvider (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("exclusiveProvider", top_ ()));
+Traversal::ComponentPortDescription::exclusiveProvider (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+exclusiveUser (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("exclusiveUser", top_ ()));
+Traversal::ComponentPortDescription::exclusiveUser (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+optional (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("optional", top_ ()));
+Traversal::ComponentPortDescription::optional (o);
+pop_ ();
+}
+
+void ComponentPortDescription::
+kind (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("kind", top_ ()));
+Traversal::ComponentPortDescription::kind (o);
+pop_ ();
+}
+
+// ComponentPropertyDescription
+//
+//
+
+ComponentPropertyDescription::
+ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentPropertyDescription::
+ComponentPropertyDescription ()
+{
+}
+
+void ComponentPropertyDescription::
+traverse (Type const& o)
+{
+Traversal::ComponentPropertyDescription::traverse (o);
+}
+
+void ComponentPropertyDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::ComponentPropertyDescription::name (o);
+pop_ ();
+}
+
+void ComponentPropertyDescription::
+type (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("type", top_ ()));
+Traversal::ComponentPropertyDescription::type (o);
+pop_ ();
+}
+
+// ComponentExternalPortEndpoint
+//
+//
+
+ComponentExternalPortEndpoint::
+ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentExternalPortEndpoint::
+ComponentExternalPortEndpoint ()
+{
+}
+
+void ComponentExternalPortEndpoint::
+traverse (Type const& o)
+{
+Traversal::ComponentExternalPortEndpoint::traverse (o);
+}
+
+void ComponentExternalPortEndpoint::
+portName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("portName", top_ ()));
+Traversal::ComponentExternalPortEndpoint::portName (o);
+pop_ ();
+}
+
+// PlanSubcomponentPortEndpoint
+//
+//
+
+PlanSubcomponentPortEndpoint::
+PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+PlanSubcomponentPortEndpoint::
+PlanSubcomponentPortEndpoint ()
+{
+}
+
+void PlanSubcomponentPortEndpoint::
+traverse (Type const& o)
+{
+Traversal::PlanSubcomponentPortEndpoint::traverse (o);
+}
+
+void PlanSubcomponentPortEndpoint::
+portName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("portName", top_ ()));
+Traversal::PlanSubcomponentPortEndpoint::portName (o);
+pop_ ();
+}
+
+void PlanSubcomponentPortEndpoint::
+provider (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("provider", top_ ()));
+Traversal::PlanSubcomponentPortEndpoint::provider (o);
+pop_ ();
+}
+
+void PlanSubcomponentPortEndpoint::
+kind (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("kind", top_ ()));
+Traversal::PlanSubcomponentPortEndpoint::kind (o);
+pop_ ();
+}
+
+void PlanSubcomponentPortEndpoint::
+instance (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("instance", top_ ()));
+Traversal::PlanSubcomponentPortEndpoint::instance (o);
+pop_ ();
+}
+
+// ExternalReferenceEndpoint
+//
+//
+
+ExternalReferenceEndpoint::
+ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ExternalReferenceEndpoint::
+ExternalReferenceEndpoint ()
+{
+}
+
+void ExternalReferenceEndpoint::
+traverse (Type const& o)
+{
+Traversal::ExternalReferenceEndpoint::traverse (o);
+}
+
+void ExternalReferenceEndpoint::
+location (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("location", top_ ()));
+Traversal::ExternalReferenceEndpoint::location (o);
+pop_ ();
+}
+
+// ConnectionResourceDeploymentDescription
+//
+//
+
+ConnectionResourceDeploymentDescription::
+ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ConnectionResourceDeploymentDescription::
+ConnectionResourceDeploymentDescription ()
+{
+}
+
+void ConnectionResourceDeploymentDescription::
+traverse (Type const& o)
+{
+Traversal::ConnectionResourceDeploymentDescription::traverse (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+targetName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("targetName", top_ ()));
+Traversal::ConnectionResourceDeploymentDescription::targetName (o);
+pop_ ();
+}
+
+void ConnectionResourceDeploymentDescription::
+requirementName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requirementName", top_ ()));
+Traversal::ConnectionResourceDeploymentDescription::requirementName (o);
+pop_ ();
+}
+
+void ConnectionResourceDeploymentDescription::
+resourceName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceName", top_ ()));
+Traversal::ConnectionResourceDeploymentDescription::resourceName (o);
+pop_ ();
+}
+
+void ConnectionResourceDeploymentDescription::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void ConnectionResourceDeploymentDescription::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void ConnectionResourceDeploymentDescription::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// PlanConnectionDescription
+//
+//
+
+PlanConnectionDescription::
+PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+PlanConnectionDescription::
+PlanConnectionDescription ()
+{
+}
+
+void PlanConnectionDescription::
+traverse (Type const& o)
+{
+Traversal::PlanConnectionDescription::traverse (o);
+}
+
+void PlanConnectionDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::PlanConnectionDescription::name (o);
+pop_ ();
+}
+
+void PlanConnectionDescription::
+source (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("source", top_ ()));
+Traversal::PlanConnectionDescription::source (o);
+pop_ ();
+}
+
+void PlanConnectionDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void PlanConnectionDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void PlanConnectionDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void PlanConnectionDescription::
+externalEndpoint_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalEndpoint", top_ ()));
+}
+
+void PlanConnectionDescription::
+externalEndpoint_next (Type const& o)
+{
+externalEndpoint_post (o);
+externalEndpoint_pre (o);
+}
+
+void PlanConnectionDescription::
+externalEndpoint_post (Type const&)
+{
+pop_ ();
+}
+
+void PlanConnectionDescription::
+internalEndpoint_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("internalEndpoint", top_ ()));
+}
+
+void PlanConnectionDescription::
+internalEndpoint_next (Type const& o)
+{
+internalEndpoint_post (o);
+internalEndpoint_pre (o);
+}
+
+void PlanConnectionDescription::
+internalEndpoint_post (Type const&)
+{
+pop_ ();
+}
+
+void PlanConnectionDescription::
+externalReference_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalReference", top_ ()));
+}
+
+void PlanConnectionDescription::
+externalReference_next (Type const& o)
+{
+externalReference_post (o);
+externalReference_pre (o);
+}
+
+void PlanConnectionDescription::
+externalReference_post (Type const&)
+{
+pop_ ();
+}
+
+void PlanConnectionDescription::
+deployedResource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployedResource", top_ ()));
+}
+
+void PlanConnectionDescription::
+deployedResource_next (Type const& o)
+{
+deployedResource_post (o);
+deployedResource_pre (o);
+}
+
+void PlanConnectionDescription::
+deployedResource_post (Type const&)
+{
+pop_ ();
+}
+
+// ImplementationDependency
+//
+//
+
+ImplementationDependency::
+ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ImplementationDependency::
+ImplementationDependency ()
+{
+}
+
+void ImplementationDependency::
+traverse (Type const& o)
+{
+Traversal::ImplementationDependency::traverse (o);
+}
+
+void ImplementationDependency::
+requiredType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requiredType", top_ ()));
+Traversal::ImplementationDependency::requiredType (o);
+pop_ ();
+}
+
+// Capability
+//
+//
+
+Capability::
+Capability (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Capability::
+Capability ()
+{
+}
+
+void Capability::
+traverse (Type const& o)
+{
+Traversal::Capability::traverse (o);
+}
+
+void Capability::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Capability::name (o);
+pop_ ();
+}
+
+void Capability::
+resourceType_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceType", top_ ()));
+}
+
+void Capability::
+resourceType_next (Type const& o)
+{
+resourceType_post (o);
+resourceType_pre (o);
+}
+
+void Capability::
+resourceType_post (Type const&)
+{
+pop_ ();
+}
+
+void Capability::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void Capability::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void Capability::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// ImplementationRequirement
+//
+//
+
+ImplementationRequirement::
+ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ImplementationRequirement::
+ImplementationRequirement ()
+{
+}
+
+void ImplementationRequirement::
+traverse (Type const& o)
+{
+Traversal::ImplementationRequirement::traverse (o);
+}
+
+void ImplementationRequirement::
+resourceUsage (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceUsage", top_ ()));
+Traversal::ImplementationRequirement::resourceUsage (o);
+pop_ ();
+}
+
+void ImplementationRequirement::
+resourcePort (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourcePort", top_ ()));
+Traversal::ImplementationRequirement::resourcePort (o);
+pop_ ();
+}
+
+void ImplementationRequirement::
+componentPort (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("componentPort", top_ ()));
+Traversal::ImplementationRequirement::componentPort (o);
+pop_ ();
+}
+
+void ImplementationRequirement::
+resourceType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceType", top_ ()));
+Traversal::ImplementationRequirement::resourceType (o);
+pop_ ();
+}
+
+void ImplementationRequirement::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::ImplementationRequirement::name (o);
+pop_ ();
+}
+
+void ImplementationRequirement::
+property_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+}
+
+void ImplementationRequirement::
+property_next (Type const& o)
+{
+property_post (o);
+property_pre (o);
+}
+
+void ImplementationRequirement::
+property_post (Type const&)
+{
+pop_ ();
+}
+
+// ComponentPackageReference
+//
+//
+
+ComponentPackageReference::
+ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentPackageReference::
+ComponentPackageReference ()
+{
+}
+
+void ComponentPackageReference::
+traverse (Type const& o)
+{
+Traversal::ComponentPackageReference::traverse (o);
+}
+
+void ComponentPackageReference::
+requiredUUID (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requiredUUID", top_ ()));
+Traversal::ComponentPackageReference::requiredUUID (o);
+pop_ ();
+}
+
+void ComponentPackageReference::
+requiredName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requiredName", top_ ()));
+Traversal::ComponentPackageReference::requiredName (o);
+pop_ ();
+}
+
+void ComponentPackageReference::
+requiredType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("requiredType", top_ ()));
+Traversal::ComponentPackageReference::requiredType (o);
+pop_ ();
+}
+
+// SubcomponentPortEndpoint
+//
+//
+
+SubcomponentPortEndpoint::
+SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SubcomponentPortEndpoint::
+SubcomponentPortEndpoint ()
+{
+}
+
+void SubcomponentPortEndpoint::
+traverse (Type const& o)
+{
+Traversal::SubcomponentPortEndpoint::traverse (o);
+}
+
+void SubcomponentPortEndpoint::
+portName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("portName", top_ ()));
+Traversal::SubcomponentPortEndpoint::portName (o);
+pop_ ();
+}
+
+void SubcomponentPortEndpoint::
+instance (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("instance", top_ ()));
+Traversal::SubcomponentPortEndpoint::instance (o);
+pop_ ();
+}
+
+// AssemblyConnectionDescription
+//
+//
+
+AssemblyConnectionDescription::
+AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+AssemblyConnectionDescription::
+AssemblyConnectionDescription ()
+{
+}
+
+void AssemblyConnectionDescription::
+traverse (Type const& o)
+{
+Traversal::AssemblyConnectionDescription::traverse (o);
+}
+
+void AssemblyConnectionDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::AssemblyConnectionDescription::name (o);
+pop_ ();
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void AssemblyConnectionDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("internalEndpoint", top_ ()));
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_next (Type const& o)
+{
+internalEndpoint_post (o);
+internalEndpoint_pre (o);
+}
+
+void AssemblyConnectionDescription::
+internalEndpoint_post (Type const&)
+{
+pop_ ();
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalEndpoint", top_ ()));
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_next (Type const& o)
+{
+externalEndpoint_post (o);
+externalEndpoint_pre (o);
+}
+
+void AssemblyConnectionDescription::
+externalEndpoint_post (Type const&)
+{
+pop_ ();
+}
+
+void AssemblyConnectionDescription::
+externalReference_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalReference", top_ ()));
+}
+
+void AssemblyConnectionDescription::
+externalReference_next (Type const& o)
+{
+externalReference_post (o);
+externalReference_pre (o);
+}
+
+void AssemblyConnectionDescription::
+externalReference_post (Type const&)
+{
+pop_ ();
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.hpp b/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.hpp
new file mode 100644
index 00000000000..3b3f395a0bb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Basic_Deployment_Data.hpp
@@ -0,0 +1,7096 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef BASIC_DEPLOYMENT_DATA_HPP
+#define BASIC_DEPLOYMENT_DATA_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class TCKind;
+class DataType;
+class DataValue;
+class EnumType;
+class Any;
+class Property;
+class SatisfierPropertyKind;
+class SatisfierProperty;
+class Resource;
+class Requirement;
+class ResourceDeploymentDescription;
+class ArtifactDeploymentDescription;
+class MonolithicDeploymentDescription;
+class ResourceUsageKind;
+class InstanceResourceDeploymentDescription;
+class InstanceDeploymentDescription;
+class CCMComponentPortKind;
+class ComponentPortDescription;
+class ComponentPropertyDescription;
+class ComponentExternalPortEndpoint;
+class PlanSubcomponentPortEndpoint;
+class ExternalReferenceEndpoint;
+class ConnectionResourceDeploymentDescription;
+class PlanConnectionDescription;
+class ImplementationDependency;
+class Capability;
+class ImplementationRequirement;
+class ComponentPackageReference;
+class SubcomponentPortEndpoint;
+class AssemblyConnectionDescription;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export TCKind : public ::XSCRT::Type
+{
+public:
+TCKind (::XSCRT::XML::Element< ACE_TCHAR > const&);
+TCKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+static TCKind const tk_null;
+static TCKind const tk_void;
+static TCKind const tk_short;
+static TCKind const tk_long;
+static TCKind const tk_ushort;
+static TCKind const tk_ulong;
+static TCKind const tk_float;
+static TCKind const tk_double;
+static TCKind const tk_boolean;
+static TCKind const tk_char;
+static TCKind const tk_octet;
+static TCKind const tk_any;
+static TCKind const tk_TypeCode;
+static TCKind const tk_Principal;
+static TCKind const tk_objref;
+static TCKind const tk_struct;
+static TCKind const tk_union;
+static TCKind const tk_enum;
+static TCKind const tk_string;
+static TCKind const tk_sequence;
+static TCKind const tk_array;
+static TCKind const tk_alias;
+static TCKind const tk_except;
+static TCKind const tk_longlong;
+static TCKind const tk_ulonglong;
+static TCKind const tk_longdouble;
+static TCKind const tk_wchar;
+static TCKind const tk_wstring;
+static TCKind const tk_wfixed;
+static TCKind const tk_value;
+static TCKind const tk_value_box;
+static TCKind const tk_native;
+static TCKind const tk_abstract_interface;
+static TCKind const tk_local_interface;
+static TCKind const tk_component;
+static TCKind const tk_home;
+static TCKind const tk_event;
+
+enum Value
+{
+tk_null_l,tk_void_l,tk_short_l,tk_long_l,tk_ushort_l,tk_ulong_l,tk_float_l,tk_double_l,tk_boolean_l,tk_char_l,tk_octet_l,tk_any_l,tk_TypeCode_l,tk_Principal_l,tk_objref_l,tk_struct_l,tk_union_l,tk_enum_l,tk_string_l,tk_sequence_l,tk_array_l,tk_alias_l,tk_except_l,tk_longlong_l,tk_ulonglong_l,tk_longdouble_l,tk_wchar_l,tk_wstring_l,tk_wfixed_l,tk_value_l,tk_value_box_l,tk_native_l,tk_abstract_interface_l,tk_local_interface_l,tk_component_l,tk_home_l,tk_event_l
+};
+
+
+Value
+integral () const;
+
+friend bool XSC_XML_Handlers_Export
+operator== (TCKind const& a, TCKind const& b);
+
+friend bool XSC_XML_Handlers_Export
+operator!= (TCKind const& a, TCKind const& b);
+
+private:
+TCKind (Value v);
+
+Value v_;
+};
+
+bool XSC_XML_Handlers_Export operator== (TCKind const &a, TCKind const &b);
+
+bool XSC_XML_Handlers_Export operator!= (TCKind const &a, TCKind const &b);
+
+
+class XSC_XML_Handlers_Export DataType : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// kind
+//
+public:
+::CIAO::Config_Handlers::TCKind const& kind () const;
+void kind (::CIAO::Config_Handlers::TCKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::TCKind > kind_;
+
+// enum
+//
+public:
+bool enum_p () const;
+::CIAO::Config_Handlers::EnumType const& enum_ () const;
+void enum_ (::CIAO::Config_Handlers::EnumType const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::EnumType > enum__;
+
+public:
+DataType (::CIAO::Config_Handlers::TCKind const& kind__);
+
+DataType (::XSCRT::XML::Element< ACE_TCHAR > const&);
+DataType (DataType const& s);
+
+DataType&
+operator= (DataType const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export DataValue : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// short
+//
+public:
+typedef ::std::list< ::XMLSchema::short_ >::iterator short_iterator;
+typedef ::std::list< ::XMLSchema::short_ >::const_iterator short_const_iterator;
+short_iterator begin_short ();
+short_iterator end_short ();
+short_const_iterator begin_short () const;
+short_const_iterator end_short () const;
+void add_short (::XMLSchema::short_ const& );
+size_t count_short (void) const;
+
+protected:
+::std::list< ::XMLSchema::short_ > short_;
+
+// long
+//
+public:
+typedef ::std::list< ::XMLSchema::int_ >::iterator long_iterator;
+typedef ::std::list< ::XMLSchema::int_ >::const_iterator long_const_iterator;
+long_iterator begin_long ();
+long_iterator end_long ();
+long_const_iterator begin_long () const;
+long_const_iterator end_long () const;
+void add_long (::XMLSchema::int_ const& );
+size_t count_long (void) const;
+
+protected:
+::std::list< ::XMLSchema::int_ > long_;
+
+// ushort
+//
+public:
+typedef ::std::list< ::XMLSchema::unsignedShort >::iterator ushort_iterator;
+typedef ::std::list< ::XMLSchema::unsignedShort >::const_iterator ushort_const_iterator;
+ushort_iterator begin_ushort ();
+ushort_iterator end_ushort ();
+ushort_const_iterator begin_ushort () const;
+ushort_const_iterator end_ushort () const;
+void add_ushort (::XMLSchema::unsignedShort const& );
+size_t count_ushort (void) const;
+
+protected:
+::std::list< ::XMLSchema::unsignedShort > ushort_;
+
+// ulong
+//
+public:
+typedef ::std::list< ::XMLSchema::unsignedInt >::iterator ulong_iterator;
+typedef ::std::list< ::XMLSchema::unsignedInt >::const_iterator ulong_const_iterator;
+ulong_iterator begin_ulong ();
+ulong_iterator end_ulong ();
+ulong_const_iterator begin_ulong () const;
+ulong_const_iterator end_ulong () const;
+void add_ulong (::XMLSchema::unsignedInt const& );
+size_t count_ulong (void) const;
+
+protected:
+::std::list< ::XMLSchema::unsignedInt > ulong_;
+
+// float
+//
+public:
+typedef ::std::list< ::XMLSchema::float_ >::iterator float_iterator;
+typedef ::std::list< ::XMLSchema::float_ >::const_iterator float_const_iterator;
+float_iterator begin_float ();
+float_iterator end_float ();
+float_const_iterator begin_float () const;
+float_const_iterator end_float () const;
+void add_float (::XMLSchema::float_ const& );
+size_t count_float (void) const;
+
+protected:
+::std::list< ::XMLSchema::float_ > float_;
+
+// double
+//
+public:
+typedef ::std::list< ::XMLSchema::double_ >::iterator double_iterator;
+typedef ::std::list< ::XMLSchema::double_ >::const_iterator double_const_iterator;
+double_iterator begin_double ();
+double_iterator end_double ();
+double_const_iterator begin_double () const;
+double_const_iterator end_double () const;
+void add_double (::XMLSchema::double_ const& );
+size_t count_double (void) const;
+
+protected:
+::std::list< ::XMLSchema::double_ > double_;
+
+// boolean
+//
+public:
+typedef ::std::list< ::XMLSchema::boolean >::iterator boolean_iterator;
+typedef ::std::list< ::XMLSchema::boolean >::const_iterator boolean_const_iterator;
+boolean_iterator begin_boolean ();
+boolean_iterator end_boolean ();
+boolean_const_iterator begin_boolean () const;
+boolean_const_iterator end_boolean () const;
+void add_boolean (::XMLSchema::boolean const& );
+size_t count_boolean (void) const;
+
+protected:
+::std::list< ::XMLSchema::boolean > boolean_;
+
+// octet
+//
+public:
+typedef ::std::list< ::XMLSchema::unsignedByte >::iterator octet_iterator;
+typedef ::std::list< ::XMLSchema::unsignedByte >::const_iterator octet_const_iterator;
+octet_iterator begin_octet ();
+octet_iterator end_octet ();
+octet_const_iterator begin_octet () const;
+octet_const_iterator end_octet () const;
+void add_octet (::XMLSchema::unsignedByte const& );
+size_t count_octet (void) const;
+
+protected:
+::std::list< ::XMLSchema::unsignedByte > octet_;
+
+// enum
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator enum_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator enum_const_iterator;
+enum_iterator begin_enum ();
+enum_iterator end_enum ();
+enum_const_iterator begin_enum () const;
+enum_const_iterator end_enum () const;
+void add_enum (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_enum (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > enum_;
+
+// string
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator string_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator string_const_iterator;
+string_iterator begin_string ();
+string_iterator end_string ();
+string_const_iterator begin_string () const;
+string_const_iterator end_string () const;
+void add_string (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_string (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > string_;
+
+// longlong
+//
+public:
+typedef ::std::list< ::XMLSchema::long_ >::iterator longlong_iterator;
+typedef ::std::list< ::XMLSchema::long_ >::const_iterator longlong_const_iterator;
+longlong_iterator begin_longlong ();
+longlong_iterator end_longlong ();
+longlong_const_iterator begin_longlong () const;
+longlong_const_iterator end_longlong () const;
+void add_longlong (::XMLSchema::long_ const& );
+size_t count_longlong (void) const;
+
+protected:
+::std::list< ::XMLSchema::long_ > longlong_;
+
+// ulonglong
+//
+public:
+typedef ::std::list< ::XMLSchema::unsignedLong >::iterator ulonglong_iterator;
+typedef ::std::list< ::XMLSchema::unsignedLong >::const_iterator ulonglong_const_iterator;
+ulonglong_iterator begin_ulonglong ();
+ulonglong_iterator end_ulonglong ();
+ulonglong_const_iterator begin_ulonglong () const;
+ulonglong_const_iterator end_ulonglong () const;
+void add_ulonglong (::XMLSchema::unsignedLong const& );
+size_t count_ulonglong (void) const;
+
+protected:
+::std::list< ::XMLSchema::unsignedLong > ulonglong_;
+
+// longdouble
+//
+public:
+typedef ::std::list< ::XMLSchema::double_ >::iterator longdouble_iterator;
+typedef ::std::list< ::XMLSchema::double_ >::const_iterator longdouble_const_iterator;
+longdouble_iterator begin_longdouble ();
+longdouble_iterator end_longdouble ();
+longdouble_const_iterator begin_longdouble () const;
+longdouble_const_iterator end_longdouble () const;
+void add_longdouble (::XMLSchema::double_ const& );
+size_t count_longdouble (void) const;
+
+protected:
+::std::list< ::XMLSchema::double_ > longdouble_;
+
+public:
+DataValue ();
+
+DataValue (::XSCRT::XML::Element< ACE_TCHAR > const&);
+DataValue (DataValue const& s);
+
+DataValue&
+operator= (DataValue const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export EnumType : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// typeId
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& typeId () const;
+void typeId (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > typeId_;
+
+// member
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator member_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator member_const_iterator;
+member_iterator begin_member ();
+member_iterator end_member ();
+member_const_iterator begin_member () const;
+member_const_iterator end_member () const;
+void add_member (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_member (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > member_;
+
+public:
+EnumType (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& typeId__);
+
+EnumType (::XSCRT::XML::Element< ACE_TCHAR > const&);
+EnumType (EnumType const& s);
+
+EnumType&
+operator= (EnumType const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Any : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// type
+//
+public:
+::CIAO::Config_Handlers::DataType const& type () const;
+void type (::CIAO::Config_Handlers::DataType const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_;
+
+// value
+//
+public:
+::CIAO::Config_Handlers::DataValue const& value () const;
+void value (::CIAO::Config_Handlers::DataValue const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::DataValue > value_;
+
+public:
+Any (::CIAO::Config_Handlers::DataType const& type__,
+::CIAO::Config_Handlers::DataValue const& value__);
+
+Any (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Any (Any const& s);
+
+Any&
+operator= (Any const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Property : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// value
+//
+public:
+::CIAO::Config_Handlers::Any const& value () const;
+void value (::CIAO::Config_Handlers::Any const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::Any > value_;
+
+public:
+Property (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::Any const& value__);
+
+Property (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Property (Property const& s);
+
+Property&
+operator= (Property const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export SatisfierPropertyKind : public ::XSCRT::Type
+{
+public:
+SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SatisfierPropertyKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+static SatisfierPropertyKind const Quantity;
+static SatisfierPropertyKind const Capacity;
+static SatisfierPropertyKind const Minimum;
+static SatisfierPropertyKind const Maximum;
+static SatisfierPropertyKind const Attribute;
+static SatisfierPropertyKind const Selection;
+
+enum Value
+{
+Quantity_l,Capacity_l,Minimum_l,Maximum_l,Attribute_l,Selection_l
+};
+
+
+Value
+integral () const;
+
+friend bool XSC_XML_Handlers_Export
+operator== (SatisfierPropertyKind const& a, SatisfierPropertyKind const& b);
+
+friend bool XSC_XML_Handlers_Export
+operator!= (SatisfierPropertyKind const& a, SatisfierPropertyKind const& b);
+
+private:
+SatisfierPropertyKind (Value v);
+
+Value v_;
+};
+
+bool XSC_XML_Handlers_Export operator== (SatisfierPropertyKind const &a, SatisfierPropertyKind const &b);
+
+bool XSC_XML_Handlers_Export operator!= (SatisfierPropertyKind const &a, SatisfierPropertyKind const &b);
+
+
+class XSC_XML_Handlers_Export SatisfierProperty : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// kind
+//
+public:
+::CIAO::Config_Handlers::SatisfierPropertyKind const& kind () const;
+void kind (::CIAO::Config_Handlers::SatisfierPropertyKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierPropertyKind > kind_;
+
+// dynamic
+//
+public:
+::XMLSchema::boolean const& dynamic () const;
+void dynamic (::XMLSchema::boolean const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::boolean > dynamic_;
+
+// value
+//
+public:
+::CIAO::Config_Handlers::Any const& value () const;
+void value (::CIAO::Config_Handlers::Any const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::Any > value_;
+
+public:
+SatisfierProperty (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::SatisfierPropertyKind const& kind__,
+::XMLSchema::boolean const& dynamic__,
+::CIAO::Config_Handlers::Any const& value__);
+
+SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SatisfierProperty (SatisfierProperty const& s);
+
+SatisfierProperty&
+operator= (SatisfierProperty const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Resource : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// resourceType
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator resourceType_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator resourceType_const_iterator;
+resourceType_iterator begin_resourceType ();
+resourceType_iterator end_resourceType ();
+resourceType_const_iterator begin_resourceType () const;
+resourceType_const_iterator end_resourceType () const;
+void add_resourceType (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_resourceType (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > resourceType_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SatisfierProperty >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SatisfierProperty >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::SatisfierProperty const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SatisfierProperty > property_;
+
+public:
+Resource (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Resource (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Resource (Resource const& s);
+
+Resource&
+operator= (Resource const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Requirement : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// resourceType
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceType () const;
+void resourceType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::Property const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > property_;
+
+public:
+Requirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Requirement (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Requirement (Requirement const& s);
+
+Requirement&
+operator= (Requirement const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ResourceDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// requirementName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& requirementName () const;
+void requirementName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_;
+
+// resourceName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceName () const;
+void resourceName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::Property const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > property_;
+
+public:
+ResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__);
+
+ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ResourceDeploymentDescription (ResourceDeploymentDescription const& s);
+
+ResourceDeploymentDescription&
+operator= (ResourceDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ArtifactDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// source
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator source_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator source_const_iterator;
+source_iterator begin_source ();
+source_iterator end_source ();
+source_const_iterator begin_source () const;
+source_const_iterator end_source () const;
+void add_source (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_source (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > source_;
+
+// node
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& node () const;
+void node (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > node_;
+
+// location
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator location_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator location_const_iterator;
+location_iterator begin_location ();
+location_iterator end_location ();
+location_const_iterator begin_location () const;
+location_const_iterator end_location () const;
+void add_location (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_location (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > location_;
+
+// execParameter
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator execParameter_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator execParameter_const_iterator;
+execParameter_iterator begin_execParameter ();
+execParameter_iterator end_execParameter ();
+execParameter_const_iterator begin_execParameter () const;
+execParameter_const_iterator end_execParameter () const;
+void add_execParameter (::CIAO::Config_Handlers::Property const& );
+size_t count_execParameter (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > execParameter_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > deployRequirement_;
+
+// deployedResource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ResourceDeploymentDescription >::iterator deployedResource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ResourceDeploymentDescription >::const_iterator deployedResource_const_iterator;
+deployedResource_iterator begin_deployedResource ();
+deployedResource_iterator end_deployedResource ();
+deployedResource_const_iterator begin_deployedResource () const;
+deployedResource_const_iterator end_deployedResource () const;
+void add_deployedResource (::CIAO::Config_Handlers::ResourceDeploymentDescription const& );
+size_t count_deployedResource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ResourceDeploymentDescription > deployedResource_;
+
+// id
+//
+public:
+bool id_p () const;
+::XMLSchema::ID< ACE_TCHAR > const& id () const;
+::XMLSchema::ID< ACE_TCHAR >& id ();
+void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+public:
+ArtifactDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& node__);
+
+ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ArtifactDeploymentDescription (ArtifactDeploymentDescription const& s);
+
+ArtifactDeploymentDescription&
+operator= (ArtifactDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export MonolithicDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// source
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator source_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator source_const_iterator;
+source_iterator begin_source ();
+source_iterator end_source ();
+source_const_iterator begin_source () const;
+source_const_iterator end_source () const;
+void add_source (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_source (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > source_;
+
+// artifact
+//
+public:
+typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::iterator artifact_iterator;
+typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::const_iterator artifact_const_iterator;
+artifact_iterator begin_artifact ();
+artifact_iterator end_artifact ();
+artifact_const_iterator begin_artifact () const;
+artifact_const_iterator end_artifact () const;
+void add_artifact (::XMLSchema::IDREF< ACE_TCHAR > const& );
+size_t count_artifact (void) const;
+
+protected:
+::std::list< ::XMLSchema::IDREF< ACE_TCHAR > > artifact_;
+
+// execParameter
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator execParameter_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator execParameter_const_iterator;
+execParameter_iterator begin_execParameter ();
+execParameter_iterator end_execParameter ();
+execParameter_const_iterator begin_execParameter () const;
+execParameter_const_iterator end_execParameter () const;
+void add_execParameter (::CIAO::Config_Handlers::Property const& );
+size_t count_execParameter (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > execParameter_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > deployRequirement_;
+
+// id
+//
+public:
+bool id_p () const;
+::XMLSchema::ID< ACE_TCHAR > const& id () const;
+::XMLSchema::ID< ACE_TCHAR >& id ();
+void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+public:
+MonolithicDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+MonolithicDeploymentDescription (MonolithicDeploymentDescription const& s);
+
+MonolithicDeploymentDescription&
+operator= (MonolithicDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ResourceUsageKind : public ::XSCRT::Type
+{
+public:
+ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ResourceUsageKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+static ResourceUsageKind const None;
+static ResourceUsageKind const InstanceUsesResource;
+static ResourceUsageKind const ResourceUsesInstance;
+static ResourceUsageKind const PortUsesResource;
+static ResourceUsageKind const ResourceUsesPort;
+
+enum Value
+{
+None_l,InstanceUsesResource_l,ResourceUsesInstance_l,PortUsesResource_l,ResourceUsesPort_l
+};
+
+
+Value
+integral () const;
+
+friend bool XSC_XML_Handlers_Export
+operator== (ResourceUsageKind const& a, ResourceUsageKind const& b);
+
+friend bool XSC_XML_Handlers_Export
+operator!= (ResourceUsageKind const& a, ResourceUsageKind const& b);
+
+private:
+ResourceUsageKind (Value v);
+
+Value v_;
+};
+
+bool XSC_XML_Handlers_Export operator== (ResourceUsageKind const &a, ResourceUsageKind const &b);
+
+bool XSC_XML_Handlers_Export operator!= (ResourceUsageKind const &a, ResourceUsageKind const &b);
+
+
+class XSC_XML_Handlers_Export InstanceResourceDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// resourceUsage
+//
+public:
+::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage () const;
+void resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > resourceUsage_;
+
+// requirementName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& requirementName () const;
+void requirementName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_;
+
+// resourceName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceName () const;
+void resourceName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::Property const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > property_;
+
+public:
+InstanceResourceDeploymentDescription (::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage__,
+::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__);
+
+InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+InstanceResourceDeploymentDescription (InstanceResourceDeploymentDescription const& s);
+
+InstanceResourceDeploymentDescription&
+operator= (InstanceResourceDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export InstanceDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// node
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& node () const;
+void node (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > node_;
+
+// source
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& source () const;
+void source (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > source_;
+
+// implementation
+//
+public:
+::XMLSchema::IDREF< ACE_TCHAR > const& implementation () const;
+void implementation (::XMLSchema::IDREF< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > implementation_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// deployedResource
+//
+public:
+bool deployedResource_p () const;
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& deployedResource () const;
+void deployedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > deployedResource_;
+
+// deployedSharedResource
+//
+public:
+bool deployedSharedResource_p () const;
+::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& deployedSharedResource () const;
+void deployedSharedResource (::CIAO::Config_Handlers::InstanceResourceDeploymentDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription > deployedSharedResource_;
+
+// id
+//
+public:
+bool id_p () const;
+::XMLSchema::ID< ACE_TCHAR > const& id () const;
+::XMLSchema::ID< ACE_TCHAR >& id ();
+void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+public:
+InstanceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& node__,
+::XMLSchema::string< ACE_TCHAR > const& source__,
+::XMLSchema::IDREF< ACE_TCHAR > const& implementation__);
+
+InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+InstanceDeploymentDescription (InstanceDeploymentDescription const& s);
+
+InstanceDeploymentDescription&
+operator= (InstanceDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export CCMComponentPortKind : public ::XSCRT::Type
+{
+public:
+CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR > const&);
+CCMComponentPortKind (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+static CCMComponentPortKind const Facet;
+static CCMComponentPortKind const SimplexReceptacle;
+static CCMComponentPortKind const MultiplexReceptacle;
+static CCMComponentPortKind const EventEmitter;
+static CCMComponentPortKind const EventPublisher;
+static CCMComponentPortKind const EventConsumer;
+
+enum Value
+{
+Facet_l,SimplexReceptacle_l,MultiplexReceptacle_l,EventEmitter_l,EventPublisher_l,EventConsumer_l
+};
+
+
+Value
+integral () const;
+
+friend bool XSC_XML_Handlers_Export
+operator== (CCMComponentPortKind const& a, CCMComponentPortKind const& b);
+
+friend bool XSC_XML_Handlers_Export
+operator!= (CCMComponentPortKind const& a, CCMComponentPortKind const& b);
+
+private:
+CCMComponentPortKind (Value v);
+
+Value v_;
+};
+
+bool XSC_XML_Handlers_Export operator== (CCMComponentPortKind const &a, CCMComponentPortKind const &b);
+
+bool XSC_XML_Handlers_Export operator!= (CCMComponentPortKind const &a, CCMComponentPortKind const &b);
+
+
+class XSC_XML_Handlers_Export ComponentPortDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// specificType
+//
+public:
+bool specificType_p () const;
+::XMLSchema::string< ACE_TCHAR > const& specificType () const;
+void specificType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > specificType_;
+
+// supportedType
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator supportedType_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator supportedType_const_iterator;
+supportedType_iterator begin_supportedType ();
+supportedType_iterator end_supportedType ();
+supportedType_const_iterator begin_supportedType () const;
+supportedType_const_iterator end_supportedType () const;
+void add_supportedType (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_supportedType (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > supportedType_;
+
+// provider
+//
+public:
+::XMLSchema::boolean const& provider () const;
+void provider (::XMLSchema::boolean const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::boolean > provider_;
+
+// exclusiveProvider
+//
+public:
+::XMLSchema::boolean const& exclusiveProvider () const;
+void exclusiveProvider (::XMLSchema::boolean const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::boolean > exclusiveProvider_;
+
+// exclusiveUser
+//
+public:
+::XMLSchema::boolean const& exclusiveUser () const;
+void exclusiveUser (::XMLSchema::boolean const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::boolean > exclusiveUser_;
+
+// optional
+//
+public:
+::XMLSchema::boolean const& optional () const;
+void optional (::XMLSchema::boolean const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::boolean > optional_;
+
+// kind
+//
+public:
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind () const;
+void kind (::CIAO::Config_Handlers::CCMComponentPortKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > kind_;
+
+public:
+ComponentPortDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::boolean const& provider__,
+::XMLSchema::boolean const& exclusiveProvider__,
+::XMLSchema::boolean const& exclusiveUser__,
+::XMLSchema::boolean const& optional__,
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind__);
+
+ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentPortDescription (ComponentPortDescription const& s);
+
+ComponentPortDescription&
+operator= (ComponentPortDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentPropertyDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// type
+//
+public:
+::CIAO::Config_Handlers::DataType const& type () const;
+void type (::CIAO::Config_Handlers::DataType const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::DataType > type_;
+
+public:
+ComponentPropertyDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::DataType const& type__);
+
+ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentPropertyDescription (ComponentPropertyDescription const& s);
+
+ComponentPropertyDescription&
+operator= (ComponentPropertyDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentExternalPortEndpoint : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// portName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& portName () const;
+void portName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_;
+
+public:
+ComponentExternalPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__);
+
+ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentExternalPortEndpoint (ComponentExternalPortEndpoint const& s);
+
+ComponentExternalPortEndpoint&
+operator= (ComponentExternalPortEndpoint const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export PlanSubcomponentPortEndpoint : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// portName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& portName () const;
+void portName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_;
+
+// provider
+//
+public:
+bool provider_p () const;
+::XMLSchema::string< ACE_TCHAR > const& provider () const;
+void provider (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > provider_;
+
+// kind
+//
+public:
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind () const;
+void kind (::CIAO::Config_Handlers::CCMComponentPortKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::CCMComponentPortKind > kind_;
+
+// instance
+//
+public:
+::XMLSchema::IDREF< ACE_TCHAR > const& instance () const;
+void instance (::XMLSchema::IDREF< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > instance_;
+
+public:
+PlanSubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__,
+::CIAO::Config_Handlers::CCMComponentPortKind const& kind__,
+::XMLSchema::IDREF< ACE_TCHAR > const& instance__);
+
+PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&);
+PlanSubcomponentPortEndpoint (PlanSubcomponentPortEndpoint const& s);
+
+PlanSubcomponentPortEndpoint&
+operator= (PlanSubcomponentPortEndpoint const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ExternalReferenceEndpoint : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// location
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& location () const;
+void location (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > location_;
+
+public:
+ExternalReferenceEndpoint (::XMLSchema::string< ACE_TCHAR > const& location__);
+
+ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ExternalReferenceEndpoint (ExternalReferenceEndpoint const& s);
+
+ExternalReferenceEndpoint&
+operator= (ExternalReferenceEndpoint const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ConnectionResourceDeploymentDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// targetName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& targetName () const;
+void targetName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > targetName_;
+
+// requirementName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& requirementName () const;
+void requirementName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requirementName_;
+
+// resourceName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceName () const;
+void resourceName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceName_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::Property const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > property_;
+
+public:
+ConnectionResourceDeploymentDescription (::XMLSchema::string< ACE_TCHAR > const& targetName__,
+::XMLSchema::string< ACE_TCHAR > const& requirementName__,
+::XMLSchema::string< ACE_TCHAR > const& resourceName__);
+
+ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ConnectionResourceDeploymentDescription (ConnectionResourceDeploymentDescription const& s);
+
+ConnectionResourceDeploymentDescription&
+operator= (ConnectionResourceDeploymentDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export PlanConnectionDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// source
+//
+public:
+bool source_p () const;
+::XMLSchema::string< ACE_TCHAR > const& source () const;
+void source (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > source_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > deployRequirement_;
+
+// externalEndpoint
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint >::iterator externalEndpoint_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint >::const_iterator externalEndpoint_const_iterator;
+externalEndpoint_iterator begin_externalEndpoint ();
+externalEndpoint_iterator end_externalEndpoint ();
+externalEndpoint_const_iterator begin_externalEndpoint () const;
+externalEndpoint_const_iterator end_externalEndpoint () const;
+void add_externalEndpoint (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& );
+size_t count_externalEndpoint (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint > externalEndpoint_;
+
+// internalEndpoint
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint >::iterator internalEndpoint_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint >::const_iterator internalEndpoint_const_iterator;
+internalEndpoint_iterator begin_internalEndpoint ();
+internalEndpoint_iterator end_internalEndpoint ();
+internalEndpoint_const_iterator begin_internalEndpoint () const;
+internalEndpoint_const_iterator end_internalEndpoint () const;
+void add_internalEndpoint (::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint const& );
+size_t count_internalEndpoint (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint > internalEndpoint_;
+
+// externalReference
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint >::iterator externalReference_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint >::const_iterator externalReference_const_iterator;
+externalReference_iterator begin_externalReference ();
+externalReference_iterator end_externalReference ();
+externalReference_const_iterator begin_externalReference () const;
+externalReference_const_iterator end_externalReference () const;
+void add_externalReference (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& );
+size_t count_externalReference (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint > externalReference_;
+
+// deployedResource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription >::iterator deployedResource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription >::const_iterator deployedResource_const_iterator;
+deployedResource_iterator begin_deployedResource ();
+deployedResource_iterator end_deployedResource ();
+deployedResource_const_iterator begin_deployedResource () const;
+deployedResource_const_iterator end_deployedResource () const;
+void add_deployedResource (::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription const& );
+size_t count_deployedResource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription > deployedResource_;
+
+public:
+PlanConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+PlanConnectionDescription (PlanConnectionDescription const& s);
+
+PlanConnectionDescription&
+operator= (PlanConnectionDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ImplementationDependency : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// requiredType
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& requiredType () const;
+void requiredType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredType_;
+
+public:
+ImplementationDependency (::XMLSchema::string< ACE_TCHAR > const& requiredType__);
+
+ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ImplementationDependency (ImplementationDependency const& s);
+
+ImplementationDependency&
+operator= (ImplementationDependency const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Capability : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// resourceType
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator resourceType_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator resourceType_const_iterator;
+resourceType_iterator begin_resourceType ();
+resourceType_iterator end_resourceType ();
+resourceType_const_iterator begin_resourceType () const;
+resourceType_const_iterator end_resourceType () const;
+void add_resourceType (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_resourceType (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > resourceType_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SatisfierProperty >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SatisfierProperty >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::SatisfierProperty const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SatisfierProperty > property_;
+
+public:
+Capability (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Capability (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Capability (Capability const& s);
+
+Capability&
+operator= (Capability const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ImplementationRequirement : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// resourceUsage
+//
+public:
+bool resourceUsage_p () const;
+::CIAO::Config_Handlers::ResourceUsageKind const& resourceUsage () const;
+void resourceUsage (::CIAO::Config_Handlers::ResourceUsageKind const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ResourceUsageKind > resourceUsage_;
+
+// resourcePort
+//
+public:
+bool resourcePort_p () const;
+::XMLSchema::string< ACE_TCHAR > const& resourcePort () const;
+void resourcePort (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourcePort_;
+
+// componentPort
+//
+public:
+bool componentPort_p () const;
+::XMLSchema::string< ACE_TCHAR > const& componentPort () const;
+void componentPort (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > componentPort_;
+
+// resourceType
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceType () const;
+void resourceType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::Property const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > property_;
+
+public:
+ImplementationRequirement (::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::XMLSchema::string< ACE_TCHAR > const& name__);
+
+ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ImplementationRequirement (ImplementationRequirement const& s);
+
+ImplementationRequirement&
+operator= (ImplementationRequirement const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentPackageReference : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// requiredUUID
+//
+public:
+bool requiredUUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& requiredUUID () const;
+void requiredUUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredUUID_;
+
+// requiredName
+//
+public:
+bool requiredName_p () const;
+::XMLSchema::string< ACE_TCHAR > const& requiredName () const;
+void requiredName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredName_;
+
+// requiredType
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& requiredType () const;
+void requiredType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > requiredType_;
+
+public:
+ComponentPackageReference (::XMLSchema::string< ACE_TCHAR > const& requiredType__);
+
+ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentPackageReference (ComponentPackageReference const& s);
+
+ComponentPackageReference&
+operator= (ComponentPackageReference const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export SubcomponentPortEndpoint : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// portName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& portName () const;
+void portName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > portName_;
+
+// instance
+//
+public:
+::XMLSchema::IDREF< ACE_TCHAR > const& instance () const;
+void instance (::XMLSchema::IDREF< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > instance_;
+
+public:
+SubcomponentPortEndpoint (::XMLSchema::string< ACE_TCHAR > const& portName__,
+::XMLSchema::IDREF< ACE_TCHAR > const& instance__);
+
+SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SubcomponentPortEndpoint (SubcomponentPortEndpoint const& s);
+
+SubcomponentPortEndpoint&
+operator= (SubcomponentPortEndpoint const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export AssemblyConnectionDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > deployRequirement_;
+
+// internalEndpoint
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentPortEndpoint >::iterator internalEndpoint_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentPortEndpoint >::const_iterator internalEndpoint_const_iterator;
+internalEndpoint_iterator begin_internalEndpoint ();
+internalEndpoint_iterator end_internalEndpoint ();
+internalEndpoint_const_iterator begin_internalEndpoint () const;
+internalEndpoint_const_iterator end_internalEndpoint () const;
+void add_internalEndpoint (::CIAO::Config_Handlers::SubcomponentPortEndpoint const& );
+size_t count_internalEndpoint (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SubcomponentPortEndpoint > internalEndpoint_;
+
+// externalEndpoint
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint >::iterator externalEndpoint_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint >::const_iterator externalEndpoint_const_iterator;
+externalEndpoint_iterator begin_externalEndpoint ();
+externalEndpoint_iterator end_externalEndpoint ();
+externalEndpoint_const_iterator begin_externalEndpoint () const;
+externalEndpoint_const_iterator end_externalEndpoint () const;
+void add_externalEndpoint (::CIAO::Config_Handlers::ComponentExternalPortEndpoint const& );
+size_t count_externalEndpoint (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint > externalEndpoint_;
+
+// externalReference
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint >::iterator externalReference_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint >::const_iterator externalReference_const_iterator;
+externalReference_iterator begin_externalReference ();
+externalReference_iterator end_externalReference ();
+externalReference_const_iterator begin_externalReference () const;
+externalReference_const_iterator end_externalReference () const;
+void add_externalReference (::CIAO::Config_Handlers::ExternalReferenceEndpoint const& );
+size_t count_externalReference (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ExternalReferenceEndpoint > externalReference_;
+
+public:
+AssemblyConnectionDescription (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+AssemblyConnectionDescription (AssemblyConnectionDescription const& s);
+
+AssemblyConnectionDescription&
+operator= (AssemblyConnectionDescription const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+typedef
+::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TCKind >
+TCKind;
+
+struct XSC_XML_Handlers_Export DataType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DataType >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+kind (Type&);
+
+virtual void
+kind (Type const&);
+
+virtual void
+enum_ (Type&);
+
+virtual void
+enum_ (Type const&);
+
+virtual void
+enum_none (Type&);
+
+virtual void
+enum_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export DataValue : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DataValue >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+short_ (Type&);
+
+virtual void
+short_ (Type const&);
+
+virtual void
+short_pre (Type&);
+
+virtual void
+short_pre (Type const&);
+
+virtual void
+short_next (Type&);
+
+virtual void
+short_next (Type const&);
+
+virtual void
+short_post (Type&);
+
+virtual void
+short_post (Type const&);
+
+virtual void
+short_none (Type&);
+
+virtual void
+short_none (Type const&);
+
+virtual void
+long_ (Type&);
+
+virtual void
+long_ (Type const&);
+
+virtual void
+long_pre (Type&);
+
+virtual void
+long_pre (Type const&);
+
+virtual void
+long_next (Type&);
+
+virtual void
+long_next (Type const&);
+
+virtual void
+long_post (Type&);
+
+virtual void
+long_post (Type const&);
+
+virtual void
+long_none (Type&);
+
+virtual void
+long_none (Type const&);
+
+virtual void
+ushort (Type&);
+
+virtual void
+ushort (Type const&);
+
+virtual void
+ushort_pre (Type&);
+
+virtual void
+ushort_pre (Type const&);
+
+virtual void
+ushort_next (Type&);
+
+virtual void
+ushort_next (Type const&);
+
+virtual void
+ushort_post (Type&);
+
+virtual void
+ushort_post (Type const&);
+
+virtual void
+ushort_none (Type&);
+
+virtual void
+ushort_none (Type const&);
+
+virtual void
+ulong (Type&);
+
+virtual void
+ulong (Type const&);
+
+virtual void
+ulong_pre (Type&);
+
+virtual void
+ulong_pre (Type const&);
+
+virtual void
+ulong_next (Type&);
+
+virtual void
+ulong_next (Type const&);
+
+virtual void
+ulong_post (Type&);
+
+virtual void
+ulong_post (Type const&);
+
+virtual void
+ulong_none (Type&);
+
+virtual void
+ulong_none (Type const&);
+
+virtual void
+float_ (Type&);
+
+virtual void
+float_ (Type const&);
+
+virtual void
+float_pre (Type&);
+
+virtual void
+float_pre (Type const&);
+
+virtual void
+float_next (Type&);
+
+virtual void
+float_next (Type const&);
+
+virtual void
+float_post (Type&);
+
+virtual void
+float_post (Type const&);
+
+virtual void
+float_none (Type&);
+
+virtual void
+float_none (Type const&);
+
+virtual void
+double_ (Type&);
+
+virtual void
+double_ (Type const&);
+
+virtual void
+double_pre (Type&);
+
+virtual void
+double_pre (Type const&);
+
+virtual void
+double_next (Type&);
+
+virtual void
+double_next (Type const&);
+
+virtual void
+double_post (Type&);
+
+virtual void
+double_post (Type const&);
+
+virtual void
+double_none (Type&);
+
+virtual void
+double_none (Type const&);
+
+virtual void
+boolean (Type&);
+
+virtual void
+boolean (Type const&);
+
+virtual void
+boolean_pre (Type&);
+
+virtual void
+boolean_pre (Type const&);
+
+virtual void
+boolean_next (Type&);
+
+virtual void
+boolean_next (Type const&);
+
+virtual void
+boolean_post (Type&);
+
+virtual void
+boolean_post (Type const&);
+
+virtual void
+boolean_none (Type&);
+
+virtual void
+boolean_none (Type const&);
+
+virtual void
+octet (Type&);
+
+virtual void
+octet (Type const&);
+
+virtual void
+octet_pre (Type&);
+
+virtual void
+octet_pre (Type const&);
+
+virtual void
+octet_next (Type&);
+
+virtual void
+octet_next (Type const&);
+
+virtual void
+octet_post (Type&);
+
+virtual void
+octet_post (Type const&);
+
+virtual void
+octet_none (Type&);
+
+virtual void
+octet_none (Type const&);
+
+virtual void
+enum_ (Type&);
+
+virtual void
+enum_ (Type const&);
+
+virtual void
+enum_pre (Type&);
+
+virtual void
+enum_pre (Type const&);
+
+virtual void
+enum_next (Type&);
+
+virtual void
+enum_next (Type const&);
+
+virtual void
+enum_post (Type&);
+
+virtual void
+enum_post (Type const&);
+
+virtual void
+enum_none (Type&);
+
+virtual void
+enum_none (Type const&);
+
+virtual void
+string (Type&);
+
+virtual void
+string (Type const&);
+
+virtual void
+string_pre (Type&);
+
+virtual void
+string_pre (Type const&);
+
+virtual void
+string_next (Type&);
+
+virtual void
+string_next (Type const&);
+
+virtual void
+string_post (Type&);
+
+virtual void
+string_post (Type const&);
+
+virtual void
+string_none (Type&);
+
+virtual void
+string_none (Type const&);
+
+virtual void
+longlong (Type&);
+
+virtual void
+longlong (Type const&);
+
+virtual void
+longlong_pre (Type&);
+
+virtual void
+longlong_pre (Type const&);
+
+virtual void
+longlong_next (Type&);
+
+virtual void
+longlong_next (Type const&);
+
+virtual void
+longlong_post (Type&);
+
+virtual void
+longlong_post (Type const&);
+
+virtual void
+longlong_none (Type&);
+
+virtual void
+longlong_none (Type const&);
+
+virtual void
+ulonglong (Type&);
+
+virtual void
+ulonglong (Type const&);
+
+virtual void
+ulonglong_pre (Type&);
+
+virtual void
+ulonglong_pre (Type const&);
+
+virtual void
+ulonglong_next (Type&);
+
+virtual void
+ulonglong_next (Type const&);
+
+virtual void
+ulonglong_post (Type&);
+
+virtual void
+ulonglong_post (Type const&);
+
+virtual void
+ulonglong_none (Type&);
+
+virtual void
+ulonglong_none (Type const&);
+
+virtual void
+longdouble (Type&);
+
+virtual void
+longdouble (Type const&);
+
+virtual void
+longdouble_pre (Type&);
+
+virtual void
+longdouble_pre (Type const&);
+
+virtual void
+longdouble_next (Type&);
+
+virtual void
+longdouble_next (Type const&);
+
+virtual void
+longdouble_post (Type&);
+
+virtual void
+longdouble_post (Type const&);
+
+virtual void
+longdouble_none (Type&);
+
+virtual void
+longdouble_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export EnumType : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::EnumType >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+typeId (Type&);
+
+virtual void
+typeId (Type const&);
+
+virtual void
+member (Type&);
+
+virtual void
+member (Type const&);
+
+virtual void
+member_pre (Type&);
+
+virtual void
+member_pre (Type const&);
+
+virtual void
+member_next (Type&);
+
+virtual void
+member_next (Type const&);
+
+virtual void
+member_post (Type&);
+
+virtual void
+member_post (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Any : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Any >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+type (Type&);
+
+virtual void
+type (Type const&);
+
+virtual void
+value (Type&);
+
+virtual void
+value (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Property : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Property >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+value (Type&);
+
+virtual void
+value (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+typedef
+::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SatisfierPropertyKind >
+SatisfierPropertyKind;
+
+struct XSC_XML_Handlers_Export SatisfierProperty : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SatisfierProperty >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+kind (Type&);
+
+virtual void
+kind (Type const&);
+
+virtual void
+dynamic (Type&);
+
+virtual void
+dynamic (Type const&);
+
+virtual void
+value (Type&);
+
+virtual void
+value (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Resource : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Resource >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType (Type&);
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+resourceType_pre (Type&);
+
+virtual void
+resourceType_pre (Type const&);
+
+virtual void
+resourceType_next (Type&);
+
+virtual void
+resourceType_next (Type const&);
+
+virtual void
+resourceType_post (Type&);
+
+virtual void
+resourceType_post (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Requirement : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Requirement >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+resourceType (Type&);
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ResourceDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+requirementName (Type&);
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type&);
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ArtifactDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+source (Type&);
+
+virtual void
+source (Type const&);
+
+virtual void
+source_pre (Type&);
+
+virtual void
+source_pre (Type const&);
+
+virtual void
+source_next (Type&);
+
+virtual void
+source_next (Type const&);
+
+virtual void
+source_post (Type&);
+
+virtual void
+source_post (Type const&);
+
+virtual void
+node (Type&);
+
+virtual void
+node (Type const&);
+
+virtual void
+location (Type&);
+
+virtual void
+location (Type const&);
+
+virtual void
+location_pre (Type&);
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type&);
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type&);
+
+virtual void
+location_post (Type const&);
+
+virtual void
+execParameter (Type&);
+
+virtual void
+execParameter (Type const&);
+
+virtual void
+execParameter_pre (Type&);
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type&);
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type&);
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+execParameter_none (Type&);
+
+virtual void
+execParameter_none (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+deployedResource (Type&);
+
+virtual void
+deployedResource (Type const&);
+
+virtual void
+deployedResource_pre (Type&);
+
+virtual void
+deployedResource_pre (Type const&);
+
+virtual void
+deployedResource_next (Type&);
+
+virtual void
+deployedResource_next (Type const&);
+
+virtual void
+deployedResource_post (Type&);
+
+virtual void
+deployedResource_post (Type const&);
+
+virtual void
+deployedResource_none (Type&);
+
+virtual void
+deployedResource_none (Type const&);
+
+virtual void
+id (Type&);
+
+virtual void
+id (Type const&);
+
+virtual void
+id_none (Type&);
+
+virtual void
+id_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export MonolithicDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+source (Type&);
+
+virtual void
+source (Type const&);
+
+virtual void
+source_pre (Type&);
+
+virtual void
+source_pre (Type const&);
+
+virtual void
+source_next (Type&);
+
+virtual void
+source_next (Type const&);
+
+virtual void
+source_post (Type&);
+
+virtual void
+source_post (Type const&);
+
+virtual void
+artifact (Type&);
+
+virtual void
+artifact (Type const&);
+
+virtual void
+artifact_pre (Type&);
+
+virtual void
+artifact_pre (Type const&);
+
+virtual void
+artifact_next (Type&);
+
+virtual void
+artifact_next (Type const&);
+
+virtual void
+artifact_post (Type&);
+
+virtual void
+artifact_post (Type const&);
+
+virtual void
+execParameter (Type&);
+
+virtual void
+execParameter (Type const&);
+
+virtual void
+execParameter_pre (Type&);
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type&);
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type&);
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+execParameter_none (Type&);
+
+virtual void
+execParameter_none (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+id (Type&);
+
+virtual void
+id (Type const&);
+
+virtual void
+id_none (Type&);
+
+virtual void
+id_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+typedef
+::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ResourceUsageKind >
+ResourceUsageKind;
+
+struct XSC_XML_Handlers_Export InstanceResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+resourceUsage (Type&);
+
+virtual void
+resourceUsage (Type const&);
+
+virtual void
+requirementName (Type&);
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type&);
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export InstanceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::InstanceDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+node (Type&);
+
+virtual void
+node (Type const&);
+
+virtual void
+source (Type&);
+
+virtual void
+source (Type const&);
+
+virtual void
+implementation (Type&);
+
+virtual void
+implementation (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+deployedResource (Type&);
+
+virtual void
+deployedResource (Type const&);
+
+virtual void
+deployedResource_none (Type&);
+
+virtual void
+deployedResource_none (Type const&);
+
+virtual void
+deployedSharedResource (Type&);
+
+virtual void
+deployedSharedResource (Type const&);
+
+virtual void
+deployedSharedResource_none (Type&);
+
+virtual void
+deployedSharedResource_none (Type const&);
+
+virtual void
+id (Type&);
+
+virtual void
+id (Type const&);
+
+virtual void
+id_none (Type&);
+
+virtual void
+id_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+typedef
+::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::CCMComponentPortKind >
+CCMComponentPortKind;
+
+struct XSC_XML_Handlers_Export ComponentPortDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPortDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+specificType (Type&);
+
+virtual void
+specificType (Type const&);
+
+virtual void
+specificType_none (Type&);
+
+virtual void
+specificType_none (Type const&);
+
+virtual void
+supportedType (Type&);
+
+virtual void
+supportedType (Type const&);
+
+virtual void
+supportedType_pre (Type&);
+
+virtual void
+supportedType_pre (Type const&);
+
+virtual void
+supportedType_next (Type&);
+
+virtual void
+supportedType_next (Type const&);
+
+virtual void
+supportedType_post (Type&);
+
+virtual void
+supportedType_post (Type const&);
+
+virtual void
+supportedType_none (Type&);
+
+virtual void
+supportedType_none (Type const&);
+
+virtual void
+provider (Type&);
+
+virtual void
+provider (Type const&);
+
+virtual void
+exclusiveProvider (Type&);
+
+virtual void
+exclusiveProvider (Type const&);
+
+virtual void
+exclusiveUser (Type&);
+
+virtual void
+exclusiveUser (Type const&);
+
+virtual void
+optional (Type&);
+
+virtual void
+optional (Type const&);
+
+virtual void
+kind (Type&);
+
+virtual void
+kind (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentPropertyDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPropertyDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+type (Type&);
+
+virtual void
+type (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentExternalPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentExternalPortEndpoint >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+portName (Type&);
+
+virtual void
+portName (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export PlanSubcomponentPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+portName (Type&);
+
+virtual void
+portName (Type const&);
+
+virtual void
+provider (Type&);
+
+virtual void
+provider (Type const&);
+
+virtual void
+provider_none (Type&);
+
+virtual void
+provider_none (Type const&);
+
+virtual void
+kind (Type&);
+
+virtual void
+kind (Type const&);
+
+virtual void
+instance (Type&);
+
+virtual void
+instance (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ExternalReferenceEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ExternalReferenceEndpoint >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+location (Type&);
+
+virtual void
+location (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ConnectionResourceDeploymentDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+targetName (Type&);
+
+virtual void
+targetName (Type const&);
+
+virtual void
+requirementName (Type&);
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type&);
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export PlanConnectionDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PlanConnectionDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+source (Type&);
+
+virtual void
+source (Type const&);
+
+virtual void
+source_none (Type&);
+
+virtual void
+source_none (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+externalEndpoint (Type&);
+
+virtual void
+externalEndpoint (Type const&);
+
+virtual void
+externalEndpoint_pre (Type&);
+
+virtual void
+externalEndpoint_pre (Type const&);
+
+virtual void
+externalEndpoint_next (Type&);
+
+virtual void
+externalEndpoint_next (Type const&);
+
+virtual void
+externalEndpoint_post (Type&);
+
+virtual void
+externalEndpoint_post (Type const&);
+
+virtual void
+externalEndpoint_none (Type&);
+
+virtual void
+externalEndpoint_none (Type const&);
+
+virtual void
+internalEndpoint (Type&);
+
+virtual void
+internalEndpoint (Type const&);
+
+virtual void
+internalEndpoint_pre (Type&);
+
+virtual void
+internalEndpoint_pre (Type const&);
+
+virtual void
+internalEndpoint_next (Type&);
+
+virtual void
+internalEndpoint_next (Type const&);
+
+virtual void
+internalEndpoint_post (Type&);
+
+virtual void
+internalEndpoint_post (Type const&);
+
+virtual void
+internalEndpoint_none (Type&);
+
+virtual void
+internalEndpoint_none (Type const&);
+
+virtual void
+externalReference (Type&);
+
+virtual void
+externalReference (Type const&);
+
+virtual void
+externalReference_pre (Type&);
+
+virtual void
+externalReference_pre (Type const&);
+
+virtual void
+externalReference_next (Type&);
+
+virtual void
+externalReference_next (Type const&);
+
+virtual void
+externalReference_post (Type&);
+
+virtual void
+externalReference_post (Type const&);
+
+virtual void
+externalReference_none (Type&);
+
+virtual void
+externalReference_none (Type const&);
+
+virtual void
+deployedResource (Type&);
+
+virtual void
+deployedResource (Type const&);
+
+virtual void
+deployedResource_pre (Type&);
+
+virtual void
+deployedResource_pre (Type const&);
+
+virtual void
+deployedResource_next (Type&);
+
+virtual void
+deployedResource_next (Type const&);
+
+virtual void
+deployedResource_post (Type&);
+
+virtual void
+deployedResource_post (Type const&);
+
+virtual void
+deployedResource_none (Type&);
+
+virtual void
+deployedResource_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ImplementationDependency : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationDependency >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+requiredType (Type&);
+
+virtual void
+requiredType (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Capability : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Capability >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType (Type&);
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+resourceType_pre (Type&);
+
+virtual void
+resourceType_pre (Type const&);
+
+virtual void
+resourceType_next (Type&);
+
+virtual void
+resourceType_next (Type const&);
+
+virtual void
+resourceType_post (Type&);
+
+virtual void
+resourceType_post (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ImplementationRequirement : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationRequirement >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+resourceUsage (Type&);
+
+virtual void
+resourceUsage (Type const&);
+
+virtual void
+resourceUsage_none (Type&);
+
+virtual void
+resourceUsage_none (Type const&);
+
+virtual void
+resourcePort (Type&);
+
+virtual void
+resourcePort (Type const&);
+
+virtual void
+resourcePort_none (Type&);
+
+virtual void
+resourcePort_none (Type const&);
+
+virtual void
+componentPort (Type&);
+
+virtual void
+componentPort (Type const&);
+
+virtual void
+componentPort_none (Type&);
+
+virtual void
+componentPort_none (Type const&);
+
+virtual void
+resourceType (Type&);
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentPackageReference : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageReference >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+requiredUUID (Type&);
+
+virtual void
+requiredUUID (Type const&);
+
+virtual void
+requiredUUID_none (Type&);
+
+virtual void
+requiredUUID_none (Type const&);
+
+virtual void
+requiredName (Type&);
+
+virtual void
+requiredName (Type const&);
+
+virtual void
+requiredName_none (Type&);
+
+virtual void
+requiredName_none (Type const&);
+
+virtual void
+requiredType (Type&);
+
+virtual void
+requiredType (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export SubcomponentPortEndpoint : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentPortEndpoint >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+portName (Type&);
+
+virtual void
+portName (Type const&);
+
+virtual void
+instance (Type&);
+
+virtual void
+instance (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export AssemblyConnectionDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::AssemblyConnectionDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+internalEndpoint (Type&);
+
+virtual void
+internalEndpoint (Type const&);
+
+virtual void
+internalEndpoint_pre (Type&);
+
+virtual void
+internalEndpoint_pre (Type const&);
+
+virtual void
+internalEndpoint_next (Type&);
+
+virtual void
+internalEndpoint_next (Type const&);
+
+virtual void
+internalEndpoint_post (Type&);
+
+virtual void
+internalEndpoint_post (Type const&);
+
+virtual void
+internalEndpoint_none (Type&);
+
+virtual void
+internalEndpoint_none (Type const&);
+
+virtual void
+externalEndpoint (Type&);
+
+virtual void
+externalEndpoint (Type const&);
+
+virtual void
+externalEndpoint_pre (Type&);
+
+virtual void
+externalEndpoint_pre (Type const&);
+
+virtual void
+externalEndpoint_next (Type&);
+
+virtual void
+externalEndpoint_next (Type const&);
+
+virtual void
+externalEndpoint_post (Type&);
+
+virtual void
+externalEndpoint_post (Type const&);
+
+virtual void
+externalEndpoint_none (Type&);
+
+virtual void
+externalEndpoint_none (Type const&);
+
+virtual void
+externalReference (Type&);
+
+virtual void
+externalReference (Type const&);
+
+virtual void
+externalReference_pre (Type&);
+
+virtual void
+externalReference_pre (Type const&);
+
+virtual void
+externalReference_next (Type&);
+
+virtual void
+externalReference_next (Type const&);
+
+virtual void
+externalReference_post (Type&);
+
+virtual void
+externalReference_post (Type const&);
+
+virtual void
+externalReference_none (Type&);
+
+virtual void
+externalReference_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct TCKind : Traversal::TCKind,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+TCKind (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+this->traverse (const_cast <Type const &> (o));
+}
+
+virtual void
+traverse (Type const&);
+
+protected:
+TCKind ();
+};
+
+struct DataType : Traversal::DataType,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::DataType Type;
+DataType (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+kind (Type &o)
+{
+
+this->kind (const_cast <Type const &> (o));
+}
+
+
+virtual void
+kind (Type const&);
+
+virtual void
+enum_ (Type &o)
+{
+
+this->enum_ (const_cast <Type const &> (o));
+}
+
+
+virtual void
+enum_ (Type const&);
+
+protected:
+DataType ();
+};
+
+struct DataValue : Traversal::DataValue,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::DataValue Type;
+DataValue (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+short_pre (Type &o)
+{
+
+this->short_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+short_pre (Type const&);
+
+virtual void
+short_next (Type &o)
+{
+
+this->short_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+short_next (Type const&);
+
+virtual void
+short_post (Type &o)
+{
+
+this->short_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+short_post (Type const&);
+
+virtual void
+long_pre (Type &o)
+{
+
+this->long_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+long_pre (Type const&);
+
+virtual void
+long_next (Type &o)
+{
+
+this->long_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+long_next (Type const&);
+
+virtual void
+long_post (Type &o)
+{
+
+this->long_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+long_post (Type const&);
+
+virtual void
+ushort_pre (Type &o)
+{
+
+this->ushort_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ushort_pre (Type const&);
+
+virtual void
+ushort_next (Type &o)
+{
+
+this->ushort_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ushort_next (Type const&);
+
+virtual void
+ushort_post (Type &o)
+{
+
+this->ushort_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ushort_post (Type const&);
+
+virtual void
+ulong_pre (Type &o)
+{
+
+this->ulong_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulong_pre (Type const&);
+
+virtual void
+ulong_next (Type &o)
+{
+
+this->ulong_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulong_next (Type const&);
+
+virtual void
+ulong_post (Type &o)
+{
+
+this->ulong_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulong_post (Type const&);
+
+virtual void
+float_pre (Type &o)
+{
+
+this->float_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+float_pre (Type const&);
+
+virtual void
+float_next (Type &o)
+{
+
+this->float_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+float_next (Type const&);
+
+virtual void
+float_post (Type &o)
+{
+
+this->float_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+float_post (Type const&);
+
+virtual void
+double_pre (Type &o)
+{
+
+this->double_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+double_pre (Type const&);
+
+virtual void
+double_next (Type &o)
+{
+
+this->double_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+double_next (Type const&);
+
+virtual void
+double_post (Type &o)
+{
+
+this->double_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+double_post (Type const&);
+
+virtual void
+boolean_pre (Type &o)
+{
+
+this->boolean_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+boolean_pre (Type const&);
+
+virtual void
+boolean_next (Type &o)
+{
+
+this->boolean_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+boolean_next (Type const&);
+
+virtual void
+boolean_post (Type &o)
+{
+
+this->boolean_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+boolean_post (Type const&);
+
+virtual void
+octet_pre (Type &o)
+{
+
+this->octet_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+octet_pre (Type const&);
+
+virtual void
+octet_next (Type &o)
+{
+
+this->octet_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+octet_next (Type const&);
+
+virtual void
+octet_post (Type &o)
+{
+
+this->octet_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+octet_post (Type const&);
+
+virtual void
+enum_pre (Type &o)
+{
+
+this->enum_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+enum_pre (Type const&);
+
+virtual void
+enum_next (Type &o)
+{
+
+this->enum_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+enum_next (Type const&);
+
+virtual void
+enum_post (Type &o)
+{
+
+this->enum_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+enum_post (Type const&);
+
+virtual void
+string_pre (Type &o)
+{
+
+this->string_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+string_pre (Type const&);
+
+virtual void
+string_next (Type &o)
+{
+
+this->string_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+string_next (Type const&);
+
+virtual void
+string_post (Type &o)
+{
+
+this->string_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+string_post (Type const&);
+
+virtual void
+longlong_pre (Type &o)
+{
+
+this->longlong_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longlong_pre (Type const&);
+
+virtual void
+longlong_next (Type &o)
+{
+
+this->longlong_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longlong_next (Type const&);
+
+virtual void
+longlong_post (Type &o)
+{
+
+this->longlong_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longlong_post (Type const&);
+
+virtual void
+ulonglong_pre (Type &o)
+{
+
+this->ulonglong_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulonglong_pre (Type const&);
+
+virtual void
+ulonglong_next (Type &o)
+{
+
+this->ulonglong_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulonglong_next (Type const&);
+
+virtual void
+ulonglong_post (Type &o)
+{
+
+this->ulonglong_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+ulonglong_post (Type const&);
+
+virtual void
+longdouble_pre (Type &o)
+{
+
+this->longdouble_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longdouble_pre (Type const&);
+
+virtual void
+longdouble_next (Type &o)
+{
+
+this->longdouble_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longdouble_next (Type const&);
+
+virtual void
+longdouble_post (Type &o)
+{
+
+this->longdouble_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+longdouble_post (Type const&);
+
+protected:
+DataValue ();
+};
+
+struct EnumType : Traversal::EnumType,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::EnumType Type;
+EnumType (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+typeId (Type &o)
+{
+
+this->typeId (const_cast <Type const &> (o));
+}
+
+
+virtual void
+typeId (Type const&);
+
+virtual void
+member_pre (Type &o)
+{
+
+this->member_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+member_pre (Type const&);
+
+virtual void
+member_next (Type &o)
+{
+
+this->member_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+member_next (Type const&);
+
+virtual void
+member_post (Type &o)
+{
+
+this->member_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+member_post (Type const&);
+
+protected:
+EnumType ();
+};
+
+struct Any : Traversal::Any,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Any Type;
+Any (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+type (Type &o)
+{
+
+this->type (const_cast <Type const &> (o));
+}
+
+
+virtual void
+type (Type const&);
+
+virtual void
+value (Type &o)
+{
+
+this->value (const_cast <Type const &> (o));
+}
+
+
+virtual void
+value (Type const&);
+
+protected:
+Any ();
+};
+
+struct Property : Traversal::Property,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Property Type;
+Property (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+value (Type &o)
+{
+
+this->value (const_cast <Type const &> (o));
+}
+
+
+virtual void
+value (Type const&);
+
+protected:
+Property ();
+};
+
+struct SatisfierPropertyKind : Traversal::SatisfierPropertyKind,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+SatisfierPropertyKind (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+this->traverse (const_cast <Type const &> (o));
+}
+
+virtual void
+traverse (Type const&);
+
+protected:
+SatisfierPropertyKind ();
+};
+
+struct SatisfierProperty : Traversal::SatisfierProperty,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::SatisfierProperty Type;
+SatisfierProperty (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+kind (Type &o)
+{
+
+this->kind (const_cast <Type const &> (o));
+}
+
+
+virtual void
+kind (Type const&);
+
+virtual void
+dynamic (Type &o)
+{
+
+this->dynamic (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dynamic (Type const&);
+
+virtual void
+value (Type &o)
+{
+
+this->value (const_cast <Type const &> (o));
+}
+
+
+virtual void
+value (Type const&);
+
+protected:
+SatisfierProperty ();
+};
+
+struct Resource : Traversal::Resource,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Resource Type;
+Resource (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType_pre (Type &o)
+{
+
+this->resourceType_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_pre (Type const&);
+
+virtual void
+resourceType_next (Type &o)
+{
+
+this->resourceType_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_next (Type const&);
+
+virtual void
+resourceType_post (Type &o)
+{
+
+this->resourceType_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_post (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+Resource ();
+};
+
+struct Requirement : Traversal::Requirement,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Requirement Type;
+Requirement (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+resourceType (Type &o)
+{
+
+this->resourceType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+Requirement ();
+};
+
+struct ResourceDeploymentDescription : Traversal::ResourceDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ResourceDeploymentDescription Type;
+ResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+requirementName (Type &o)
+{
+
+this->requirementName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type &o)
+{
+
+this->resourceName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+ResourceDeploymentDescription ();
+};
+
+struct ArtifactDeploymentDescription : Traversal::ArtifactDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ArtifactDeploymentDescription Type;
+ArtifactDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+source_pre (Type &o)
+{
+
+this->source_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_pre (Type const&);
+
+virtual void
+source_next (Type &o)
+{
+
+this->source_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_next (Type const&);
+
+virtual void
+source_post (Type &o)
+{
+
+this->source_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_post (Type const&);
+
+virtual void
+node (Type &o)
+{
+
+this->node (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node (Type const&);
+
+virtual void
+location_pre (Type &o)
+{
+
+this->location_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type &o)
+{
+
+this->location_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type &o)
+{
+
+this->location_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_post (Type const&);
+
+virtual void
+execParameter_pre (Type &o)
+{
+
+this->execParameter_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type &o)
+{
+
+this->execParameter_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type &o)
+{
+
+this->execParameter_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployedResource_pre (Type &o)
+{
+
+this->deployedResource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_pre (Type const&);
+
+virtual void
+deployedResource_next (Type &o)
+{
+
+this->deployedResource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_next (Type const&);
+
+virtual void
+deployedResource_post (Type &o)
+{
+
+this->deployedResource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_post (Type const&);
+
+virtual void
+id (Type &o)
+{
+
+this->id (const_cast <Type const &> (o));
+}
+
+
+virtual void
+id (Type const&);
+
+protected:
+ArtifactDeploymentDescription ();
+};
+
+struct MonolithicDeploymentDescription : Traversal::MonolithicDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::MonolithicDeploymentDescription Type;
+MonolithicDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+source_pre (Type &o)
+{
+
+this->source_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_pre (Type const&);
+
+virtual void
+source_next (Type &o)
+{
+
+this->source_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_next (Type const&);
+
+virtual void
+source_post (Type &o)
+{
+
+this->source_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source_post (Type const&);
+
+virtual void
+artifact_pre (Type &o)
+{
+
+this->artifact_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+artifact_pre (Type const&);
+
+virtual void
+artifact_next (Type &o)
+{
+
+this->artifact_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+artifact_next (Type const&);
+
+virtual void
+artifact_post (Type &o)
+{
+
+this->artifact_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+artifact_post (Type const&);
+
+virtual void
+execParameter_pre (Type &o)
+{
+
+this->execParameter_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type &o)
+{
+
+this->execParameter_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type &o)
+{
+
+this->execParameter_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+id (Type &o)
+{
+
+this->id (const_cast <Type const &> (o));
+}
+
+
+virtual void
+id (Type const&);
+
+protected:
+MonolithicDeploymentDescription ();
+};
+
+struct ResourceUsageKind : Traversal::ResourceUsageKind,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+ResourceUsageKind (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+this->traverse (const_cast <Type const &> (o));
+}
+
+virtual void
+traverse (Type const&);
+
+protected:
+ResourceUsageKind ();
+};
+
+struct InstanceResourceDeploymentDescription : Traversal::InstanceResourceDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::InstanceResourceDeploymentDescription Type;
+InstanceResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+resourceUsage (Type &o)
+{
+
+this->resourceUsage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceUsage (Type const&);
+
+virtual void
+requirementName (Type &o)
+{
+
+this->requirementName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type &o)
+{
+
+this->resourceName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+InstanceResourceDeploymentDescription ();
+};
+
+struct InstanceDeploymentDescription : Traversal::InstanceDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::InstanceDeploymentDescription Type;
+InstanceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+node (Type &o)
+{
+
+this->node (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node (Type const&);
+
+virtual void
+source (Type &o)
+{
+
+this->source (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source (Type const&);
+
+virtual void
+implementation (Type &o)
+{
+
+this->implementation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+implementation (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+deployedResource (Type &o)
+{
+
+this->deployedResource (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource (Type const&);
+
+virtual void
+deployedSharedResource (Type &o)
+{
+
+this->deployedSharedResource (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedSharedResource (Type const&);
+
+virtual void
+id (Type &o)
+{
+
+this->id (const_cast <Type const &> (o));
+}
+
+
+virtual void
+id (Type const&);
+
+protected:
+InstanceDeploymentDescription ();
+};
+
+struct CCMComponentPortKind : Traversal::CCMComponentPortKind,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+CCMComponentPortKind (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+this->traverse (const_cast <Type const &> (o));
+}
+
+virtual void
+traverse (Type const&);
+
+protected:
+CCMComponentPortKind ();
+};
+
+struct ComponentPortDescription : Traversal::ComponentPortDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentPortDescription Type;
+ComponentPortDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+specificType (Type &o)
+{
+
+this->specificType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+specificType (Type const&);
+
+virtual void
+supportedType_pre (Type &o)
+{
+
+this->supportedType_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_pre (Type const&);
+
+virtual void
+supportedType_next (Type &o)
+{
+
+this->supportedType_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_next (Type const&);
+
+virtual void
+supportedType_post (Type &o)
+{
+
+this->supportedType_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_post (Type const&);
+
+virtual void
+provider (Type &o)
+{
+
+this->provider (const_cast <Type const &> (o));
+}
+
+
+virtual void
+provider (Type const&);
+
+virtual void
+exclusiveProvider (Type &o)
+{
+
+this->exclusiveProvider (const_cast <Type const &> (o));
+}
+
+
+virtual void
+exclusiveProvider (Type const&);
+
+virtual void
+exclusiveUser (Type &o)
+{
+
+this->exclusiveUser (const_cast <Type const &> (o));
+}
+
+
+virtual void
+exclusiveUser (Type const&);
+
+virtual void
+optional (Type &o)
+{
+
+this->optional (const_cast <Type const &> (o));
+}
+
+
+virtual void
+optional (Type const&);
+
+virtual void
+kind (Type &o)
+{
+
+this->kind (const_cast <Type const &> (o));
+}
+
+
+virtual void
+kind (Type const&);
+
+protected:
+ComponentPortDescription ();
+};
+
+struct ComponentPropertyDescription : Traversal::ComponentPropertyDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentPropertyDescription Type;
+ComponentPropertyDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+type (Type &o)
+{
+
+this->type (const_cast <Type const &> (o));
+}
+
+
+virtual void
+type (Type const&);
+
+protected:
+ComponentPropertyDescription ();
+};
+
+struct ComponentExternalPortEndpoint : Traversal::ComponentExternalPortEndpoint,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentExternalPortEndpoint Type;
+ComponentExternalPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+portName (Type &o)
+{
+
+this->portName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+portName (Type const&);
+
+protected:
+ComponentExternalPortEndpoint ();
+};
+
+struct PlanSubcomponentPortEndpoint : Traversal::PlanSubcomponentPortEndpoint,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::PlanSubcomponentPortEndpoint Type;
+PlanSubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+portName (Type &o)
+{
+
+this->portName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+portName (Type const&);
+
+virtual void
+provider (Type &o)
+{
+
+this->provider (const_cast <Type const &> (o));
+}
+
+
+virtual void
+provider (Type const&);
+
+virtual void
+kind (Type &o)
+{
+
+this->kind (const_cast <Type const &> (o));
+}
+
+
+virtual void
+kind (Type const&);
+
+virtual void
+instance (Type &o)
+{
+
+this->instance (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance (Type const&);
+
+protected:
+PlanSubcomponentPortEndpoint ();
+};
+
+struct ExternalReferenceEndpoint : Traversal::ExternalReferenceEndpoint,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ExternalReferenceEndpoint Type;
+ExternalReferenceEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+location (Type &o)
+{
+
+this->location (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location (Type const&);
+
+protected:
+ExternalReferenceEndpoint ();
+};
+
+struct ConnectionResourceDeploymentDescription : Traversal::ConnectionResourceDeploymentDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ConnectionResourceDeploymentDescription Type;
+ConnectionResourceDeploymentDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+targetName (Type &o)
+{
+
+this->targetName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+targetName (Type const&);
+
+virtual void
+requirementName (Type &o)
+{
+
+this->requirementName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requirementName (Type const&);
+
+virtual void
+resourceName (Type &o)
+{
+
+this->resourceName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceName (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+ConnectionResourceDeploymentDescription ();
+};
+
+struct PlanConnectionDescription : Traversal::PlanConnectionDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::PlanConnectionDescription Type;
+PlanConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+source (Type &o)
+{
+
+this->source (const_cast <Type const &> (o));
+}
+
+
+virtual void
+source (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+externalEndpoint_pre (Type &o)
+{
+
+this->externalEndpoint_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_pre (Type const&);
+
+virtual void
+externalEndpoint_next (Type &o)
+{
+
+this->externalEndpoint_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_next (Type const&);
+
+virtual void
+externalEndpoint_post (Type &o)
+{
+
+this->externalEndpoint_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_post (Type const&);
+
+virtual void
+internalEndpoint_pre (Type &o)
+{
+
+this->internalEndpoint_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_pre (Type const&);
+
+virtual void
+internalEndpoint_next (Type &o)
+{
+
+this->internalEndpoint_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_next (Type const&);
+
+virtual void
+internalEndpoint_post (Type &o)
+{
+
+this->internalEndpoint_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_post (Type const&);
+
+virtual void
+externalReference_pre (Type &o)
+{
+
+this->externalReference_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_pre (Type const&);
+
+virtual void
+externalReference_next (Type &o)
+{
+
+this->externalReference_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_next (Type const&);
+
+virtual void
+externalReference_post (Type &o)
+{
+
+this->externalReference_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_post (Type const&);
+
+virtual void
+deployedResource_pre (Type &o)
+{
+
+this->deployedResource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_pre (Type const&);
+
+virtual void
+deployedResource_next (Type &o)
+{
+
+this->deployedResource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_next (Type const&);
+
+virtual void
+deployedResource_post (Type &o)
+{
+
+this->deployedResource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployedResource_post (Type const&);
+
+protected:
+PlanConnectionDescription ();
+};
+
+struct ImplementationDependency : Traversal::ImplementationDependency,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ImplementationDependency Type;
+ImplementationDependency (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+requiredType (Type &o)
+{
+
+this->requiredType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requiredType (Type const&);
+
+protected:
+ImplementationDependency ();
+};
+
+struct Capability : Traversal::Capability,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Capability Type;
+Capability (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType_pre (Type &o)
+{
+
+this->resourceType_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_pre (Type const&);
+
+virtual void
+resourceType_next (Type &o)
+{
+
+this->resourceType_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_next (Type const&);
+
+virtual void
+resourceType_post (Type &o)
+{
+
+this->resourceType_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType_post (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+Capability ();
+};
+
+struct ImplementationRequirement : Traversal::ImplementationRequirement,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ImplementationRequirement Type;
+ImplementationRequirement (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+resourceUsage (Type &o)
+{
+
+this->resourceUsage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceUsage (Type const&);
+
+virtual void
+resourcePort (Type &o)
+{
+
+this->resourcePort (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourcePort (Type const&);
+
+virtual void
+componentPort (Type &o)
+{
+
+this->componentPort (const_cast <Type const &> (o));
+}
+
+
+virtual void
+componentPort (Type const&);
+
+virtual void
+resourceType (Type &o)
+{
+
+this->resourceType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+protected:
+ImplementationRequirement ();
+};
+
+struct ComponentPackageReference : Traversal::ComponentPackageReference,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentPackageReference Type;
+ComponentPackageReference (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+requiredUUID (Type &o)
+{
+
+this->requiredUUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requiredUUID (Type const&);
+
+virtual void
+requiredName (Type &o)
+{
+
+this->requiredName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requiredName (Type const&);
+
+virtual void
+requiredType (Type &o)
+{
+
+this->requiredType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+requiredType (Type const&);
+
+protected:
+ComponentPackageReference ();
+};
+
+struct SubcomponentPortEndpoint : Traversal::SubcomponentPortEndpoint,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::SubcomponentPortEndpoint Type;
+SubcomponentPortEndpoint (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+portName (Type &o)
+{
+
+this->portName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+portName (Type const&);
+
+virtual void
+instance (Type &o)
+{
+
+this->instance (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance (Type const&);
+
+protected:
+SubcomponentPortEndpoint ();
+};
+
+struct AssemblyConnectionDescription : Traversal::AssemblyConnectionDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::AssemblyConnectionDescription Type;
+AssemblyConnectionDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+internalEndpoint_pre (Type &o)
+{
+
+this->internalEndpoint_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_pre (Type const&);
+
+virtual void
+internalEndpoint_next (Type &o)
+{
+
+this->internalEndpoint_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_next (Type const&);
+
+virtual void
+internalEndpoint_post (Type &o)
+{
+
+this->internalEndpoint_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+internalEndpoint_post (Type const&);
+
+virtual void
+externalEndpoint_pre (Type &o)
+{
+
+this->externalEndpoint_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_pre (Type const&);
+
+virtual void
+externalEndpoint_next (Type &o)
+{
+
+this->externalEndpoint_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_next (Type const&);
+
+virtual void
+externalEndpoint_post (Type &o)
+{
+
+this->externalEndpoint_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalEndpoint_post (Type const&);
+
+virtual void
+externalReference_pre (Type &o)
+{
+
+this->externalReference_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_pre (Type const&);
+
+virtual void
+externalReference_next (Type &o)
+{
+
+this->externalReference_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_next (Type const&);
+
+virtual void
+externalReference_post (Type &o)
+{
+
+this->externalReference_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalReference_post (Type const&);
+
+protected:
+AssemblyConnectionDescription ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // BASIC_DEPLOYMENT_DATA_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/CCD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/CCD_Handler.cpp
new file mode 100644
index 00000000000..f7e4a7e82d3
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CCD_Handler.cpp
@@ -0,0 +1,186 @@
+// $Id$
+
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+
+#include "ciao/CIAO_common.h"
+#include "CCD_Handler.h"
+#include "ccd.hpp"
+#include "Property_Handler.h"
+#include "CPD_Handler.h"
+#include "ComponentPropertyDescription_Handler.h"
+#include "ciao/Deployment_DataC.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ CCD_Handler::component_interface_descr (
+ const ComponentInterfaceDescription &desc,
+ Deployment::ComponentInterfaceDescription& toconfig)
+ {
+ CIAO_TRACE("CCD_Handler::component_interface_descr");
+ if (desc.UUID_p ())
+ toconfig.UUID =
+ CORBA::string_dup (desc.UUID ().c_str ());
+
+ if (desc.label_p ())
+ {
+ toconfig.label =
+ CORBA::string_dup (desc.label ().c_str ());
+ }
+
+ if (desc.specificType_p ())
+ {
+ toconfig.specificType =
+ CORBA::string_dup (desc.specificType ().c_str ());
+ }
+
+ ComponentInterfaceDescription::supportedType_const_iterator
+ end = desc.end_supportedType ();
+
+ CORBA::ULong pos = 0;
+ toconfig.supportedType.length (desc.count_supportedType ());
+ for (ComponentInterfaceDescription::supportedType_const_iterator s =
+ desc.begin_supportedType ();
+ s != end;
+ ++s)
+ {
+ toconfig.supportedType[pos++] = s->c_str ();
+ }
+
+ ComponentInterfaceDescription::idlFile_const_iterator
+ eidl = desc.end_idlFile ();
+ pos = 0;
+ toconfig.idlFile.length (desc.count_idlFile ());
+ for (ComponentInterfaceDescription::idlFile_const_iterator sidl=
+ desc.begin_idlFile ();
+ sidl != eidl;
+ ++sidl)
+ {
+ toconfig.idlFile [pos++] = sidl->c_str ();
+ }
+
+ ComponentInterfaceDescription::configProperty_const_iterator pend =
+ desc.end_configProperty ();
+ pos = 0;
+ toconfig.configProperty.length (desc.count_configProperty ());
+ for (ComponentInterfaceDescription::configProperty_const_iterator pstart =
+ desc.begin_configProperty ();
+ pstart != pend;
+ ++pstart)
+ {
+ Property_Handler::handle_property (*pstart,
+ toconfig.configProperty [pos++]);
+ }
+
+ pos = 0;
+ toconfig.port.length (desc.count_port ());
+ for (ComponentInterfaceDescription::port_const_iterator
+ port (desc.begin_port ());
+ port != desc.end_port ();
+ ++port)
+ {
+ CPD_Handler::handle_component_port_description (*port,
+ toconfig.port[pos++]);
+ }
+
+ pos = 0;
+ CORBA::ULong len = desc.count_property ();
+ toconfig.property.length ( len );
+ for(ComponentInterfaceDescription::property_const_iterator
+ prop (desc.begin_property());
+ prop != desc.end_property();
+ prop++)
+ {
+ ComponentPropertyDescription_Handler::component_property_description (*prop,
+ toconfig.property[pos++]);
+ }
+
+ pos = 0;
+ toconfig.infoProperty.length (desc.count_infoProperty ());
+ for ( ComponentInterfaceDescription::infoProperty_const_iterator
+ infoProp (desc.begin_infoProperty());
+ infoProp != desc.end_infoProperty();
+ infoProp++)
+ {
+ Property_Handler::handle_property (*infoProp,
+ toconfig.infoProperty[pos]);
+ }
+ }
+
+ ComponentInterfaceDescription
+ CCD_Handler::component_interface_descr (
+ const ::Deployment::ComponentInterfaceDescription& src)
+ {
+ CIAO_TRACE("CCD_Handler::component_interface_descr - reverse");
+ ComponentInterfaceDescription cid;
+
+ //Load up the basic string members
+ XMLSchema::string< char > uuid ((src.UUID));
+ XMLSchema::string< char > label ((src.label));
+ XMLSchema::string< char > specifict ((src.specificType));
+
+ //Then put them in the CID
+ cid.UUID (uuid);
+ cid.label (label);
+ cid.specificType (specifict);
+
+ //Get the supported type(s) and load them into cid
+ ::CORBA::ULong total = src.supportedType.length ();
+ for (size_t i = 0; i < total; ++i)
+ {
+ XMLSchema::string< char > curr ((src.supportedType[i]));
+ cid.add_supportedType (curr);
+ }
+
+ //Get the idlFile(s) and store them into the cid
+ total = src.idlFile.length ();
+ for (size_t j = 0; j < total; ++j)
+ {
+ XMLSchema::string< char > curr ((src.idlFile[j]));
+ cid.add_idlFile (curr);
+ }
+
+ //Get the configProperty(ies) and store them into the cid
+ total = src.configProperty.length ();
+ for (size_t k = 0; k < total; ++k)
+ {
+ cid.add_configProperty (
+ Property_Handler::get_property (src.configProperty[k]));
+ }
+
+ //Same drill for the component port description(s)
+ total = src.port.length ();
+ for (size_t l = 0; l < total; ++l)
+ {
+ cid.add_port (
+ CPD_Handler::component_port_description (src.port[l]));
+ }
+
+
+ //Load up the property field
+ total = src.property.length();
+ for(size_t m = 0;
+ m < total;
+ m++)
+ {
+ cid.add_property(
+ ComponentPropertyDescription_Handler::component_property_description (
+ src.property[m]));
+ }
+
+ //Load up the infoProperty(s)
+ total = src.infoProperty.length();
+ for(size_t n = 0;
+ n < total;
+ n++)
+ {
+ cid.add_infoProperty(
+ Property_Handler::get_property (src.infoProperty[n]));
+ }
+
+ return cid;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CCD_Handler.h b/modules/CIAO/tools/Config_Handlers/CCD_Handler.h
new file mode 100644
index 00000000000..b3e8292f038
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CCD_Handler.h
@@ -0,0 +1,57 @@
+//================================================
+/**
+* @file CCD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CCD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CCD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+struct ComponentInterfaceDescription;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class ComponentInterfaceDescription;
+
+/*
+* @class CCD_Handler
+*
+* @brief Handler class for <ComponentInterfaceDescription> types.
+*
+* This class is named CCD_Handler but actually fills
+* <ComponentInterfaceDescription>. Why is this confusion? We
+* want to maintain the correlation between the XSD file and the
+* actual datatype. The file name corresponds to the XSD file but
+* the data type being filled in is of type
+* <ComponentInterfaceDescription>
+*/
+class Config_Handlers_Export CCD_Handler
+{
+public:
+static void component_interface_descr (const ComponentInterfaceDescription &src,
+::Deployment::ComponentInterfaceDescription& dest);
+static ComponentInterfaceDescription
+component_interface_descr (const ::Deployment::ComponentInterfaceDescription& src);
+
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CID_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/CEPE_Handler.cpp b/modules/CIAO/tools/Config_Handlers/CEPE_Handler.cpp
new file mode 100644
index 00000000000..3131ce5735b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CEPE_Handler.cpp
@@ -0,0 +1,51 @@
+// $Id$
+
+#include "CEPE_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ CEPE_Handler::external_port_endpoints (
+ const PlanConnectionDescription &src,
+ ::Deployment::ComponentExternalPortEndpoints &dest)
+ {
+ CIAO_TRACE("CEOE_Handler::external_port_endpoints");
+ PlanConnectionDescription::externalEndpoint_const_iterator eeci_e =
+ src.end_externalEndpoint ();
+
+ CORBA::ULong pos = 0;
+ dest.length (src.count_externalEndpoint ());
+ for (PlanConnectionDescription::externalEndpoint_const_iterator eeci_b =
+ src.begin_externalEndpoint ();
+ eeci_b != eeci_e;
+ ++eeci_b)
+ {
+ CEPE_Handler::handle_external_port_endpoint ((*eeci_b),
+ dest[pos++]);
+ }
+ }
+
+ void
+ CEPE_Handler::handle_external_port_endpoint (
+ const ComponentExternalPortEndpoint &src,
+ ::Deployment::ComponentExternalPortEndpoint &dest)
+ {
+ CIAO_TRACE("CEOE_Handler::external_port_endpoint");
+ dest.portName = src.portName ().c_str ();
+ }
+
+ ComponentExternalPortEndpoint
+ CEPE_Handler::external_port_endpoint (
+ const ::Deployment::ComponentExternalPortEndpoint &src)
+ {
+ CIAO_TRACE("CEOE_Handler::external_port_endpoint - reverse");
+ //MAJO Unfinished
+ XMLSchema::string< char > portname ((src.portName));
+ return ComponentExternalPortEndpoint (portname);
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CEPE_Handler.h b/modules/CIAO/tools/Config_Handlers/CEPE_Handler.h
new file mode 100644
index 00000000000..6a7f003fcd6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CEPE_Handler.h
@@ -0,0 +1,67 @@
+//==============================================================
+/**
+ * @file CEPE_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ class ComponentExternalPortEndpoints;
+ struct ComponentExternalPortEndpoint;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class PlanConnectionDescription;
+ class ComponentExternalPortEndpoint;
+
+ /*
+ * @class CEPE_Handler
+ *
+ * @brief Handler class for <ComponentExternalPortEndpoint> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC ComponentExternalPortEndpoint objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Common_Export CEPE_Handler
+ {
+ public:
+ static void external_port_endpoints (const PlanConnectionDescription &src,
+ ::Deployment::ComponentExternalPortEndpoints &dest);
+
+ static ComponentExternalPortEndpoint
+ external_port_endpoint (const ::Deployment::ComponentExternalPortEndpoint &src);
+
+ static void handle_external_port_endpoint (const ComponentExternalPortEndpoint &src,
+ ::Deployment::ComponentExternalPortEndpoint &dest);
+ };
+
+ typedef Sequence_Handler < ComponentExternalPortEndpoint,
+ ::Deployment::ComponentExternalPortEndpoints,
+ ::Deployment::ComponentExternalPortEndpoint,
+ CEPE_Handler::handle_external_port_endpoint > CEPE_Functor;
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CEPE_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp
new file mode 100644
index 00000000000..2f2db561642
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.cpp
@@ -0,0 +1,1360 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "CIAOEvents.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // EventServiceType
+ //
+
+ EventServiceType::Value EventServiceType::
+ integral () const
+ {
+ return v_;
+ }
+
+ bool
+ operator== (::CIAO::Config_Handlers::EventServiceType const& a, ::CIAO::Config_Handlers::EventServiceType const& b)
+ {
+ return a.v_ == b.v_;
+ }
+
+ bool
+ operator!= (::CIAO::Config_Handlers::EventServiceType const& a, ::CIAO::Config_Handlers::EventServiceType const& b)
+ {
+ return a.v_ != b.v_;
+ }
+
+ EventServiceType::
+ EventServiceType (EventServiceType::Value v)
+ : v_ (v)
+ {
+ }
+
+ // CIAOEventsDef
+ //
+
+ CIAOEventsDef::
+ CIAOEventsDef ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ CIAOEventsDef::
+ CIAOEventsDef (::CIAO::Config_Handlers::CIAOEventsDef const& s)
+ :
+ ::XSCRT::Type (),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ {
+ for (eventServiceConfiguration_const_iterator i (s.eventServiceConfiguration_.begin ());i != s.eventServiceConfiguration_.end ();++i) add_eventServiceConfiguration (*i);
+ }
+
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::CIAOEventsDef& CIAOEventsDef::
+ operator= (::CIAO::Config_Handlers::CIAOEventsDef const& s)
+ {
+ eventServiceConfiguration_.clear ();
+ {
+ for (eventServiceConfiguration_const_iterator i (s.eventServiceConfiguration_.begin ());i != s.eventServiceConfiguration_.end ();++i) add_eventServiceConfiguration (*i);
+ }
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // CIAOEventsDef
+ //
+ CIAOEventsDef::eventServiceConfiguration_iterator CIAOEventsDef::
+ begin_eventServiceConfiguration ()
+ {
+ return eventServiceConfiguration_.begin ();
+ }
+
+ CIAOEventsDef::eventServiceConfiguration_iterator CIAOEventsDef::
+ end_eventServiceConfiguration ()
+ {
+ return eventServiceConfiguration_.end ();
+ }
+
+ CIAOEventsDef::eventServiceConfiguration_const_iterator CIAOEventsDef::
+ begin_eventServiceConfiguration () const
+ {
+ return eventServiceConfiguration_.begin ();
+ }
+
+ CIAOEventsDef::eventServiceConfiguration_const_iterator CIAOEventsDef::
+ end_eventServiceConfiguration () const
+ {
+ return eventServiceConfiguration_.end ();
+ }
+
+ void CIAOEventsDef::
+ add_eventServiceConfiguration (::CIAO::Config_Handlers::EventServiceDescription const& e)
+ {
+ eventServiceConfiguration_.push_back (e);
+ }
+
+ size_t CIAOEventsDef::
+ count_eventServiceConfiguration(void) const
+ {
+ return eventServiceConfiguration_.size ();
+ }
+
+ // CIAOEventsDef
+ //
+ bool CIAOEventsDef::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& CIAOEventsDef::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& CIAOEventsDef::
+ id ()
+ {
+ return *id_;
+ }
+
+ void CIAOEventsDef::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // EventServiceDescription
+ //
+
+ EventServiceDescription::
+ EventServiceDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::string< ACE_TCHAR > const& node__,
+ ::CIAO::Config_Handlers::EventServiceType const& type__,
+ ::XMLSchema::string< ACE_TCHAR > const& svc_cfg_file__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ node_ (new ::XMLSchema::string< ACE_TCHAR > (node__)),
+ type_ (new ::CIAO::Config_Handlers::EventServiceType (type__)),
+ svc_cfg_file_ (new ::XMLSchema::string< ACE_TCHAR > (svc_cfg_file__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ node_->container (this);
+ type_->container (this);
+ svc_cfg_file_->container (this);
+ }
+
+ EventServiceDescription::
+ EventServiceDescription (::CIAO::Config_Handlers::EventServiceDescription const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ node_ (new ::XMLSchema::string< ACE_TCHAR > (*s.node_)),
+ type_ (new ::CIAO::Config_Handlers::EventServiceType (*s.type_)),
+ svc_cfg_file_ (new ::XMLSchema::string< ACE_TCHAR > (*s.svc_cfg_file_)),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ name_->container (this);
+ node_->container (this);
+ type_->container (this);
+ svc_cfg_file_->container (this);
+ {
+ for (filter_const_iterator i (s.filter_.begin ());i != s.filter_.end ();++i) add_filter (*i);
+ }
+
+ {
+ for (addr_serv_const_iterator i (s.addr_serv_.begin ());i != s.addr_serv_.end ();++i) add_addr_serv (*i);
+ }
+
+ {
+ for (udp_sender_const_iterator i (s.udp_sender_.begin ());i != s.udp_sender_.end ();++i) add_udp_sender (*i);
+ }
+
+ {
+ for (udp_receiver_const_iterator i (s.udp_receiver_.begin ());i != s.udp_receiver_.end ();++i) add_udp_receiver (*i);
+ }
+
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::EventServiceDescription& EventServiceDescription::
+ operator= (::CIAO::Config_Handlers::EventServiceDescription const& s)
+ {
+ name (s.name ());
+
+ node (s.node ());
+
+ type (s.type ());
+
+ svc_cfg_file (s.svc_cfg_file ());
+
+ filter_.clear ();
+ {
+ for (filter_const_iterator i (s.filter_.begin ());i != s.filter_.end ();++i) add_filter (*i);
+ }
+
+ addr_serv_.clear ();
+ {
+ for (addr_serv_const_iterator i (s.addr_serv_.begin ());i != s.addr_serv_.end ();++i) add_addr_serv (*i);
+ }
+
+ udp_sender_.clear ();
+ {
+ for (udp_sender_const_iterator i (s.udp_sender_.begin ());i != s.udp_sender_.end ();++i) add_udp_sender (*i);
+ }
+
+ udp_receiver_.clear ();
+ {
+ for (udp_receiver_const_iterator i (s.udp_receiver_.begin ());i != s.udp_receiver_.end ();++i) add_udp_receiver (*i);
+ }
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // EventServiceDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& EventServiceDescription::
+ name () const
+ {
+ return *name_;
+ }
+
+ void EventServiceDescription::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // EventServiceDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& EventServiceDescription::
+ node () const
+ {
+ return *node_;
+ }
+
+ void EventServiceDescription::
+ node (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *node_ = e;
+ }
+
+ // EventServiceDescription
+ //
+ ::CIAO::Config_Handlers::EventServiceType const& EventServiceDescription::
+ type () const
+ {
+ return *type_;
+ }
+
+ void EventServiceDescription::
+ type (::CIAO::Config_Handlers::EventServiceType const& e)
+ {
+ *type_ = e;
+ }
+
+ // EventServiceDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& EventServiceDescription::
+ svc_cfg_file () const
+ {
+ return *svc_cfg_file_;
+ }
+
+ void EventServiceDescription::
+ svc_cfg_file (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *svc_cfg_file_ = e;
+ }
+
+ // EventServiceDescription
+ //
+ EventServiceDescription::filter_iterator EventServiceDescription::
+ begin_filter ()
+ {
+ return filter_.begin ();
+ }
+
+ EventServiceDescription::filter_iterator EventServiceDescription::
+ end_filter ()
+ {
+ return filter_.end ();
+ }
+
+ EventServiceDescription::filter_const_iterator EventServiceDescription::
+ begin_filter () const
+ {
+ return filter_.begin ();
+ }
+
+ EventServiceDescription::filter_const_iterator EventServiceDescription::
+ end_filter () const
+ {
+ return filter_.end ();
+ }
+
+ void EventServiceDescription::
+ add_filter (::CIAO::Config_Handlers::Filter const& e)
+ {
+ filter_.push_back (e);
+ }
+
+ size_t EventServiceDescription::
+ count_filter(void) const
+ {
+ return filter_.size ();
+ }
+
+ // EventServiceDescription
+ //
+ EventServiceDescription::addr_serv_iterator EventServiceDescription::
+ begin_addr_serv ()
+ {
+ return addr_serv_.begin ();
+ }
+
+ EventServiceDescription::addr_serv_iterator EventServiceDescription::
+ end_addr_serv ()
+ {
+ return addr_serv_.end ();
+ }
+
+ EventServiceDescription::addr_serv_const_iterator EventServiceDescription::
+ begin_addr_serv () const
+ {
+ return addr_serv_.begin ();
+ }
+
+ EventServiceDescription::addr_serv_const_iterator EventServiceDescription::
+ end_addr_serv () const
+ {
+ return addr_serv_.end ();
+ }
+
+ void EventServiceDescription::
+ add_addr_serv (::CIAO::Config_Handlers::AddressServerDescription const& e)
+ {
+ addr_serv_.push_back (e);
+ }
+
+ size_t EventServiceDescription::
+ count_addr_serv(void) const
+ {
+ return addr_serv_.size ();
+ }
+
+ // EventServiceDescription
+ //
+ EventServiceDescription::udp_sender_iterator EventServiceDescription::
+ begin_udp_sender ()
+ {
+ return udp_sender_.begin ();
+ }
+
+ EventServiceDescription::udp_sender_iterator EventServiceDescription::
+ end_udp_sender ()
+ {
+ return udp_sender_.end ();
+ }
+
+ EventServiceDescription::udp_sender_const_iterator EventServiceDescription::
+ begin_udp_sender () const
+ {
+ return udp_sender_.begin ();
+ }
+
+ EventServiceDescription::udp_sender_const_iterator EventServiceDescription::
+ end_udp_sender () const
+ {
+ return udp_sender_.end ();
+ }
+
+ void EventServiceDescription::
+ add_udp_sender (::CIAO::Config_Handlers::UDPSenderDescription const& e)
+ {
+ udp_sender_.push_back (e);
+ }
+
+ size_t EventServiceDescription::
+ count_udp_sender(void) const
+ {
+ return udp_sender_.size ();
+ }
+
+ // EventServiceDescription
+ //
+ EventServiceDescription::udp_receiver_iterator EventServiceDescription::
+ begin_udp_receiver ()
+ {
+ return udp_receiver_.begin ();
+ }
+
+ EventServiceDescription::udp_receiver_iterator EventServiceDescription::
+ end_udp_receiver ()
+ {
+ return udp_receiver_.end ();
+ }
+
+ EventServiceDescription::udp_receiver_const_iterator EventServiceDescription::
+ begin_udp_receiver () const
+ {
+ return udp_receiver_.begin ();
+ }
+
+ EventServiceDescription::udp_receiver_const_iterator EventServiceDescription::
+ end_udp_receiver () const
+ {
+ return udp_receiver_.end ();
+ }
+
+ void EventServiceDescription::
+ add_udp_receiver (::CIAO::Config_Handlers::UDPReceiverDescription const& e)
+ {
+ udp_receiver_.push_back (e);
+ }
+
+ size_t EventServiceDescription::
+ count_udp_receiver(void) const
+ {
+ return udp_receiver_.size ();
+ }
+
+ // EventServiceDescription
+ //
+ bool EventServiceDescription::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& EventServiceDescription::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& EventServiceDescription::
+ id ()
+ {
+ return *id_;
+ }
+
+ void EventServiceDescription::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // FilterType
+ //
+
+ FilterType::Value FilterType::
+ integral () const
+ {
+ return v_;
+ }
+
+ bool
+ operator== (::CIAO::Config_Handlers::FilterType const& a, ::CIAO::Config_Handlers::FilterType const& b)
+ {
+ return a.v_ == b.v_;
+ }
+
+ bool
+ operator!= (::CIAO::Config_Handlers::FilterType const& a, ::CIAO::Config_Handlers::FilterType const& b)
+ {
+ return a.v_ != b.v_;
+ }
+
+ FilterType::
+ FilterType (FilterType::Value v)
+ : v_ (v)
+ {
+ }
+
+ // Filter
+ //
+
+ Filter::
+ Filter (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::CIAO::Config_Handlers::FilterType const& type__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ type_ (new ::CIAO::Config_Handlers::FilterType (type__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ type_->container (this);
+ }
+
+ Filter::
+ Filter (::CIAO::Config_Handlers::Filter const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ type_ (new ::CIAO::Config_Handlers::FilterType (*s.type_)),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ name_->container (this);
+ type_->container (this);
+ {
+ for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+ }
+
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::Filter& Filter::
+ operator= (::CIAO::Config_Handlers::Filter const& s)
+ {
+ name (s.name ());
+
+ type (s.type ());
+
+ source_.clear ();
+ {
+ for (source_const_iterator i (s.source_.begin ());i != s.source_.end ();++i) add_source (*i);
+ }
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // Filter
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& Filter::
+ name () const
+ {
+ return *name_;
+ }
+
+ void Filter::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // Filter
+ //
+ ::CIAO::Config_Handlers::FilterType const& Filter::
+ type () const
+ {
+ return *type_;
+ }
+
+ void Filter::
+ type (::CIAO::Config_Handlers::FilterType const& e)
+ {
+ *type_ = e;
+ }
+
+ // Filter
+ //
+ Filter::source_iterator Filter::
+ begin_source ()
+ {
+ return source_.begin ();
+ }
+
+ Filter::source_iterator Filter::
+ end_source ()
+ {
+ return source_.end ();
+ }
+
+ Filter::source_const_iterator Filter::
+ begin_source () const
+ {
+ return source_.begin ();
+ }
+
+ Filter::source_const_iterator Filter::
+ end_source () const
+ {
+ return source_.end ();
+ }
+
+ void Filter::
+ add_source (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ source_.push_back (e);
+ }
+
+ size_t Filter::
+ count_source(void) const
+ {
+ return source_.size ();
+ }
+
+ // Filter
+ //
+ bool Filter::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& Filter::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& Filter::
+ id ()
+ {
+ return *id_;
+ }
+
+ void Filter::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // AddressServerDescription
+ //
+
+ AddressServerDescription::
+ AddressServerDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::unsignedShort const& port__,
+ ::XMLSchema::string< ACE_TCHAR > const& address__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ port_ (new ::XMLSchema::unsignedShort (port__)),
+ address_ (new ::XMLSchema::string< ACE_TCHAR > (address__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ port_->container (this);
+ address_->container (this);
+ }
+
+ AddressServerDescription::
+ AddressServerDescription (::CIAO::Config_Handlers::AddressServerDescription const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ port_ (new ::XMLSchema::unsignedShort (*s.port_)),
+ address_ (new ::XMLSchema::string< ACE_TCHAR > (*s.address_)),
+ regulator__ ()
+ {
+ name_->container (this);
+ port_->container (this);
+ address_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::AddressServerDescription& AddressServerDescription::
+ operator= (::CIAO::Config_Handlers::AddressServerDescription const& s)
+ {
+ name (s.name ());
+
+ port (s.port ());
+
+ address (s.address ());
+
+ return *this;
+ }
+
+
+ // AddressServerDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& AddressServerDescription::
+ name () const
+ {
+ return *name_;
+ }
+
+ void AddressServerDescription::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // AddressServerDescription
+ //
+ ::XMLSchema::unsignedShort const& AddressServerDescription::
+ port () const
+ {
+ return *port_;
+ }
+
+ void AddressServerDescription::
+ port (::XMLSchema::unsignedShort const& e)
+ {
+ *port_ = e;
+ }
+
+ // AddressServerDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& AddressServerDescription::
+ address () const
+ {
+ return *address_;
+ }
+
+ void AddressServerDescription::
+ address (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *address_ = e;
+ }
+
+
+ // UDPSenderDescription
+ //
+
+ UDPSenderDescription::
+ UDPSenderDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::string< ACE_TCHAR > const& addr_serv_id__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ addr_serv_id_ (new ::XMLSchema::string< ACE_TCHAR > (addr_serv_id__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ addr_serv_id_->container (this);
+ }
+
+ UDPSenderDescription::
+ UDPSenderDescription (::CIAO::Config_Handlers::UDPSenderDescription const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ addr_serv_id_ (new ::XMLSchema::string< ACE_TCHAR > (*s.addr_serv_id_)),
+ regulator__ ()
+ {
+ name_->container (this);
+ addr_serv_id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::UDPSenderDescription& UDPSenderDescription::
+ operator= (::CIAO::Config_Handlers::UDPSenderDescription const& s)
+ {
+ name (s.name ());
+
+ addr_serv_id (s.addr_serv_id ());
+
+ return *this;
+ }
+
+
+ // UDPSenderDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& UDPSenderDescription::
+ name () const
+ {
+ return *name_;
+ }
+
+ void UDPSenderDescription::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // UDPSenderDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& UDPSenderDescription::
+ addr_serv_id () const
+ {
+ return *addr_serv_id_;
+ }
+
+ void UDPSenderDescription::
+ addr_serv_id (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *addr_serv_id_ = e;
+ }
+
+
+ // UDPReceiverDescription
+ //
+
+ UDPReceiverDescription::
+ UDPReceiverDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::boolean const& is_multicast__,
+ ::XMLSchema::unsignedShort const& listen_port__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ is_multicast_ (new ::XMLSchema::boolean (is_multicast__)),
+ listen_port_ (new ::XMLSchema::unsignedShort (listen_port__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ is_multicast_->container (this);
+ listen_port_->container (this);
+ }
+
+ UDPReceiverDescription::
+ UDPReceiverDescription (::CIAO::Config_Handlers::UDPReceiverDescription const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ addr_serv_id_ (s.addr_serv_id_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.addr_serv_id_) : 0),
+ is_multicast_ (new ::XMLSchema::boolean (*s.is_multicast_)),
+ listen_port_ (new ::XMLSchema::unsignedShort (*s.listen_port_)),
+ regulator__ ()
+ {
+ name_->container (this);
+ if (addr_serv_id_.get ()) addr_serv_id_->container (this);
+ is_multicast_->container (this);
+ listen_port_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::UDPReceiverDescription& UDPReceiverDescription::
+ operator= (::CIAO::Config_Handlers::UDPReceiverDescription const& s)
+ {
+ name (s.name ());
+
+ if (s.addr_serv_id_.get ()) addr_serv_id (*(s.addr_serv_id_));
+ else addr_serv_id_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ is_multicast (s.is_multicast ());
+
+ listen_port (s.listen_port ());
+
+ return *this;
+ }
+
+
+ // UDPReceiverDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& UDPReceiverDescription::
+ name () const
+ {
+ return *name_;
+ }
+
+ void UDPReceiverDescription::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // UDPReceiverDescription
+ //
+ bool UDPReceiverDescription::
+ addr_serv_id_p () const
+ {
+ return addr_serv_id_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& UDPReceiverDescription::
+ addr_serv_id () const
+ {
+ return *addr_serv_id_;
+ }
+
+ void UDPReceiverDescription::
+ addr_serv_id (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (addr_serv_id_.get ())
+ {
+ *addr_serv_id_ = e;
+ }
+
+ else
+ {
+ addr_serv_id_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ addr_serv_id_->container (this);
+ }
+ }
+
+ // UDPReceiverDescription
+ //
+ ::XMLSchema::boolean const& UDPReceiverDescription::
+ is_multicast () const
+ {
+ return *is_multicast_;
+ }
+
+ void UDPReceiverDescription::
+ is_multicast (::XMLSchema::boolean const& e)
+ {
+ *is_multicast_ = e;
+ }
+
+ // UDPReceiverDescription
+ //
+ ::XMLSchema::unsignedShort const& UDPReceiverDescription::
+ listen_port () const
+ {
+ return *listen_port_;
+ }
+
+ void UDPReceiverDescription::
+ listen_port (::XMLSchema::unsignedShort const& e)
+ {
+ *listen_port_ = e;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // EventServiceType
+ //
+
+ EventServiceType::
+ EventServiceType (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ : ::XSCRT::Type (e)
+ {
+ ::std::basic_string< ACE_TCHAR > v (e.value ());
+
+ if (v == "EC") v_ = EC_l;
+ else if (v == "RTEC") v_ = RTEC_l;
+ else if (v == "NOTIFY") v_ = NOTIFY_l;
+ else if (v == "RTNOTIFY") v_ = RTNOTIFY_l;
+ else
+ {
+ }
+ }
+
+ EventServiceType::
+ EventServiceType (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+ : ::XSCRT::Type (a)
+ {
+ ::std::basic_string< ACE_TCHAR > v (a.value ());
+
+ if (v == "EC") v_ = EC_l;
+ else if (v == "RTEC") v_ = RTEC_l;
+ else if (v == "NOTIFY") v_ = NOTIFY_l;
+ else if (v == "RTNOTIFY") v_ = RTNOTIFY_l;
+ else
+ {
+ }
+ }
+
+ EventServiceType const EventServiceType::EC (EventServiceType::EC_l);
+ EventServiceType const EventServiceType::RTEC (EventServiceType::RTEC_l);
+ EventServiceType const EventServiceType::NOTIFY (EventServiceType::NOTIFY_l);
+ EventServiceType const EventServiceType::RTNOTIFY (EventServiceType::RTNOTIFY_l);
+
+ // CIAOEventsDef
+ //
+
+ CIAOEventsDef::
+ CIAOEventsDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "eventServiceConfiguration")
+ {
+ ::CIAO::Config_Handlers::EventServiceDescription t (e);
+ add_eventServiceConfiguration (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // EventServiceDescription
+ //
+
+ EventServiceDescription::
+ EventServiceDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "name")
+ {
+ name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ name_->container (this);
+ }
+
+ else if (n == "node")
+ {
+ node_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ node_->container (this);
+ }
+
+ else if (n == "type")
+ {
+ type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::EventServiceType > (new ::CIAO::Config_Handlers::EventServiceType (e));
+ type_->container (this);
+ }
+
+ else if (n == "svc_cfg_file")
+ {
+ svc_cfg_file_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ svc_cfg_file_->container (this);
+ }
+
+ else if (n == "filter")
+ {
+ ::CIAO::Config_Handlers::Filter t (e);
+ add_filter (t);
+ }
+
+ else if (n == "addr_serv")
+ {
+ ::CIAO::Config_Handlers::AddressServerDescription t (e);
+ add_addr_serv (t);
+ }
+
+ else if (n == "udp_sender")
+ {
+ ::CIAO::Config_Handlers::UDPSenderDescription t (e);
+ add_udp_sender (t);
+ }
+
+ else if (n == "udp_receiver")
+ {
+ ::CIAO::Config_Handlers::UDPReceiverDescription t (e);
+ add_udp_receiver (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // FilterType
+ //
+
+ FilterType::
+ FilterType (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ : ::XSCRT::Type (e)
+ {
+ ::std::basic_string< ACE_TCHAR > v (e.value ());
+
+ if (v == "CONJUNCTION") v_ = CONJUNCTION_l;
+ else if (v == "DISJUNCTION") v_ = DISJUNCTION_l;
+ else if (v == "LOGICAL_AND") v_ = LOGICAL_AND_l;
+ else if (v == "NEGATE") v_ = NEGATE_l;
+ else
+ {
+ }
+ }
+
+ FilterType::
+ FilterType (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+ : ::XSCRT::Type (a)
+ {
+ ::std::basic_string< ACE_TCHAR > v (a.value ());
+
+ if (v == "CONJUNCTION") v_ = CONJUNCTION_l;
+ else if (v == "DISJUNCTION") v_ = DISJUNCTION_l;
+ else if (v == "LOGICAL_AND") v_ = LOGICAL_AND_l;
+ else if (v == "NEGATE") v_ = NEGATE_l;
+ else
+ {
+ }
+ }
+
+ FilterType const FilterType::CONJUNCTION (FilterType::CONJUNCTION_l);
+ FilterType const FilterType::DISJUNCTION (FilterType::DISJUNCTION_l);
+ FilterType const FilterType::LOGICAL_AND (FilterType::LOGICAL_AND_l);
+ FilterType const FilterType::NEGATE (FilterType::NEGATE_l);
+
+ // Filter
+ //
+
+ Filter::
+ Filter (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "name")
+ {
+ name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ name_->container (this);
+ }
+
+ else if (n == "type")
+ {
+ type_ = ::std::auto_ptr< ::CIAO::Config_Handlers::FilterType > (new ::CIAO::Config_Handlers::FilterType (e));
+ type_->container (this);
+ }
+
+ else if (n == "source")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ add_source (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // AddressServerDescription
+ //
+
+ AddressServerDescription::
+ AddressServerDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "name")
+ {
+ name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ name_->container (this);
+ }
+
+ else if (n == "port")
+ {
+ port_ = ::std::auto_ptr< ::XMLSchema::unsignedShort > (new ::XMLSchema::unsignedShort (e));
+ port_->container (this);
+ }
+
+ else if (n == "address")
+ {
+ address_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ address_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // UDPSenderDescription
+ //
+
+ UDPSenderDescription::
+ UDPSenderDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "name")
+ {
+ name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ name_->container (this);
+ }
+
+ else if (n == "addr_serv_id")
+ {
+ addr_serv_id_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ addr_serv_id_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // UDPReceiverDescription
+ //
+
+ UDPReceiverDescription::
+ UDPReceiverDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "name")
+ {
+ name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ name_->container (this);
+ }
+
+ else if (n == "addr_serv_id")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ addr_serv_id (t);
+ }
+
+ else if (n == "is_multicast")
+ {
+ is_multicast_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+ is_multicast_->container (this);
+ }
+
+ else if (n == "listen_port")
+ {
+ listen_port_ = ::std::auto_ptr< ::XMLSchema::unsignedShort > (new ::XMLSchema::unsignedShort (e));
+ listen_port_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ ::CIAO::Config_Handlers::CIAOEventsDef
+ CIAOEvents (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "CIAOEvents")
+ {
+ ::CIAO::Config_Handlers::CIAOEventsDef r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp
new file mode 100644
index 00000000000..692b6b940d0
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents.hpp
@@ -0,0 +1,514 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "CIAO_Events_Handlers_Export.h"
+#ifndef CIAOEVENTS_HPP
+#define CIAOEVENTS_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class EventServiceType;
+ class CIAOEventsDef;
+ class EventServiceDescription;
+ class FilterType;
+ class Filter;
+ class AddressServerDescription;
+ class UDPSenderDescription;
+ class UDPReceiverDescription;
+ }
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class CIAO_Events_Handlers_Export EventServiceType : public ::XSCRT::Type
+ {
+ public:
+ EventServiceType (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ EventServiceType (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+ static EventServiceType const EC;
+ static EventServiceType const RTEC;
+ static EventServiceType const NOTIFY;
+ static EventServiceType const RTNOTIFY;
+
+ enum Value
+ {
+ EC_l,RTEC_l,NOTIFY_l,RTNOTIFY_l
+ };
+
+
+ Value
+ integral () const;
+
+ friend bool CIAO_Events_Handlers_Export
+ operator== (EventServiceType const& a, EventServiceType const& b);
+
+ friend bool CIAO_Events_Handlers_Export
+ operator!= (EventServiceType const& a, EventServiceType const& b);
+
+ private:
+ EventServiceType (Value v);
+
+ Value v_;
+ };
+
+ bool CIAO_Events_Handlers_Export operator== (EventServiceType const &a, EventServiceType const &b);
+
+ bool CIAO_Events_Handlers_Export operator!= (EventServiceType const &a, EventServiceType const &b);
+
+
+ class CIAO_Events_Handlers_Export CIAOEventsDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // eventServiceConfiguration
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::EventServiceDescription >::iterator eventServiceConfiguration_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::EventServiceDescription >::const_iterator eventServiceConfiguration_const_iterator;
+ eventServiceConfiguration_iterator begin_eventServiceConfiguration ();
+ eventServiceConfiguration_iterator end_eventServiceConfiguration ();
+ eventServiceConfiguration_const_iterator begin_eventServiceConfiguration () const;
+ eventServiceConfiguration_const_iterator end_eventServiceConfiguration () const;
+ void add_eventServiceConfiguration (::CIAO::Config_Handlers::EventServiceDescription const& );
+ size_t count_eventServiceConfiguration (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::EventServiceDescription > eventServiceConfiguration_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ CIAOEventsDef ();
+
+ CIAOEventsDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ CIAOEventsDef (CIAOEventsDef const& s);
+
+ CIAOEventsDef&
+ operator= (CIAOEventsDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class CIAO_Events_Handlers_Export EventServiceDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // name
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& name () const;
+ void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+ // node
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& node () const;
+ void node (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > node_;
+
+ // type
+ //
+ public:
+ ::CIAO::Config_Handlers::EventServiceType const& type () const;
+ void type (::CIAO::Config_Handlers::EventServiceType const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::EventServiceType > type_;
+
+ // svc_cfg_file
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& svc_cfg_file () const;
+ void svc_cfg_file (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > svc_cfg_file_;
+
+ // filter
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::Filter >::iterator filter_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::Filter >::const_iterator filter_const_iterator;
+ filter_iterator begin_filter ();
+ filter_iterator end_filter ();
+ filter_const_iterator begin_filter () const;
+ filter_const_iterator end_filter () const;
+ void add_filter (::CIAO::Config_Handlers::Filter const& );
+ size_t count_filter (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::Filter > filter_;
+
+ // addr_serv
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::AddressServerDescription >::iterator addr_serv_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::AddressServerDescription >::const_iterator addr_serv_const_iterator;
+ addr_serv_iterator begin_addr_serv ();
+ addr_serv_iterator end_addr_serv ();
+ addr_serv_const_iterator begin_addr_serv () const;
+ addr_serv_const_iterator end_addr_serv () const;
+ void add_addr_serv (::CIAO::Config_Handlers::AddressServerDescription const& );
+ size_t count_addr_serv (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::AddressServerDescription > addr_serv_;
+
+ // udp_sender
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::UDPSenderDescription >::iterator udp_sender_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::UDPSenderDescription >::const_iterator udp_sender_const_iterator;
+ udp_sender_iterator begin_udp_sender ();
+ udp_sender_iterator end_udp_sender ();
+ udp_sender_const_iterator begin_udp_sender () const;
+ udp_sender_const_iterator end_udp_sender () const;
+ void add_udp_sender (::CIAO::Config_Handlers::UDPSenderDescription const& );
+ size_t count_udp_sender (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::UDPSenderDescription > udp_sender_;
+
+ // udp_receiver
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::UDPReceiverDescription >::iterator udp_receiver_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::UDPReceiverDescription >::const_iterator udp_receiver_const_iterator;
+ udp_receiver_iterator begin_udp_receiver ();
+ udp_receiver_iterator end_udp_receiver ();
+ udp_receiver_const_iterator begin_udp_receiver () const;
+ udp_receiver_const_iterator end_udp_receiver () const;
+ void add_udp_receiver (::CIAO::Config_Handlers::UDPReceiverDescription const& );
+ size_t count_udp_receiver (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::UDPReceiverDescription > udp_receiver_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ EventServiceDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::string< ACE_TCHAR > const& node__,
+ ::CIAO::Config_Handlers::EventServiceType const& type__,
+ ::XMLSchema::string< ACE_TCHAR > const& svc_cfg_file__);
+
+ EventServiceDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ EventServiceDescription (EventServiceDescription const& s);
+
+ EventServiceDescription&
+ operator= (EventServiceDescription const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class CIAO_Events_Handlers_Export FilterType : public ::XSCRT::Type
+ {
+ public:
+ FilterType (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ FilterType (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+ static FilterType const CONJUNCTION;
+ static FilterType const DISJUNCTION;
+ static FilterType const LOGICAL_AND;
+ static FilterType const NEGATE;
+
+ enum Value
+ {
+ CONJUNCTION_l,DISJUNCTION_l,LOGICAL_AND_l,NEGATE_l
+ };
+
+
+ Value
+ integral () const;
+
+ friend bool CIAO_Events_Handlers_Export
+ operator== (FilterType const& a, FilterType const& b);
+
+ friend bool CIAO_Events_Handlers_Export
+ operator!= (FilterType const& a, FilterType const& b);
+
+ private:
+ FilterType (Value v);
+
+ Value v_;
+ };
+
+ bool CIAO_Events_Handlers_Export operator== (FilterType const &a, FilterType const &b);
+
+ bool CIAO_Events_Handlers_Export operator!= (FilterType const &a, FilterType const &b);
+
+
+ class CIAO_Events_Handlers_Export Filter : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // name
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& name () const;
+ void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+ // type
+ //
+ public:
+ ::CIAO::Config_Handlers::FilterType const& type () const;
+ void type (::CIAO::Config_Handlers::FilterType const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::FilterType > type_;
+
+ // source
+ //
+ public:
+ typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator source_iterator;
+ typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator source_const_iterator;
+ source_iterator begin_source ();
+ source_iterator end_source ();
+ source_const_iterator begin_source () const;
+ source_const_iterator end_source () const;
+ void add_source (::XMLSchema::string< ACE_TCHAR > const& );
+ size_t count_source (void) const;
+
+ protected:
+ ::std::list< ::XMLSchema::string< ACE_TCHAR > > source_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ Filter (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::CIAO::Config_Handlers::FilterType const& type__);
+
+ Filter (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ Filter (Filter const& s);
+
+ Filter&
+ operator= (Filter const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class CIAO_Events_Handlers_Export AddressServerDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // name
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& name () const;
+ void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+ // port
+ //
+ public:
+ ::XMLSchema::unsignedShort const& port () const;
+ void port (::XMLSchema::unsignedShort const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedShort > port_;
+
+ // address
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& address () const;
+ void address (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > address_;
+
+ public:
+ AddressServerDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::unsignedShort const& port__,
+ ::XMLSchema::string< ACE_TCHAR > const& address__);
+
+ AddressServerDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ AddressServerDescription (AddressServerDescription const& s);
+
+ AddressServerDescription&
+ operator= (AddressServerDescription const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class CIAO_Events_Handlers_Export UDPSenderDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // name
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& name () const;
+ void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+ // addr_serv_id
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& addr_serv_id () const;
+ void addr_serv_id (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > addr_serv_id_;
+
+ public:
+ UDPSenderDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::string< ACE_TCHAR > const& addr_serv_id__);
+
+ UDPSenderDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ UDPSenderDescription (UDPSenderDescription const& s);
+
+ UDPSenderDescription&
+ operator= (UDPSenderDescription const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class CIAO_Events_Handlers_Export UDPReceiverDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // name
+ //
+ public:
+ ::XMLSchema::string< ACE_TCHAR > const& name () const;
+ void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+ // addr_serv_id
+ //
+ public:
+ bool addr_serv_id_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& addr_serv_id () const;
+ void addr_serv_id (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > addr_serv_id_;
+
+ // is_multicast
+ //
+ public:
+ ::XMLSchema::boolean const& is_multicast () const;
+ void is_multicast (::XMLSchema::boolean const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::boolean > is_multicast_;
+
+ // listen_port
+ //
+ public:
+ ::XMLSchema::unsignedShort const& listen_port () const;
+ void listen_port (::XMLSchema::unsignedShort const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedShort > listen_port_;
+
+ public:
+ UDPReceiverDescription (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::XMLSchema::boolean const& is_multicast__,
+ ::XMLSchema::unsignedShort const& listen_port__);
+
+ UDPReceiverDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ UDPReceiverDescription (UDPReceiverDescription const& s);
+
+ UDPReceiverDescription&
+ operator= (UDPReceiverDescription const& s);
+
+ private:
+ char regulator__;
+ };
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ CIAO_Events_Handlers_Export
+ ::CIAO::Config_Handlers::CIAOEventsDef
+ CIAOEvents (xercesc::DOMDocument const*);
+ }
+}
+
+#endif // CIAOEVENTS_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp
new file mode 100644
index 00000000000..fd7cb12a464
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.cpp
@@ -0,0 +1,197 @@
+// $Id$
+#include "Utils/XML_Helper.h"
+#include "CIAOEvents_Handler.h"
+#include "CIAOEvents.hpp"
+#include "ciao/Deployment_EventsC.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ CIAOEvents_Handler::CIAOEvents_Handler (const ACE_TCHAR *file) :
+ idl_esd_(0),
+ esd_(0),
+ retval_ (false)
+ {
+ XML_Helper helper;
+
+ XERCES_CPP_NAMESPACE::DOMDocument *dom =
+ helper.create_dom (file);
+
+ if (!dom)
+ throw CIAOEvents_Handler::NoESD ();
+
+ this->esd_.reset (new CIAOEventsDef
+ (CIAOEvents (dom)));
+
+ if (!this->build_esd ())
+ throw NoESD ();
+ }
+
+ CIAOEvents_Handler::CIAOEvents_Handler (CIAOEventsDef *esd):
+ idl_esd_(0),
+ esd_(esd),
+ retval_(false)
+ {
+ if(!this->build_esd())
+ throw NoESD ();
+ }
+
+
+ CIAOEvents_Handler::~CIAOEvents_Handler (void)
+ {
+ }
+
+ bool
+ CIAOEvents_Handler::build_esd ()
+ {
+ this->idl_esd_.reset ( new ::CIAO::DAnCE::EventServiceDeploymentDescriptions );
+
+
+ this->idl_esd_->length (this->esd_->count_eventServiceConfiguration ());
+ CORBA::ULong pos_i = 0;
+ for (CIAOEventsDef::eventServiceConfiguration_const_iterator i = this->esd_->begin_eventServiceConfiguration ();
+ i != this->esd_->end_eventServiceConfiguration ();
+ i++)
+ {
+ CIAO::DAnCE::EventServiceDeploymentDescription a_esd;
+
+ a_esd.name = CORBA::string_dup (i->name ().c_str ());
+ a_esd.node = CORBA::string_dup (i->node ().c_str ());
+
+ switch (i->type ().integral ())
+ {
+ case ::CIAO::Config_Handlers::EventServiceType::EC_l:
+ a_esd.type = CIAO::EC;
+ break;
+ case ::CIAO::Config_Handlers::EventServiceType::NOTIFY_l:
+ a_esd.type = CIAO::NOTIFY;
+ break;
+ case ::CIAO::Config_Handlers::EventServiceType::RTEC_l:
+ a_esd.type = CIAO::RTEC;
+ break;
+ case ::CIAO::Config_Handlers::EventServiceType::RTNOTIFY_l:
+ a_esd.type = CIAO::RTNOTIFY;
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Invalid event service type\n"));
+ return false;
+ }
+
+ a_esd.svc_cfg_file = CORBA::string_dup (i->svc_cfg_file ().c_str ());
+
+
+ // Populate filtering information for this event channel
+ a_esd.filters.length (i->count_filter ());
+ CORBA::ULong pos_j = 0;
+ for (EventServiceDescription::filter_const_iterator j = i->begin_filter ();
+ j != i->end_filter ();
+ j++)
+ {
+ a_esd.filters[pos_j].name = CORBA::string_dup (j->name ().c_str ());
+ switch (j->type ().integral ())
+ {
+ case ::CIAO::Config_Handlers::FilterType::CONJUNCTION_l:
+ a_esd.filters[pos_j].type = CIAO::DAnCE::CONJUNCTION;
+ break;
+ case ::CIAO::Config_Handlers::FilterType::DISJUNCTION_l:
+ a_esd.filters[pos_j].type = CIAO::DAnCE::DISJUNCTION;
+ break;
+ case ::CIAO::Config_Handlers::FilterType::LOGICAL_AND_l:
+ a_esd.filters[pos_j].type = CIAO::DAnCE::LOGICAL_AND;
+ break;
+ case ::CIAO::Config_Handlers::FilterType::NEGATE_l:
+ a_esd.filters[pos_j].type = CIAO::DAnCE::NEGATE;
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Invalid filter type\n"));
+ return false;
+ }
+
+ a_esd.filters[pos_j].sources.length (j->count_source ());
+ CORBA::ULong pos_k = 0;
+ for (Filter::source_const_iterator k = j->begin_source ();
+ k != j->end_source ();
+ k++)
+ {
+ a_esd.filters[pos_j].sources[pos_k] = CORBA::string_dup (k->c_str ());
+ pos_k++;
+
+ }
+ pos_j++;
+ }
+
+ // Populate address server information for this event channel
+ a_esd.addr_servs.length (i->count_addr_serv ());
+ pos_j = 0;
+ for (EventServiceDescription::addr_serv_const_iterator j = i->begin_addr_serv ();
+ j != i->end_addr_serv ();
+ j++)
+ {
+ a_esd.addr_servs[pos_j].name = CORBA::string_dup (j->name ().c_str ());
+ a_esd.addr_servs[pos_j].port = j->port ();
+ a_esd.addr_servs[pos_j].address = CORBA::string_dup (j->address ().c_str ());
+ pos_j++;
+ }
+
+ // Populate UDP sender information for this event channel
+ a_esd.senders.length (i->count_udp_sender ());
+ pos_j = 0;
+ for (EventServiceDescription::udp_sender_const_iterator j = i->begin_udp_sender ();
+ j != i->end_udp_sender ();
+ j++)
+ {
+ a_esd.senders[pos_j].name = CORBA::string_dup (j->name ().c_str ());
+ a_esd.senders[pos_j].addr_serv_id =
+ CORBA::string_dup (j->addr_serv_id ().c_str ());
+ pos_j++;
+ }
+
+ // Populate UDP receiver information for this event channel
+ a_esd.receivers.length (i->count_udp_receiver ());
+ pos_j = 0;
+ for (EventServiceDescription::udp_receiver_const_iterator j = i->begin_udp_receiver ();
+ j != i->end_udp_receiver ();
+ j++)
+ {
+ a_esd.receivers[pos_j].name = CORBA::string_dup (j->name ().c_str ());
+ a_esd.receivers[pos_j].addr_serv_id =
+ CORBA::string_dup (j->addr_serv_id ().c_str ());
+ a_esd.receivers[pos_j].is_multicast = j->is_multicast ();
+ a_esd.receivers[pos_j].listen_port = j->listen_port ();
+ pos_j++;
+ }
+
+ (*this->idl_esd_)[pos_i] = a_esd;
+ pos_i++;
+ }
+ return true;
+ }
+
+
+ ::CIAO::DAnCE::EventServiceDeploymentDescriptions const *
+ CIAOEvents_Handler::esd_idl () const
+ throw (CIAOEvents_Handler::NoESD)
+ {
+ if(!this->idl_esd_.get())
+ throw NoESD ();
+
+ //else
+ return this->idl_esd_.get();
+ }
+
+ ::CIAO::DAnCE::EventServiceDeploymentDescriptions *
+ CIAOEvents_Handler::esd_idl ()
+ throw (CIAOEvents_Handler::NoESD)
+ {
+ if(!this->idl_esd_.get())
+ throw NoESD();
+
+ //else
+ return this->idl_esd_.release();
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h
new file mode 100644
index 00000000000..7a27aa76a64
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAOEvents_Handler.h
@@ -0,0 +1,74 @@
+//================================================
+/**
+ * @file CIAOEvents_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CIAOEvents_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CIAOEvents_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "ciao/Deployment_EventsC.h"
+#include "CIAO_Events_Handlers_Export.h"
+#include "ciao/DeploymentC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class CIAOEventsDef;
+
+ /*
+ * @class CIAOEvents_Handler
+ *
+ * @brief Handler class for <CIAOEvents> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class CIAO_Events_Handlers_Export CIAOEvents_Handler
+ {
+
+ public:
+ class NoESD {};
+
+ CIAOEvents_Handler (const ACE_TCHAR *file);
+
+ CIAOEvents_Handler(CIAOEventsDef *esd);
+
+ ~CIAOEvents_Handler (void);
+
+ CIAO::DAnCE::EventServiceDeploymentDescriptions const *esd_idl (void) const
+ throw (CIAOEvents_Handler::NoESD);
+
+ CIAO::DAnCE::EventServiceDeploymentDescriptions *esd_idl (void)
+ throw (CIAOEvents_Handler::NoESD);
+
+ private:
+ bool build_esd ();
+
+ auto_ptr <CIAO::DAnCE::EventServiceDeploymentDescriptions > idl_esd_;
+
+ auto_ptr <CIAOEventsDef> esd_;
+
+ bool retval_;
+
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CIAOEvents_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc
new file mode 100644
index 00000000000..395b76fd09e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers.mpc
@@ -0,0 +1,28 @@
+//$Id$
+
+project (CIAO_Events_Handlers) : acelib, ciao_xml_utils, ciao_events_dnc, ciao_deployment_stub {
+ sharedname = CIAO_Events_Handlers
+ dynamicflags = CIAO_EVENTS_HANDLERS_BUILD_DLL
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+
+ Source_Files {
+ CIAOEvents.cpp
+ CIAOEvents_Handler.cpp
+ }
+
+ Header_Files {
+ }
+}
+
+project (CIAO_Events_Handlers_Tests) : ciao_xml_utils, ciao_server_dnc {
+ exename = test
+ after += CIAO_Events_Handlers
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+ libs += CIAO_Events_Handlers
+
+ Source_Files {
+ test.cpp
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h
new file mode 100644
index 00000000000..efe95849905
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/CIAO_Events_Handlers_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -n CIAO_Events_Handlers
+// ------------------------------
+#ifndef CIAO_EVENTS_HANDLERS_EXPORT_H
+#define CIAO_EVENTS_HANDLERS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_EVENTS_HANDLERS_HAS_DLL)
+# define CIAO_EVENTS_HANDLERS_HAS_DLL 1
+#endif /* ! CIAO_EVENTS_HANDLERS_HAS_DLL */
+
+#if defined (CIAO_EVENTS_HANDLERS_HAS_DLL) && (CIAO_EVENTS_HANDLERS_HAS_DLL == 1)
+# if defined (CIAO_EVENTS_HANDLERS_BUILD_DLL)
+# define CIAO_Events_Handlers_Export ACE_Proper_Export_Flag
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_EVENTS_HANDLERS_BUILD_DLL */
+# define CIAO_Events_Handlers_Export ACE_Proper_Import_Flag
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_EVENTS_HANDLERS_BUILD_DLL */
+#else /* CIAO_EVENTS_HANDLERS_HAS_DLL == 1 */
+# define CIAO_Events_Handlers_Export
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARATION(T)
+# define CIAO_EVENTS_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_EVENTS_HANDLERS_HAS_DLL == 1 */
+
+// Set CIAO_EVENTS_HANDLERS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_EVENTS_HANDLERS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_EVENTS_HANDLERS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_EVENTS_HANDLERS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_EVENTS_HANDLERS_NTRACE */
+
+#if (CIAO_EVENTS_HANDLERS_NTRACE == 1)
+# define CIAO_EVENTS_HANDLERS_TRACE(X)
+#else /* (CIAO_EVENTS_HANDLERS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_EVENTS_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_EVENTS_HANDLERS_NTRACE == 1) */
+
+#endif /* CIAO_EVENTS_HANDLERS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/CIAO_Events/test.cpp b/modules/CIAO/tools/Config_Handlers/CIAO_Events/test.cpp
new file mode 100644
index 00000000000..63c024a0a89
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CIAO_Events/test.cpp
@@ -0,0 +1,58 @@
+// $Id$
+
+#include <iostream>
+
+#include "CIAOEvents.hpp"
+#include "CIAOEvents_Handler.h"
+#include "ciao/Deployment_EventsC.h"
+
+#include "ace/Get_Opt.h"
+#include "tao/ORB.h"
+
+static const char *input_file = "test.ced";
+
+
+static int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "i:");
+
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'i':
+ input_file = get_opts.opt_arg ();
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-i <input file> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command-line
+ return 0;
+}
+
+using namespace CIAO::Config_Handlers;
+
+int main (int argc, char *argv[])
+{
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CIAOEvents_Handler event_handler (input_file);
+ // Convert XSC to idl datatype
+
+ std::cout << "Instance document import succeeded. Dumping contents to file\n";
+
+ std::cout << "Test completed!";
+
+ return 0;
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CPD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/CPD_Handler.cpp
new file mode 100644
index 00000000000..0b7b54d1adf
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CPD_Handler.cpp
@@ -0,0 +1,150 @@
+// $Id$
+
+#include "CPD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ CPD_Handler::handle_component_port_description (
+ const ComponentPortDescription& desc,
+ Deployment::ComponentPortDescription& toconfig)
+ {
+ CIAO_TRACE("CPD_Handler::component_port_description");
+ toconfig.name =
+ desc.name ().c_str ();
+
+ if (desc.specificType_p ())
+ toconfig.specificType =
+ desc.specificType ().c_str ();
+
+ toconfig.supportedType.length (desc.count_supportedType ());
+ std::for_each (desc.begin_supportedType (),
+ desc.end_supportedType (),
+ String_Seq_Functor (toconfig.supportedType));
+
+
+ switch (desc.kind ().integral ())
+ {
+ case CCMComponentPortKind::Facet_l:
+ toconfig.kind = Deployment::Facet;
+ break;
+
+ case CCMComponentPortKind::SimplexReceptacle_l:
+ toconfig.kind = Deployment::SimplexReceptacle;
+ break;
+
+ case CCMComponentPortKind::MultiplexReceptacle_l:
+ toconfig.kind = Deployment::MultiplexReceptacle;
+ break;
+
+ case CCMComponentPortKind::EventEmitter_l:
+ toconfig.kind = Deployment::EventEmitter;
+ break;
+
+ case CCMComponentPortKind::EventPublisher_l:
+ toconfig.kind = Deployment::EventPublisher;
+ break;
+
+ case CCMComponentPortKind::EventConsumer_l:
+ toconfig.kind = Deployment::EventConsumer;
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid port type in connection %s\n",
+ desc.name ().c_str ()));
+ throw 1;
+ }
+
+ /* @@BUG: We need to consider how to handle booleans. */
+ toconfig.provider = desc.provider ();
+ toconfig.exclusiveProvider = desc.exclusiveProvider ();
+ toconfig.exclusiveUser = desc.exclusiveUser ();
+ toconfig.optional = desc.optional ();
+ }
+
+ ComponentPortDescription
+ CPD_Handler::component_port_description (
+ const Deployment::ComponentPortDescription& src)
+ {
+ CIAO_TRACE("CPD_Handler::component_port_description - reverse");
+ ::XMLSchema::string< char > name ((src.name));
+ ::XMLSchema::string< char > stype ((src.specificType));
+
+ ::XMLSchema::string< char > tval ("true");
+ ::XMLSchema::string< char > fval ("false");
+ XMLSchema::boolean provider;
+ XMLSchema::boolean exclusiveProvider;
+ XMLSchema::boolean exclusiveUser;
+ XMLSchema::boolean optional;
+
+ if (src.provider)
+ provider = true;
+ else
+ provider = false;
+
+ if (src.exclusiveUser)
+ exclusiveUser = true;
+ else
+ provider = false;
+
+ if (src.exclusiveProvider)
+ exclusiveProvider = true;
+ else
+ provider = false;
+
+ if (src.optional)
+ optional = true;
+ else
+ provider = false;
+
+ ComponentPortDescription cpd (name,
+ provider,
+ exclusiveProvider,
+ exclusiveUser,
+ optional,
+ CCMComponentPortKind::Facet);
+
+ switch (src.kind)
+ {
+ case ::Deployment::Facet:
+ cpd.kind (CCMComponentPortKind::Facet);
+ break;
+
+ case ::Deployment::SimplexReceptacle:
+ cpd.kind (CCMComponentPortKind::SimplexReceptacle);
+ break;
+
+ case ::Deployment::MultiplexReceptacle:
+ cpd.kind (CCMComponentPortKind::MultiplexReceptacle);
+ break;
+
+ case ::Deployment::EventEmitter:
+ cpd.kind (CCMComponentPortKind::EventEmitter);
+ break;
+
+ case ::Deployment::EventPublisher:
+ cpd.kind (CCMComponentPortKind::EventPublisher);
+ break;
+
+ case ::Deployment::EventConsumer:
+ cpd.kind (CCMComponentPortKind::EventConsumer);
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid port kind in connection %s\n",
+ name.c_str ()));
+ }
+
+ for (CORBA::ULong i = 0; i < src.supportedType.length (); ++i)
+ cpd.add_supportedType (XMLSchema::string< char > ((src.supportedType[i])));
+
+ return cpd;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CPD_Handler.h b/modules/CIAO/tools/Config_Handlers/CPD_Handler.h
new file mode 100644
index 00000000000..16e78f661f2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CPD_Handler.h
@@ -0,0 +1,68 @@
+//================================================
+/**
+ * @file CPD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CPD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CPD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ComponentPortDescription;
+ class ComponentPortDescriptions;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentPortDescription;
+ /*
+ * @class CPD_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+
+ class Config_Handlers_Common_Export CPD_Handler
+ {
+
+ public:
+ /// Maps the values from the XSC object
+ /// <ComponentInterfaceDescription> to the CORBA IDL type
+ /// <Deployment::ComponentInterfaceDescription>.
+ static void handle_component_port_description (const ComponentPortDescription &desc,
+ ::Deployment::ComponentPortDescription &toconfig);
+
+ static ComponentPortDescription
+ component_port_description (const Deployment::ComponentPortDescription& src);
+ };
+
+ typedef Sequence_Handler < ComponentPortDescription,
+ ::Deployment::ComponentPortDescriptions,
+ ::Deployment::ComponentPortDescription,
+ CPD_Handler::handle_component_port_description > CPD_Functor;
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/CRDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/CRDD_Handler.cpp
new file mode 100644
index 00000000000..03da34467eb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CRDD_Handler.cpp
@@ -0,0 +1,66 @@
+// $Id$
+
+#include "CRDD_Handler.h"
+#include "Any_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Property_Handler.h"
+
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ CRDD_Handler::CRDD_Handler (void)
+ {
+ }
+
+ CRDD_Handler::~CRDD_Handler (void)
+ {
+ }
+
+ ///This method takes a <Deployment::ConnectionResourceDeploymentDescription>
+ ///and maps the values from the passed in XSC
+ ///ConnectionResourceDeploymentDescription to its members.
+ void CRDD_Handler::get_ConnectionResourceDeploymentDescription (Deployment::ConnectionResourceDeploymentDescription& toconfig,
+ const ConnectionResourceDeploymentDescription& desc)
+ {
+ CIAO_TRACE("CRDD_Handler::get_ConnectionResourceDD");
+
+ toconfig.targetName = desc.targetName ().c_str ();
+ toconfig.requirementName = desc.requirementName ().c_str ();
+ toconfig.resourceName = desc.resourceName ().c_str ();
+
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property));
+ }
+
+ ConnectionResourceDeploymentDescription
+ CRDD_Handler::connection_resource_depl_desc (
+ const ::Deployment::ConnectionResourceDeploymentDescription& src)
+ {
+ CIAO_TRACE("CRDD_Handler::get_ConnectionResourceDeploymentDescription- reverse");
+ XMLSchema::string< ACE_TCHAR > tname ((src.targetName));
+ XMLSchema::string< ACE_TCHAR > reqname ((src.requirementName));
+ XMLSchema::string <ACE_TCHAR> resname ((src.resourceName));
+
+ ConnectionResourceDeploymentDescription crdd (tname,
+ reqname,
+ resname);
+
+ for (CORBA::ULong i = 0;
+ i != src.property.length ();
+ ++i)
+ {
+ crdd.add_property (Property_Handler::get_property (src.property[i]));
+ }
+
+
+ return crdd;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/CRDD_Handler.h b/modules/CIAO/tools/Config_Handlers/CRDD_Handler.h
new file mode 100644
index 00000000000..8f5c964aab4
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/CRDD_Handler.h
@@ -0,0 +1,67 @@
+//==============================================================
+/**
+ * @file CRDD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ConnectionResourceDeploymentDescription;
+}
+
+namespace CIAO
+{
+
+ namespace Config_Handlers
+ {
+
+ class ConnectionResourceDeploymentDescription;
+
+ /*
+ * @class CRDD_Handler
+ *
+ * @brief Handler class for <ConnectionResourceDeploymentDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC ConnectionResourceDeploymentDescription objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Export CRDD_Handler{
+
+ public:
+
+ CRDD_Handler (void);
+ virtual ~CRDD_Handler (void);
+
+ ///This method takes a <Deployment::ConnectionResourceDeploymentDescription>
+ ///and maps the values from the passed in XSC
+ ///ConnectionResourceDeploymentDescription to its members.
+ void get_ConnectionResourceDeploymentDescription (Deployment::ConnectionResourceDeploymentDescription& toconfig,
+ const ConnectionResourceDeploymentDescription& desc);
+
+ static ConnectionResourceDeploymentDescription
+ connection_resource_depl_desc (
+ const ::Deployment::ConnectionResourceDeploymentDescription& src);
+
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CRDD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Common.h b/modules/CIAO/tools/Config_Handlers/Common.h
new file mode 100644
index 00000000000..6057cbb74be
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Common.h
@@ -0,0 +1,41 @@
+// $Id$
+/**
+* @file Common.h
+* @author Will Otte <wotte@dre.vanderbilt.edu>
+*
+* Some common definitions for all config_handlers.
+*/
+#ifndef CONFIG_HANDLERS_COMMON_H
+#define CONFIG_HANDLERS_COMMON_H
+#include <string>
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+/**
+* @class Config_Error
+* @brief Exception to communicate a config_handlers error
+*/
+class Config_Error
+{
+public:
+Config_Error (const std::string &name,
+const std::string &error) :
+name_ (name),
+error_ (error)
+{};
+
+/// Some identifying information about the element that
+/// caused the error
+std::string name_;
+
+/// A human readable error message
+std::string error_;
+
+};
+}
+}
+#endif /* CONFIG_HANDLERS_COMMON_H */
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp b/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp
new file mode 100644
index 00000000000..e7f9fa0266d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.cpp
@@ -0,0 +1,41 @@
+//$Id$
+
+#include "ComponentPropertyDescription_Handler.h"
+#include "DataType_Handler.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ ComponentPropertyDescription_Handler::component_property_description (
+ const ComponentPropertyDescription& desc,
+ ::Deployment::ComponentPropertyDescription& toconfig)
+ {
+ CIAO_TRACE("ComponentPropertyDescription_Handler::component_property_description");
+ toconfig.name = CORBA::string_dup (desc.name ().c_str ());
+
+ // Delegate the DataType to the
+ // DataType_Handler.
+
+ // @@ There is a lurking bug here.
+ //#if 0
+ CORBA::TypeCode_ptr tcptr = toconfig.type.in ();
+ DataType_Handler::data_type (desc.type (), tcptr);
+ //#endif /*if 0*/
+ }
+
+ ComponentPropertyDescription
+ ComponentPropertyDescription_Handler::component_property_description (
+ const ::Deployment::ComponentPropertyDescription &src)
+ {
+ CIAO_TRACE("ComponentPropertyDescription_Handler::component_property_description - reverse");
+ XMLSchema::string< char > name ((src.name));
+ DataType dt (DataType_Handler::data_type (src.type));
+ ComponentPropertyDescription cpd (name,dt);
+ return cpd;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.h b/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.h
new file mode 100644
index 00000000000..f87edc7fcea
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ComponentPropertyDescription_Handler.h
@@ -0,0 +1,61 @@
+//==============================================================
+/**
+* @file ComponentPropertyDescription_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H
+#define CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H
+#include /**/ "ace/pre.h"
+
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+struct ComponentPropertyDescription;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class ComponentPropertyDescription;
+
+/*
+* @class ComponentPropertyDescription_Handler
+*
+* @brief Handler class for <ComponentPortDescription> types.
+*
+* This class defines handler methods to map values from
+* XSC objects, parsed from the descriptor files, to the
+* corresponding CORBA IDL type for the schema element.
+*
+*/
+class Config_Handlers_Export ComponentPropertyDescription_Handler
+{
+public:
+
+/// This method maps the values from the XSC object
+/// <ComponentPropertyDescription> to the CORBA IDL type
+/// <Deployment::ComponentPropertyDescription>.
+static void component_property_description (
+const ComponentPropertyDescription& desc,
+::Deployment::ComponentPropertyDescription& toconfig);
+static ComponentPropertyDescription
+component_property_description (
+const ::Deployment::ComponentPropertyDescription &src);
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ComponentPropertyDescription_Handler_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Config_Handlers.mpc b/modules/CIAO/tools/Config_Handlers/Config_Handlers.mpc
new file mode 100644
index 00000000000..be3a4f289aa
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Config_Handlers.mpc
@@ -0,0 +1,107 @@
+//$Id$
+
+project (XSC_XML_Handlers) : acelib, xerces {
+ sharedname += XSC_XML_Handlers
+ dynamicflags = XSC_XML_HANDLERS_BUILD_DLL
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+
+ Source_Files {
+ ccd.cpp
+ cdd.cpp
+ cdp.cpp
+ cid.cpp
+ cpd.cpp
+ Deployment.cpp
+ iad.cpp
+ pcd.cpp
+ toplevel.cpp
+ Basic_Deployment_Data.cpp
+ }
+
+ Header_Files {
+ XSC_XML_Handlers_Export.h
+ }
+
+ verbatim(gnuace, macros) {
+ override no_hidden_visibility = 1
+ }
+
+}
+
+project (XSC_Config_Handlers) : ciao_deployment_stub, ciao_events_dnc, ciao_config_handlers_base {
+ after += CIAO_Events_Handlers \
+ RT_CCM_Config_Handlers \
+ XSC_DynAny_Handler \
+ XSC_Config_Handlers_Common
+ sharedname = XSC_Config_Handlers
+ dynamicflags = CONFIG_HANDLERS_BUILD_DLL
+ libs += CIAO_XML_Utils \
+ CIAO_Events_Handlers \
+ RT_CCM_Config_Handlers \
+ XSC_XML_Handlers \
+ XSC_DynAny_Handler \
+ XSC_Config_Handlers_Common
+
+ Source_Files {
+ DP_Handler.cpp
+ CCD_Handler.cpp
+ ComponentPropertyDescription_Handler.cpp
+ MDD_Handler.cpp
+ ComponentPropertyDescription_Handler.cpp
+ MDD_Handler.cpp
+ PSPE_Handler.cpp
+ CRDD_Handler.cpp
+ IDD_Handler.cpp
+ ADD_Handler.cpp
+ ComponentPropertyDescription_Handler.cpp
+ RDD_Handler.cpp
+ ID_Handler.cpp
+ XML_File_Intf.cpp
+ IDREF_Base.cpp
+ DnC_Dump.cpp
+ DnC_Dump_T.cpp
+ Dump_Obj.cpp
+ PCD_Handler.cpp
+ IRDD_Handler.cpp
+ DD_Handler.cpp
+
+ }
+
+ Header_Files {
+ Config_Handlers_Export.h
+ }
+
+}
+
+project (XSC_Config_Handlers_Common) : ciao_deployment_stub, ciao_config_handlers_base {
+ after += XSC_DynAny_Handler
+ sharedname = XSC_Config_Handlers_Common
+ dynamicflags = CONFIG_HANDLERS_COMMON_BUILD_DLL
+
+ libs += XSC_DynAny_Handler
+
+ Source_Files {
+ ERE_Handler.cpp
+ Req_Handler.cpp
+ DataType_Handler.cpp
+ Property_Handler.cpp
+ SatisfierProperty_Handler.cpp
+ CPD_Handler.cpp
+ CEPE_Handler.cpp
+ Any_Handler.cpp
+ }
+}
+project (XSC_Config_Handlers_Tests) : ciao_component_dnc, ciao_config_handlers, ifr_client {
+// requires += dummy_label
+includes += $(CIAO_ROOT)/tools/Config_Handlers
+exename = test
+dynamicflags = CONFIG_HANDLERS_BUILD_DLL
+macros += XML_USE_PTHREADS
+
+Source_Files {
+test.cpp
+}
+}
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/Config_Handlers_Common_Export.h b/modules/CIAO/tools/Config_Handlers/Config_Handlers_Common_Export.h
new file mode 100644
index 00000000000..f1583c7e71d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Config_Handlers_Common_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s Config_Handlers_Common
+// ------------------------------
+#ifndef CONFIG_HANDLERS_COMMON_EXPORT_H
+#define CONFIG_HANDLERS_COMMON_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CONFIG_HANDLERS_COMMON_HAS_DLL)
+# define CONFIG_HANDLERS_COMMON_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CONFIG_HANDLERS_COMMON_HAS_DLL */
+
+#if !defined (CONFIG_HANDLERS_COMMON_HAS_DLL)
+# define CONFIG_HANDLERS_COMMON_HAS_DLL 1
+#endif /* ! CONFIG_HANDLERS_COMMON_HAS_DLL */
+
+#if defined (CONFIG_HANDLERS_COMMON_HAS_DLL) && (CONFIG_HANDLERS_COMMON_HAS_DLL == 1)
+# if defined (CONFIG_HANDLERS_COMMON_BUILD_DLL)
+# define Config_Handlers_Common_Export ACE_Proper_Export_Flag
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CONFIG_HANDLERS_COMMON_BUILD_DLL */
+# define Config_Handlers_Common_Export ACE_Proper_Import_Flag
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CONFIG_HANDLERS_COMMON_BUILD_DLL */
+#else /* CONFIG_HANDLERS_COMMON_HAS_DLL == 1 */
+# define Config_Handlers_Common_Export
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARATION(T)
+# define CONFIG_HANDLERS_COMMON_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CONFIG_HANDLERS_COMMON_HAS_DLL == 1 */
+
+// Set CONFIG_HANDLERS_COMMON_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CONFIG_HANDLERS_COMMON_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CONFIG_HANDLERS_COMMON_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CONFIG_HANDLERS_COMMON_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CONFIG_HANDLERS_COMMON_NTRACE */
+
+#if (CONFIG_HANDLERS_COMMON_NTRACE == 1)
+# define CONFIG_HANDLERS_COMMON_TRACE(X)
+#else /* (CONFIG_HANDLERS_COMMON_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CONFIG_HANDLERS_COMMON_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CONFIG_HANDLERS_COMMON_NTRACE == 1) */
+
+#endif /* CONFIG_HANDLERS_COMMON_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/Config_Handlers_Export.h b/modules/CIAO/tools/Config_Handlers/Config_Handlers_Export.h
new file mode 100644
index 00000000000..64dec8bdfa5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Config_Handlers_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl -s Config_Handlers
+// ------------------------------
+#ifndef CONFIG_HANDLERS_EXPORT_H
+#define CONFIG_HANDLERS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (CONFIG_HANDLERS_HAS_DLL)
+# define CONFIG_HANDLERS_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && CONFIG_HANDLERS_HAS_DLL */
+
+#if !defined (CONFIG_HANDLERS_HAS_DLL)
+# define CONFIG_HANDLERS_HAS_DLL 1
+#endif /* ! CONFIG_HANDLERS_HAS_DLL */
+
+#if defined (CONFIG_HANDLERS_HAS_DLL) && (CONFIG_HANDLERS_HAS_DLL == 1)
+# if defined (CONFIG_HANDLERS_BUILD_DLL)
+# define Config_Handlers_Export ACE_Proper_Export_Flag
+# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CONFIG_HANDLERS_BUILD_DLL */
+# define Config_Handlers_Export ACE_Proper_Import_Flag
+# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CONFIG_HANDLERS_BUILD_DLL */
+#else /* CONFIG_HANDLERS_HAS_DLL == 1 */
+# define Config_Handlers_Export
+# define CONFIG_HANDLERS_SINGLETON_DECLARATION(T)
+# define CONFIG_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CONFIG_HANDLERS_HAS_DLL == 1 */
+
+// Set CONFIG_HANDLERS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CONFIG_HANDLERS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CONFIG_HANDLERS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CONFIG_HANDLERS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CONFIG_HANDLERS_NTRACE */
+
+#if (CONFIG_HANDLERS_NTRACE == 1)
+# define CONFIG_HANDLERS_TRACE(X)
+#else /* (CONFIG_HANDLERS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CONFIG_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CONFIG_HANDLERS_NTRACE == 1) */
+
+#endif /* CONFIG_HANDLERS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/DD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DD_Handler.cpp
new file mode 100644
index 00000000000..d6de22ee29e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DD_Handler.cpp
@@ -0,0 +1,244 @@
+// $Id$
+
+#include "Utils/XML_Helper.h"
+#include "SatisfierProperty_Handler.h"
+#include "DD_Handler.h"
+#include "Any_Handler.h"
+#include "Deployment.hpp"
+#include "ciao/Deployment_TargetDataC.h"
+#include "CIAO_common.h"
+
+using namespace std;
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ DD_Handler::DD_Handler (const ACE_TCHAR *file) :
+ idl_domain_(0),
+ domain_ (0),
+ retval_ (false)
+ {
+ CIAO_TRACE("DP_PCD_Handler::constructor");
+ XML_Helper helper;
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "inside DD_Handler"));
+ }
+
+
+ XERCES_CPP_NAMESPACE::DOMDocument *dom =
+ helper.create_dom (file);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "after create dom"));
+ }
+
+ if (!dom)
+ throw DD_Handler::NoDomain ();
+
+ Domain *dm =
+ new Domain (domain (dom));
+
+ // Domain d = domain (dom);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "dom"));
+ }
+
+
+ this->domain_.reset (dm);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "after reset"));
+ }
+
+ if (!this->build_domain ())
+ throw NoDomain ();
+ }
+
+ DD_Handler::DD_Handler (Domain *dmn):
+ idl_domain_(0),
+ domain_(dmn),
+ retval_(false)
+ {
+ CIAO_TRACE("DP_PCD_Handler::constructor - Domain");
+ if(!this->build_domain ())
+ throw NoDomain ();
+ }
+
+ DD_Handler::DD_Handler (::Deployment::Domain *dmn):
+ idl_domain_(dmn),
+ domain_(0),
+ retval_(false)
+ {
+ if(!this->build_xsc())
+ throw NoDomain ();
+ }
+
+ DD_Handler::~DD_Handler (void)
+ {
+ }
+
+ bool
+ DD_Handler::build_domain ()
+ {
+ CIAO_TRACE("DP_PCD_Handler::build_domain");
+ this->idl_domain_.reset ( new ::Deployment::Domain );
+
+ // Read in the name
+ // Check if the label is there or not
+ if (domain_->label_p ())
+ this->idl_domain_->label =
+ CORBA::string_dup (domain_->label ().c_str ());
+
+ if (domain_->UUID_p ())
+ this->idl_domain_->UUID =
+ CORBA::string_dup (domain_->UUID ().c_str ());
+
+ CORBA::ULong len = domain_->count_node ();
+ this->idl_domain_->node.length (len);
+
+ if (CIAO::debug_level () > 9)
+ {
+ ACE_DEBUG ((LM_DEBUG , "The node length is [%d]\n",len));
+ }
+
+ //Resource _resource;
+ int i =0;
+ for (Domain::node_const_iterator iter = domain_->begin_node ();
+ iter != domain_->end_node ();
+ ++iter,++i
+ )
+ {
+ // Node* thisNode = (Node*)iter;
+ this->idl_domain_->node[i].name =
+ CORBA::string_dup (iter->name ().c_str ());
+
+ if (iter->label_p ())
+ this->idl_domain_->node[i].label =
+ CORBA::string_dup (iter->label ().c_str ());
+
+ // length is hard-coded for now ...
+ // here iterate over the resources ...
+ CORBA::ULong res_len = iter->count_resource ();
+ this->idl_domain_->node[i].resource.length (res_len);
+
+ int res_id=0;
+ // FOR EACH RESOURCE ....
+ for (Node::resource_const_iterator res_iter = iter->begin_resource ();
+ res_iter != iter->end_resource ();
+ res_iter++, res_id++)
+ {
+
+ this->idl_domain_->node[i].resource[res_id].name =
+ CORBA::string_dup (res_iter->name ().c_str ());
+
+ CORBA::ULong resource_type_len = res_iter->count_resourceType ();
+ this->idl_domain_->node[i].resource[res_id].resourceType.length (resource_type_len);
+
+ int res_type_id =0;
+
+ // FOR EACH RESOURCE TYPE
+ for (Resource::resourceType_const_iterator res_type_iter =
+ res_iter->begin_resourceType ();
+ res_type_iter != res_iter->end_resourceType ();
+ res_type_iter++, res_type_id++)
+ {
+ this->idl_domain_->node[i].resource[res_id].resourceType[res_type_id] =
+ CORBA::string_dup (res_type_iter->c_str ());
+ }
+
+ CORBA::ULong property_len = res_iter->count_property ();
+ this->idl_domain_->node[i].resource[res_id].property.length (property_len);
+
+ // int property_id =0;
+
+ std::for_each (res_iter->begin_property (),
+ res_iter->end_property (),
+ SatisfierProperty_Functor (this->idl_domain_->node[i].resource[res_id].property));
+
+ /*
+ //FOR EACH PROPERTY
+ for (Resource::property_const_iterator property_iter =
+ res_iter->begin_property ();
+ property_iter != res_iter->end_property ();
+ property_iter++, property_id++)
+ {
+ this->idl_domain_->node[i].resource[res_id].property[property_id ].name =
+ CORBA::string_dup (property_iter->name ().c_str ());
+
+
+ this->idl_domain_->node[i].resource[res_id].property[property_id].kind =
+ ::Deployment::Quantity;
+
+ Any the_any = property_iter->value ();
+ CORBA::Any a_corba_any;
+ Any_Handler::extract_into_any (the_any , a_corba_any);
+ this->idl_domain_->node[i].resource[res_id].property[property_id].value
+ = a_corba_any;
+ }
+ */
+ }
+ }
+
+ return true;
+
+ }
+
+ bool
+ DD_Handler::build_xsc ()
+ {
+ return true;
+ }
+
+ ::Deployment::Domain const *
+ DD_Handler::domain_idl () const
+ throw (DD_Handler::NoDomain)
+ {
+ if(!this->idl_domain_.get())
+ throw NoDomain ();
+
+ //else
+ return this->idl_domain_.get();
+ }
+
+ ::Deployment::Domain *
+ DD_Handler::domain_idl ()
+ throw (DD_Handler::NoDomain)
+ {
+ if(!this->idl_domain_.get())
+ throw NoDomain();
+
+ //else
+ return this->idl_domain_.release();
+ }
+
+ Domain const *
+ DD_Handler::domain_xsc () const
+ throw (DD_Handler::NoDomain)
+ {
+ if(!this->domain_.get())
+ throw NoDomain ();
+
+ //else
+ return this->domain_.get();
+ }
+
+ Domain *
+ DD_Handler::domain_xsc ()
+ throw (DD_Handler::NoDomain)
+ {
+ if(!this->domain_.get())
+ throw NoDomain ();
+
+ //else
+ return this->domain_.release();
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/DD_Handler.h b/modules/CIAO/tools/Config_Handlers/DD_Handler.h
new file mode 100644
index 00000000000..7c77d0f6b54
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DD_Handler.h
@@ -0,0 +1,119 @@
+// $Id$
+//======================================
+/**
+* @file DD_Handler.h
+*
+* @brief Contains the Domain Descriptior
+* Handler
+*
+* @author Nilabja Roy <nilabjar@dre.vanderbilt.edu>
+*
+*/
+//======================================
+
+#ifndef CIAO_CONFIG_HANDLERS_DD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_DD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+#include "ace/Auto_Ptr.h"
+// #include "Utils/XML_Helper.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+struct Domain;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class Domain;
+
+/*
+* @class DD_Handler
+*
+* @brief Handler class for <Domain>
+*/
+
+class Config_Handlers_Export DD_Handler
+{
+public:
+class NoDomain {};
+
+/**
+* @param file The file to be read
+*/
+DD_Handler (const ACE_TCHAR *file);
+
+/**
+* @param dmn The Domain structure
+*/
+DD_Handler(Domain *dmn);
+
+/**
+* @param dmn The Deployment::Domain structure
+*/
+DD_Handler(::Deployment::Domain *dmn);
+
+/**
+*/
+~DD_Handler (void);
+
+/**
+* @brief Returns the const IDL domain
+* @return Domain* the IDL domain pointer
+*/
+::Deployment::Domain const *domain_idl (void) const
+throw (NoDomain);
+
+/**
+* @brief Returns the IDL domain
+* @return Domain* the IDL domain pointer
+*/
+::Deployment::Domain *domain_idl (void)
+throw (NoDomain);
+
+/**
+* @brief Returns the const XSC domain
+* @return Domain* the XSC domain pointer
+*/
+Domain const *domain_xsc (void) const
+throw (NoDomain);
+
+/**
+* @brief Returns the XSC domain
+* @return Domain* the XSC domain pointer
+*/
+Domain *domain_xsc (void)
+throw (NoDomain);
+
+private:
+/**
+* @brief builds the domain structure
+*/
+bool build_domain ();
+
+/**
+* @brief builds the XSC data structure
+*/
+bool build_xsc ();
+
+/// The Deployment Domain structure
+auto_ptr < ::Deployment::Domain > idl_domain_;
+
+/// The XSC Domain structure
+auto_ptr <Domain> domain_;
+
+/// The return value used
+bool retval_;
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* DD_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/DP_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DP_Handler.cpp
new file mode 100644
index 00000000000..ff26719d544
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DP_Handler.cpp
@@ -0,0 +1,325 @@
+// $Id$
+
+#include "DP_Handler.h"
+#include "ace/UUID.h"
+#include "ciao/Deployment_DataC.h"
+
+#include "CCD_Handler.h"
+#include "ADD_Handler.h"
+#include "MDD_Handler.h"
+#include "IDD_Handler.h"
+#include "ID_Handler.h"
+#include "Property_Handler.h"
+#include "cdp.hpp"
+#include "RT-CCM/SRD_Handler.h"
+#include "RT-CCM/CIAOServerResources.hpp"
+#include "CIAO_Events/CIAOEvents_Handler.h"
+#include "CIAO_Events/CIAOEvents.hpp"
+
+#include "PCD_Handler.h"
+
+ACE_RCSID (Config_Handlers,
+ DP_Handler,
+ "$Id$")
+
+ namespace CIAO
+ {
+ namespace Config_Handlers
+ {
+ DP_Handler::DP_Handler (DeploymentPlan &dp)
+ : xsc_dp_ (0)
+ , idl_dp_ (0)
+ , retval_ (true)
+ {
+ if (!this->resolve_plan (dp))
+ throw;
+ }
+
+ DP_Handler::DP_Handler (const ::Deployment::DeploymentPlan &plan)
+ : xsc_dp_ (new DeploymentPlan),
+ idl_dp_ (0),
+ retval_ (0)
+ {
+ if (!this->build_xsc (plan))
+ throw;
+ }
+
+ DP_Handler::~DP_Handler (void)
+ throw ()
+ {
+ }
+
+ DeploymentPlan const *
+ DP_Handler::xsc (void) const
+ throw (DP_Handler::NoPlan)
+ {
+ if (this->retval_ && this->xsc_dp_.get () != 0)
+ return this->xsc_dp_.get ();
+
+ throw NoPlan ();
+ }
+
+ DeploymentPlan *
+ DP_Handler::xsc (void)
+ throw (DP_Handler::NoPlan)
+ {
+ if (this->retval_ && this->xsc_dp_.get () != 0)
+ return this->xsc_dp_.release ();
+
+ throw NoPlan ();
+ }
+
+ ::Deployment::DeploymentPlan const *
+ DP_Handler::plan (void) const
+ throw (DP_Handler::NoPlan)
+ {
+ if (this->retval_ && this->idl_dp_.get () != 0)
+ return this->idl_dp_.get ();
+
+ throw NoPlan ();
+ }
+
+ ::Deployment::DeploymentPlan *
+ DP_Handler::plan (void)
+ throw (DP_Handler::NoPlan)
+
+ {
+ if (this->retval_ && this->idl_dp_.get () != 0)
+ return this->idl_dp_.release ();
+
+ throw NoPlan ();
+ }
+
+ bool
+ DP_Handler::resolve_plan (DeploymentPlan &xsc_dp)
+ {
+ CIAO_TRACE ("DP_Handler::resolve_plan");
+
+ ::Deployment::DeploymentPlan *tmp =
+ new Deployment::DeploymentPlan;
+
+ this->idl_dp_.reset (tmp);
+
+ // Read in the label, if present, since minoccurs = 0
+ if (xsc_dp.label_p ())
+ {
+ this->idl_dp_->label =
+ CORBA::string_dup (xsc_dp.label ().c_str ());
+ }
+
+ // Read in the UUID, if present
+ if (xsc_dp.UUID_p ())
+ {
+ this->idl_dp_->UUID =
+ CORBA::string_dup (xsc_dp.UUID ().c_str ());
+ }
+
+ // Similar thing for dependsOn
+ for (DeploymentPlan::dependsOn_const_iterator dstart = xsc_dp.begin_dependsOn ();
+ dstart != xsc_dp.end_dependsOn ();
+ ++dstart)
+ {
+ CORBA::ULong len = this->idl_dp_->dependsOn.length ();
+ this->idl_dp_->dependsOn.length (len + 1);
+ ID_Handler::get_ImplementationDependency (*dstart,
+ this->idl_dp_->dependsOn [len]);
+
+ }
+
+ // ... An the property stuff
+ for (DeploymentPlan::infoProperty_const_iterator pstart = xsc_dp.begin_infoProperty ();
+ pstart != xsc_dp.end_infoProperty ();
+ ++pstart)
+ {
+ CORBA::ULong len =
+ this->idl_dp_->infoProperty.length ();
+
+ this->idl_dp_->infoProperty.length (len + 1);
+
+ if (pstart->name () == "CIAOServerResources")
+ {
+ /*
+ * Hook for RT-CCM
+ */
+
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Importing ServerResources...\n"));
+
+ // Parse the SR document
+ SRD_Handler srd_handler (pstart->value ().value ().begin_string ()->c_str ());
+
+ // Populate the property
+ this->idl_dp_->infoProperty [len].name = pstart->name ().c_str ();
+ this->idl_dp_->infoProperty [len].value <<= *(srd_handler.srd_idl ());
+ }
+ else if (pstart->name () == "CIAOEvents")
+ {
+ /*
+ * Hook for EVENTS
+ */
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Importing CIAOEvents...\n"));
+
+ // Parse the SR document
+ CIAOEvents_Handler event_handler (pstart->value ().value ().begin_string ()->c_str ());
+
+ // Populate the property
+ this->idl_dp_->infoProperty [len].name = pstart->name ().c_str ();
+ this->idl_dp_->infoProperty [len].value <<= *(event_handler.esd_idl ());
+ }
+ else
+ {
+ Property_Handler::handle_property (*pstart,
+ this->idl_dp_->infoProperty [len]);
+ }
+ }
+
+ // Read in the realizes, if present
+ if (xsc_dp.realizes_p ())
+ {
+ CCD_Handler::component_interface_descr (
+ xsc_dp.realizes (),
+ this->idl_dp_->realizes);
+ }
+
+ ADD_Handler::artifact_deployment_descrs (xsc_dp,
+ this->idl_dp_->artifact);
+
+ MDD_Handler::mono_deployment_descriptions (xsc_dp,
+ this->idl_dp_->implementation);
+
+ IDD_Handler::instance_deployment_descrs (xsc_dp,
+ this->idl_dp_->instance);
+
+ this->idl_dp_->connection.length (xsc_dp.count_connection ());
+ std::for_each (xsc_dp.begin_connection (),
+ xsc_dp.end_connection (),
+ PCD_Functor (this->idl_dp_->connection));
+
+ //PCD_Handler::get_PlanConnectionDescription (xsc_dp, this->idl_dp_->connection);
+
+ return true;
+ }
+
+ bool
+ DP_Handler::build_xsc (const ::Deployment::DeploymentPlan &plan)
+ {
+ CIAO_TRACE ("DP_Handler::build_xsc");
+
+ // Initialize the UUID generator.
+ ACE_Utils::UUID_GENERATOR::instance ()->init ();
+
+ // Clear IDREF tables
+ IDD_Handler::IDREF.unbind_refs ();
+ MDD_Handler::IDREF.unbind_refs ();
+ ADD_Handler::IDREF.unbind_refs ();
+
+
+ size_t len; //Used for checking the length of struct data members
+
+ // Read in the label, if present, since minoccurs = 0
+ if (plan.label != 0)
+ {
+ XMLSchema::string< char > i((plan.label));
+ this->xsc_dp_->label(i);
+ }
+
+ // Read in the UUID, if present
+ if (plan.UUID != 0)
+ {
+ XMLSchema::string< char > j((plan.UUID));
+ this->xsc_dp_->UUID(j);
+ }
+
+ // Similar thing for dependsOn
+ len = plan.dependsOn.length();
+ for (size_t j = 0;
+ j < len;
+ ++j)
+ {
+ this->xsc_dp_->add_dependsOn(
+ ID_Handler::impl_dependency(
+ plan.dependsOn[j]));
+ }
+
+ // ... And the property stuff
+ len = plan.infoProperty.length();
+ for (size_t q = 0;
+ q < len;
+ q++)
+ {
+ if (ACE_OS::strcmp (plan.infoProperty[q].name.in (),
+ "CIAOServerResources") == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) DP_Handler: Dumping of ServerResources not currently supported."));
+ continue;
+ }
+
+ this->xsc_dp_->add_infoProperty (
+ Property_Handler::get_property (
+ plan.infoProperty[q]));
+ }
+
+
+ // We are assuming there is a realizes for the moment
+ // @@ We may want to change this at a later date by creating a sequence of
+ // @@ ComponentInterfaceDescriptions in the DeploymentPlan in ../ciao/Deployment_Data.idl
+ // @@ so we can check for length
+ this->xsc_dp_->realizes(CCD_Handler::component_interface_descr(plan.realizes));
+ if (!this->xsc_dp_->realizes_p())
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) DP_Handler: "
+ "Error parsing Component Interface Descriptor."));
+ return false;
+ }
+
+ //Take care of the artifact(s) if they exist
+ len = plan.artifact.length();
+ for(size_t k = 0;
+ k < len;
+ k++)
+ {
+ this->xsc_dp_->add_artifact (
+ ADD_Handler::artifact_deployment_descr (
+ plan.artifact[k]));
+ }
+
+ //Take care of the implementation(s) if they exist
+ len = plan.implementation.length();
+ for(size_t l = 0;
+ l < len;
+ l++)
+ {
+ this->xsc_dp_->add_implementation (
+ MDD_Handler::mono_deployment_description (
+ plan.implementation[l]));
+ }
+
+ //Ditto for the instance(s)
+ len = plan.instance.length();
+ for(size_t m = 0;
+ m < len;
+ m++)
+ {
+ this->xsc_dp_->add_instance (
+ IDD_Handler::instance_deployment_descr (
+ plan.instance[m]));
+ }
+
+ //Finally, take care of the Connection Planning
+ len = plan.connection.length();
+ for(size_t n = 0; n < len; n++)
+ {
+ this->xsc_dp_->add_connection (PCD_Handler::get_PlanConnectionDescription (
+ plan.connection[n]));
+ }
+
+ retval_ = true;
+ return true;
+ }
+ }
+ }
diff --git a/modules/CIAO/tools/Config_Handlers/DP_Handler.h b/modules/CIAO/tools/Config_Handlers/DP_Handler.h
new file mode 100644
index 00000000000..50620822263
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DP_Handler.h
@@ -0,0 +1,91 @@
+//==============================================================
+/**
+* @file DP_Handler.h
+*
+* $Id$
+*
+* @author Bala Natarajan <bala@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_DP_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_DP_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+#include <memory>
+using std::auto_ptr;
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace Deployment
+{
+struct DeploymentPlan ;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class DeploymentPlan;
+
+/*
+* @class DP_Handler
+*
+* @brief Handler for Deployment::DeploymentPlan
+*/
+class Config_Handlers_Export DP_Handler
+{
+public:
+class NoPlan {};
+
+/// Use this constructor if you want to use
+/// the XSC->IDL mapping
+DP_Handler (DeploymentPlan &dp);
+
+/// Use this constructor if you want to use
+/// the IDL->XSC mapping
+DP_Handler (const ::Deployment::DeploymentPlan &plan);
+
+~DP_Handler (void)
+throw ();
+
+/// Generates the IDL->XSC mapping. returns
+/// null if the method fails or if the class was
+/// constructed with the wrong source.
+DeploymentPlan const *xsc (void) const
+throw (NoPlan);
+
+DeploymentPlan *xsc (void)
+throw (NoPlan);
+
+/// Generates the XSC->IDL mapping. returns null
+/// if the method fails or the class was constructed
+::Deployment::DeploymentPlan const *plan (void) const
+throw (NoPlan);
+
+::Deployment::DeploymentPlan *plan (void)
+throw (NoPlan);
+
+private:
+
+bool resolve_plan (DeploymentPlan &dp);
+
+bool build_xsc (const ::Deployment::DeploymentPlan &plan);
+
+private:
+auto_ptr< DeploymentPlan > xsc_dp_;
+
+auto_ptr< ::Deployment::DeploymentPlan> idl_dp_;
+
+bool retval_;
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_HANDLERS_DP_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.cpp
new file mode 100644
index 00000000000..22512ec15a5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.cpp
@@ -0,0 +1,107 @@
+// $Id$
+
+#include "DP_PCD_Handler.h"
+#include "CEPE_Handler.h"
+#include "PSPE_Handler.h"
+#include "ERE_Handler.h"
+#include "CRDD_Handler.h"
+#include "PCD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "cdp.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ DP_PCD_Handler::plan_connection_descrs (
+ const DeploymentPlan &src,
+ Deployment::PlanConnectionDescriptions& dest)
+ {
+ CIAO_TRACE("DP_PCD_Handler::plan_connection_descrs");
+ DeploymentPlan::connection_const_iterator cci_e =
+ src.end_connection ();
+
+ CORBA::ULong pos = 0;
+ dest.length (src.count_connection ());
+ for (DeploymentPlan::connection_const_iterator cci_b =
+ src.begin_connection ();
+ cci_b != cci_e;
+ ++cci_b)
+ {
+ DP_PCD_Handler::plan_connection_descr (*(cci_b),
+ dest[pos++]);
+ }
+ }
+
+ PlanConnectionDescription
+ DP_PCD_Handler::plan_connection_descr (
+ const Deployment::PlanConnectionDescription &src)
+ {
+ CIAO_TRACE("DP_PCD_Handler::plan_connection_descr");
+ PlanConnectionDescription pcd = PCD_Handler::get_PlanConnectionDescription(src);
+ return pcd;
+ }
+
+ void
+ DP_PCD_Handler::plan_connection_descr (
+ const PlanConnectionDescription &src,
+ Deployment::PlanConnectionDescription &dest)
+ {
+ CIAO_TRACE("DP_PCD_Handler::plan_connection_descr - reverse");
+ dest.name =
+ src.name ().c_str ();
+
+ if (src.source_p ())
+ {
+ // There will be only one as per the schema
+ dest.source.length (1);
+ dest.source[0] =
+ src.source ().c_str ();
+ }
+
+
+ CEPE_Handler::external_port_endpoints (src,
+ dest.externalEndpoint);
+ ERE_Handler::external_ref_endpoints (src,
+ dest.externalReference);
+
+ PSPE_Handler::sub_component_port_endpoints (src,
+ dest.internalEndpoint);
+
+#if 0
+ // @@MAJO: Need to figure how to use this.
+ if (desc.deployedResource_p ())
+ {
+ CRDD_Handler crddhandler;
+
+ toconfig.deployedResource.length (
+ toconfig.deployedResource.length () + 1);
+
+ crddhandler.get_ConnectionResourceDeploymentDescription (
+ toconfig.deployedResource[toconfig.deployedResource.length () - 1],
+ desc.deployedResource ());
+ }
+
+ if (desc.deployRequirement_p ())
+ {
+
+ // @@ MAJO: Not sure how to use this
+ //Create the handler for the requirements.
+ Requirement_Handler reqhandler;
+
+ //Increase the sequence length and delgate
+ //the Requirement to the Req_Handler.
+ toconfig.deployRequirement.length (
+ toconfig.deployRequirement.length () + 1);
+ reqhandler.get_Requirement (
+ toconfig.deployRequirement[toconfig.deployRequirement.length () - 1],
+ desc.deployRequirement ());
+
+
+ }
+#endif /*if 0*/
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.h b/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.h
new file mode 100644
index 00000000000..cc411c37383
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DP_PCD_Handler.h
@@ -0,0 +1,67 @@
+//==============================================================
+/**
+ * @file DP_PCD_Handler.h
+ *
+ * $Id$
+ *
+ * Handler for Deployment::PlanConnectionHandler
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_DP_PCD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_DP_PCD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct PlanConnectionDescription;
+ class PlanConnectionDescriptions;
+}
+
+namespace CIAO
+{
+
+ namespace Config_Handlers
+ {
+ class DeploymentPlan;
+ class PlanConnectionDescription;
+
+ /*
+ * @class DP_PCD_Handler
+ *
+ * @brief Handler class for <PlanConnectionDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC PlanConnectionDescription objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Export DP_PCD_Handler
+ {
+ public:
+ static void plan_connection_descrs (
+ const DeploymentPlan &src,
+ Deployment::PlanConnectionDescriptions& toconfig);
+
+ static PlanConnectionDescription plan_connection_descr(
+ const Deployment::PlanConnectionDescription &src);
+
+ private:
+ static void plan_connection_descr (
+ const PlanConnectionDescription& desc,
+ Deployment::PlanConnectionDescription& toconfig);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_PCD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/DataType_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DataType_Handler.cpp
new file mode 100644
index 00000000000..02034f6d56a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DataType_Handler.cpp
@@ -0,0 +1,180 @@
+//$Id$
+
+#include "DataType_Handler.h"
+#include "tao/AnyTypeCode/TypeCode.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ DataType_Handler::DataType_Handler (void)
+ {
+ }
+ DataType_Handler::~DataType_Handler (void)
+ {
+ }
+
+ ///This method takes a <CIAO::Config_Handlers::DataType>
+ ///and returns the corresponding CORBA::TypeCode.
+ void
+ DataType_Handler::data_type (const DataType& desc,
+ CORBA::TypeCode_ptr& type)
+ {
+ CIAO_TRACE("DataType_Handler::data_type");
+ TCKind kind (desc.kind ());
+
+ switch (kind.integral ())
+ {
+ case TCKind::tk_null_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_null);
+ break;
+
+ case TCKind::tk_short_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_short);
+ break;
+
+ case TCKind::tk_long_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_long);
+ break;
+
+ case TCKind::tk_ushort_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_ushort);
+ break;
+
+ case TCKind::tk_ulong_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_ulong);
+ break;
+
+ case TCKind::tk_float_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_float);
+ break;
+
+ case TCKind::tk_double_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_double);
+ break;
+
+ case TCKind::tk_boolean_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_boolean);
+ break;
+
+ case TCKind::tk_char_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_char);
+ break;
+
+ case TCKind::tk_octet_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_octet);
+ break;
+
+ case TCKind::tk_string_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_string);
+ break;
+
+ case TCKind::tk_longlong_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_longlong);
+ break;
+
+ case TCKind::tk_ulonglong_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_ulonglong);
+ break;
+
+ case TCKind::tk_longdouble_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_longdouble);
+ break;
+
+ case TCKind::tk_wchar_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_wchar);
+ break;
+
+ case TCKind::tk_wstring_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_wstring);
+ break;
+
+ case TCKind::tk_any_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_any);
+ break;
+
+ case TCKind::tk_TypeCode_l:
+ type = CORBA::TypeCode::_duplicate (CORBA::_tc_TypeCode);
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid typecode in any\n"));
+ throw 1;
+ }
+
+ // This case used to be supported...is it not in the schema?
+ // case TCKind::tk_Object)
+ // type = CORBA::TypeCode::_duplicate (CORBA::_tc_Object);*/
+
+ }
+
+ DataType
+ DataType_Handler::data_type (
+ const CORBA::TypeCode_ptr& src)
+ {
+ CIAO_TRACE("DataType_Handler::data_type - reverse");
+ switch (src->kind ())
+ {
+ case ::CORBA::tk_null:
+ return DataType ( (TCKind::tk_null));
+ break;
+ case CORBA::tk_short:
+ return DataType ( (TCKind::tk_short));
+ break;
+ case CORBA::tk_long:
+ return DataType ( (TCKind::tk_long));
+ break;
+ case CORBA::tk_ushort:
+ return DataType ( (TCKind::tk_ushort));
+ break;
+ case CORBA::tk_ulong:
+ return DataType ( (TCKind::tk_ulong));
+ break;
+ case CORBA::tk_float:
+ return DataType ( (TCKind::tk_float));
+ break;
+ case CORBA::tk_double:
+ return DataType ( (TCKind::tk_double));
+ break;
+ case CORBA::tk_boolean:
+ return DataType ( (TCKind::tk_boolean));
+ break;
+ case CORBA::tk_char:
+ return DataType ( (TCKind::tk_char));
+ break;
+ case CORBA::tk_octet:
+ return DataType ( (TCKind::tk_octet));
+ break;
+ case CORBA::tk_string:
+ return DataType ( (TCKind::tk_string));
+ break;
+ case CORBA::tk_longlong:
+ return DataType ( (TCKind::tk_longlong));
+ break;
+ case CORBA::tk_ulonglong:
+ return DataType ( (TCKind::tk_ulonglong));
+ break;
+ case CORBA::tk_longdouble:
+ return DataType ( (TCKind::tk_longdouble));
+ break;
+ case CORBA::tk_wchar:
+ return DataType ( (TCKind::tk_wchar));
+ break;
+ case CORBA::tk_wstring:
+ return DataType ( (TCKind::tk_wstring));
+ break;
+ case CORBA::tk_any:
+ return DataType ( (TCKind::tk_any));
+ break;
+ case CORBA::tk_TypeCode:
+ return DataType ( (TCKind::tk_TypeCode));
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid typecode\n"));
+ throw 1;
+ }
+
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/DataType_Handler.h b/modules/CIAO/tools/Config_Handlers/DataType_Handler.h
new file mode 100644
index 00000000000..5991c949f3a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DataType_Handler.h
@@ -0,0 +1,62 @@
+//================================================
+/**
+* @file DataType_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================
+
+#ifndef DATATYPE_HANDLER_H
+#define DATATYPE_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/DeploymentC.h"
+#include "Basic_Deployment_Data.hpp"
+
+#include "Config_Handlers_Common_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO{
+
+namespace Config_Handlers{
+
+/*
+* @class DataType_Handler
+*
+* @brief Handler class for <ComponentPortDescription> types.
+*
+* This class defines handler methods to map values from
+* XSC objects, parsed from the descriptor files, to the
+* corresponding CORBA IDL type for the schema element.
+*
+*/
+
+class Config_Handlers_Common_Export DataType_Handler {
+
+public:
+
+DataType_Handler (void);
+virtual ~DataType_Handler (void);
+
+////This method takes a <CIAO::Config_Handlers::DataType>
+///and returns the corresponding CORBA::TypeCode.
+static void
+data_type (const DataType& desc,
+CORBA::TypeCode_ptr& type);
+
+
+static DataType data_type (const CORBA::TypeCode_ptr& type);
+};
+
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* DATATYPE_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Deployment.cpp b/modules/CIAO/tools/Config_Handlers/Deployment.cpp
new file mode 100644
index 00000000000..3d4ddb419c0
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Deployment.cpp
@@ -0,0 +1,660 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "Deployment.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ ::CIAO::Config_Handlers::Domain
+ domain (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "domain")
+ {
+ ::CIAO::Config_Handlers::Domain r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::DeploymentPlan
+ deploymentPlan (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "deploymentPlan")
+ {
+ ::CIAO::Config_Handlers::DeploymentPlan r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::ImplementationArtifactDescription
+ implementationArtifactDescription (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "implementationArtifactDescription")
+ {
+ ::CIAO::Config_Handlers::ImplementationArtifactDescription r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription
+ componentInterfaceDescription (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "componentInterfaceDescription")
+ {
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::ComponentImplementationDescription
+ componentImplementationDescription (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "componentImplementationDescription")
+ {
+ ::CIAO::Config_Handlers::ComponentImplementationDescription r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageDescription
+ componentPackageDescription (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "componentPackageDescription")
+ {
+ ::CIAO::Config_Handlers::ComponentPackageDescription r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::PackageConfiguration
+ packageConfiguration (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "packageConfiguration")
+ {
+ ::CIAO::Config_Handlers::PackageConfiguration r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+
+ ::CIAO::Config_Handlers::TopLevelPackageDescription
+ topLevelPackageDescription (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "topLevelPackageDescription")
+ {
+ ::CIAO::Config_Handlers::TopLevelPackageDescription r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ domain (::CIAO::Config_Handlers::Domain const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "domain")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::Domain,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Node,
+ virtual ::CIAO::Config_Handlers::Writer::Interconnect,
+ virtual ::CIAO::Config_Handlers::Writer::Bridge,
+ virtual ::CIAO::Config_Handlers::Writer::Resource,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::SharedResource,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ deploymentPlan (::CIAO::Config_Handlers::DeploymentPlan const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "deploymentPlan")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::DeploymentPlan,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::MonolithicDeploymentDescription,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::InstanceDeploymentDescription,
+ virtual ::CIAO::Config_Handlers::Writer::InstanceResourceDeploymentDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind,
+ virtual ::CIAO::Config_Handlers::Writer::PlanConnectionDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::PlanSubcomponentPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ConnectionResourceDeploymentDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency,
+ virtual ::CIAO::Config_Handlers::Writer::ArtifactDeploymentDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceDeploymentDescription,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "implementationArtifactDescription")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "componentInterfaceDescription")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "componentImplementationDescription")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation,
+ virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference,
+ virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind,
+ virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Capability,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "componentPackageDescription")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference,
+ virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind,
+ virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Capability,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "packageConfiguration")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference,
+ virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind,
+ virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Capability,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+
+ void
+ topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "topLevelPackageDescription")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::TopLevelPackageDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackageConfiguration,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentInterfaceDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Property,
+ virtual ::CIAO::Config_Handlers::Writer::Any,
+ virtual ::CIAO::Config_Handlers::Writer::DataType,
+ virtual ::CIAO::Config_Handlers::Writer::TCKind,
+ virtual ::CIAO::Config_Handlers::Writer::EnumType,
+ virtual ::CIAO::Config_Handlers::Writer::DataValue,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::short_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedShort, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedInt, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::float_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::double_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedByte, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::long_, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPortDescription,
+ virtual ::CIAO::Config_Handlers::Writer::CCMComponentPortKind,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPropertyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::PackagedComponentImplementation,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentAssemblyDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentInstantiationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Requirement,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageReference,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentPackageImport,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyConnectionDescription,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPortEndpoint,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ComponentExternalPortEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::ExternalReferenceEndpoint,
+ virtual ::CIAO::Config_Handlers::Writer::AssemblyPropertyMapping,
+ virtual ::CIAO::Config_Handlers::Writer::SubcomponentPropertyReference,
+ virtual ::CIAO::Config_Handlers::Writer::MonolithicImplementationDescription,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationRequirement,
+ virtual ::CIAO::Config_Handlers::Writer::ResourceUsageKind,
+ virtual ::CIAO::Config_Handlers::Writer::NamedImplementationArtifact,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationArtifactDescription,
+ virtual ::CIAO::Config_Handlers::Writer::Capability,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierProperty,
+ virtual ::CIAO::Config_Handlers::Writer::SatisfierPropertyKind,
+ virtual ::CIAO::Config_Handlers::Writer::ImplementationDependency,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/Deployment.hpp b/modules/CIAO/tools/Config_Handlers/Deployment.hpp
new file mode 100644
index 00000000000..ca6cf839a75
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Deployment.hpp
@@ -0,0 +1,153 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef DEPLOYMENT_HPP
+#define DEPLOYMENT_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+#include "cpd.hpp"
+
+#include "cdd.hpp"
+
+#include "cdp.hpp"
+
+#include "toplevel.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::Domain
+ domain (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::DeploymentPlan
+ deploymentPlan (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ImplementationArtifactDescription
+ implementationArtifactDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription
+ componentInterfaceDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentImplementationDescription
+ componentImplementationDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::ComponentPackageDescription
+ componentPackageDescription (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::PackageConfiguration
+ packageConfiguration (xercesc::DOMDocument const*);
+
+ XSC_XML_Handlers_Export
+ ::CIAO::Config_Handlers::TopLevelPackageDescription
+ topLevelPackageDescription (xercesc::DOMDocument const*);
+ }
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ }
+ }
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ XSC_XML_Handlers_Export
+ void
+ domain (::CIAO::Config_Handlers::Domain const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ deploymentPlan (::CIAO::Config_Handlers::DeploymentPlan const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ implementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ componentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ packageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const&, xercesc::DOMDocument*);
+
+ XSC_XML_Handlers_Export
+ void
+ topLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const&, xercesc::DOMDocument*);
+ }
+}
+
+#endif // DEPLOYMENT_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/DnC_Dump.cpp b/modules/CIAO/tools/Config_Handlers/DnC_Dump.cpp
new file mode 100644
index 00000000000..be434b370a6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DnC_Dump.cpp
@@ -0,0 +1,964 @@
+// $Id$
+
+#include "ace/Log_Msg.h"
+#include "ciao/Deployment_DataC.h"
+#include "DnC_Dump.h"
+#include "DnC_Dump_T.h"
+#include <iostream>
+
+using namespace ::Deployment::DnC_Dump_T;
+namespace Deployment
+{
+ void
+ DnC_Dump::dump (const char* caption, const ::CORBA::StringSeq &str_seq)
+ {
+ CORBA::ULong size = str_seq.length ();
+
+ if (size != 0)
+ {
+ Dump_Obj dump_obj (caption);
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s %d: \n",
+ Dump_Obj::indent(), caption, i));
+ ACE_DEBUG ((LM_DEBUG, "%s %s: \n",
+ Dump_Obj::indent(), str_seq[i]));
+ }
+ }
+ }
+
+ // Dumps a string
+ void DnC_Dump::dump (const char* caption, const TAO::String_Manager& str)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s: %s\n", Dump_Obj::indent(),
+ caption, str.in()));
+ }
+
+ // Dumps a boolean
+ void DnC_Dump::dump (const char* caption, const CORBA::Boolean& val)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s: %s\n", Dump_Obj::indent(),
+ caption, val ? "true" : "false"));
+ }
+
+ /*
+ * Object dump methods
+ */
+
+ // SatisfierProperty
+ void DnC_Dump::dump (const Deployment::SatisfierProperty& sp)
+ {
+ Dump_Obj dump_obj("SatisfierProperty");
+ dump ("name", sp.name);
+
+ ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent()));
+ switch (sp.kind) {
+ case Quantity: ACE_DEBUG ((LM_DEBUG, "Quantity\n")); break;
+ case Capacity: ACE_DEBUG ((LM_DEBUG, "Capacity\n")); break;
+ case Minimum: ACE_DEBUG ((LM_DEBUG, "Minimum\n")); break;
+ case Maximum: ACE_DEBUG ((LM_DEBUG, "Maximum\n")); break;
+ case Attribute: ACE_DEBUG ((LM_DEBUG, "Attribute\n")); break;
+ case Selection: ACE_DEBUG ((LM_DEBUG, "Selection\n")); break;
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "%svalue:\n", Dump_Obj::indent()));
+ dump (sp.value);
+ }
+
+ // SharedResource
+ void DnC_Dump::dump (const Deployment::SharedResource& sr)
+ {
+ Dump_Obj dump_obj("SharedResource");
+ dump ("name", sr.name);
+ dump ("resourceType", sr.resourceType);
+#if 0
+ dump_ref_seq<Deployment::Domain> ("nodeRef",
+ sr.nodeRef,
+ "Domain",
+ &Domain::node);
+#endif /*if 0*/
+ dump_sequence ("property",
+ sr.property);
+ }
+
+ // Resource
+ void DnC_Dump::dump (const Deployment::Resource& resource)
+ {
+ Dump_Obj dump_obj("Resource");
+ dump ("name", resource.name);
+ dump ("resourceType", resource.resourceType);
+ dump_sequence ("property",
+ resource.property);
+ }
+
+ // Node
+ void DnC_Dump::dump (const Deployment::Node& node)
+ {
+ Dump_Obj dump_obj("Node");
+ dump ("name", node.name);
+ dump ("label", node.label);
+
+#if (_MSC_VER > 1200)
+ dump_ref_seq<Deployment::Domain> (
+ "sharedResourceRef",
+ node.sharedResourceRef, "Domain",
+ &Domain::sharedResource);
+
+ dump_ref_seq<Deployment::Domain> (
+ "connectionRef",
+ node.connectionRef,
+ "Domain",
+ &Domain::interconnect);
+#endif /* _MSC_VER */
+ dump_sequence ("resource",
+ node.resource);
+
+ }
+
+ // Interconnect
+ void DnC_Dump::dump (const Deployment::Interconnect& conn)
+ {
+ Dump_Obj dump_obj("Interconnect");
+ dump ("name", conn.name);
+ dump ("label", conn.label);
+
+#if (_MSC_VER > 1200)
+ dump_ref_seq<Deployment::Domain> (
+ "connectionRef",
+ conn.connectionRef,
+ "Domain",
+ &Domain::bridge);
+
+ dump_ref_seq<Deployment::Domain> (
+ "connectRef",
+ conn.connectRef,
+ "Domain",
+ &Domain::node);
+#endif /*_MSC_VER*/
+
+ dump_sequence ("resource",
+ conn.resource);
+ }
+
+ // Bridge
+ void
+ DnC_Dump::dump (const Deployment::Bridge& bridge)
+ {
+ Dump_Obj dump_obj("Bridge");
+ dump ("name", bridge.name);
+ dump ("label", bridge.label);
+#if (_MSC_VER > 1200)
+
+ dump_ref_seq<Deployment::Domain> (
+ "connectRef",
+ bridge.connectRef,
+ "Domain",
+ &Domain::interconnect);
+#endif /*_MSC_VER*/
+
+ dump_sequence ("resource", bridge.resource);
+ }
+
+ void DnC_Dump::dump (const ::Deployment::Domain &domain)
+ {
+ CORBA::Any val;
+ val <<= domain;
+
+ Dump_Obj dump_obj ("Domain",
+ val);
+
+ dump ("UUID",
+ domain.UUID);
+ dump ("label",
+ domain.label);
+
+ dump_sequence ("sharedResource",
+ domain.sharedResource);
+ dump_sequence ("node",
+ domain.node);
+ dump_sequence ("interconnect",
+ domain.interconnect);
+ dump_sequence ("bridge",
+ domain.bridge);
+
+ dump_sequence ("infoProperty",
+ domain.infoProperty);
+ }
+
+ // ComponentPortDescription
+
+ void DnC_Dump::dump (const ::Deployment::ComponentPortDescription
+ &compportdesc)
+ {
+ Dump_Obj dump_obj("ComponentPortDescription");
+
+ dump ("name", compportdesc.name);
+ dump ("specificType", compportdesc.specificType);
+ dump ("supportedType", compportdesc.supportedType);
+ dump ("provider", compportdesc.provider);
+ dump ("exclusiveProvider", compportdesc.exclusiveProvider);
+ dump ("exclusiveUser", compportdesc.exclusiveUser);
+ dump ("optional", compportdesc.optional);
+
+ ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent()));
+ switch (compportdesc.kind) {
+ case Facet: ACE_DEBUG ((LM_DEBUG, "Facet\n")); break;
+ case SimplexReceptacle: ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n")); break;
+ case MultiplexReceptacle: ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n")); break;
+ case EventEmitter: ACE_DEBUG ((LM_DEBUG, "EventEmitter\n")); break;
+ case EventPublisher: ACE_DEBUG ((LM_DEBUG, "EventPublisher\n")); break;
+ case EventConsumer: ACE_DEBUG ((LM_DEBUG, "EventConsumer\n")); break;
+ default: ACE_DEBUG ((LM_DEBUG, "Unknown port kind\n")); break;
+ }
+ }
+
+ // ComponentPropertyDescription
+
+ void DnC_Dump::dump (const ::Deployment::ComponentPropertyDescription &comppropdesc)
+ {
+ Dump_Obj dump_obj("ComponentPropertyDescription");
+
+ dump ("name", comppropdesc.name);
+
+ ACE_DEBUG ((LM_DEBUG, "%stype: ", Dump_Obj::indent()));
+ switch (comppropdesc.type.in()->kind()) {
+ case ::CORBA::tk_null: ACE_DEBUG ((LM_DEBUG, "tk_null\n")); break;
+ case ::CORBA::tk_void: ACE_DEBUG ((LM_DEBUG, "tk_void\n")); break;
+ case ::CORBA::tk_short: ACE_DEBUG ((LM_DEBUG, "tk_short\n")); break;
+ case ::CORBA::tk_long: ACE_DEBUG ((LM_DEBUG, "tk_long\n")); break;
+ case ::CORBA::tk_ushort: ACE_DEBUG ((LM_DEBUG, "tk_ushort\n")); break;
+ case ::CORBA::tk_ulong: ACE_DEBUG ((LM_DEBUG, "tk_ulong\n")); break;
+ case ::CORBA::tk_float: ACE_DEBUG ((LM_DEBUG, "tk_float\n")); break;
+ case ::CORBA::tk_double: ACE_DEBUG ((LM_DEBUG, "tk_double\n")); break;
+ case ::CORBA::tk_boolean: ACE_DEBUG ((LM_DEBUG, "tk_boolean\n")); break;
+ case ::CORBA::tk_char: ACE_DEBUG ((LM_DEBUG, "tk_char\n")); break;
+ case ::CORBA::tk_octet: ACE_DEBUG ((LM_DEBUG, "tk_octet\n")); break;
+ case ::CORBA::tk_any: ACE_DEBUG ((LM_DEBUG, "tk_any\n")); break;
+ case ::CORBA::tk_TypeCode: ACE_DEBUG ((LM_DEBUG, "tk_TypeCode\n")); break;
+ case ::CORBA::tk_Principal: ACE_DEBUG ((LM_DEBUG, "tk_Principal\n")); break;
+ case ::CORBA::tk_objref: ACE_DEBUG ((LM_DEBUG, "tk_objref\n")); break;
+ case ::CORBA::tk_struct: ACE_DEBUG ((LM_DEBUG, "tk_struct\n")); break;
+ case ::CORBA::tk_union: ACE_DEBUG ((LM_DEBUG, "tk_union\n")); break;
+ case ::CORBA::tk_enum: ACE_DEBUG ((LM_DEBUG, "tk_enum\n")); break;
+ case ::CORBA::tk_string: ACE_DEBUG ((LM_DEBUG, "tk_string\n")); break;
+ case ::CORBA::tk_sequence: ACE_DEBUG ((LM_DEBUG, "tk_sequence\n")); break;
+ case ::CORBA::tk_array: ACE_DEBUG ((LM_DEBUG, "tk_array\n")); break;
+ case ::CORBA::tk_alias: ACE_DEBUG ((LM_DEBUG, "tk_alias\n")); break;
+ case ::CORBA::tk_except: ACE_DEBUG ((LM_DEBUG, "tk_except\n")); break;
+ case ::CORBA::tk_longlong: ACE_DEBUG ((LM_DEBUG, "tk_longlong\n")); break;
+ case ::CORBA::tk_ulonglong: ACE_DEBUG ((LM_DEBUG, "tk_ulonglong\n")); break;
+ case ::CORBA::tk_longdouble: ACE_DEBUG ((LM_DEBUG, "tk_longdouble\n")); break;
+ case ::CORBA::tk_wchar: ACE_DEBUG ((LM_DEBUG, "tk_wchar\n")); break;
+ case ::CORBA::tk_wstring: ACE_DEBUG ((LM_DEBUG, "tk_wstring\n")); break;
+ case ::CORBA::tk_fixed: ACE_DEBUG ((LM_DEBUG, "tk_fixed\n")); break;
+ case ::CORBA::tk_value: ACE_DEBUG ((LM_DEBUG, "tk_value\n")); break;
+ case ::CORBA::tk_value_box: ACE_DEBUG ((LM_DEBUG, "tk_value_box\n")); break;
+ case ::CORBA::tk_native: ACE_DEBUG ((LM_DEBUG, "tk_native\n")); break;
+ case ::CORBA::tk_abstract_interface: ACE_DEBUG ((LM_DEBUG, "tk_abstract_interface\n")); break;
+ case ::CORBA::tk_local_interface: ACE_DEBUG ((LM_DEBUG, "tk_local_interface\n")); break;
+ case ::CORBA::tk_component: ACE_DEBUG ((LM_DEBUG, "tk_component\n")); break;
+ case ::CORBA::tk_home: ACE_DEBUG ((LM_DEBUG, "tk_home\n")); break;
+ case ::CORBA::tk_event: ACE_DEBUG ((LM_DEBUG, "tk_event\n")); break;
+ default:
+ break;
+ };
+ }
+
+ // ComponentInterfaceDescription
+
+ void DnC_Dump::dump (const ::Deployment::ComponentInterfaceDescription &cid)
+ {
+ Dump_Obj dump_obj("ComponentInterfaceDescription");
+ dump ("label", cid.label);
+ dump ("UUID", cid.UUID);
+ dump ("specificType", cid.specificType);
+ dump ("supportedType", cid.supportedType);
+ dump ("idlFile", cid.idlFile);
+ dump_sequence ("configProperty", cid.configProperty);
+ dump_sequence ("port", cid.port);
+ dump_sequence ("property", cid.property);
+ dump_sequence ("infoProperty", cid.infoProperty);
+ }
+
+ // Requirement
+
+ void DnC_Dump::dump (const ::Deployment::Requirement &req)
+ {
+ Dump_Obj dump_obj("Requirement");
+
+ dump ("resourceType", req.resourceType);
+ dump ("name", req.name);
+ dump_sequence ("property", req.property);
+ }
+
+ // MonolithicDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::MonolithicDeploymentDescription &mdd)
+ {
+ Dump_Obj dump_obj("MonolithicDeploymentDescription");
+
+ dump ("name", mdd.name);
+ dump ("source", mdd.source);
+#if (_MSC_VER > 1200)
+
+ dump_ref_seq<Deployment::DeploymentPlan> ("artifactRef", mdd.artifactRef,
+ "DeploymentPlan",
+ &DeploymentPlan::artifact);
+#endif /*_MSC_VER*/
+ dump_sequence ("execParameter", mdd.execParameter);
+ dump_sequence ("deployRequirement", mdd.deployRequirement);
+ }
+
+ // ResourceUsageKind
+
+ void DnC_Dump::dump(const Deployment::ResourceUsageKind &ruk)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%sresourceUsage: ", Dump_Obj::indent()));
+ switch (ruk) {
+ case None: ACE_DEBUG ((LM_DEBUG, "None\n")); break;
+ case InstanceUsesResource: ACE_DEBUG ((LM_DEBUG, "InstanceUsesResource\n")); break;
+ case ResourceUsesInstance: ACE_DEBUG ((LM_DEBUG, "ResourceUsesInstance\n")); break;
+ case PortUsesResource: ACE_DEBUG ((LM_DEBUG, "PortUsesResource\n")); break;
+ case ResourceUsesPort: ACE_DEBUG ((LM_DEBUG, "ResourceUsesPort\n")); break;
+ }
+ }
+
+ // InstanceResourceDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::InstanceResourceDeploymentDescription &irdd)
+ {
+ Dump_Obj dump_obj("InstanceResourceDeploymentDescription");
+
+ dump (irdd.resourceUsage);
+ dump ("requirementName", irdd.requirementName);
+ dump ("resourceName", irdd.resourceName);
+ ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent()));
+ dump_sequence ("property", irdd.property);
+ }
+
+ // InstanceDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::InstanceDeploymentDescription &idd)
+ {
+ Dump_Obj dump_obj("InstanceDeploymentDescription");
+
+ dump ("name", idd.name);
+ dump ("node", idd.node);
+ dump ("source", idd.source);
+
+#if (_MSC_VER > 1200)
+ dump_ref<Deployment::DeploymentPlan> ("implementationRef",
+ idd.implementationRef,
+ "DeploymentPlan",
+ &DeploymentPlan::implementation);
+#endif /*_MSC_VER*/
+ dump_sequence ("configProperty", idd.configProperty);
+ dump_sequence ("deployedResource", idd.deployedResource);
+ dump_sequence ("deployedSharedResource", idd.deployedSharedResource);
+ }
+
+ // ComponentExternalPortEndpoint
+
+ void DnC_Dump::dump (const ::Deployment::ComponentExternalPortEndpoint &cepe)
+ {
+ Dump_Obj dump_obj("ComponentExternalPortEndpoint");
+
+ dump ("portName", cepe.portName);
+ }
+
+ // PlanSubcomponentPortEndpoint
+
+ void DnC_Dump::dump(const Deployment::PlanSubcomponentPortEndpoint &pspe)
+ {
+ Dump_Obj dump_obj("PlanSubcomponentPortEndpoint");
+
+ dump ("portName", pspe.portName);
+ dump ("provider", pspe.provider);
+ ACE_DEBUG ((LM_DEBUG, "%skind: ", Dump_Obj::indent()));
+ switch (pspe.kind) {
+ case Facet: ACE_DEBUG ((LM_DEBUG, "Facet\n")); break;
+ case SimplexReceptacle: ACE_DEBUG ((LM_DEBUG, "SimplexReceptacle\n")); break;
+ case MultiplexReceptacle: ACE_DEBUG ((LM_DEBUG, "MultiplexReceptacle\n")); break;
+ case EventEmitter: ACE_DEBUG ((LM_DEBUG, "EventEmitter\n")); break;
+ case EventPublisher: ACE_DEBUG ((LM_DEBUG, "EventPublisher\n")); break;
+ case EventConsumer: ACE_DEBUG ((LM_DEBUG, "EventConsumer\n")); break;
+ default: ACE_DEBUG ((LM_DEBUG, "Unknown port kind\n")); break;
+ }
+#if (_MSC_VER > 1200)
+ dump_ref<Deployment::DeploymentPlan> ("instanceRef", pspe.instanceRef,
+ "DeploymentPlan",
+ &DeploymentPlan::instance);
+#endif /*_MSC_VER*/
+ }
+
+ // ExternalReferenceEndpoint
+
+ void DnC_Dump::dump (const ::Deployment::ExternalReferenceEndpoint &ere)
+ {
+ Dump_Obj dump_obj("ExternalReferenceEndpoint");
+
+ dump ("location", ere.location);
+ }
+
+ // ConnectionResourceDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::ConnectionResourceDeploymentDescription &crdd)
+ {
+ Dump_Obj dump_obj("ConnectionResourceDeploymentDescription");
+
+ dump ("targetName", crdd.targetName);
+ dump ("requirementName", crdd.requirementName);
+ dump ("resourceName", crdd.resourceName);
+ ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent()));
+ dump_sequence ("properties", crdd.property);
+ }
+
+ // PlanConnectionDescription
+
+ void DnC_Dump::dump(const Deployment::PlanConnectionDescription &pcd)
+ {
+ Dump_Obj dump_obj("PlanConnectionDescription");
+
+ dump ("name", pcd.name);
+ dump ("source", pcd.source);
+ dump_sequence ("deployRequirement", pcd.deployRequirement);
+ dump_sequence ("externalEndpoint", pcd.externalEndpoint);
+ dump_sequence ("internalEndpoint", pcd.internalEndpoint);
+ dump_sequence ("externalReference", pcd.externalReference);
+ dump_sequence ("deployedResource", pcd.deployedResource);
+ }
+
+ // PlanSubcomponentPropertyReference
+
+ void DnC_Dump::dump(const Deployment::PlanSubcomponentPropertyReference &pspr)
+ {
+ Dump_Obj dump_obj("PlanSubcomponentPropertyReference");
+
+ dump ("propertyName", pspr.propertyName);
+
+#if (_MSC_VER > 1200)
+ dump_ref<Deployment::DeploymentPlan> ("instanceRef", pspr.instanceRef,
+ "DeploymentPlan",
+ &DeploymentPlan::instance);
+#endif /*_MSC_VER*/
+ }
+
+ // PlanPropertyMapping
+
+ void DnC_Dump::dump(const Deployment::PlanPropertyMapping &ppm)
+ {
+ Dump_Obj dump_obj("PlanPropertyMapping");
+
+ dump ("name", ppm.name);
+ dump ("source", ppm.source);
+ dump ("externalName", ppm.externalName);
+ dump_sequence ("delegatesTo", ppm.delegatesTo);
+ }
+
+ // ImplementationDependency
+
+ void DnC_Dump::dump(const Deployment::ImplementationDependency &id)
+ {
+ Dump_Obj dump_obj("ImplementationDependency");
+
+ dump ("requiredType", id.requiredType);
+ }
+
+ // ResourceDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::ResourceDeploymentDescription &rdd)
+ {
+ Dump_Obj dump_obj("ResourceDeploymentDescription");
+
+ dump ("requirementName", rdd.requirementName);
+ dump ("resourceName", rdd.resourceName);
+ ACE_DEBUG ((LM_DEBUG, "%sresourceValue:\n", Dump_Obj::indent()));
+ dump_sequence ("properties", rdd.property);
+ }
+
+ // ArtifactDeploymentDescription
+
+ void DnC_Dump::dump(const Deployment::ArtifactDeploymentDescription &add)
+ {
+ Dump_Obj dump_obj("ArtifactDeploymentDescription");
+
+ dump ("name", add.name);
+ dump ("location", add.location);
+ dump ("node", add.node);
+ dump ("source", add.source);
+ dump_sequence ("execParameter", add.execParameter);
+ dump_sequence ("deployRequirement", add.deployRequirement);
+ dump_sequence ("deployedResource", add.deployedResource);
+ }
+
+ void DnC_Dump::dump(const Deployment::DeploymentPlan &plan)
+ {
+ CORBA::Any val;
+
+ val <<= plan;
+
+ Dump_Obj dump_obj("DeploymentPlan", val);
+
+ dump ("label", plan.label);
+ dump ("UUID", plan.UUID);
+ dump (plan.realizes);
+ dump_sequence ("implementation", plan.implementation);
+ dump_sequence ("instance", plan.instance);
+ //dump_sequence ("connection", plan.connection);
+ dump_sequence ("externalProperty", plan.externalProperty);
+ dump_sequence ("dependsOn", plan.dependsOn);
+ dump_sequence ("artifact", plan.artifact);
+ dump_sequence ("infoProperty", plan.infoProperty);
+ }
+
+ // ComponentPackageReference
+
+ void DnC_Dump::dump (const ::Deployment::ComponentPackageReference &cpr)
+ {
+ Dump_Obj dump_obj("ComponentPackageReference");
+
+ dump ("requiredUUID", cpr.requiredUUID);
+ dump ("requiredName", cpr.requiredName);
+ dump ("requiredType", cpr.requiredType);
+ }
+
+ // SubcomponentInstantiationDescription
+
+ void DnC_Dump::dump (const ::Deployment::SubcomponentInstantiationDescription &sid)
+ {
+ Dump_Obj dump_obj("SubcomponentInstantiationDescription");
+
+ dump ("name", sid.name);
+ // dump_sequence ("basePackage", sid.package);
+ dump_sequence ("configProperty", sid.configProperty);
+ dump_sequence ("selectRequirement", sid.selectRequirement);
+ // dump_sequence ("reference", sid.reference);
+ }
+
+ // SubcomponentPortEndpoint
+
+ void DnC_Dump::dump (const ::Deployment::SubcomponentPortEndpoint& spe)
+ {
+ Dump_Obj dump_obj("SubcomponentPortEndpoint");
+
+ dump ("portName", spe.portName);
+ int value = spe.instanceRef;
+ ::Deployment::ComponentAssemblyDescription *v;
+ const CORBA::Any &a =
+ Dump_Obj::desc ("ComponentAssemblyDescription");
+
+ a >>= v;
+
+ ACE_DEBUG ((LM_DEBUG, "%sinstance: %s \n", Dump_Obj::indent (),
+ v->instance[value].name.in ()));
+ }
+
+ // AssemblyConnectionDescription
+
+ void DnC_Dump::dump (const ::Deployment::AssemblyConnectionDescription &acd)
+ {
+ Dump_Obj dump_obj("AssemblyConnectionDescription");
+
+ dump ("name", acd.name);
+ dump_sequence ("deployRequirement", acd.deployRequirement);
+ dump_sequence ("externalEndpoint", acd.externalEndpoint);
+ dump_sequence ("internalEndpoint", acd.internalEndpoint);
+ dump_sequence ("externalReference", acd.externalReference);
+ }
+
+ // SubcomponentPropertyReference
+
+ void DnC_Dump::dump (const ::Deployment::SubcomponentPropertyReference &spr)
+ {
+ Dump_Obj dump_obj("SubcomponentPropertyReference");
+
+ dump ("propertyName", spr.propertyName);
+ int value = spr.instanceRef;
+
+ ::Deployment::ComponentAssemblyDescription *v;
+
+ const CORBA::Any &a =
+ Dump_Obj::desc ("ComponentAssemblyDescription");
+
+ a >>= v;
+
+ ACE_DEBUG ((LM_DEBUG, "%sinstance: %s \n", Dump_Obj::indent (),
+ v->instance[value].name.in ()));
+ }
+
+ void
+ DnC_Dump::dump (const ::Deployment::AssemblyPropertyMapping &apm)
+ {
+ Dump_Obj dump_obj("AssemblyPropertyMapping");
+
+ dump ("name", apm.name);
+ dump ("externalName", apm.externalName);
+ dump_sequence ("delegatesTo", apm.delegatesTo);
+ }
+
+ // ComponentAssemblyDescription
+
+ void DnC_Dump::dump (const ::Deployment::ComponentAssemblyDescription& cad)
+ {
+ CORBA::Any a;
+ a <<= cad;
+
+ Dump_Obj dump_obj ("ComponentAssemblyDescription",
+ a);
+
+ dump_sequence ("instance", cad.instance);
+ dump_sequence ("connection", cad.connection);
+ dump_sequence ("externalProperty", cad.externalProperty);
+ }
+
+ // ImplementationArtifactDescription
+
+ void DnC_Dump::dump (const ::Deployment::ImplementationArtifactDescription &iad)
+ {
+ Dump_Obj dump_obj("ImplementationArtifactDescription");
+
+ dump ("label", iad.label);
+ dump ("UUID", iad.UUID);
+ dump ("location", iad.location);
+ dump_sequence ("execParameter", iad.execParameter);
+ dump_sequence ("deployRequirement", iad.deployRequirement);
+ dump_sequence ("dependsOn", iad.dependsOn);
+ dump_sequence ("infoProperty", iad.infoProperty);
+ }
+
+ // NamedImplementationArtifact
+
+ void DnC_Dump::dump (const ::Deployment::NamedImplementationArtifact &nia)
+ {
+ Dump_Obj dump_obj("NamedImplementationArtifact");
+
+ dump ("name", nia.name);
+ dump (nia.referencedArtifact);
+ }
+
+ // ImplementationRequirement
+
+ void DnC_Dump::dump (const ::Deployment::ImplementationRequirement &ir)
+ {
+ Dump_Obj dump_obj("ImplementationRequirement");
+
+ dump_sequence ("resourceUsage", ir.resourceUsage);
+ dump ("resourcePort", ir.resourcePort);
+ dump ("componentPort", ir.componentPort);
+ dump ("resourceType", ir.resourceType);
+ dump ("name", ir.name);
+ dump_sequence ("property", ir.property);
+ }
+
+ // MonolithicImplementationDescription
+
+ void DnC_Dump::dump (const ::Deployment::MonolithicImplementationDescription
+ &mid)
+ {
+ Dump_Obj dump_obj("MonolithicImplementationDescription");
+
+ // dump_sequence ("execParameter", mid.execParameter);
+ dump_sequence ("primaryArtifact", mid.primaryArtifact);
+ dump_sequence ("deployRequirement", mid.deployRequirement);
+ }
+
+ void
+ DnC_Dump::dump (const ::Deployment::Capability &capability)
+ {
+ Dump_Obj dump_obj("Capability");
+
+ dump ("name", capability.name);
+ DnC_Dump::dump ("resourceType", capability.resourceType);
+ dump_sequence ("property",
+ capability.property);
+ }
+
+ // ComponentImplementationDescription
+
+ void DnC_Dump::dump (
+ const ::Deployment::ComponentImplementationDescription &cid)
+ {
+ Dump_Obj dump_obj("ComponentImplementationDescription");
+
+ dump ("label", cid.label);
+ dump ("UUID", cid.UUID);
+ ACE_DEBUG ((LM_DEBUG, "%sImplements:\n", Dump_Obj::indent()));
+ dump (cid.implements);
+ dump_sequence ("assemblyImpl", cid.assemblyImpl);
+ dump_sequence ("monolithicImpl", cid.monolithicImpl);
+ dump_sequence ("configProperty", cid.configProperty);
+ dump_sequence ("capability", cid.capability);
+ dump_sequence ("dependsOn", cid.dependsOn);
+ dump_sequence ("infoProperty", cid.infoProperty);
+ }
+
+ // PackagedComponentImplementation
+
+ void DnC_Dump::dump (const ::Deployment::PackagedComponentImplementation &pci)
+ {
+ Dump_Obj dump_obj("PackagedComponentImplementation");
+
+ dump ("Name", pci.name);
+ ACE_DEBUG ((LM_DEBUG,
+ "%sreferencedImplementation: \n", Dump_Obj::indent()));
+ DnC_Dump::dump (pci.referencedImplementation);
+ }
+
+ // ComponentPackageDescription
+
+ void DnC_Dump::dump (const ::Deployment::ComponentPackageDescription
+ &comppkgdesc)
+ {
+ Dump_Obj dump_obj("ComponentPackageDescription");
+
+ dump ("label", comppkgdesc.label);
+ dump ("UUID", comppkgdesc.UUID);
+ ACE_DEBUG ((LM_DEBUG, "%srealizes: \n", Dump_Obj::indent ()));
+ DnC_Dump::dump (comppkgdesc.realizes); // ComponentInterfaceDescription
+ dump_sequence ("configProperty", comppkgdesc.configProperty);
+ dump_sequence ("implementation", comppkgdesc.implementation);
+ dump_sequence ("infoProperty", comppkgdesc.infoProperty);
+ }
+
+ // PackageConfiguration
+
+ void DnC_Dump::dump (const ::Deployment::PackageConfiguration &pc)
+ {
+ Dump_Obj dump_obj("PackageConfiguration");
+
+ dump ("label", pc.label);
+ dump ("UUID", pc.UUID);
+ dump_sequence ("specializedConfig", pc.specializedConfig);
+ dump_sequence ("basePackage", pc.basePackage);
+ dump_sequence ("reference", pc.reference);
+ dump_sequence ("selectRequirement", pc.selectRequirement);
+ dump_sequence ("configProperty", pc.configProperty);
+ }
+
+ // Property
+ void DnC_Dump::dump (const Deployment::Property& property)
+ {
+ Dump_Obj dump_obj("Property");
+ dump ("name", property.name);
+ ACE_DEBUG ((LM_DEBUG, "%svalue:\n", Dump_Obj::indent()));
+ dump (property.value);
+ }
+
+ // CORBA::Any
+
+ void DnC_Dump::dump (const ::CORBA::Any &any)
+ {
+ ::CORBA::TypeCode * type = any.type ();
+ switch (type->kind ())
+ {
+ case CORBA::tk_short:
+ {
+ CORBA::Short temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC_Dump::dump (CORBA::Any), expected short\
+encoded different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %d \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_null:
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: null value encoded\n",
+ Dump_Obj::indent ()));
+ break;
+
+ case CORBA::tk_void:
+ ACE_DEBUG ((LM_DEBUG, "Any value: void type encoded \n"));
+ break;
+ case CORBA::tk_long:
+ {
+ CORBA::Long temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected long\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %d \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_ushort:
+ {
+ CORBA::UShort temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected u short\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %u \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_ulong:
+ {
+ CORBA::ULong temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected ulong\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %u \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_float:
+ {
+ CORBA::Float temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected float\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %f \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+ case CORBA::tk_double:
+ {
+ CORBA::Double temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected double\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %f \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+ case CORBA::tk_boolean:
+ {
+ CORBA::Boolean temp;
+ if (! (any >>= CORBA::Any::to_boolean (temp)))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected bool\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+
+ if (temp)
+ ACE_DEBUG ((LM_DEBUG, "Any value: True \n"));
+ else
+ ACE_DEBUG ((LM_DEBUG, "Any value: False \n"));
+ }
+ break;
+
+ case CORBA::tk_char:
+ {
+ CORBA::Char temp;
+ if (! (any >>= CORBA::Any::to_char (temp)))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected char\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %c \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_octet:
+ {
+ CORBA::Octet temp;
+ if (! (any >>= CORBA::Any::to_octet (temp)))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected octet\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %d \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_string:
+ {
+ const char * temp = 0;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected string\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %s \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+ case CORBA::tk_longlong:
+ {
+ CORBA::LongLong temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected longlong\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %l \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_longdouble:
+ {
+ CORBA::LongDouble temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected longdouble\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %d \n", Dump_Obj::indent (),
+ temp));
+ }
+
+ break;
+ case CORBA::tk_wchar:
+ {
+ CORBA::WChar temp;
+ if (! (any >>= CORBA::Any::to_wchar (temp)))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected wchar\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %c \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ case CORBA::tk_wstring:
+ {
+ const CORBA::WChar * temp;
+ if (! (any >>= temp))
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC::dump (CORBA::Any) expected wstring\
+encoded with different type"));
+ throw CORBA::INTERNAL ();
+ }
+ ACE_DEBUG ((LM_DEBUG, "%sAny value: %s \n", Dump_Obj::indent (),
+ temp));
+ }
+ break;
+
+ default:
+ ACE_DEBUG ((LM_DEBUG, "Unknown type encoded in Any\n"));
+ throw CORBA::INTERNAL ();
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/DnC_Dump.h b/modules/CIAO/tools/Config_Handlers/DnC_Dump.h
new file mode 100644
index 00000000000..ae8b587ff62
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DnC_Dump.h
@@ -0,0 +1,152 @@
+//==================================================================
+/**
+* @file DnC_Dump.h
+*
+* $Id$
+*
+* @author Gan Deng <gan.deng@vanderbilt.edu>
+*/
+//=====================================================================
+
+#ifndef DNC_DUMP_H
+#define DNC_DUMP_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/DeploymentC.h"
+#include "ciao/Deployment_TargetDataC.h"
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace Deployment
+{
+/**
+* @class DnC_Dump
+*
+* @brief This class defines a set of overloaded "dump" methods to print
+* the contents of various IDL data types, which passed as input.
+*/
+class Config_Handlers_Export DnC_Dump
+{
+public:
+/// Dump functions for CORBA sequences
+static void dump (const char* caption,
+const ::CORBA::StringSeq &str_seq);
+
+static void dump (const char* caption, const TAO::String_Manager& str);
+
+static void dump (const char* caption, const CORBA::Boolean& val);
+
+/// A whole slew of overloaded dump routines for different IDL
+/// data types.
+
+static void dump(const Deployment::SatisfierProperty &sp);
+
+static void dump (const Deployment::SharedResource& sr);
+
+static void dump (const Deployment::Node& node);
+
+static void dump (const Deployment::Resource& resource);
+
+static void dump (const Deployment::Interconnect& conn);
+
+static void dump (const Deployment::Bridge& bridge);
+
+static void dump (const ::Deployment::Property &property);
+
+static void dump (const ::Deployment::AssemblyConnectionDescription &acd);
+
+static void dump (const ::Deployment::AssemblyPropertyMapping &apm);
+
+static void dump (const ::Deployment::ComponentPackageDescription
+&comppkgdesc);
+
+static void dump (const ::Deployment::ComponentPortDescription
+&compportdesc);
+
+static void dump (const ::Deployment::ComponentPropertyDescription
+&comppropdesc);
+
+static void dump (const ::Deployment::MonolithicImplementationDescription
+&mid);
+
+static void dump (const ::Deployment::PackageConfiguration &pc);
+
+static void dump (const ::Deployment::PackagedComponentImplementation
+&pci);
+
+static void dump (const ::Deployment::SubcomponentPortEndpoint &spe);
+
+static void dump (const ::Deployment::Requirement &requirement);
+
+static void dump (const ::Deployment::ComponentExternalPortEndpoint
+&cepe);
+
+static void dump (const ::Deployment::ComponentPackageReference &cpr);
+
+static void dump (const ::Deployment::ComponentImplementationDescription
+&cid);
+
+static void dump (const ::Deployment::SubcomponentInstantiationDescription
+&sid);
+
+static void dump (const ::Deployment::NamedImplementationArtifact
+&named_implementation);
+
+static void dump (const ::Deployment::ComponentInterfaceDescription &cid);
+
+static void dump (const ::Deployment::SubcomponentPropertyReference
+&scpr);
+
+static void dump (const ::Deployment::ExternalReferenceEndpoint &ere);
+
+static void dump (const ::Deployment::Domain &domain);
+
+static void dump (const ::Deployment::Capability &capability);
+
+static void dump (const ::Deployment::ImplementationArtifactDescription
+&iad);
+
+static void dump (const ::Deployment::ImplementationRequirement &ir);
+
+static void dump(const Deployment::ResourceUsageKind &ruk);
+
+static void dump(const Deployment::DeploymentPlan &plan);
+
+static void dump(const Deployment::MonolithicDeploymentDescription &mdd);
+
+static void dump(const Deployment::InstanceDeploymentDescription &idd);
+
+static void dump(const Deployment::PlanConnectionDescription &pcd);
+
+static void dump(const Deployment::PlanPropertyMapping &ppm);
+
+static void dump(const Deployment::ImplementationDependency &id);
+
+static void dump(const Deployment::ArtifactDeploymentDescription &add);
+
+static void dump(const Deployment::InstanceResourceDeploymentDescription
+&irdd);
+
+static void dump(const PlanSubcomponentPortEndpoint &pspe);
+
+static void dump(const ConnectionResourceDeploymentDescription &crdd);
+
+static void dump(const PlanSubcomponentPropertyReference &pspr);
+
+static void dump(const ResourceDeploymentDescription &rdd);
+
+static void dump (const ::Deployment::ComponentAssemblyDescription& cad);
+
+private:
+static void dump (const ::CORBA::Any &any);
+// Helper function to print an Any
+};
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* DNC_DUMP_H */
diff --git a/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.cpp b/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.cpp
new file mode 100644
index 00000000000..6dd83b18989
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.cpp
@@ -0,0 +1,90 @@
+// $Id$
+#ifndef DNC_DUMP_T_C
+#define DNC_DUMP_T_C
+#include "DnC_Dump.h"
+#include "DnC_Dump_T.h"
+#include "Dump_Obj.h"
+
+ACE_RCSID (Config_Handlers,
+ DnC_Dump_T,
+ "$Id$")
+ namespace Deployment
+ {
+ namespace DnC_Dump_T
+ {
+ // Dumps a reference
+ template <typename ROOT, typename REFERENCE, typename DATA_TYPE,
+ typename CLASS>
+ void
+ dump_ref (const char* caption, REFERENCE& ref,
+ const char* root, DATA_TYPE CLASS::*data)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s:\n",
+ Dump_Obj::indent(), caption));
+
+ const CORBA::Any &val = Dump_Obj::desc (root);
+
+ ROOT *t = 0;
+
+ val >>= t;
+
+ const ROOT &root_obj = *t;
+
+ int value = ref;
+ ACE_DEBUG ((LM_DEBUG, "%s%s.name: %s\n",
+ Dump_Obj::indent(), caption,
+ (root_obj.*data)[value].name.in()));
+ }
+
+ // Dumps a reference sequence
+ template <typename ROOT, typename SEQUENCE, typename DATA_TYPE,
+ typename CLASS>
+ void
+ dump_ref_seq (const char* caption, SEQUENCE& seq,
+ const char* root, DATA_TYPE CLASS::*data)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "%s%s:\n",
+ Dump_Obj::indent(), caption));
+
+ CORBA::Any val;
+ val <<= root;
+
+ for (size_t i = 0; i < seq.length(); ++i)
+ {
+ const CORBA::Any &val = Dump_Obj::desc (root);
+
+ ROOT *t = 0;
+
+ val >>= t;
+
+ const ROOT &root_obj = *t;
+ int value = seq[i];
+ ACE_DEBUG ((LM_DEBUG, "%s%s[%d].name: %s\n",
+ Dump_Obj::indent(), caption, i,
+ (root_obj.*data)[value].name.in()));
+ }
+ }
+
+ // Dumps a sequence
+ template <typename SEQUENCE>
+ void
+ dump_sequence (const char* caption, const SEQUENCE &seq)
+ {
+ CORBA::ULong size = seq.length ();
+
+ if (size != 0)
+ {
+ Dump_Obj dump_obj(caption);
+
+ for (CORBA::ULong i = 0; i < size; ++i)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s %d: \n", Dump_Obj::indent(),
+ caption, i));
+ DnC_Dump::dump (seq[i]);
+ }
+ }
+ }
+ }
+ }
+#endif /* DNC_DUMP_C */
diff --git a/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.h b/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.h
new file mode 100644
index 00000000000..88a5c55f3cd
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DnC_Dump_T.h
@@ -0,0 +1,50 @@
+//==================================================================
+/**
+* @file DnC_Dump_T.h
+*
+* $Id$
+*
+* @author Gan Deng <gan.deng@vanderbilt.edu>
+*/
+//=====================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H
+#define CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-lite.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+namespace DnC_Dump_T
+{
+template <typename SEQUENCE>
+void dump_sequence (const char* caption, const SEQUENCE &seq);
+
+template <typename ROOT, typename SEQUENCE,
+typename DATA_TYPE, typename CLASS>
+void dump_ref_seq (const char* caption, SEQUENCE& seq,
+const char* root, DATA_TYPE CLASS::*data);
+
+template <typename ROOT, typename REFERENCE, typename DATA_TYPE,
+typename CLASS>
+void dump_ref (const char* caption, REFERENCE& ref,
+const char* root, DATA_TYPE CLASS::*data);
+}
+}
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "DnC_Dump_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("DnC_Dump_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_HANDLERS_DNC_DUMP_T_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Dump_Obj.cpp b/modules/CIAO/tools/Config_Handlers/Dump_Obj.cpp
new file mode 100644
index 00000000000..3caf5440e9b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Dump_Obj.cpp
@@ -0,0 +1,64 @@
+// $Id$
+#include "Dump_Obj.h"
+
+ACE_RCSID (Config_Handlers,
+ Dump_Obj,
+ "$Id$")
+
+ namespace Deployment
+ {
+ // static member initialization
+ std::string Dump_Obj::indent_ = "-";
+ std::map<std::string, CORBA::Any> Dump_Obj::desc_map_;
+
+ Dump_Obj::Dump_Obj(const char* caption)
+ : desc_()
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s:\n", indent_.c_str(), caption));
+ indent_.append(" ");
+ }
+
+
+ Dump_Obj::Dump_Obj(const char* caption,
+ CORBA::Any &val)
+ : desc_(caption)
+ {
+ ACE_DEBUG ((LM_DEBUG, "%s%s:\n",
+ indent_.c_str(),
+ caption));
+
+ indent_.append(" ");
+
+ if (desc_map_.find (std::string (caption)) != desc_map_.end())
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC_Dump.cpp:Dump_Obj - \
+The item with name %s is already in \
+the node map.\n", caption));
+ throw Node_Exist();
+ }
+ else
+ {
+ desc_map_[std::string(caption)] = val;
+ }
+ }
+
+ Dump_Obj::~Dump_Obj()
+ {
+ indent_.erase(indent_.size() - 2, 2);
+ if (desc_.size() != 0)
+ {
+ if (desc_map_.find(desc_) != desc_map_.end())
+ {
+ desc_map_.erase(desc_map_.find(desc_));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "DnC_Dump.cpp:Dump_Obj - \
+The item with name %s is not in the node map.\n",
+ desc_.c_str()));
+ throw Node_Not_Exist();
+ }
+ }
+ }
+
+ }
diff --git a/modules/CIAO/tools/Config_Handlers/Dump_Obj.h b/modules/CIAO/tools/Config_Handlers/Dump_Obj.h
new file mode 100644
index 00000000000..d8e90351ad1
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Dump_Obj.h
@@ -0,0 +1,76 @@
+//==================================================================
+/**
+* @file Dump_Obj.h
+*
+* $Id$
+*
+* @author Gan Deng <gan.deng@vanderbilt.edu>
+*/
+//=====================================================================
+
+#ifndef CIAO_DUMP_OBJ_H
+#define CIAO_DUMP_OBJ_H
+#include /**/ "ace/pre.h"
+
+#include "ciao/DeploymentC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Config_Handlers_Export.h"
+#include <string>
+#include <map>
+
+namespace Deployment
+{
+/*
+* @brief class Dump_Obj handles the indentation and keeps a map of
+* structures for reference look-up.
+*/
+class Config_Handlers_Export Dump_Obj
+{
+public:
+/// Exception thrown when there is a node with the same name in the
+/// map
+class Node_Exist { };
+
+/// Exception thrown when there is no node with the name given in
+/// the map
+class Node_Not_Exist { };
+
+/// Constructors prints out the caption and increases indent
+Dump_Obj (const char *caption);
+
+/// Additionally insets <val> into the map
+Dump_Obj (const char* caption,
+CORBA::Any &val);
+
+// Destructor
+~Dump_Obj (void);
+// return the indent string
+static const char* indent()
+{
+return indent_.c_str();
+}
+
+static CORBA::Any& desc(const char* caption)
+{
+return desc_map_[caption];
+}
+
+private:
+// indent string
+static std::string indent_;
+
+// map for reference lookup
+static std::map<std::string, CORBA::Any> desc_map_;
+
+// descriptor - used by destructor for deleting the
+// correct descriptor from the map
+std::string desc_;
+};
+}
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_DUMP_OBJ_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler.mpc b/modules/CIAO/tools/Config_Handlers/DynAny_Handler.mpc
new file mode 100644
index 00000000000..7cc9a0de2b5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler.mpc
@@ -0,0 +1,18 @@
+// $Id$
+
+project (XSC_DynAny_Handler) : xerces, dynamicany, typecodefactory, ciao_client_dnc {
+ after += XSC_XML_Handlers
+ libs += XSC_XML_Handlers
+ dynamicflags += DYNANY_HANDLER_BUILD_DLL
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+
+ Source_Files {
+ DynAny_Handler/DynAny_Handler.cpp
+ DynAny_Handler/DynEnum_Handler.cpp
+ }
+
+ Header_Files {
+ DynAny_Handler_Export.h
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp
new file mode 100644
index 00000000000..77567e3739c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.cpp
@@ -0,0 +1,180 @@
+//$Id$
+
+#include "DataType_Handler.h"
+#include "tao/AnyTypeCode/TypeCode.h"
+
+namespace CIAO{
+
+ namespace Config_Handlers{
+
+ DataType_Handler::DataType_Handler (void)
+ {
+ }
+ DataType_Handler::~DataType_Handler (void)
+ {
+ }
+
+ ///This method takes a <CIAO::Config_Handlers::DataType>
+ ///and returns the corresponding CORBA::TypeCode.
+ CORBA::TypeCode_ptr
+ DataType_Handler::data_type (const DataType& desc)
+ {
+
+ TCKind kind (desc.kind ());
+
+ switch (kind.integral ())
+ {
+ case TCKind::tk_null_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_null);
+
+
+ case TCKind::tk_short_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_short);
+
+
+ case TCKind::tk_long_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_long);
+
+
+ case TCKind::tk_ushort_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_ushort);
+
+
+ case TCKind::tk_ulong_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_ulong);
+
+
+ case TCKind::tk_float_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_float);
+
+
+ case TCKind::tk_double_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_double);
+
+
+ case TCKind::tk_boolean_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_boolean);
+
+
+ case TCKind::tk_char_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_char);
+
+
+ case TCKind::tk_octet_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_octet);
+
+
+ case TCKind::tk_string_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_string);
+
+
+ case TCKind::tk_longlong_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_longlong);
+
+
+ case TCKind::tk_ulonglong_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_ulonglong);
+
+
+ case TCKind::tk_longdouble_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_longdouble);
+
+
+ case TCKind::tk_wchar_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_wchar);
+
+
+ case TCKind::tk_wstring_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_wstring);
+
+
+ case TCKind::tk_any_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_any);
+
+
+ case TCKind::tk_TypeCode_l:
+ return CORBA::TypeCode::_duplicate (CORBA::_tc_TypeCode);
+
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid typecode in any\n"));
+ throw 1;
+ }
+
+ // This case used to be supported...is it not in the schema?
+ // case TCKind::tk_Object)
+ // return CORBA::TypeCode::_duplicate (CORBA::_tc_Object);*/
+
+ }
+
+ DataType
+ DataType_Handler::data_type (
+ const CORBA::TypeCode_ptr& src)
+ {
+ DataType type;
+
+ switch (src->kind ())
+ {
+ case ::CORBA::tk_null:
+ type.kind (TCKind::tk_null);
+ break;
+ case CORBA::tk_short:
+ type.kind (TCKind::tk_short);
+ break;
+ case CORBA::tk_long:
+ type.kind (TCKind::tk_long);
+ break;
+ case CORBA::tk_ushort:
+ type.kind (TCKind::tk_ushort);
+ break;
+ case CORBA::tk_ulong:
+ type.kind (TCKind::tk_ulong);
+ break;
+ case CORBA::tk_float:
+ type.kind (TCKind::tk_float);
+ break;
+ case CORBA::tk_double:
+ type.kind (TCKind::tk_double);
+ break;
+ case CORBA::tk_boolean:
+ type.kind (TCKind::tk_boolean);
+ break;
+ case CORBA::tk_char:
+ type.kind (TCKind::tk_char);
+ break;
+ case CORBA::tk_octet:
+ type.kind (TCKind::tk_octet);
+ break;
+ case CORBA::tk_string:
+ type.kind (TCKind::tk_string);
+ break;
+ case CORBA::tk_longlong:
+ type.kind (TCKind::tk_longlong);
+ break;
+ case CORBA::tk_ulonglong:
+ type.kind (TCKind::tk_ulonglong);
+ break;
+ case CORBA::tk_longdouble:
+ type.kind (TCKind::tk_longdouble);
+ break;
+ case CORBA::tk_wchar:
+ type.kind (TCKind::tk_wchar);
+ break;
+ case CORBA::tk_wstring:
+ type.kind (TCKind::tk_wstring);
+ break;
+ case CORBA::tk_any:
+ type.kind (TCKind::tk_any);
+ break;
+ case CORBA::tk_TypeCode:
+ type.kind (TCKind::tk_TypeCode);
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid typecode\n"));
+ throw 1;
+ }
+
+ return type;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.h b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.h
new file mode 100644
index 00000000000..c16b4b21fe3
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DataType_Handler.h
@@ -0,0 +1,60 @@
+//================================================
+/**
+ * @file DataType_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef DATATYPE_HANDLER_H
+#define DATATYPE_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/DeploymentC.h"
+#include "Basic_Deployment_Data.hpp"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO{
+
+ namespace Config_Handlers{
+
+ /*
+ * @class DataType_Handler
+ *
+ * @brief Handler class for <ComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+
+ class DataType_Handler{
+
+ public:
+
+ DataType_Handler (void);
+ virtual ~DataType_Handler (void);
+
+ ////This method takes a <CIAO::Config_Handlers::DataType>
+ ///and returns the corresponding CORBA::TypeCode.
+ static void
+ data_type (CORBA::TypeCode_ptr& type,
+ const DataType& desc);
+
+ static DataType data_type (const CORBA::TypeCode_ptr& type);
+ };
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* DATATYPE_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
new file mode 100644
index 00000000000..64690ad61c1
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.cpp
@@ -0,0 +1,241 @@
+// $Id$
+
+#include /**/ "ace/pre.h"
+
+#include "DynAny_Handler.h"
+#include "DynEnum_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ DynAny_Handler::DynAny_Handler (void) :
+ orb_ (0),
+ daf_ (0)
+ {
+ int argc = 0;
+ char **argv = 0;
+
+ orb_ = CORBA::ORB_init (argc, argv);
+
+ CORBA::Object_var temp = orb_->resolve_initial_references ("DynAnyFactory");
+ daf_ = DynamicAny::DynAnyFactory::_narrow (temp.in ());
+
+ if (CORBA::is_nil (daf_.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to narrow Dynamic Any factory\n"));
+ throw 1;
+ }
+ }
+
+ DynAny_Handler::~DynAny_Handler (void)
+ {
+ }
+
+ CORBA::ORB_ptr
+ DynAny_Handler::orb ()
+ {
+ return orb_.in ();
+ }
+
+ DynamicAny::DynAnyFactory_ptr
+ DynAny_Handler::daf ()
+ {
+ return daf_.in ();
+ }
+
+ DynamicAny::DynAny_ptr
+ DynAny_Handler::extract_into_dynany (const DataType& type,
+ const DataValue& value)
+ {
+ DynamicAny::DynAny_var retval;
+
+ switch (type.kind ().integral ())
+ {
+ // ========== BASIC TYPES
+ case TCKind::tk_null_l:
+ case TCKind::tk_void_l:
+ ACE_ERROR ((LM_WARNING, "I don't know how to handle null or void types\n"));
+
+ case TCKind::tk_short_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_short);
+ retval->insert_short (CORBA::Short (static_cast < ::XMLSchema::short_ const & > (*value.begin_short ())));
+ break;
+
+ case TCKind::tk_long_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_long);
+ retval->insert_long (CORBA::Long (static_cast < ::XMLSchema::int_ const& > (*value.begin_long ())));
+ break;
+
+ case TCKind::tk_ushort_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ushort);
+ retval->insert_ushort (CORBA::UShort (static_cast< ::XMLSchema::unsignedShort const & > (*value.begin_ushort ())));
+ break;
+
+ case TCKind::tk_ulong_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulong);
+ retval->insert_ulong (CORBA::ULong (static_cast < ::XMLSchema::unsignedInt const& > (*value.begin_ulong ())));
+ break;
+
+ case TCKind::tk_float_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_float);
+ retval->insert_float (CORBA::Float (*value.begin_float ()));
+ break;
+
+ case TCKind::tk_double_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_double);
+ retval->insert_double (CORBA::Double (*value.begin_double ()));
+ break;
+
+ case TCKind::tk_boolean_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_boolean);
+ retval->insert_boolean (static_cast < ::XMLSchema::boolean const& > (*value.begin_boolean ()));
+ break;
+
+ case TCKind::tk_char_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_char);
+ retval->insert_char (CORBA::Char (*value.begin_string ()->c_str ()));
+ break;
+
+ case TCKind::tk_octet_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_octet);
+ retval->insert_octet (static_cast <const unsigned char &> (*value.begin_octet ()));
+ break;
+
+ case TCKind::tk_string_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_string);
+ retval->insert_string (value.begin_string ()->c_str ());
+ break;
+
+ case TCKind::tk_longlong_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_longlong);
+ retval->insert_longlong (CORBA::LongLong (static_cast < ::XMLSchema::long_ const& > (*value.begin_longlong ())));
+ break;
+
+ case TCKind::tk_ulonglong_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulonglong);
+ retval->insert_ulonglong (CORBA::ULongLong (static_cast < ::XMLSchema::unsignedLong const& > (*value.begin_ulonglong ())));
+ break;
+
+ case TCKind::tk_longdouble_l:
+ break;
+
+ case TCKind::tk_wchar_l:
+ retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_wchar);
+ retval->insert_wchar (CORBA::WChar (*value.begin_string ()->c_str ()));
+ break;
+
+ case TCKind::tk_wstring_l:
+ break;
+
+ case TCKind::tk_enum_l:
+ ACE_ERROR ((LM_ERROR, "Preparing to extract into enum\n"));
+ return DynEnum_Handler::extract_into_dynany (type, value);
+
+ case TCKind::tk_wfixed_l:
+ case TCKind::tk_any_l:
+ case TCKind::tk_TypeCode_l:
+ case TCKind::tk_Principal_l:
+ case TCKind::tk_objref_l:
+ case TCKind::tk_struct_l:
+ case TCKind::tk_union_l:
+ case TCKind::tk_sequence_l:
+ case TCKind::tk_array_l:
+ case TCKind::tk_alias_l:
+ case TCKind::tk_except_l:
+ case TCKind::tk_value_l:
+ case TCKind::tk_value_box_l:
+ case TCKind::tk_native_l:
+ case TCKind::tk_abstract_interface_l:
+ case TCKind::tk_local_interface_l:
+ case TCKind::tk_component_l:
+ case TCKind::tk_home_l:
+ case TCKind::tk_event_l:
+ ACE_ERROR ((LM_ERROR, "Type not supported\n"));
+ throw 1;
+ }
+
+ return retval._retn ();
+ }
+
+ Any
+ DynAny_Handler::extract_from_dynany (const CORBA::Any &any)
+ {
+ DynamicAny::DynAny_var dyn = this->daf_->create_dyn_any (any);
+
+ DataValue val;
+
+ switch (dyn->type ()->kind ())
+ {
+ case CORBA::tk_short:
+ val.add_short (dyn->get_short ());
+ return Any (TCKind::tk_short, val);
+
+ case CORBA::tk_long:
+ val.add_long (dyn->get_long ());
+ return Any (TCKind::tk_long, val);
+
+ case CORBA::tk_ushort:
+ val.add_ushort (dyn->get_ushort ());
+ return Any (TCKind::tk_ushort, val);
+
+ case CORBA::tk_ulong:
+ val.add_ulong (dyn->get_ulong ());
+ return Any (TCKind::tk_ulong, val);
+
+ case CORBA::tk_float:
+ val.add_float (dyn->get_float ());
+ return Any (TCKind::tk_float, val);
+
+ case CORBA::tk_double:
+ val.add_double (dyn->get_double ());
+ return Any (TCKind::tk_double, val);
+
+ case CORBA::tk_boolean:
+ val.add_boolean (dyn->get_boolean ());
+ return Any (TCKind::tk_boolean, val);
+
+ case CORBA::tk_octet:
+ val.add_octet (dyn->get_octet ());
+ return Any (TCKind::tk_octet, val);
+
+ case CORBA::tk_string:
+ val.add_string (dyn->get_string ());
+ return Any (TCKind::tk_string, val);
+
+ case CORBA::tk_longlong:
+ val.add_longlong (dyn->get_longlong ());
+ return Any (TCKind::tk_longlong, val);
+
+ case CORBA::tk_ulonglong:
+ val.add_ulonglong (dyn->get_ulonglong ());
+ return Any (TCKind::tk_ulonglong, val);
+
+ case CORBA::tk_longdouble:
+ // return Any (TCKind::tk_longdouble);
+ // @@MAJO: Need to add longdouble to schema.
+ //val.add_longdouble (dyn->get_longdouble ());
+
+ case CORBA::tk_wchar:
+ // return Any (TCKind::tk_wchar);
+ // @@MAJO: Need to add wchar to schema
+ // val.add_wchar (dyn->get_wchar ());
+ case CORBA::tk_char:
+ // return Any (TCKind::tk_char);
+ // @@MAJO: Need to add char into the schema.
+ // val.add_char (dyn->get_char ());
+
+ case CORBA::tk_wstring:
+ case CORBA::tk_any:
+ case CORBA::tk_TypeCode:
+ case ::CORBA::tk_null:
+ default:
+ ACE_ERROR ((LM_ERROR, "DynAny_Handler: I have no idea how to perform a referse mapping.\n"));
+ throw 1;
+ }
+
+ }
+ }
+}
+#include /**/ "ace/post.h"
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
new file mode 100644
index 00000000000..a209b3eae2c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler.h
@@ -0,0 +1,72 @@
+//==============================================================
+/**
+ * @file DynAny_Handler.h
+ *
+ * $Id$
+ *
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_DYNANY_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_DYNANY_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "DynAny_Handler_Export.h"
+
+#include "tao/ORB.h"
+#include "tao/DynamicAny/DynamicAny.h"
+#include "ace/Singleton.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class Any;
+ class DataType;
+ class DataValue;
+
+ /**
+ * @class Any_Handler
+ *
+ * @brief Handler class for <ComponentInterfaceDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC Any objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL Any type.
+ *
+ */
+ class DynAny_Handler_Export DynAny_Handler
+ {
+ public:
+ DynAny_Handler ();
+
+ ~DynAny_Handler (void);
+
+ DynamicAny::DynAny_ptr extract_into_dynany (const DataType& type,
+ const DataValue& value);
+
+ Any extract_from_dynany (const CORBA::Any &any);
+
+ CORBA::ORB_ptr orb ();
+
+ DynamicAny::DynAnyFactory_ptr daf ();
+
+ private:
+
+ CORBA::ORB_var orb_;
+
+ DynamicAny::DynAnyFactory_var daf_;
+ };
+
+ typedef ACE_Singleton<DynAny_Handler, ACE_Null_Mutex> DynAny_Singleton;
+ #define DYNANY_HANDLER DynAny_Singleton::instance()
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ANY_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h
new file mode 100644
index 00000000000..78a3ee57b77
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynAny_Handler_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DynAny_Handler
+// ------------------------------
+#ifndef DYNANY_HANDLER_EXPORT_H
+#define DYNANY_HANDLER_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DYNANY_HANDLER_HAS_DLL)
+# define DYNANY_HANDLER_HAS_DLL 1
+#endif /* ! DYNANY_HANDLER_HAS_DLL */
+
+#if defined (DYNANY_HANDLER_HAS_DLL) && (DYNANY_HANDLER_HAS_DLL == 1)
+# if defined (DYNANY_HANDLER_BUILD_DLL)
+# define DynAny_Handler_Export ACE_Proper_Export_Flag
+# define DYNANY_HANDLER_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DYNANY_HANDLER_BUILD_DLL */
+# define DynAny_Handler_Export ACE_Proper_Import_Flag
+# define DYNANY_HANDLER_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DYNANY_HANDLER_BUILD_DLL */
+#else /* DYNANY_HANDLER_HAS_DLL == 1 */
+# define DynAny_Handler_Export
+# define DYNANY_HANDLER_SINGLETON_DECLARATION(T)
+# define DYNANY_HANDLER_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DYNANY_HANDLER_HAS_DLL == 1 */
+
+// Set DYNANY_HANDLER_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DYNANY_HANDLER_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DYNANY_HANDLER_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DYNANY_HANDLER_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DYNANY_HANDLER_NTRACE */
+
+#if (DYNANY_HANDLER_NTRACE == 1)
+# define DYNANY_HANDLER_TRACE(X)
+#else /* (DYNANY_HANDLER_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DYNANY_HANDLER_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DYNANY_HANDLER_NTRACE == 1) */
+
+#endif /* DYNANY_HANDLER_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
new file mode 100644
index 00000000000..8773f7b9014
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.cpp
@@ -0,0 +1,72 @@
+// $Id$
+
+#include "DynEnum_Handler.h"
+#include "DynAny_Handler.h"
+
+#include "Basic_Deployment_Data.hpp"
+#include "tao/AnyTypeCode/TypeCode.h"
+#include "tao/TypeCodeFactory/TypeCodeFactory_Adapter_Impl.h"
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "tao/AnyTypeCode/Enum_TypeCode.h"
+#include "tao/IFR_Client/IFR_BasicC.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ DynamicAny::DynAny_ptr
+ DynEnum_Handler::extract_into_dynany (const DataType &type,
+ const DataValue &value)
+ {
+ if (!type.enum_p ())
+ {
+ ACE_ERROR ((LM_ERROR, "ERROR: Enum type descriptioin required"));
+ throw 1;
+ }
+
+ // Construct TypeCode for the enum
+ CORBA::EnumMemberSeq members;
+ members.length (type.enum_ ().count_member ());
+ CORBA::ULong index (0);
+
+ for (EnumType::member_const_iterator i = type.enum_ ().begin_member ();
+ i != type.enum_ ().end_member ();
+ ++i)
+ {
+ members[index++] = i->c_str ();
+ }
+
+ // Grab pointer to the DynAny_Handler to use the orb and any factory.
+ // DynAny_Handler *dah = DynAny_Handler::instance ();
+
+ // @@ Leak this guy onto the heap to avoid a compile problem.
+ CORBA::TypeCode_ptr tc =
+ DYNANY_HANDLER->orb ()->create_enum_tc (type.enum_ ().typeId ().c_str (),
+ type.enum_ ().name ().c_str (),
+ members);
+
+ ACE_ERROR ((LM_ERROR, "Type: %s \nName: %s\nvalue: %s\n",
+ type.enum_ ().typeId ().c_str (),
+ type.enum_ ().name ().c_str (),
+ value.begin_enum ()->c_str ()));
+
+ // Make the actual DynEnum
+ DynamicAny::DynAny_var temp =
+ DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc);
+ DynamicAny::DynEnum_var retval = DynamicAny::DynEnum::_narrow (temp.in ());
+
+ retval->set_as_string (value.begin_enum ()->c_str ());
+
+ return retval._retn ();
+ }
+
+ void
+ DynEnum_Handler::extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn)
+ {
+ ACE_UNUSED_ARG (dyn);
+ ACE_ERROR ((LM_ERROR, "Extracting Enums not yet supported\n"));
+ }
+ }
+}
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h
new file mode 100644
index 00000000000..009b8b37659
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/DynAny_Handler/DynEnum_Handler.h
@@ -0,0 +1,49 @@
+/**
+ * $Id$
+ *
+ * @file DynEnum_Handler.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#ifndef CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "DynAny_Handler_Export.h"
+
+#include "tao/ORB.h"
+#include "tao/DynamicAny/DynamicAny.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class Any;
+ class DataType;
+ class DataValue;
+
+ /**
+ * @class DynEnum_Handler
+ * @brief Translates enums specified in deployment plans into Dynamic Anys
+ *
+ */
+ class DynEnum_Handler
+ {
+ public:
+ static DynamicAny::DynAny_ptr extract_into_dynany (const DataType &type,
+ const DataValue &value);
+
+ static void extract_out_of_dynany (const DynamicAny::DynAny_ptr dyn);
+ };
+
+ }
+}
+
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_DYNENUM_HANDLER_H*/
+
diff --git a/modules/CIAO/tools/Config_Handlers/ERE_Handler.cpp b/modules/CIAO/tools/Config_Handlers/ERE_Handler.cpp
new file mode 100644
index 00000000000..d64528cfdeb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ERE_Handler.cpp
@@ -0,0 +1,52 @@
+// $Id$
+
+#include "ERE_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ ERE_Handler::external_ref_endpoints (
+ const PlanConnectionDescription &src,
+ Deployment::ExternalReferenceEndpoints &dest)
+ {
+ CIAO_TRACE("ERE_Handler::external_ref_endpoints");
+ PlanConnectionDescription::externalReference_const_iterator erep_e =
+ src.end_externalReference ();
+
+ CORBA::ULong pos = 0;
+ dest.length (src.count_externalReference ());
+ for (PlanConnectionDescription::externalReference_const_iterator erep_b =
+ src.begin_externalReference ();
+ erep_b != erep_e;
+ ++erep_b)
+ {
+ ERE_Handler::handle_external_ref_endpoint ((*erep_b),
+ dest[pos++]);
+ }
+ }
+
+ void
+ ERE_Handler::handle_external_ref_endpoint (
+ const ExternalReferenceEndpoint &src,
+ Deployment::ExternalReferenceEndpoint &dest)
+ {
+ CIAO_TRACE("ERE_Handler::external_ref_endpoint");
+ dest.location =
+ src.location ().c_str ();
+ }
+
+ ExternalReferenceEndpoint
+ ERE_Handler::external_ref_endpoint (
+ const Deployment::ExternalReferenceEndpoint& src)
+ {
+ CIAO_TRACE("ERE_Handler::external_ref_endpoint - reverse");
+ XMLSchema::string< char > loc ((src.location));
+ ExternalReferenceEndpoint erp (loc);
+ return erp;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/ERE_Handler.h b/modules/CIAO/tools/Config_Handlers/ERE_Handler.h
new file mode 100644
index 00000000000..a89b6dcc725
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ERE_Handler.h
@@ -0,0 +1,70 @@
+//==============================================================
+/**
+ * @file ERE_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_ERE_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_ERE_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "Utils/Functors.h"
+
+namespace Deployment
+{
+ class ExternalReferenceEndpoints;
+ struct ExternalReferenceEndpoint;
+}
+
+namespace CIAO
+{
+
+ namespace Config_Handlers
+ {
+ class PlanConnectionDescription;
+ class ExternalReferenceEndpoint;
+
+ /*
+ * @class ERE_Handler
+ *
+ * @brief Handler class for <ExternalReferenceEndpoint> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC ExternalReferenceEndpoint objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Common_Export ERE_Handler
+ {
+ public:
+ static void external_ref_endpoints (const PlanConnectionDescription &src,
+ ::Deployment::ExternalReferenceEndpoints &dest);
+
+ static ExternalReferenceEndpoint external_ref_endpoint (
+ const Deployment::ExternalReferenceEndpoint& src);
+
+ static void handle_external_ref_endpoint (const ExternalReferenceEndpoint &src,
+ Deployment::ExternalReferenceEndpoint &dest);
+ };
+
+ typedef Sequence_Handler < ExternalReferenceEndpoint,
+ ::Deployment::ExternalReferenceEndpoints,
+ ::Deployment::ExternalReferenceEndpoint,
+ ERE_Handler::handle_external_ref_endpoint > ERE_Functor;
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ERE_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/ESD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/ESD_Handler.cpp
new file mode 100644
index 00000000000..1ae8a526842
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ESD_Handler.cpp
@@ -0,0 +1,127 @@
+// $Id$
+
+#include "ESD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "cdp.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ ESD_Handler::es_deployment_descrs (
+ const DeploymentPlan &src,
+ Deployment::EventServiceDeploymentDescriptions& dest)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("ESD_Handler::instance_deployment_descrs");
+ DeploymentPlan::es_const_iterator esd_e = src.end_instance ();
+
+ CORBA::ULong pos = 0;
+ dest.length (src.count_instance ());
+ for (DeploymentPlan::es_const_iterator esd_b =
+ src.begin_instance ();
+ esd_b != esd_e;
+ ++esd_b)
+ {
+ ESD_Handler::instance_deployment_descr ((*esd_b),
+ dest[pos], pos);
+ pos++;
+ }
+ }
+
+
+ void
+ ESD_Handler::es_deployment_descr (
+ const EventServiceDeploymentDescription& src,
+ Deployment::EventServiceDeploymentDescription& dest,
+ CORBA::ULong pos)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDD_Handler::es_deployment_descr");
+ try
+ {
+ dest.name = src.name ().c_str ();
+ dest.node = src.node ().c_str ();
+ dest.svc_cfg_file = src.svc_cfg_file ().c_str ());
+
+ switch (desc.type ().integral ())
+ {
+ case EventServiceType::EC_l:
+ dest.type = Deployment::EC;
+ break;
+
+ case EventServiceType::RTEC_l:
+ dest.type = Deployment::RTEC;
+ break;
+
+ case EventServiceType::NOTIFY_l:
+ dest.type = Deployment::NOTIFY;
+ break;
+
+ case EventServiceType::RTNOTIFY_l:
+ dest.type = Deployment::RTNOTIFY;
+ break;
+
+ default:
+ throw Config_Error (desc.requirementName (),
+ "Unknown EventServiceType.");
+ break;
+ }
+ }
+ catch (Config_Error &ex)
+ {
+ ex.name_ = src.name () + ":" + ex.name_;
+ throw ex;
+ }
+ // Done!
+ }
+
+ EventServiceDeploymentDescription
+ ESD_Handler::es_deployment_descr (
+ const Deployment::EventServiceDeploymentDescription& src)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("ESD_Handler::es_deployment_descr - reverse");
+ //Get all the string
+ XMLSchema::string < ACE_TCHAR > name ((src.name));
+ XMLSchema::string < ACE_TCHAR > node ((src.node));
+ XMLSchema::string < ACE_TCHAR > svc_cfg_file ((src.svc_cfg_file));
+
+ // Instantiate the IDD
+ EventServiceDeploymentDescription esd (
+ name,
+ node,
+ EventServiceType::RTEC_l,
+ svc_cfg_file);
+
+ switch (src.EventServiceType)
+ {
+ case Deployment::EC:
+ esd.EventServiceType (EventServiceType::EC);
+ break;
+
+ case Deployment::RTEC:
+ esd.EventServiceType (EventServiceType::RTEC);
+ break;
+
+ case Deployment::NOTIFY:
+ esd.EventServiceType (EventServiceType::NOTIFY);
+ break;
+
+ case Deployment::RTNOTIFY:
+ esd.EventServiceType (EventServiceType::RTNOTIFY);
+ break;
+
+ default:
+ throw Config_Error (src.resourceName.in (),
+ "Unknown EventServiceType.");
+ break;
+ }
+
+ return esd;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/ESD_Handler.h b/modules/CIAO/tools/Config_Handlers/ESD_Handler.h
new file mode 100644
index 00000000000..f89480f00e4
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ESD_Handler.h
@@ -0,0 +1,73 @@
+//==============================================================
+/**
+ * @file ESD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Gan Deng <dengg@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_IDD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_IDD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Common.h"
+#include "tao/Basic_Types.h"
+#include "Config_Handlers_Export.h"
+#include "IDREF_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct EventServiceDeploymentDescription;
+ class EventServiceDeploymentDescriptions;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class DeploymentPlan;
+ class EventServiceDeploymentDescription;
+
+ /*
+ * @class ESD_Handler
+ *
+ * @brief Handler class for <EventServiceDeploymentDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC EventServiceDeploymentDescription objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Export ESD_Handler
+ {
+ public:
+ static void es_deployment_descrs (
+ const DeploymentPlan &src,
+ ::Deployment::EventServiceDeploymentDescriptions& dest)
+ throw (Config_Error);
+
+ static EventServiceDeploymentDescription es_deployment_descr (
+ const Deployment::EventServiceDeploymentDescription &src)
+ throw (Config_Error);
+
+ static IDREF_Base<CORBA::ULong> IDREF;
+
+ private:
+ static void es_deployment_descr (
+ const EventServiceDeploymentDescription &src,
+ ::Deployment::EventServiceDeploymentDescription &dest,
+ CORBA::ULong pos)
+ throw (Config_Error);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_IDD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/IDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/IDD_Handler.cpp
new file mode 100644
index 00000000000..7c7c315f324
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IDD_Handler.cpp
@@ -0,0 +1,162 @@
+// $Id$
+
+#include "ace/UUID.h"
+#include "IDD_Handler.h"
+#include "IRDD_Handler.h"
+#include "MDD_Handler.h"
+#include "Property_Handler.h"
+#include "Any_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "cdp.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ IDREF_Base<CORBA::ULong> IDD_Handler::IDREF;
+
+ void
+ IDD_Handler::instance_deployment_descrs (
+ const DeploymentPlan &src,
+ Deployment::InstanceDeploymentDescriptions& dest)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDD_Handler::instance_deployment_descrs");
+ DeploymentPlan::instance_const_iterator idd_e =
+ src.end_instance ();
+
+ CORBA::ULong pos = 0;
+ dest.length (src.count_instance ());
+ for (DeploymentPlan::instance_const_iterator idd_b =
+ src.begin_instance ();
+ idd_b != idd_e;
+ ++idd_b)
+ {
+ IDD_Handler::instance_deployment_descr ((*idd_b),
+ dest[pos], pos);
+ pos++;
+ }
+ }
+
+ void
+ IDD_Handler::instance_deployment_descr (
+ const InstanceDeploymentDescription& src,
+ Deployment::InstanceDeploymentDescription& dest,
+ CORBA::ULong pos)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDD_Handler::instance_deployment_descr");
+ try
+ {
+ dest.name = src.name ().c_str ();
+ dest.node = src.node ().c_str ();
+
+ if (src.id_p ())
+ {
+ ACE_CString cstr (src.id ().c_str ());
+ IDD_Handler::IDREF.bind_ref (cstr, pos);
+ }
+ else
+ {
+ ACE_DEBUG((LM_ERROR,
+ "(%P|%t) Warning: IDD %s has no idref \n",
+ src.name ().c_str ()));
+ }
+
+ // We know there should be only one element
+ dest.source.length (1);
+ dest.source [0] =
+ src.source ().c_str ();
+
+ CORBA::ULong tmp = 0;
+ MDD_Handler::IDREF.find_ref
+ (ACE_CString (src.implementation ().id ().c_str ()), tmp);
+
+ dest.implementationRef = tmp;
+
+ dest.configProperty.length (src.count_configProperty ());
+ std::for_each (src.begin_configProperty (),
+ src.end_configProperty (),
+ Property_Functor (dest.configProperty));
+
+ if (src.deployedResource_p ())
+ {
+ dest.deployedResource.length (1);
+ IRDD_Handler::instance_resource_deployment_descr (src.deployedResource (),
+ dest.deployedResource[0]);
+ }
+
+ if (src.deployedSharedResource_p ())
+ {
+ dest.deployedSharedResource.length (1);
+ IRDD_Handler::instance_resource_deployment_descr (src.deployedSharedResource (),
+ dest.deployedSharedResource[0]);
+ }
+
+ }
+ catch (Config_Error &ex)
+ {
+ ex.name_ = src.name () + ":" + ex.name_;
+ throw ex;
+ }
+ // Done!
+ }
+
+ InstanceDeploymentDescription
+ IDD_Handler::instance_deployment_descr (
+ const Deployment::InstanceDeploymentDescription& src)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDD_Handler::instance_deployment_descr - reverse");
+ //Get all the string/IDREFs
+ XMLSchema::string < ACE_TCHAR > name ((src.name));
+ XMLSchema::string < ACE_TCHAR > node ((src.node));
+ XMLSchema::string < ACE_TCHAR > source ("");
+ if (src.source.length () > 0)
+ {
+ XMLSchema::string < ACE_TCHAR > source_detail (src.source[0]);
+ source = source_detail;
+ }
+ ACE_CString temp;
+ MDD_Handler::IDREF.find_ref(src.implementationRef, temp);
+ XMLSchema::IDREF< ACE_TCHAR > implementation ((temp.c_str()));
+
+ // Instantiate the IDD
+ InstanceDeploymentDescription idd (name, node, source, implementation);
+
+ //Get and store the configProperty(s)
+ size_t total = src.configProperty.length();
+ for(size_t j = 0; j < total; j++)
+ {
+ idd.add_configProperty(
+ Property_Handler::get_property (
+ src.configProperty[j]));
+ }
+
+ //Check if there is a deployedResource, if so store
+ if(src.deployedResource.length() != 0)
+ idd.deployedResource(IRDD_Handler::instance_resource_deployment_descr(src.deployedResource[0]));
+
+ //Check if there is a deployedSharedResource, if so store it
+ if(src.deployedSharedResource.length() != 0)
+ idd. deployedSharedResource(IRDD_Handler::instance_resource_deployment_descr(src.deployedSharedResource[0]));
+
+ // Generate a UUID to use for the IDREF.
+ ACE_Utils::UUID uuid;
+ ACE_Utils::UUID_GENERATOR::instance ()->generateUUID (uuid);
+ ACE_CString idd_id ("_");
+ idd_id += *uuid.to_string ();
+
+ XMLSchema::ID< ACE_TCHAR > xml_id (idd_id.c_str ());
+
+ // Bind the ref and set it in the IDD
+ IDD_Handler::IDREF.bind_next_available (idd_id);
+
+ idd.id (xml_id);
+
+ return idd;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/IDD_Handler.h b/modules/CIAO/tools/Config_Handlers/IDD_Handler.h
new file mode 100644
index 00000000000..735038e2468
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IDD_Handler.h
@@ -0,0 +1,76 @@
+//==============================================================
+/**
+* @file IDD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_IDD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_IDD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Common.h"
+#include "tao/Basic_Types.h"
+#include "Config_Handlers_Export.h"
+#include "IDREF_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+struct InstanceDeploymentDescription;
+class InstanceDeploymentDescriptions;
+struct InstanceResourceDeploymentDescription;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class DeploymentPlan;
+class InstanceDeploymentDescription;
+class InstanceResourceDeploymentDescription;
+
+/*
+* @class IDD_Handler
+*
+* @brief Handler class for <InstanceDeploymentDescription> types.
+*
+* This class defines handler methods to map values from
+* XSC InstanceDeploymentDescriptionn objects, parsed from
+* the descriptor files, to the corresponding CORBA IDL type.
+*
+*/
+
+class Config_Handlers_Export IDD_Handler
+{
+public:
+static void instance_deployment_descrs (
+const DeploymentPlan &src,
+::Deployment::InstanceDeploymentDescriptions& dest)
+throw (Config_Error);
+
+static InstanceDeploymentDescription instance_deployment_descr (
+const Deployment::InstanceDeploymentDescription &src)
+throw (Config_Error);
+
+static IDREF_Base<CORBA::ULong> IDREF;
+
+private:
+static void instance_deployment_descr (
+const InstanceDeploymentDescription &src,
+::Deployment::InstanceDeploymentDescription &dest,
+CORBA::ULong pos)
+throw (Config_Error);
+
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_IDD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/IDREF_Base.cpp b/modules/CIAO/tools/Config_Handlers/IDREF_Base.cpp
new file mode 100644
index 00000000000..b2249b82895
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IDREF_Base.cpp
@@ -0,0 +1,114 @@
+// $Id$
+
+#ifndef IDREF_BASE_CPP
+#define IDREF_BASE_CPP
+
+#include "ciao/CIAO_common.h"
+#include "IDREF_Base.h"
+#include <iostream>
+
+
+ACE_RCSID (DAnCE,
+ IDREF_Base,
+ "$Id$")
+
+namespace CIAO
+ {
+ namespace Config_Handlers
+ {
+ template <typename T>
+ void
+ IDREF_Base<T>::bind_ref (ACE_CString& id, T value)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDREF_Base<T>::bind_ref");
+
+ int retval =
+ idref_map_.bind (id, value);
+
+ pos_map_.bind (value,id);
+
+ if (retval < 0)
+ throw Config_Error (id.c_str (),
+ "Failed to bind an IDRef. This likely indicates a name clash.");
+ }
+
+ template <typename T>
+ void
+ IDREF_Base<T>::bind_next_available (ACE_CString &id)
+ {
+ // Note: For this function to compile and work properly,
+ // T must have the postincrement operator defined.
+ CIAO_TRACE ("IDREF_Base<T>::bind_next_available");
+ // ACE_DEBUG ((LM_DEBUG, "**** Binding %s to %i\n",
+ // id.c_str (),
+ // this->next_));
+
+ int retval = idref_map_.bind (id, this->next_);
+
+ int pos_retval = pos_map_.bind (this->next_, id);
+
+ ++this->next_;
+
+ if (retval < 0 || pos_retval < 0)
+ throw Config_Error (id.c_str (),
+ "Failed to bind an IDRef. This likely indicates a name clash");
+
+ }
+
+ template <typename T>
+ void
+ IDREF_Base<T>::find_ref (const ACE_CString& id, T& val)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDREF_Base<T>::find_ref(C_String, T)");
+
+ int retval =
+ idref_map_.find (id, val);
+
+ if (retval < 0)
+ throw Config_Error (id.c_str (),
+ "Unable to look up an IDRef.");
+ }
+
+ template <typename T>
+ void
+ IDREF_Base<T>::find_ref (const T& value, ACE_CString& id)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IDREF_Base<T>::find_ref (T, CString)");
+
+ int retval =
+ pos_map_.find (value, id);
+
+ // ACE_ERROR ((LM_ERROR, "**** Looking up value %i\n",
+ // value));
+
+ if (retval < 0)
+ throw Config_Error ("No location information for reverse IDREF lookup",
+ id.c_str ());
+ }
+
+ template <typename T>
+ bool
+ IDREF_Base<T>::unbind_refs (void)
+ {
+ CIAO_TRACE("IDREF_Base<T>::unbind_refs");
+
+ int retval =
+ idref_map_.unbind_all ();
+
+ pos_map_.unbind_all ();
+
+ this->next_ = 0;
+
+ if (retval < 0)
+ return false;
+
+ return true;
+ }
+ }
+
+ }
+
+#endif /* IDREF_BASE_CPP */
diff --git a/modules/CIAO/tools/Config_Handlers/IDREF_Base.h b/modules/CIAO/tools/Config_Handlers/IDREF_Base.h
new file mode 100644
index 00000000000..85f0d3a4f22
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IDREF_Base.h
@@ -0,0 +1,92 @@
+/**
+* $Id$
+* @file IDREF_Base.h
+* @author Will Otte <wotte@dre.vanderbilt.edu>
+*
+* Defines the IDREF_Base class, which is an abstract class that serves
+* as a base for any config handler that must map IDREFS.
+*/
+
+#ifndef CIAO_CONFIG_HANDLERS_IDREF_BASE_H
+#define CIAO_CONFIG_HANDLERS_IDREF_BASE_H
+
+#include /**/ "ace/pre.h"
+
+#include "Common.h"
+#include "Config_Handlers_Export.h"
+#include "ace/Hash_Map_Manager.h"
+#include "ace/Null_Mutex.h"
+#include "ace/SString.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+
+/**
+* @class IDREF_Handler
+* @brief Base class for any handler that must process idrefs.
+*
+*/
+template <typename T>
+class IDREF_Base
+{
+public:
+IDREF_Base ()
+{
+}
+
+IDREF_Base (T start_point)
+: next_ (start_point)
+{
+}
+
+/// Bind an IDREF to an index
+void bind_ref (ACE_CString& id, T value)
+throw (Config_Error);
+
+void bind_next_available (ACE_CString &id);
+
+/// Get the index associated with an IDREF
+void find_ref (const ACE_CString& id, T& value)
+throw (Config_Error);
+
+/// get the IDREF associated with an index
+void find_ref (const T &value, ACE_CString& id)
+throw (Config_Error);
+
+/// Unbind all IDREFS
+bool
+unbind_refs (void);
+
+typedef ACE_Hash_Map_Manager<ACE_CString,
+T,
+ACE_Null_Mutex> IDREF_MAP;
+
+
+typedef ACE_Hash_Map_Manager<T,
+ACE_CString,
+ACE_Null_Mutex> POS_MAP;
+protected:
+/// The map used to store and look up the indexes of elements
+/// referenced by their IDREF.
+IDREF_MAP idref_map_;
+/// The map used to store and look up the IDREFS of elements
+/// referenced by their index.
+POS_MAP pos_map_;
+
+T next_;
+};
+
+}
+
+}
+
+#include "IDREF_Base.cpp"
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_IDREF_BASE_H */
diff --git a/modules/CIAO/tools/Config_Handlers/ID_Handler.cpp b/modules/CIAO/tools/Config_Handlers/ID_Handler.cpp
new file mode 100644
index 00000000000..5d3cad169a6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ID_Handler.cpp
@@ -0,0 +1,45 @@
+// $Id$
+
+#include "ID_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ ID_Handler::ID_Handler (void)
+ {
+ }
+
+ ID_Handler::~ID_Handler (void)
+ {
+ }
+
+
+ void
+ ID_Handler::get_ImplementationDependency (const ImplementationDependency& desc,
+ Deployment::ImplementationDependency& toconfig)
+ {
+
+ CIAO_TRACE("ID_Handler::get_ImplementationDependency");
+
+ toconfig.requiredType=
+ CORBA::string_dup (desc.requiredType ().c_str ());
+ }
+
+ ImplementationDependency
+ ID_Handler::impl_dependency (
+ const ::Deployment::ImplementationDependency& src)
+ {
+ CIAO_TRACE("ID_Handler::get_ImplementationDependency - reverse");
+ XMLSchema::string< char > reqtype ((src.requiredType));
+
+ ImplementationDependency id (reqtype);
+
+ return id;
+ }
+
+ }
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/ID_Handler.h b/modules/CIAO/tools/Config_Handlers/ID_Handler.h
new file mode 100644
index 00000000000..bea6ec2b1a6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ID_Handler.h
@@ -0,0 +1,78 @@
+
+//==============================================================
+/**
+* @file ID_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_ID_Handler_H
+#define CIAO_CONFIG_HANDLERS_ID_Handler_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+#include "ace/config-lite.h"
+
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+
+namespace Deployment
+{
+struct ImplementationDependency;
+class ImplementationDependencies;
+
+}
+
+
+namespace CIAO
+{
+
+namespace Config_Handlers
+{
+
+class ImplementationDependency;
+
+
+/*
+* @class ID_Handler
+*
+* @brief Handler class for <ImplementationDependency> types.
+*
+* This class defines handler methods to map values from
+* XSC ImplementationDependency objects, parsed from the descriptor files, to the
+* corresponding CORBA IDL Any type.
+*
+*/
+class Config_Handlers_Export ID_Handler
+{
+public:
+
+ID_Handler (void);
+virtual ~ID_Handler (void);
+
+static void get_ImplementationDependency (
+const ImplementationDependency& desc,
+Deployment::ImplementationDependency& toconfig);
+
+static ImplementationDependency impl_dependency (
+const ::Deployment::ImplementationDependency& src);
+};
+
+typedef Sequence_Handler < ImplementationDependency,
+::Deployment::ImplementationDependencies,
+::Deployment::ImplementationDependency,
+ID_Handler::get_ImplementationDependency > ID_Functor;
+
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_ID_Handler_H */
diff --git a/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp
new file mode 100644
index 00000000000..34318ee8d4c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.cpp
@@ -0,0 +1,122 @@
+// $Id$
+
+#include "IRDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Property_Handler.h"
+#include "ciao/CIAO_common.h"
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ IRDD_Handler::IRDD_Handler (void)
+ {
+ }
+
+ IRDD_Handler::~IRDD_Handler (void)
+ {
+ }
+
+
+ void
+ IRDD_Handler::instance_resource_deployment_descr (
+ const InstanceResourceDeploymentDescription& desc,
+ Deployment::InstanceResourceDeploymentDescription& toconfig)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IRDD_Handler::instance_resource_deployment_descr");
+
+ switch (desc.resourceUsage ().integral ())
+ {
+ case ResourceUsageKind::None_l:
+ toconfig.resourceUsage = Deployment::None;
+ break;
+
+ case ResourceUsageKind::InstanceUsesResource_l:
+ toconfig.resourceUsage = Deployment::InstanceUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesInstance_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesInstance;
+ break;
+
+ case ResourceUsageKind::PortUsesResource_l:
+ toconfig.resourceUsage = Deployment::PortUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesPort_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesPort;
+ break;
+
+ default:
+ throw Config_Error (desc.requirementName (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ toconfig.requirementName = desc.requirementName ().c_str ();
+
+ toconfig.resourceName= desc.resourceName ().c_str ();
+
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property));
+ }
+
+ InstanceResourceDeploymentDescription
+ IRDD_Handler::instance_resource_deployment_descr (
+ const Deployment::InstanceResourceDeploymentDescription& src)
+ throw (Config_Error)
+ {
+ CIAO_TRACE("IRDD_Handler::instance_resource_deployment_descr - reverse");
+
+ XMLSchema::string< char > reqname ((src.requirementName));
+ XMLSchema::string< char > resname ((src.resourceName));
+
+ InstanceResourceDeploymentDescription irdd (ResourceUsageKind::None,
+ reqname,
+ resname);
+
+ switch (src.resourceUsage)
+ {
+ case Deployment::None:
+ irdd.resourceUsage (ResourceUsageKind::None);
+ break;
+
+ case Deployment::InstanceUsesResource:
+ irdd.resourceUsage (ResourceUsageKind::InstanceUsesResource);
+ break;
+
+ case Deployment::ResourceUsesInstance:
+ irdd.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
+ break;
+
+ case Deployment::PortUsesResource:
+ irdd.resourceUsage (ResourceUsageKind::PortUsesResource);
+ break;
+
+ case Deployment::ResourceUsesPort:
+ irdd.resourceUsage (ResourceUsageKind::ResourceUsesPort);
+ break;
+
+ default:
+ throw Config_Error (src.resourceName.in (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ {
+ irdd.add_property (Property_Handler::get_property (src.property[i]));
+ }
+
+
+ return irdd;
+ }
+ }
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/IRDD_Handler.h b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.h
new file mode 100644
index 00000000000..df30ed2e87f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/IRDD_Handler.h
@@ -0,0 +1,71 @@
+//==============================================================
+/**
+* @file IRDD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_IRDD_Handler_H
+#define CIAO_CONFIG_HANDLERS_IRDD_Handler_H
+#include /**/ "ace/pre.h"
+
+#include "Common.h"
+#include "Config_Handlers_Export.h"
+#include "ace/config-lite.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+
+namespace Deployment
+{
+struct InstanceResourceDeploymentDescription;
+}
+
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+
+class InstanceResourceDeploymentDescription;
+
+
+/*
+* @class IRDD_Handler
+*
+* @brief Handler class for <InstanceResourceDeploymentDescription> types.
+*
+* This class defines handler methods to map values from
+* XSC InstanceResourceDeploymentDescription objects, parsed from the descriptor files, to the
+* corresponding CORBA IDL Any type.
+*
+*/
+class Config_Handlers_Export IRDD_Handler {
+public:
+IRDD_Handler (void);
+virtual ~IRDD_Handler (void);
+
+static void instance_resource_deployment_descr (
+const InstanceResourceDeploymentDescription& desc,
+Deployment::InstanceResourceDeploymentDescription& toconfig)
+throw (Config_Error);
+
+static InstanceResourceDeploymentDescription
+instance_resource_deployment_descr (
+const Deployment::InstanceResourceDeploymentDescription& src)
+throw (Config_Error);
+
+
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_IRDD_Handler_H */
+
diff --git a/modules/CIAO/tools/Config_Handlers/MDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/MDD_Handler.cpp
new file mode 100644
index 00000000000..c86d6dc1da1
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/MDD_Handler.cpp
@@ -0,0 +1,177 @@
+// $Id$
+
+#include "MDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ADD_Handler.h"
+#include "Property_Handler.h"
+#include "Req_Handler.h"
+#include "cdp.hpp"
+#include "ace/UUID.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ IDREF_Base<CORBA::ULong> MDD_Handler::IDREF;
+
+ void
+ MDD_Handler::mono_deployment_descriptions (
+ const DeploymentPlan& src,
+ Deployment::MonolithicDeploymentDescriptions& dest)
+ {
+ CIAO_TRACE("MDD_Handler::mono_deployment_descriptions");
+
+ DeploymentPlan::implementation_const_iterator imp_e =
+ src.end_implementation ();
+ CORBA::ULong pos = 0;
+ dest.length (src.count_implementation ());
+ for (DeploymentPlan::implementation_const_iterator imp_b =
+ src.begin_implementation ();
+ imp_b != imp_e;
+ ++imp_b)
+ {
+ MDD_Handler::mono_deployment_description (*imp_b,
+ dest[pos],
+ pos);
+ pos++;
+ }
+ }
+
+ void
+ MDD_Handler::mono_deployment_description (
+ const MonolithicDeploymentDescription& desc,
+ Deployment::MonolithicDeploymentDescription& toconfig,
+ CORBA::ULong pos)
+ {
+ toconfig.name =
+ CORBA::string_dup (desc.name ().c_str ());
+
+ MonolithicDeploymentDescription::source_const_iterator me =
+ desc.end_source ();
+
+ CORBA::ULong len = 0;
+ toconfig.source.length (desc.count_source ());
+ for (MonolithicDeploymentDescription::source_const_iterator se =
+ desc.begin_source ();
+ se != me;
+ ++se)
+ {
+ toconfig.source[len++] =
+ CORBA::string_dup ((*se).c_str ());
+ }
+
+ MonolithicDeploymentDescription::artifact_const_iterator ae =
+ desc.end_artifact ();
+ len = 0;
+ toconfig.artifactRef.length (desc.count_artifact ());
+ for (MonolithicDeploymentDescription::artifact_const_iterator
+ ab = desc.begin_artifact ();
+ ae != ab;
+ ++ab)
+ {
+ CORBA::ULong tmp = 0;
+
+ ADD_Handler::IDREF.find_ref (ACE_CString (ab->id ().c_str ()),
+ tmp);
+
+ toconfig.artifactRef[len++] = tmp;
+ }
+
+ MonolithicDeploymentDescription::execParameter_const_iterator epce =
+ desc.end_execParameter ();
+ len = 0;
+ toconfig.execParameter.length (desc.count_execParameter ());
+ for (MonolithicDeploymentDescription::execParameter_const_iterator epcb =
+ desc.begin_execParameter ();
+ epcb != epce;
+ ++epcb)
+ {
+ Property_Handler::handle_property ((*epcb),
+ toconfig.execParameter[len++]);
+ }
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ Requirement_Functor (toconfig.deployRequirement));
+
+ // Handle the idref
+ if (desc.id_p ())
+ {
+ ACE_CString cstr (desc.id ().c_str ());
+
+ MDD_Handler::IDREF.bind_ref (cstr, pos);
+ }
+ else
+ {
+ ACE_DEBUG((LM_ERROR,
+ "(%P|%t) Warning: MDD %s has no idref \n",
+ desc.name ().c_str ()));
+ }
+ }
+
+
+ MonolithicDeploymentDescription
+ MDD_Handler::mono_deployment_description(
+ const Deployment::MonolithicDeploymentDescription &src)
+ {
+ CIAO_TRACE("mono_deployment_description - reverse");
+
+ //Get the name and instantiate the mdd
+ XMLSchema::string < char > name ((src.name));
+ MonolithicDeploymentDescription mdd (name);
+
+ //Get the source(s) from the IDL and store them
+ size_t total = src.source.length();
+ for(size_t i = 0; i < total; i++)
+ {
+ XMLSchema::string< char > curr ((src.source[i]));
+ mdd.add_source(curr);
+ }
+
+ //Get the artifactRef(s) from the IDL and store them
+ total = src.artifactRef.length();
+ for(size_t j = 0; j < total; j++)
+ {
+ ACE_CString tmp;
+ ADD_Handler::IDREF.find_ref(src.artifactRef[j], tmp);
+ XMLSchema::IDREF< ACE_TCHAR > curr(tmp.c_str());
+ mdd.add_artifact (curr);
+ }
+
+ //Get the execParameter(s) from the IDL and store them
+ total = src.execParameter.length();
+ for(size_t k = 0; k < total; k++)
+ {
+ mdd.add_execParameter (
+ Property_Handler::get_property (src.execParameter[k]));
+ }
+
+ //Get the deployRequirement(s) from the IDL and store them
+ total = src.deployRequirement.length();
+ for(size_t l = 0; l < total; l++)
+ {
+ mdd.add_deployRequirement(
+ Req_Handler::get_requirement (src.deployRequirement[l]));
+ }
+
+ // Generate a UUID to use for the IDREF.
+ ACE_Utils::UUID uuid;
+ ACE_Utils::UUID_GENERATOR::instance ()->generateUUID (uuid);
+ ACE_CString mdd_id ("_");
+ mdd_id += *uuid.to_string ();
+
+ XMLSchema::ID< ACE_TCHAR > xml_id (mdd_id.c_str ());
+
+ // Bind the ref and set it in the IDD
+ MDD_Handler::IDREF.bind_next_available (mdd_id);
+
+ mdd.id (xml_id);
+
+ return mdd;
+ }
+ }
+
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/MDD_Handler.h b/modules/CIAO/tools/Config_Handlers/MDD_Handler.h
new file mode 100644
index 00000000000..2d95ff71e2d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/MDD_Handler.h
@@ -0,0 +1,71 @@
+//==============================================================
+/**
+* @file MDD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_MDD_Handler_H
+#define CIAO_CONFIG_HANDLERS_MDD_Handler_H
+#include /**/ "ace/pre.h"
+#include "tao/Basic_Types.h"
+#include "Config_Handlers_Export.h"
+#include "IDREF_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace Deployment
+{
+struct MonolithicDeploymentDescription;
+class MonolithicDeploymentDescriptions;
+}
+
+
+namespace CIAO
+{
+
+namespace Config_Handlers
+{
+class MonolithicDeploymentDescription;
+class DeploymentPlan;
+
+/*
+* @class MDD_Handler
+*
+* @brief Handler class for <MonolithicDeploymentDescription> types.
+*
+* This class defines handler methods to map values from XSC
+* MonolithicDeploymentDescription objects, parsed from the
+* descriptor files, to the corresponding CORBA IDL types.
+*
+*/
+
+class Config_Handlers_Export MDD_Handler
+{
+public:
+static void mono_deployment_descriptions (
+const DeploymentPlan &src,
+Deployment::MonolithicDeploymentDescriptions &dest);
+
+static MonolithicDeploymentDescription mono_deployment_description(
+const Deployment::MonolithicDeploymentDescription &src);
+
+static IDREF_Base<CORBA::ULong> IDREF;
+
+private:
+static void mono_deployment_description (
+const MonolithicDeploymentDescription& desc,
+Deployment::MonolithicDeploymentDescription& toconfig,
+CORBA::ULong pos);
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_MDD_Handler_H */
diff --git a/modules/CIAO/tools/Config_Handlers/PCD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/PCD_Handler.cpp
new file mode 100644
index 00000000000..23b332d471e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/PCD_Handler.cpp
@@ -0,0 +1,140 @@
+// $Id$
+
+#include "PCD_Handler.h"
+#include "Req_Handler.h"
+#include "CEPE_Handler.h"
+#include "PSPE_Handler.h"
+#include "ERE_Handler.h"
+#include "CRDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ PCD_Handler::PCD_Handler (void)
+ {
+ }
+
+ PCD_Handler::~PCD_Handler (void)
+ {
+ }
+
+ ///This method takes a <Deployment::PlanConnectionDescription>
+ ///and maps the values from the passed in XSC
+ ///PlanConnectionDescription to its members.
+ void PCD_Handler::handle_PlanConnectionDescription (const PlanConnectionDescription& desc,
+ Deployment::PlanConnectionDescription& toconfig)
+ {
+ CIAO_TRACE("PCD_Handler::get_PlanConnectionDescription");
+
+ toconfig.name = CORBA::string_dup (desc.name ().c_str ());
+
+ //Source is mapped to a string in the schema and a sequence
+ //in the IDL. We just assign the source string from the xml
+ //to the first position in the IDL type's sequence. We
+ //make sure that the source is present before lengthening
+ //the sequence.
+ if (desc.source_p ())
+ {
+ // Only one.....
+ toconfig.source.length (1);
+ toconfig.source[0] = desc.source ().c_str ();
+ }
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ Requirement_Functor (toconfig.deployRequirement));
+
+
+ //Create the ComponentExternalPortEndpoint handler.
+ CEPE_Handler::external_port_endpoints (desc,
+ toconfig.externalEndpoint);
+
+ //Configure the PlanSubcomponentPortEndpoint's.
+ PSPE_Handler::sub_component_port_endpoints (desc,
+ toconfig.internalEndpoint);
+
+ //Configure the ExternalReferenceEndpoint's.
+ ERE_Handler::external_ref_endpoints (desc,
+ toconfig.externalReference);
+
+ //Configure the resource value.
+ CRDD_Handler crddhandler;
+ CORBA::ULong pos = 0;
+ toconfig.deployedResource.length (desc.count_deployedResource ());
+ for(PlanConnectionDescription::deployedResource_const_iterator res =
+ desc.begin_deployedResource();
+ res != desc.end_deployedResource();
+ res++)
+ {
+ crddhandler.get_ConnectionResourceDeploymentDescription (toconfig.deployedResource[pos++],
+ *res);
+ }
+
+ }
+
+ PlanConnectionDescription
+ PCD_Handler::get_PlanConnectionDescription (const Deployment::PlanConnectionDescription &src)
+ {
+ CIAO_TRACE("PCD_Handler::get_PlanConnectionDescription");
+
+ XMLSchema::string< char > name ((src.name));
+
+ PlanConnectionDescription pcd(name);
+
+ //Get the source if it exists
+ if(src.source.length() != 0)
+ {
+ XMLSchema::string< char > source((src.source[0]));
+ pcd.source(source);
+ }
+
+ //Get any externalEndpoint(s) and store them
+ size_t total = src.externalEndpoint.length();
+ for(size_t i = 0; i < total; i++)
+ {
+ pcd.add_externalEndpoint(
+ CEPE_Handler::external_port_endpoint(src.externalEndpoint[i]));
+ }
+
+ //Get any externalReference(s) and store them
+ total = src.externalReference.length();
+ for(size_t j = 0; j < total; j++)
+ {
+ pcd.add_externalReference(
+ ERE_Handler::external_ref_endpoint(src.externalReference[j]));
+ }
+
+ //Get any internalEndpoint(s) and store them
+ total = src.internalEndpoint.length();
+ for(size_t k = 0; k < total; k++)
+ {
+ pcd.add_internalEndpoint(
+ PSPE_Handler::sub_component_port_endpoint(src.internalEndpoint[k]));
+ }
+
+ //Get any deployedResource(s) and store them
+ total = src.deployedResource.length();
+ for(size_t l = 0; l < total; l++)
+ {
+ pcd.add_deployedResource(
+ CRDD_Handler::connection_resource_depl_desc(src.deployedResource[l]));
+ }
+
+ //Get any deployRequirement(s) and store them
+ total = src.deployRequirement.length();
+ for(size_t m = 0; m < total; m++)
+ {
+ pcd.add_deployRequirement(
+ Req_Handler::get_requirement(src.deployRequirement[m]));
+ }
+
+ return pcd;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/PCD_Handler.h b/modules/CIAO/tools/Config_Handlers/PCD_Handler.h
new file mode 100644
index 00000000000..3813fa2badc
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/PCD_Handler.h
@@ -0,0 +1,75 @@
+//==============================================================
+/**
+ * @file PCD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_PCD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PCD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+#include "Utils/Functors.h"
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct PlanConnectionDescription;
+ class PlanConnectionDescriptions;
+}
+
+namespace CIAO
+{
+
+ namespace Config_Handlers
+ {
+
+ class PlanConnectionDescription;
+
+ /*
+ * @class PCD_Handler
+ *
+ * @brief Handler class for <PlanConnectionDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC PlanConnectionDescription objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Export PCD_Handler{
+
+ public:
+
+ PCD_Handler (void);
+ virtual ~PCD_Handler (void);
+
+ ///This method takes a <Deployment::PlanConnectionDescription>
+ ///and maps the values from the passed in XSC
+ ///PlanConnectionDescription to its members.
+ static void handle_PlanConnectionDescription (const PlanConnectionDescription& desc,
+ ::Deployment::PlanConnectionDescription& toconfig);
+
+ //This method takes a <Deployment::PlanConnectionDescription>
+ //converts it into a <Config_Handler::PlanConnectionDescription>
+ //and returns the value
+ static PlanConnectionDescription
+ get_PlanConnectionDescription (const Deployment::PlanConnectionDescription &src);
+ };
+
+ typedef Sequence_Handler < PlanConnectionDescription,
+ ::Deployment::PlanConnectionDescriptions,
+ ::Deployment::PlanConnectionDescription,
+ PCD_Handler::handle_PlanConnectionDescription > PCD_Functor;
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_PCD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/PSPE_Handler.cpp b/modules/CIAO/tools/Config_Handlers/PSPE_Handler.cpp
new file mode 100644
index 00000000000..24d55cecf36
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/PSPE_Handler.cpp
@@ -0,0 +1,145 @@
+// $Id$
+
+#include "PSPE_Handler.h"
+#include "IDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ PSPE_Handler::sub_component_port_endpoints (
+ const PlanConnectionDescription &src,
+ ::Deployment::PlanSubcomponentPortEndpoints &dest)
+ {
+ CIAO_TRACE("PSPE_Handler::sub_component_port_endpoints");
+
+ PlanConnectionDescription::internalEndpoint_const_iterator iei_e =
+ src.end_internalEndpoint ();
+ CORBA::ULong pos = 0;
+ dest.length (src.count_internalEndpoint ());
+
+ for (PlanConnectionDescription::internalEndpoint_const_iterator iei_b =
+ src.begin_internalEndpoint ();
+ iei_b != iei_e;
+ ++iei_b)
+ {
+ PSPE_Handler::sub_component_port_endpoint ((*iei_b),
+ dest[pos++]);
+ }
+ }
+
+ void
+ PSPE_Handler::sub_component_port_endpoint (
+ const PlanSubcomponentPortEndpoint &src,
+ ::Deployment::PlanSubcomponentPortEndpoint &dest)
+ {
+ CIAO_TRACE("PSPE_Handler::sub_component_port_endpoint");
+ dest.portName =
+ src.portName ().c_str ();
+
+ if (src.provider_p ())
+ {
+ dest.provider = src.provider () == "true";
+ }
+ else
+ {
+ dest.provider = false;
+ }
+
+ CORBA::ULong tmp = 0;
+
+ IDD_Handler::IDREF.find_ref (ACE_CString (src.instance ().id ().c_str ()),
+ tmp);
+
+ dest.instanceRef = tmp;
+
+ switch (src.kind ().integral ())
+ {
+ case CCMComponentPortKind::Facet_l:
+ dest.kind = Deployment::Facet;
+ break;
+
+ case CCMComponentPortKind::SimplexReceptacle_l:
+ dest.kind = Deployment::SimplexReceptacle;
+ break;
+
+ case CCMComponentPortKind::MultiplexReceptacle_l:
+ dest.kind = Deployment::MultiplexReceptacle;
+ break;
+
+ case CCMComponentPortKind::EventEmitter_l:
+ dest.kind = Deployment::EventEmitter;
+ break;
+
+ case CCMComponentPortKind::EventPublisher_l:
+ dest.kind = Deployment::EventPublisher;
+ break;
+
+ case CCMComponentPortKind::EventConsumer_l:
+ dest.kind = Deployment::EventConsumer;
+ break;
+
+ default:
+ ACE_DEBUG ((LM_DEBUG, "Invalid port kind in connection\n"));
+
+ }
+ }
+
+ PlanSubcomponentPortEndpoint
+ PSPE_Handler::sub_component_port_endpoint (
+ const Deployment::PlanSubcomponentPortEndpoint &src)
+ { // @@MAJO
+ CIAO_TRACE("PSPE_Handler::sub_component_port_endpoint - reverse");
+ XMLSchema::string< char > pname ((src.portName));
+ XMLSchema::string< char > tval ("true");
+ XMLSchema::string< char > prov ("");
+ ACE_CString id;
+ IDD_Handler::IDREF.find_ref(src.instanceRef, id);
+ XMLSchema::IDREF < ACE_TCHAR > idref(id.c_str());
+
+ if (src.provider)
+ prov = tval;
+
+ PlanSubcomponentPortEndpoint pspe (pname,
+ CCMComponentPortKind::Facet,
+ idref);
+ pspe.provider (prov);
+
+ switch (src.kind)
+ {
+ case ::Deployment::Facet:
+ pspe.kind (CCMComponentPortKind::Facet);
+ break;
+
+ case ::Deployment::SimplexReceptacle:
+ pspe.kind (CCMComponentPortKind::SimplexReceptacle);
+ break;
+
+ case ::Deployment::MultiplexReceptacle:
+ pspe.kind (CCMComponentPortKind::MultiplexReceptacle);
+ break;
+
+ case ::Deployment::EventEmitter:
+ pspe.kind (CCMComponentPortKind::EventEmitter);
+ break;
+
+ case ::Deployment::EventPublisher:
+ pspe.kind (CCMComponentPortKind::EventPublisher);
+ break;
+
+ case ::Deployment::EventConsumer:
+ pspe.kind (CCMComponentPortKind::EventConsumer);
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Invalid port kind in PSPE\n"));
+ }
+
+
+ return pspe;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/PSPE_Handler.h b/modules/CIAO/tools/Config_Handlers/PSPE_Handler.h
new file mode 100644
index 00000000000..aeb92da9eb0
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/PSPE_Handler.h
@@ -0,0 +1,65 @@
+//==============================================================
+/**
+* @file PSPE_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+class PlanSubcomponentPortEndpoints;
+struct PlanSubcomponentPortEndpoint;
+}
+
+namespace CIAO
+{
+
+namespace Config_Handlers
+{
+class PlanConnectionDescription;
+class PlanSubcomponentPortEndpoint;
+
+/*
+* @class PSPE_Handler
+*
+* @brief Handler class for <PlanSubcomponentPortEndpoint> types.
+*
+* This class defines handler methods to map values from
+* XSC PlanSubcomponentPortEndpoint objects, parsed from
+* the descriptor files, to the corresponding CORBA IDL type.
+*
+*/
+class Config_Handlers_Export PSPE_Handler
+{
+public:
+static void sub_component_port_endpoints (
+const PlanConnectionDescription &src,
+::Deployment::PlanSubcomponentPortEndpoints &dest);
+
+static PlanSubcomponentPortEndpoint
+sub_component_port_endpoint (
+const Deployment::PlanSubcomponentPortEndpoint &src);
+
+private:
+static void sub_component_port_endpoint (
+const PlanSubcomponentPortEndpoint &src,
+::Deployment::PlanSubcomponentPortEndpoint &dest);
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_PSPE_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
new file mode 100644
index 00000000000..ec3bb20e539
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.cpp
@@ -0,0 +1,271 @@
+// $Id$
+
+#include "Package_Handlers/CAD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "cid.hpp"
+#include "ciao/DeploymentC.h"
+#include "Req_Handler.h"
+#include "CEPE_Handler.h"
+#include "ERE_Handler.h"
+#include "Utils/Exceptions.h"
+
+#include "Package_Handlers/SID_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+ namespace
+ {
+ struct SPE_Handler
+ {
+ static void handle_spe (const SubcomponentPortEndpoint &desc,
+ ::Deployment::SubcomponentPortEndpoint &toconfig)
+ {
+ CIAO_TRACE("SPE_Handler::get_spe");
+
+ toconfig.portName = desc.portName ().c_str ();
+
+ ACE_CString str (desc.instance ().id ().c_str ());
+ CORBA::ULong pos (0);
+
+ SID_Handler::IDREF.find_ref (str, pos);
+ toconfig.instanceRef = pos;
+ }
+
+ static SubcomponentPortEndpoint
+ get_spe (const ::Deployment::SubcomponentPortEndpoint &src)
+ {
+ CIAO_TRACE("SPE_Handler::get_spe - reverse");
+ ACE_CString str;
+ SID_Handler::IDREF.find_ref (src.instanceRef, str);
+
+ return SubcomponentPortEndpoint (src.portName.in (),
+ str.c_str ());
+ }
+ };
+
+ typedef Sequence_Handler < SubcomponentPortEndpoint,
+ ::Deployment::SubcomponentPortEndpoints,
+ ::Deployment::SubcomponentPortEndpoint,
+ SPE_Handler::handle_spe > SPE_Functor;
+
+ struct ACD_Handler
+ {
+ static void handle_acd (const AssemblyConnectionDescription &desc,
+ ::Deployment::AssemblyConnectionDescription &toconfig)
+ {
+ CIAO_TRACE("ACD_Handler::get_acd");
+
+ toconfig.name = desc.name ().c_str ();
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ Requirement_Functor (toconfig.deployRequirement));
+
+ toconfig.internalEndpoint.length (desc.count_internalEndpoint ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (SPE_Handler::handle_spe,
+ desc.begin_internalEndpoint (),
+ toconfig.internalEndpoint);
+ std::for_each (desc.begin_internalEndpoint (),
+ desc.end_internalEndpoint (),
+ SPE_Functor (toconfig.internalEndpoint));
+
+ toconfig.externalEndpoint.length (desc.count_externalEndpoint ());
+ std::for_each (desc.begin_externalEndpoint (),
+ desc.end_externalEndpoint (),
+ CEPE_Functor (toconfig.externalEndpoint));
+
+ toconfig.externalReference.length (desc.count_externalReference ());
+ std::for_each (desc.begin_externalReference (),
+ desc.end_externalReference (),
+ ERE_Functor (toconfig.externalReference));
+
+ }
+
+ static AssemblyConnectionDescription
+ get_acd (const ::Deployment::AssemblyConnectionDescription &src)
+ {
+ CIAO_TRACE("ACD_Handler::get_acd - reverse");
+
+ AssemblyConnectionDescription retval (src.name.in ());
+
+ for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
+ retval.add_deployRequirement
+ (Req_Handler::get_requirement (src.deployRequirement[i]));
+
+ for (CORBA::ULong i = 0; i < src.internalEndpoint.length (); ++i)
+ retval.add_internalEndpoint
+ (SPE_Handler::get_spe (src.internalEndpoint[i]));
+
+ for (CORBA::ULong i = 0; i < src.externalEndpoint.length (); ++i)
+ retval.add_externalEndpoint
+ (CEPE_Handler::external_port_endpoint (src.externalEndpoint[i]));
+
+ for (CORBA::ULong i = 0; i < src.externalReference.length (); ++i)
+ retval.add_externalReference
+ (ERE_Handler::external_ref_endpoint (src.externalReference[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < AssemblyConnectionDescription,
+ ::Deployment::AssemblyConnectionDescriptions,
+ ::Deployment::AssemblyConnectionDescription,
+ ACD_Handler::handle_acd > ACD_Functor;
+
+
+ struct SPR_Handler
+ {
+ static void handle_spr (const SubcomponentPropertyReference &desc,
+ ::Deployment::SubcomponentPropertyReference &toconfig)
+ {
+ CIAO_TRACE("SPR_Handler::get_spr");
+
+ toconfig.propertyName = desc.propertyName ().c_str ();
+
+ ACE_CString str (desc.instance ().id ().c_str ());
+ CORBA::ULong pos (0);
+
+ SID_Handler::IDREF.find_ref (str, pos);
+ toconfig.instanceRef = pos;
+
+ }
+
+ static SubcomponentPropertyReference
+ get_spr (const ::Deployment::SubcomponentPropertyReference &src)
+ {
+ CIAO_TRACE("SPR_HAndler::get_spr - reverse");
+ ACE_CString str;
+ SID_Handler::IDREF.find_ref (src.instanceRef, str);
+
+ return SubcomponentPropertyReference (src.propertyName.in (),
+ str.c_str ());
+ }
+
+ };
+
+ typedef Sequence_Handler < SubcomponentPropertyReference,
+ ::Deployment::SubcomponentPropertyReferences,
+ ::Deployment::SubcomponentPropertyReference,
+ SPR_Handler::handle_spr > SPR_Functor;
+
+ struct APM_Handler
+ {
+ static void handle_apm (const AssemblyPropertyMapping &desc,
+ ::Deployment::AssemblyPropertyMapping &toconfig)
+ {
+ CIAO_TRACE("APM_Handler::get_apm");
+
+ toconfig.name = desc.name ().c_str ();
+ toconfig.externalName = desc.externalName ().c_str ();
+
+ toconfig.delegatesTo.length (desc.count_delegatesTo ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (SPR_Handler::handle_spr,
+ desc.begin_delegatesTo (),
+ toconfig.delegatesTo);
+ std::for_each (desc.begin_delegatesTo (),
+ desc.end_delegatesTo (),
+ SPR_Functor (toconfig.delegatesTo));
+ }
+
+ static AssemblyPropertyMapping
+ get_apm (const ::Deployment::AssemblyPropertyMapping &src)
+ {
+ CIAO_TRACE("APM_Handler::get_apm - reverse");
+
+ AssemblyPropertyMapping retval (src.name.in (),
+ src.externalName.in ());
+
+ for (CORBA::ULong i = 0; i < src.delegatesTo.length (); ++i)
+ retval.add_delegatesTo (SPR_Handler::get_spr (src.delegatesTo[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < AssemblyPropertyMapping,
+ ::Deployment::AssemblyPropertyMappings,
+ ::Deployment::AssemblyPropertyMapping,
+ APM_Handler::handle_apm > APM_Functor;
+ }
+
+
+
+ void
+ CAD_Handler::component_assem_descr (const ComponentAssemblyDescription &desc,
+ ::Deployment::ComponentAssemblyDescription &toconfig)
+ {
+ CIAO_TRACE("CAD_Handler::component_assem_descr");
+
+ toconfig.instance.length (desc.count_instance ());
+ std::for_each (desc.begin_instance (),
+ desc.end_instance (),
+ SID_Functor (toconfig.instance));
+
+ /* @@ MAJO: Implement Locality */
+
+ toconfig.connection.length (desc.count_connection ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (ACD_Handler::handle_acd,
+ desc.begin_connection (),
+ toconfig.connection);
+ std::for_each (desc.begin_connection (),
+ desc.end_connection (),
+ ACD_Functor (toconfig.connection));
+
+ toconfig.externalProperty.length (desc.count_externalProperty ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (APM_Handler::handle_apm,
+ desc.begin_externalProperty (),
+ toconfig.externalProperty);
+ std::for_each (desc.begin_externalProperty (),
+ desc.end_externalProperty (),
+ APM_Functor (toconfig.externalProperty));
+ }
+
+ ComponentAssemblyDescription
+ CAD_Handler::component_assem_descr (const ::Deployment::ComponentAssemblyDescription &src)
+ {
+ CIAO_TRACE("CAD_Handler::component_assem_descr - reverse");
+
+ ComponentAssemblyDescription retval;
+
+ for (CORBA::ULong i = 0; i < src.instance.length (); ++i)
+ retval.add_instance
+ (SID_Handler::sub_comp_inst_descr (src.instance[i]));
+
+ for (CORBA::ULong i = 0; i < src.connection.length (); ++i)
+ retval.add_connection (ACD_Handler::get_acd (src.connection[i]));
+
+ for (CORBA::ULong i = 0; i < src.externalProperty.length (); ++i)
+ retval.add_externalProperty (APM_Handler::get_apm (src.externalProperty[i]));
+
+ return retval;
+
+ }
+
+ ComponentAssemblyDescription *
+ CAD_Handler::resolve_cad (const char *)
+ {
+ /* xercesc::DOMDocument *dom =
+ this->xml_helper_->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for CAD");
+
+ try {
+ return new ComponentAssemblyDescription
+ (componentAssemblyDescription (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for CAD");
+ */
+ return 0;
+ }
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.h
new file mode 100644
index 00000000000..b4c0b790fc0
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CAD_Handler.h
@@ -0,0 +1,59 @@
+/**
+ * @file CAD_Handler.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+#ifndef CIAO_PACKAGING_CAD_HANDLER_H
+#define CIAO_PACKAGING_CAD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "ciao/DeploymentC.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ComponentAssemblyDescription;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentAssemblyDescription;
+
+ namespace Packaging
+ {
+
+ /**
+ * @class CAD_Handler
+ *
+ * @brief Handler class for ComponentAssemblyDescription.
+ */
+ class Packaging_Handlers_Export CAD_Handler
+ {
+ public:
+ static void component_assem_descr (const ComponentAssemblyDescription &desc,
+ ::Deployment::ComponentAssemblyDescription &toconfig);
+
+ static ComponentAssemblyDescription
+ component_assem_descr (const ::Deployment::ComponentAssemblyDescription &src);
+
+ private:
+ static ComponentAssemblyDescription * resolve_cad (const char *uri);
+ };
+
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_PACKAGING_CAD_HANDLER_H */
+
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
new file mode 100644
index 00000000000..d5e39d485da
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.cpp
@@ -0,0 +1,390 @@
+// $Id$
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "Package_Handlers/CID_Handler.h"
+#include "Package_Handlers/CPD_Handler.h"
+#include "Package_Handlers/IAD_Handler.h"
+#include "Package_Handlers/CAD_Handler.h"
+#include "Package_Handlers/Comp_Intf_Descr_Handler.h"
+#include "Package_Handlers/NIA_Handler.h"
+#include "SatisfierProperty_Handler.h"
+#include "Req_Handler.h"
+
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Utils/XML_Helper.h"
+#include "Utils/Exceptions.h"
+
+#include "Deployment.hpp"
+#include "Property_Handler.h"
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+
+ IDREF_Base<CORBA::ULong> CID_Handler::IDREF;
+
+ struct Capability_Handler
+ {
+ static void handle_capability (const Capability &desc,
+ ::Deployment::Capability &toconfig)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability");
+
+ toconfig.name = desc.name ().c_str ();
+
+ toconfig.resourceType.length (desc.count_resourceType ());
+ std::for_each (desc.begin_resourceType (),
+ desc.end_resourceType (),
+ String_Seq_Functor (toconfig.resourceType));
+
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ SatisfierProperty_Functor (toconfig.property));
+ }
+
+ static Capability get_capability (const ::Deployment::Capability &src)
+ {
+ CIAO_TRACE ("Capability_Handler::get_capability - reverse");
+
+ Capability retval (src.name.in ());
+
+ for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
+ retval.add_resourceType (src.resourceType[i]);
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (SatisfierProperty_Handler::get_sat_property (src.property[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < Capability,
+ ::Deployment::Capabilities,
+ ::Deployment::Capability,
+ Capability_Handler::handle_capability > Capability_Functor;
+
+ struct IR_Handler
+ {
+ static void handle_ir (const ImplementationRequirement &desc,
+ ::Deployment::ImplementationRequirement &toconfig)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir");
+
+ if (desc.resourceUsage_p ())
+ {
+ switch (desc.resourceUsage ().integral ())
+ {
+ case ResourceUsageKind::None_l:
+ toconfig.resourceUsage = Deployment::None;
+ break;
+
+ case ResourceUsageKind::InstanceUsesResource_l:
+ toconfig.resourceUsage = Deployment::InstanceUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesInstance_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesInstance;
+ break;
+
+ case ResourceUsageKind::PortUsesResource_l:
+ toconfig.resourceUsage = Deployment::PortUsesResource;
+ break;
+
+ case ResourceUsageKind::ResourceUsesPort_l:
+ toconfig.resourceUsage = Deployment::ResourceUsesPort;
+ break;
+
+ default:
+ throw Config_Error (desc.name (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+ }
+
+ if (desc.resourcePort_p ())
+ toconfig.resourcePort = desc.resourcePort ().c_str ();
+
+ if (desc.componentPort_p ())
+ toconfig.componentPort = desc.componentPort ().c_str ();
+
+ toconfig.resourceType = desc.resourceType ().c_str ();
+ toconfig.name = desc.name ().c_str ();
+
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property ));
+ }
+
+ static ImplementationRequirement
+ get_ir (const ::Deployment::ImplementationRequirement &src)
+ {
+ CIAO_TRACE ("IR_Handler::get_ir - reverse");
+
+ ImplementationRequirement retval (src.resourceType.in (),
+ src.name.in ());
+
+ if (src.resourceUsage.length () == 1)
+ switch (src.resourceUsage[0])
+ {
+ case Deployment::None:
+ retval.resourceUsage (ResourceUsageKind::None);
+ break;
+
+ case Deployment::InstanceUsesResource:
+ retval.resourceUsage (ResourceUsageKind::InstanceUsesResource);
+ break;
+
+ case Deployment::ResourceUsesInstance:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesInstance);
+ break;
+
+ case Deployment::PortUsesResource:
+ retval.resourceUsage (ResourceUsageKind::PortUsesResource);
+ break;
+
+ case Deployment::ResourceUsesPort:
+ retval.resourceUsage (ResourceUsageKind::ResourceUsesPort);
+ break;
+
+ default:
+ throw Config_Error (src.name.in (),
+ "Unknown ResourceUsageKind.");
+ break;
+ }
+
+ retval.resourcePort (src.resourcePort.in ());
+
+ retval.componentPort (src.componentPort.in ());
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (Property_Handler::get_property (src.property[i]));
+
+ return retval;
+ }
+ };
+
+ typedef Sequence_Handler < ImplementationRequirement,
+ ::Deployment::ImplementationRequirements,
+ ::Deployment::ImplementationRequirement,
+ IR_Handler::handle_ir > IR_Functor;
+
+ struct MID_Handler
+ {
+ static void handle_mid (const MonolithicImplementationDescription &desc,
+ ::Deployment::MonolithicImplementationDescription &toconfig)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid");
+
+ toconfig.nodeExecParameter.length (desc.count_nodeExecParameter ());
+ std::for_each (desc.begin_nodeExecParameter (),
+ desc.end_nodeExecParameter (),
+ Property_Functor (toconfig.nodeExecParameter));
+
+ toconfig.componentExecParameter.length (desc.count_componentExecParameter ());
+ std::for_each (desc.begin_componentExecParameter (),
+ desc.end_componentExecParameter (),
+ Property_Functor (toconfig.componentExecParameter));
+
+ toconfig.deployRequirement.length (desc.count_deployRequirement ());
+ while (0)
+ {
+ IR_Handler::handle_ir (*desc.begin_deployRequirement (),
+ toconfig.deployRequirement[0]);
+ }
+ std::for_each (desc.begin_deployRequirement (),
+ desc.end_deployRequirement (),
+ IR_Functor (toconfig.deployRequirement));
+
+ toconfig.primaryArtifact.length (desc.count_primaryArtifact ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia,
+ desc.begin_primaryArtifact (),
+ toconfig.primaryArtifact);
+ std::for_each (desc.begin_primaryArtifact (),
+ desc.end_primaryArtifact (),
+ NIA_Functor (toconfig.primaryArtifact));
+ }
+
+ static MonolithicImplementationDescription
+ get_mid (const ::Deployment::MonolithicImplementationDescription &src)
+ {
+ CIAO_TRACE ("MID_Handler::get_mid - reverse");
+
+ MonolithicImplementationDescription retval;
+
+ for (CORBA::ULong i = 0; i < src.nodeExecParameter.length (); ++i)
+ retval.add_nodeExecParameter
+ (Property_Handler::get_property (src.nodeExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.componentExecParameter.length (); ++i)
+ retval.add_componentExecParameter
+ (Property_Handler::get_property (src.componentExecParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
+ retval.add_deployRequirement
+ (IR_Handler::get_ir (src.deployRequirement[i]));
+
+ for (CORBA::ULong i = 0; i < src.primaryArtifact.length (); ++i)
+ retval.add_primaryArtifact
+ (NIA_Handler::get_nia (src.primaryArtifact[i]));
+
+ return retval;
+ }
+
+ };
+
+ typedef Sequence_Handler < MonolithicImplementationDescription,
+ ::Deployment::MonolithicImplementationDescriptions,
+ ::Deployment::MonolithicImplementationDescription,
+ MID_Handler::handle_mid > MID_Functor;
+
+
+
+ void
+ CID_Handler::component_impl_descr (
+ const ComponentImplementationDescription &desc,
+ ::Deployment::ComponentImplementationDescription &toconfig)
+ {
+ CIAO_TRACE ("CID_Handler::component_impl_descr");
+
+ const ComponentImplementationDescription *cid = 0;
+ std::auto_ptr <ComponentImplementationDescription> xsc_cid;
+
+ if (desc.href_p ())
+ {
+ xsc_cid.reset (CID_Handler::resolve_cid (desc.href ().c_str ()));
+ cid = xsc_cid.get ();
+ }
+ else
+ cid = &desc;
+
+ if (cid->label_p ())
+ toconfig.label = cid->label ().c_str ();
+
+ if (cid->UUID_p ())
+ toconfig.UUID = cid->UUID ().c_str ();
+
+ if (cid->implements_p ())
+ { // MAJO: We should be able to assume this exists, fix broken interpeters..
+ Comp_Intf_Descr_Handler::comp_intf_descr (cid->implements (),
+ toconfig.implements);
+ }
+
+ if (cid->assemblyImpl_p ())
+ {
+ toconfig.assemblyImpl.length (1);
+ CAD_Handler::component_assem_descr (cid->assemblyImpl (),
+ toconfig.assemblyImpl[0]);
+ }
+ else if (cid->monolithicImpl_p ())
+ {
+ toconfig.monolithicImpl.length (1);
+ MID_Handler::handle_mid (cid->monolithicImpl (),
+ toconfig.monolithicImpl[0]);
+ }
+ else
+ throw Plan_Error ("ComponentImplementationDescription must have either assemblyImpl or monolithicImpl");
+
+ // configProperty
+ toconfig.configProperty.length (cid->count_configProperty ());
+ std::for_each (cid->begin_configProperty (),
+ cid->end_configProperty (),
+ Property_Functor (toconfig.configProperty));
+
+ // capability
+ toconfig.capability.length (cid->count_capability ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (Capability_Handler::handle_capability,
+ cid->begin_capability (),
+ toconfig.capability);
+ std::for_each (cid->begin_capability (),
+ cid->end_capability (),
+ Capability_Functor (toconfig.capability));
+
+ // dependsOn
+ toconfig.dependsOn.length (cid->count_dependsOn ());
+ CORBA::ULong pos = 0;
+ for (ComponentImplementationDescription::dependsOn_const_iterator i = cid->begin_dependsOn ();
+ i != cid->end_dependsOn ();
+ ++i)
+ toconfig.dependsOn[pos++].requiredType = i->requiredType ().c_str ();
+
+ // infoProperty
+ toconfig.infoProperty.length (cid->count_infoProperty ());
+ std::for_each (cid->begin_infoProperty (),
+ cid->end_infoProperty (),
+ Property_Functor (toconfig.infoProperty));
+
+ }
+
+ ComponentImplementationDescription
+ CID_Handler::component_impl_descr (const Deployment::ComponentImplementationDescription& src)
+ {
+ CIAO_TRACE ("CID_Handler::component_impl_descr - reverse");
+
+ ComponentImplementationDescription retval;
+
+ retval.label (src.label.in ());
+ retval.UUID (src.UUID.in ());
+
+ {
+ retval.implements (Comp_Intf_Descr_Handler::comp_intf_descr (src.implements));
+ }
+
+ if (src.assemblyImpl.length () == 1)
+ {
+ retval.assemblyImpl (CAD_Handler::component_assem_descr (src.assemblyImpl[0]));
+ }
+ else if (src.monolithicImpl.length () == 1)
+ {
+ retval.monolithicImpl (MID_Handler::get_mid (src.monolithicImpl[0]));
+ }
+ else
+ ACE_DEBUG ((LM_WARNING, "Warning: ComponentImplementationDescription lacks "
+ "either a required assemblyImpl or monolithicImpl, or has too many"));
+
+ for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i)
+ {
+ retval.add_configProperty (
+ Property_Handler::get_property (src.configProperty[i]));
+ }
+
+ for (CORBA::ULong i = 0; i < src.dependsOn.length (); ++i)
+ {
+ retval.add_dependsOn (ImplementationDependency (src.dependsOn[i].requiredType.in ()));
+ }
+
+ for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i)
+ {
+ retval.add_infoProperty (
+ Property_Handler::get_property (src.infoProperty[i]));
+ }
+
+ return retval;
+ }
+
+ ComponentImplementationDescription *
+ CID_Handler::resolve_cid (const char *uri)
+ {
+ CIAO_TRACE ("CID_Handler::resolve_cid");
+
+ xercesc::DOMDocument *dom = XML_HELPER->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for CID");
+
+ try {
+ return new ComponentImplementationDescription
+ (componentImplementationDescription (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for CID");
+ }
+ }
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.h
new file mode 100644
index 00000000000..ef1263ad139
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CID_Handler.h
@@ -0,0 +1,67 @@
+/**
+ * @file CID_Handler.h
+ *
+ * $Id$
+ *
+ * @author William Otte <wotte@dre.vanderbilt.edu
+ */
+
+#ifndef CIAO_PACKAGING_CID_HANDLER_H
+#define CIAO_PACKAGING_CID_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "IDREF_Base.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+#include "tao/Basic_Types.h"
+
+namespace Deployment
+{
+ struct ComponentImplementationDescription;
+}
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentImplementationDescription;
+
+ namespace Packaging
+ {
+
+ /**
+ * @class CID_Handler
+ *
+ * @brief Handler class for <CCMComponentImplementationDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Packaging_Handlers_Export CID_Handler
+ {
+
+ public:
+ /// Maps the values from the XSC object
+ /// <ComponentImplementationDescription> to the CORBA IDL type
+ /// <Deployment::ComponentImplementationDescription>.
+ static void component_impl_descr (const ComponentImplementationDescription &desc,
+ ::Deployment::ComponentImplementationDescription &toconfig);
+
+ static IDREF_Base<CORBA::ULong> IDREF;
+
+ static ComponentImplementationDescription
+ component_impl_descr (const Deployment::ComponentImplementationDescription& src);
+
+ private:
+
+ static ComponentImplementationDescription * resolve_cid (const char *uri);
+ };
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_PACKAGING_CID_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
new file mode 100644
index 00000000000..a45c92e8465
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.cpp
@@ -0,0 +1,162 @@
+// $Id$
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "Package_Handlers/CPD_Handler.h"
+#include "Package_Handlers/CID_Handler.h"
+#include "Package_Handlers/Comp_Intf_Descr_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "Deployment.hpp"
+#include "Utils/Exceptions.h"
+#include "Property_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+ namespace
+ {
+ struct PCI_Handler
+ {
+ static void handle_pci (const PackagedComponentImplementation &desc,
+ ::Deployment::PackagedComponentImplementation &toconfig)
+ {
+ CIAO_TRACE ("PCI_Handler::get_pci");
+ toconfig.name = desc.name ().c_str ();
+
+ CID_Handler::component_impl_descr (desc.referencedImplementation (),
+ toconfig.referencedImplementation);
+ }
+
+ static PackagedComponentImplementation
+ get_pci (const ::Deployment::PackagedComponentImplementation &src)
+ {
+ CIAO_TRACE ("PCI_Handler::get_pci - reverse");
+ return PackagedComponentImplementation (src.name.in (),
+ CID_Handler::component_impl_descr (src.referencedImplementation));
+ }
+ };
+
+ typedef Sequence_Handler < PackagedComponentImplementation,
+ ::Deployment::PackagedComponentImplementations,
+ ::Deployment::PackagedComponentImplementation,
+ PCI_Handler::handle_pci > PCI_Functor;
+ }
+
+ void
+ CPD_Handler::handle_component_package_descr (const ComponentPackageDescription &desc,
+ ::Deployment::ComponentPackageDescription &toconfig)
+ {
+ CIAO_TRACE ("CPD_Handler::component_package_descr");
+
+ auto_ptr < ComponentPackageDescription > xsc_cpd;
+ const ComponentPackageDescription *cpd = 0;
+
+ if (desc.href_p ())
+ {
+ xsc_cpd.reset (CPD_Handler::resolve_cpd (desc.href ().c_str ()));
+ cpd = xsc_cpd.get ();
+ }
+ else
+ cpd = &desc;
+
+ if (cpd->label_p ())
+ toconfig.label = cpd->label ().c_str ();
+
+ if (cpd->UUID_p ())
+ toconfig.UUID = cpd->UUID ().c_str ();
+
+ // CID
+ if (cpd->realizes_p ())
+ Comp_Intf_Descr_Handler::comp_intf_descr (cpd->realizes (),
+ toconfig.realizes);
+
+ // Config Properties
+ toconfig.configProperty.length (desc.count_configProperty ());
+ std::for_each (cpd->begin_infoProperty (),
+ cpd->end_infoProperty (),
+ Property_Functor (toconfig.configProperty));
+
+ // ACE_ERROR ((LM_ERROR, "***** Count of PCIs is %i\n",
+ // cpd->count_implementation ()));
+
+ // Packaged Component Implementations
+ toconfig.implementation.length ( cpd->count_implementation ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (PCI_Handler::handle_pci,
+ cpd->begin_implementation (),
+ toconfig.implementation);
+ std::for_each (cpd->begin_implementation (),
+ cpd->end_implementation (),
+ PCI_Functor (toconfig.implementation));
+
+ // Info Properties
+ toconfig.infoProperty.length (cpd->count_infoProperty ());
+ std::for_each (cpd->begin_infoProperty (),
+ cpd->end_infoProperty (),
+ Property_Functor (toconfig.infoProperty));
+ }
+
+ ComponentPackageDescription
+ CPD_Handler::component_package_descr (const Deployment::ComponentPackageDescription& src)
+ {
+ CIAO_TRACE ("CPD_Handler::component_package_descr - reverse");
+ ComponentPackageDescription toconfig;
+
+ if (src.label.in () != 0)
+ toconfig.label (src.label.in ());
+
+ if (src.UUID.in () != 0)
+ toconfig.UUID (src.UUID.in ());
+
+ {
+ toconfig.realizes
+ (Comp_Intf_Descr_Handler::comp_intf_descr (src.realizes));
+ }
+
+ for (size_t i = 0; i < src.configProperty.length (); ++i)
+ {
+ toconfig.add_configProperty (
+ Property_Handler::get_property (src.configProperty[i]));
+ }
+
+ { // Packaged Component Implementations
+ for (size_t i = 0; i < src.implementation.length (); ++i)
+ toconfig.add_implementation (
+ PCI_Handler::get_pci (src.implementation[i]));
+ }
+
+ for (size_t i = 0; i < src.infoProperty.length (); ++i)
+ {
+ toconfig.add_infoProperty (
+ Property_Handler::get_property (src.infoProperty[i]));
+ }
+
+ return toconfig;
+ }
+
+ ComponentPackageDescription * CPD_Handler::resolve_cpd (const char *uri)
+ {
+ CIAO_TRACE ("CPD_Handler::resolve_cpd");
+ if (!XML_HELPER->is_initialized ())
+ return 0;
+
+ xercesc::DOMDocument* dom =
+ XML_HELPER->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for component package description");
+
+ try {
+ //ACE_ERROR ((LM_ERROR, "Creating new CPD XSC Object\n"));
+ return new ComponentPackageDescription (componentPackageDescription (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for CID");
+ }
+ }
+ }
+
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h
new file mode 100644
index 00000000000..9535d24eef2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/CPD_Handler.h
@@ -0,0 +1,74 @@
+//================================================
+/**
+ * @file CPD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include <memory>
+#include "Utils/XML_Helper.h"
+#include "Utils/Functors.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+
+namespace Deployment
+{
+ struct ComponentPackageDescription;
+ class ComponentPackageDescriptions;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentPackageDescription;
+
+ namespace Packaging
+ {
+
+ /*
+ * @class CPD_Handler
+ *
+ * @brief Handler class for <CCMComponentPackageDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Packaging_Handlers_Export CPD_Handler
+ {
+
+ public:
+ /// Maps the values from the XSC object
+ /// <ComponentPackageDescription> to the CORBA IDL type
+ /// <Deployment::ComponentPackageDescription>.
+ static void handle_component_package_descr (const ComponentPackageDescription &desc,
+ ::Deployment::ComponentPackageDescription &toconfig);
+
+ static ComponentPackageDescription
+ component_package_descr (const Deployment::ComponentPackageDescription& src);
+ private:
+ static ComponentPackageDescription * resolve_cpd (const char *uri);
+
+ };
+
+ typedef Sequence_Handler < ComponentPackageDescription,
+ ::Deployment::ComponentPackageDescriptions,
+ ::Deployment::ComponentPackageDescription,
+ CPD_Handler::handle_component_package_descr > CPD_Functor;
+
+ }
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
new file mode 100644
index 00000000000..801519dc987
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.cpp
@@ -0,0 +1,165 @@
+// $Id$
+#include "Comp_Intf_Descr_Handler.h"
+
+#include "Utils/XML_Helper.h"
+#include "Utils/Exceptions.h"
+#include "Utils/Functors.h"
+#include "DataType_Handler.h"
+#include "Property_Handler.h"
+#include "Deployment.hpp"
+#include "Package_Handlers/CPD_Handler.h"
+#include "tools/Config_Handlers/CPD_Handler.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+ struct Comp_Prop_Handler
+ {
+ static void handle_cpd (const ComponentPropertyDescription &desc,
+ ::Deployment::ComponentPropertyDescription &toconfig)
+ {
+ CIAO_TRACE ("Comp_Prop_Handler::get_cpd");
+
+ toconfig.name = desc.name ().c_str ();
+ DataType_Handler::data_type (desc.type (),
+ toconfig.type);
+ }
+
+ static ComponentPropertyDescription
+ get_cpd (const ::Deployment::ComponentPropertyDescription &src)
+ {
+ CIAO_TRACE ("Comp_Prop_Handler::get_cpd - reverse");
+
+ return ComponentPropertyDescription (src.name.in (),
+ DataType_Handler::data_type (src.type));
+ }
+
+ };
+
+ typedef Sequence_Handler < ComponentPropertyDescription,
+ ::Deployment::ComponentPropertyDescriptions,
+ ::Deployment::ComponentPropertyDescription,
+ Comp_Prop_Handler::handle_cpd > Comp_Prop_Functor;
+
+
+ void
+ Comp_Intf_Descr_Handler::comp_intf_descr (
+ const ComponentInterfaceDescription &desc,
+ ::Deployment::ComponentInterfaceDescription &toconfig)
+ {
+ CIAO_TRACE ("Comp_Intf_Descr_Handler::comp_intf_descr");
+
+ const ComponentInterfaceDescription *cid = 0;
+ std::auto_ptr <ComponentInterfaceDescription> safe_cid;
+
+ if (desc.href_p ())
+ {
+ safe_cid.reset (Comp_Intf_Descr_Handler::resolve_cid (desc.href ().c_str ()));
+ cid = safe_cid.get ();
+ }
+ else
+ cid = &desc;
+
+ if (cid->label_p ())
+ toconfig.label = cid->label ().c_str ();
+
+ if (cid->UUID_p ())
+ toconfig.UUID = cid->UUID ().c_str ();
+
+ // MAJO: SpecificType should be required.
+ if (cid->specificType_p ())
+ toconfig.specificType = cid->specificType ().c_str ();
+
+ toconfig.supportedType.length (cid->count_supportedType ());
+ std::for_each (cid->begin_supportedType (),
+ cid->end_supportedType (),
+ String_Seq_Functor (toconfig.supportedType));
+
+ toconfig.idlFile.length (cid->count_idlFile ());
+ std::for_each (cid->begin_idlFile (),
+ cid->end_idlFile (),
+ String_Seq_Functor (toconfig.idlFile));
+
+ toconfig.configProperty.length (cid->count_configProperty ());
+ std::for_each (cid->begin_configProperty (),
+ cid->end_configProperty (),
+ Property_Functor (toconfig.configProperty));
+
+ toconfig.port.length (cid->count_port ());
+ std::for_each (cid->begin_port (),
+ cid->end_port (),
+ CIAO::Config_Handlers::CPD_Functor (toconfig.port));
+
+ toconfig.property.length (cid->count_property ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (Comp_Prop_Handler::handle_cpd,
+ cid->begin_property (),
+ toconfig.property);
+ std::for_each (cid->begin_property (),
+ cid->end_property (),
+ Comp_Prop_Functor (toconfig.property));
+
+ toconfig.infoProperty.length (cid->count_infoProperty ());
+ std::for_each (cid->begin_infoProperty (),
+ cid->end_infoProperty (),
+ Property_Functor (toconfig.infoProperty));
+ }
+
+
+ ComponentInterfaceDescription
+ Comp_Intf_Descr_Handler::comp_intf_descr (
+ const ::Deployment::ComponentInterfaceDescription &src)
+ {
+ CIAO_TRACE ("Comp_Intf_Descr_Handler::comp_intf_descr - reverse");
+ ComponentInterfaceDescription retval;
+
+ retval.label (src.label.in ());
+ retval.UUID (src.UUID.in ());
+ retval.specificType (src.specificType.in ());
+
+ for (CORBA::ULong i = 0; i < src.supportedType.length (); ++i)
+ retval.add_supportedType (src.supportedType[i]);
+
+ for (CORBA::ULong i = 0; i < src.idlFile.length (); ++i)
+ retval.add_idlFile (src.idlFile[i]);
+
+ for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i)
+ retval.add_configProperty (
+ Property_Handler::get_property (src.configProperty[i]));
+
+ for (CORBA::ULong i = 0; i < src.port.length (); ++i)
+ retval.add_port
+ (CIAO::Config_Handlers::CPD_Handler::component_port_description (src.port[i]));
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ retval.add_property (Comp_Prop_Handler::get_cpd (src.property[i]));
+
+ for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i)
+ retval.add_infoProperty (
+ Property_Handler::get_property (src.infoProperty[i]));
+
+ return retval;
+ }
+
+ ComponentInterfaceDescription *
+ Comp_Intf_Descr_Handler::resolve_cid (const char *uri)
+ {
+ CIAO_TRACE ("Comp_Intf_Descr_Handler::resolve_cid");
+
+ xercesc::DOMDocument *dom = XML_HELPER->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for Component Interface Description.");
+
+ try {
+ return new ComponentInterfaceDescription
+ (componentInterfaceDescription (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for Component Interface Description");
+ }
+ }
+ }
+ }}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h
new file mode 100644
index 00000000000..e4eb2b0af58
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Comp_Intf_Descr_Handler.h
@@ -0,0 +1,54 @@
+/**
+ * @file Comp_Intf_Descr_Handler.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+#ifndef CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H
+#define CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "ciao/DeploymentC.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentInterfaceDescription;
+
+ namespace Packaging
+ {
+
+ /**
+ * @class Comp_Intf_Descr_Handler
+ *
+ * @brief Handler class for ComponentInterfaceDescription.
+ */
+ class Packaging_Handlers_Export Comp_Intf_Descr_Handler
+ {
+ public:
+ static void comp_intf_descr (const ComponentInterfaceDescription &descr,
+ ::Deployment::ComponentInterfaceDescription &toconfig);
+
+ static ComponentInterfaceDescription
+ comp_intf_descr (const ::Deployment::ComponentInterfaceDescription &src);
+
+ private:
+ static ComponentInterfaceDescription *resolve_cid (const char *uri);
+ };
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_PACKAGING_COMP_INTF_DESCR_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
new file mode 100644
index 00000000000..61c85827472
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.cpp
@@ -0,0 +1,124 @@
+// $Id$
+#include "Package_Handlers/IAD_Handler.h"
+#include "Package_Handlers/NIA_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "Property_Handler.h"
+#include "Req_Handler.h"
+#include "Utils/Functors.h"
+#include "Utils/Exceptions.h"
+#include "Utils/XML_Helper.h"
+
+#include "Deployment.hpp"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+
+ void
+ IAD_Handler::impl_artifact_descr (const ImplementationArtifactDescription &desc,
+ ::Deployment::ImplementationArtifactDescription &toconfig)
+ {
+ CIAO_TRACE ("IAD_Handler::impl_artifact_descr");
+
+ const ImplementationArtifactDescription *iad = 0;
+ std::auto_ptr <ImplementationArtifactDescription> safe_iad;
+
+ if (desc.href_p ())
+ {
+ safe_iad.reset (IAD_Handler::resolve_iad (desc.href ().c_str ()));
+ iad = safe_iad.get ();
+ }
+ else
+ iad = &desc;
+
+
+ if (iad->label_p ())
+ toconfig.label = iad->label ().c_str ();
+
+ if (iad->UUID_p ())
+ toconfig.UUID = iad->UUID ().c_str ();
+
+ toconfig.location.length (iad->count_location ());
+ std::for_each (iad->begin_location (),
+ iad->end_location (),
+ String_Seq_Functor (toconfig.location));
+
+ toconfig.dependsOn.length (iad->count_dependsOn ());
+ SEQ_HAND_GCC_BUG_WORKAROUND (NIA_Handler::handle_nia,
+ desc.begin_dependsOn (),
+ toconfig.dependsOn);
+ std::for_each (iad->begin_dependsOn (),
+ iad->end_dependsOn (),
+ NIA_Functor (toconfig.dependsOn));
+
+ toconfig.execParameter.length (iad->count_execParameter ());
+ std::for_each (iad->begin_execParameter (),
+ iad->end_execParameter (),
+ Property_Functor (toconfig.execParameter));
+
+ toconfig.infoProperty.length (iad->count_infoProperty ());
+ std::for_each (iad->begin_infoProperty (),
+ iad->end_infoProperty (),
+ Property_Functor (toconfig.infoProperty));
+
+ toconfig.deployRequirement.length (iad->count_deployRequirement ());
+ std::for_each (iad->begin_deployRequirement (),
+ iad->end_deployRequirement (),
+ Requirement_Functor (toconfig.deployRequirement ));
+ }
+
+ ImplementationArtifactDescription
+ IAD_Handler::impl_artifact_descr (const ::Deployment::ImplementationArtifactDescription &src)
+ {
+ CIAO_TRACE ("IAD_Handler::impl_artifact_descr - reverse");
+ ImplementationArtifactDescription retval;
+
+ retval.label (src.label.in ());
+ retval.UUID (src.UUID.in ());
+
+ for (CORBA::ULong i = 0; i < src.location.length (); ++i)
+ retval.add_location (src.location[i]);
+
+ for (CORBA::ULong i = 0; i < src.dependsOn.length (); ++i)
+ retval.add_dependsOn (NIA_Handler::get_nia (src.dependsOn[i]));
+
+ for (CORBA::ULong i = 0; i < src.execParameter.length (); ++i)
+ retval.add_execParameter
+ (Property_Handler::get_property (src.execParameter[i]));
+
+ for (CORBA::ULong i = 0; i < src.infoProperty.length (); ++i)
+ retval.add_infoProperty
+ (Property_Handler::get_property ( src.infoProperty[i]));
+
+ for (CORBA::ULong i = 0; i < src.deployRequirement.length (); ++i)
+ retval.add_deployRequirement
+ (Req_Handler::get_requirement (src.deployRequirement[i]));
+
+ return retval;
+ }
+
+ ImplementationArtifactDescription * IAD_Handler::resolve_iad (const char *uri)
+ {
+ CIAO_TRACE ("IAD_Handler::resolve_iad");
+
+ xercesc::DOMDocument *dom = XML_HELPER->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for IAD");
+
+ try {
+ return new ImplementationArtifactDescription
+ (implementationArtifactDescription (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for IAD");
+ }
+ }
+
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.h
new file mode 100644
index 00000000000..869dbe25a8a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/IAD_Handler.h
@@ -0,0 +1,66 @@
+//================================================
+/**
+ * @file IAD_Handler.h
+ *
+ * $Id$
+ *
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ImplementationArtifactDescription;
+ struct ImplementationArtifactDescriptions;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ImplementationArtifactDescription;
+ namespace Packaging
+ {
+ /*
+ * @class IAD_Handler
+ *
+ * @brief Handler class for <CCMImplementationArtifactDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Packaging_Handlers_Export IAD_Handler
+ {
+ public:
+ /// Maps the values from the XSC object
+ /// <ImplementationArtifactDescription> to the CORBA IDL type
+ /// <Deployment::ImplementationArtifactDescription>.
+ static void
+ impl_artifact_descr (const ImplementationArtifactDescription &desc,
+ ::Deployment::ImplementationArtifactDescription &toconfig);
+
+
+ static ImplementationArtifactDescription
+ impl_artifact_descr (const Deployment::ImplementationArtifactDescription& src);
+
+ static ImplementationArtifactDescription * resolve_iad (const char *uri);
+ };
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h
new file mode 100644
index 00000000000..2c4db4eddf2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/NIA_Handler.h
@@ -0,0 +1,65 @@
+/**
+ * @file NIA_Handler.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ * $Id$
+ */
+
+#ifndef CIAO_PACKAGING_NIA_HANDLER_H
+#define CIAO_PACKAGING_NIA_HANDLER_H
+
+#include /**/ "ace/pre.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+#include "Utils/Functors.h"
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "iad.hpp"
+
+namespace Deployment
+{
+ struct NamedImplementationArtifact;
+ class NamedImplementationArtifacts;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class NamedImplementationArtifact;
+
+ namespace Packaging
+ {
+ /**
+ * @class NIA_Handler
+ * @brief Handler class for NamedImplementationArtifact types.
+ */
+ class Packaging_Handlers_Export NIA_Handler
+ {
+ public:
+ static void handle_nia (const NamedImplementationArtifact &desc,
+ ::Deployment::NamedImplementationArtifact &toconfig)
+ {
+ toconfig.name = desc.name ().c_str ();
+ IAD_Handler::impl_artifact_descr (desc.referencedArtifact (),
+ toconfig.referencedArtifact);
+ }
+
+
+ static NamedImplementationArtifact
+ get_nia (const ::Deployment::NamedImplementationArtifact &src)
+ {
+ return NamedImplementationArtifact (src.name.in (),
+ IAD_Handler::impl_artifact_descr (src.referencedArtifact));
+ }
+
+ };
+
+ typedef Sequence_Handler < NamedImplementationArtifact,
+ ::Deployment::NamedImplementationArtifacts,
+ ::Deployment::NamedImplementationArtifact,
+ NIA_Handler::handle_nia > NIA_Functor;
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_PACKAGING_NIA_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
new file mode 100644
index 00000000000..6f0faebd255
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.cpp
@@ -0,0 +1,165 @@
+// $Id$
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "ciao/CIAO_common.h"
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "Utils/XML_Helper.h"
+#include "Utils/XercesString.h"
+#include "Utils/Exceptions.h"
+#include "Package_Handlers/PCD_Handler.h"
+#include "Package_Handlers/CPD_Handler.h"
+#include "toplevel.hpp"
+#include "Deployment.hpp"
+#include "Property_Handler.h"
+#include "Req_Handler.h"
+
+#include <memory>
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+ void
+ PCD_Handler::package_config (const ACE_TCHAR *uri,
+ ::Deployment::PackageConfiguration &toconfig)
+ {
+ XERCES_CPP_NAMESPACE::DOMDocument *dom = XML_HELPER->create_dom (uri);
+
+ if (dom == 0)
+ {
+ std::string error ("Unable to open file: ");
+ error += uri;
+ throw Parse_Error (error);
+ }
+
+ XStr root = dom->getDocumentElement ()->getTagName ();
+
+ if (root == XStr ("Deployment:topLevelPackageDescription"))
+ {
+ PackageConfiguration foo;
+ TopLevelPackageDescription tpd (foo);
+
+ tpd = topLevelPackageDescription (dom);
+
+ PCD_Handler::package_config (tpd.package (),
+ toconfig);
+
+ }
+ else if (root == XStr ("Deployment:packageConfiguration"))
+ {
+ PackageConfiguration pcd;
+ pcd = packageConfiguration (dom);
+ PCD_Handler::package_config (pcd, toconfig);
+ }
+ else
+ {
+ std::string error ("Invliad file passed to package_config, has base ");
+
+ char *croot = xercesc::XMLString::transcode (root);
+
+ error += croot;
+
+ delete [] croot;
+
+ throw Plan_Error ("Invalid file passed to package_config, had base");
+ }
+ }
+
+ void
+ PCD_Handler::package_config (const PackageConfiguration &desc,
+ ::Deployment::PackageConfiguration &toconfig)
+ {
+ CIAO_TRACE ("PCD_Handler::package_config");
+ std::auto_ptr < PackageConfiguration > xsc_pcd;
+
+ const PackageConfiguration *pcd;
+
+ if (desc.href_p ())
+ {
+ // Take ownership of the resolved pcd
+ xsc_pcd.reset (PCD_Handler:: resolve_package_config (desc.href ().c_str ()));
+ pcd = xsc_pcd.get ();
+ }
+ else
+ pcd = &desc;
+
+ if (pcd->label_p ())
+ toconfig.label =
+ pcd->label ().c_str ();
+
+ if (pcd->UUID_p ())
+ toconfig.UUID =
+ pcd->UUID ().c_str ();
+
+ if (pcd->basePackage_p ())
+ {
+ toconfig.basePackage.length (1);
+ CPD_Handler::handle_component_package_descr (pcd->basePackage (),
+ toconfig.basePackage [0]);
+ }
+
+ // @@ MAJO: Support other elements present here.
+
+ toconfig.configProperty.length (desc.count_configProperty ());
+ std::for_each (desc.begin_configProperty (),
+ desc.end_configProperty (),
+ Property_Functor (toconfig.configProperty));
+
+ toconfig.selectRequirement.length (desc.count_selectRequirement ());
+ std::for_each (desc.begin_selectRequirement (),
+ desc.end_selectRequirement (),
+ Requirement_Functor (toconfig.selectRequirement));
+
+ }
+
+ PackageConfiguration
+ PCD_Handler::package_config (const Deployment::PackageConfiguration& src)
+ {
+ CIAO_TRACE ("PCD_Handler::package_config - reverse");
+ PackageConfiguration pcd = PackageConfiguration ();
+
+ if (src.label.in () != 0)
+ pcd.label (src.label.in ());
+
+ if (src.UUID.in () != 0)
+ pcd.UUID (src.UUID.in ());
+
+ if (src.basePackage.length () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "5\n"));
+ pcd.basePackage (CPD_Handler::component_package_descr (src.basePackage[0]));
+ }
+
+ // @@ MAJO: Support other elements present here.
+ for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i)
+ pcd.add_configProperty (Property_Handler::get_property (src.configProperty[i]));
+
+ for (CORBA::ULong i = 0; i < src.selectRequirement.length (); ++i)
+ pcd.add_selectRequirement (Req_Handler::get_requirement (src.selectRequirement[i]));
+
+ return pcd;
+
+ }
+
+ PackageConfiguration * PCD_Handler::resolve_package_config (const char *uri)
+ {
+ xercesc::DOMDocument* dom =
+ XML_HELPER->create_dom (uri);
+
+ if (!dom)
+ throw Parse_Error ("Unable to create DOM for PackageConfiguration");
+
+ try {
+ return new PackageConfiguration (packageConfiguration (dom));
+ }
+ catch (...) {
+ throw Parse_Error ("Unable to create XSC structure for PackageConfiguration");
+ }
+
+ }
+
+
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.h
new file mode 100644
index 00000000000..be92a6871c0
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PCD_Handler.h
@@ -0,0 +1,69 @@
+//================================================
+/**
+ * @file PCD_Handler.h
+ *
+ * $Id$
+ *
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_PCD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PCD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Packaging_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct PackageConfiguration;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class PackageConfiguration;
+
+ namespace Packaging
+ {
+ /*
+ * @class PCD_Handler
+ *
+ * @brief Handler class for <CCMPackageConfiguration> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Packaging_Handlers_Export PCD_Handler
+ {
+
+ public:
+ static void package_config (const ACE_TCHAR *uri,
+ ::Deployment::PackageConfiguration &toconfig);
+
+ /// Maps the values from the XSC object
+ /// <PackageConfiguration> to the CORBA IDL type
+ /// <Deployment::PackageConfiguration>.
+ static void package_config (const PackageConfiguration &desc,
+ ::Deployment::PackageConfiguration &toconfig);
+
+ static PackageConfiguration package_config (const Deployment::PackageConfiguration& src);
+
+ private:
+ static PackageConfiguration *resolve_package_config (const char *uri);
+ };
+ }
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
new file mode 100644
index 00000000000..e265295d040
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.cpp
@@ -0,0 +1,75 @@
+// $Id$
+
+#include "STD_PC_Intf.h"
+#include "Utils/XML_Helper.h"
+#include "Deployment.hpp"
+#include "STD_PCD_Handler.h"
+#include "ciao/Packaging_DataC.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ STD_PC_Intf::STD_PC_Intf (const char *file)
+ {
+ if (!this->prepare_PC (file))
+ throw;
+ }
+
+ bool
+ STD_PC_Intf::prepare_PC (const char *file)
+ {
+ CIAO_TRACE("STD_PC_Intf::prepare_PC");
+
+ ACE_Auto_Ptr<XML_Helper> helper (new XML_Helper);
+
+ if (!helper->is_initialized ())
+ return false;
+
+ // parse the .pcd (PackageConfigurationDescription) file
+ xercesc::DOMDocument *dom =
+ helper->create_dom (file);
+
+ if (!dom)
+ return false;
+
+
+ PackageConfiguration pc =
+ packageConfiguration (dom);
+
+
+ Deployment::PackageConfiguration idl_pc;
+
+
+ STD_PCD_Handler pcd_handler (helper.get ());
+
+ pcd_handler.package_config (pc,
+ idl_pc);
+
+
+ Deployment::PackageConfiguration *p_idl_pc =
+ new Deployment::PackageConfiguration (idl_pc);
+
+ // let ACE_Auto_Ptr take over
+ this->idl_pc_.reset (p_idl_pc);
+
+ if (this->idl_pc_.get ())
+ return true;
+
+ return false;
+ }
+
+ ::Deployment::PackageConfiguration const *
+ STD_PC_Intf::get_PC (void) const
+ {
+ return this->idl_pc_.get ();
+ }
+
+ ::Deployment::PackageConfiguration *
+ STD_PC_Intf::get_PC (void)
+ {
+ return this->idl_pc_.release ();
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h
new file mode 100644
index 00000000000..c15ae0389b9
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/PC_Intf.h
@@ -0,0 +1,58 @@
+//==============================================================
+/**
+ * @file PC_Intf.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_STD_PC_INTF_H
+#define CIAO_CONFIG_STD_PC_INTF_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#include "ace/Auto_Ptr.h"
+
+
+namespace Deployment
+{
+ struct PackageConfiguration ;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ /*
+ * @class PC_Intf
+ *
+ * @brief Wrapper class for PackageConfiguration extraction
+ *
+ * This class defines wrapper functions for extracting
+ * PackageConfiguration IDL structures from XSC structures.
+ * It serves as the public interface used by application
+ * developers.
+ *
+ */
+ class Config_Handlers_Export STD_PC_Intf
+ {
+ public:
+ STD_PC_Intf (const char *file);
+
+ ::Deployment::PackageConfiguration const *get_PC (void) const;
+ ::Deployment::PackageConfiguration *get_PC (void);
+
+ protected:
+ bool prepare_PC (const char *file);
+
+ private:
+ ACE_Auto_Ptr< ::Deployment::PackageConfiguration> idl_pc_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_STD_PC_INTF_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
new file mode 100644
index 00000000000..7f4b68c5247
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Package_Handlers.mpc
@@ -0,0 +1,54 @@
+// $Id$
+
+project (Package_Config_Handlers) : acelib, ciao_deployment_stub, ciao_config_handlers_base {
+ sharedname = Package_Config_Handlers
+ dynamicflags = PACKAGING_HANDLERS_BUILD_DLL
+ avoids += ace_for_tao
+
+ includes += $(CIAO_ROOT)/ciao
+
+ after += XSC_Config_Handlers_Common \
+ XSC_Config_Handlers \
+ XSC_DynAny_Handler \
+ XSC_XML_Handlers \
+ CIAO_XML_Utils \
+ CIAO_Events_Handlers
+
+ libs += XSC_Config_Handlers_Common \
+ XSC_Config_Handlers \
+ XSC_DynAny_Handler \
+ XSC_XML_Handlers \
+ CIAO_XML_Utils \
+ CIAO_Events_Handlers RT_CCM_Config_Handlers
+
+ Source_files {
+ CAD_Handler.cpp
+ CID_Handler.cpp
+ Comp_Intf_Descr_Handler.cpp
+ CPD_Handler.cpp
+ IAD_Handler.cpp
+ PCD_Handler.cpp
+ SID_Handler.cpp
+ }
+
+ Header_Files {
+ CAD_Handler.h
+ CID_Handler.h
+ Comp_Intf_Descr_Handler.h
+ CPD_Handler.h
+ IAD_Handler.h
+ PCD_Handler.h
+ SID_Handler.h
+ }
+
+}
+
+project (Package_Config_Handlers_Tests) : ciao_component_dnc, ciao_config_handlers, ifr_client {
+ exename = test
+ macros += XML_USE_PTHREADS
+ avoids += ace_for_tao
+
+ Source_Files {
+ test.cpp
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h
new file mode 100644
index 00000000000..86193a1a664
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/Packaging_Handlers_Export.h
@@ -0,0 +1,58 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl Packaging_Handlers
+// ------------------------------
+#ifndef PACKAGING_HANDLERS_EXPORT_H
+#define PACKAGING_HANDLERS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS) && !defined (PACKAGING_HANDLERS_HAS_DLL)
+# define PACKAGING_HANDLERS_HAS_DLL 0
+#endif /* ACE_AS_STATIC_LIBS && PACKAGING_HANDLERS_HAS_DLL */
+
+#if !defined (PACKAGING_HANDLERS_HAS_DLL)
+# define PACKAGING_HANDLERS_HAS_DLL 1
+#endif /* ! PACKAGING_HANDLERS_HAS_DLL */
+
+#if defined (PACKAGING_HANDLERS_HAS_DLL) && (PACKAGING_HANDLERS_HAS_DLL == 1)
+# if defined (PACKAGING_HANDLERS_BUILD_DLL)
+# define Packaging_Handlers_Export ACE_Proper_Export_Flag
+# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* PACKAGING_HANDLERS_BUILD_DLL */
+# define Packaging_Handlers_Export ACE_Proper_Import_Flag
+# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* PACKAGING_HANDLERS_BUILD_DLL */
+#else /* PACKAGING_HANDLERS_HAS_DLL == 1 */
+# define Packaging_Handlers_Export
+# define PACKAGING_HANDLERS_SINGLETON_DECLARATION(T)
+# define PACKAGING_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* PACKAGING_HANDLERS_HAS_DLL == 1 */
+
+// Set PACKAGING_HANDLERS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (PACKAGING_HANDLERS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define PACKAGING_HANDLERS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define PACKAGING_HANDLERS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !PACKAGING_HANDLERS_NTRACE */
+
+#if (PACKAGING_HANDLERS_NTRACE == 1)
+# define PACKAGING_HANDLERS_TRACE(X)
+#else /* (PACKAGING_HANDLERS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define PACKAGING_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (PACKAGING_HANDLERS_NTRACE == 1) */
+
+#endif /* PACKAGING_HANDLERS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
new file mode 100644
index 00000000000..34eadf9ea32
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.cpp
@@ -0,0 +1,140 @@
+// $Id$
+#include "tao/AnyTypeCode/AnyTypeCode_methods.h"
+#include "Package_Handlers/SID_Handler.h"
+#include "cid.hpp"
+#include "ciao/DeploymentC.h"
+#include "Package_Handlers/CPD_Handler.h"
+#include "Package_Handlers/PCD_Handler.h"
+#include "Req_Handler.h"
+#include "Property_Handler.h"
+
+#include "ace/UUID.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Packaging
+ {
+ IDREF_Base<CORBA::ULong> SID_Handler::IDREF;
+
+ void
+ SID_Handler::handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
+ ::Deployment::SubcomponentInstantiationDescription &toconfig)
+ {
+ CIAO_TRACE ("SID_Handler::sub_comp_inst_descr");
+ toconfig.name = desc.name ().c_str ();
+
+ if (desc.basePackage_p ())
+ {
+ toconfig.basePackage.length (1);
+ CPD_Handler::handle_component_package_descr (desc.basePackage (),
+ toconfig.basePackage[0]);
+ }
+ else if (desc.specializedConfig_p ())
+ {
+ toconfig.specializedConfig.length (1);
+ PCD_Handler::package_config (desc.specializedConfig (),
+ toconfig.specializedConfig[0]);
+ }
+ else if (desc.importedPackage_p ())
+ {
+ toconfig.importedPackage.length (1);
+ toconfig.importedPackage[0].location.length (desc.importedPackage ().count_location ());
+
+ std::for_each (desc.importedPackage ().begin_location (),
+ desc.importedPackage ().end_location (),
+ String_Seq_Functor (toconfig.importedPackage[0].location));
+ }
+ else if (desc.referencedPackage_p ())
+ {
+ toconfig.referencedPackage.length (1);
+
+ if (desc.referencedPackage ().requiredUUID_p ())
+ toconfig.referencedPackage[0].requiredUUID =
+ desc.referencedPackage ().requiredUUID ().c_str ();
+
+ if (desc.referencedPackage ().requiredName_p ())
+ toconfig.referencedPackage[0].requiredName =
+ desc.referencedPackage ().requiredName ().c_str ();
+
+ toconfig.referencedPackage[0].requiredType =
+ desc.referencedPackage ().requiredType ().c_str ();
+ }
+
+ toconfig.selectRequirement.length (desc.count_selectRequirement ());
+ std::for_each (desc.begin_selectRequirement (),
+ desc.end_selectRequirement (),
+ Requirement_Functor (toconfig.selectRequirement));
+
+ toconfig.configProperty.length (desc.count_configProperty ());
+ std::for_each (desc.begin_configProperty (),
+ desc.end_configProperty (),
+ Property_Functor (toconfig.configProperty));
+
+ if (desc.id_p ())
+ {
+ ACE_CString str (desc.id ().c_str ());
+ SID_Handler::IDREF.bind_next_available (str);
+ }
+ else
+ ACE_ERROR ((LM_ERROR, "Warning: SID With Name %s has no ID\n",
+ desc.name ().c_str ()));
+
+ }
+
+ SubcomponentInstantiationDescription
+ SID_Handler::sub_comp_inst_descr (const Deployment::SubcomponentInstantiationDescription &src)
+ {
+ CIAO_TRACE ("SID_Handler::sub_comp_inst_descr - reverse");
+ SubcomponentInstantiationDescription retval (src.name.in ());
+
+ if (src.basePackage.length () == 1)
+ retval.basePackage
+ (CPD_Handler::component_package_descr (src.basePackage[0]));
+ else if (src.specializedConfig.length () == 1)
+ retval.specializedConfig
+ (PCD_Handler::package_config (src.specializedConfig[0]));
+ else if (src.importedPackage.length () == 1)
+ {
+ ComponentPackageImport ci;
+
+ for (CORBA::ULong i = 0; i < src.importedPackage[0].location.length (); ++i)
+ ci.add_location (src.importedPackage[0].location[i]);
+
+ retval.importedPackage (ci);
+ }
+ else if (src.referencedPackage.length () == 1)
+ {
+ ComponentPackageReference cpr (src.referencedPackage[0].requiredType.in ());
+ cpr.requiredUUID (src.referencedPackage[0].requiredUUID.in ());
+ cpr.requiredName (src.referencedPackage[0].requiredName.in ());
+
+ retval.referencedPackage (cpr);
+ }
+
+ for (CORBA::ULong i = 0; i < src.selectRequirement.length (); ++i)
+ retval.add_selectRequirement
+ (Req_Handler::get_requirement (src.selectRequirement[i]));
+
+ for (CORBA::ULong i = 0; i < src.configProperty.length (); ++i)
+ retval.add_configProperty
+ (Property_Handler::get_property (src.configProperty[i]));
+
+ // @@MAJO This is not a good way of binding reverse IDREFS.
+ std::auto_ptr <ACE_Utils::UUID> safe_uuid (
+ ACE_Utils::UUID_GENERATOR::instance ()->generateUUID ());
+ ACE_CString uuid ( safe_uuid->to_string ()->c_str ());
+
+ // ACE_ERROR ((LM_ERROR, "*** Binding to %s\n",
+ // uuid.c_str ()));
+
+ SID_Handler::IDREF.bind_next_available (uuid);
+
+ return retval;
+ }
+
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h b/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h
new file mode 100644
index 00000000000..1bcb73e751e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/SID_Handler.h
@@ -0,0 +1,71 @@
+/**
+ * @file SID_Handler.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+
+#ifndef CIAO_PACKAGING_SID_HANDLER_H
+#define CIAO_PACKAGING_SID_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "Utils/Functors.h"
+#include "IDREF_Base.h"
+#include "Package_Handlers/Packaging_Handlers_Export.h"
+
+namespace Deployment
+{
+ struct SubcomponentInstantiationDescription;
+ class SubcomponentInstantiationDescriptions;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class SubcomponentInstantiationDescription;
+
+ namespace Packaging
+ {
+ /**
+ * @class SID_Handler
+ * @brief Handler class for SubcomponentInstantiationDescription
+ */
+ class Packaging_Handlers_Export SID_Handler
+ {
+ SID_Handler (XML_Helper *xml_helper)
+ : xml_helper_ (xml_helper)
+ {
+
+ }
+
+ public:
+ static void handle_sub_comp_inst_descr (const SubcomponentInstantiationDescription &desc,
+ ::Deployment::SubcomponentInstantiationDescription &toconfig);
+
+ static SubcomponentInstantiationDescription
+ sub_comp_inst_descr (const ::Deployment::SubcomponentInstantiationDescription &src);
+
+ static IDREF_Base< CORBA::ULong > IDREF;
+
+ private:
+ static SubcomponentInstantiationDescription *resolve_sid (const char *uri);
+
+ XML_Helper *xml_helper_;
+
+ };
+
+ typedef Sequence_Handler < SubcomponentInstantiationDescription,
+ ::Deployment::SubcomponentInstantiationDescriptions,
+ ::Deployment::SubcomponentInstantiationDescription,
+ SID_Handler::handle_sub_comp_inst_descr > SID_Functor;
+
+ }
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_PACKAGING_SID_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Package_Handlers/test.cpp b/modules/CIAO/tools/Config_Handlers/Package_Handlers/test.cpp
new file mode 100644
index 00000000000..7ab76020dd9
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Package_Handlers/test.cpp
@@ -0,0 +1,113 @@
+// $Id$
+
+#include <iostream>
+
+#include "Deployment.hpp"
+#include "PCD_Handler.h"
+#include "ciao/Deployment_Packaging_DataC.h"
+#include "SID_Handler.h"
+#include "ace/Get_Opt.h"
+#include "Utils/XML_Helper.h"
+#include "tao/ORB.h"
+#include "Utils/Exceptions.h"
+
+static const char *input_file = "BasicSP.cdp";
+
+
+static int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "i:");
+
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'i':
+ input_file = get_opts.opt_arg ();
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-i <input file> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command-line
+ return 0;
+}
+
+// Check to see if SRD was imported.
+void check_srd (const Deployment::DeploymentPlan &);
+
+using namespace CIAO::Config_Handlers;
+
+
+int main (int argc, char *argv[])
+{
+ try
+ {
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ // Initialize an ORB so Any will work
+ CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv, "");
+ ACE_UNUSED_ARG (orb);
+
+
+ if (xercesc::DOMDocument *doc = XML_HELPER->create_dom (input_file))
+ {
+
+ ::Deployment::PackageConfiguration idl_pc;
+ {
+ // //Read in the XSC type structure from the DOMDocument
+ //PackageConfiguration pc = packageConfiguration (doc);
+ //std::cerr << "XML to XSC conversion succeeded. Converting to IDL...\n";
+
+ //Convert the XSC to an IDL datatype
+ Packaging::PCD_Handler::package_config (input_file, idl_pc);
+ std::cout << "Instance document import succeeded. Dumping contents to file\n";
+ }
+
+ // Clear SID_Handler's IDREF Table
+ Packaging::SID_Handler::IDREF.unbind_refs ();
+
+ std::cerr << "Performing IDL->XSC transformation...\n";
+
+ PackageConfiguration out_pc (Packaging::PCD_Handler::package_config (idl_pc));
+
+ //Create a new DOMDocument for writing the XSC into XML
+ xercesc::DOMDocument* the_xsc (XML_HELPER->create_dom("Deployment:packageConfiguration",
+ "http://www.omg.org/Deployment"));
+
+ //Serialize the XSC into a DOMDocument
+ packageConfiguration(out_pc, the_xsc);
+
+
+ //Write it to test.xml
+ XML_HELPER->write_DOM(the_xsc, "test.xml");
+
+ //Cleanliness is next to Godliness
+ delete doc;
+ }
+
+ std::cout << "Test completed!\n";
+ }
+ catch (CIAO::Config_Handlers::Plan_Error &excep)
+ {
+ std::cerr << "Plan Error exception caught: " << excep.reason_ << std::endl;
+ }
+ catch (CIAO::Config_Handlers::Config_Error &excep)
+ {
+ std::cerr << "Config Error " << excep.name_ << ": " << excep.error_ << std::endl;
+ }
+
+
+ return 0;
+}
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/Property_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Property_Handler.cpp
new file mode 100644
index 00000000000..41129007618
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Property_Handler.cpp
@@ -0,0 +1,51 @@
+//$Id$
+
+#include "Property_Handler.h"
+#include "Any_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ Property_Handler::Property_Handler (void)
+ {
+ }
+
+ Property_Handler::~Property_Handler (void)
+ {
+ }
+
+ void
+ Property_Handler::handle_property (
+ const Property& desc,
+ Deployment::Property& toconfig)
+ {
+ CIAO_TRACE("Property_Handler::get_property");
+
+ toconfig.name =
+ CORBA::string_dup (desc.name ().c_str ());
+
+ Any_Handler::extract_into_any (desc.value (),
+ toconfig.value);
+
+ }
+
+ Property
+ Property_Handler::get_property (
+ const Deployment::Property& src)
+ {
+ CIAO_TRACE("Property_Handler::get_property - reverse");
+
+ ::XMLSchema::string< char > name ((src.name));
+ Any value (Any_Handler::get_any (src.value));
+
+ Property prop (name,value);
+
+ return prop;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Property_Handler.h b/modules/CIAO/tools/Config_Handlers/Property_Handler.h
new file mode 100644
index 00000000000..1b0f2476bf8
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Property_Handler.h
@@ -0,0 +1,71 @@
+//================================================
+/**
+ * @file Property_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct Property;
+ class Properties;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class Property;
+
+ /*
+ * @class Property_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+
+ class Config_Handlers_Common_Export Property_Handler
+ {
+ public:
+ Property_Handler (void);
+ virtual ~Property_Handler (void);
+
+ /// This method maps the values from the XSC object
+ /// <CIAO::Config_Handlers::Property> to the CORBA IDL type
+ /// <Deployment::Property>.
+ static void handle_property (const Property& desc,
+ ::Deployment::Property& toconfig);
+ static Property get_property (
+ const ::Deployment::Property& src);
+ };
+
+
+ typedef Sequence_Handler < Property,
+ ::Deployment::Properties,
+ ::Deployment::Property,
+ Property_Handler::handle_property > Property_Functor;
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_PROPERTY_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/RDD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RDD_Handler.cpp
new file mode 100644
index 00000000000..374c0e4993f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RDD_Handler.cpp
@@ -0,0 +1,57 @@
+// $Id$
+
+#include "RDD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Any_Handler.h"
+#include "ciao/CIAO_common.h"
+#include "Property_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ RDD_Handler::resource_deployment_descr (
+ const ResourceDeploymentDescription &src,
+ ::Deployment::ResourceDeploymentDescription &dest)
+ {
+ CIAO_TRACE("RDD_Handler::resource_deployment_descr");
+
+ dest.requirementName =
+ src.requirementName ().c_str ();
+
+ dest.resourceName=
+ src.resourceName ().c_str ();
+
+ std::for_each (src.begin_property (),
+ src.end_property (),
+ Property_Functor (dest.property));
+
+ }
+
+ ResourceDeploymentDescription
+ RDD_Handler::resource_deployment_descr (
+ const ::Deployment::ResourceDeploymentDescription &src)
+ {
+ CIAO_TRACE("RDD_Handler::resource_deployment_descr - reverse");
+
+ XMLSchema::string< char > reqname ((src.requirementName));
+ XMLSchema::string< char > resname ((src.resourceName.in ()));
+
+ ResourceDeploymentDescription rdd (reqname,resname);
+
+ for (CORBA::ULong i = 0;
+ i != src.property.length ();
+ ++i)
+ {
+ rdd.add_property (Property_Handler::get_property (src.property[i]));
+ }
+
+ return rdd;
+ }
+
+
+ }
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RDD_Handler.h b/modules/CIAO/tools/Config_Handlers/RDD_Handler.h
new file mode 100644
index 00000000000..e0d19c58ee2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RDD_Handler.h
@@ -0,0 +1,63 @@
+
+//==============================================================
+/**
+* @file RDD_Handler.h
+*
+* $Id$
+*
+* @author Jules White <jules@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_RDD_Handler_H
+#define CIAO_CONFIG_HANDLERS_RDD_Handler_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+
+namespace Deployment
+{
+struct ResourceDeploymentDescription;
+}
+
+
+namespace CIAO
+{
+
+namespace Config_Handlers
+{
+class ResourceDeploymentDescription;
+
+/*
+* @class RDD_Handler
+*
+* @brief Handler class for <ResourceDeploymentDescription> types.
+*
+* This class defines handler methods to map values from XSC
+* ResourceDeploymentDescription objects, parsed from the
+* descriptor files, to the corresponding CORBA IDL Any type.
+*
+*/
+
+class Config_Handlers_Export RDD_Handler
+{
+public:
+static void resource_deployment_descr (
+const ResourceDeploymentDescription& desc,
+::Deployment::ResourceDeploymentDescription& toconfig);
+static ResourceDeploymentDescription
+resource_deployment_descr (
+const ::Deployment::ResourceDeploymentDescription &src);
+
+};
+}
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_RDD_Handler_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.cpp
new file mode 100644
index 00000000000..85a06851d78
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.cpp
@@ -0,0 +1,70 @@
+// $Id$
+
+#include "CB_Handler.h"
+#include "CIAOServerResources.hpp"
+#include "ace/Basic_Types.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // IDREF_Base CB_Handler::IDREF;
+
+ bool
+ CB_Handler::connection_band (const ConnectionBandsDef &src,
+ ::CIAO::DAnCE::ORS_ConnectionBands &dest)
+ {
+ // Set the number of bands
+ CORBA::ULong num (dest.bands.length ());
+ dest.bands.length (num + src.count_band ());
+
+ for (ConnectionBandsDef::band_const_iterator i = src.begin_band ();
+ i != src.end_band ();
+ ++i)
+ {
+ dest.bands[num].low = static_cast <ACE_INT32> ((i->low ()));
+ dest.bands[num].high = static_cast < ACE_INT32 > (i->high ());
+ num++;
+ }
+
+ if (src.id_p ())
+ {
+ /*
+ ACE_CString cstr (src.id ().c_str ());
+ if (!IDD_Handler::IDREF.bind_ref (cstr, dest))
+ return false;
+ */
+ dest.Id = CORBA::string_dup (src.id ().c_str ());
+ }
+
+ return true;
+ }
+
+
+ ConnectionBandsDef
+ CB_Handler::connection_band (const ::CIAO::DAnCE::ORS_ConnectionBands &src)
+ {
+ ConnectionBandsDef cb;
+
+ for (CORBA::ULong i = 0;
+ i < src.bands.length ();
+ ++i)
+ {
+ cb.add_band (PriorityBandDef (src.bands[i].low,
+ src.bands[i].high));
+ }
+
+ /*
+ ACE_CString cstr;
+ if (CB_Handler::IDREF.find_ref (src, cstr))
+ cb->id (cstr.c_str ());
+ */
+
+ if (src.Id.in () != 0)
+ cb.id (src.Id.in ());
+
+ return cb;
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.h
new file mode 100644
index 00000000000..7272b830fb7
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CB_Handler.h
@@ -0,0 +1,48 @@
+/**
+ * @file CB_Handler.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+
+
+#ifndef CIAO_CONFIG_HANDLERS_CB_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CB_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "IDREF_Base.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ConnectionBandsDef;
+
+ /*
+ * @class CB_Handler
+ * A brief Handler class for <ConnectionBands>
+ */
+
+ class RT_CCM_Handlers_Export CB_Handler
+ {
+ public:
+ static bool connection_band (const ConnectionBandsDef &src,
+ ::CIAO::DAnCE::ORS_ConnectionBands &dest);
+
+ static ConnectionBandsDef connection_band (const ::CIAO::DAnCE::ORS_ConnectionBands &src);
+
+ // static IDREF_Base<::CIAO::DAnCE::ORS_ConnectionBands> IDREF;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CB_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
new file mode 100644
index 00000000000..af9d71cfbee
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.cpp
@@ -0,0 +1,5088 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ServerResourcesDef
+ //
+
+ ServerResourcesDef::
+ ServerResourcesDef (::CIAO::Config_Handlers::ORBConfigs const& orbConfigs__)
+ :
+ ::XSCRT::Type (),
+ orbConfigs_ (new ::CIAO::Config_Handlers::ORBConfigs (orbConfigs__)),
+ regulator__ ()
+ {
+ orbConfigs_->container (this);
+ }
+
+ ServerResourcesDef::
+ ServerResourcesDef (::CIAO::Config_Handlers::ServerResourcesDef const& s)
+ :
+ ::XSCRT::Type (),
+ cmdline_ (s.cmdline_.get () ? new ::CIAO::Config_Handlers::ServerCmdlineOptions (*s.cmdline_) : 0),
+ svcconf_ (s.svcconf_.get () ? new ::CIAO::Config_Handlers::ACESvcConf (*s.svcconf_) : 0),
+ orbConfigs_ (new ::CIAO::Config_Handlers::ORBConfigs (*s.orbConfigs_)),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ if (cmdline_.get ()) cmdline_->container (this);
+ if (svcconf_.get ()) svcconf_->container (this);
+ orbConfigs_->container (this);
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ServerResourcesDef& ServerResourcesDef::
+ operator= (::CIAO::Config_Handlers::ServerResourcesDef const& s)
+ {
+ if (s.cmdline_.get ()) cmdline (*(s.cmdline_));
+ else cmdline_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ServerCmdlineOptions > (0);
+
+ if (s.svcconf_.get ()) svcconf (*(s.svcconf_));
+ else svcconf_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ACESvcConf > (0);
+
+ orbConfigs (s.orbConfigs ());
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ServerResourcesDef
+ //
+ bool ServerResourcesDef::
+ cmdline_p () const
+ {
+ return cmdline_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ServerCmdlineOptions const& ServerResourcesDef::
+ cmdline () const
+ {
+ return *cmdline_;
+ }
+
+ void ServerResourcesDef::
+ cmdline (::CIAO::Config_Handlers::ServerCmdlineOptions const& e)
+ {
+ if (cmdline_.get ())
+ {
+ *cmdline_ = e;
+ }
+
+ else
+ {
+ cmdline_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ServerCmdlineOptions > (new ::CIAO::Config_Handlers::ServerCmdlineOptions (e));
+ cmdline_->container (this);
+ }
+ }
+
+ // ServerResourcesDef
+ //
+ bool ServerResourcesDef::
+ svcconf_p () const
+ {
+ return svcconf_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ACESvcConf const& ServerResourcesDef::
+ svcconf () const
+ {
+ return *svcconf_;
+ }
+
+ void ServerResourcesDef::
+ svcconf (::CIAO::Config_Handlers::ACESvcConf const& e)
+ {
+ if (svcconf_.get ())
+ {
+ *svcconf_ = e;
+ }
+
+ else
+ {
+ svcconf_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ACESvcConf > (new ::CIAO::Config_Handlers::ACESvcConf (e));
+ svcconf_->container (this);
+ }
+ }
+
+ // ServerResourcesDef
+ //
+ ::CIAO::Config_Handlers::ORBConfigs const& ServerResourcesDef::
+ orbConfigs () const
+ {
+ return *orbConfigs_;
+ }
+
+ void ServerResourcesDef::
+ orbConfigs (::CIAO::Config_Handlers::ORBConfigs const& e)
+ {
+ *orbConfigs_ = e;
+ }
+
+ // ServerResourcesDef
+ //
+ bool ServerResourcesDef::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& ServerResourcesDef::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& ServerResourcesDef::
+ id ()
+ {
+ return *id_;
+ }
+
+ void ServerResourcesDef::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // ServerCmdlineOptions
+ //
+
+ ServerCmdlineOptions::
+ ServerCmdlineOptions ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ServerCmdlineOptions::
+ ServerCmdlineOptions (::CIAO::Config_Handlers::ServerCmdlineOptions const& s)
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ {
+ for (arg_const_iterator i (s.arg_.begin ());i != s.arg_.end ();++i) add_arg (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::ServerCmdlineOptions& ServerCmdlineOptions::
+ operator= (::CIAO::Config_Handlers::ServerCmdlineOptions const& s)
+ {
+ arg_.clear ();
+ {
+ for (arg_const_iterator i (s.arg_.begin ());i != s.arg_.end ();++i) add_arg (*i);
+ }
+
+ return *this;
+ }
+
+
+ // ServerCmdlineOptions
+ //
+ ServerCmdlineOptions::arg_iterator ServerCmdlineOptions::
+ begin_arg ()
+ {
+ return arg_.begin ();
+ }
+
+ ServerCmdlineOptions::arg_iterator ServerCmdlineOptions::
+ end_arg ()
+ {
+ return arg_.end ();
+ }
+
+ ServerCmdlineOptions::arg_const_iterator ServerCmdlineOptions::
+ begin_arg () const
+ {
+ return arg_.begin ();
+ }
+
+ ServerCmdlineOptions::arg_const_iterator ServerCmdlineOptions::
+ end_arg () const
+ {
+ return arg_.end ();
+ }
+
+ void ServerCmdlineOptions::
+ add_arg (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ arg_.push_back (e);
+ }
+
+ size_t ServerCmdlineOptions::
+ count_arg(void) const
+ {
+ return arg_.size ();
+ }
+
+
+ // ACESvcConf
+ //
+
+ ACESvcConf::
+ ACESvcConf ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ACESvcConf::
+ ACESvcConf (::CIAO::Config_Handlers::ACESvcConf const& s)
+ :
+ ::XSCRT::Type (),
+ uri_ (s.uri_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.uri_) : 0),
+ regulator__ ()
+ {
+ if (uri_.get ()) uri_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ACESvcConf& ACESvcConf::
+ operator= (::CIAO::Config_Handlers::ACESvcConf const& s)
+ {
+ if (s.uri_.get ()) uri (*(s.uri_));
+ else uri_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ACESvcConf
+ //
+ bool ACESvcConf::
+ uri_p () const
+ {
+ return uri_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ACESvcConf::
+ uri () const
+ {
+ return *uri_;
+ }
+
+ void ACESvcConf::
+ uri (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (uri_.get ())
+ {
+ *uri_ = e;
+ }
+
+ else
+ {
+ uri_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ uri_->container (this);
+ }
+ }
+
+
+ // ORBConfigs
+ //
+
+ ORBConfigs::
+ ORBConfigs ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ORBConfigs::
+ ORBConfigs (::CIAO::Config_Handlers::ORBConfigs const& s)
+ :
+ ::XSCRT::Type (),
+ resources_ (s.resources_.get () ? new ::CIAO::Config_Handlers::ORBResources (*s.resources_) : 0),
+ regulator__ ()
+ {
+ if (resources_.get ()) resources_->container (this);
+ {
+ for (policySet_const_iterator i (s.policySet_.begin ());i != s.policySet_.end ();++i) add_policySet (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::ORBConfigs& ORBConfigs::
+ operator= (::CIAO::Config_Handlers::ORBConfigs const& s)
+ {
+ if (s.resources_.get ()) resources (*(s.resources_));
+ else resources_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ORBResources > (0);
+
+ policySet_.clear ();
+ {
+ for (policySet_const_iterator i (s.policySet_.begin ());i != s.policySet_.end ();++i) add_policySet (*i);
+ }
+
+ return *this;
+ }
+
+
+ // ORBConfigs
+ //
+ bool ORBConfigs::
+ resources_p () const
+ {
+ return resources_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ORBResources const& ORBConfigs::
+ resources () const
+ {
+ return *resources_;
+ }
+
+ void ORBConfigs::
+ resources (::CIAO::Config_Handlers::ORBResources const& e)
+ {
+ if (resources_.get ())
+ {
+ *resources_ = e;
+ }
+
+ else
+ {
+ resources_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ORBResources > (new ::CIAO::Config_Handlers::ORBResources (e));
+ resources_->container (this);
+ }
+ }
+
+ // ORBConfigs
+ //
+ ORBConfigs::policySet_iterator ORBConfigs::
+ begin_policySet ()
+ {
+ return policySet_.begin ();
+ }
+
+ ORBConfigs::policySet_iterator ORBConfigs::
+ end_policySet ()
+ {
+ return policySet_.end ();
+ }
+
+ ORBConfigs::policySet_const_iterator ORBConfigs::
+ begin_policySet () const
+ {
+ return policySet_.begin ();
+ }
+
+ ORBConfigs::policySet_const_iterator ORBConfigs::
+ end_policySet () const
+ {
+ return policySet_.end ();
+ }
+
+ void ORBConfigs::
+ add_policySet (::CIAO::Config_Handlers::PolicySet const& e)
+ {
+ policySet_.push_back (e);
+ }
+
+ size_t ORBConfigs::
+ count_policySet(void) const
+ {
+ return policySet_.size ();
+ }
+
+
+ // ORBResources
+ //
+
+ ORBResources::
+ ORBResources ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ORBResources::
+ ORBResources (::CIAO::Config_Handlers::ORBResources const& s)
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ {
+ for (threadpool_const_iterator i (s.threadpool_.begin ());i != s.threadpool_.end ();++i) add_threadpool (*i);
+ }
+
+ {
+ for (threadpoolWithLanes_const_iterator i (s.threadpoolWithLanes_.begin ());i != s.threadpoolWithLanes_.end ();++i) add_threadpoolWithLanes (*i);
+ }
+
+ {
+ for (connectionBands_const_iterator i (s.connectionBands_.begin ());i != s.connectionBands_.end ();++i) add_connectionBands (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::ORBResources& ORBResources::
+ operator= (::CIAO::Config_Handlers::ORBResources const& s)
+ {
+ threadpool_.clear ();
+ {
+ for (threadpool_const_iterator i (s.threadpool_.begin ());i != s.threadpool_.end ();++i) add_threadpool (*i);
+ }
+
+ threadpoolWithLanes_.clear ();
+ {
+ for (threadpoolWithLanes_const_iterator i (s.threadpoolWithLanes_.begin ());i != s.threadpoolWithLanes_.end ();++i) add_threadpoolWithLanes (*i);
+ }
+
+ connectionBands_.clear ();
+ {
+ for (connectionBands_const_iterator i (s.connectionBands_.begin ());i != s.connectionBands_.end ();++i) add_connectionBands (*i);
+ }
+
+ return *this;
+ }
+
+
+ // ORBResources
+ //
+ ORBResources::threadpool_iterator ORBResources::
+ begin_threadpool ()
+ {
+ return threadpool_.begin ();
+ }
+
+ ORBResources::threadpool_iterator ORBResources::
+ end_threadpool ()
+ {
+ return threadpool_.end ();
+ }
+
+ ORBResources::threadpool_const_iterator ORBResources::
+ begin_threadpool () const
+ {
+ return threadpool_.begin ();
+ }
+
+ ORBResources::threadpool_const_iterator ORBResources::
+ end_threadpool () const
+ {
+ return threadpool_.end ();
+ }
+
+ void ORBResources::
+ add_threadpool (::CIAO::Config_Handlers::ThreadpoolDef const& e)
+ {
+ threadpool_.push_back (e);
+ }
+
+ size_t ORBResources::
+ count_threadpool(void) const
+ {
+ return threadpool_.size ();
+ }
+
+ // ORBResources
+ //
+ ORBResources::threadpoolWithLanes_iterator ORBResources::
+ begin_threadpoolWithLanes ()
+ {
+ return threadpoolWithLanes_.begin ();
+ }
+
+ ORBResources::threadpoolWithLanes_iterator ORBResources::
+ end_threadpoolWithLanes ()
+ {
+ return threadpoolWithLanes_.end ();
+ }
+
+ ORBResources::threadpoolWithLanes_const_iterator ORBResources::
+ begin_threadpoolWithLanes () const
+ {
+ return threadpoolWithLanes_.begin ();
+ }
+
+ ORBResources::threadpoolWithLanes_const_iterator ORBResources::
+ end_threadpoolWithLanes () const
+ {
+ return threadpoolWithLanes_.end ();
+ }
+
+ void ORBResources::
+ add_threadpoolWithLanes (::CIAO::Config_Handlers::ThreadpoolWithLanesDef const& e)
+ {
+ threadpoolWithLanes_.push_back (e);
+ }
+
+ size_t ORBResources::
+ count_threadpoolWithLanes(void) const
+ {
+ return threadpoolWithLanes_.size ();
+ }
+
+ // ORBResources
+ //
+ ORBResources::connectionBands_iterator ORBResources::
+ begin_connectionBands ()
+ {
+ return connectionBands_.begin ();
+ }
+
+ ORBResources::connectionBands_iterator ORBResources::
+ end_connectionBands ()
+ {
+ return connectionBands_.end ();
+ }
+
+ ORBResources::connectionBands_const_iterator ORBResources::
+ begin_connectionBands () const
+ {
+ return connectionBands_.begin ();
+ }
+
+ ORBResources::connectionBands_const_iterator ORBResources::
+ end_connectionBands () const
+ {
+ return connectionBands_.end ();
+ }
+
+ void ORBResources::
+ add_connectionBands (::CIAO::Config_Handlers::ConnectionBandsDef const& e)
+ {
+ connectionBands_.push_back (e);
+ }
+
+ size_t ORBResources::
+ count_connectionBands(void) const
+ {
+ return connectionBands_.size ();
+ }
+
+
+ // Priority
+ //
+
+ Priority::
+ Priority (::XMLSchema::int_ const& b__)
+ :
+ Base__ (b__),
+ regulator__ ()
+ {
+ }
+
+ Priority::
+ Priority (::CIAO::Config_Handlers::Priority const& s)
+ :
+ Base__ (s),
+ regulator__ ()
+ {
+ }
+
+ ::CIAO::Config_Handlers::Priority& Priority::
+ operator= (::CIAO::Config_Handlers::Priority const& s)
+ {
+ static_cast< Base__& > (*this) = static_cast< Base__ const& > (s);
+
+ return *this;
+ }
+
+
+
+ // ThreadpoolDef
+ //
+
+ ThreadpoolDef::
+ ThreadpoolDef (::XMLSchema::unsignedLong const& stacksize__,
+ ::XMLSchema::unsignedLong const& static_threads__,
+ ::XMLSchema::unsignedLong const& dynamic_threads__,
+ ::CIAO::Config_Handlers::Priority const& default_priority__,
+ ::XMLSchema::boolean const& allow_request_buffering__,
+ ::XMLSchema::unsignedLong const& max_buffered_requests__,
+ ::XMLSchema::unsignedLong const& max_request_buffered_size__)
+ :
+ ::XSCRT::Type (),
+ stacksize_ (new ::XMLSchema::unsignedLong (stacksize__)),
+ static_threads_ (new ::XMLSchema::unsignedLong (static_threads__)),
+ dynamic_threads_ (new ::XMLSchema::unsignedLong (dynamic_threads__)),
+ default_priority_ (new ::CIAO::Config_Handlers::Priority (default_priority__)),
+ allow_request_buffering_ (new ::XMLSchema::boolean (allow_request_buffering__)),
+ max_buffered_requests_ (new ::XMLSchema::unsignedLong (max_buffered_requests__)),
+ max_request_buffered_size_ (new ::XMLSchema::unsignedLong (max_request_buffered_size__)),
+ regulator__ ()
+ {
+ stacksize_->container (this);
+ static_threads_->container (this);
+ dynamic_threads_->container (this);
+ default_priority_->container (this);
+ allow_request_buffering_->container (this);
+ max_buffered_requests_->container (this);
+ max_request_buffered_size_->container (this);
+ }
+
+ ThreadpoolDef::
+ ThreadpoolDef (::CIAO::Config_Handlers::ThreadpoolDef const& s)
+ :
+ ::XSCRT::Type (),
+ stacksize_ (new ::XMLSchema::unsignedLong (*s.stacksize_)),
+ static_threads_ (new ::XMLSchema::unsignedLong (*s.static_threads_)),
+ dynamic_threads_ (new ::XMLSchema::unsignedLong (*s.dynamic_threads_)),
+ default_priority_ (new ::CIAO::Config_Handlers::Priority (*s.default_priority_)),
+ allow_request_buffering_ (new ::XMLSchema::boolean (*s.allow_request_buffering_)),
+ max_buffered_requests_ (new ::XMLSchema::unsignedLong (*s.max_buffered_requests_)),
+ max_request_buffered_size_ (new ::XMLSchema::unsignedLong (*s.max_request_buffered_size_)),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ stacksize_->container (this);
+ static_threads_->container (this);
+ dynamic_threads_->container (this);
+ default_priority_->container (this);
+ allow_request_buffering_->container (this);
+ max_buffered_requests_->container (this);
+ max_request_buffered_size_->container (this);
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ThreadpoolDef& ThreadpoolDef::
+ operator= (::CIAO::Config_Handlers::ThreadpoolDef const& s)
+ {
+ stacksize (s.stacksize ());
+
+ static_threads (s.static_threads ());
+
+ dynamic_threads (s.dynamic_threads ());
+
+ default_priority (s.default_priority ());
+
+ allow_request_buffering (s.allow_request_buffering ());
+
+ max_buffered_requests (s.max_buffered_requests ());
+
+ max_request_buffered_size (s.max_request_buffered_size ());
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolDef::
+ stacksize () const
+ {
+ return *stacksize_;
+ }
+
+ void ThreadpoolDef::
+ stacksize (::XMLSchema::unsignedLong const& e)
+ {
+ *stacksize_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolDef::
+ static_threads () const
+ {
+ return *static_threads_;
+ }
+
+ void ThreadpoolDef::
+ static_threads (::XMLSchema::unsignedLong const& e)
+ {
+ *static_threads_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolDef::
+ dynamic_threads () const
+ {
+ return *dynamic_threads_;
+ }
+
+ void ThreadpoolDef::
+ dynamic_threads (::XMLSchema::unsignedLong const& e)
+ {
+ *dynamic_threads_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::CIAO::Config_Handlers::Priority const& ThreadpoolDef::
+ default_priority () const
+ {
+ return *default_priority_;
+ }
+
+ void ThreadpoolDef::
+ default_priority (::CIAO::Config_Handlers::Priority const& e)
+ {
+ *default_priority_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::boolean const& ThreadpoolDef::
+ allow_request_buffering () const
+ {
+ return *allow_request_buffering_;
+ }
+
+ void ThreadpoolDef::
+ allow_request_buffering (::XMLSchema::boolean const& e)
+ {
+ *allow_request_buffering_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolDef::
+ max_buffered_requests () const
+ {
+ return *max_buffered_requests_;
+ }
+
+ void ThreadpoolDef::
+ max_buffered_requests (::XMLSchema::unsignedLong const& e)
+ {
+ *max_buffered_requests_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolDef::
+ max_request_buffered_size () const
+ {
+ return *max_request_buffered_size_;
+ }
+
+ void ThreadpoolDef::
+ max_request_buffered_size (::XMLSchema::unsignedLong const& e)
+ {
+ *max_request_buffered_size_ = e;
+ }
+
+ // ThreadpoolDef
+ //
+ bool ThreadpoolDef::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& ThreadpoolDef::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& ThreadpoolDef::
+ id ()
+ {
+ return *id_;
+ }
+
+ void ThreadpoolDef::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // ThreadpoolWithLanesDef
+ //
+
+ ThreadpoolWithLanesDef::
+ ThreadpoolWithLanesDef (::XMLSchema::unsignedLong const& stacksize__,
+ ::XMLSchema::boolean const& allow_borrowing__,
+ ::XMLSchema::boolean const& allow_request_buffering__,
+ ::XMLSchema::unsignedLong const& max_buffered_requests__,
+ ::XMLSchema::unsignedLong const& max_request_buffered_size__)
+ :
+ ::XSCRT::Type (),
+ stacksize_ (new ::XMLSchema::unsignedLong (stacksize__)),
+ allow_borrowing_ (new ::XMLSchema::boolean (allow_borrowing__)),
+ allow_request_buffering_ (new ::XMLSchema::boolean (allow_request_buffering__)),
+ max_buffered_requests_ (new ::XMLSchema::unsignedLong (max_buffered_requests__)),
+ max_request_buffered_size_ (new ::XMLSchema::unsignedLong (max_request_buffered_size__)),
+ regulator__ ()
+ {
+ stacksize_->container (this);
+ allow_borrowing_->container (this);
+ allow_request_buffering_->container (this);
+ max_buffered_requests_->container (this);
+ max_request_buffered_size_->container (this);
+ }
+
+ ThreadpoolWithLanesDef::
+ ThreadpoolWithLanesDef (::CIAO::Config_Handlers::ThreadpoolWithLanesDef const& s)
+ :
+ ::XSCRT::Type (),
+ stacksize_ (new ::XMLSchema::unsignedLong (*s.stacksize_)),
+ allow_borrowing_ (new ::XMLSchema::boolean (*s.allow_borrowing_)),
+ allow_request_buffering_ (new ::XMLSchema::boolean (*s.allow_request_buffering_)),
+ max_buffered_requests_ (new ::XMLSchema::unsignedLong (*s.max_buffered_requests_)),
+ max_request_buffered_size_ (new ::XMLSchema::unsignedLong (*s.max_request_buffered_size_)),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ {
+ for (threadpoolLane_const_iterator i (s.threadpoolLane_.begin ());i != s.threadpoolLane_.end ();++i) add_threadpoolLane (*i);
+ }
+
+ stacksize_->container (this);
+ allow_borrowing_->container (this);
+ allow_request_buffering_->container (this);
+ max_buffered_requests_->container (this);
+ max_request_buffered_size_->container (this);
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ThreadpoolWithLanesDef& ThreadpoolWithLanesDef::
+ operator= (::CIAO::Config_Handlers::ThreadpoolWithLanesDef const& s)
+ {
+ threadpoolLane_.clear ();
+ {
+ for (threadpoolLane_const_iterator i (s.threadpoolLane_.begin ());i != s.threadpoolLane_.end ();++i) add_threadpoolLane (*i);
+ }
+
+ stacksize (s.stacksize ());
+
+ allow_borrowing (s.allow_borrowing ());
+
+ allow_request_buffering (s.allow_request_buffering ());
+
+ max_buffered_requests (s.max_buffered_requests ());
+
+ max_request_buffered_size (s.max_request_buffered_size ());
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ThreadpoolWithLanesDef
+ //
+ ThreadpoolWithLanesDef::threadpoolLane_iterator ThreadpoolWithLanesDef::
+ begin_threadpoolLane ()
+ {
+ return threadpoolLane_.begin ();
+ }
+
+ ThreadpoolWithLanesDef::threadpoolLane_iterator ThreadpoolWithLanesDef::
+ end_threadpoolLane ()
+ {
+ return threadpoolLane_.end ();
+ }
+
+ ThreadpoolWithLanesDef::threadpoolLane_const_iterator ThreadpoolWithLanesDef::
+ begin_threadpoolLane () const
+ {
+ return threadpoolLane_.begin ();
+ }
+
+ ThreadpoolWithLanesDef::threadpoolLane_const_iterator ThreadpoolWithLanesDef::
+ end_threadpoolLane () const
+ {
+ return threadpoolLane_.end ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ add_threadpoolLane (::CIAO::Config_Handlers::ThreadpoolLaneDef const& e)
+ {
+ threadpoolLane_.push_back (e);
+ }
+
+ size_t ThreadpoolWithLanesDef::
+ count_threadpoolLane(void) const
+ {
+ return threadpoolLane_.size ();
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolWithLanesDef::
+ stacksize () const
+ {
+ return *stacksize_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ stacksize (::XMLSchema::unsignedLong const& e)
+ {
+ *stacksize_ = e;
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ ::XMLSchema::boolean const& ThreadpoolWithLanesDef::
+ allow_borrowing () const
+ {
+ return *allow_borrowing_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_borrowing (::XMLSchema::boolean const& e)
+ {
+ *allow_borrowing_ = e;
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ ::XMLSchema::boolean const& ThreadpoolWithLanesDef::
+ allow_request_buffering () const
+ {
+ return *allow_request_buffering_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_request_buffering (::XMLSchema::boolean const& e)
+ {
+ *allow_request_buffering_ = e;
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolWithLanesDef::
+ max_buffered_requests () const
+ {
+ return *max_buffered_requests_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_buffered_requests (::XMLSchema::unsignedLong const& e)
+ {
+ *max_buffered_requests_ = e;
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolWithLanesDef::
+ max_request_buffered_size () const
+ {
+ return *max_request_buffered_size_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_request_buffered_size (::XMLSchema::unsignedLong const& e)
+ {
+ *max_request_buffered_size_ = e;
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ bool ThreadpoolWithLanesDef::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& ThreadpoolWithLanesDef::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& ThreadpoolWithLanesDef::
+ id ()
+ {
+ return *id_;
+ }
+
+ void ThreadpoolWithLanesDef::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // ThreadpoolLaneDef
+ //
+
+ ThreadpoolLaneDef::
+ ThreadpoolLaneDef (::XMLSchema::unsignedLong const& static_threads__,
+ ::XMLSchema::unsignedLong const& dynamic_threads__,
+ ::CIAO::Config_Handlers::Priority const& priority__)
+ :
+ ::XSCRT::Type (),
+ static_threads_ (new ::XMLSchema::unsignedLong (static_threads__)),
+ dynamic_threads_ (new ::XMLSchema::unsignedLong (dynamic_threads__)),
+ priority_ (new ::CIAO::Config_Handlers::Priority (priority__)),
+ regulator__ ()
+ {
+ static_threads_->container (this);
+ dynamic_threads_->container (this);
+ priority_->container (this);
+ }
+
+ ThreadpoolLaneDef::
+ ThreadpoolLaneDef (::CIAO::Config_Handlers::ThreadpoolLaneDef const& s)
+ :
+ ::XSCRT::Type (),
+ static_threads_ (new ::XMLSchema::unsignedLong (*s.static_threads_)),
+ dynamic_threads_ (new ::XMLSchema::unsignedLong (*s.dynamic_threads_)),
+ priority_ (new ::CIAO::Config_Handlers::Priority (*s.priority_)),
+ regulator__ ()
+ {
+ static_threads_->container (this);
+ dynamic_threads_->container (this);
+ priority_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ThreadpoolLaneDef& ThreadpoolLaneDef::
+ operator= (::CIAO::Config_Handlers::ThreadpoolLaneDef const& s)
+ {
+ static_threads (s.static_threads ());
+
+ dynamic_threads (s.dynamic_threads ());
+
+ priority (s.priority ());
+
+ return *this;
+ }
+
+
+ // ThreadpoolLaneDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolLaneDef::
+ static_threads () const
+ {
+ return *static_threads_;
+ }
+
+ void ThreadpoolLaneDef::
+ static_threads (::XMLSchema::unsignedLong const& e)
+ {
+ *static_threads_ = e;
+ }
+
+ // ThreadpoolLaneDef
+ //
+ ::XMLSchema::unsignedLong const& ThreadpoolLaneDef::
+ dynamic_threads () const
+ {
+ return *dynamic_threads_;
+ }
+
+ void ThreadpoolLaneDef::
+ dynamic_threads (::XMLSchema::unsignedLong const& e)
+ {
+ *dynamic_threads_ = e;
+ }
+
+ // ThreadpoolLaneDef
+ //
+ ::CIAO::Config_Handlers::Priority const& ThreadpoolLaneDef::
+ priority () const
+ {
+ return *priority_;
+ }
+
+ void ThreadpoolLaneDef::
+ priority (::CIAO::Config_Handlers::Priority const& e)
+ {
+ *priority_ = e;
+ }
+
+
+ // ConnectionBandsDef
+ //
+
+ ConnectionBandsDef::
+ ConnectionBandsDef ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ConnectionBandsDef::
+ ConnectionBandsDef (::CIAO::Config_Handlers::ConnectionBandsDef const& s)
+ :
+ ::XSCRT::Type (),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ {
+ for (band_const_iterator i (s.band_.begin ());i != s.band_.end ();++i) add_band (*i);
+ }
+
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ConnectionBandsDef& ConnectionBandsDef::
+ operator= (::CIAO::Config_Handlers::ConnectionBandsDef const& s)
+ {
+ band_.clear ();
+ {
+ for (band_const_iterator i (s.band_.begin ());i != s.band_.end ();++i) add_band (*i);
+ }
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ConnectionBandsDef
+ //
+ ConnectionBandsDef::band_iterator ConnectionBandsDef::
+ begin_band ()
+ {
+ return band_.begin ();
+ }
+
+ ConnectionBandsDef::band_iterator ConnectionBandsDef::
+ end_band ()
+ {
+ return band_.end ();
+ }
+
+ ConnectionBandsDef::band_const_iterator ConnectionBandsDef::
+ begin_band () const
+ {
+ return band_.begin ();
+ }
+
+ ConnectionBandsDef::band_const_iterator ConnectionBandsDef::
+ end_band () const
+ {
+ return band_.end ();
+ }
+
+ void ConnectionBandsDef::
+ add_band (::CIAO::Config_Handlers::PriorityBandDef const& e)
+ {
+ band_.push_back (e);
+ }
+
+ size_t ConnectionBandsDef::
+ count_band(void) const
+ {
+ return band_.size ();
+ }
+
+ // ConnectionBandsDef
+ //
+ bool ConnectionBandsDef::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& ConnectionBandsDef::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& ConnectionBandsDef::
+ id ()
+ {
+ return *id_;
+ }
+
+ void ConnectionBandsDef::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // PriorityBandDef
+ //
+
+ PriorityBandDef::
+ PriorityBandDef (::XMLSchema::int_ const& low__,
+ ::XMLSchema::int_ const& high__)
+ :
+ ::XSCRT::Type (),
+ low_ (new ::XMLSchema::int_ (low__)),
+ high_ (new ::XMLSchema::int_ (high__)),
+ regulator__ ()
+ {
+ low_->container (this);
+ high_->container (this);
+ }
+
+ PriorityBandDef::
+ PriorityBandDef (::CIAO::Config_Handlers::PriorityBandDef const& s)
+ :
+ ::XSCRT::Type (),
+ low_ (new ::XMLSchema::int_ (*s.low_)),
+ high_ (new ::XMLSchema::int_ (*s.high_)),
+ regulator__ ()
+ {
+ low_->container (this);
+ high_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::PriorityBandDef& PriorityBandDef::
+ operator= (::CIAO::Config_Handlers::PriorityBandDef const& s)
+ {
+ low (s.low ());
+
+ high (s.high ());
+
+ return *this;
+ }
+
+
+ // PriorityBandDef
+ //
+ ::XMLSchema::int_ const& PriorityBandDef::
+ low () const
+ {
+ return *low_;
+ }
+
+ void PriorityBandDef::
+ low (::XMLSchema::int_ const& e)
+ {
+ *low_ = e;
+ }
+
+ // PriorityBandDef
+ //
+ ::XMLSchema::int_ const& PriorityBandDef::
+ high () const
+ {
+ return *high_;
+ }
+
+ void PriorityBandDef::
+ high (::XMLSchema::int_ const& e)
+ {
+ *high_ = e;
+ }
+
+
+ // PolicySet
+ //
+
+ PolicySet::
+ PolicySet ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ PolicySet::
+ PolicySet (::CIAO::Config_Handlers::PolicySet const& s)
+ :
+ ::XSCRT::Type (),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ {
+ for (priorityModel_const_iterator i (s.priorityModel_.begin ());i != s.priorityModel_.end ();++i) add_priorityModel (*i);
+ }
+
+ {
+ for (threadpool_const_iterator i (s.threadpool_.begin ());i != s.threadpool_.end ();++i) add_threadpool (*i);
+ }
+
+ {
+ for (priorityBandedConnection_const_iterator i (s.priorityBandedConnection_.begin ());i != s.priorityBandedConnection_.end ();++i) add_priorityBandedConnection (*i);
+ }
+
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::PolicySet& PolicySet::
+ operator= (::CIAO::Config_Handlers::PolicySet const& s)
+ {
+ priorityModel_.clear ();
+ {
+ for (priorityModel_const_iterator i (s.priorityModel_.begin ());i != s.priorityModel_.end ();++i) add_priorityModel (*i);
+ }
+
+ threadpool_.clear ();
+ {
+ for (threadpool_const_iterator i (s.threadpool_.begin ());i != s.threadpool_.end ();++i) add_threadpool (*i);
+ }
+
+ priorityBandedConnection_.clear ();
+ {
+ for (priorityBandedConnection_const_iterator i (s.priorityBandedConnection_.begin ());i != s.priorityBandedConnection_.end ();++i) add_priorityBandedConnection (*i);
+ }
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // PolicySet
+ //
+ PolicySet::priorityModel_iterator PolicySet::
+ begin_priorityModel ()
+ {
+ return priorityModel_.begin ();
+ }
+
+ PolicySet::priorityModel_iterator PolicySet::
+ end_priorityModel ()
+ {
+ return priorityModel_.end ();
+ }
+
+ PolicySet::priorityModel_const_iterator PolicySet::
+ begin_priorityModel () const
+ {
+ return priorityModel_.begin ();
+ }
+
+ PolicySet::priorityModel_const_iterator PolicySet::
+ end_priorityModel () const
+ {
+ return priorityModel_.end ();
+ }
+
+ void PolicySet::
+ add_priorityModel (::CIAO::Config_Handlers::PriorityModelPolicyDef const& e)
+ {
+ priorityModel_.push_back (e);
+ }
+
+ size_t PolicySet::
+ count_priorityModel(void) const
+ {
+ return priorityModel_.size ();
+ }
+
+ // PolicySet
+ //
+ PolicySet::threadpool_iterator PolicySet::
+ begin_threadpool ()
+ {
+ return threadpool_.begin ();
+ }
+
+ PolicySet::threadpool_iterator PolicySet::
+ end_threadpool ()
+ {
+ return threadpool_.end ();
+ }
+
+ PolicySet::threadpool_const_iterator PolicySet::
+ begin_threadpool () const
+ {
+ return threadpool_.begin ();
+ }
+
+ PolicySet::threadpool_const_iterator PolicySet::
+ end_threadpool () const
+ {
+ return threadpool_.end ();
+ }
+
+ void PolicySet::
+ add_threadpool (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+ {
+ threadpool_.push_back (e);
+ }
+
+ size_t PolicySet::
+ count_threadpool(void) const
+ {
+ return threadpool_.size ();
+ }
+
+ // PolicySet
+ //
+ PolicySet::priorityBandedConnection_iterator PolicySet::
+ begin_priorityBandedConnection ()
+ {
+ return priorityBandedConnection_.begin ();
+ }
+
+ PolicySet::priorityBandedConnection_iterator PolicySet::
+ end_priorityBandedConnection ()
+ {
+ return priorityBandedConnection_.end ();
+ }
+
+ PolicySet::priorityBandedConnection_const_iterator PolicySet::
+ begin_priorityBandedConnection () const
+ {
+ return priorityBandedConnection_.begin ();
+ }
+
+ PolicySet::priorityBandedConnection_const_iterator PolicySet::
+ end_priorityBandedConnection () const
+ {
+ return priorityBandedConnection_.end ();
+ }
+
+ void PolicySet::
+ add_priorityBandedConnection (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+ {
+ priorityBandedConnection_.push_back (e);
+ }
+
+ size_t PolicySet::
+ count_priorityBandedConnection(void) const
+ {
+ return priorityBandedConnection_.size ();
+ }
+
+ // PolicySet
+ //
+ bool PolicySet::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& PolicySet::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& PolicySet::
+ id ()
+ {
+ return *id_;
+ }
+
+ void PolicySet::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // PriorityModel
+ //
+
+ PriorityModel::Value PriorityModel::
+ integral () const
+ {
+ return v_;
+ }
+
+ bool
+ operator== (::CIAO::Config_Handlers::PriorityModel const& a, ::CIAO::Config_Handlers::PriorityModel const& b)
+ {
+ return a.v_ == b.v_;
+ }
+
+ bool
+ operator!= (::CIAO::Config_Handlers::PriorityModel const& a, ::CIAO::Config_Handlers::PriorityModel const& b)
+ {
+ return a.v_ != b.v_;
+ }
+
+ PriorityModel::
+ PriorityModel (PriorityModel::Value v)
+ : v_ (v)
+ {
+ }
+
+ // PriorityModelPolicyDef
+ //
+
+ PriorityModelPolicyDef::
+ PriorityModelPolicyDef (::CIAO::Config_Handlers::PriorityModel const& priority_model__)
+ :
+ ::XSCRT::Type (),
+ priority_model_ (new ::CIAO::Config_Handlers::PriorityModel (priority_model__)),
+ regulator__ ()
+ {
+ priority_model_->container (this);
+ }
+
+ PriorityModelPolicyDef::
+ PriorityModelPolicyDef (::CIAO::Config_Handlers::PriorityModelPolicyDef const& s)
+ :
+ ::XSCRT::Type (),
+ priority_model_ (new ::CIAO::Config_Handlers::PriorityModel (*s.priority_model_)),
+ server_priority_ (s.server_priority_.get () ? new ::CIAO::Config_Handlers::Priority (*s.server_priority_) : 0),
+ regulator__ ()
+ {
+ priority_model_->container (this);
+ if (server_priority_.get ()) server_priority_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::PriorityModelPolicyDef& PriorityModelPolicyDef::
+ operator= (::CIAO::Config_Handlers::PriorityModelPolicyDef const& s)
+ {
+ priority_model (s.priority_model ());
+
+ if (s.server_priority_.get ()) server_priority (*(s.server_priority_));
+ else server_priority_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > (0);
+
+ return *this;
+ }
+
+
+ // PriorityModelPolicyDef
+ //
+ ::CIAO::Config_Handlers::PriorityModel const& PriorityModelPolicyDef::
+ priority_model () const
+ {
+ return *priority_model_;
+ }
+
+ void PriorityModelPolicyDef::
+ priority_model (::CIAO::Config_Handlers::PriorityModel const& e)
+ {
+ *priority_model_ = e;
+ }
+
+ // PriorityModelPolicyDef
+ //
+ bool PriorityModelPolicyDef::
+ server_priority_p () const
+ {
+ return server_priority_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::Priority const& PriorityModelPolicyDef::
+ server_priority () const
+ {
+ return *server_priority_;
+ }
+
+ ::CIAO::Config_Handlers::Priority& PriorityModelPolicyDef::
+ server_priority ()
+ {
+ return *server_priority_;
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority (::CIAO::Config_Handlers::Priority const& e)
+ {
+ if (server_priority_.get ())
+ {
+ *server_priority_ = e;
+ }
+
+ else
+ {
+ server_priority_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > (new ::CIAO::Config_Handlers::Priority (e));
+ server_priority_->container (this);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ServerResourcesDef
+ //
+
+ ServerResourcesDef::
+ ServerResourcesDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "cmdline")
+ {
+ ::CIAO::Config_Handlers::ServerCmdlineOptions t (e);
+ cmdline (t);
+ }
+
+ else if (n == "svcconf")
+ {
+ ::CIAO::Config_Handlers::ACESvcConf t (e);
+ svcconf (t);
+ }
+
+ else if (n == "orbConfigs")
+ {
+ orbConfigs_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ORBConfigs > (new ::CIAO::Config_Handlers::ORBConfigs (e));
+ orbConfigs_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ServerCmdlineOptions
+ //
+
+ ServerCmdlineOptions::
+ ServerCmdlineOptions (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "arg")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ add_arg (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ACESvcConf
+ //
+
+ ACESvcConf::
+ ACESvcConf (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "uri")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ uri (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ORBConfigs
+ //
+
+ ORBConfigs::
+ ORBConfigs (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "resources")
+ {
+ ::CIAO::Config_Handlers::ORBResources t (e);
+ resources (t);
+ }
+
+ else if (n == "policySet")
+ {
+ ::CIAO::Config_Handlers::PolicySet t (e);
+ add_policySet (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ORBResources
+ //
+
+ ORBResources::
+ ORBResources (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "threadpool")
+ {
+ ::CIAO::Config_Handlers::ThreadpoolDef t (e);
+ add_threadpool (t);
+ }
+
+ else if (n == "threadpoolWithLanes")
+ {
+ ::CIAO::Config_Handlers::ThreadpoolWithLanesDef t (e);
+ add_threadpoolWithLanes (t);
+ }
+
+ else if (n == "connectionBands")
+ {
+ ::CIAO::Config_Handlers::ConnectionBandsDef t (e);
+ add_connectionBands (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // Priority
+ //
+
+ Priority::
+ Priority (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+ }
+
+ Priority::
+ Priority (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+ :
+ Base__ (a),
+ regulator__ ()
+ {
+ }
+
+ // ThreadpoolDef
+ //
+
+ ThreadpoolDef::
+ ThreadpoolDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "stacksize")
+ {
+ stacksize_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ stacksize_->container (this);
+ }
+
+ else if (n == "static_threads")
+ {
+ static_threads_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ static_threads_->container (this);
+ }
+
+ else if (n == "dynamic_threads")
+ {
+ dynamic_threads_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ dynamic_threads_->container (this);
+ }
+
+ else if (n == "default_priority")
+ {
+ default_priority_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > (new ::CIAO::Config_Handlers::Priority (e));
+ default_priority_->container (this);
+ }
+
+ else if (n == "allow_request_buffering")
+ {
+ allow_request_buffering_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+ allow_request_buffering_->container (this);
+ }
+
+ else if (n == "max_buffered_requests")
+ {
+ max_buffered_requests_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ max_buffered_requests_->container (this);
+ }
+
+ else if (n == "max_request_buffered_size")
+ {
+ max_request_buffered_size_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ max_request_buffered_size_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+
+ ThreadpoolWithLanesDef::
+ ThreadpoolWithLanesDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "threadpoolLane")
+ {
+ ::CIAO::Config_Handlers::ThreadpoolLaneDef t (e);
+ add_threadpoolLane (t);
+ }
+
+ else if (n == "stacksize")
+ {
+ stacksize_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ stacksize_->container (this);
+ }
+
+ else if (n == "allow_borrowing")
+ {
+ allow_borrowing_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+ allow_borrowing_->container (this);
+ }
+
+ else if (n == "allow_request_buffering")
+ {
+ allow_request_buffering_ = ::std::auto_ptr< ::XMLSchema::boolean > (new ::XMLSchema::boolean (e));
+ allow_request_buffering_->container (this);
+ }
+
+ else if (n == "max_buffered_requests")
+ {
+ max_buffered_requests_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ max_buffered_requests_->container (this);
+ }
+
+ else if (n == "max_request_buffered_size")
+ {
+ max_request_buffered_size_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ max_request_buffered_size_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ThreadpoolLaneDef
+ //
+
+ ThreadpoolLaneDef::
+ ThreadpoolLaneDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "static_threads")
+ {
+ static_threads_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ static_threads_->container (this);
+ }
+
+ else if (n == "dynamic_threads")
+ {
+ dynamic_threads_ = ::std::auto_ptr< ::XMLSchema::unsignedLong > (new ::XMLSchema::unsignedLong (e));
+ dynamic_threads_->container (this);
+ }
+
+ else if (n == "priority")
+ {
+ priority_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > (new ::CIAO::Config_Handlers::Priority (e));
+ priority_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // ConnectionBandsDef
+ //
+
+ ConnectionBandsDef::
+ ConnectionBandsDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "band")
+ {
+ ::CIAO::Config_Handlers::PriorityBandDef t (e);
+ add_band (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // PriorityBandDef
+ //
+
+ PriorityBandDef::
+ PriorityBandDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "low")
+ {
+ low_ = ::std::auto_ptr< ::XMLSchema::int_ > (new ::XMLSchema::int_ (e));
+ low_->container (this);
+ }
+
+ else if (n == "high")
+ {
+ high_ = ::std::auto_ptr< ::XMLSchema::int_ > (new ::XMLSchema::int_ (e));
+ high_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // PolicySet
+ //
+
+ PolicySet::
+ PolicySet (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "priorityModel")
+ {
+ ::CIAO::Config_Handlers::PriorityModelPolicyDef t (e);
+ add_priorityModel (t);
+ }
+
+ else if (n == "threadpool")
+ {
+ ::XMLSchema::IDREF< ACE_TCHAR > t (e);
+ add_threadpool (t);
+ }
+
+ else if (n == "priorityBandedConnection")
+ {
+ ::XMLSchema::IDREF< ACE_TCHAR > t (e);
+ add_priorityBandedConnection (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "id")
+ {
+ ::XMLSchema::ID< ACE_TCHAR > t (a);
+ id (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // PriorityModel
+ //
+
+ PriorityModel::
+ PriorityModel (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ : ::XSCRT::Type (e)
+ {
+ ::std::basic_string< ACE_TCHAR > v (e.value ());
+
+ if (v == "SERVER_DECLARED") v_ = SERVER_DECLARED_l;
+ else if (v == "CLIENT_PROPAGATED") v_ = CLIENT_PROPAGATED_l;
+ else
+ {
+ }
+ }
+
+ PriorityModel::
+ PriorityModel (::XSCRT::XML::Attribute< ACE_TCHAR > const& a)
+ : ::XSCRT::Type (a)
+ {
+ ::std::basic_string< ACE_TCHAR > v (a.value ());
+
+ if (v == "SERVER_DECLARED") v_ = SERVER_DECLARED_l;
+ else if (v == "CLIENT_PROPAGATED") v_ = CLIENT_PROPAGATED_l;
+ else
+ {
+ }
+ }
+
+ PriorityModel const PriorityModel::SERVER_DECLARED (PriorityModel::SERVER_DECLARED_l);
+ PriorityModel const PriorityModel::CLIENT_PROPAGATED (PriorityModel::CLIENT_PROPAGATED_l);
+
+ // PriorityModelPolicyDef
+ //
+
+ PriorityModelPolicyDef::
+ PriorityModelPolicyDef (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "priority_model")
+ {
+ priority_model_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PriorityModel > (new ::CIAO::Config_Handlers::PriorityModel (e));
+ priority_model_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "server_priority")
+ {
+ ::CIAO::Config_Handlers::Priority t (a);
+ server_priority (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ ::CIAO::Config_Handlers::ServerResourcesDef
+ ServerResources (xercesc::DOMDocument const* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () == "ServerResources")
+ {
+ ::CIAO::Config_Handlers::ServerResourcesDef r (e);
+ return r;
+ }
+
+ else
+ {
+ throw 1;
+ }
+ }
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+ struct ServerResourcesDefTypeInfoInitializer
+ {
+ ServerResourcesDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ServerResourcesDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ServerResourcesDefTypeInfoInitializer ServerResourcesDefTypeInfoInitializer_;
+
+ struct ServerCmdlineOptionsTypeInfoInitializer
+ {
+ ServerCmdlineOptionsTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ServerCmdlineOptions));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ServerCmdlineOptionsTypeInfoInitializer ServerCmdlineOptionsTypeInfoInitializer_;
+
+ struct ACESvcConfTypeInfoInitializer
+ {
+ ACESvcConfTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ACESvcConf));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ACESvcConfTypeInfoInitializer ACESvcConfTypeInfoInitializer_;
+
+ struct ORBConfigsTypeInfoInitializer
+ {
+ ORBConfigsTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ORBConfigs));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ORBConfigsTypeInfoInitializer ORBConfigsTypeInfoInitializer_;
+
+ struct ORBResourcesTypeInfoInitializer
+ {
+ ORBResourcesTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ORBResources));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ORBResourcesTypeInfoInitializer ORBResourcesTypeInfoInitializer_;
+
+ struct PriorityTypeInfoInitializer
+ {
+ PriorityTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (Priority));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XMLSchema::int_));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PriorityTypeInfoInitializer PriorityTypeInfoInitializer_;
+
+ struct ThreadpoolDefTypeInfoInitializer
+ {
+ ThreadpoolDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ThreadpoolDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ThreadpoolDefTypeInfoInitializer ThreadpoolDefTypeInfoInitializer_;
+
+ struct ThreadpoolWithLanesDefTypeInfoInitializer
+ {
+ ThreadpoolWithLanesDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ThreadpoolWithLanesDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ThreadpoolWithLanesDefTypeInfoInitializer ThreadpoolWithLanesDefTypeInfoInitializer_;
+
+ struct ThreadpoolLaneDefTypeInfoInitializer
+ {
+ ThreadpoolLaneDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ThreadpoolLaneDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ThreadpoolLaneDefTypeInfoInitializer ThreadpoolLaneDefTypeInfoInitializer_;
+
+ struct ConnectionBandsDefTypeInfoInitializer
+ {
+ ConnectionBandsDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ConnectionBandsDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ConnectionBandsDefTypeInfoInitializer ConnectionBandsDefTypeInfoInitializer_;
+
+ struct PriorityBandDefTypeInfoInitializer
+ {
+ PriorityBandDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (PriorityBandDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PriorityBandDefTypeInfoInitializer PriorityBandDefTypeInfoInitializer_;
+
+ struct PolicySetTypeInfoInitializer
+ {
+ PolicySetTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (PolicySet));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PolicySetTypeInfoInitializer PolicySetTypeInfoInitializer_;
+
+ struct PriorityModelTypeInfoInitializer
+ {
+ PriorityModelTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (PriorityModel));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PriorityModelTypeInfoInitializer PriorityModelTypeInfoInitializer_;
+
+ struct PriorityModelPolicyDefTypeInfoInitializer
+ {
+ PriorityModelPolicyDefTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (PriorityModelPolicyDef));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PriorityModelPolicyDefTypeInfoInitializer PriorityModelPolicyDefTypeInfoInitializer_;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ // ServerResourcesDef
+ //
+ //
+
+ void ServerResourcesDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.cmdline_p ()) cmdline (o);
+ else cmdline_none (o);
+ if (o.svcconf_p ()) svcconf (o);
+ else svcconf_none (o);
+ orbConfigs (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ServerResourcesDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.cmdline_p ()) cmdline (o);
+ else cmdline_none (o);
+ if (o.svcconf_p ()) svcconf (o);
+ else svcconf_none (o);
+ orbConfigs (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ServerResourcesDef::
+ pre (Type&)
+ {
+ }
+
+ void ServerResourcesDef::
+ pre (Type const&)
+ {
+ }
+
+ void ServerResourcesDef::
+ cmdline (Type& o)
+ {
+ dispatch (o.cmdline ());
+ }
+
+ void ServerResourcesDef::
+ cmdline (Type const& o)
+ {
+ dispatch (o.cmdline ());
+ }
+
+ void ServerResourcesDef::
+ cmdline_none (Type&)
+ {
+ }
+
+ void ServerResourcesDef::
+ cmdline_none (Type const&)
+ {
+ }
+
+ void ServerResourcesDef::
+ svcconf (Type& o)
+ {
+ dispatch (o.svcconf ());
+ }
+
+ void ServerResourcesDef::
+ svcconf (Type const& o)
+ {
+ dispatch (o.svcconf ());
+ }
+
+ void ServerResourcesDef::
+ svcconf_none (Type&)
+ {
+ }
+
+ void ServerResourcesDef::
+ svcconf_none (Type const&)
+ {
+ }
+
+ void ServerResourcesDef::
+ orbConfigs (Type& o)
+ {
+ dispatch (o.orbConfigs ());
+ }
+
+ void ServerResourcesDef::
+ orbConfigs (Type const& o)
+ {
+ dispatch (o.orbConfigs ());
+ }
+
+ void ServerResourcesDef::
+ id (Type& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ServerResourcesDef::
+ id (Type const& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ServerResourcesDef::
+ id_none (Type&)
+ {
+ }
+
+ void ServerResourcesDef::
+ id_none (Type const&)
+ {
+ }
+
+ void ServerResourcesDef::
+ post (Type&)
+ {
+ }
+
+ void ServerResourcesDef::
+ post (Type const&)
+ {
+ }
+
+ // ServerCmdlineOptions
+ //
+ //
+
+ void ServerCmdlineOptions::
+ traverse (Type& o)
+ {
+ pre (o);
+ arg (o);
+ post (o);
+ }
+
+ void ServerCmdlineOptions::
+ traverse (Type const& o)
+ {
+ pre (o);
+ arg (o);
+ post (o);
+ }
+
+ void ServerCmdlineOptions::
+ pre (Type&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ pre (Type const&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ServerCmdlineOptions::Type::arg_iterator b (o.begin_arg()), e (o.end_arg());
+
+ if (b != e)
+ {
+ arg_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) arg_next (o);
+ }
+
+ arg_post (o);
+ }
+ }
+
+ void ServerCmdlineOptions::
+ arg (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ServerCmdlineOptions::Type::arg_const_iterator b (o.begin_arg()), e (o.end_arg());
+
+ if (b != e)
+ {
+ arg_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) arg_next (o);
+ }
+
+ arg_post (o);
+ }
+ }
+
+ void ServerCmdlineOptions::
+ arg_pre (Type&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg_pre (Type const&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg_next (Type&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg_next (Type const&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg_post (Type&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ arg_post (Type const&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ post (Type&)
+ {
+ }
+
+ void ServerCmdlineOptions::
+ post (Type const&)
+ {
+ }
+
+ // ACESvcConf
+ //
+ //
+
+ void ACESvcConf::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.uri_p ()) uri (o);
+ else uri_none (o);
+ post (o);
+ }
+
+ void ACESvcConf::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.uri_p ()) uri (o);
+ else uri_none (o);
+ post (o);
+ }
+
+ void ACESvcConf::
+ pre (Type&)
+ {
+ }
+
+ void ACESvcConf::
+ pre (Type const&)
+ {
+ }
+
+ void ACESvcConf::
+ uri (Type& o)
+ {
+ dispatch (o.uri ());
+ }
+
+ void ACESvcConf::
+ uri (Type const& o)
+ {
+ dispatch (o.uri ());
+ }
+
+ void ACESvcConf::
+ uri_none (Type&)
+ {
+ }
+
+ void ACESvcConf::
+ uri_none (Type const&)
+ {
+ }
+
+ void ACESvcConf::
+ post (Type&)
+ {
+ }
+
+ void ACESvcConf::
+ post (Type const&)
+ {
+ }
+
+ // ORBConfigs
+ //
+ //
+
+ void ORBConfigs::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.resources_p ()) resources (o);
+ else resources_none (o);
+ policySet (o);
+ post (o);
+ }
+
+ void ORBConfigs::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.resources_p ()) resources (o);
+ else resources_none (o);
+ policySet (o);
+ post (o);
+ }
+
+ void ORBConfigs::
+ pre (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ pre (Type const&)
+ {
+ }
+
+ void ORBConfigs::
+ resources (Type& o)
+ {
+ dispatch (o.resources ());
+ }
+
+ void ORBConfigs::
+ resources (Type const& o)
+ {
+ dispatch (o.resources ());
+ }
+
+ void ORBConfigs::
+ resources_none (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ resources_none (Type const&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBConfigs::Type::policySet_iterator b (o.begin_policySet()), e (o.end_policySet());
+
+ if (b != e)
+ {
+ policySet_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) policySet_next (o);
+ }
+
+ policySet_post (o);
+ }
+ }
+
+ void ORBConfigs::
+ policySet (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBConfigs::Type::policySet_const_iterator b (o.begin_policySet()), e (o.end_policySet());
+
+ if (b != e)
+ {
+ policySet_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) policySet_next (o);
+ }
+
+ policySet_post (o);
+ }
+ }
+
+ void ORBConfigs::
+ policySet_pre (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet_pre (Type const&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet_next (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet_next (Type const&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet_post (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ policySet_post (Type const&)
+ {
+ }
+
+ void ORBConfigs::
+ post (Type&)
+ {
+ }
+
+ void ORBConfigs::
+ post (Type const&)
+ {
+ }
+
+ // ORBResources
+ //
+ //
+
+ void ORBResources::
+ traverse (Type& o)
+ {
+ pre (o);
+ threadpool (o);
+ threadpoolWithLanes (o);
+ connectionBands (o);
+ post (o);
+ }
+
+ void ORBResources::
+ traverse (Type const& o)
+ {
+ pre (o);
+ threadpool (o);
+ threadpoolWithLanes (o);
+ connectionBands (o);
+ post (o);
+ }
+
+ void ORBResources::
+ pre (Type&)
+ {
+ }
+
+ void ORBResources::
+ pre (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpool (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::threadpool_iterator b (o.begin_threadpool()), e (o.end_threadpool());
+
+ if (b != e)
+ {
+ threadpool_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpool_next (o);
+ }
+
+ threadpool_post (o);
+ }
+
+ else threadpool_none (o);
+ }
+
+ void ORBResources::
+ threadpool (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::threadpool_const_iterator b (o.begin_threadpool()), e (o.end_threadpool());
+
+ if (b != e)
+ {
+ threadpool_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpool_next (o);
+ }
+
+ threadpool_post (o);
+ }
+
+ else threadpool_none (o);
+ }
+
+ void ORBResources::
+ threadpool_pre (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_pre (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_next (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_next (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_post (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_post (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_none (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpool_none (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::threadpoolWithLanes_iterator b (o.begin_threadpoolWithLanes()), e (o.end_threadpoolWithLanes());
+
+ if (b != e)
+ {
+ threadpoolWithLanes_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpoolWithLanes_next (o);
+ }
+
+ threadpoolWithLanes_post (o);
+ }
+
+ else threadpoolWithLanes_none (o);
+ }
+
+ void ORBResources::
+ threadpoolWithLanes (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::threadpoolWithLanes_const_iterator b (o.begin_threadpoolWithLanes()), e (o.end_threadpoolWithLanes());
+
+ if (b != e)
+ {
+ threadpoolWithLanes_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpoolWithLanes_next (o);
+ }
+
+ threadpoolWithLanes_post (o);
+ }
+
+ else threadpoolWithLanes_none (o);
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_pre (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_pre (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_next (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_next (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_post (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_post (Type const&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_none (Type&)
+ {
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_none (Type const&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::connectionBands_iterator b (o.begin_connectionBands()), e (o.end_connectionBands());
+
+ if (b != e)
+ {
+ connectionBands_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) connectionBands_next (o);
+ }
+
+ connectionBands_post (o);
+ }
+
+ else connectionBands_none (o);
+ }
+
+ void ORBResources::
+ connectionBands (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ORBResources::Type::connectionBands_const_iterator b (o.begin_connectionBands()), e (o.end_connectionBands());
+
+ if (b != e)
+ {
+ connectionBands_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) connectionBands_next (o);
+ }
+
+ connectionBands_post (o);
+ }
+
+ else connectionBands_none (o);
+ }
+
+ void ORBResources::
+ connectionBands_pre (Type&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_pre (Type const&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_next (Type&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_next (Type const&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_post (Type&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_post (Type const&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_none (Type&)
+ {
+ }
+
+ void ORBResources::
+ connectionBands_none (Type const&)
+ {
+ }
+
+ void ORBResources::
+ post (Type&)
+ {
+ }
+
+ void ORBResources::
+ post (Type const&)
+ {
+ }
+
+ // Priority
+ //
+ //
+
+ void Priority::
+ traverse (Type& o)
+ {
+ pre (o);
+ post (o);
+ }
+
+ void Priority::
+ traverse (Type const& o)
+ {
+ pre (o);
+ post (o);
+ }
+
+ void Priority::
+ pre (Type&)
+ {
+ }
+
+ void Priority::
+ pre (Type const&)
+ {
+ }
+
+ void Priority::
+ post (Type&)
+ {
+ }
+
+ void Priority::
+ post (Type const&)
+ {
+ }
+
+ // ThreadpoolDef
+ //
+ //
+
+ void ThreadpoolDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ stacksize (o);
+ static_threads (o);
+ dynamic_threads (o);
+ default_priority (o);
+ allow_request_buffering (o);
+ max_buffered_requests (o);
+ max_request_buffered_size (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ThreadpoolDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ stacksize (o);
+ static_threads (o);
+ dynamic_threads (o);
+ default_priority (o);
+ allow_request_buffering (o);
+ max_buffered_requests (o);
+ max_request_buffered_size (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ThreadpoolDef::
+ pre (Type&)
+ {
+ }
+
+ void ThreadpoolDef::
+ pre (Type const&)
+ {
+ }
+
+ void ThreadpoolDef::
+ stacksize (Type& o)
+ {
+ dispatch (o.stacksize ());
+ }
+
+ void ThreadpoolDef::
+ stacksize (Type const& o)
+ {
+ dispatch (o.stacksize ());
+ }
+
+ void ThreadpoolDef::
+ static_threads (Type& o)
+ {
+ dispatch (o.static_threads ());
+ }
+
+ void ThreadpoolDef::
+ static_threads (Type const& o)
+ {
+ dispatch (o.static_threads ());
+ }
+
+ void ThreadpoolDef::
+ dynamic_threads (Type& o)
+ {
+ dispatch (o.dynamic_threads ());
+ }
+
+ void ThreadpoolDef::
+ dynamic_threads (Type const& o)
+ {
+ dispatch (o.dynamic_threads ());
+ }
+
+ void ThreadpoolDef::
+ default_priority (Type& o)
+ {
+ dispatch (o.default_priority ());
+ }
+
+ void ThreadpoolDef::
+ default_priority (Type const& o)
+ {
+ dispatch (o.default_priority ());
+ }
+
+ void ThreadpoolDef::
+ allow_request_buffering (Type& o)
+ {
+ dispatch (o.allow_request_buffering ());
+ }
+
+ void ThreadpoolDef::
+ allow_request_buffering (Type const& o)
+ {
+ dispatch (o.allow_request_buffering ());
+ }
+
+ void ThreadpoolDef::
+ max_buffered_requests (Type& o)
+ {
+ dispatch (o.max_buffered_requests ());
+ }
+
+ void ThreadpoolDef::
+ max_buffered_requests (Type const& o)
+ {
+ dispatch (o.max_buffered_requests ());
+ }
+
+ void ThreadpoolDef::
+ max_request_buffered_size (Type& o)
+ {
+ dispatch (o.max_request_buffered_size ());
+ }
+
+ void ThreadpoolDef::
+ max_request_buffered_size (Type const& o)
+ {
+ dispatch (o.max_request_buffered_size ());
+ }
+
+ void ThreadpoolDef::
+ id (Type& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ThreadpoolDef::
+ id (Type const& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ThreadpoolDef::
+ id_none (Type&)
+ {
+ }
+
+ void ThreadpoolDef::
+ id_none (Type const&)
+ {
+ }
+
+ void ThreadpoolDef::
+ post (Type&)
+ {
+ }
+
+ void ThreadpoolDef::
+ post (Type const&)
+ {
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ //
+
+ void ThreadpoolWithLanesDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ threadpoolLane (o);
+ stacksize (o);
+ allow_borrowing (o);
+ allow_request_buffering (o);
+ max_buffered_requests (o);
+ max_request_buffered_size (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ThreadpoolWithLanesDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ threadpoolLane (o);
+ stacksize (o);
+ allow_borrowing (o);
+ allow_request_buffering (o);
+ max_buffered_requests (o);
+ max_request_buffered_size (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ThreadpoolWithLanesDef::
+ pre (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ pre (Type const&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ThreadpoolWithLanesDef::Type::threadpoolLane_iterator b (o.begin_threadpoolLane()), e (o.end_threadpoolLane());
+
+ if (b != e)
+ {
+ threadpoolLane_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpoolLane_next (o);
+ }
+
+ threadpoolLane_post (o);
+ }
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ThreadpoolWithLanesDef::Type::threadpoolLane_const_iterator b (o.begin_threadpoolLane()), e (o.end_threadpoolLane());
+
+ if (b != e)
+ {
+ threadpoolLane_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpoolLane_next (o);
+ }
+
+ threadpoolLane_post (o);
+ }
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_pre (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_pre (Type const&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_next (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_next (Type const&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_post (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_post (Type const&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ stacksize (Type& o)
+ {
+ dispatch (o.stacksize ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ stacksize (Type const& o)
+ {
+ dispatch (o.stacksize ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_borrowing (Type& o)
+ {
+ dispatch (o.allow_borrowing ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_borrowing (Type const& o)
+ {
+ dispatch (o.allow_borrowing ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_request_buffering (Type& o)
+ {
+ dispatch (o.allow_request_buffering ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_request_buffering (Type const& o)
+ {
+ dispatch (o.allow_request_buffering ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_buffered_requests (Type& o)
+ {
+ dispatch (o.max_buffered_requests ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_buffered_requests (Type const& o)
+ {
+ dispatch (o.max_buffered_requests ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_request_buffered_size (Type& o)
+ {
+ dispatch (o.max_request_buffered_size ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_request_buffered_size (Type const& o)
+ {
+ dispatch (o.max_request_buffered_size ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ id (Type& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ id (Type const& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ThreadpoolWithLanesDef::
+ id_none (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ id_none (Type const&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ post (Type&)
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ post (Type const&)
+ {
+ }
+
+ // ThreadpoolLaneDef
+ //
+ //
+
+ void ThreadpoolLaneDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ static_threads (o);
+ dynamic_threads (o);
+ priority (o);
+ post (o);
+ }
+
+ void ThreadpoolLaneDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ static_threads (o);
+ dynamic_threads (o);
+ priority (o);
+ post (o);
+ }
+
+ void ThreadpoolLaneDef::
+ pre (Type&)
+ {
+ }
+
+ void ThreadpoolLaneDef::
+ pre (Type const&)
+ {
+ }
+
+ void ThreadpoolLaneDef::
+ static_threads (Type& o)
+ {
+ dispatch (o.static_threads ());
+ }
+
+ void ThreadpoolLaneDef::
+ static_threads (Type const& o)
+ {
+ dispatch (o.static_threads ());
+ }
+
+ void ThreadpoolLaneDef::
+ dynamic_threads (Type& o)
+ {
+ dispatch (o.dynamic_threads ());
+ }
+
+ void ThreadpoolLaneDef::
+ dynamic_threads (Type const& o)
+ {
+ dispatch (o.dynamic_threads ());
+ }
+
+ void ThreadpoolLaneDef::
+ priority (Type& o)
+ {
+ dispatch (o.priority ());
+ }
+
+ void ThreadpoolLaneDef::
+ priority (Type const& o)
+ {
+ dispatch (o.priority ());
+ }
+
+ void ThreadpoolLaneDef::
+ post (Type&)
+ {
+ }
+
+ void ThreadpoolLaneDef::
+ post (Type const&)
+ {
+ }
+
+ // ConnectionBandsDef
+ //
+ //
+
+ void ConnectionBandsDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ band (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ConnectionBandsDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ band (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void ConnectionBandsDef::
+ pre (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ pre (Type const&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ConnectionBandsDef::Type::band_iterator b (o.begin_band()), e (o.end_band());
+
+ if (b != e)
+ {
+ band_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) band_next (o);
+ }
+
+ band_post (o);
+ }
+ }
+
+ void ConnectionBandsDef::
+ band (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ConnectionBandsDef::Type::band_const_iterator b (o.begin_band()), e (o.end_band());
+
+ if (b != e)
+ {
+ band_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) band_next (o);
+ }
+
+ band_post (o);
+ }
+ }
+
+ void ConnectionBandsDef::
+ band_pre (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band_pre (Type const&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band_next (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band_next (Type const&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band_post (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ band_post (Type const&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ id (Type& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ConnectionBandsDef::
+ id (Type const& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void ConnectionBandsDef::
+ id_none (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ id_none (Type const&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ post (Type&)
+ {
+ }
+
+ void ConnectionBandsDef::
+ post (Type const&)
+ {
+ }
+
+ // PriorityBandDef
+ //
+ //
+
+ void PriorityBandDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ low (o);
+ high (o);
+ post (o);
+ }
+
+ void PriorityBandDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ low (o);
+ high (o);
+ post (o);
+ }
+
+ void PriorityBandDef::
+ pre (Type&)
+ {
+ }
+
+ void PriorityBandDef::
+ pre (Type const&)
+ {
+ }
+
+ void PriorityBandDef::
+ low (Type& o)
+ {
+ dispatch (o.low ());
+ }
+
+ void PriorityBandDef::
+ low (Type const& o)
+ {
+ dispatch (o.low ());
+ }
+
+ void PriorityBandDef::
+ high (Type& o)
+ {
+ dispatch (o.high ());
+ }
+
+ void PriorityBandDef::
+ high (Type const& o)
+ {
+ dispatch (o.high ());
+ }
+
+ void PriorityBandDef::
+ post (Type&)
+ {
+ }
+
+ void PriorityBandDef::
+ post (Type const&)
+ {
+ }
+
+ // PolicySet
+ //
+ //
+
+ void PolicySet::
+ traverse (Type& o)
+ {
+ pre (o);
+ priorityModel (o);
+ threadpool (o);
+ priorityBandedConnection (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void PolicySet::
+ traverse (Type const& o)
+ {
+ pre (o);
+ priorityModel (o);
+ threadpool (o);
+ priorityBandedConnection (o);
+ if (o.id_p ()) id (o);
+ else id_none (o);
+ post (o);
+ }
+
+ void PolicySet::
+ pre (Type&)
+ {
+ }
+
+ void PolicySet::
+ pre (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::priorityModel_iterator b (o.begin_priorityModel()), e (o.end_priorityModel());
+
+ if (b != e)
+ {
+ priorityModel_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) priorityModel_next (o);
+ }
+
+ priorityModel_post (o);
+ }
+
+ else priorityModel_none (o);
+ }
+
+ void PolicySet::
+ priorityModel (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::priorityModel_const_iterator b (o.begin_priorityModel()), e (o.end_priorityModel());
+
+ if (b != e)
+ {
+ priorityModel_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) priorityModel_next (o);
+ }
+
+ priorityModel_post (o);
+ }
+
+ else priorityModel_none (o);
+ }
+
+ void PolicySet::
+ priorityModel_pre (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_pre (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_next (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_next (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_post (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_post (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_none (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityModel_none (Type const&)
+ {
+ }
+
+ void PolicySet::
+ threadpool (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::threadpool_iterator b (o.begin_threadpool()), e (o.end_threadpool());
+
+ if (b != e)
+ {
+ threadpool_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpool_next (o);
+ }
+
+ threadpool_post (o);
+ }
+
+ else threadpool_none (o);
+ }
+
+ void PolicySet::
+ threadpool (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::threadpool_const_iterator b (o.begin_threadpool()), e (o.end_threadpool());
+
+ if (b != e)
+ {
+ threadpool_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) threadpool_next (o);
+ }
+
+ threadpool_post (o);
+ }
+
+ else threadpool_none (o);
+ }
+
+ void PolicySet::
+ threadpool_pre (Type&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_pre (Type const&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_next (Type&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_next (Type const&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_post (Type&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_post (Type const&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_none (Type&)
+ {
+ }
+
+ void PolicySet::
+ threadpool_none (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::priorityBandedConnection_iterator b (o.begin_priorityBandedConnection()), e (o.end_priorityBandedConnection());
+
+ if (b != e)
+ {
+ priorityBandedConnection_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) priorityBandedConnection_next (o);
+ }
+
+ priorityBandedConnection_post (o);
+ }
+
+ else priorityBandedConnection_none (o);
+ }
+
+ void PolicySet::
+ priorityBandedConnection (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PolicySet::Type::priorityBandedConnection_const_iterator b (o.begin_priorityBandedConnection()), e (o.end_priorityBandedConnection());
+
+ if (b != e)
+ {
+ priorityBandedConnection_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) priorityBandedConnection_next (o);
+ }
+
+ priorityBandedConnection_post (o);
+ }
+
+ else priorityBandedConnection_none (o);
+ }
+
+ void PolicySet::
+ priorityBandedConnection_pre (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_pre (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_next (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_next (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_post (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_post (Type const&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_none (Type&)
+ {
+ }
+
+ void PolicySet::
+ priorityBandedConnection_none (Type const&)
+ {
+ }
+
+ void PolicySet::
+ id (Type& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void PolicySet::
+ id (Type const& o)
+ {
+ dispatch (o.id ());
+ }
+
+ void PolicySet::
+ id_none (Type&)
+ {
+ }
+
+ void PolicySet::
+ id_none (Type const&)
+ {
+ }
+
+ void PolicySet::
+ post (Type&)
+ {
+ }
+
+ void PolicySet::
+ post (Type const&)
+ {
+ }
+
+ // PriorityModelPolicyDef
+ //
+ //
+
+ void PriorityModelPolicyDef::
+ traverse (Type& o)
+ {
+ pre (o);
+ priority_model (o);
+ if (o.server_priority_p ()) server_priority (o);
+ else server_priority_none (o);
+ post (o);
+ }
+
+ void PriorityModelPolicyDef::
+ traverse (Type const& o)
+ {
+ pre (o);
+ priority_model (o);
+ if (o.server_priority_p ()) server_priority (o);
+ else server_priority_none (o);
+ post (o);
+ }
+
+ void PriorityModelPolicyDef::
+ pre (Type&)
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ pre (Type const&)
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ priority_model (Type& o)
+ {
+ dispatch (o.priority_model ());
+ }
+
+ void PriorityModelPolicyDef::
+ priority_model (Type const& o)
+ {
+ dispatch (o.priority_model ());
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority (Type& o)
+ {
+ dispatch (o.server_priority ());
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority (Type const& o)
+ {
+ dispatch (o.server_priority ());
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority_none (Type&)
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority_none (Type const&)
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ post (Type&)
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ post (Type const&)
+ {
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ // ServerResourcesDef
+ //
+ //
+
+ ServerResourcesDef::
+ ServerResourcesDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ServerResourcesDef::
+ ServerResourcesDef ()
+ {
+ }
+
+ void ServerResourcesDef::
+ traverse (Type const& o)
+ {
+ Traversal::ServerResourcesDef::traverse (o);
+ }
+
+ void ServerResourcesDef::
+ cmdline (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("cmdline", top_ ()));
+ Traversal::ServerResourcesDef::cmdline (o);
+ pop_ ();
+ }
+
+ void ServerResourcesDef::
+ svcconf (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("svcconf", top_ ()));
+ Traversal::ServerResourcesDef::svcconf (o);
+ pop_ ();
+ }
+
+ void ServerResourcesDef::
+ orbConfigs (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("orbConfigs", top_ ()));
+ Traversal::ServerResourcesDef::orbConfigs (o);
+ pop_ ();
+ }
+
+ void ServerResourcesDef::
+ id (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+ attr_ (&a);
+ Traversal::ServerResourcesDef::id (o);
+ attr_ (0);
+ }
+
+ // ServerCmdlineOptions
+ //
+ //
+
+ ServerCmdlineOptions::
+ ServerCmdlineOptions (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ServerCmdlineOptions::
+ ServerCmdlineOptions ()
+ {
+ }
+
+ void ServerCmdlineOptions::
+ traverse (Type const& o)
+ {
+ Traversal::ServerCmdlineOptions::traverse (o);
+ }
+
+ void ServerCmdlineOptions::
+ arg_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("arg", top_ ()));
+ }
+
+ void ServerCmdlineOptions::
+ arg_next (Type const& o)
+ {
+ arg_post (o);
+ arg_pre (o);
+ }
+
+ void ServerCmdlineOptions::
+ arg_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ // ACESvcConf
+ //
+ //
+
+ ACESvcConf::
+ ACESvcConf (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ACESvcConf::
+ ACESvcConf ()
+ {
+ }
+
+ void ACESvcConf::
+ traverse (Type const& o)
+ {
+ Traversal::ACESvcConf::traverse (o);
+ }
+
+ void ACESvcConf::
+ uri (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("uri", top_ ()));
+ Traversal::ACESvcConf::uri (o);
+ pop_ ();
+ }
+
+ // ORBConfigs
+ //
+ //
+
+ ORBConfigs::
+ ORBConfigs (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ORBConfigs::
+ ORBConfigs ()
+ {
+ }
+
+ void ORBConfigs::
+ traverse (Type const& o)
+ {
+ Traversal::ORBConfigs::traverse (o);
+ }
+
+ void ORBConfigs::
+ resources (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resources", top_ ()));
+ Traversal::ORBConfigs::resources (o);
+ pop_ ();
+ }
+
+ void ORBConfigs::
+ policySet_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("policySet", top_ ()));
+ }
+
+ void ORBConfigs::
+ policySet_next (Type const& o)
+ {
+ policySet_post (o);
+ policySet_pre (o);
+ }
+
+ void ORBConfigs::
+ policySet_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ // ORBResources
+ //
+ //
+
+ ORBResources::
+ ORBResources (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ORBResources::
+ ORBResources ()
+ {
+ }
+
+ void ORBResources::
+ traverse (Type const& o)
+ {
+ Traversal::ORBResources::traverse (o);
+ }
+
+ void ORBResources::
+ threadpool_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("threadpool", top_ ()));
+ }
+
+ void ORBResources::
+ threadpool_next (Type const& o)
+ {
+ threadpool_post (o);
+ threadpool_pre (o);
+ }
+
+ void ORBResources::
+ threadpool_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("threadpoolWithLanes", top_ ()));
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_next (Type const& o)
+ {
+ threadpoolWithLanes_post (o);
+ threadpoolWithLanes_pre (o);
+ }
+
+ void ORBResources::
+ threadpoolWithLanes_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ORBResources::
+ connectionBands_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connectionBands", top_ ()));
+ }
+
+ void ORBResources::
+ connectionBands_next (Type const& o)
+ {
+ connectionBands_post (o);
+ connectionBands_pre (o);
+ }
+
+ void ORBResources::
+ connectionBands_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ // Priority
+ //
+ //
+
+ Priority::
+ Priority (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ Priority::
+ Priority ()
+ {
+ }
+
+ void Priority::
+ traverse (Type const& o)
+ {
+ Traversal::Priority::traverse (o);
+ }
+
+ // ThreadpoolDef
+ //
+ //
+
+ ThreadpoolDef::
+ ThreadpoolDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ThreadpoolDef::
+ ThreadpoolDef ()
+ {
+ }
+
+ void ThreadpoolDef::
+ traverse (Type const& o)
+ {
+ Traversal::ThreadpoolDef::traverse (o);
+ }
+
+ void ThreadpoolDef::
+ stacksize (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("stacksize", top_ ()));
+ Traversal::ThreadpoolDef::stacksize (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ static_threads (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("static_threads", top_ ()));
+ Traversal::ThreadpoolDef::static_threads (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ dynamic_threads (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dynamic_threads", top_ ()));
+ Traversal::ThreadpoolDef::dynamic_threads (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ default_priority (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("default_priority", top_ ()));
+ Traversal::ThreadpoolDef::default_priority (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ allow_request_buffering (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("allow_request_buffering", top_ ()));
+ Traversal::ThreadpoolDef::allow_request_buffering (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ max_buffered_requests (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("max_buffered_requests", top_ ()));
+ Traversal::ThreadpoolDef::max_buffered_requests (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ max_request_buffered_size (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("max_request_buffered_size", top_ ()));
+ Traversal::ThreadpoolDef::max_request_buffered_size (o);
+ pop_ ();
+ }
+
+ void ThreadpoolDef::
+ id (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+ attr_ (&a);
+ Traversal::ThreadpoolDef::id (o);
+ attr_ (0);
+ }
+
+ // ThreadpoolWithLanesDef
+ //
+ //
+
+ ThreadpoolWithLanesDef::
+ ThreadpoolWithLanesDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ThreadpoolWithLanesDef::
+ ThreadpoolWithLanesDef ()
+ {
+ }
+
+ void ThreadpoolWithLanesDef::
+ traverse (Type const& o)
+ {
+ Traversal::ThreadpoolWithLanesDef::traverse (o);
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("threadpoolLane", top_ ()));
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_next (Type const& o)
+ {
+ threadpoolLane_post (o);
+ threadpoolLane_pre (o);
+ }
+
+ void ThreadpoolWithLanesDef::
+ threadpoolLane_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ stacksize (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("stacksize", top_ ()));
+ Traversal::ThreadpoolWithLanesDef::stacksize (o);
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_borrowing (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("allow_borrowing", top_ ()));
+ Traversal::ThreadpoolWithLanesDef::allow_borrowing (o);
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ allow_request_buffering (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("allow_request_buffering", top_ ()));
+ Traversal::ThreadpoolWithLanesDef::allow_request_buffering (o);
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_buffered_requests (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("max_buffered_requests", top_ ()));
+ Traversal::ThreadpoolWithLanesDef::max_buffered_requests (o);
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ max_request_buffered_size (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("max_request_buffered_size", top_ ()));
+ Traversal::ThreadpoolWithLanesDef::max_request_buffered_size (o);
+ pop_ ();
+ }
+
+ void ThreadpoolWithLanesDef::
+ id (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+ attr_ (&a);
+ Traversal::ThreadpoolWithLanesDef::id (o);
+ attr_ (0);
+ }
+
+ // ThreadpoolLaneDef
+ //
+ //
+
+ ThreadpoolLaneDef::
+ ThreadpoolLaneDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ThreadpoolLaneDef::
+ ThreadpoolLaneDef ()
+ {
+ }
+
+ void ThreadpoolLaneDef::
+ traverse (Type const& o)
+ {
+ Traversal::ThreadpoolLaneDef::traverse (o);
+ }
+
+ void ThreadpoolLaneDef::
+ static_threads (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("static_threads", top_ ()));
+ Traversal::ThreadpoolLaneDef::static_threads (o);
+ pop_ ();
+ }
+
+ void ThreadpoolLaneDef::
+ dynamic_threads (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dynamic_threads", top_ ()));
+ Traversal::ThreadpoolLaneDef::dynamic_threads (o);
+ pop_ ();
+ }
+
+ void ThreadpoolLaneDef::
+ priority (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("priority", top_ ()));
+ Traversal::ThreadpoolLaneDef::priority (o);
+ pop_ ();
+ }
+
+ // ConnectionBandsDef
+ //
+ //
+
+ ConnectionBandsDef::
+ ConnectionBandsDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ConnectionBandsDef::
+ ConnectionBandsDef ()
+ {
+ }
+
+ void ConnectionBandsDef::
+ traverse (Type const& o)
+ {
+ Traversal::ConnectionBandsDef::traverse (o);
+ }
+
+ void ConnectionBandsDef::
+ band_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("band", top_ ()));
+ }
+
+ void ConnectionBandsDef::
+ band_next (Type const& o)
+ {
+ band_post (o);
+ band_pre (o);
+ }
+
+ void ConnectionBandsDef::
+ band_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ConnectionBandsDef::
+ id (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+ attr_ (&a);
+ Traversal::ConnectionBandsDef::id (o);
+ attr_ (0);
+ }
+
+ // PriorityBandDef
+ //
+ //
+
+ PriorityBandDef::
+ PriorityBandDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ PriorityBandDef::
+ PriorityBandDef ()
+ {
+ }
+
+ void PriorityBandDef::
+ traverse (Type const& o)
+ {
+ Traversal::PriorityBandDef::traverse (o);
+ }
+
+ void PriorityBandDef::
+ low (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("low", top_ ()));
+ Traversal::PriorityBandDef::low (o);
+ pop_ ();
+ }
+
+ void PriorityBandDef::
+ high (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("high", top_ ()));
+ Traversal::PriorityBandDef::high (o);
+ pop_ ();
+ }
+
+ // PolicySet
+ //
+ //
+
+ PolicySet::
+ PolicySet (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ PolicySet::
+ PolicySet ()
+ {
+ }
+
+ void PolicySet::
+ traverse (Type const& o)
+ {
+ Traversal::PolicySet::traverse (o);
+ }
+
+ void PolicySet::
+ priorityModel_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("priorityModel", top_ ()));
+ }
+
+ void PolicySet::
+ priorityModel_next (Type const& o)
+ {
+ priorityModel_post (o);
+ priorityModel_pre (o);
+ }
+
+ void PolicySet::
+ priorityModel_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void PolicySet::
+ threadpool_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("threadpool", top_ ()));
+ }
+
+ void PolicySet::
+ threadpool_next (Type const& o)
+ {
+ threadpool_post (o);
+ threadpool_pre (o);
+ }
+
+ void PolicySet::
+ threadpool_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void PolicySet::
+ priorityBandedConnection_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("priorityBandedConnection", top_ ()));
+ }
+
+ void PolicySet::
+ priorityBandedConnection_next (Type const& o)
+ {
+ priorityBandedConnection_post (o);
+ priorityBandedConnection_pre (o);
+ }
+
+ void PolicySet::
+ priorityBandedConnection_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void PolicySet::
+ id (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+ attr_ (&a);
+ Traversal::PolicySet::id (o);
+ attr_ (0);
+ }
+
+ // PriorityModel
+ //
+ //
+
+ PriorityModel::
+ PriorityModel (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ PriorityModel::
+ PriorityModel ()
+ {
+ }
+
+ void PriorityModel::
+ traverse (Type const& o)
+ {
+ ::std::basic_string< ACE_TCHAR > s;
+
+ if (o == ::CIAO::Config_Handlers::PriorityModel::SERVER_DECLARED) s = "SERVER_DECLARED";
+ else if (o == ::CIAO::Config_Handlers::PriorityModel::CLIENT_PROPAGATED) s = "CLIENT_PROPAGATED";
+ else
+ {
+ }
+
+ if (::XSCRT::XML::Attribute< ACE_TCHAR >* a = attr_ ())
+ {
+ a->value (s);
+ }
+
+ else
+ {
+ top_().value (s);
+ }
+ }
+
+ // PriorityModelPolicyDef
+ //
+ //
+
+ PriorityModelPolicyDef::
+ PriorityModelPolicyDef (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ PriorityModelPolicyDef::
+ PriorityModelPolicyDef ()
+ {
+ }
+
+ void PriorityModelPolicyDef::
+ traverse (Type const& o)
+ {
+ Traversal::PriorityModelPolicyDef::traverse (o);
+ }
+
+ void PriorityModelPolicyDef::
+ priority_model (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("priority_model", top_ ()));
+ Traversal::PriorityModelPolicyDef::priority_model (o);
+ pop_ ();
+ }
+
+ void PriorityModelPolicyDef::
+ server_priority (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("server_priority", "", top_ ());
+ attr_ (&a);
+ Traversal::PriorityModelPolicyDef::server_priority (o);
+ attr_ (0);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ void
+ ServerResources (::CIAO::Config_Handlers::ServerResourcesDef const& s, xercesc::DOMDocument* d)
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (d->getDocumentElement ());
+ if (e.name () != "ServerResources")
+ {
+ throw 1;
+ }
+
+ struct W : virtual ::CIAO::Config_Handlers::Writer::ServerResourcesDef,
+ virtual ::CIAO::Config_Handlers::Writer::ServerCmdlineOptions,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::string< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ACESvcConf,
+ virtual ::CIAO::Config_Handlers::Writer::ORBConfigs,
+ virtual ::CIAO::Config_Handlers::Writer::ORBResources,
+ virtual ::CIAO::Config_Handlers::Writer::ThreadpoolDef,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::unsignedLong, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::Priority,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::boolean, ACE_TCHAR >,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::ID< ACE_TCHAR >, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::ThreadpoolWithLanesDef,
+ virtual ::CIAO::Config_Handlers::Writer::ThreadpoolLaneDef,
+ virtual ::CIAO::Config_Handlers::Writer::ConnectionBandsDef,
+ virtual ::CIAO::Config_Handlers::Writer::PriorityBandDef,
+ virtual ::XMLSchema::Writer::FundamentalType< ::XMLSchema::int_, ACE_TCHAR >,
+ virtual ::CIAO::Config_Handlers::Writer::PolicySet,
+ virtual ::CIAO::Config_Handlers::Writer::PriorityModelPolicyDef,
+ virtual ::CIAO::Config_Handlers::Writer::PriorityModel,
+ virtual ::XMLSchema::Writer::IDREF< ACE_TCHAR >,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ W (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+ };
+
+ W w (e);
+ w.dispatch (s);
+ }
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
new file mode 100644
index 00000000000..7493f703fb9
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CIAOServerResources.hpp
@@ -0,0 +1,2546 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "RT_CCM_Handlers_Export.h"
+#ifndef CIAOSERVER_RESOURCES_HPP
+#define CIAOSERVER_RESOURCES_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ServerResourcesDef;
+ class ServerCmdlineOptions;
+ class ACESvcConf;
+ class ORBConfigs;
+ class ORBResources;
+ class Priority;
+ class ThreadpoolDef;
+ class ThreadpoolWithLanesDef;
+ class ThreadpoolLaneDef;
+ class ConnectionBandsDef;
+ class PriorityBandDef;
+ class PolicySet;
+ class PriorityModel;
+ class PriorityModelPolicyDef;
+ }
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class RT_CCM_Handlers_Export ServerResourcesDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // cmdline
+ //
+ public:
+ bool cmdline_p () const;
+ ::CIAO::Config_Handlers::ServerCmdlineOptions const& cmdline () const;
+ void cmdline (::CIAO::Config_Handlers::ServerCmdlineOptions const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ServerCmdlineOptions > cmdline_;
+
+ // svcconf
+ //
+ public:
+ bool svcconf_p () const;
+ ::CIAO::Config_Handlers::ACESvcConf const& svcconf () const;
+ void svcconf (::CIAO::Config_Handlers::ACESvcConf const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ACESvcConf > svcconf_;
+
+ // orbConfigs
+ //
+ public:
+ ::CIAO::Config_Handlers::ORBConfigs const& orbConfigs () const;
+ void orbConfigs (::CIAO::Config_Handlers::ORBConfigs const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ORBConfigs > orbConfigs_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ ServerResourcesDef (::CIAO::Config_Handlers::ORBConfigs const& orbConfigs__);
+
+ ServerResourcesDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ServerResourcesDef (ServerResourcesDef const& s);
+
+ ServerResourcesDef&
+ operator= (ServerResourcesDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ServerCmdlineOptions : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // arg
+ //
+ public:
+ typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator arg_iterator;
+ typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator arg_const_iterator;
+ arg_iterator begin_arg ();
+ arg_iterator end_arg ();
+ arg_const_iterator begin_arg () const;
+ arg_const_iterator end_arg () const;
+ void add_arg (::XMLSchema::string< ACE_TCHAR > const& );
+ size_t count_arg (void) const;
+
+ protected:
+ ::std::list< ::XMLSchema::string< ACE_TCHAR > > arg_;
+
+ public:
+ ServerCmdlineOptions ();
+
+ ServerCmdlineOptions (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ServerCmdlineOptions (ServerCmdlineOptions const& s);
+
+ ServerCmdlineOptions&
+ operator= (ServerCmdlineOptions const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ACESvcConf : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // uri
+ //
+ public:
+ bool uri_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& uri () const;
+ void uri (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > uri_;
+
+ public:
+ ACESvcConf ();
+
+ ACESvcConf (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ACESvcConf (ACESvcConf const& s);
+
+ ACESvcConf&
+ operator= (ACESvcConf const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ORBConfigs : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // resources
+ //
+ public:
+ bool resources_p () const;
+ ::CIAO::Config_Handlers::ORBResources const& resources () const;
+ void resources (::CIAO::Config_Handlers::ORBResources const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ORBResources > resources_;
+
+ // policySet
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::PolicySet >::iterator policySet_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::PolicySet >::const_iterator policySet_const_iterator;
+ policySet_iterator begin_policySet ();
+ policySet_iterator end_policySet ();
+ policySet_const_iterator begin_policySet () const;
+ policySet_const_iterator end_policySet () const;
+ void add_policySet (::CIAO::Config_Handlers::PolicySet const& );
+ size_t count_policySet (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::PolicySet > policySet_;
+
+ public:
+ ORBConfigs ();
+
+ ORBConfigs (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ORBConfigs (ORBConfigs const& s);
+
+ ORBConfigs&
+ operator= (ORBConfigs const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ORBResources : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // threadpool
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolDef >::iterator threadpool_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolDef >::const_iterator threadpool_const_iterator;
+ threadpool_iterator begin_threadpool ();
+ threadpool_iterator end_threadpool ();
+ threadpool_const_iterator begin_threadpool () const;
+ threadpool_const_iterator end_threadpool () const;
+ void add_threadpool (::CIAO::Config_Handlers::ThreadpoolDef const& );
+ size_t count_threadpool (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ThreadpoolDef > threadpool_;
+
+ // threadpoolWithLanes
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolWithLanesDef >::iterator threadpoolWithLanes_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolWithLanesDef >::const_iterator threadpoolWithLanes_const_iterator;
+ threadpoolWithLanes_iterator begin_threadpoolWithLanes ();
+ threadpoolWithLanes_iterator end_threadpoolWithLanes ();
+ threadpoolWithLanes_const_iterator begin_threadpoolWithLanes () const;
+ threadpoolWithLanes_const_iterator end_threadpoolWithLanes () const;
+ void add_threadpoolWithLanes (::CIAO::Config_Handlers::ThreadpoolWithLanesDef const& );
+ size_t count_threadpoolWithLanes (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ThreadpoolWithLanesDef > threadpoolWithLanes_;
+
+ // connectionBands
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ConnectionBandsDef >::iterator connectionBands_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ConnectionBandsDef >::const_iterator connectionBands_const_iterator;
+ connectionBands_iterator begin_connectionBands ();
+ connectionBands_iterator end_connectionBands ();
+ connectionBands_const_iterator begin_connectionBands () const;
+ connectionBands_const_iterator end_connectionBands () const;
+ void add_connectionBands (::CIAO::Config_Handlers::ConnectionBandsDef const& );
+ size_t count_connectionBands (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ConnectionBandsDef > connectionBands_;
+
+ public:
+ ORBResources ();
+
+ ORBResources (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ORBResources (ORBResources const& s);
+
+ ORBResources&
+ operator= (ORBResources const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export Priority : public ::XMLSchema::int_
+ {
+ //@@ VC6 anathema
+ typedef ::XMLSchema::int_ Base__;
+
+ public:
+ Priority (::XMLSchema::int_ const& b__);
+
+ Priority (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ Priority (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+ Priority (Priority const& s);
+
+ Priority&
+ operator= (Priority const& s);
+
+ private:
+ char regulator__;
+ };
+
+ class RT_CCM_Handlers_Export ThreadpoolDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // stacksize
+ //
+ public:
+ ::XMLSchema::unsignedLong const& stacksize () const;
+ void stacksize (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > stacksize_;
+
+ // static_threads
+ //
+ public:
+ ::XMLSchema::unsignedLong const& static_threads () const;
+ void static_threads (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > static_threads_;
+
+ // dynamic_threads
+ //
+ public:
+ ::XMLSchema::unsignedLong const& dynamic_threads () const;
+ void dynamic_threads (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > dynamic_threads_;
+
+ // default_priority
+ //
+ public:
+ ::CIAO::Config_Handlers::Priority const& default_priority () const;
+ void default_priority (::CIAO::Config_Handlers::Priority const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > default_priority_;
+
+ // allow_request_buffering
+ //
+ public:
+ ::XMLSchema::boolean const& allow_request_buffering () const;
+ void allow_request_buffering (::XMLSchema::boolean const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::boolean > allow_request_buffering_;
+
+ // max_buffered_requests
+ //
+ public:
+ ::XMLSchema::unsignedLong const& max_buffered_requests () const;
+ void max_buffered_requests (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > max_buffered_requests_;
+
+ // max_request_buffered_size
+ //
+ public:
+ ::XMLSchema::unsignedLong const& max_request_buffered_size () const;
+ void max_request_buffered_size (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > max_request_buffered_size_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ ThreadpoolDef (::XMLSchema::unsignedLong const& stacksize__,
+ ::XMLSchema::unsignedLong const& static_threads__,
+ ::XMLSchema::unsignedLong const& dynamic_threads__,
+ ::CIAO::Config_Handlers::Priority const& default_priority__,
+ ::XMLSchema::boolean const& allow_request_buffering__,
+ ::XMLSchema::unsignedLong const& max_buffered_requests__,
+ ::XMLSchema::unsignedLong const& max_request_buffered_size__);
+
+ ThreadpoolDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ThreadpoolDef (ThreadpoolDef const& s);
+
+ ThreadpoolDef&
+ operator= (ThreadpoolDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ThreadpoolWithLanesDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // threadpoolLane
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolLaneDef >::iterator threadpoolLane_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ThreadpoolLaneDef >::const_iterator threadpoolLane_const_iterator;
+ threadpoolLane_iterator begin_threadpoolLane ();
+ threadpoolLane_iterator end_threadpoolLane ();
+ threadpoolLane_const_iterator begin_threadpoolLane () const;
+ threadpoolLane_const_iterator end_threadpoolLane () const;
+ void add_threadpoolLane (::CIAO::Config_Handlers::ThreadpoolLaneDef const& );
+ size_t count_threadpoolLane (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ThreadpoolLaneDef > threadpoolLane_;
+
+ // stacksize
+ //
+ public:
+ ::XMLSchema::unsignedLong const& stacksize () const;
+ void stacksize (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > stacksize_;
+
+ // allow_borrowing
+ //
+ public:
+ ::XMLSchema::boolean const& allow_borrowing () const;
+ void allow_borrowing (::XMLSchema::boolean const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::boolean > allow_borrowing_;
+
+ // allow_request_buffering
+ //
+ public:
+ ::XMLSchema::boolean const& allow_request_buffering () const;
+ void allow_request_buffering (::XMLSchema::boolean const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::boolean > allow_request_buffering_;
+
+ // max_buffered_requests
+ //
+ public:
+ ::XMLSchema::unsignedLong const& max_buffered_requests () const;
+ void max_buffered_requests (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > max_buffered_requests_;
+
+ // max_request_buffered_size
+ //
+ public:
+ ::XMLSchema::unsignedLong const& max_request_buffered_size () const;
+ void max_request_buffered_size (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > max_request_buffered_size_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ ThreadpoolWithLanesDef (::XMLSchema::unsignedLong const& stacksize__,
+ ::XMLSchema::boolean const& allow_borrowing__,
+ ::XMLSchema::boolean const& allow_request_buffering__,
+ ::XMLSchema::unsignedLong const& max_buffered_requests__,
+ ::XMLSchema::unsignedLong const& max_request_buffered_size__);
+
+ ThreadpoolWithLanesDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ThreadpoolWithLanesDef (ThreadpoolWithLanesDef const& s);
+
+ ThreadpoolWithLanesDef&
+ operator= (ThreadpoolWithLanesDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ThreadpoolLaneDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // static_threads
+ //
+ public:
+ ::XMLSchema::unsignedLong const& static_threads () const;
+ void static_threads (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > static_threads_;
+
+ // dynamic_threads
+ //
+ public:
+ ::XMLSchema::unsignedLong const& dynamic_threads () const;
+ void dynamic_threads (::XMLSchema::unsignedLong const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::unsignedLong > dynamic_threads_;
+
+ // priority
+ //
+ public:
+ ::CIAO::Config_Handlers::Priority const& priority () const;
+ void priority (::CIAO::Config_Handlers::Priority const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > priority_;
+
+ public:
+ ThreadpoolLaneDef (::XMLSchema::unsignedLong const& static_threads__,
+ ::XMLSchema::unsignedLong const& dynamic_threads__,
+ ::CIAO::Config_Handlers::Priority const& priority__);
+
+ ThreadpoolLaneDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ThreadpoolLaneDef (ThreadpoolLaneDef const& s);
+
+ ThreadpoolLaneDef&
+ operator= (ThreadpoolLaneDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export ConnectionBandsDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // band
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::PriorityBandDef >::iterator band_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::PriorityBandDef >::const_iterator band_const_iterator;
+ band_iterator begin_band ();
+ band_iterator end_band ();
+ band_const_iterator begin_band () const;
+ band_const_iterator end_band () const;
+ void add_band (::CIAO::Config_Handlers::PriorityBandDef const& );
+ size_t count_band (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::PriorityBandDef > band_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ ConnectionBandsDef ();
+
+ ConnectionBandsDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ ConnectionBandsDef (ConnectionBandsDef const& s);
+
+ ConnectionBandsDef&
+ operator= (ConnectionBandsDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export PriorityBandDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // low
+ //
+ public:
+ ::XMLSchema::int_ const& low () const;
+ void low (::XMLSchema::int_ const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::int_ > low_;
+
+ // high
+ //
+ public:
+ ::XMLSchema::int_ const& high () const;
+ void high (::XMLSchema::int_ const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::int_ > high_;
+
+ public:
+ PriorityBandDef (::XMLSchema::int_ const& low__,
+ ::XMLSchema::int_ const& high__);
+
+ PriorityBandDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ PriorityBandDef (PriorityBandDef const& s);
+
+ PriorityBandDef&
+ operator= (PriorityBandDef const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export PolicySet : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // priorityModel
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::PriorityModelPolicyDef >::iterator priorityModel_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::PriorityModelPolicyDef >::const_iterator priorityModel_const_iterator;
+ priorityModel_iterator begin_priorityModel ();
+ priorityModel_iterator end_priorityModel ();
+ priorityModel_const_iterator begin_priorityModel () const;
+ priorityModel_const_iterator end_priorityModel () const;
+ void add_priorityModel (::CIAO::Config_Handlers::PriorityModelPolicyDef const& );
+ size_t count_priorityModel (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::PriorityModelPolicyDef > priorityModel_;
+
+ // threadpool
+ //
+ public:
+ typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::iterator threadpool_iterator;
+ typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::const_iterator threadpool_const_iterator;
+ threadpool_iterator begin_threadpool ();
+ threadpool_iterator end_threadpool ();
+ threadpool_const_iterator begin_threadpool () const;
+ threadpool_const_iterator end_threadpool () const;
+ void add_threadpool (::XMLSchema::IDREF< ACE_TCHAR > const& );
+ size_t count_threadpool (void) const;
+
+ protected:
+ ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > > threadpool_;
+
+ // priorityBandedConnection
+ //
+ public:
+ typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::iterator priorityBandedConnection_iterator;
+ typedef ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > >::const_iterator priorityBandedConnection_const_iterator;
+ priorityBandedConnection_iterator begin_priorityBandedConnection ();
+ priorityBandedConnection_iterator end_priorityBandedConnection ();
+ priorityBandedConnection_const_iterator begin_priorityBandedConnection () const;
+ priorityBandedConnection_const_iterator end_priorityBandedConnection () const;
+ void add_priorityBandedConnection (::XMLSchema::IDREF< ACE_TCHAR > const& );
+ size_t count_priorityBandedConnection (void) const;
+
+ protected:
+ ::std::list< ::XMLSchema::IDREF< ACE_TCHAR > > priorityBandedConnection_;
+
+ // id
+ //
+ public:
+ bool id_p () const;
+ ::XMLSchema::ID< ACE_TCHAR > const& id () const;
+ ::XMLSchema::ID< ACE_TCHAR >& id ();
+ void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+ public:
+ PolicySet ();
+
+ PolicySet (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ PolicySet (PolicySet const& s);
+
+ PolicySet&
+ operator= (PolicySet const& s);
+
+ private:
+ char regulator__;
+ };
+
+
+ class RT_CCM_Handlers_Export PriorityModel : public ::XSCRT::Type
+ {
+ public:
+ PriorityModel (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ PriorityModel (::XSCRT::XML::Attribute< ACE_TCHAR > const&);
+
+ static PriorityModel const SERVER_DECLARED;
+ static PriorityModel const CLIENT_PROPAGATED;
+
+ enum Value
+ {
+ SERVER_DECLARED_l,CLIENT_PROPAGATED_l
+ };
+
+
+ Value
+ integral () const;
+
+ friend bool RT_CCM_Handlers_Export
+ operator== (PriorityModel const& a, PriorityModel const& b);
+
+ friend bool RT_CCM_Handlers_Export
+ operator!= (PriorityModel const& a, PriorityModel const& b);
+
+ private:
+ PriorityModel (Value v);
+
+ Value v_;
+ };
+
+ bool RT_CCM_Handlers_Export operator== (PriorityModel const &a, PriorityModel const &b);
+
+ bool RT_CCM_Handlers_Export operator!= (PriorityModel const &a, PriorityModel const &b);
+
+
+ class RT_CCM_Handlers_Export PriorityModelPolicyDef : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // priority_model
+ //
+ public:
+ ::CIAO::Config_Handlers::PriorityModel const& priority_model () const;
+ void priority_model (::CIAO::Config_Handlers::PriorityModel const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::PriorityModel > priority_model_;
+
+ // server_priority
+ //
+ public:
+ bool server_priority_p () const;
+ ::CIAO::Config_Handlers::Priority const& server_priority () const;
+ ::CIAO::Config_Handlers::Priority& server_priority ();
+ void server_priority (::CIAO::Config_Handlers::Priority const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::Priority > server_priority_;
+
+ public:
+ PriorityModelPolicyDef (::CIAO::Config_Handlers::PriorityModel const& priority_model__);
+
+ PriorityModelPolicyDef (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ PriorityModelPolicyDef (PriorityModelPolicyDef const& s);
+
+ PriorityModelPolicyDef&
+ operator= (PriorityModelPolicyDef const& s);
+
+ private:
+ char regulator__;
+ };
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ RT_CCM_Handlers_Export
+ ::CIAO::Config_Handlers::ServerResourcesDef
+ ServerResources (xercesc::DOMDocument const*);
+ }
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ struct RT_CCM_Handlers_Export ServerResourcesDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ServerResourcesDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ cmdline (Type&);
+
+ virtual void
+ cmdline (Type const&);
+
+ virtual void
+ cmdline_none (Type&);
+
+ virtual void
+ cmdline_none (Type const&);
+
+ virtual void
+ svcconf (Type&);
+
+ virtual void
+ svcconf (Type const&);
+
+ virtual void
+ svcconf_none (Type&);
+
+ virtual void
+ svcconf_none (Type const&);
+
+ virtual void
+ orbConfigs (Type&);
+
+ virtual void
+ orbConfigs (Type const&);
+
+ virtual void
+ id (Type&);
+
+ virtual void
+ id (Type const&);
+
+ virtual void
+ id_none (Type&);
+
+ virtual void
+ id_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ServerCmdlineOptions : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ServerCmdlineOptions >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ arg (Type&);
+
+ virtual void
+ arg (Type const&);
+
+ virtual void
+ arg_pre (Type&);
+
+ virtual void
+ arg_pre (Type const&);
+
+ virtual void
+ arg_next (Type&);
+
+ virtual void
+ arg_next (Type const&);
+
+ virtual void
+ arg_post (Type&);
+
+ virtual void
+ arg_post (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ACESvcConf : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ACESvcConf >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ uri (Type&);
+
+ virtual void
+ uri (Type const&);
+
+ virtual void
+ uri_none (Type&);
+
+ virtual void
+ uri_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ORBConfigs : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ORBConfigs >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ resources (Type&);
+
+ virtual void
+ resources (Type const&);
+
+ virtual void
+ resources_none (Type&);
+
+ virtual void
+ resources_none (Type const&);
+
+ virtual void
+ policySet (Type&);
+
+ virtual void
+ policySet (Type const&);
+
+ virtual void
+ policySet_pre (Type&);
+
+ virtual void
+ policySet_pre (Type const&);
+
+ virtual void
+ policySet_next (Type&);
+
+ virtual void
+ policySet_next (Type const&);
+
+ virtual void
+ policySet_post (Type&);
+
+ virtual void
+ policySet_post (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ORBResources : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ORBResources >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ threadpool (Type&);
+
+ virtual void
+ threadpool (Type const&);
+
+ virtual void
+ threadpool_pre (Type&);
+
+ virtual void
+ threadpool_pre (Type const&);
+
+ virtual void
+ threadpool_next (Type&);
+
+ virtual void
+ threadpool_next (Type const&);
+
+ virtual void
+ threadpool_post (Type&);
+
+ virtual void
+ threadpool_post (Type const&);
+
+ virtual void
+ threadpool_none (Type&);
+
+ virtual void
+ threadpool_none (Type const&);
+
+ virtual void
+ threadpoolWithLanes (Type&);
+
+ virtual void
+ threadpoolWithLanes (Type const&);
+
+ virtual void
+ threadpoolWithLanes_pre (Type&);
+
+ virtual void
+ threadpoolWithLanes_pre (Type const&);
+
+ virtual void
+ threadpoolWithLanes_next (Type&);
+
+ virtual void
+ threadpoolWithLanes_next (Type const&);
+
+ virtual void
+ threadpoolWithLanes_post (Type&);
+
+ virtual void
+ threadpoolWithLanes_post (Type const&);
+
+ virtual void
+ threadpoolWithLanes_none (Type&);
+
+ virtual void
+ threadpoolWithLanes_none (Type const&);
+
+ virtual void
+ connectionBands (Type&);
+
+ virtual void
+ connectionBands (Type const&);
+
+ virtual void
+ connectionBands_pre (Type&);
+
+ virtual void
+ connectionBands_pre (Type const&);
+
+ virtual void
+ connectionBands_next (Type&);
+
+ virtual void
+ connectionBands_next (Type const&);
+
+ virtual void
+ connectionBands_post (Type&);
+
+ virtual void
+ connectionBands_post (Type const&);
+
+ virtual void
+ connectionBands_none (Type&);
+
+ virtual void
+ connectionBands_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export Priority : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Priority >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ThreadpoolDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ThreadpoolDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ stacksize (Type&);
+
+ virtual void
+ stacksize (Type const&);
+
+ virtual void
+ static_threads (Type&);
+
+ virtual void
+ static_threads (Type const&);
+
+ virtual void
+ dynamic_threads (Type&);
+
+ virtual void
+ dynamic_threads (Type const&);
+
+ virtual void
+ default_priority (Type&);
+
+ virtual void
+ default_priority (Type const&);
+
+ virtual void
+ allow_request_buffering (Type&);
+
+ virtual void
+ allow_request_buffering (Type const&);
+
+ virtual void
+ max_buffered_requests (Type&);
+
+ virtual void
+ max_buffered_requests (Type const&);
+
+ virtual void
+ max_request_buffered_size (Type&);
+
+ virtual void
+ max_request_buffered_size (Type const&);
+
+ virtual void
+ id (Type&);
+
+ virtual void
+ id (Type const&);
+
+ virtual void
+ id_none (Type&);
+
+ virtual void
+ id_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ThreadpoolWithLanesDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ThreadpoolWithLanesDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ threadpoolLane (Type&);
+
+ virtual void
+ threadpoolLane (Type const&);
+
+ virtual void
+ threadpoolLane_pre (Type&);
+
+ virtual void
+ threadpoolLane_pre (Type const&);
+
+ virtual void
+ threadpoolLane_next (Type&);
+
+ virtual void
+ threadpoolLane_next (Type const&);
+
+ virtual void
+ threadpoolLane_post (Type&);
+
+ virtual void
+ threadpoolLane_post (Type const&);
+
+ virtual void
+ stacksize (Type&);
+
+ virtual void
+ stacksize (Type const&);
+
+ virtual void
+ allow_borrowing (Type&);
+
+ virtual void
+ allow_borrowing (Type const&);
+
+ virtual void
+ allow_request_buffering (Type&);
+
+ virtual void
+ allow_request_buffering (Type const&);
+
+ virtual void
+ max_buffered_requests (Type&);
+
+ virtual void
+ max_buffered_requests (Type const&);
+
+ virtual void
+ max_request_buffered_size (Type&);
+
+ virtual void
+ max_request_buffered_size (Type const&);
+
+ virtual void
+ id (Type&);
+
+ virtual void
+ id (Type const&);
+
+ virtual void
+ id_none (Type&);
+
+ virtual void
+ id_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ThreadpoolLaneDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ThreadpoolLaneDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ static_threads (Type&);
+
+ virtual void
+ static_threads (Type const&);
+
+ virtual void
+ dynamic_threads (Type&);
+
+ virtual void
+ dynamic_threads (Type const&);
+
+ virtual void
+ priority (Type&);
+
+ virtual void
+ priority (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export ConnectionBandsDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ConnectionBandsDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ band (Type&);
+
+ virtual void
+ band (Type const&);
+
+ virtual void
+ band_pre (Type&);
+
+ virtual void
+ band_pre (Type const&);
+
+ virtual void
+ band_next (Type&);
+
+ virtual void
+ band_next (Type const&);
+
+ virtual void
+ band_post (Type&);
+
+ virtual void
+ band_post (Type const&);
+
+ virtual void
+ id (Type&);
+
+ virtual void
+ id (Type const&);
+
+ virtual void
+ id_none (Type&);
+
+ virtual void
+ id_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export PriorityBandDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PriorityBandDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ low (Type&);
+
+ virtual void
+ low (Type const&);
+
+ virtual void
+ high (Type&);
+
+ virtual void
+ high (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ struct RT_CCM_Handlers_Export PolicySet : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PolicySet >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ priorityModel (Type&);
+
+ virtual void
+ priorityModel (Type const&);
+
+ virtual void
+ priorityModel_pre (Type&);
+
+ virtual void
+ priorityModel_pre (Type const&);
+
+ virtual void
+ priorityModel_next (Type&);
+
+ virtual void
+ priorityModel_next (Type const&);
+
+ virtual void
+ priorityModel_post (Type&);
+
+ virtual void
+ priorityModel_post (Type const&);
+
+ virtual void
+ priorityModel_none (Type&);
+
+ virtual void
+ priorityModel_none (Type const&);
+
+ virtual void
+ threadpool (Type&);
+
+ virtual void
+ threadpool (Type const&);
+
+ virtual void
+ threadpool_pre (Type&);
+
+ virtual void
+ threadpool_pre (Type const&);
+
+ virtual void
+ threadpool_next (Type&);
+
+ virtual void
+ threadpool_next (Type const&);
+
+ virtual void
+ threadpool_post (Type&);
+
+ virtual void
+ threadpool_post (Type const&);
+
+ virtual void
+ threadpool_none (Type&);
+
+ virtual void
+ threadpool_none (Type const&);
+
+ virtual void
+ priorityBandedConnection (Type&);
+
+ virtual void
+ priorityBandedConnection (Type const&);
+
+ virtual void
+ priorityBandedConnection_pre (Type&);
+
+ virtual void
+ priorityBandedConnection_pre (Type const&);
+
+ virtual void
+ priorityBandedConnection_next (Type&);
+
+ virtual void
+ priorityBandedConnection_next (Type const&);
+
+ virtual void
+ priorityBandedConnection_post (Type&);
+
+ virtual void
+ priorityBandedConnection_post (Type const&);
+
+ virtual void
+ priorityBandedConnection_none (Type&);
+
+ virtual void
+ priorityBandedConnection_none (Type const&);
+
+ virtual void
+ id (Type&);
+
+ virtual void
+ id (Type const&);
+
+ virtual void
+ id_none (Type&);
+
+ virtual void
+ id_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+
+ typedef
+ ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PriorityModel >
+ PriorityModel;
+
+ struct RT_CCM_Handlers_Export PriorityModelPolicyDef : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PriorityModelPolicyDef >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ priority_model (Type&);
+
+ virtual void
+ priority_model (Type const&);
+
+ virtual void
+ server_priority (Type&);
+
+ virtual void
+ server_priority (Type const&);
+
+ virtual void
+ server_priority_none (Type&);
+
+ virtual void
+ server_priority_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+ }
+ }
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ struct ServerResourcesDef : Traversal::ServerResourcesDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ServerResourcesDef Type;
+ ServerResourcesDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ cmdline (Type &o)
+ {
+
+ this->cmdline (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ cmdline (Type const&);
+
+ virtual void
+ svcconf (Type &o)
+ {
+
+ this->svcconf (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ svcconf (Type const&);
+
+ virtual void
+ orbConfigs (Type &o)
+ {
+
+ this->orbConfigs (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ orbConfigs (Type const&);
+
+ virtual void
+ id (Type &o)
+ {
+
+ this->id (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ id (Type const&);
+
+ protected:
+ ServerResourcesDef ();
+ };
+
+ struct ServerCmdlineOptions : Traversal::ServerCmdlineOptions,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ServerCmdlineOptions Type;
+ ServerCmdlineOptions (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ arg_pre (Type &o)
+ {
+
+ this->arg_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ arg_pre (Type const&);
+
+ virtual void
+ arg_next (Type &o)
+ {
+
+ this->arg_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ arg_next (Type const&);
+
+ virtual void
+ arg_post (Type &o)
+ {
+
+ this->arg_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ arg_post (Type const&);
+
+ protected:
+ ServerCmdlineOptions ();
+ };
+
+ struct ACESvcConf : Traversal::ACESvcConf,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ACESvcConf Type;
+ ACESvcConf (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ uri (Type &o)
+ {
+
+ this->uri (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ uri (Type const&);
+
+ protected:
+ ACESvcConf ();
+ };
+
+ struct ORBConfigs : Traversal::ORBConfigs,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ORBConfigs Type;
+ ORBConfigs (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ resources (Type &o)
+ {
+
+ this->resources (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ resources (Type const&);
+
+ virtual void
+ policySet_pre (Type &o)
+ {
+
+ this->policySet_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ policySet_pre (Type const&);
+
+ virtual void
+ policySet_next (Type &o)
+ {
+
+ this->policySet_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ policySet_next (Type const&);
+
+ virtual void
+ policySet_post (Type &o)
+ {
+
+ this->policySet_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ policySet_post (Type const&);
+
+ protected:
+ ORBConfigs ();
+ };
+
+ struct ORBResources : Traversal::ORBResources,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ORBResources Type;
+ ORBResources (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ threadpool_pre (Type &o)
+ {
+
+ this->threadpool_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_pre (Type const&);
+
+ virtual void
+ threadpool_next (Type &o)
+ {
+
+ this->threadpool_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_next (Type const&);
+
+ virtual void
+ threadpool_post (Type &o)
+ {
+
+ this->threadpool_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_post (Type const&);
+
+ virtual void
+ threadpoolWithLanes_pre (Type &o)
+ {
+
+ this->threadpoolWithLanes_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolWithLanes_pre (Type const&);
+
+ virtual void
+ threadpoolWithLanes_next (Type &o)
+ {
+
+ this->threadpoolWithLanes_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolWithLanes_next (Type const&);
+
+ virtual void
+ threadpoolWithLanes_post (Type &o)
+ {
+
+ this->threadpoolWithLanes_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolWithLanes_post (Type const&);
+
+ virtual void
+ connectionBands_pre (Type &o)
+ {
+
+ this->connectionBands_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connectionBands_pre (Type const&);
+
+ virtual void
+ connectionBands_next (Type &o)
+ {
+
+ this->connectionBands_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connectionBands_next (Type const&);
+
+ virtual void
+ connectionBands_post (Type &o)
+ {
+
+ this->connectionBands_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connectionBands_post (Type const&);
+
+ protected:
+ ORBResources ();
+ };
+
+ struct Priority : Traversal::Priority,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::Priority Type;
+ Priority (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ protected:
+ Priority ();
+ };
+
+ struct ThreadpoolDef : Traversal::ThreadpoolDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ThreadpoolDef Type;
+ ThreadpoolDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ stacksize (Type &o)
+ {
+
+ this->stacksize (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ stacksize (Type const&);
+
+ virtual void
+ static_threads (Type &o)
+ {
+
+ this->static_threads (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ static_threads (Type const&);
+
+ virtual void
+ dynamic_threads (Type &o)
+ {
+
+ this->dynamic_threads (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ dynamic_threads (Type const&);
+
+ virtual void
+ default_priority (Type &o)
+ {
+
+ this->default_priority (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ default_priority (Type const&);
+
+ virtual void
+ allow_request_buffering (Type &o)
+ {
+
+ this->allow_request_buffering (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ allow_request_buffering (Type const&);
+
+ virtual void
+ max_buffered_requests (Type &o)
+ {
+
+ this->max_buffered_requests (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ max_buffered_requests (Type const&);
+
+ virtual void
+ max_request_buffered_size (Type &o)
+ {
+
+ this->max_request_buffered_size (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ max_request_buffered_size (Type const&);
+
+ virtual void
+ id (Type &o)
+ {
+
+ this->id (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ id (Type const&);
+
+ protected:
+ ThreadpoolDef ();
+ };
+
+ struct ThreadpoolWithLanesDef : Traversal::ThreadpoolWithLanesDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ThreadpoolWithLanesDef Type;
+ ThreadpoolWithLanesDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ threadpoolLane_pre (Type &o)
+ {
+
+ this->threadpoolLane_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolLane_pre (Type const&);
+
+ virtual void
+ threadpoolLane_next (Type &o)
+ {
+
+ this->threadpoolLane_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolLane_next (Type const&);
+
+ virtual void
+ threadpoolLane_post (Type &o)
+ {
+
+ this->threadpoolLane_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpoolLane_post (Type const&);
+
+ virtual void
+ stacksize (Type &o)
+ {
+
+ this->stacksize (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ stacksize (Type const&);
+
+ virtual void
+ allow_borrowing (Type &o)
+ {
+
+ this->allow_borrowing (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ allow_borrowing (Type const&);
+
+ virtual void
+ allow_request_buffering (Type &o)
+ {
+
+ this->allow_request_buffering (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ allow_request_buffering (Type const&);
+
+ virtual void
+ max_buffered_requests (Type &o)
+ {
+
+ this->max_buffered_requests (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ max_buffered_requests (Type const&);
+
+ virtual void
+ max_request_buffered_size (Type &o)
+ {
+
+ this->max_request_buffered_size (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ max_request_buffered_size (Type const&);
+
+ virtual void
+ id (Type &o)
+ {
+
+ this->id (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ id (Type const&);
+
+ protected:
+ ThreadpoolWithLanesDef ();
+ };
+
+ struct ThreadpoolLaneDef : Traversal::ThreadpoolLaneDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ThreadpoolLaneDef Type;
+ ThreadpoolLaneDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ static_threads (Type &o)
+ {
+
+ this->static_threads (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ static_threads (Type const&);
+
+ virtual void
+ dynamic_threads (Type &o)
+ {
+
+ this->dynamic_threads (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ dynamic_threads (Type const&);
+
+ virtual void
+ priority (Type &o)
+ {
+
+ this->priority (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priority (Type const&);
+
+ protected:
+ ThreadpoolLaneDef ();
+ };
+
+ struct ConnectionBandsDef : Traversal::ConnectionBandsDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::ConnectionBandsDef Type;
+ ConnectionBandsDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ band_pre (Type &o)
+ {
+
+ this->band_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ band_pre (Type const&);
+
+ virtual void
+ band_next (Type &o)
+ {
+
+ this->band_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ band_next (Type const&);
+
+ virtual void
+ band_post (Type &o)
+ {
+
+ this->band_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ band_post (Type const&);
+
+ virtual void
+ id (Type &o)
+ {
+
+ this->id (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ id (Type const&);
+
+ protected:
+ ConnectionBandsDef ();
+ };
+
+ struct PriorityBandDef : Traversal::PriorityBandDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::PriorityBandDef Type;
+ PriorityBandDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ low (Type &o)
+ {
+
+ this->low (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ low (Type const&);
+
+ virtual void
+ high (Type &o)
+ {
+
+ this->high (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ high (Type const&);
+
+ protected:
+ PriorityBandDef ();
+ };
+
+ struct PolicySet : Traversal::PolicySet,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::PolicySet Type;
+ PolicySet (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ priorityModel_pre (Type &o)
+ {
+
+ this->priorityModel_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityModel_pre (Type const&);
+
+ virtual void
+ priorityModel_next (Type &o)
+ {
+
+ this->priorityModel_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityModel_next (Type const&);
+
+ virtual void
+ priorityModel_post (Type &o)
+ {
+
+ this->priorityModel_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityModel_post (Type const&);
+
+ virtual void
+ threadpool_pre (Type &o)
+ {
+
+ this->threadpool_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_pre (Type const&);
+
+ virtual void
+ threadpool_next (Type &o)
+ {
+
+ this->threadpool_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_next (Type const&);
+
+ virtual void
+ threadpool_post (Type &o)
+ {
+
+ this->threadpool_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ threadpool_post (Type const&);
+
+ virtual void
+ priorityBandedConnection_pre (Type &o)
+ {
+
+ this->priorityBandedConnection_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityBandedConnection_pre (Type const&);
+
+ virtual void
+ priorityBandedConnection_next (Type &o)
+ {
+
+ this->priorityBandedConnection_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityBandedConnection_next (Type const&);
+
+ virtual void
+ priorityBandedConnection_post (Type &o)
+ {
+
+ this->priorityBandedConnection_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priorityBandedConnection_post (Type const&);
+
+ virtual void
+ id (Type &o)
+ {
+
+ this->id (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ id (Type const&);
+
+ protected:
+ PolicySet ();
+ };
+
+ struct PriorityModel : Traversal::PriorityModel,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ PriorityModel (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+ virtual void
+ traverse (Type const&);
+
+ protected:
+ PriorityModel ();
+ };
+
+ struct PriorityModelPolicyDef : Traversal::PriorityModelPolicyDef,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::PriorityModelPolicyDef Type;
+ PriorityModelPolicyDef (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ priority_model (Type &o)
+ {
+
+ this->priority_model (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ priority_model (Type const&);
+
+ virtual void
+ server_priority (Type &o)
+ {
+
+ this->server_priority (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ server_priority (Type const&);
+
+ protected:
+ PriorityModelPolicyDef ();
+ };
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ RT_CCM_Handlers_Export
+ void
+ ServerResources (::CIAO::Config_Handlers::ServerResourcesDef const&, xercesc::DOMDocument*);
+ }
+}
+
+#endif // CIAOSERVER_RESOURCES_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.cpp
new file mode 100644
index 00000000000..d5053a6dea6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.cpp
@@ -0,0 +1,44 @@
+// $Id$Exp
+
+#include "CLA_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool CLA_Handler::commandline_arguments (const ServerResourcesDef &src,
+ ::CIAO::DAnCE::CommandlineArgs &dest)
+ {
+ ServerCmdlineOptions sco = src.cmdline();
+
+ for(ServerCmdlineOptions::arg_iterator loc = sco.begin_arg();
+ loc != sco.end_arg();
+ loc++)
+ {
+ CORBA::ULong len = dest.length();
+
+ dest.length(len+1);
+
+ dest[len] = CORBA::string_dup (loc->c_str ());
+ }
+
+ return true;
+ }
+
+ ServerCmdlineOptions
+ CLA_Handler::commandline_argument (const CIAO::DAnCE::CommandlineArgs &src)
+ {
+ ServerCmdlineOptions co;
+
+ for (CORBA::ULong i = 0;
+ i < src.length ();
+ ++i)
+ {
+ co.add_arg (src[i]);
+ }
+
+ return co;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.h
new file mode 100644
index 00000000000..1c3469e617e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/CLA_Handler.h
@@ -0,0 +1,52 @@
+//=======================================================
+/* @file CLA_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+//=======================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_CLA_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_CLA_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ class ServerResourcesDef;
+ class ServerCmdlineOptions;
+
+ /*
+ * class CLA_Handler
+ * This is a brief Handler class for <CommandlineArg>
+ */
+
+ class RT_CCM_Handlers_Export CLA_Handler
+ {
+ public:
+ static bool
+ commandline_arguments (
+ const ServerResourcesDef &src,
+ ::CIAO::DAnCE::CommandlineArgs &dest);
+
+ static ServerCmdlineOptions
+ commandline_argument (const ::CIAO::DAnCE::CommandlineArgs &src);
+
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CLA_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.cpp
new file mode 100644
index 00000000000..41c45ee7c96
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.cpp
@@ -0,0 +1,51 @@
+// $Id$
+
+#include "OC_Handler.h"
+#include "OR_Handler.h"
+#include "PS_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ bool OC_Handler::orb_config (
+ const ORBConfigs &src,
+ ::CIAO::DAnCE::ORBConfigs &dest)
+ {
+ if (src.resources_p ())
+ OR_Handler::orb_resources (src.resources (), dest.orb_resources);
+
+ CORBA::ULong pos (dest.policy_set.length ());
+
+ dest.policy_set.length (pos + src.count_policySet ());
+
+ for (ORBConfigs::policySet_const_iterator i = src.begin_policySet ();
+ i != src.end_policySet ();
+ ++i)
+ {
+ PS_Handler::policy_set (*i, dest.policy_set[pos++]);
+ }
+
+ return true;
+ }
+
+
+ ORBConfigs OC_Handler::orb_config (
+ const ::CIAO::DAnCE::ORBConfigs &src)
+ {
+ ORBConfigs oc;
+
+ oc.resources(OR_Handler::orb_resources (src.orb_resources));
+
+ size_t len = src.policy_set.length();
+ for(size_t i = 0; i < len; i++)
+ {
+ oc.add_policySet (PS_Handler::policy_set (src.policy_set [i]));
+ }
+
+ return oc;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.h
new file mode 100644
index 00000000000..8aa7db84e77
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.h
@@ -0,0 +1,50 @@
+//============================================
+/*
+ * @file OC_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu>
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+
+ * $Id$
+ */
+//============================================
+
+#ifndef CIAO_CONFIG_HANDLERS_OC_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_OC_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ORBConfigs;
+
+ /*
+ * @class OC_Handler
+ *
+ * @brief Handler class for <ORBConfigs>
+ */
+
+ class RT_CCM_Handlers_Export OC_Handler
+ {
+ public:
+ static bool orb_config (const ORBConfigs &src,
+ ::CIAO::DAnCE::ORBConfigs &dest);
+
+ static ORBConfigs orb_config (const ::CIAO::DAnCE::ORBConfigs &src);
+
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* OC_HANDLER_H */
+
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.cpp
new file mode 100644
index 00000000000..c4719fd5621
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.cpp
@@ -0,0 +1,91 @@
+// $Id$
+
+#include "OR_Handler.h"
+#include "TP_Handler.h"
+#include "TPL_Handler.h"
+#include "CB_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool OR_Handler::orb_resources (const ORBResources &src,
+ ::CIAO::DAnCE::ORBResources &dest)
+ {
+ // We know that there should be only one.
+ dest.length (1);
+
+ // Set the length of the threadpools
+ CORBA::ULong pos (dest[0].threadpool_list.length ());
+ dest[0].threadpool_list.length (pos + src.count_threadpool ());
+
+ for (ORBResources::threadpool_const_iterator i = src.begin_threadpool ();
+ i != src.end_threadpool ();
+ ++i)
+ {
+ TP_Handler::thread_pool (*i,
+ dest[0].threadpool_list[pos++]);
+ }
+
+ pos = dest[0].threadpool_with_lanes_list.length ();
+ dest[0].threadpool_with_lanes_list.length (pos + src.count_threadpoolWithLanes ());
+
+ for (ORBResources::threadpoolWithLanes_const_iterator j = src.begin_threadpoolWithLanes();
+ j != src.end_threadpoolWithLanes();
+ j++)
+ {
+ TPL_Handler::threadpool_with_lanes (*j,
+ dest[0].threadpool_with_lanes_list [pos++]);
+ }
+
+ pos = dest[0].connection_bands_list.length ();
+ dest[0].connection_bands_list.length (pos + src.count_connectionBands ());
+
+ for (ORBResources::connectionBands_const_iterator k = src.begin_connectionBands();
+ k != src.end_connectionBands();
+ k++)
+ {
+ CB_Handler::connection_band (*k,
+ dest[0].connection_bands_list[pos++]);
+ }
+ return true;
+ }
+
+ ORBResources OR_Handler::orb_resources (const ::CIAO::DAnCE::ORBResources &src)
+ throw (OR_Handler::No_Resource)
+ {
+ if (src.length () == 0 ||
+ src[0].threadpool_list.length () == 0 ||
+ src[0].threadpool_with_lanes_list.length () == 0 ||
+ src[0].connection_bands_list.length () == 0)
+ {
+ throw No_Resource ();
+ }
+
+ size_t len; //For checking the length of sequences
+
+ ORBResources ores;
+
+ len = src[0].threadpool_list.length();
+ for(size_t i = 0; i < len; ++i)
+ {
+ ores.add_threadpool (TP_Handler::thread_pool (src[0].threadpool_list[i]));
+ }
+
+ len = src[0].threadpool_with_lanes_list.length();
+ for(size_t j = 0; j < len; ++j)
+ {
+ ores.add_threadpoolWithLanes(TPL_Handler::threadpool_with_lanes (src[0].threadpool_with_lanes_list[j]));
+ }
+
+ len = src[0].connection_bands_list.length();
+ for(size_t k = 0; k < len; k++)
+ {
+ ores.add_connectionBands (CB_Handler::connection_band (src[0].connection_bands_list[k]));
+ }
+
+ return ores;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.h
new file mode 100644
index 00000000000..2790e149320
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/OR_Handler.h
@@ -0,0 +1,54 @@
+//=========================================================
+/*
+ * @file OR_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+//=========================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_OR_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_OR_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "RT_CCM_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ORBResources;
+
+ /* Class description
+ * @class OR_Handler
+ * @function A brief Handler class for the <ORBResource> member
+ */
+
+ class RT_CCM_Handlers_Export OR_Handler
+ {
+ public:
+
+ static bool orb_resources (const ORBResources &src,
+ ::CIAO::DAnCE::ORBResources &dest);
+
+ class No_Resource {};
+
+ static ORBResources orb_resources (const ::CIAO::DAnCE::ORBResources &src)
+ throw (No_Resource);
+
+
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONFIG_HANDLERS_OR_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
new file mode 100644
index 00000000000..088a426505c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
@@ -0,0 +1,73 @@
+// $Id$
+
+#include "PM_Handler.h"
+#include "CIAOServerResources.hpp"
+#include "ace/Auto_Ptr.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ bool
+ PM_Handler::priority_model_pd (const PriorityModelPolicyDef &src,
+ ::CIAO::DAnCE::PriorityModelPolicyDef &dest)
+ {
+ switch (src.priority_model ().integral ())
+ {
+ case PriorityModel::SERVER_DECLARED_l:
+ dest.priority_model = ::CIAO::DAnCE::SERVER_DECLARED;
+ break;
+
+ case PriorityModel::CLIENT_PROPAGATED_l:
+ dest.priority_model = ::CIAO::DAnCE::CLIENT_PROPAGATED;
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Unknown priority model passed to priority_model_pd\n"));
+ return false;
+ }
+
+ if (src.server_priority_p ())
+ dest.server_priority = static_cast < ACE_INT32 > (src.server_priority ());
+ else
+ dest.server_priority = 0;
+
+ return true;
+ }
+
+
+ PriorityModelPolicyDef
+ PM_Handler::priority_model_pd (const ::CIAO::DAnCE::PriorityModelPolicyDef &src)
+ {
+ auto_ptr <PriorityModelPolicyDef> pmd;
+
+ switch (src.priority_model)
+ {
+ case ::CIAO::DAnCE::CLIENT_PROPAGATED:
+ pmd.reset (new PriorityModelPolicyDef (PriorityModel::CLIENT_PROPAGATED));
+ break;
+
+ case ::CIAO::DAnCE::SERVER_DECLARED:
+ pmd.reset (new PriorityModelPolicyDef (PriorityModel::SERVER_DECLARED));
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Invalid priority model given to priority_model_pd\n"));
+ throw 1;
+ }
+
+ pmd->server_priority (XMLSchema::int_ (src.server_priority));
+
+ return *pmd;
+ }
+
+
+ }
+
+
+
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.h
new file mode 100644
index 00000000000..6c35612536c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.h
@@ -0,0 +1,45 @@
+/**
+ * @file PM_Handler.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+
+#ifndef CIAO_CONFIG_HANDLERS_PM_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PM_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class PriorityModelPolicyDef;
+
+ /**
+ * @class PS_Handler
+ * @brief Handler class for PriorityModelPolicyDefs
+ */
+
+ class RT_CCM_Handlers_Export PM_Handler
+ {
+ public:
+ static bool priority_model_pd (const PriorityModelPolicyDef &src,
+ ::CIAO::DAnCE::PriorityModelPolicyDef &dest);
+
+ static PriorityModelPolicyDef priority_model_pd (const ::CIAO::DAnCE::PriorityModelPolicyDef &src);
+ };
+ }
+
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFI_HANDLERS_PM_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.cpp
new file mode 100644
index 00000000000..95c5bb76d9d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.cpp
@@ -0,0 +1,114 @@
+// $Id$
+
+#include "PS_Handler.h"
+#include "PM_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool
+ PS_Handler::policy_set (const PolicySet &src,
+ ::CIAO::DAnCE::PolicySet &dest)
+ {
+ if (src.id_p ())
+ dest.Id = CORBA::string_dup (src.id ().c_str ());
+
+ // Make room for all of the policies
+ CORBA::ULong len (dest.policies.length ());
+ dest.policies.length (len +
+ src.count_priorityModel () +
+ src.count_threadpool () +
+ src.count_priorityBandedConnection ());
+
+ for (PolicySet::priorityModel_const_iterator i = src.begin_priorityModel ();
+ i != src.end_priorityModel ();
+ ++i)
+ {
+ ::CIAO::DAnCE::PriorityModelPolicyDef pmd;
+
+ PM_Handler::priority_model_pd (*i, pmd);
+
+ dest.policies[len++].PriorityModelDef (pmd);
+ }
+
+ for (PolicySet::threadpool_const_iterator i = src.begin_threadpool ();
+ i != src.end_threadpool ();
+ ++i)
+ {
+ ::CIAO::DAnCE::ThreadpoolPolicyDef tpd;
+
+ tpd.Id = CORBA::string_dup (i->id ().c_str ());
+
+ dest.policies[len++].ThreadpoolDef (tpd);
+ }
+
+
+ for (PolicySet::priorityBandedConnection_const_iterator i = src.begin_priorityBandedConnection ();
+ i != src.end_priorityBandedConnection ();
+ ++i)
+ {
+ ::CIAO::DAnCE::PriorityBandedConnectionPolicyDef pbc;
+
+ pbc.Id = CORBA::string_dup (i->id ().c_str ());
+
+ dest.policies[len++].PriorityBandedConnectionDef (pbc);
+ }
+
+
+
+ return true;
+ }
+
+
+ PolicySet
+ PS_Handler::policy_set (const ::CIAO::DAnCE::PolicySet &src)
+ {
+ PolicySet ps;
+
+ if (src.Id.in ())
+ ps.id (src.Id.in ());
+
+ for (CORBA::ULong i = 0;
+ i < src.policies.length ();
+ ++i)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "Attempting switch for i = %d\n",
+ i));
+
+ switch (src.policies[i]._d ())
+ {
+ case ::CIAO::DAnCE::PRIORITY_MODEL_POLICY_TYPE:
+ ps.add_priorityModel (
+ PM_Handler::priority_model_pd (src.policies[i].PriorityModelDef ()));
+ break;
+
+ case ::CIAO::DAnCE::THREADPOOL_POLICY_TYPE:
+ ps.add_threadpool (src.policies[i].ThreadpoolDef ().Id.in ());
+ break;
+
+ case ::CIAO::DAnCE::PRIORITY_BANDED_CONNECTION_POLICY_TYPE:
+ ps.add_priorityBandedConnection (src.policies[i].PriorityBandedConnectionDef ().Id.in ());
+ break;
+
+ case 0:
+ ACE_ERROR ((LM_ERROR,
+ "Skipping invalid policy.\n"));
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Bad policy stored in policy_set: %i\n",
+ src.policies[i]._d ()));
+ throw 1;
+ }
+ }
+
+ return ps;
+ }
+
+ }
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.h
new file mode 100644
index 00000000000..5bd9b9237c2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/PS_Handler.h
@@ -0,0 +1,45 @@
+/**
+ * @file PS_Handler.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+
+
+#ifndef CIAO_CONFIG_HANDLERS_PS_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_PS_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class PolicySet;
+
+ /**
+ * @class PS_Handler
+ * @brief Handler class for PolicySets
+ */
+
+ class RT_CCM_Handlers_Export PS_Handler
+ {
+ public:
+ static bool policy_set (const PolicySet &src,
+ ::CIAO::DAnCE::PolicySet &dest);
+
+ static PolicySet policy_set (const ::CIAO::DAnCE::PolicySet &src);
+ };
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFI_HANDLERS_PS_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc b/modules/CIAO/tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
new file mode 100644
index 00000000000..a280f95f60b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/RT-CCM-Handlers.mpc
@@ -0,0 +1,39 @@
+//$Id$
+
+project (RT_CCM_Config_Handlers) : acelib, ciao_deployment_stub, ciao_xml_utils {
+ sharedname = RT_CCM_Config_Handlers
+ dynamicflags = RT_CCM_HANDLERS_BUILD_DLL
+ macros += XML_USE_PTHREADS
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+ includes += $(CIAO_ROOT)/ciao
+
+ Source_Files {
+ CIAOServerResources.cpp
+ CLA_Handler.cpp
+ OC_Handler.cpp
+ OR_Handler.cpp
+ PM_Handler.cpp
+ PS_Handler.cpp
+ SRD_Handler.cpp
+ TP_Handler.cpp
+ TPL_Handler.cpp
+ CB_Handler.cpp
+ }
+
+ Header_Files {
+ }
+}
+
+//project (RT-CCM_Config_Handlers_Tests) : ciao_component_dnc, xerces {
+// requires += dummy_label
+// exename = rt-ccm-test
+// after += RT-CCM-Handlers
+// dynamicflags = CONFIG_HANDLERS_BUILD_DLL
+// macros += XML_USE_PTHREADS
+// includes += $(CIAO_ROOT)/tools/Config_Handlers
+// libs += CIAO_DnC_Server TAO_IFR_Client RT_CCM_Config_Handlers CIAO_XML_Utils
+
+// Source_Files {
+// test.cpp
+// }
+//}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h
new file mode 100644
index 00000000000..fdba117ae61
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/RT_CCM_Handlers_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl RT_CCM_Handlers
+// ------------------------------
+#ifndef RT_CCM_HANDLERS_EXPORT_H
+#define RT_CCM_HANDLERS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (RT_CCM_HANDLERS_HAS_DLL)
+# define RT_CCM_HANDLERS_HAS_DLL 1
+#endif /* ! RT_CCM_HANDLERS_HAS_DLL */
+
+#if defined (RT_CCM_HANDLERS_HAS_DLL) && (RT_CCM_HANDLERS_HAS_DLL == 1)
+# if defined (RT_CCM_HANDLERS_BUILD_DLL)
+# define RT_CCM_Handlers_Export ACE_Proper_Export_Flag
+# define RT_CCM_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define RT_CCM_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* RT_CCM_HANDLERS_BUILD_DLL */
+# define RT_CCM_Handlers_Export ACE_Proper_Import_Flag
+# define RT_CCM_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define RT_CCM_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* RT_CCM_HANDLERS_BUILD_DLL */
+#else /* RT_CCM_HANDLERS_HAS_DLL == 1 */
+# define RT_CCM_Handlers_Export
+# define RT_CCM_HANDLERS_SINGLETON_DECLARATION(T)
+# define RT_CCM_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* RT_CCM_HANDLERS_HAS_DLL == 1 */
+
+// Set RT_CCM_HANDLERS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (RT_CCM_HANDLERS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define RT_CCM_HANDLERS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define RT_CCM_HANDLERS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !RT_CCM_HANDLERS_NTRACE */
+
+#if (RT_CCM_HANDLERS_NTRACE == 1)
+# define RT_CCM_HANDLERS_TRACE(X)
+#else /* (RT_CCM_HANDLERS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define RT_CCM_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (RT_CCM_HANDLERS_NTRACE == 1) */
+
+#endif /* RT_CCM_HANDLERS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.cpp
new file mode 100644
index 00000000000..000768090f5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.cpp
@@ -0,0 +1,162 @@
+// $Id$
+#include "Utils/XML_Helper.h"
+#include "SRD_Handler.h"
+#include "CIAOServerResources.hpp"
+#include "CLA_Handler.h"
+#include "OC_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ SRD_Handler::SRD_Handler (const ACE_TCHAR *file) :
+ idl_srd_(0),
+ srd_ (0),
+ retval_ (false)
+ {
+ XML_Helper helper;
+
+ XERCES_CPP_NAMESPACE::DOMDocument *dom =
+ helper.create_dom (file);
+
+ if (!dom)
+ throw SRD_Handler::NoSRD ();
+
+ this->srd_.reset (new ServerResourcesDef
+ (ServerResources (dom)));
+
+ if (!this->build_srd ())
+ throw NoSRD ();
+ }
+
+ SRD_Handler::SRD_Handler (ServerResourcesDef *srd):
+ idl_srd_(0),
+ srd_(srd),
+ retval_(false)
+ {
+ if(!this->build_srd())
+ throw NoSRD ();
+ }
+
+ SRD_Handler::SRD_Handler (::CIAO::DAnCE::ServerResource *srd):
+ idl_srd_(srd),
+ srd_(0),
+ retval_(false)
+ {
+ if(!this->build_xsc())
+ throw NoSRD ();
+ }
+
+ SRD_Handler::~SRD_Handler (void)
+ {
+ }
+
+ bool
+ SRD_Handler::build_srd ()
+ {
+ this->idl_srd_.reset ( new ::CIAO::DAnCE::ServerResource );
+
+ if(this->srd_->cmdline_p())
+ {
+ this->retval_ = CLA_Handler::commandline_arguments(*this->srd_,
+ this->idl_srd_->args);
+ }
+
+ if(this->srd_->svcconf_p())
+ {
+ this->idl_srd_->svcconf = (srd_->svcconf().uri().c_str());
+ }
+
+ this->retval_ = OC_Handler::orb_config (this->srd_->orbConfigs (),
+ this->idl_srd_->orb_config);
+
+ if (this->srd_->id_p ())
+ {
+ this->idl_srd_->Id = srd_->id ().c_str ();
+ }
+
+ return this->retval_;
+ }
+
+ bool
+ SRD_Handler::build_xsc ()
+ {
+ size_t len; //For checking the length of src data members
+
+ // Load the ORBConfigs and create the XSC structure for SRD
+ this->srd_.reset (new ServerResourcesDef (OC_Handler::orb_config (this->idl_srd_->orb_config)));
+
+
+ //Note: Why did we make the CmdlineOptions a separate class instead of a
+ // vector of strings???
+
+ ServerCmdlineOptions sco;
+
+ //First load up the CmdlineArgs if they exist
+ len = idl_srd_->args.length();
+ for(size_t i = 0; i < len; i++)
+ {
+ XMLSchema::string < ACE_TCHAR > curr ((this->idl_srd_->args[i]));
+ sco.add_arg(curr);
+ }
+ this->srd_->cmdline (sco);
+
+ //Then a similar thing for the svcconf
+ XMLSchema::string < ACE_TCHAR > curr (this->idl_srd_->svcconf);
+ ACESvcConf asc;
+ asc.uri(curr);
+ this->srd_->svcconf (asc);
+
+ XMLSchema::string < ACE_TCHAR > id (this->idl_srd_->Id.in ());
+ this->srd_->id (id);
+
+ return true;
+ }
+
+ ::CIAO::DAnCE::ServerResource const *
+ SRD_Handler::srd_idl () const
+ throw (SRD_Handler::NoSRD)
+ {
+ if(!this->idl_srd_.get())
+ throw NoSRD ();
+
+ //else
+ return this->idl_srd_.get();
+ }
+
+ ::CIAO::DAnCE::ServerResource *
+ SRD_Handler::srd_idl ()
+ throw (SRD_Handler::NoSRD)
+ {
+ if(!this->idl_srd_.get())
+ throw NoSRD();
+
+ //else
+ return this->idl_srd_.release();
+ }
+
+ ServerResourcesDef const *
+ SRD_Handler::srd_xsc () const
+ throw (SRD_Handler::NoSRD)
+ {
+ if(!this->srd_.get())
+ throw NoSRD ();
+
+ //else
+ return this->srd_.get();
+ }
+
+ ServerResourcesDef *
+ SRD_Handler::srd_xsc ()
+ throw (SRD_Handler::NoSRD)
+ {
+ if(!this->srd_.get())
+ throw NoSRD ();
+
+ //else
+ return this->srd_.release();
+ }
+ }
+}
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.h
new file mode 100644
index 00000000000..3a5ad3128ed
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/SRD_Handler.h
@@ -0,0 +1,77 @@
+//======================================
+/**
+ * @file SRD_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu>
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+//======================================
+
+#ifndef CIAO_CONFIG_HANDLERS_SRD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_SRD_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "ace/Auto_Ptr.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ServerResourcesDef;
+
+ /*
+ * @class SRD_Handler
+ *
+ * @brief Handler class for <ServerResourcesDef
+ */
+
+ class RT_CCM_Handlers_Export SRD_Handler
+ {
+ public:
+ class NoSRD {};
+
+ SRD_Handler (const ACE_TCHAR *file);
+
+ SRD_Handler(ServerResourcesDef *srd);
+
+ SRD_Handler(::CIAO::DAnCE::ServerResource *srd);
+
+ ~SRD_Handler (void);
+
+ ::CIAO::DAnCE::ServerResource const *srd_idl (void) const
+ throw (NoSRD);
+
+ ::CIAO::DAnCE::ServerResource *srd_idl (void)
+ throw (NoSRD);
+
+ ServerResourcesDef const *srd_xsc (void) const
+ throw (NoSRD);
+
+ ServerResourcesDef *srd_xsc (void)
+ throw (NoSRD);
+
+ private:
+ bool build_srd ();
+
+
+ bool build_xsc ();
+
+ auto_ptr < ::CIAO::DAnCE::ServerResource > idl_srd_;
+
+ auto_ptr <ServerResourcesDef> srd_;
+
+ bool retval_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* SRD_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.cpp
new file mode 100644
index 00000000000..4d65478d19c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.cpp
@@ -0,0 +1,81 @@
+// $Id$
+
+#include "TPL_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool
+ TPL_Handler::threadpool_with_lanes (
+ const ThreadpoolWithLanesDef &src,
+ ::CIAO::DAnCE::ORS_ThreadpoolWithLanes &dest)
+ {
+ if (src.id_p ())
+ {
+ dest.Id = CORBA::string_dup (src.id().c_str ());
+ }
+
+ for (ThreadpoolWithLanesDef::threadpoolLane_const_iterator loc =
+ src.begin_threadpoolLane ();
+ loc != src.end_threadpoolLane ();
+ loc++)
+ {
+ size_t len = dest.threadpool_lanes.length ();
+
+ dest.threadpool_lanes.length (len + 1);
+
+ dest.threadpool_lanes[len].lane_priority =
+ static_cast <ACE_INT16> (loc->priority ());
+
+ dest.threadpool_lanes[len].static_threads =
+ static_cast <ACE_UINT32> (loc->static_threads ());
+
+ dest.threadpool_lanes[len].dynamic_threads =
+ static_cast <ACE_UINT32> (loc->dynamic_threads ());
+ }
+
+ dest.stacksize = static_cast <ACE_INT16> (src.stacksize ());
+
+ dest.allow_borrowing = src.allow_borrowing ();
+
+ dest.allow_request_buffering = src.allow_request_buffering ();
+
+ dest.max_buffered_requests =
+ static_cast <ACE_UINT32> (src.max_buffered_requests ());
+
+ dest.max_request_buffer_size =
+ static_cast <ACE_UINT32> (src.max_request_buffered_size ());
+
+ return true;
+ }
+
+ ThreadpoolWithLanesDef TPL_Handler::threadpool_with_lanes (
+ const ::CIAO::DAnCE::ORS_ThreadpoolWithLanes &src)
+ {
+ ThreadpoolWithLanesDef tpl (XMLSchema::unsignedLong (src.stacksize),
+ XMLSchema::boolean ((src.allow_borrowing)),
+ XMLSchema::boolean ((src.allow_request_buffering)),
+ XMLSchema::unsignedLong ((src.max_buffered_requests)),
+ XMLSchema::unsignedLong ((src.max_request_buffer_size))
+ );
+
+ //XMLSchema::ID <ACE_TCHAR> id = ((src.Id));
+ tpl.id (src.Id.in ());
+
+ size_t len = src.threadpool_lanes.length ();
+ for (size_t i = 0; i < len; i++)
+ {
+ ThreadpoolLaneDef new_tplane (
+ XMLSchema::unsignedLong (src.threadpool_lanes[i].static_threads),
+ XMLSchema::unsignedLong (src.threadpool_lanes[i].dynamic_threads),
+ XMLSchema::int_ (src.threadpool_lanes[i].lane_priority));
+
+ tpl.add_threadpoolLane (new_tplane);
+ }
+
+ return tpl;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.h
new file mode 100644
index 00000000000..9a129302c05
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/TPL_Handler.h
@@ -0,0 +1,48 @@
+//===============================================
+/*
+ * @file TPL_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu>
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ */
+//===============================================
+
+#ifndef CIAO_CONFIG_HANDLERS_TPL_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_TPL_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#include "RT_CCM_Handlers_Export.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ThreadpoolWithLanesDef;
+
+ /*
+ * @class TPL_Handler
+ * A brief Handler class for <ThreadpoolWithLanesDef>
+ */
+
+ class RT_CCM_Handlers_Export TPL_Handler
+ {
+ public:
+
+ static bool threadpool_with_lanes (
+ const ThreadpoolWithLanesDef &src,
+ ::CIAO::DAnCE::ORS_ThreadpoolWithLanes &dest);
+
+ static ThreadpoolWithLanesDef threadpool_with_lanes (
+ const ::CIAO::DAnCE::ORS_ThreadpoolWithLanes &src);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* TPL_HANDLER_H */
+
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.cpp
new file mode 100644
index 00000000000..9d29bec5c40
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.cpp
@@ -0,0 +1,63 @@
+// $Id$Exp lseibert
+
+#include "TP_Handler.h"
+#include "CIAOServerResources.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool TP_Handler::thread_pool (
+ const ThreadpoolDef &src,
+ ::CIAO::DAnCE::ORS_Threadpool &dest
+ )
+ {
+ dest.Id = CORBA::String_var (src.id ().c_str ());
+
+ dest.stacksize =
+ static_cast <ACE_UINT32> (src.stacksize ());
+
+ dest.static_threads =
+ static_cast <ACE_UINT32> (src.static_threads( ));
+
+ dest.dynamic_threads =
+ static_cast <ACE_UINT32> (src.dynamic_threads());
+
+ dest.default_priority =
+ static_cast <ACE_INT16> (src.default_priority ());
+
+ dest.allow_request_buffering = src.allow_request_buffering ();
+
+ dest.max_buffered_requests =
+ static_cast <ACE_UINT32> (src.max_buffered_requests ());
+
+ dest.max_request_buffer_size =
+ static_cast <ACE_UINT32> (src.max_request_buffered_size ());
+
+ return true;
+ }
+
+ ThreadpoolDef
+ TP_Handler::thread_pool (
+ const ::CIAO::DAnCE::ORS_Threadpool &src
+ )
+ {
+ ThreadpoolDef tp (
+ XMLSchema::unsignedLong (src.stacksize),
+ XMLSchema::unsignedLong (src.static_threads),
+ XMLSchema::unsignedLong (src.dynamic_threads),
+ Priority (src.default_priority),
+ XMLSchema::boolean (src.allow_request_buffering),
+ XMLSchema::unsignedLong (src.max_buffered_requests),
+ XMLSchema::unsignedLong (src.max_request_buffer_size)
+ );
+
+ if (src.Id.in () == 0)
+ {
+ tp.id (src.Id.in ());
+ }
+
+ return tp;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.h b/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.h
new file mode 100644
index 00000000000..f0e27e2cef5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/TP_Handler.h
@@ -0,0 +1,46 @@
+//==============================================
+/*
+ * @file TP_Handler.h
+ *
+ * @author Lucas Seibert <lseibert@dre.vanderbilt.edu>
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ * $Id$
+ */
+//==============================================
+
+#ifndef CIAO_CONFIG_HANDLERS_TP_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_TP_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "RT_CCM_Handlers_Export.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ThreadpoolDef;
+
+ /*
+ * @class TP_Handler
+ * A brief Handler class for <ThreadpoolDef>
+ */
+
+ class RT_CCM_Handlers_Export TP_Handler
+ {
+ public:
+ static bool thread_pool (const ThreadpoolDef &src,
+ ::CIAO::DAnCE::ORS_Threadpool &dest);
+
+ static ThreadpoolDef thread_pool (const ::CIAO::DAnCE::ORS_Threadpool &src);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* TP_HANDLER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/input.csr b/modules/CIAO/tools/Config_Handlers/RT-CCM/input.csr
new file mode 100644
index 00000000000..3a44faf9754
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/input.csr
@@ -0,0 +1,70 @@
+
+<CIAO:ServerResources
+ xmlns:CIAO="http://www.dre.vanderbilt.edu/ServerResources"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.dre.vanderbilt.edu/ServerResources CIAOServerResources.xsd">
+
+ <cmdline>
+ <arg> -ORBDebugLevel 10 -ORBEndpoint corbaloc://foo/bar</arg>
+ </cmdline>
+
+ <svcconf>
+ <uri>
+ svcconf.uri
+ </uri>
+ </svcconf>
+
+ <orbConfigs>
+ <resources>
+ <threadpool id="threadpool-1">
+ <stacksize>100</stacksize>
+ <static_threads>50</static_threads>
+ <dynamic_threads>25</dynamic_threads>
+ <default_priority>5</default_priority>
+ <allow_request_buffering>true</allow_request_buffering>
+ <max_buffered_requests>10</max_buffered_requests>
+ <max_request_buffered_size>20</max_request_buffered_size>
+ </threadpool>
+
+ <threadpoolWithLanes id="threadpool-2">
+ <threadpoolLane>
+ <static_threads>50</static_threads>
+ <dynamic_threads>25</dynamic_threads>
+ <priority>36</priority>
+ </threadpoolLane>
+ <stacksize>100</stacksize>
+ <allow_borrowing>true</allow_borrowing>
+ <allow_request_buffering>true</allow_request_buffering>
+ <max_buffered_requests>10</max_buffered_requests>
+ <max_request_buffered_size>20</max_request_buffered_size>
+ </threadpoolWithLanes>
+
+ <connectionBands id="cb-1">
+ <band>
+ <low>0</low>
+ <high>10</high>
+ </band>
+ <band>
+ <low>11</low>
+ <high>20</high>
+ </band>
+ </connectionBands>
+ </resources>
+
+ <policySet>
+ <priorityModel server_priority="10">
+ <priority_model>SERVER_DECLARED</priority_model>
+ </priorityModel>
+ <priorityModel>
+ <priority_model>CLIENT_PROPAGATED</priority_model>
+ </priorityModel>
+
+ <threadpool>threadpool-1</threadpool>
+ <threadpool>threadpool-2</threadpool>
+
+ <priorityBandedConnection>cb-1</priorityBandedConnection>
+
+ </policySet>
+ </orbConfigs>
+</CIAO:ServerResources>
diff --git a/modules/CIAO/tools/Config_Handlers/RT-CCM/test.cpp b/modules/CIAO/tools/Config_Handlers/RT-CCM/test.cpp
new file mode 100644
index 00000000000..15fabe1f34a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/RT-CCM/test.cpp
@@ -0,0 +1,89 @@
+// $Id$
+
+#include <iostream>
+
+#include "CIAOServerResources.hpp"
+#include "SRD_Handler.h"
+#include "ciao/ServerResourcesC.h"
+
+#include "ace/Get_Opt.h"
+#include "XML_Helper.h"
+#include "tao/ORB.h"
+
+static const char *input_file = "BasicSP.cdp";
+
+
+static int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "i:");
+
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'i':
+ input_file = get_opts.opt_arg ();
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-i <input file> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command-line
+ return 0;
+}
+
+using namespace CIAO::Config_Handlers;
+
+int main (int argc, char *argv[])
+{
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ // Initialize an ORB so Any will work
+ CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv, "");
+
+ //Create an XML_Helper for all the file work
+ XML_Helper the_helper;
+
+ if (xercesc::DOMDocument *doc = the_helper.create_dom (input_file))
+ {
+ //Read in the XSC type structure from the DOMDocument
+ ServerResourcesDef srd = ServerResources (doc);
+
+ // Convert XSC to idl datatype
+ SRD_Handler srd_handler (&srd);
+
+ std::cout << "Instance document import succeeded. Dumping contents to file\n";
+
+ CIAO::DAnCE::ServerResource *sr (srd_handler.srd_idl ());
+
+ SRD_Handler reverse_handler (sr);
+
+ xercesc::DOMDocument *the_xsc (the_helper.create_dom ("CIAO:ServerResources",
+ "http://www.dre.vanderbilt.edu/ServerResources"));
+
+ std::cout << "NS:"
+ << std::string (xercesc::XMLString::transcode (the_xsc->getDocumentElement ()->getNamespaceURI ())) << std::endl
+ << std::string (xercesc::XMLString::transcode (the_xsc->getDocumentElement ()->getPrefix ())) << std::endl
+ << std::string (xercesc::XMLString::transcode (the_xsc->getDocumentElement ()->getLocalName ())) << std::endl
+ << std::endl;
+
+ ServerResources (*reverse_handler.srd_xsc (), the_xsc);
+
+ // write out the result
+ the_helper.write_DOM (the_xsc, "output.srd");
+ }
+
+ std::cout << "Test completed!";
+
+ return 0;
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Req_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Req_Handler.cpp
new file mode 100644
index 00000000000..c20d5e428f2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Req_Handler.cpp
@@ -0,0 +1,57 @@
+// $Id$
+
+#include "Req_Handler.h"
+#include "Property_Handler.h"
+#include "ciao/DeploymentC.h"
+#include "ciao/CIAO_common.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ Req_Handler::Req_Handler (void)
+ {
+ }
+
+ Req_Handler::~Req_Handler (void)
+ {
+ }
+
+ void
+ Req_Handler::handle_requirement (const Requirement& desc,
+ Deployment::Requirement& toconfig)
+ {
+ CIAO_TRACE("Req_Handler::get_Requirement");
+
+ //Map the basic string types to their Deployment::Req
+ //counterparts.
+ toconfig.name = desc.name ().c_str ();
+ toconfig.resourceType = desc.resourceType ().c_str ();
+
+ toconfig.property.length (desc.count_property ());
+ std::for_each (desc.begin_property (),
+ desc.end_property (),
+ Property_Functor (toconfig.property));
+ }
+
+ Requirement
+ Req_Handler::get_requirement (const Deployment::Requirement& src)
+ {
+ CIAO_TRACE("Req_Handler::get_requirement - reverse");
+
+ //Get the values for name and res
+ XMLSchema::string< char > name ((src.name));
+ XMLSchema::string< char > res ((src.resourceType));
+
+ //Instantiate the Requirement
+ Requirement req (name,res);
+
+ for (CORBA::ULong i = 0; i < src.property.length (); ++i)
+ {
+ req.add_property (Property_Handler::get_property (src.property[i]));
+ }
+
+ return req;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Req_Handler.h b/modules/CIAO/tools/Config_Handlers/Req_Handler.h
new file mode 100644
index 00000000000..18eba6744af
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Req_Handler.h
@@ -0,0 +1,71 @@
+//==============================================================
+/**
+ * @file Req_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_REQ_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_REQ_HANDLER_H
+#include /**/ "ace/pre.h"
+
+#include "Basic_Deployment_Data.hpp"
+#include "Config_Handlers_Common_Export.h"
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct Requirement;
+ class Requirements;
+}
+
+namespace CIAO
+{
+
+ namespace Config_Handlers
+ {
+ /*
+ * @class REQ_Handler
+ *
+ * @brief Handler class for <Requirement> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC Requirement objects, parsed from
+ * the descriptor files, to the corresponding CORBA IDL type.
+ *
+ */
+
+ class Config_Handlers_Common_Export Req_Handler
+ {
+ public:
+
+ Req_Handler (void);
+ virtual ~Req_Handler (void);
+
+ ///This method takes a <Deployment::Requirement>
+ ///and maps the values from the passed in XSC
+ ///Requirement to its members.
+ static void handle_requirement (const Requirement& desc,
+ Deployment::Requirement& toconfig);
+ static Requirement
+ get_requirement (const Deployment::Requirement& src);
+ };
+
+ typedef Sequence_Handler < Requirement,
+ ::Deployment::Requirements,
+ ::Deployment::Requirement,
+ Req_Handler::handle_requirement > Requirement_Functor;
+
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_REQ_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.cpp b/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.cpp
new file mode 100644
index 00000000000..4eeb7377b29
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.cpp
@@ -0,0 +1,173 @@
+// $Id$
+#include "STD_CID_Handler.h"
+#include "STD_CPD_Handler.h"
+#include "STD_IAD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Utils/XML_Helper.h"
+#include "Deployment.hpp"
+#include "Property_Handler.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ IDREF_Base<CORBA::ULong> STD_CID_Handler::IDREF;
+
+ bool
+ STD_CID_Handler::component_impl_descr (
+ const ComponentImplementationDescription &desc,
+ ::Deployment::ComponentImplementationDescription &toconfig)
+ {
+ toconfig.label =
+ desc.label ().c_str ();
+
+ toconfig.UUID =
+ desc.UUID ().c_str ();
+
+
+ if (desc.assemblyImpl_p ())
+ {
+ Deployment::ComponentAssemblyDescription idl_cad;
+ ComponentAssemblyDescription cad =
+ desc.assemblyImpl ();
+
+ // @@: handle <assemblyImpl>
+ for (ComponentAssemblyDescription::instance_const_iterator iter =
+ cad.begin_instance ();
+ iter != cad.end_instance ();
+ iter++)
+ {
+ CORBA::ULong len =
+ idl_cad.instance.length ();
+ idl_cad.instance.length (len + 1);
+ idl_cad.instance [len].name =
+ (*iter).name ().c_str ();
+
+ // Bind the instance id with the index
+ if ((*iter).id_p ())
+ {
+ ACE_CString cstr ((*iter).id ().c_str ());
+
+ STD_CID_Handler::IDREF.bind_ref (cstr,len);
+ }
+
+ if (!this->xml_helper_->is_initialized ())
+ return false;
+
+ // parse the .cpd (ComponentPackageDescription) file
+ // that <package> links to
+ xercesc::DOMDocument* dom =
+ this->xml_helper_->create_dom (((*iter).package ()).href ().c_str ());
+
+ if (!dom)
+ return false;
+
+ ComponentPackageDescription cpd =
+ componentPackageDescription (dom);
+
+ Deployment::ComponentPackageDescription idl_cpd;
+
+ STD_CPD_Handler cpd_handler (this->xml_helper_);
+
+ cpd_handler.component_package_descr (cpd,
+ idl_cpd);
+
+ idl_cad.instance [len].package.length (1);
+ idl_cad.instance [len].package [0] = idl_cpd;
+ }
+
+ // @@: handle <connection>
+ for (ComponentAssemblyDescription::connection_const_iterator conn_iter =
+ cad.begin_connection ();
+ conn_iter != cad.end_connection ();
+ conn_iter++)
+ {
+ CORBA::ULong conn_len =
+ idl_cad.connection.length ();
+
+ idl_cad.connection.length (conn_len + 1);
+ idl_cad.connection [conn_len].name =
+ (*conn_iter).name ().c_str ();
+
+
+ for (AssemblyConnectionDescription::internalEndpoint_const_iterator ep_iter =
+ (*conn_iter).begin_internalEndpoint ();
+ ep_iter != (*conn_iter).end_internalEndpoint ();
+ ep_iter++)
+ {
+ CORBA::ULong endp_len =
+ idl_cad.connection [conn_len].internalEndpoint.length ();
+ idl_cad.connection [conn_len].internalEndpoint.length (endp_len + 1);
+ idl_cad.connection [conn_len].internalEndpoint [endp_len].portName =
+ (*ep_iter).portName ().c_str ();
+
+ CORBA::ULong tmp = 0;
+ STD_CID_Handler::IDREF.find_ref (ACE_CString ((((*ep_iter).instance ()).id ()).c_str ()),
+ tmp);
+ CORBA::ULong ref = tmp;
+ idl_cad.connection[conn_len].internalEndpoint [endp_len].instanceRef = ref;
+ }
+ }
+
+ toconfig.assemblyImpl.length (1);
+ toconfig.assemblyImpl [0] = idl_cad;
+ }
+
+ // handle <monolithicImpl>
+ if (desc.monolithicImpl_p ())
+ {
+ Deployment::MonolithicImplementationDescription idl_mid;
+ MonolithicImplementationDescription mid =
+ desc.monolithicImpl ();
+
+ for (MonolithicImplementationDescription::primaryArtifact_const_iterator iter =
+ mid.begin_primaryArtifact ();
+ iter != mid.end_primaryArtifact ();
+ iter++)
+ {
+ CORBA::ULong len =
+ idl_mid.primaryArtifact.length ();
+ idl_mid.primaryArtifact.length (len + 1);
+ idl_mid.primaryArtifact [len].name = (*iter).name ().c_str ();
+
+ if (!this->xml_helper_->is_initialized ())
+ return false;
+
+ // parse the .iad (ImplementationArtifactDescription) file
+ // that the <referencedArtifact> links to
+ xercesc::DOMDocument* dom =
+ this->xml_helper_->create_dom (((*iter).referencedArtifact ()).href ().c_str ()); // here location indicates .iad file
+
+ if (!dom)
+ return false;
+
+ ImplementationArtifactDescription iad =
+ implementationArtifactDescription (dom);
+
+ Deployment::ImplementationArtifactDescription idl_iad;
+
+ STD_IAD_Handler::impl_artifact_descr (iad,
+ idl_iad);
+
+ idl_mid.primaryArtifact [len].referencedArtifact = idl_iad;
+
+ }
+ toconfig.monolithicImpl.length (1);
+ toconfig.monolithicImpl [0] = idl_mid;
+ }
+
+ // handle <configProperty>
+ if (desc.configProperty_p ())
+ {
+ Property p = desc.configProperty ();
+ Deployment::Property idl_p;
+ Property_Handler::get_property (p, idl_p);
+ toconfig.configProperty.length (1);
+ toconfig.configProperty [0] = idl_p;
+ }
+
+ return true;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.h b/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.h
new file mode 100644
index 00000000000..c8fb2954a6f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_CID_Handler.h
@@ -0,0 +1,79 @@
+//================================================
+/**
+ * @file STD_CID_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "IDREF_Base.h"
+#include "Config_Handlers_Export.h"
+#include "ciao/DeploymentC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentImplementationDescription;
+
+ /*
+ * @class STD_CID_Handler
+ *
+ * @brief Handler class for <CCMComponentImplementationDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Config_Handlers_Export STD_CID_Handler
+ {
+
+ public:
+
+ STD_CID_Handler (XML_Helper *xml_helper)
+ :xml_helper_ (xml_helper)
+ {
+ }
+
+ /// Maps the values from the XSC object
+ /// <ComponentImplementationDescription> to the CORBA IDL type
+ /// <Deployment::ComponentImplementationDescription>.
+ bool component_impl_descr (
+ const ComponentImplementationDescription &desc,
+ ::Deployment::ComponentImplementationDescription &toconfig);
+
+ static IDREF_Base<CORBA::ULong> IDREF;
+
+//@@Note: This part has yet to be added in the future
+// ComponentImplementationDescription
+// component_port_description (
+// const Deployment::ComponentImplementationDescription& src);
+
+ private:
+ // disable the default constructor
+ STD_CID_Handler ()
+ :xml_helper_ (0)
+ {
+ }
+
+ XML_Helper *xml_helper_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_STD_CID_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.cpp
new file mode 100644
index 00000000000..d79a4ea5d39
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.cpp
@@ -0,0 +1,57 @@
+// $Id$
+#include "STD_CPD_Handler.h"
+#include "STD_CID_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "Deployment.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool
+ STD_CPD_Handler::component_package_descr (
+ const ComponentPackageDescription &desc,
+ ::Deployment::ComponentPackageDescription &toconfig)
+ {
+ toconfig.label =
+ desc.label ().c_str ();
+
+ toconfig.UUID =
+ desc.UUID ().c_str ();
+
+ PackagedComponentImplementation pci = desc.implementation ();
+ Deployment::PackagedComponentImplementation idl_pci;
+ idl_pci.name =
+ pci.name ().c_str ();
+
+ if (!this->xml_helper_->is_initialized ())
+ return false;
+
+ // parse the .cid (ComponentImplementationDescription) file
+ // that <referencedImplementation> links to
+ xercesc::DOMDocument* dom =
+ this->xml_helper_->create_dom ((pci.referencedImplementation ()).href ().c_str ()); // here location indicates .pcd file
+
+ if (!dom)
+ return false;
+
+ ComponentImplementationDescription cid =
+ componentImplementationDescription (dom);
+
+ Deployment::ComponentImplementationDescription idl_cid;
+
+ STD_CID_Handler cid_handler (this->xml_helper_);
+
+ cid_handler.component_impl_descr (cid,
+ idl_cid);
+
+ idl_pci.referencedImplementation = idl_cid;
+
+ toconfig.implementation.length (1);
+ toconfig.implementation [0] = idl_pci;
+
+ return true;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.h b/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.h
new file mode 100644
index 00000000000..654fb0155ca
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_CPD_Handler.h
@@ -0,0 +1,78 @@
+//================================================
+/**
+ * @file STD_CPD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_CPD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Utils/XML_Helper.h"
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ComponentPackageDescription;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ComponentPackageDescription;
+
+ /*
+ * @class STD_CPD_Handler
+ *
+ * @brief Handler class for <CCMComponentPackageDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Config_Handlers_Export STD_CPD_Handler
+ {
+
+ public:
+
+ STD_CPD_Handler (XML_Helper *xml_helper)
+ :xml_helper_ (xml_helper)
+ {
+ }
+
+ /// Maps the values from the XSC object
+ /// <ComponentPackageDescription> to the CORBA IDL type
+ /// <Deployment::ComponentPackageDescription>.
+ bool component_package_descr(
+ const ComponentPackageDescription &desc,
+ ::Deployment::ComponentPackageDescription &toconfig);
+
+ //@@Note: This part has yet to be added in the future
+ // ComponentPortDescription
+ // component_package_descr (
+ // const Deployment::ComponentPortDescription& src);
+ private:
+ // disable the default constructor
+ STD_CPD_Handler ()
+ :xml_helper_ (0)
+ {
+ }
+
+ XML_Helper *xml_helper_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_CPD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.cpp
new file mode 100644
index 00000000000..020396582d3
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.cpp
@@ -0,0 +1,46 @@
+// $Id$
+#include "STD_IAD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Packaging_DataC.h"
+#include "Property_Handler.h"
+
+#include "iad.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ bool
+ STD_IAD_Handler::impl_artifact_descr (
+ const ImplementationArtifactDescription &desc,
+ ::Deployment::ImplementationArtifactDescription &toconfig)
+ {
+ toconfig.label =
+ desc.label ().c_str ();
+
+ toconfig.UUID =
+ desc.UUID ().c_str ();
+
+ for (ImplementationArtifactDescription::location_const_iterator iter =
+ desc.begin_location ();
+ iter != desc.end_location ();
+ iter++)
+ {
+ CORBA::ULong len =
+ toconfig.location.length ();
+ toconfig.location.length (len + 1);
+ toconfig.location [len] = (*iter).c_str ();
+ }
+
+ if (desc.execParameter_p ())
+ {
+ Property p = desc.execParameter ();
+ Deployment::Property idl_p;
+ Property_Handler::get_property (p, idl_p);
+ toconfig.execParameter.length (1);
+ toconfig.execParameter [0] = idl_p;
+ }
+ return true;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.h b/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.h
new file mode 100644
index 00000000000..3523526f5be
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_IAD_Handler.h
@@ -0,0 +1,64 @@
+//================================================
+/**
+ * @file STD_IAD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct ImplementationArtifactDescription;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class ImplementationArtifactDescription;
+
+ /*
+ * @class STD_IAD_Handler
+ *
+ * @brief Handler class for <CCMImplementationArtifactDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Config_Handlers_Export STD_IAD_Handler
+ {
+
+ public:
+ /// Maps the values from the XSC object
+ /// <ImplementationArtifactDescription> to the CORBA IDL type
+ /// <Deployment::ImplementationArtifactDescription>.
+ static bool
+ impl_artifact_descr (
+ const ImplementationArtifactDescription &desc,
+ ::Deployment::ImplementationArtifactDescription &toconfig);
+
+//@@Note: The reverse part has yet to be handed in the future
+// ImplementationArtifactDescription
+// impl_artifact_descr (
+// const Deployment::ComponentPortDescription& src);
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_STD_IAD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.cpp b/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.cpp
new file mode 100644
index 00000000000..6bef6636238
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.cpp
@@ -0,0 +1,52 @@
+// $Id$
+#include "STD_PCD_Handler.h"
+#include "STD_CPD_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Packaging_DataC.h"
+#include "Deployment.hpp"
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ bool
+ STD_PCD_Handler::package_config (
+ const PackageConfiguration &desc,
+ ::Deployment::PackageConfiguration &toconfig)
+ {
+ toconfig.label =
+ desc.label ().c_str ();
+
+ toconfig.UUID =
+ desc.UUID ().c_str ();
+
+ if (!this->xml_helper_->is_initialized ())
+ return false;
+
+ // parse the .cpd (ComponentPackageDescription) file
+ // that <basePackage> links to
+ xercesc::DOMDocument* dom =
+ this->xml_helper_->create_dom ((desc.basePackage()).href ().c_str ());
+
+ if (!dom)
+ return false;
+
+ ComponentPackageDescription cpc =
+ componentPackageDescription (dom);
+
+ Deployment::ComponentPackageDescription idl_cpc;
+
+ STD_CPD_Handler cpd_handler (this->xml_helper_);
+
+ cpd_handler.component_package_descr (cpc,
+ idl_cpc);
+
+ toconfig.basePackage.length (1);
+ toconfig.basePackage [0] = idl_cpc;
+
+ return true;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.h b/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.h
new file mode 100644
index 00000000000..ba53f6736da
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_PCD_Handler.h
@@ -0,0 +1,78 @@
+//================================================
+/**
+ * @file STD_PCD_Handler.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H
+
+#include /**/ "ace/pre.h"
+#include "Utils/XML_Helper.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct PackageConfiguration;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class PackageConfiguration;
+
+ /*
+ * @class STD_PCD_Handler
+ *
+ * @brief Handler class for <CCMPackageConfiguration> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+ class Config_Handlers_Export STD_PCD_Handler
+ {
+
+ public:
+ STD_PCD_Handler (XML_Helper *xml_helper)
+ :xml_helper_ (xml_helper)
+ {
+ }
+
+ /// Maps the values from the XSC object
+ /// <PackageConfiguration> to the CORBA IDL type
+ /// <Deployment::PackageConfiguration>.
+ bool package_config (
+ const PackageConfiguration &desc,
+ ::Deployment::PackageConfiguration &toconfig);
+
+//@@Note: This part has yet to be added in the future
+// PackageConfiguration
+// package_config (
+// const Deployment::ComponentPortDescription& src);
+
+ private:
+ // Disable the default constructor
+ STD_PCD_Handler ()
+ :xml_helper_ (0)
+ {
+ }
+
+ XML_Helper *xml_helper_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_STD_PCD_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.cpp b/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.cpp
new file mode 100644
index 00000000000..e265295d040
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.cpp
@@ -0,0 +1,75 @@
+// $Id$
+
+#include "STD_PC_Intf.h"
+#include "Utils/XML_Helper.h"
+#include "Deployment.hpp"
+#include "STD_PCD_Handler.h"
+#include "ciao/Packaging_DataC.h"
+#include "ciao/CIAO_common.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ STD_PC_Intf::STD_PC_Intf (const char *file)
+ {
+ if (!this->prepare_PC (file))
+ throw;
+ }
+
+ bool
+ STD_PC_Intf::prepare_PC (const char *file)
+ {
+ CIAO_TRACE("STD_PC_Intf::prepare_PC");
+
+ ACE_Auto_Ptr<XML_Helper> helper (new XML_Helper);
+
+ if (!helper->is_initialized ())
+ return false;
+
+ // parse the .pcd (PackageConfigurationDescription) file
+ xercesc::DOMDocument *dom =
+ helper->create_dom (file);
+
+ if (!dom)
+ return false;
+
+
+ PackageConfiguration pc =
+ packageConfiguration (dom);
+
+
+ Deployment::PackageConfiguration idl_pc;
+
+
+ STD_PCD_Handler pcd_handler (helper.get ());
+
+ pcd_handler.package_config (pc,
+ idl_pc);
+
+
+ Deployment::PackageConfiguration *p_idl_pc =
+ new Deployment::PackageConfiguration (idl_pc);
+
+ // let ACE_Auto_Ptr take over
+ this->idl_pc_.reset (p_idl_pc);
+
+ if (this->idl_pc_.get ())
+ return true;
+
+ return false;
+ }
+
+ ::Deployment::PackageConfiguration const *
+ STD_PC_Intf::get_PC (void) const
+ {
+ return this->idl_pc_.get ();
+ }
+
+ ::Deployment::PackageConfiguration *
+ STD_PC_Intf::get_PC (void)
+ {
+ return this->idl_pc_.release ();
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.h b/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.h
new file mode 100644
index 00000000000..2e07e1922eb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/STD_PC_Intf.h
@@ -0,0 +1,62 @@
+//==============================================================
+/**
+ * @file STD_PC_Intf.h
+ *
+ * $Id$
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+//================================================================
+
+#ifndef CIAO_CONFIG_STD_PC_INTF_H
+#define CIAO_CONFIG_STD_PC_INTF_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Auto_Ptr.h"
+
+
+namespace Deployment
+{
+ struct PackageConfiguration ;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ /*
+ * @class STD_PC_Intf
+ *
+ * @brief Wrapper class for PackageConfiguration extraction
+ *
+ * This class defines wrapper functions for extracting
+ * PackageConfiguration IDL structures from XSC structures.
+ * It serves as the public interface used by application
+ * developers.
+ *
+ */
+ class Config_Handlers_Export STD_PC_Intf
+ {
+ public:
+ STD_PC_Intf (const char *file);
+
+ ::Deployment::PackageConfiguration const *get_PC (void) const;
+ ::Deployment::PackageConfiguration *get_PC (void);
+
+ protected:
+ bool prepare_PC (const char *file);
+
+ private:
+ ACE_Auto_Ptr< ::Deployment::PackageConfiguration> idl_pc_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_STD_PC_INTF_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
new file mode 100644
index 00000000000..31f4d937a49
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.cpp
@@ -0,0 +1,118 @@
+//$Id$
+
+#include "SatisfierProperty_Handler.h"
+#include "Any_Handler.h"
+#include "Basic_Deployment_Data.hpp"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+#include "Utils/Exceptions.h"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ SatisfierProperty_Handler::SatisfierProperty_Handler (void)
+ {
+ }
+
+ SatisfierProperty_Handler::~SatisfierProperty_Handler (void)
+ {
+ }
+
+ void
+ SatisfierProperty_Handler::handle_sat_property (
+ const SatisfierProperty& desc,
+ Deployment::SatisfierProperty& toconfig)
+ {
+ CIAO_TRACE("SatisfierProperty_Handler::get_sat_property");
+
+ toconfig.name = desc.name ().c_str ();
+
+ switch (desc.kind ().integral ())
+ {
+ case SatisfierPropertyKind::Quantity_l:
+ toconfig.kind = Deployment::Quantity;
+ break;
+
+ case SatisfierPropertyKind::Capacity_l:
+ toconfig.kind = Deployment::Capacity;
+ break;
+
+ case SatisfierPropertyKind::Minimum_l:
+ toconfig.kind = Deployment::Minimum;
+ break;
+
+ case SatisfierPropertyKind::Maximum_l:
+ toconfig.kind = Deployment::Maximum;
+ break;
+
+ // case SatisfierPropertyKind::Attribute_l:
+ //toconfig.kind = Deployment::_Attribute;
+ //break;
+
+ case SatisfierPropertyKind::Selection_l:
+ toconfig.kind = Deployment::Selection;
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR, "Unknown SatisfierPropertyKind\n"));
+ throw 1;
+
+ }
+
+ toconfig.dynamic = desc.dynamic ();
+
+ Any_Handler::extract_into_any (desc.value (),
+ toconfig.value);
+ }
+
+ SatisfierProperty
+ SatisfierProperty_Handler::get_sat_property (
+ const Deployment::SatisfierProperty& src)
+ {
+ CIAO_TRACE("SatisfierProperty_Handler::get_sat_property - reverse");
+
+ ::XMLSchema::string< ACE_TCHAR > name ((src.name));
+ SatisfierPropertyKind::Value kind;
+
+ const SatisfierPropertyKind *spk = 0;
+
+ switch (src.kind)
+ {
+ case Deployment::Quantity:
+ spk = &SatisfierPropertyKind::Quantity;
+ break;
+
+ case Deployment::Capacity:
+ spk = &SatisfierPropertyKind::Capacity;
+ break;
+
+ case Deployment::Minimum:
+ spk = &SatisfierPropertyKind::Minimum;
+ break;
+
+ case Deployment::Maximum:
+ spk = &SatisfierPropertyKind::Maximum;
+ break;
+
+ // case Deployment::_Attribute:
+ //kind = SatisfierPropertyKind::Attribute_l;
+ //break;
+
+ case Deployment::Selection:
+ kind = SatisfierPropertyKind::Selection_l;
+ break;
+
+ default:
+ throw Plan_Error ("Invalid SatisfierPropertyKind");
+ }
+
+ bool dynamic = src.dynamic;
+
+ Any value (Any_Handler::get_any (src.value));
+
+ return SatisfierProperty (name, *spk, dynamic, value);
+ }
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h
new file mode 100644
index 00000000000..c48dc353766
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/SatisfierProperty_Handler.h
@@ -0,0 +1,69 @@
+//================================================
+/**
+ * @file SatisfierProperty_Handler.h
+ *
+ * $Id$
+ *
+ * @author Jules White <jules@dre.vanderbilt.edu>
+ */
+//================================================
+
+#ifndef CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H
+#define CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Common_Export.h"
+#include "Utils/Functors.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+namespace Deployment
+{
+ struct SatisfierProperty;
+ class SatisfierProperties;
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class SatisfierProperty;
+
+ /*
+ * @class SatisfierProperty_Handler
+ *
+ * @brief Handler class for <CCMComponentPortDescription> types.
+ *
+ * This class defines handler methods to map values from
+ * XSC objects, parsed from the descriptor files, to the
+ * corresponding CORBA IDL type for the schema element.
+ *
+ */
+
+ class Config_Handlers_Common_Export SatisfierProperty_Handler
+ {
+ public:
+ SatisfierProperty_Handler (void);
+ virtual ~SatisfierProperty_Handler (void);
+
+ /// This method maps the values from the XSC object
+ /// <CIAO::Config_Handlers::SatisfierProperty> to the CORBA IDL type
+ /// <Deployment::SatisfierProperty>.
+ static void handle_sat_property (const SatisfierProperty& desc,
+ ::Deployment::SatisfierProperty& toconfig);
+ static SatisfierProperty get_sat_property (const ::Deployment::SatisfierProperty& src);
+ };
+
+ typedef Sequence_Handler < SatisfierProperty,
+ ::Deployment::SatisfierProperties,
+ ::Deployment::SatisfierProperty,
+ SatisfierProperty_Handler::handle_sat_property> SatisfierProperty_Functor;
+
+ }
+}
+
+#include /**/ "ace/post.h"
+#endif /* CIAO_CONFIG_HANDLERS_SATIS_PROPERTY_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h b/modules/CIAO/tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h
new file mode 100644
index 00000000000..f4f3ec3a1cd
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/CIAO_XML_Utils_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl CIAO_XML_Utils
+// ------------------------------
+#ifndef CIAO_XML_UTILS_EXPORT_H
+#define CIAO_XML_UTILS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (CIAO_XML_UTILS_HAS_DLL)
+# define CIAO_XML_UTILS_HAS_DLL 1
+#endif /* ! CIAO_XML_UTILS_HAS_DLL */
+
+#if defined (CIAO_XML_UTILS_HAS_DLL) && (CIAO_XML_UTILS_HAS_DLL == 1)
+# if defined (CIAO_XML_UTILS_BUILD_DLL)
+# define CIAO_XML_Utils_Export ACE_Proper_Export_Flag
+# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* CIAO_XML_UTILS_BUILD_DLL */
+# define CIAO_XML_Utils_Export ACE_Proper_Import_Flag
+# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* CIAO_XML_UTILS_BUILD_DLL */
+#else /* CIAO_XML_UTILS_HAS_DLL == 1 */
+# define CIAO_XML_Utils_Export
+# define CIAO_XML_UTILS_SINGLETON_DECLARATION(T)
+# define CIAO_XML_UTILS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* CIAO_XML_UTILS_HAS_DLL == 1 */
+
+// Set CIAO_XML_UTILS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (CIAO_XML_UTILS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define CIAO_XML_UTILS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define CIAO_XML_UTILS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !CIAO_XML_UTILS_NTRACE */
+
+#if (CIAO_XML_UTILS_NTRACE == 1)
+# define CIAO_XML_UTILS_TRACE(X)
+#else /* (CIAO_XML_UTILS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define CIAO_XML_UTILS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (CIAO_XML_UTILS_NTRACE == 1) */
+
+#endif /* CIAO_XML_UTILS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/Exceptions.h b/modules/CIAO/tools/Config_Handlers/Utils/Exceptions.h
new file mode 100644
index 00000000000..dadb7ed615d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/Exceptions.h
@@ -0,0 +1,39 @@
+// $Id$
+/**
+ * @file Exceptions.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ *
+ * Defines exceptions that may be thrown during the XSC<=>IDL translation process.
+ */
+#include <string>
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ struct Parse_Error
+ {
+ Parse_Error (const std::string &reason)
+ : reason_ (reason)
+ {
+ }
+
+ std::string reason_;
+ };
+
+ struct Plan_Error
+ {
+ Plan_Error (const std::string &reason)
+ : reason_ (reason)
+ {
+ }
+
+ std::string reason_;
+ };
+
+ }
+}
+
+
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/Functors.h b/modules/CIAO/tools/Config_Handlers/Utils/Functors.h
new file mode 100644
index 00000000000..6856a0defec
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/Functors.h
@@ -0,0 +1,87 @@
+#ifndef CONFIG_HANDLERS_FUNCTORS_H
+#define CONFIG_HANDLERS_FUNCTORS_H
+
+/**
+ * @file Functors.h
+ * @author William Otte <wotte@dre.vanderbilt.edu>
+ * $Id$
+ * Functors useful in the config handlers
+ */
+#include <iterator>
+
+#include "tao/Basic_Types.h" // For CORBA::ULong
+#include "tao/StringSeqC.h"
+
+#include "XMLSchema/Types.hpp"
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ template <typename Source,
+ typename Dest,
+ typename Dest_Type,
+#if defined (__BORLANDC__) && (__BORLANDC__ == 0x564)
+ void (Func)(const Source &, Dest_Type &)>
+#else
+ void (&Func)(const Source &, Dest_Type &)>
+#endif
+ struct Sequence_Handler
+ {
+ Sequence_Handler (Dest &dest, CORBA::ULong pos = 0)
+ : dest_ (dest),
+ pos_ (pos)
+ {
+ }
+
+ void operator() (const Source &src)
+ {
+ Func (src, dest_[pos_++]);
+ }
+
+ private:
+ Dest &dest_;
+ CORBA::ULong pos_;
+ };
+
+ /*
+ * This is a workaround for a GCC bug that for some reason causes
+ * functions that appear ONLY in a Sequence_Handler typedef to not
+ * be present in the compiled object file.
+ * This bug was first observed in GCC 4.02.
+ *
+ * W: The function we want to be defined
+ * X: First argument to the function
+ * Y: Second argument to the function
+ */
+#define SEQ_HAND_GCC_BUG_WORKAROUND(W, X, Y) \
+ while(0) { \
+ W (*X, Y[0]); \
+ }
+
+
+ template <typename Dest, typename Dest_Type>
+ struct String_Seq_Handler
+ {
+ String_Seq_Handler (Dest &dest, CORBA::ULong pos = 0)
+ : dest_ (dest),
+ pos_ (pos)
+ {
+ }
+
+ void operator() (const ::XMLSchema::string<ACE_TCHAR> &src)
+ {
+ dest_[pos_++] = src.c_str ();
+ }
+
+ private:
+ Dest &dest_;
+ CORBA::ULong pos_;
+ };
+
+ typedef String_Seq_Handler < ::CORBA::StringSeq,
+ ::CORBA::String_var > String_Seq_Functor;
+
+ }
+}
+
+#endif /* CONFIG_HANDLERS_FUNCTORS_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/Utils.mpc b/modules/CIAO/tools/Config_Handlers/Utils/Utils.mpc
new file mode 100644
index 00000000000..704c856d752
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/Utils.mpc
@@ -0,0 +1,15 @@
+// $Id$
+
+project (CIAO_XML_Utils) : acelib, xerces {
+ includes += $(CIAO_ROOT)/tools/Config_Handlers
+ sharedname += CIAO_XML_Utils
+ dynamicflags = CIAO_XML_UTILS_BUILD_DLL
+ macros += XML_USE_PTHREADS
+
+ Source_Files {
+ XML_Schema_Resolver.cpp
+ XML_Error_Handler.cpp
+ XML_Helper.cpp
+ XercesString.cpp
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.cpp b/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.cpp
new file mode 100644
index 00000000000..beae7bce56c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.cpp
@@ -0,0 +1,72 @@
+// $Id$
+
+#include "XML_Error_Handler.h"
+#include "ace/Log_Msg.h"
+#include "ace/Auto_Ptr.h"
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/dom/DOMLocator.hpp>
+#include "XercesString.h"
+
+using xercesc::XMLString;
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ XML_Error_Handler::XML_Error_Handler (void)
+ : errors_ (false)
+ {
+ }
+
+ XML_Error_Handler::~XML_Error_Handler()
+ {
+ }
+
+
+ bool
+ XML_Error_Handler::handleError (const DOMError& domError)
+ {
+ this->errors_ = true;
+
+ if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t), Warning "));
+ else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t), Error "));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t), Fatal Error "));
+ char *msg =
+ XMLString::transcode (domError.getMessage ());
+
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_msg (msg);
+
+ char *file =
+ XMLString::transcode (domError.getLocation ()->getURI ());
+
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_file (file);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "%s at line %d and column %d in file %s\n",
+ msg,
+ domError.getLocation ()->getLineNumber (),
+ domError.getLocation ()->getColumnNumber (),
+ file));
+
+ return true;
+ }
+
+ void
+ XML_Error_Handler::resetErrors (void)
+ {
+ this->errors_ = false;
+ }
+
+ bool
+ XML_Error_Handler::getErrors (void) const
+ {
+ return this->errors_;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.h b/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.h
new file mode 100644
index 00000000000..1b338de6773
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Error_Handler.h
@@ -0,0 +1,65 @@
+//==============================================================
+/**
+ * @file XML_Error_Handler.h
+ *
+ * $Id$
+ *
+ * @brief Error handler for Xerces
+ *
+ * @author Bala Natarajan <bala@dre.vanderbilt.edu>
+ */
+//================================================================
+#ifndef CIAO_CONFIG_HANLDERS_ERROR_HANDLER_H
+#define CIAO_CONFIG_HANLDERS_ERROR_HANDLER_H
+
+#include /**/ "ace/pre.h"
+
+#include "CIAO_XML_Utils_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include <xercesc/dom/DOMErrorHandler.hpp>
+
+using xercesc::DOMErrorHandler;
+using xercesc::DOMError;
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ /**
+ * @class XML_Error_Hander
+ *
+ * @brief Error handler for XERCES
+ *
+ */
+ class XML_Error_Handler
+ : public DOMErrorHandler
+ {
+ public:
+
+ XML_Error_Handler (void);
+
+ ~XML_Error_Handler (void);
+
+ bool handleError (const DOMError& domError);
+
+ void resetErrors (void);
+
+ bool getErrors(void) const;
+
+ private :
+ // Disallow copying
+ XML_Error_Handler (const XML_Error_Handler&);
+ XML_Error_Handler& operator= (const XML_Error_Handler&);
+
+ bool errors_;
+ };
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONFIG_HANLDERS_ERROR_HANDLER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.cpp b/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.cpp
new file mode 100644
index 00000000000..fc9fd07f809
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.cpp
@@ -0,0 +1,240 @@
+//$Id$
+#include "XML_Helper.h"
+#include "ace/Auto_Ptr.h"
+#include "ace/Log_Msg.h"
+#include "xercesc/util/XMLUniDefs.hpp"
+#include "xercesc/dom/DOM.hpp"
+#include "XML_Error_Handler.h"
+#include "XML_Schema_Resolver.h"
+#include "xercesc/framework/LocalFileFormatTarget.hpp"
+#include "XercesString.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ using xercesc::XMLException;
+ using xercesc::XMLString;
+ using xercesc::DOMImplementation;
+ using xercesc::DOMImplementationRegistry;
+ using xercesc::DOMBuilder;
+ using xercesc::DOMImplementationLS;
+ using xercesc::XMLUni;
+ using xercesc::DOMDocument;
+ using xercesc::DOMException;
+
+ XML_Helper::XML_Helper (void)
+ : initialized_ (false)
+ {
+ this->init_parser ();
+ }
+
+ XML_Helper::~XML_Helper (void)
+ {
+ this->terminate_parser ();
+ }
+
+ bool
+ XML_Helper::is_initialized (void) const
+ {
+ return this->initialized_ == true;
+ }
+
+ void
+ XML_Helper::init_parser (void)
+ {
+ if (this->initialized_)
+ return;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Initializing the Xerces runtime \n"));
+ // Initialize the Xerces run-time
+ try
+ {
+ xercesc::XMLPlatformUtils::Initialize();
+ }
+ catch (const XMLException& e)
+ {
+ char* message =
+ XMLString::transcode (e.getMessage());
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_message (message);
+
+ throw;
+ }
+ catch (...)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Some other exception,"
+ " returning\n"));
+
+ return;
+ }
+
+ // Instantiate the DOM parser.
+ static const XMLCh gLS[] = { xercesc::chLatin_L,
+ xercesc::chLatin_S,
+ xercesc::chNull };
+
+ // Get an implementation of the Load-Store (LS) interface
+ // and cache it for later use
+ impl_ =
+ DOMImplementationRegistry::getDOMImplementation(gLS);
+
+ this->initialized_ = true;
+ return;
+ }
+
+ XERCES_CPP_NAMESPACE::DOMDocument *
+ XML_Helper::create_dom (const ACE_TCHAR *root,
+ const ACE_TCHAR *ns)
+ {
+ if (root == 0 || ns == 0)
+ return 0;
+
+ return this->impl_->createDocument (XStr (ns),
+ XStr (root),
+ 0);
+ }
+
+ XERCES_CPP_NAMESPACE::DOMDocument *
+ XML_Helper::create_dom (const ACE_TCHAR *url)
+ {
+
+ if (url == 0)
+ return impl_->createDocument(
+ XStr ("http://www.omg.org/DeploymentPlan"),
+ XStr ("deploymentPlan"),
+ 0);
+
+ try
+ {
+
+ // Create a DOMBuilder
+ DOMBuilder* parser =
+ impl_->createDOMBuilder (DOMImplementationLS::MODE_SYNCHRONOUS,
+ 0);
+
+ // Discard comment nodes in the document
+ parser->setFeature (XMLUni::fgDOMComments, false);
+
+ // Disable datatype normalization. The XML 1.0 attribute value
+ // normalization always occurs though.
+ parser->setFeature (XMLUni::fgDOMDatatypeNormalization, true);
+
+ // Do not create EntityReference nodes in the DOM tree. No
+ // EntityReference nodes will be created, only the nodes
+ // corresponding to their fully expanded sustitution text will be
+ // created.
+ parser->setFeature (XMLUni::fgDOMEntities, false);
+
+ // Perform Namespace processing.
+ parser->setFeature (XMLUni::fgDOMNamespaces, true);
+
+ // Perform Validation
+ parser->setFeature (XMLUni::fgDOMValidation, true);
+
+ // Do not include ignorable whitespace in the DOM tree.
+ parser->setFeature (XMLUni::fgDOMWhitespaceInElementContent, false);
+
+ // Enable the parser's schema support.
+ parser->setFeature (XMLUni::fgXercesSchema, true);
+
+ // Enable full schema constraint checking, including checking which
+ // may be time-consuming or memory intensive. Currently, particle
+ // unique attribution constraint checking and particle derivation
+ // restriction checking are controlled by this option.
+ parser->setFeature (XMLUni::fgXercesSchemaFullChecking, true);
+
+ // The parser will treat validation error as fatal and will exit.
+ parser->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true);
+
+ XML_Error_Handler handler;
+
+ parser->setErrorHandler (&handler);
+
+ CIAO_Schema_Resolver resolver;
+
+ parser->setEntityResolver (&resolver);
+
+ DOMDocument* doc = parser->parseURI (url);
+
+ if (handler.getErrors ())
+ throw 0;
+
+ return doc;
+ }
+ catch (const DOMException& e)
+ {
+ const unsigned int maxChars = 2047;
+ XMLCh errText[maxChars + 1];
+
+ if (DOMImplementation::loadDOMExceptionMsg (e.code,
+ errText,
+ maxChars))
+ {
+ char* message =
+ XMLString::transcode (errText);
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_message (message);
+ }
+ return 0;
+
+ }
+ catch (const XMLException& e)
+ {
+ char* message = XMLString::transcode (e.getMessage());
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_message (message);
+ throw 0;
+ }
+ catch (...)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Caught an unknown exception \n"));
+ throw 0;
+ }
+
+ return 0;
+ }
+
+ void
+ XML_Helper::terminate_parser (void)
+ {
+ try
+ {
+ xercesc::XMLPlatformUtils::Terminate();
+ }
+ catch (const XMLException& e)
+ {
+ char* message =
+ XMLString::transcode (e.getMessage());
+ ACE_Auto_Basic_Array_Ptr<char> cleanup_message (message);
+ throw;
+ }
+
+ this->initialized_ = false;
+ return;
+ }
+
+ bool XML_Helper::write_DOM (XERCES_CPP_NAMESPACE::DOMDocument *doc,
+ const ACE_TCHAR *file)
+ {
+ bool retn;
+ XERCES_CPP_NAMESPACE::DOMWriter *writer = impl_->createDOMWriter();
+
+ if (writer->canSetFeature (XMLUni::fgDOMWRTFormatPrettyPrint,
+ true))
+ writer->setFeature (XMLUni::fgDOMWRTFormatPrettyPrint, true);
+
+ xercesc::XMLFormatTarget* ft (new xercesc::LocalFileFormatTarget(file));
+ retn = writer->writeNode(ft, *doc);
+ delete writer;
+ delete ft;
+ return retn;
+ }
+ }
+}
+#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+template ACE_Singleton< CIAO::Config_Handlers::XML_Helper, ACE_Null_Mutex> *
+ACE_Singleton<CIAO::Config_Handlers::XML_Helper, ACE_Null_Mutex>::singleton_;
+#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */
+
+
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.h b/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.h
new file mode 100644
index 00000000000..03b2f89bc28
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Helper.h
@@ -0,0 +1,95 @@
+// $Id$
+//============================================================
+/**
+ * @file XML_Helper.h
+ *
+ * @brief Some helper functions for XML
+ *
+ * @author Bala Natarajan <bala@dre.vanderbilt.edu>
+ */
+//============================================================
+#ifndef CIAO_CONFIG_HANDLERS_XML_HELPER_H
+#define CIAO_CONFIG_HANDLERS_XML_HELPER_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_XML_Utils_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "ace/Singleton.h"
+#include "ace/Null_Mutex.h"
+
+#include "xercesc/util/XercesDefs.hpp"
+
+namespace XERCES_CPP_NAMESPACE
+{
+ class DOMDocument;
+ class DOMWriter;
+ class DOMImplementation;
+}
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ /**
+ * @class XML_Helper
+ *
+ * @brief Helper class for some routine XML stuff.
+ */
+ class CIAO_XML_Utils_Export XML_Helper
+ {
+ public:
+ XML_Helper (void);
+
+ ~XML_Helper (void);
+
+ /// Create a DOM tree
+ XERCES_CPP_NAMESPACE::DOMDocument *
+ create_dom (const ACE_TCHAR *uri);
+
+ XERCES_CPP_NAMESPACE::DOMDocument *
+ create_dom (const ACE_TCHAR *root,
+ const ACE_TCHAR *ns);
+
+ //Writes out a DOMDocument to an XML file
+ bool write_DOM (XERCES_CPP_NAMESPACE::DOMDocument *doc,
+ const ACE_TCHAR *file);
+
+ bool is_initialized (void) const;
+
+ protected:
+ /// Intialize the parser
+ void init_parser (void);
+
+ /// Terminate the parser
+ void terminate_parser (void);
+
+ private:
+ bool initialized_;
+ XERCES_CPP_NAMESPACE::DOMImplementation *impl_;
+ };
+
+
+ }
+}
+
+CIAO_XML_UTILS_SINGLETON_DECLARE (ACE_Singleton,
+ CIAO::Config_Handlers::XML_Helper,
+ ACE_Null_Mutex)
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ typedef ACE_Singleton < XML_Helper, ACE_Null_Mutex > XML_Helper_Singleton;
+ }
+}
+
+
+#define XML_HELPER CIAO::Config_Handlers::XML_Helper_Singleton::instance ()
+
+
+#include /**/ "ace/post.h"
+#endif/*CIAO_CONFIG_HANDLERS_XML_HELPER_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp b/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp
new file mode 100644
index 00000000000..269e95ab425
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.cpp
@@ -0,0 +1,55 @@
+// $Id$
+#include "XML_Schema_Resolver.h"
+#include "XercesString.h"
+#include "ace/Env_Value_T.h"
+#include <xercesc/framework/LocalFileInputSource.hpp>
+#include <xercesc/framework/Wrapper4InputSource.hpp>
+
+using xercesc::Wrapper4InputSource;
+using xercesc::LocalFileInputSource;
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ CIAO_Schema_Resolver::CIAO_Schema_Resolver (void)
+ {
+ this->base_path_ = this->resolve_from_environment ();
+ }
+
+ CIAO_Schema_Resolver::CIAO_Schema_Resolver (const char *path)
+ {
+ if (path == 0)
+ this->base_path_ = this->resolve_from_environment ();
+ else
+ this->base_path_ = path;
+ }
+
+ /// This function is called by the Xerces infrastructure to
+ /// actually resolve the location of a schema.
+ DOMInputSource *
+ CIAO_Schema_Resolver::resolveEntity (const XMLCh *const publicId,
+ const XMLCh *const systemId,
+ const XMLCh *const baseURI)
+ {
+ ACE_UNUSED_ARG (baseURI);
+ ACE_UNUSED_ARG (publicId);
+
+ XStr path (this->base_path_.c_str ());
+ path.append (systemId);
+
+ // Ownership of these objects is given to other people.
+ return new Wrapper4InputSource (new LocalFileInputSource (path));
+ }
+
+ std::string
+ CIAO_Schema_Resolver::resolve_from_environment (void)
+ {
+ ACE_Env_Value <const char *> path ("CIAO_ROOT", "");
+
+ std::string retval (path);
+ return retval += "/docs/schema/";
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.h b/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.h
new file mode 100644
index 00000000000..f4573fe20cc
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XML_Schema_Resolver.h
@@ -0,0 +1,66 @@
+/**
+ * @file XML_Schema_Resolver.h
+ * @author Will Otte <wotte@dre.vanderbilt.edu>
+ *
+ * $Id$
+ *
+ * Resolves schema locations.
+ */
+
+#ifndef CIAO_CONFIG_HANDLERS_XML_SCHEAM_RESOLVER_H
+#define CIAO_CONFIG_HANDLERS_XML_SCHEAM_RESOLVER_H
+#include /**/ "ace/pre.h"
+
+#include "CIAO_XML_Utils_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include <xercesc/dom/DOMEntityResolver.hpp>
+#include <xercesc/dom/DOMInputSource.hpp>
+
+#include <string>
+
+using xercesc::DOMEntityResolver;
+using xercesc::DOMInputSource;
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ /**
+ * @class CIAO_Schema_Resolver
+ * @brief Resolves schema locations for CIAO.
+ */
+ class CIAO_Schema_Resolver
+ : public virtual DOMEntityResolver
+ {
+ public:
+ /// This constructor locates the schema in the default location
+ /// from CIAO_ROOT/docs/schema.
+ CIAO_Schema_Resolver (void);
+
+ /// If this constructor is passed a nonempty string, it locates
+ /// the schema in that path, otherwise its behavior is the same
+ /// as the default constructor.
+ CIAO_Schema_Resolver (const char *path);
+
+ /// This function is called by the Xerces infrastructure to
+ /// actually resolve the location of a schema.
+ virtual DOMInputSource * resolveEntity (const XMLCh *const publicId,
+ const XMLCh *const systemId,
+ const XMLCh *const baseURI);
+
+ private:
+ std::string resolve_from_environment (void);
+
+ std::string base_path_;
+ };
+ }
+}
+
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_CONFIG_HANDLERS_XML_SCHEAM_RESOLVER_H */
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XercesString.cpp b/modules/CIAO/tools/Config_Handlers/Utils/XercesString.cpp
new file mode 100644
index 00000000000..db3e704caa5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XercesString.cpp
@@ -0,0 +1,143 @@
+// $Id$
+
+#include <ostream>
+
+#include "XercesString.h"
+using xercesc::XMLString;
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+
+ XStr::XStr (const char* str)
+ : _wstr(0)
+ {
+ _wstr = XMLString::transcode(str);
+ }
+
+ XStr::XStr (XMLCh *wstr)
+ : _wstr(wstr)
+ {
+
+ }
+
+ XStr::XStr (const XMLCh* wstr)
+ : _wstr(0)
+ {
+ _wstr = XMLString::replicate(wstr);
+ }
+
+ XStr::XStr (const XStr &right)
+ : _wstr(0)
+ {
+ _wstr = XMLString::replicate(right._wstr);
+ }
+
+ XStr& XStr::operator= (const XStr& rhs)
+ {
+ if (&rhs == this)
+ return *this;
+ XStr temp (rhs);
+ ACE_Swap<XMLCh*>::swap (this->_wstr, temp._wstr);
+ return *this;
+ }
+
+ XStr::~XStr ()
+ {
+ if (_wstr)
+ XMLString::release(&_wstr);
+ }
+
+ const XMLCh* XStr::begin () const
+ {
+ return _wstr;
+ }
+
+ const XMLCh* XStr::end () const
+ {
+ return _wstr + size();
+ }
+
+ bool XStr::append(const XMLCh *tail)
+ {
+ int iTailLen = XMLString::stringLen(tail);
+ int iWorkLen = XMLString::stringLen(_wstr);
+ XMLCh *result = new XMLCh[ iWorkLen + iTailLen + 1 ];
+ bool bOK = result != 0;
+ if (bOK)
+ {
+ XMLCh *target = result;
+ XMLString::moveChars(target, _wstr, iWorkLen);
+ target += iWorkLen;
+ XMLString::moveChars(target, tail, iTailLen);
+ target += iTailLen;
+ *target++ = 0;
+ XMLString::release(&_wstr);
+ _wstr = result;
+ }
+ return bOK;
+ }
+
+ bool XStr::erase(const XMLCh *head, const XMLCh *tail)
+ {
+ bool bOK = head <= tail && head >= begin() && tail <= end();
+ if (bOK)
+ {
+ XMLCh *result = new XMLCh[ size() - (tail - head) + 1 ];
+ XMLCh *target = result;
+ bOK = target != NULL;
+ if (bOK)
+ {
+ const XMLCh *cursor = begin();
+
+ while (cursor != head) *target++ = *cursor++;
+ cursor = tail;
+ while ( cursor != end() ) *target++ = *cursor++;
+ *target ++ = 0;
+ XMLString::release(&_wstr);
+ _wstr = result;
+ }
+ }
+ return bOK;
+ }
+
+ int XStr::size () const
+ {
+ return XMLString::stringLen(_wstr);
+ }
+
+ XMLCh XStr::operator [] (const int i)
+ {
+ return _wstr[i];
+ }
+
+ XMLCh XStr::operator [] (const int i) const
+ {
+ return _wstr[i];
+ }
+
+ bool operator== (const XStr& lhs, const XStr& rhs)
+ {
+ return XMLString::compareIString (lhs,rhs) == 0;
+ }
+
+ bool operator!= (const XStr& lhs, const XStr& rhs)
+ {
+ return !operator==(lhs, rhs);
+ }
+
+
+ std::ostream&
+ operator<< (std::ostream& o, XStr const& str)
+ {
+ char* s = XMLString::transcode (str);
+
+ o << s;
+
+ XMLString::release (&s); // idiots?
+ return o;
+ }
+
+}
+}
diff --git a/modules/CIAO/tools/Config_Handlers/Utils/XercesString.h b/modules/CIAO/tools/Config_Handlers/Utils/XercesString.h
new file mode 100644
index 00000000000..a6f1dabe1db
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/Utils/XercesString.h
@@ -0,0 +1,75 @@
+// $Id$
+
+#ifndef _XERCESSTRING_H
+#define _XERCESSTRING_H
+
+#include /**/ "ace/pre.h"
+
+#include "ace/Swap.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include <iosfwd>
+
+#include <xercesc/util/XMLString.hpp>
+
+// Utility class that provides a std::string like facade to XMLString.
+// Doesn't implement all of the methods of std::string.
+#include "CIAO_XML_Utils_Export.h"
+namespace CIAO
+{
+namespace Config_Handlers
+{
+
+ class CIAO_XML_Utils_Export XStr
+ {
+ public:
+ XStr() : _wstr(0L) { };
+
+ XStr (const char* str);
+
+ XStr (XMLCh* wstr);
+
+ XStr (const XMLCh* wstr);
+
+ XStr (const XStr& copy);
+
+ XStr& operator= (const XStr& rhs);
+
+ ~XStr();
+
+ const XMLCh* begin() const;
+
+ const XMLCh* end() const;
+
+ bool append(const XMLCh* tail);
+
+ bool erase (const XMLCh* head, const XMLCh* tail);
+
+ int size() const;
+
+ XMLCh operator [] (const int i);
+
+ XMLCh operator [] (const int i) const;
+
+ operator const XMLCh* () const { return _wstr; };
+
+ private:
+
+ XMLCh* _wstr; // Internal representation
+
+ };
+
+ CIAO_XML_Utils_Export bool operator== (const XStr& lhs, const XStr& rhs);
+ CIAO_XML_Utils_Export bool operator!= (const XStr& lhs, const XStr& rhs);
+
+ CIAO_XML_Utils_Export std::ostream&
+ operator<< (std::ostream& o, XStr const& str);
+
+}
+}
+#include /**/ "ace/post.h"
+
+#endif /* _XERCESSTRING_H */
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.hpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.hpp
new file mode 100644
index 00000000000..b435bb4370f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.hpp
@@ -0,0 +1,72 @@
+// file : XMLSchema/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XMLSCHEMA_TRAVERSAL_HPP
+#define XMLSCHEMA_TRAVERSAL_HPP
+
+#include <XSCRT/Traversal.hpp>
+#include <XMLSchema/Types.hpp>
+
+namespace XMLSchema
+{
+ namespace Traversal
+ {
+ // Automatic traversal of IDREFs.
+ //
+ //
+ struct IDREF :
+ XSCRT::Traversal::Traverser<XMLSchema::IDREF_Base, XSCRT::Type>
+ {
+ virtual void
+ traverse (XMLSchema::IDREF_Base& r)
+ {
+ if (r.get ()) dispatch (*(r.get ()));
+ }
+
+ virtual void
+ traverse (XMLSchema::IDREF_Base const& r)
+ {
+ if (r.get ()) dispatch (*(r.get ()));
+ }
+ };
+
+
+ template <typename T>
+ struct Traverser : XSCRT::Traversal::Traverser<T, XSCRT::Type>
+ {
+ };
+
+ typedef Traverser<byte> byte;
+ typedef Traverser<unsignedByte> unsignedByte;
+
+ typedef Traverser<short_> short_;
+ typedef Traverser<unsignedShort> unsignedShort;
+
+ typedef Traverser<int_> int_;
+ typedef Traverser<unsignedInt> unsignedInt;
+
+ typedef Traverser<long_> long_;
+ typedef Traverser<unsignedLong> unsignedLong;
+
+ typedef Traverser<boolean> boolean;
+
+ typedef Traverser<float_> float_;
+ typedef Traverser<double_> double_;
+
+ template <typename C>
+ struct string : Traverser<XMLSchema::string<C> >
+ {
+ };
+
+ template <typename C>
+ struct ID : Traverser<XMLSchema::ID<C> >
+ {
+ };
+ }
+}
+
+#include <XMLSchema/Traversal.ipp>
+#include <XMLSchema/Traversal.tpp>
+
+#endif // XMLSCHEMA_TRAVERSAL_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.ipp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.ipp
new file mode 100644
index 00000000000..a5c614182a3
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.ipp
@@ -0,0 +1,10 @@
+// file : XMLSchema/Traversal.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+ namespace Traversal
+ {
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.tpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.tpp
new file mode 100644
index 00000000000..d79c13630fb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Traversal.tpp
@@ -0,0 +1,11 @@
+// file : XMLSchema/Traversal.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+ namespace Traversal
+ {
+
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.hpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.hpp
new file mode 100644
index 00000000000..e4fa52dbb9c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.hpp
@@ -0,0 +1,22 @@
+// file : XMLSchema/TypeInfo.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XMLSCHEMA_TYPE_INFO_HPP
+#define XMLSCHEMA_TYPE_INFO_HPP
+
+#include <XSCRT/ExtendedTypeInfo.hpp>
+
+namespace XMLSchema
+{
+ template <typename C>
+ struct TypeInfoInitializer
+ {
+ TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap&);
+ };
+}
+
+#include <XMLSchema/TypeInfo.ipp>
+#include <XMLSchema/TypeInfo.tpp>
+
+#endif // XMLSCHEMA_TYPE_INFO_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.ipp b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.ipp
new file mode 100644
index 00000000000..5b9422f38c8
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.ipp
@@ -0,0 +1,7 @@
+// file : XMLSchema/TypeInfo.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.tpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.tpp
new file mode 100644
index 00000000000..6ead5b8f7b2
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/TypeInfo.tpp
@@ -0,0 +1,97 @@
+// file : XMLSchema/TypeInfo.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+ //@@ VC6
+ //
+ template<typename T>
+ void
+ add_info (XSCRT::ExtendedTypeInfoMap& map, T*)
+ {
+ using XSCRT::TypeId;
+ using XSCRT::ExtendedTypeInfo;
+
+ TypeId id (typeid (T));
+ ExtendedTypeInfo info (id);
+
+ info.add_base (ExtendedTypeInfo::Access::public_,
+ false,
+ typeid (XSCRT::Type));
+
+ map.insert (std::make_pair (id, info));
+ }
+
+
+ template <typename C>
+ inline
+ TypeInfoInitializer<C>::
+ TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap& map)
+ {
+ using XSCRT::TypeId;
+ using XSCRT::ExtendedTypeInfo;
+
+ // XSCRT::Type
+ //
+ {
+ TypeId id (typeid (XSCRT::Type));
+ map.insert (std::make_pair (id, ExtendedTypeInfo (id)));
+ }
+
+ //@@ VC6
+
+ add_info<byte> (map, 0);
+ add_info<unsignedByte> (map, 0);
+
+ add_info<short_> (map, 0);
+ add_info<unsignedShort> (map, 0);
+
+ add_info<int_> (map, 0);
+ add_info<unsignedInt> (map, 0);
+
+ add_info<long_> (map, 0);
+ add_info<unsignedLong> (map, 0);
+
+ add_info<boolean> (map, 0);
+
+ add_info<float_> (map, 0);;
+ add_info<double_> (map, 0);
+
+ add_info<string<C> > (map, 0);
+
+ add_info<normalizedString<C> > (map, 0);
+ add_info<token<C> > (map, 0);
+ add_info<NMTOKEN<C> > (map, 0);
+ add_info<Name<C> > (map, 0);
+ add_info<NCName<C> > (map, 0);
+
+ add_info<ID<C> > (map, 0);
+
+ // IDREF_Base
+ //
+ {
+ TypeId id (typeid (IDREF_Base));
+ ExtendedTypeInfo info (id);
+
+ info.add_base (ExtendedTypeInfo::Access::public_,
+ false,
+ typeid (XSCRT::Type));
+
+ map.insert (std::make_pair (id, info));
+ }
+
+ // IDREF
+ //
+ {
+ TypeId id (typeid (IDREF<C>));
+ ExtendedTypeInfo info (id);
+
+ info.add_base (ExtendedTypeInfo::Access::public_,
+ false,
+ typeid (IDREF_Base));
+
+ map.insert (std::make_pair (id, info));
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp
new file mode 100644
index 00000000000..a23d7f2cdd9
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.hpp
@@ -0,0 +1,574 @@
+// file : XMLSchema/Types.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XMLSCHEMA_TYPES_HPP
+#define XMLSCHEMA_TYPES_HPP
+
+#include <string>
+#include "XSCRT/Elements.hpp"
+
+#include "ace/Basic_Types.h"
+/**
+ * @@ HACK: VC7
+ *
+ * Disabled the warning about using this in the base member initialization section.
+ * Our use in this file is fine.
+ */
+#ifdef _MSC_VER
+# pragma warning ( disable: 4355 )
+#endif
+namespace XMLSchema
+{
+ typedef XSCRT::FundamentalType<ACE_INT8> byte;
+ typedef XSCRT::FundamentalType<ACE_UINT8> unsignedByte;
+
+ typedef XSCRT::FundamentalType<ACE_INT16> short_;
+ typedef XSCRT::FundamentalType<ACE_UINT16> unsignedShort;
+
+ typedef XSCRT::FundamentalType<ACE_INT32> int_;
+ typedef XSCRT::FundamentalType<ACE_UINT32> unsignedInt;
+
+ typedef XSCRT::FundamentalType<ACE_INT64> long_;
+ typedef XSCRT::FundamentalType<ACE_UINT64> unsignedLong;
+
+ //@@ It would be nice to use some arbitrary-length integer class.
+ //
+ typedef long_ decimal;
+ typedef decimal integer;
+ typedef integer nonPositiveInteger;
+ typedef integer nonNegativeInteger;
+ typedef nonNegativeInteger positiveInteger;
+ typedef nonPositiveInteger negativeInteger;
+
+
+ typedef XSCRT::FundamentalType<bool> boolean;
+
+ typedef XSCRT::FundamentalType<float> float_;
+ typedef XSCRT::FundamentalType<double> double_;
+
+ // Just to make GCC 3.3 and other broken compilers shutup.
+ //
+ using std::basic_string;
+
+
+ template <typename C>
+ class string : public XSCRT::Type, public basic_string<C>
+ {
+ protected:
+ typedef basic_string<C> Base__ ;
+
+ public:
+
+ //@@ VC6 does not inject XSCRT::Type into the scope so I have
+ // to qualify it all the time.
+ //
+
+ string ()
+ {
+ }
+
+ string (XSCRT::XML::Element<C> const& e)
+ : Base__ (e.value ())
+ {
+ }
+
+ string (XSCRT::XML::Attribute<C> const& a)
+ : Base__ (a.value ())
+ {
+ }
+
+ string (Base__ const& x)
+ : Base__ (x)
+ {
+ }
+
+ string (C const* x)
+ : Base__ (x)
+ {
+ }
+
+ string&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class normalizedString : public string<C>
+ {
+ protected:
+ typedef typename string<C>::Base__ Base__;
+
+ public:
+ normalizedString ()
+ {
+ }
+
+ normalizedString (XSCRT::XML::Element<C> const& e)
+ : string<C> (e)
+ {
+ }
+
+ normalizedString (XSCRT::XML::Attribute<C> const& a)
+ : string<C> (a)
+ {
+ }
+
+ normalizedString (Base__ const& x)
+ : string<C> (x)
+ {
+ }
+
+ normalizedString (C const* x)
+ : string<C> (x)
+ {
+ }
+
+ normalizedString&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class token : public normalizedString<C>
+ {
+ protected:
+ typedef typename normalizedString<C>::Base__ Base__;
+
+ public:
+ token ()
+ {
+ }
+
+ token (XSCRT::XML::Element<C> const& e)
+ : normalizedString<C> (e)
+ {
+ }
+
+ token (XSCRT::XML::Attribute<C> const& a)
+ : normalizedString<C> (a)
+ {
+ }
+
+ token (Base__ const& x)
+ : normalizedString<C> (x)
+ {
+ }
+
+ token (C const* x)
+ : normalizedString<C> (x)
+ {
+ }
+
+ token&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class NMTOKEN : public token<C>
+ {
+ protected:
+ typedef typename token<C>::Base__ Base__;
+
+ public:
+ NMTOKEN ()
+ {
+ }
+
+ NMTOKEN (XSCRT::XML::Element<C> const& e)
+ : token<C> (e)
+ {
+ }
+
+ NMTOKEN (XSCRT::XML::Attribute<C> const& a)
+ : token<C> (a)
+ {
+ }
+
+ NMTOKEN (Base__ const& x)
+ : token<C> (x)
+ {
+ }
+
+ NMTOKEN (C const* x)
+ : token<C> (x)
+ {
+ }
+
+ NMTOKEN&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+ template <typename C>
+ class Name: public token<C>
+ {
+ protected:
+ typedef typename token<C>::Base__ Base__;
+
+ public:
+ Name()
+ {
+ }
+
+ Name(XSCRT::XML::Element<C> const& e)
+ : token<C> (e)
+ {
+ }
+
+ Name(XSCRT::XML::Attribute<C> const& a)
+ : token<C> (a)
+ {
+ }
+
+ Name(Base__ const& x)
+ : token<C> (x)
+ {
+ }
+
+ Name (C const* x)
+ : token<C> (x)
+ {
+ }
+
+ Name&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class NCName: public Name<C>
+ {
+ protected:
+ typedef typename Name<C>::Base__ Base__;
+
+ public:
+ NCName()
+ {
+ }
+
+ NCName(XSCRT::XML::Element<C> const& e)
+ : Name<C> (e)
+ {
+ }
+
+ NCName(XSCRT::XML::Attribute<C> const& a)
+ : Name<C> (a)
+ {
+ }
+
+ NCName(Base__ const& x)
+ : Name<C> (x)
+ {
+ }
+
+ NCName (C const* x)
+ : Name<C> (x)
+ {
+ }
+
+ NCName&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+ template <typename C>
+ struct IdentityProvider : XSCRT::IdentityProvider
+ {
+ IdentityProvider (NCName<C> const& id)
+ : id_ (id)
+ {
+ }
+
+ virtual bool
+ before (XSCRT::IdentityProvider const& y) const
+ {
+ return id_ < dynamic_cast<IdentityProvider const&> (y).id_;
+ }
+
+ private:
+ NCName<C> const& id_;
+
+ private:
+ IdentityProvider (IdentityProvider const&);
+
+ IdentityProvider&
+ operator= (IdentityProvider const&);
+ };
+
+
+ template <typename C>
+ class ID : public NCName<C>
+ {
+ protected:
+ typedef typename NCName<C>::Base__ Base__;
+
+ public:
+ ~ID()
+ {
+ unregister_id ();
+ }
+
+ ID ()
+ : id_provider_ (*this)
+ {
+ }
+
+ ID (XSCRT::XML::Element<C> const& e)
+ : NCName<C> (e), id_provider_ (*this)
+ {
+ }
+
+ ID (XSCRT::XML::Attribute<C> const& a)
+ : NCName<C> (a), id_provider_ (*this)
+ {
+ }
+
+ ID (ID const& x)
+ : NCName<C> (x), id_provider_ (*this)
+ {
+ }
+
+ ID (Base__ const& x)
+ : NCName<C> (x), id_provider_ (*this)
+ {
+ }
+
+ ID (C const* x)
+ : NCName<C> (x), id_provider_ (*this)
+ {
+ }
+
+ ID&
+ operator= (Base__ const& x)
+ {
+ unregister_id ();
+
+ static_cast<NCName<C>&>(*this) = x;
+
+ register_id ();
+
+ return *this;
+ }
+
+ ID&
+ operator= (ID const& x)
+ {
+ unregister_id ();
+
+ static_cast<NCName<C>&>(*this) = static_cast<NCName<C> const&>(x);
+
+ register_id ();
+
+ return *this;
+ }
+
+ public:
+ using NCName<C>::container;
+
+ virtual void
+ container (XSCRT::Type* c)
+ {
+ unregister_id ();
+
+ NCName<C>::container (c);
+
+ register_id ();
+ }
+
+ private:
+ using NCName<C>::empty;
+ using NCName<C>::root;
+
+ void
+ register_id ()
+ {
+ if (NCName<C>::container () != this && !empty ())
+ {
+ //std::wcerr << "registering " << container ()
+ // << " as '" << *this
+ // << "' on " << container () << std::endl;
+ NCName<C>::container ()->register_id (id_provider_,
+ NCName<C>::container ());
+ }
+ }
+
+ void
+ unregister_id ()
+ {
+ if (NCName<C>::container () != this && !empty ())
+ {
+ //std::wcerr << "un-registering " << container ()
+ // << " as '" << *this
+ // << "' on " << container () << std::endl;
+ NCName<C>::container ()->unregister_id (id_provider_);
+ }
+ }
+
+ private:
+ IdentityProvider<C> id_provider_;
+ };
+
+ struct IDREF_Base : public XSCRT::Type
+ {
+ virtual XSCRT::Type const*
+ get () const = 0;
+
+ virtual XSCRT::Type*
+ get () = 0;
+ };
+
+ template <typename C>
+ class IDREF : public IDREF_Base
+ {
+ public:
+ IDREF ()
+ : id_provider_ (id_)
+ {
+ }
+
+ IDREF (XSCRT::XML::Element<C> const& e)
+ : id_ (e), id_provider_ (id_)
+ {
+ }
+
+ IDREF (XSCRT::XML::Attribute<C> const& a)
+ : id_ (a), id_provider_ (id_)
+ {
+ }
+
+ IDREF (IDREF const& x)
+ : XMLSchema::IDREF_Base (),
+ id_ (x.id_), id_provider_ (id_)
+ {
+ }
+
+ IDREF (basic_string<C> const& id)
+ : id_ (id), id_provider_ (id_)
+ {
+ }
+
+ IDREF (C const* id)
+ : id_ (id), id_provider_ (id_)
+ {
+ }
+
+ IDREF&
+ operator= (IDREF const& x)
+ {
+ id_ = x.id_;
+ return *this;
+ }
+
+ IDREF&
+ operator= (basic_string<C> const& x)
+ {
+ id_ = x;
+ return *this;
+ }
+
+ public:
+ NCName<C>
+ id () const
+ {
+ return id_;
+ }
+
+ public:
+ XSCRT::Type const*
+ operator-> () const
+ {
+ return get ();
+ }
+
+ XSCRT::Type*
+ operator-> ()
+ {
+ return get ();
+ }
+
+ XSCRT::Type const&
+ operator* () const
+ {
+ return *(get ());
+ }
+
+ XSCRT::Type&
+ operator* ()
+ {
+ return *(get ());
+ }
+
+ virtual XSCRT::Type const*
+ get () const
+ {
+ if (!id_.empty () && container () != this)
+ {
+ return root ()->lookup_id (id_provider_);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ virtual XSCRT::Type*
+ get ()
+ {
+ if (!id_.empty () && container () != this)
+ {
+ return root ()->lookup_id (id_provider_);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ // conversion to bool
+ //
+ typedef void (IDREF::*bool_convertable)();
+
+ operator bool_convertable () const
+ {
+ return get () ? &IDREF::true_ : 0;
+ }
+
+ private:
+ void true_ ()
+ {
+ }
+
+ private:
+ NCName<C> id_;
+ IdentityProvider<C> id_provider_;
+ };
+}
+
+#include "XMLSchema/Types.ipp"
+#include "XMLSchema/Types.tpp"
+
+#endif // XMLSCHEMA_TYPES_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.ipp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.ipp
new file mode 100644
index 00000000000..6b749260f55
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.ipp
@@ -0,0 +1,8 @@
+// file : XMLSchema/Types.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.tpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.tpp
new file mode 100644
index 00000000000..4a8bddcf597
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Types.tpp
@@ -0,0 +1,9 @@
+// file : XMLSchema/Types.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp
new file mode 100644
index 00000000000..4a0c1603efa
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.hpp
@@ -0,0 +1,159 @@
+// file : XMLSchema/Writer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XMLSCHEMA_WRITER_HPP
+#define XMLSCHEMA_WRITER_HPP
+
+#include <sstream>
+
+#include <XSCRT/Writer.hpp>
+
+#include <XMLSchema/Types.hpp>
+#include <XMLSchema/Traversal.hpp>
+
+#include <iostream>
+
+namespace XMLSchema
+{
+ namespace Writer
+ {
+ template <typename T, typename C>
+ struct FundamentalType : Traversal::Traverser<T>,
+ virtual XSCRT::Writer<C>
+ {
+ FundamentalType (XSCRT::XML::Element<C>& e)
+ : XSCRT::Writer<C> (e)
+ {
+ }
+
+ using XSCRT::Writer<C>::top_;
+ using XSCRT::Writer<C>::attr_;
+
+ virtual void
+ traverse (T const& o)
+ {
+ using namespace XSCRT::XML;
+
+ std::basic_ostringstream<C> os;
+
+ os << o;
+
+ if (Attribute<C>* a = attr_ ())
+ {
+ a->value (os.str ());
+ }
+ else
+ {
+ top_().value (os.str ());
+ }
+ }
+
+ protected:
+ virtual void
+ traverse (T &t)
+ {
+ Traversal::Traverser<T>::traverse (t);
+ }
+
+ FundamentalType ()
+ {
+ }
+ };
+
+ template<typename C>
+ struct FundamentalType <XSCRT::FundamentalType<bool>, C> :
+ Traversal::Traverser<XSCRT::FundamentalType<bool> >,
+ virtual XSCRT::Writer<C>
+ {
+ FundamentalType (XSCRT::XML::Element<C> &e)
+ : XSCRT::Writer<C> (e)
+ {
+ }
+
+ using XSCRT::Writer<C>::top_;
+ using XSCRT::Writer<C>::attr_;
+
+ virtual void
+ traverse (XSCRT::FundamentalType<bool> const &o)
+ {
+ using namespace XSCRT::XML;
+
+ std::basic_ostringstream<C> os;
+
+ if (o)
+ {
+ os << "true";
+ }
+ else
+ {
+ os << "false";
+ }
+
+ if (Attribute<C>* a = attr_ ())
+ {
+ a->value (os.str ());
+ }
+ else
+ {
+ top_().value (os.str ());
+ }
+ }
+
+ protected:
+ virtual void
+ traverse (XSCRT::FundamentalType<bool> &t)
+ {
+ Traversal::Traverser<XSCRT::FundamentalType<bool> >::traverse (t);
+ }
+
+ FundamentalType ()
+ {
+ }
+ };
+
+
+ template <typename C>
+ struct IDREF : Traversal::Traverser<XMLSchema::IDREF<C> >,
+ virtual XSCRT::Writer<C>
+ {
+ IDREF (XSCRT::XML::Element<C>& e)
+ : XSCRT::Writer<C> (e)
+ {
+ }
+
+ virtual void
+ traverse (
+ typename Traversal::Traverser<XMLSchema::IDREF<C> >::Type const& o)
+ {
+ using namespace XSCRT::XML;
+
+ if (Attribute<C>* a = XSCRT::Writer<C>::attr_ ())
+ {
+ a->value (o.id ());
+ }
+ else
+ {
+ XSCRT::Writer<C>::top_().value (o.id ());
+ }
+ }
+
+ protected:
+
+ virtual void
+ traverse (typename Traversal::Traverser<XMLSchema::IDREF<C> >::Type &o)
+ {
+ Traversal::Traverser<XMLSchema::IDREF<C> >::traverse (o);
+ }
+
+ IDREF ()
+ {
+ }
+ };
+ }
+}
+
+#include <XMLSchema/Writer.ipp>
+#include <XMLSchema/Writer.tpp>
+
+#endif // XMLSCHEMA_WRITER_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.ipp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.ipp
new file mode 100644
index 00000000000..2b7c9a4b939
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.ipp
@@ -0,0 +1,10 @@
+// file : XMLSchema/Writer.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+ namespace Writer
+ {
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.tpp b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.tpp
new file mode 100644
index 00000000000..6c57de04d81
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XMLSchema/Writer.tpp
@@ -0,0 +1,10 @@
+// file : XMLSchema/Writer.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XMLSchema
+{
+ namespace Writer
+ {
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XML_File_Intf.cpp b/modules/CIAO/tools/Config_Handlers/XML_File_Intf.cpp
new file mode 100644
index 00000000000..d7d55058b25
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XML_File_Intf.cpp
@@ -0,0 +1,65 @@
+// $Id$
+
+#include "XML_File_Intf.h"
+#include "Utils/XML_Helper.h"
+#include "Deployment.hpp"
+#include "DP_Handler.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_common.h"
+
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ XML_File_Intf::XML_File_Intf (const char *file)
+ {
+ if (!this->read_process_file (file))
+ throw;
+ }
+
+ bool
+ XML_File_Intf::read_process_file (const char *file)
+ {
+ CIAO_TRACE("XML_File_Intf::read_process_file");
+
+ XML_Helper helper;
+
+ if (!helper.is_initialized ())
+ return false;
+
+ XERCES_CPP_NAMESPACE::DOMDocument *dom =
+ helper.create_dom (file);
+
+ if (!dom)
+ return false;
+
+ DeploymentPlan dp =
+ deploymentPlan (dom);
+
+
+ DP_Handler dp_handler (dp);
+
+ this->idl_dp_.reset (dp_handler.plan ());
+
+ if (this->idl_dp_.get ())
+ return true;
+
+ return false;
+ }
+
+ ::Deployment::DeploymentPlan const *
+ XML_File_Intf::get_plan (void) const
+ {
+ CIAO_TRACE("get_plan");
+ return this->idl_dp_.get ();
+ }
+
+ ::Deployment::DeploymentPlan *
+ XML_File_Intf::get_plan (void)
+ {
+ CIAO_TRACE("XML_File_Intf::get_plan");
+ return this->idl_dp_.release ();
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XML_File_Intf.h b/modules/CIAO/tools/Config_Handlers/XML_File_Intf.h
new file mode 100644
index 00000000000..9f5869b20fb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XML_File_Intf.h
@@ -0,0 +1,51 @@
+//==============================================================
+/**
+* @file XML_File_Intf.h
+*
+* $Id$
+*
+* @author Bala Natarajan <bala@dre.vanderbilt.edu>
+*/
+//================================================================
+
+#ifndef CIAO_CONFIG_XML_FILE_INTF_H
+#define CIAO_CONFIG_XML_FILE_INTF_H
+#include /**/ "ace/pre.h"
+
+#include "Config_Handlers_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Auto_Ptr.h"
+
+
+namespace Deployment
+{
+struct DeploymentPlan ;
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class Config_Handlers_Export XML_File_Intf
+{
+public:
+XML_File_Intf (const char *file);
+
+::Deployment::DeploymentPlan const *get_plan (void) const;
+::Deployment::DeploymentPlan *get_plan (void);
+
+protected:
+
+bool read_process_file (const char *file);
+
+private:
+ACE_Auto_Ptr< ::Deployment::DeploymentPlan> idl_dp_;
+};
+}
+}
+#include /**/ "ace/post.h"
+#endif /*CIAO_CONFIG_XML_FILE_INTF_H*/
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp
new file mode 100644
index 00000000000..7c2b1c58d34
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.hpp
@@ -0,0 +1,572 @@
+// file : XSCRT/Elements.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_ELEMENTS_HPP
+#define XSCRT_ELEMENTS_HPP
+
+#include <map>
+#include <string>
+#include <sstream>
+// #include <iostream> //@@ tmp
+
+#include "XSCRT/Parser.hpp"
+
+namespace XSCRT
+{
+ struct IdentityProvider
+ {
+ virtual ~IdentityProvider (void) {}
+
+ virtual bool before (IdentityProvider const&) const = 0;
+ };
+
+ class Type
+ {
+ public:
+ virtual ~Type ()
+ {
+ }
+
+ protected:
+ Type ()
+ : container_ (0)
+ {
+ }
+
+ template <typename C>
+ Type (XML::Element<C> const&)
+ : container_ (0)
+ {
+ }
+
+ template <typename C>
+ Type (XML::Attribute<C> const&)
+ : container_ (0)
+ {
+ }
+
+ Type (Type const&)
+ : container_ (0)
+ {
+ }
+
+ Type&
+ operator= (Type const&)
+ {
+ //@@ I don't need this.
+ //if (map_.get ()) map_->clear (); // Flush the map.
+ return *this;
+ }
+
+ public:
+ Type const*
+ container () const
+ {
+ return container_ ? container_ : this;
+ }
+
+ Type*
+ container ()
+ {
+ return container_ ? container_ : this;
+ }
+
+
+ Type const*
+ root () const
+ {
+ Type const* r = container ();
+
+ //@@ VC6 can't handle this inside the loop.
+ //
+ Type const* c = r->container ();
+
+ for (; c != r; c = c->container ()) r = c;
+
+ return r;
+ }
+
+ Type*
+ root ()
+ {
+ Type* r = container ();
+
+ for (Type* c = r->container (); c != r; c = c->container ()) r = c;
+
+ return r;
+ }
+
+ //@@
+ //protected:
+
+ public:
+ virtual void
+ container (Type* c)
+ {
+ if (container_ == c) return;
+
+ // Revoke registrations from our old container.
+ //
+ if (container_ != 0 && map_.get ())
+ {
+ for (Map_::iterator i (map_->begin ()); i != map_->end (); ++i)
+ {
+ //std::wcerr << "revoking " << i->second
+ // << " to " << container_ << std::endl;
+
+ container_->unregister_id (*(i->first));
+ }
+ }
+
+ // Copy registrations to our new container.
+ //
+ if (c != 0 && map_.get ())
+ {
+ for (Map_::iterator i (map_->begin ()); i != map_->end (); ++i)
+ {
+ //std::wcerr << "copying " << i->second
+ // << " to " << c << std::endl;
+
+ c->register_id (*(i->first), i->second);
+ }
+ }
+
+ container_ = c;
+ }
+
+ //@@
+ //protected:
+
+ public:
+ void
+ register_id (IdentityProvider const& id, Type* t)
+ {
+ if (map_.get () == 0)
+ {
+ map_ = std::auto_ptr<Map_> (new Map_);
+ }
+
+ if (!map_->insert (
+ std::pair<IdentityProvider const*, Type*> (&id, t)).second)
+ {
+ throw 1;
+ }
+
+ if (container () != this) container ()->register_id (id, t);
+ }
+
+ void
+ unregister_id (IdentityProvider const& id)
+ {
+ if (map_.get ())
+ {
+ Map_::iterator it (map_->find (&id));
+
+ if (it != map_->end ())
+ {
+ map_->erase (it);
+
+ if (container () != this) container ()->unregister_id (id);
+
+ return;
+ }
+ }
+
+ throw 1;
+ }
+
+ Type*
+ lookup_id (IdentityProvider const& id) const
+ {
+ if (map_.get ())
+ {
+ Map_::const_iterator it (map_->find (&id));
+
+ if (it != map_->end ())
+ {
+ return it->second;
+ }
+ }
+
+ return 0;
+ }
+
+
+ private:
+ Type* container_;
+
+ struct IdentityComparator
+ {
+ bool operator () (IdentityProvider const* x,
+ IdentityProvider const* y) const
+ {
+ return x->before (*y);
+ }
+ };
+
+ typedef
+ std::map<IdentityProvider const*, Type*, IdentityComparator>
+ Map_;
+
+ std::auto_ptr<Map_> map_;
+ };
+
+ // Fundamental types template.
+ //
+ //
+ template <typename X>
+ class FundamentalType : public Type
+ {
+ public:
+ FundamentalType ()
+ {
+ }
+
+ template<typename C>
+ FundamentalType (XML::Element<C> const& e)
+ {
+ std::basic_stringstream<C> s;
+ s << e.value ();
+ s >> x_;
+ }
+
+ template<typename C>
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ std::basic_stringstream<C> s;
+ s << a.value ();
+ s >> x_;
+ }
+
+ FundamentalType (X const& x)
+ : x_ (x)
+ {
+ }
+
+ FundamentalType&
+ operator= (X const& x)
+ {
+ x_ = x;
+ return *this;
+ }
+
+ public:
+
+ operator X const& () const
+ {
+ return x_;
+ }
+ /*
+ operator X& ()
+ {
+ return x_;
+ }
+ */
+ protected:
+ X x_;
+ };
+
+#if ((defined (__GNUC__) && (__GNUC__ == 3 && (__GNUC_MINOR__ < 3))) || \
+ (defined (__BORLANDC__) && (__BORLANDC__ == 0x564)) || \
+ (defined (__SUNPRO_CC) && (__SUNPRO_CC <= 0x570)))
+
+ // Stuff for broken gcc < 3.3. Don't like what you see - use better
+ // compiler!
+ //
+
+ // Specialization for signed char.
+ //
+ template <>
+ class FundamentalType<signed char> : public Type
+ {
+ public:
+ FundamentalType ()
+ {
+ }
+
+ template<typename C>
+ FundamentalType (XML::Element<C> const& e)
+ {
+ std::basic_stringstream<C> s;
+ s << e.value ();
+
+ short t;
+ s >> t;
+
+ x_ = static_cast<signed char> (t);
+ }
+
+ template<typename C>
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ std::basic_stringstream<C> s;
+ s << a.value ();
+
+ short t;
+ s >> t;
+
+ x_ = static_cast<signed char> (t);
+ }
+
+ FundamentalType (signed char const& x)
+ : x_ (x)
+ {
+ }
+
+ FundamentalType&
+ operator= (signed char const& x)
+ {
+ x_ = x;
+ return *this;
+ }
+
+ public:
+ operator signed char const& () const
+ {
+ return x_;
+ }
+
+ operator signed char& ()
+ {
+ return x_;
+ }
+
+ protected:
+ signed char x_;
+ };
+
+ // Specialization for unsigned char.
+ //
+ template <>
+ class FundamentalType<unsigned char> : public Type
+ {
+ public:
+ FundamentalType ()
+ {
+ }
+
+ template<typename C>
+ FundamentalType (XML::Element<C> const& e)
+ {
+ std::basic_stringstream<C> s;
+ s << e.value ();
+
+ unsigned short t;
+ s >> t;
+
+ x_ = static_cast<unsigned char> (t);
+ }
+
+ template<typename C>
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ std::basic_stringstream<C> s;
+ s << a.value ();
+
+ unsigned short t;
+ s >> t;
+
+ x_ = static_cast<unsigned char> (t);
+ }
+
+ FundamentalType (unsigned char const& x)
+ : x_ (x)
+ {
+ }
+
+ FundamentalType&
+ operator= (unsigned char const& x)
+ {
+ x_ = x;
+ return *this;
+ }
+
+ public:
+ operator unsigned char const& () const
+ {
+ return x_;
+ }
+
+ operator unsigned char& ()
+ {
+ return x_;
+ }
+
+ protected:
+ unsigned char x_;
+ };
+
+#else
+
+ // Stuff for normal compilers.
+ //
+
+ // Specialization for `signed char'
+ //
+ //
+ template<>
+ template<typename C>
+ inline
+ FundamentalType<signed char>::
+ FundamentalType (XML::Element<C> const& e)
+ {
+ std::basic_stringstream<C> s;
+ s << e.value ();
+
+ short t;
+ s >> t;
+
+ x_ = static_cast<signed char> (t);
+ }
+
+ template<>
+ template<typename C>
+ inline
+ FundamentalType<signed char>::
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ std::basic_stringstream<C> s;
+ s << a.value ();
+
+ short t;
+ s >> t;
+
+ x_ = static_cast<signed char> (t);
+ }
+
+ // Specialization for `unsigned char'
+ //
+ //
+ template<>
+ template<typename C>
+ inline
+ FundamentalType<unsigned char>::
+ FundamentalType (XML::Element<C> const& e)
+ {
+ std::basic_stringstream<C> s;
+ s << e.value ();
+
+ unsigned short t;
+ s >> t;
+
+ x_ = static_cast<unsigned char> (t);
+ }
+
+ template<>
+ template<typename C>
+ inline
+ FundamentalType<unsigned char>::
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ std::basic_stringstream<C> s;
+ s << a.value ();
+
+ unsigned short t;
+ s >> t;
+
+ x_ = static_cast<unsigned char> (t);
+ }
+
+#endif
+
+
+ // Specialization for bool.
+ //
+ //
+
+#if !defined (_MSC_VER) || (_MSC_VER >= 1300)
+
+ template<>
+ template<>
+ inline
+ FundamentalType<bool>::
+ FundamentalType (XML::Element<char> const& e)
+ {
+ x_ = (e.value () == "true") || (e.value () == "1");
+ }
+
+ template<>
+ template<>
+ inline
+ FundamentalType<bool>::
+ FundamentalType (XML::Element<wchar_t> const& e)
+ {
+ x_ = (e.value () == L"true") || (e.value () == L"1");
+ }
+
+ template<>
+ template<>
+ inline
+ FundamentalType<bool>::
+ FundamentalType (XML::Attribute<char> const& a)
+ {
+ x_ = (a.value () == "true") || (a.value () == "1");
+ }
+
+ template<>
+ template<>
+ inline
+ FundamentalType<bool>::
+ FundamentalType (XML::Attribute<wchar_t> const& a)
+ {
+ x_ = (a.value () == L"true") || (a.value () == L"1");
+ }
+
+#else
+
+ template <>
+ class FundamentalType<bool> : public Type
+ {
+ public:
+ FundamentalType ()
+ {
+ }
+
+ template<typename C>
+ FundamentalType (XML::Element<C> const& e)
+ {
+ x_ = (e.value ()[0] == 't') || (e.value ()[0] == '1');
+ }
+
+ template<typename C>
+ FundamentalType (XML::Attribute<C> const& a)
+ {
+ x_ = (a.value ()[0] == 't') || (a.value ()[0] == '1');
+ }
+
+ FundamentalType (bool const& x)
+ : x_ (x)
+ {
+ }
+
+ FundamentalType&
+ operator= (bool const& x)
+ {
+ x_ = x;
+ return *this;
+ }
+
+ public:
+ operator bool const& () const
+ {
+ return x_;
+ }
+
+ operator bool& ()
+ {
+ return x_;
+ }
+
+ protected:
+ bool x_;
+ };
+
+#endif
+
+}
+
+#include "XSCRT/Elements.ipp"
+#include "XSCRT/Elements.tpp"
+
+#endif // XSCRT_ELEMENTS_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.ipp
new file mode 100644
index 00000000000..414f03eb031
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.ipp
@@ -0,0 +1,7 @@
+// file : XSC/Elements.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSC
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.tpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.tpp
new file mode 100644
index 00000000000..7539a36d75f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Elements.tpp
@@ -0,0 +1,7 @@
+// file : XSC/Elements.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSC
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp
new file mode 100644
index 00000000000..e2ab4b64956
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.hpp
@@ -0,0 +1,182 @@
+// file : XSCRT/ExtendedTypeInfo.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_EXTENDED_TYPE_INFO_HPP
+#define XSCRT_EXTENDED_TYPE_INFO_HPP
+
+#include <map>
+#include <vector>
+#include <typeinfo>
+
+namespace XSCRT
+{
+ //
+ //
+ //
+ class TypeId
+ {
+ public:
+ template<typename T>
+ TypeId (T const& t);
+
+ TypeId (std::type_info const& tid);
+
+ public:
+ bool
+ operator == (TypeId const& other) const;
+
+ bool
+ operator != (TypeId const& other) const;
+
+ bool
+ operator < (TypeId const& other) const;
+
+ /*
+ friend std::ostream&
+ operator << (std::ostream& os, TypeId const& t);
+ */
+
+ public:
+ char const*
+ name () const
+ {
+ return tid_->name ();
+ }
+
+ private:
+ std::type_info const* tid_;
+ };
+
+
+ //
+ //
+ //
+ class ExtendedTypeInfo
+ {
+ public:
+
+ //
+ //
+ //
+ struct Access
+ {
+ enum Value
+ {
+ private_,
+ protected_,
+ public_
+ };
+ };
+
+
+ //
+ //
+ //
+ class BaseInfo
+ {
+ public:
+ BaseInfo (Access::Value access, bool virtual_base, TypeId const& tid);
+
+ public:
+ ExtendedTypeInfo const&
+ type_info () const;
+
+ Access::Value
+ access () const;
+
+ bool
+ virtual_base () const;
+
+ private:
+ TypeId tid_;
+ mutable ExtendedTypeInfo const* ti_;
+ bool virtual_base_;
+ Access::Value access_;
+ };
+
+ private:
+ typedef
+ std::vector<BaseInfo>
+ BaseInfoList;
+
+ public:
+ typedef
+ BaseInfoList::const_iterator
+ BaseIterator;
+
+ public:
+ ExtendedTypeInfo (TypeId const& tid);
+
+ TypeId
+ type_id () const;
+
+ BaseIterator
+ begin_base () const;
+
+ BaseIterator
+ end_base () const;
+
+ void
+ add_base (Access::Value access, bool virtual_base, TypeId const& tid);
+
+ private:
+ TypeId tid_;
+ BaseInfoList base_;
+ };
+
+ typedef
+ std::map<TypeId, ExtendedTypeInfo>
+ ExtendedTypeInfoMap;
+
+
+ ExtendedTypeInfoMap&
+ extended_type_info_map ();
+
+
+ class NotAvailable {};
+
+
+ template<typename T>
+ ExtendedTypeInfo const&
+ extended_type_info (T const& t)
+ {
+ return extended_type_info (typeid (t));
+ }
+
+ template<typename T>
+ ExtendedTypeInfo const&
+ extended_type_info ()
+ {
+ return extended_type_info (typeid (T));
+ }
+
+ //@@ Had to use function template specialization because VC6
+ // cannot handle simply overloaded functions.
+ //
+
+ template <>
+ inline
+ ExtendedTypeInfo const&
+ extended_type_info<TypeId> (TypeId const& tid)
+ {
+ ExtendedTypeInfoMap::const_iterator i (
+ extended_type_info_map ().find (tid));
+
+ if (i == extended_type_info_map ().end ()) throw NotAvailable ();
+
+ return i->second;
+ }
+
+ template <>
+ inline
+ ExtendedTypeInfo const&
+ extended_type_info<std::type_info> (std::type_info const& tid)
+ {
+ return extended_type_info (TypeId (tid));
+ }
+}
+
+#include <XSCRT/ExtendedTypeInfo.ipp>
+
+#endif // XSCRT_EXTENDED_TYPE_INFO_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp
new file mode 100644
index 00000000000..6c4fba2cf88
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/ExtendedTypeInfo.ipp
@@ -0,0 +1,141 @@
+// file : XSCRT/ExtendedTypeInfo.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+
+/*
+ * @@HACK: Visual Studio.
+ * I think the return value for operator== for type_info
+ * in VC7 (perhaps others) is int when is should be bool.
+ * This causes a warning about converting the return value from
+ * int to bool.
+ */
+#ifdef _MSC_VER
+# pragma warning( disable: 4800 )
+#endif
+
+namespace XSCRT
+{
+ // TypeId
+ //
+ //
+ inline
+ TypeId::
+ TypeId (std::type_info const& tid)
+ : tid_ (&tid)
+ {
+ }
+
+ inline
+ bool TypeId::
+ operator == (TypeId const& other) const
+ {
+ return *tid_ == *other.tid_;
+ }
+
+ inline
+ bool TypeId::
+ operator != (TypeId const& other) const
+ {
+ return *tid_ != *other.tid_;
+ }
+
+ inline
+ bool TypeId::
+ operator < (TypeId const& other) const
+ {
+ return tid_->before (*other.tid_);
+ }
+
+
+ // ExtendedTypeInfo::BaseInfo
+ //
+ //
+
+ inline
+ ExtendedTypeInfo::BaseInfo::
+ BaseInfo (Access::Value access, bool virtual_base, TypeId const& tid)
+ : tid_ (tid),
+ ti_ (0),
+ virtual_base_ (virtual_base),
+ access_ (access)
+ {
+ }
+
+ inline
+ ExtendedTypeInfo const& ExtendedTypeInfo::BaseInfo::
+ type_info () const
+ {
+ if (ti_ == 0) ti_ = &(extended_type_info (tid_));
+
+ return *ti_;
+ }
+
+
+ inline
+ ExtendedTypeInfo::Access::Value ExtendedTypeInfo::BaseInfo::
+ access () const
+ {
+ return access_;
+ }
+
+ inline
+ bool ExtendedTypeInfo::BaseInfo::
+ virtual_base () const
+ {
+ return virtual_base_;
+ }
+
+
+ // ExtendedTypeInfo
+ //
+ //
+ inline
+ ExtendedTypeInfo::
+ ExtendedTypeInfo (TypeId const& tid)
+ : tid_ (tid)
+ {
+ }
+
+ inline
+ TypeId ExtendedTypeInfo::
+ type_id () const
+ {
+ return tid_;
+ }
+
+ inline
+ ExtendedTypeInfo::BaseIterator ExtendedTypeInfo::
+ begin_base () const
+ {
+ return base_.begin ();
+ }
+
+
+ inline
+ ExtendedTypeInfo::BaseIterator ExtendedTypeInfo::
+ end_base () const
+ {
+ return base_.end ();
+ }
+
+ inline
+ void ExtendedTypeInfo::
+ add_base (Access::Value access, bool virtual_base, TypeId const& tid)
+ {
+ base_.push_back (BaseInfo (access, virtual_base, tid));
+ }
+
+ // ExtendedTypeInfoMap
+ //
+ //
+
+ inline
+ ExtendedTypeInfoMap&
+ extended_type_info_map ()
+ {
+ static ExtendedTypeInfoMap extended_type_info_map_;
+
+ return extended_type_info_map_;
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.hpp
new file mode 100644
index 00000000000..5fa1e827f8d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.hpp
@@ -0,0 +1,67 @@
+// file : XSCRT/Parser.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_PARSER_HPP
+#define XSCRT_PARSER_HPP
+
+#include <string>
+
+#include "XSCRT/XML.hpp"
+
+namespace XSCRT
+{
+ template <typename C>
+ class Parser
+ {
+ public:
+ Parser (XML::Element<C> const& e)
+ : e_ (e.dom_element ()->getChildNodes ()), ei_ (0),
+ a_ (e.dom_element ()->getAttributes ()), ai_ (0)
+ {
+ }
+
+ bool
+ more_elements () const
+ {
+ return e_->getLength () > ei_;
+ }
+
+ XML::Element<C>
+ next_element ()
+ {
+ return XML::Element<C> (XML::dom_cast <xercesc::DOMElement*> (e_->item (ei_++)));
+ }
+
+ bool
+ more_attributes () const
+ {
+ return a_->getLength () > ai_;
+ }
+
+ XML::Attribute<C>
+ next_attribute ()
+ {
+ return XML::Attribute<C> (
+ XML::dom_cast <xercesc::DOMAttr*> (a_->item (ai_++)));
+ }
+
+ private:
+ xercesc::DOMNodeList const* e_;
+ unsigned long ei_;
+
+ xercesc::DOMNamedNodeMap const* a_;
+ unsigned long ai_;
+
+ private:
+ Parser (Parser const&);
+
+ void
+ operator= (Parser const&);
+ };
+}
+
+#include "XSCRT/Parser.ipp"
+#include "XSCRT/Parser.tpp"
+
+#endif // XSCRT_PARSER_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.ipp
new file mode 100644
index 00000000000..f7de09602ae
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.ipp
@@ -0,0 +1,7 @@
+// file : XSCRT/Parser.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.tpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.tpp
new file mode 100644
index 00000000000..75b9f48eb1f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Parser.tpp
@@ -0,0 +1,7 @@
+// file : XSCRT/Parser.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.hpp
new file mode 100644
index 00000000000..f66b6be1ab6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.hpp
@@ -0,0 +1,275 @@
+// file : XSCRT/Traversal.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_TRAVERSAL_HPP
+#define XSCRT_TRAVERSAL_HPP
+
+#include <map>
+#include <set>
+#include <vector>
+
+// #include <iostream>
+// using std::wcerr;
+// using std::endl;
+
+#include "XSCRT/ExtendedTypeInfo.hpp"
+
+namespace XSCRT
+{
+ namespace Traversal
+ {
+ //
+ //
+ //
+ template<typename B>
+ class TraverserBase
+ {
+ protected:
+ virtual
+ ~TraverserBase ();
+
+ //@@ VC6
+ public:
+ virtual void
+ trampoline (B& n) = 0;
+
+ virtual void
+ trampoline (B const& n) = 0;
+
+ /*@@ VC6
+ template <typename X>
+ friend class DispatcherBase;
+ */
+ };
+
+
+ //
+ //
+ //
+ template <typename B>
+ class DispatcherBase
+ {
+ public:
+ virtual
+ ~DispatcherBase ();
+
+ virtual void
+ dispatch (B& n);
+
+ virtual void
+ dispatch (B const& n);
+
+ void
+ map (TypeId id, TraverserBase<B>& t)
+ {
+ //wcerr << "map for " << id.name () << " to " << &t
+ // << " in " << &traversal_map_ << endl;
+
+ //@@ VC6
+ Traversers& traversers = traversal_map_[id];
+ traversers.push_back (&t);
+ }
+
+ public:
+ typedef
+ std::vector<TraverserBase<B>*>
+ Traversers;
+
+ typedef
+ std::map<TypeId, Traversers>
+ TraversalMap;
+
+ typedef
+ typename TraversalMap::const_iterator
+ Iterator;
+
+ Iterator
+ begin () const
+ {
+ return traversal_map_.begin ();
+ }
+
+ Iterator
+ end () const
+ {
+ return traversal_map_.end ();
+ }
+
+ private:
+ struct TypeInfoComparator
+ {
+ bool
+ operator () (ExtendedTypeInfo const& x,
+ ExtendedTypeInfo const& y) const
+ {
+ return x.type_id () < y.type_id ();
+ }
+ };
+
+ typedef
+ std::map<ExtendedTypeInfo, unsigned long, TypeInfoComparator>
+ LevelMap;
+
+ typedef
+ std::set<ExtendedTypeInfo, TypeInfoComparator>
+ TypeInfoSet;
+
+ static unsigned long
+ compute_levels (ExtendedTypeInfo const& ti,
+ unsigned long cur,
+ LevelMap& map);
+
+ static void
+ flatten_tree (ExtendedTypeInfo const& ti, TypeInfoSet& set);
+
+ private:
+ TraversalMap traversal_map_;
+ };
+
+
+ //
+ //
+ //
+ template <typename B>
+ class Dispatcher : public virtual DispatcherBase<B>
+ {
+ public:
+ Dispatcher ()
+ : merge_ (true)
+ {
+ }
+
+ void
+ traverser (DispatcherBase<B>& d)
+ {
+ for (typename DispatcherBase<B>::Iterator
+ i (d.begin ()), end (d.end ());
+ i != end; ++i)
+ {
+ for (typename DispatcherBase<B>::Traversers::const_iterator
+ t (i->second.begin ()), end (i->second.end ());
+ t != end; ++t)
+ {
+ dispatcher_.map (i->first, **t);
+ }
+ }
+ }
+
+ public:
+ virtual void
+ dispatch (B& n)
+ {
+ merge ();
+ dispatcher_.dispatch (n);
+ }
+
+ virtual void
+ dispatch (B const& n)
+ {
+ merge ();
+ dispatcher_.dispatch (n);
+ }
+
+ using DispatcherBase<B>::begin;
+ using DispatcherBase<B>::end;
+
+ private:
+ void
+ merge ()
+ {
+ if (merge_)
+ {
+ for (typename DispatcherBase<B>::Iterator
+ i (begin ()), e (end ()); i != e; ++i)
+ {
+ for (typename DispatcherBase<B>::Traversers::const_iterator
+ t (i->second.begin ()), e (i->second.end ()); t != e; ++t)
+ {
+ dispatcher_.map (i->first, **t);
+ }
+ }
+
+ merge_ = false;
+ }
+ }
+
+ protected:
+ // DispatcherBase<B>&
+ // traverser ()
+ // {
+ // return dispatcher_;
+ // }
+
+ template <typename X, typename A, typename I>
+ void
+ iterate_and_dispatch (I begin, I end, X& x, void (X::*next)(A&), A& a)
+ {
+ for (; begin != end;)
+ {
+ dispatch (*begin);
+
+ if (++begin != end) (x.*next) (a);
+ }
+ }
+
+ private:
+ bool merge_;
+ DispatcherBase<B> dispatcher_;
+ };
+
+
+
+ //
+ //
+ //
+ template <typename T, typename B>
+ struct Traverser : TraverserBase<B>, virtual Dispatcher<B>
+ {
+ typedef
+ T
+ Type;
+
+ Traverser ()
+ {
+ map (typeid (Type), *this);
+ }
+
+ virtual void
+ traverse (Type&)
+ {
+ abort ();
+ }
+
+ virtual void
+ traverse (Type const&)
+ {
+ abort ();
+ }
+
+ protected:
+ virtual void
+ trampoline (B& n)
+ {
+ //wcerr << "trampoline for " << &n << " to type "
+ // << typeid (Type).name () << endl;
+
+ traverse (dynamic_cast<Type&> (n));
+ }
+
+ virtual void
+ trampoline (B const& n)
+ {
+ //wcerr << "trampoline for " << &n << " to type "
+ // << typeid (Type).name () << endl;
+
+ traverse (dynamic_cast<Type const&> (n));
+ }
+ };
+ }
+}
+
+#include <XSCRT/Traversal.ipp>
+#include <XSCRT/Traversal.tpp>
+
+#endif // XSCRT_TRAVERSAL_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.ipp
new file mode 100644
index 00000000000..bc2a462334a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.ipp
@@ -0,0 +1,7 @@
+// file : XSCRT/Traversal.ixx
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.tpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.tpp
new file mode 100644
index 00000000000..b798178621b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Traversal.tpp
@@ -0,0 +1,195 @@
+// file : XSCRT/Traversal.txx
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+ namespace Traversal
+ {
+ // TraverserBase
+ //
+ //
+
+ template<typename B>
+ TraverserBase<B>::
+ ~TraverserBase ()
+ {
+ }
+
+ // DispatcherBase
+ //
+ //
+
+ template <typename B>
+ DispatcherBase<B>::
+ ~DispatcherBase ()
+ {
+ }
+
+ //@@ merge after dropping VC6
+ //
+ //
+ template <typename B>
+ void DispatcherBase<B>::
+ dispatch (B& n)
+ {
+ LevelMap levels;
+
+ //@@ VC6
+ ExtendedTypeInfo const& ti = extended_type_info (n);
+
+ unsigned long max = compute_levels (ti, 0, levels);
+
+
+ //wcerr << "starting dispatch process for "
+ // << typeid (n).name () << " with "
+ // << max << " levels" << endl;
+
+ for (unsigned long l = 0; l < max + 1; ++l)
+ {
+ TypeInfoSet dispatched;
+
+ for (typename LevelMap::const_iterator
+ i (levels.begin ()), e (levels.end ());
+ i != e; ++i)
+ {
+ if (i->second == l)
+ {
+ typename TraversalMap::const_iterator v (
+ traversal_map_.find (i->first.type_id ()));
+
+ if (v != traversal_map_.end ())
+ {
+ //wcerr << "dispatching traversers for "
+ // << typeid (n).name () << " as "
+ // << i->first.type_id ().name () << endl;
+
+ //@@ VC6
+ Traversers const& traversers = v->second;
+ for (typename Traversers::const_iterator
+ ti (traversers.begin ()), te (traversers.end ());
+ ti != te; ++ti)
+ {
+ (*ti)->trampoline (n);
+ }
+
+ flatten_tree (i->first, dispatched);
+ }
+ }
+ }
+
+ // Remove traversed types from the level map.
+ //
+ //@@ VC6
+ {
+ for (typename TypeInfoSet::const_iterator i = dispatched.begin ();
+ i != dispatched.end ();
+ ++i)
+ {
+ levels.erase (*i);
+ }
+ }
+ }
+ }
+
+ template <typename B>
+ void DispatcherBase<B>::
+ dispatch (B const& n)
+ {
+ LevelMap levels;
+
+ //@@ VC6
+ ExtendedTypeInfo const& ti = extended_type_info (n);
+
+ unsigned long max = compute_levels (ti, 0, levels);
+
+
+ //wcerr << "starting dispatch process for "
+ // << typeid (n).name () << " with "
+ // << max << " levels" << endl;
+
+ //wcerr << "using " << &traversal_map_ << " traversal map" << endl;
+
+ for (unsigned long l = 0; l < max + 1; ++l)
+ {
+ TypeInfoSet dispatched;
+
+ for (typename LevelMap::const_iterator
+ i (levels.begin ()), e (levels.end ());
+ i != e; ++i)
+ {
+ if (i->second == l)
+ {
+ typename TraversalMap::const_iterator v (
+ traversal_map_.find (i->first.type_id ()));
+
+ if (v != traversal_map_.end ())
+ {
+ //wcerr << "dispatching traversers for "
+ // << typeid (n).name () << " as "
+ // << i->first.type_id ().name () << endl;
+
+ //@@ VC6
+ Traversers const& traversers = v->second;
+ for (typename Traversers::const_iterator
+ ti (traversers.begin ()), te (traversers.end ());
+ ti != te; ++ti)
+ {
+ (*ti)->trampoline (n);
+ }
+
+ flatten_tree (i->first, dispatched);
+ }
+ }
+ }
+
+ // Remove traversed types from the level map.
+ //
+ //@@ VC6
+ {
+ for (typename TypeInfoSet::const_iterator i = dispatched.begin ();
+ i != dispatched.end ();
+ ++i)
+ {
+ levels.erase (*i);
+ }
+ }
+ }
+ }
+
+ template <typename B>
+ unsigned long DispatcherBase<B>::
+ compute_levels (ExtendedTypeInfo const& ti,
+ unsigned long cur,
+ LevelMap& map)
+ {
+ unsigned long ret = cur;
+
+ if (map.find (ti) == map.end () || map[ti] < cur) map[ti] = cur;
+
+ for (ExtendedTypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ unsigned long t = compute_levels (i->type_info (), cur + 1, map);
+ if (t > ret) ret = t;
+ }
+
+ return ret;
+ }
+
+ template <typename B>
+ void DispatcherBase<B>::
+ flatten_tree (ExtendedTypeInfo const& ti, TypeInfoSet& set)
+ {
+ set.insert (ti);
+
+ for (ExtendedTypeInfo::BaseIterator i = ti.begin_base ();
+ i != ti.end_base ();
+ i++)
+ {
+ flatten_tree (i->type_info (), set);
+ }
+ }
+ }
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.hpp
new file mode 100644
index 00000000000..6fdd82f6f3e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.hpp
@@ -0,0 +1,81 @@
+// file : XSCRT/Writer.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_WRITER_HPP
+#define XSCRT_WRITER_HPP
+
+#include <stack>
+#include <string>
+
+#include "XSCRT/XML.hpp"
+
+namespace XSCRT
+{
+ template <typename C>
+ class Writer
+ {
+ public:
+ Writer (XML::Element<C>& e)
+ : attr__ (0)
+ {
+ push_ (e);
+ }
+
+ protected:
+ // This c-tor should never be called.
+ //
+ Writer ()
+ {
+ abort ();
+ }
+
+ public:
+ void
+ push_ (XML::Element<C> const& e)
+ {
+ stack_.push (e);
+ }
+
+ void
+ pop_ ()
+ {
+ stack_.pop ();
+ }
+
+ XML::Element<C>&
+ top_ ()
+ {
+ return stack_.top ();
+ }
+
+ public:
+ XML::Attribute<C>*
+ attr_ ()
+ {
+ return attr__;
+ }
+
+ void
+ attr_ (XML::Attribute<C>* a)
+ {
+ attr__ = a;
+ }
+
+ private:
+ std::stack<XML::Element<C> > stack_;
+
+ XML::Attribute<C>* attr__;
+
+ private:
+ Writer (Writer const&);
+
+ void
+ operator= (Writer const&);
+ };
+}
+
+#include <XSCRT/Writer.ipp>
+#include <XSCRT/Writer.tpp>
+
+#endif // XSCRT_WRITER_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.ipp
new file mode 100644
index 00000000000..caa9fc99235
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.ipp
@@ -0,0 +1,7 @@
+// file : XSCRT/Writer.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.tpp b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.tpp
new file mode 100644
index 00000000000..8593004687f
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/Writer.tpp
@@ -0,0 +1,7 @@
+// file : XSCRT/Writer.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/XML.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.hpp
new file mode 100644
index 00000000000..1f11533e2bb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.hpp
@@ -0,0 +1,490 @@
+// file : XSCRT/XML.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+
+#ifndef XSCRT_XML_HPP
+#define XSCRT_XML_HPP
+
+#include <string>
+
+#include <xercesc/dom/DOM.hpp>
+#include <xercesc/util/XMLString.hpp>
+
+namespace XSCRT
+{
+ namespace XML
+ {
+ //@@ VC6
+ //
+ template <typename C>
+ std::basic_string<C>
+ transcode (XMLCh const* s, C*);
+
+ template <typename C>
+ XMLCh*
+ transcode (std::basic_string<C> const& s);
+
+ //
+ //
+ //
+ class string
+ {
+ public :
+ template <typename C>
+ string (std::basic_string<C> const& s)
+ : s_ (XSCRT::XML::transcode<C> (s))
+ {
+ }
+
+ template <typename C>
+ string (C const* s)
+ : s_ (XSCRT::XML::transcode<C> (s))
+ {
+ }
+
+ ~string ()
+ {
+ delete[] s_;
+ }
+
+ XMLCh const*
+ c_str () const
+ {
+ return s_;
+ }
+
+ private :
+ XMLCh* s_;
+ };
+
+
+ template <>
+ inline
+ std::basic_string<char>
+ transcode<char> (XMLCh const* s, char*)
+ {
+ if (s == 0) return std::basic_string<char> ();
+
+ char* buf = xercesc::XMLString::transcode (s);
+
+ std::basic_string<char> r (buf);
+
+ xercesc::XMLString::release (&buf);
+
+ return r;
+ }
+
+ template <>
+ inline
+ std::basic_string<wchar_t>
+ transcode<wchar_t> (XMLCh const* s, wchar_t*)
+ {
+ if (s == 0) return std::basic_string<wchar_t> ();
+
+ // std::wcerr << s << std::endl;
+
+ std::basic_string<wchar_t> r (xercesc::XMLString::stringLen (s), L'0');
+
+ for (std::size_t i (0); *s != XMLCh (0); ++s, ++i)
+ {
+ r[i] = *s;
+ }
+
+ return r;
+ }
+
+ template <>
+ inline
+ XMLCh*
+ transcode (std::basic_string<char> const& s)
+ {
+ return xercesc::XMLString::transcode (s.c_str ());
+ }
+
+ template <>
+ inline
+ XMLCh*
+ transcode (std::basic_string<wchar_t> const& s)
+ {
+ //@@ VC6
+ std::size_t l = s.length ();
+
+ //@@ VC6
+ XMLCh* r = new XMLCh[l + 1];
+ XMLCh* ir = r;
+
+ for (std::size_t i (0); i < l; ++ir, ++i)
+ {
+ *ir = static_cast<XMLCh>(s[i]);
+ //std::wcerr << s[i] << "->" << *ir << std::endl;
+ }
+
+ *ir = XMLCh (0);
+
+ // std::wcerr << r << std::endl;
+
+ return r;
+ }
+
+
+ template <typename C>
+ class Element;
+
+ template <typename C>
+ std::basic_string<C>
+ ns_prefix (std::basic_string<C> const& ns, Element<C> const& e);
+
+ // Casting helpers, made necessary by the Xerces project's braindead
+ // avoidance of RTTI.
+ template <typename DERIVED> struct dom_traits;
+
+ // Specializations for different node types
+ template <>
+ struct dom_traits<xercesc::DOMElement *>
+ {
+ enum { node_type = xercesc::DOMNode::ELEMENT_NODE };
+ };
+
+ template <>
+ struct dom_traits<xercesc::DOMAttr *>
+ {
+ enum { node_type = xercesc::DOMNode::ATTRIBUTE_NODE };
+ };
+
+ template <typename DERIVED_PTR>
+ DERIVED_PTR dom_cast (xercesc::DOMNode *node)
+ {
+ DERIVED_PTR elem = 0;
+ if ((node != 0) &&
+ (node->getNodeType () == dom_traits<DERIVED_PTR>::node_type))
+ {
+ elem = reinterpret_cast <DERIVED_PTR> (node);
+ }
+ return elem;
+ }
+
+ template <typename C>
+ class Element
+ {
+ typedef std::basic_string<C> string_;
+
+ public:
+ Element (xercesc::DOMElement const* e)
+ : e_ (0),
+ ce_ (e),
+ name_ (transcode<C> (e->getLocalName (), 0)),
+ namespace__ (transcode<C> (e->getNamespaceURI (), 0))
+ {
+ }
+
+ Element (xercesc::DOMElement* e)
+ : e_ (e),
+ ce_ (e),
+ name_ (transcode<C> (e->getLocalName (), 0)),
+ namespace__ (transcode<C> (e->getNamespaceURI (), 0))
+ {
+ }
+
+ Element (string_ const& name, Element& parent)
+ : e_ (0),
+ ce_ (0),
+ name_ (name)
+ {
+ xercesc::DOMDocument* doc (
+ parent.dom_element ()->getOwnerDocument ());
+
+ e_ = doc->createElement (string (name).c_str ());
+
+ parent.dom_element ()->appendChild (e_);
+
+ ce_ = e_;
+ }
+
+ Element (string_ const& name, string_ const& ns, Element& parent)
+ : e_ (0),
+ ce_ (0),
+ name_ (name),
+ namespace__ (ns)
+ {
+ string_ prefix (ns_prefix (ns, parent));
+
+ xercesc::DOMDocument* doc (
+ parent.dom_element ()->getOwnerDocument ());
+
+ e_ = doc->createElementNS (
+ string (ns).c_str (),
+ string (prefix.empty ()
+ ? name
+ : prefix + string_ (1, ':') + name).c_str ());
+
+ parent.dom_element ()->appendChild (e_);
+
+ ce_ = e_;
+ }
+
+ public:
+ string_
+ name () const
+ {
+ return name_;
+ }
+
+ string_
+ namespace_ () const
+ {
+ return namespace__;
+ }
+
+ public:
+ Element<C>
+ parent () const
+ {
+ return dom_cast <xercesc::DOMElement const*>(ce_->getParentNode ());
+ }
+
+ public:
+ string_
+ value () const
+ {
+ return XML::transcode<C> (dom_element ()->getTextContent (), 0);
+ }
+
+ void
+ value (string_ const& v)
+ {
+ xercesc::DOMText* text (
+ dom_element ()->getOwnerDocument ()->createTextNode(
+ string (v).c_str ()));
+
+ dom_element ()->appendChild (text);
+ }
+
+ public:
+ string_
+ operator[] (string_ const& s) const
+ {
+ //@@ VC6
+ XMLCh const* value = ce_->getAttribute (string (s).c_str ());
+
+ return transcode<C> (value, 0);
+ }
+
+ public:
+ xercesc::DOMElement const*
+ dom_element () const
+ {
+ return ce_;
+ }
+
+ xercesc::DOMElement*
+ dom_element ()
+ {
+ return e_;
+ }
+
+ private:
+ xercesc::DOMElement* e_;
+ xercesc::DOMElement const* ce_;
+
+ string_ name_;
+ string_ namespace__;
+ };
+
+
+ template <typename C>
+ class Attribute
+ {
+ typedef std::basic_string<C> string_;
+
+ public:
+ Attribute (xercesc::DOMAttr const* a)
+ : a_ (0),
+ ca_ (a),
+ name_ (transcode<C> (a->getLocalName (), 0)),
+ value_ (transcode<C> (a->getValue (), 0))
+ {
+ }
+
+ Attribute (xercesc::DOMAttr* a)
+ : a_ (a),
+ ca_ (a),
+ name_ (transcode<C> (a->getLocalName (), 0)),
+ value_ (transcode<C> (a->getValue (), 0))
+ {
+ }
+
+ Attribute (string_ const& name,
+ string_ const& v,
+ Element<C>& parent)
+ : a_ (0),
+ ca_ (0),
+ name_ (name),
+ value_ ()
+ {
+ xercesc::DOMDocument* doc (
+ parent.dom_element ()->getOwnerDocument ());
+
+ a_ = doc->createAttribute (string (name).c_str ());
+
+ value (v);
+
+ parent.dom_element ()->setAttributeNode (a_);
+
+ ca_ = a_;
+ }
+
+ Attribute (string_ const& name,
+ string_ const& ns,
+ string_ const& v,
+ Element<C>& parent)
+ : a_ (0),
+ ca_ (0),
+ name_ (name),
+ value_ ()
+ {
+ string_ prefix (ns_prefix (ns, parent));
+
+ xercesc::DOMDocument* doc (
+ parent.dom_element ()->getOwnerDocument ());
+
+ a_ = doc->createAttributeNS (
+ string (ns).c_str (),
+ string (prefix.empty ()
+ ? name
+ : prefix + string_ (1, ':') + name).c_str ());
+
+ value (v);
+
+ parent.dom_element ()->setAttributeNodeNS (a_);
+
+ ca_ = a_;
+ }
+
+ string_
+ name () const
+ {
+ return name_;
+ }
+
+ string_
+ value () const
+ {
+ return value_;
+ }
+
+ void
+ value (string_ const& v)
+ {
+ value_ = v;
+ a_->setValue (string (v).c_str ());
+ }
+
+ public:
+ xercesc::DOMAttr const*
+ dom_attribute () const
+ {
+ return ca_;
+ }
+
+ xercesc::DOMAttr*
+ dom_attribute ()
+ {
+ return a_;
+ }
+
+ private:
+
+ private:
+ xercesc::DOMAttr* a_;
+ xercesc::DOMAttr const* ca_;
+
+ string_ name_;
+ string_ value_;
+ };
+
+ template <typename C>
+ std::basic_string<C>
+ prefix (std::basic_string<C> const& n)
+ {
+ std::size_t i (0);
+ while (i < n.length () && n[i] != ':') ++i;
+
+ //std::wcerr << "prefix " << n << " "
+ // << std::wstring (n, i == n.length () ? i : 0, i) << std::endl;
+
+ return std::basic_string<C> (n, i == n.length () ? i : 0, i);
+ }
+
+ template <typename C>
+ std::basic_string<C>
+ uq_name (std::basic_string<C> const& n)
+ {
+ std::size_t i (0);
+ while (i < n.length () && n[i] != ':') ++i;
+
+ return std::basic_string<C> (n.c_str () + (i == n.length () ? 0 : i + 1));
+ }
+
+ template <typename C>
+ std::basic_string<C>
+ ns_name (Element<C> const& e, std::basic_string<C> const& n)
+ {
+ std::basic_string<C> wp (prefix (n));
+
+ //@@ VC6
+ XMLCh const* xns = e.dom_element ()->lookupNamespaceURI (
+ wp.empty () ? 0 : string (wp).c_str ());
+
+
+ std::basic_string<C> ns (
+ xns ? transcode<C> (xns, 0) : std::basic_string<C> ());
+
+ return ns;
+
+ }
+
+ template <typename C>
+ std::basic_string<C>
+ fq_name (Element<C> const& e, std::basic_string<C> const& n)
+ {
+ std::basic_string<C> ns (ns_name (e, n));
+ std::basic_string<C> un (uq_name (n));
+
+ return ns.empty () ? un : (ns + C ('#') + un);
+ }
+
+ class no_prefix {};
+
+ template <typename C>
+ std::basic_string<C>
+ ns_prefix (std::basic_string<C> const& ns, Element<C> const& e)
+ {
+ string xns (ns);
+
+ XMLCh const* p (
+ e.dom_element ()->lookupNamespacePrefix (xns.c_str (), false));
+
+ if (p == 0)
+ {
+ bool r (e.dom_element ()->isDefaultNamespace (xns.c_str ()));
+
+ if (r)
+ {
+ return std::basic_string<C> ();
+ }
+ else
+ {
+ throw no_prefix ();
+ }
+ }
+
+ return transcode<C> (p, 0);
+ }
+ }
+}
+
+#include "XSCRT/XML.ipp"
+#include "XSCRT/XML.tpp"
+
+#endif // XSCRT_XML_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/XML.ipp b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.ipp
new file mode 100644
index 00000000000..4a7b83efd1c
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.ipp
@@ -0,0 +1,7 @@
+// file : XSCRT/XML.ipp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/XML.tpp b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.tpp
new file mode 100644
index 00000000000..63023a05d28
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/XML.tpp
@@ -0,0 +1,7 @@
+// file : XSCRT/XML.tpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+namespace XSCRT
+{
+}
diff --git a/modules/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp b/modules/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp
new file mode 100644
index 00000000000..6f810782953
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSCRT/XMLSchema.hpp
@@ -0,0 +1,554 @@
+// file : XSCRT/XMLSchema.hpp
+// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
+// cvs-id : $Id$
+
+#ifndef XSCRT_XMLSCHEMA_HPP
+#define XSCRT_XMLSCHEMA_HPP
+
+#include <string>
+// #include <iostream> //@@ tmp
+
+#include "XSCRT/Elements.hpp"
+
+namespace XMLSchema
+{
+ typedef XSCRT::FundamentalType<signed char> byte;
+ typedef XSCRT::FundamentalType<unsigned char> unsignedByte;
+
+ typedef XSCRT::FundamentalType<short> short_;
+ typedef XSCRT::FundamentalType<unsigned short> unsignedShort;
+
+ typedef XSCRT::FundamentalType<int> int_;
+ typedef XSCRT::FundamentalType<unsigned int> unsignedInt;
+
+ typedef XSCRT::FundamentalType<long long> long_;
+ typedef XSCRT::FundamentalType<unsigned long long> unsignedLong;
+
+ //@@ It would be nice to use some arbitrary-length integer class.
+ //
+ typedef long_ decimal;
+ typedef decimal integer;
+ typedef integer nonPositiveInteger;
+ typedef integer nonNegativeInteger;
+ typedef nonNegativeInteger positiveInteger;
+ typedef nonPositiveInteger negativeInteger;
+
+
+ typedef XSCRT::FundamentalType<bool> boolean;
+
+ typedef XSCRT::FundamentalType<float> float_;
+ typedef XSCRT::FundamentalType<double> double_;
+
+ // Just to make GCC 3.3 and other broken compilers shutup.
+ //
+ using std::basic_string;
+
+
+ template <typename C>
+ class string : public XSCRT::Type, public basic_string<C>
+ {
+ protected:
+ typedef basic_string<C> Base__ ;
+
+ public:
+
+ //@@ VC6 does not inject XSCRT::Type into the scope so I have
+ // to qualify it all the time.
+ //
+
+ string ()
+ {
+ }
+
+ string (XSCRT::XML::Element<C> const& e)
+ : Base__ (e.value ())
+ {
+ }
+
+ string (XSCRT::XML::Attribute<C> const& a)
+ : Base__ (a.value ())
+ {
+ }
+
+ string (Base__ const& x)
+ : Base__ (x)
+ {
+ }
+
+ string&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class normalizedString : public string<C>
+ {
+ protected:
+ typedef typename string<C>::Base__ Base__;
+
+ public:
+ normalizedString ()
+ {
+ }
+
+ normalizedString (XSCRT::XML::Element<C> const& e)
+ : string<C> (e)
+ {
+ }
+
+ normalizedString (XSCRT::XML::Attribute<C> const& a)
+ : string<C> (a)
+ {
+ }
+
+ normalizedString (Base__ const& x)
+ : string<C> (x)
+ {
+ }
+
+ normalizedString&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class token : public normalizedString<C>
+ {
+ protected:
+ typedef typename normalizedString<C>::Base__ Base__;
+
+ public:
+ token ()
+ {
+ }
+
+ token (XSCRT::XML::Element<C> const& e)
+ : normalizedString<C> (e)
+ {
+ }
+
+ token (XSCRT::XML::Attribute<C> const& a)
+ : normalizedString<C> (a)
+ {
+ }
+
+ token (Base__ const& x)
+ : normalizedString<C> (x)
+ {
+ }
+
+ token&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class NMTOKEN : public token<C>
+ {
+ protected:
+ typedef typename token<C>::Base__ Base__;
+
+ public:
+ NMTOKEN ()
+ {
+ }
+
+ NMTOKEN (XSCRT::XML::Element<C> const& e)
+ : token<C> (e)
+ {
+ }
+
+ NMTOKEN (XSCRT::XML::Attribute<C> const& a)
+ : token<C> (a)
+ {
+ }
+
+ NMTOKEN (Base__ const& x)
+ : token<C> (x)
+ {
+ }
+
+ NMTOKEN&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+ template <typename C>
+ class Name: public token<C>
+ {
+ protected:
+ typedef typename token<C>::Base__ Base__;
+
+ public:
+ Name()
+ {
+ }
+
+ Name(XSCRT::XML::Element<C> const& e)
+ : token<C> (e)
+ {
+ }
+
+ Name(XSCRT::XML::Attribute<C> const& a)
+ : token<C> (a)
+ {
+ }
+
+ Name(Base__ const& x)
+ : token<C> (x)
+ {
+ }
+
+ Name&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+
+ template <typename C>
+ class NCName: public Name<C>
+ {
+ protected:
+ typedef typename Name<C>::Base__ Base__;
+
+ public:
+ NCName()
+ {
+ }
+
+ NCName(XSCRT::XML::Element<C> const& e)
+ : Name<C> (e)
+ {
+ }
+
+ NCName(XSCRT::XML::Attribute<C> const& a)
+ : Name<C> (a)
+ {
+ }
+
+ NCName(Base__ const& x)
+ : Name<C> (x)
+ {
+ }
+
+ NCName&
+ operator= (Base__ const& x)
+ {
+ static_cast<Base__&> (*this) = x;
+ return *this;
+ }
+ };
+
+ template <typename C>
+ struct IdentityProvider : XSCRT::IdentityProvider
+ {
+ IdentityProvider (NCName<C> const& id)
+ : id_ (id)
+ {
+ }
+
+ virtual bool
+ before (XSCRT::IdentityProvider const& y) const
+ {
+ return id_ < dynamic_cast<IdentityProvider const&> (y).id_;
+ }
+
+ private:
+ NCName<C> const& id_;
+
+ private:
+ IdentityProvider (IdentityProvider const&);
+
+ IdentityProvider&
+ operator= (IdentityProvider const&);
+ };
+
+
+ template <typename C>
+ class ID : public NCName<C>
+ {
+ protected:
+ typedef typename NCName<C>::Base__ Base__;
+
+ public:
+ ~ID()
+ {
+ unregister_id ();
+ }
+
+ ID ()
+ : id_provider_ (*this)
+ {
+ }
+
+ ID (XSCRT::XML::Element<C> const& e)
+ : NCName<C> (e), id_provider_ (*this)
+ {
+ }
+
+ ID (XSCRT::XML::Attribute<C> const& a)
+ : NCName<C> (a), id_provider_ (*this)
+ {
+ }
+
+ ID (ID const& x)
+ : NCName<C> (x), id_provider_ (*this)
+ {
+ }
+
+ ID (Base__ const& x)
+ : NCName<C> (x), id_provider_ (*this)
+ {
+ }
+
+ ID&
+ operator= (Base__ const& x)
+ {
+ unregister_id ();
+
+ static_cast<NCName<C>&>(*this) = x;
+
+ register_id ();
+
+ return *this;
+ }
+
+ ID&
+ operator= (ID const& x)
+ {
+ unregister_id ();
+
+ static_cast<NCName<C>&>(*this) = static_cast<NCName<C> const&>(x);
+
+ register_id ();
+
+ return *this;
+ }
+
+ public:
+ using NCName<C>::container;
+
+ virtual void
+ container (XSCRT::Type* c)
+ {
+ unregister_id ();
+
+ NCName<C>::container (c);
+
+ register_id ();
+ }
+
+ private:
+ using NCName<C>::empty;
+ using NCName<C>::root;
+
+ void
+ register_id ()
+ {
+ if (container () != this && !empty ())
+ {
+ //std::wcerr << "registering " << container ()
+ // << " as '" << *this
+ // << "' on " << container () << std::endl;
+ container ()->register_id (id_provider_, container ());
+ }
+ }
+
+ void
+ unregister_id ()
+ {
+ if (container () != this && !empty ())
+ {
+ //std::wcerr << "un-registering " << container ()
+ // << " as '" << *this
+ // << "' on " << container () << std::endl;
+ container ()->unregister_id (id_provider_);
+ }
+ }
+
+ private:
+ IdentityProvider<C> id_provider_;
+ };
+
+ struct IDREF_Base : public XSCRT::Type
+ {
+ virtual XSCRT::Type*
+ get () const = 0;
+ };
+
+ template <typename C>
+ class IDREF : public IDREF_Base
+ {
+ public:
+ IDREF ()
+ : id_provider_ (id_)
+ {
+ }
+
+ IDREF (XSCRT::XML::Element<C> const& e)
+ : id_ (e), id_provider_ (id_)
+ {
+ }
+
+ IDREF (XSCRT::XML::Attribute<C> const& a)
+ : id_ (a), id_provider_ (id_)
+ {
+ }
+
+ IDREF (IDREF const& x)
+ : id_ (x.id_), id_provider_ (id_)
+ {
+ }
+
+ IDREF (basic_string<C> const& id)
+ : id_ (id), id_provider_ (id_)
+ {
+ }
+
+ IDREF&
+ operator= (IDREF const& x)
+ {
+ id_ = x.id_;
+ return *this;
+ }
+
+ IDREF&
+ operator= (basic_string<C> const& x)
+ {
+ id_ = x;
+ return *this;
+ }
+
+ public:
+ XSCRT::Type*
+ operator-> () const
+ {
+ return get ();
+ }
+
+ XSCRT::Type&
+ operator* () const
+ {
+ return *(get ());
+ }
+
+ virtual XSCRT::Type*
+ get () const
+ {
+ if (!id_.empty () && container () != this)
+ {
+ return root ()->lookup_id (id_provider_);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ // conversion to bool
+ //
+ typedef XSCRT::Type* (IDREF::*bool_convertable)() const;
+
+ operator bool_convertable () const
+ {
+ return get () ? &IDREF::operator-> : 0;
+ }
+
+ private:
+ NCName<C> id_;
+ IdentityProvider<C> id_provider_;
+ };
+}
+
+// Traversal
+//
+//
+
+#include "XSCRT/Traversal.hpp"
+
+namespace XMLSchema
+{
+ namespace Traversal
+ {
+ template <typename T>
+ struct Traverser : XSCRT::Traversal::Traverser<T, XSCRT::Type>,
+ XSCRT::Traversal::Traverser<IDREF_Base, XSCRT::Type>
+ {
+ typedef
+ T
+ Type;
+
+ virtual void
+ traverse (XMLSchema::IDREF_Base& r)
+ {
+ if (r.get ()) dispatch (*(r.get ()));
+ }
+ };
+
+ typedef Traverser<byte> byte;
+ typedef Traverser<unsignedByte> unsignedByte;
+
+ typedef Traverser<short_> short_;
+ typedef Traverser<unsignedShort> unsignedShort;
+
+ typedef Traverser<int_> int_;
+ typedef Traverser<unsignedInt> unsignedInt;
+
+ typedef Traverser<long_> long_;
+ typedef Traverser<unsignedLong> unsignedLong;
+
+ typedef Traverser<boolean> boolean;
+
+ typedef Traverser<float_> float_;
+ typedef Traverser<double_> double_;
+
+ template <typename C>
+ struct string : Traverser<XMLSchema::string<C> >
+ {
+ };
+
+ template <typename C>
+ struct ID : Traverser<XMLSchema::ID<C> >
+ {
+ };
+ }
+}
+
+
+// ExtendedTypeInfo for XML Schema types
+//
+//
+
+#include "XSCRT/ExtendedTypeInfo.hpp"
+
+namespace XMLSchema
+{
+ template <typename C>
+ struct TypeInfoInitializer
+ {
+ TypeInfoInitializer (XSCRT::ExtendedTypeInfoMap&);
+ };
+}
+
+#include "XSCRT/XMLSchema.ipp"
+#include "XSCRT/XMLSchema.tpp"
+
+#endif // XSCRT_XMLSCHEMA_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/XSC_XML_Handlers_Export.h b/modules/CIAO/tools/Config_Handlers/XSC_XML_Handlers_Export.h
new file mode 100644
index 00000000000..82272eb6c05
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/XSC_XML_Handlers_Export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl XSC_XML_Handlers
+// ------------------------------
+#ifndef XSC_XML_HANDLERS_EXPORT_H
+#define XSC_XML_HANDLERS_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (XSC_XML_HANDLERS_HAS_DLL)
+# define XSC_XML_HANDLERS_HAS_DLL 1
+#endif /* ! XSC_XML_HANDLERS_HAS_DLL */
+
+#if defined (XSC_XML_HANDLERS_HAS_DLL) && (XSC_XML_HANDLERS_HAS_DLL == 1)
+# if defined (XSC_XML_HANDLERS_BUILD_DLL)
+# define XSC_XML_Handlers_Export ACE_Proper_Export_Flag
+# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* XSC_XML_HANDLERS_BUILD_DLL */
+# define XSC_XML_Handlers_Export ACE_Proper_Import_Flag
+# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* XSC_XML_HANDLERS_BUILD_DLL */
+#else /* XSC_XML_HANDLERS_HAS_DLL == 1 */
+# define XSC_XML_Handlers_Export
+# define XSC_XML_HANDLERS_SINGLETON_DECLARATION(T)
+# define XSC_XML_HANDLERS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* XSC_XML_HANDLERS_HAS_DLL == 1 */
+
+// Set XSC_XML_HANDLERS_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (XSC_XML_HANDLERS_NTRACE)
+# if (ACE_NTRACE == 1)
+# define XSC_XML_HANDLERS_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define XSC_XML_HANDLERS_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !XSC_XML_HANDLERS_NTRACE */
+
+#if (XSC_XML_HANDLERS_NTRACE == 1)
+# define XSC_XML_HANDLERS_TRACE(X)
+#else /* (XSC_XML_HANDLERS_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define XSC_XML_HANDLERS_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (XSC_XML_HANDLERS_NTRACE == 1) */
+
+#endif /* XSC_XML_HANDLERS_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/Config_Handlers/ccd.cpp b/modules/CIAO/tools/Config_Handlers/ccd.cpp
new file mode 100644
index 00000000000..66743f01e2e
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ccd.cpp
@@ -0,0 +1,1524 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "ccd.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ComponentInterfaceDescription
+ //
+
+ ComponentInterfaceDescription::
+ ComponentInterfaceDescription ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ComponentInterfaceDescription::
+ ComponentInterfaceDescription (::CIAO::Config_Handlers::ComponentInterfaceDescription const& s)
+ :
+ ::XSCRT::Type (),
+ label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+ UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+ specificType_ (s.specificType_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.specificType_) : 0),
+ contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0),
+ href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0),
+ regulator__ ()
+ {
+ if (label_.get ()) label_->container (this);
+ if (UUID_.get ()) UUID_->container (this);
+ if (specificType_.get ()) specificType_->container (this);
+ {
+ for (supportedType_const_iterator i (s.supportedType_.begin ());i != s.supportedType_.end ();++i) add_supportedType (*i);
+ }
+
+ {
+ for (idlFile_const_iterator i (s.idlFile_.begin ());i != s.idlFile_.end ();++i) add_idlFile (*i);
+ }
+
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ {
+ for (port_const_iterator i (s.port_.begin ());i != s.port_.end ();++i) add_port (*i);
+ }
+
+ {
+ for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+ }
+
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+
+ if (contentLocation_.get ()) contentLocation_->container (this);
+ if (href_.get ()) href_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription& ComponentInterfaceDescription::
+ operator= (::CIAO::Config_Handlers::ComponentInterfaceDescription const& s)
+ {
+ if (s.label_.get ()) label (*(s.label_));
+ else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.UUID_.get ()) UUID (*(s.UUID_));
+ else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.specificType_.get ()) specificType (*(s.specificType_));
+ else specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ supportedType_.clear ();
+ {
+ for (supportedType_const_iterator i (s.supportedType_.begin ());i != s.supportedType_.end ();++i) add_supportedType (*i);
+ }
+
+ idlFile_.clear ();
+ {
+ for (idlFile_const_iterator i (s.idlFile_.begin ());i != s.idlFile_.end ();++i) add_idlFile (*i);
+ }
+
+ configProperty_.clear ();
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ port_.clear ();
+ {
+ for (port_const_iterator i (s.port_.begin ());i != s.port_.end ();++i) add_port (*i);
+ }
+
+ property_.clear ();
+ {
+ for (property_const_iterator i (s.property_.begin ());i != s.property_.end ();++i) add_property (*i);
+ }
+
+ infoProperty_.clear ();
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+
+ if (s.contentLocation_.get ()) contentLocation (*(s.contentLocation_));
+ else contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.href_.get ()) href (*(s.href_));
+ else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // ComponentInterfaceDescription
+ //
+ bool ComponentInterfaceDescription::
+ label_p () const
+ {
+ return label_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription::
+ label () const
+ {
+ return *label_;
+ }
+
+ void ComponentInterfaceDescription::
+ label (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (label_.get ())
+ {
+ *label_ = e;
+ }
+
+ else
+ {
+ label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ label_->container (this);
+ }
+ }
+
+ // ComponentInterfaceDescription
+ //
+ bool ComponentInterfaceDescription::
+ UUID_p () const
+ {
+ return UUID_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription::
+ UUID () const
+ {
+ return *UUID_;
+ }
+
+ void ComponentInterfaceDescription::
+ UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (UUID_.get ())
+ {
+ *UUID_ = e;
+ }
+
+ else
+ {
+ UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ UUID_->container (this);
+ }
+ }
+
+ // ComponentInterfaceDescription
+ //
+ bool ComponentInterfaceDescription::
+ specificType_p () const
+ {
+ return specificType_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription::
+ specificType () const
+ {
+ return *specificType_;
+ }
+
+ void ComponentInterfaceDescription::
+ specificType (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (specificType_.get ())
+ {
+ *specificType_ = e;
+ }
+
+ else
+ {
+ specificType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ specificType_->container (this);
+ }
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::supportedType_iterator ComponentInterfaceDescription::
+ begin_supportedType ()
+ {
+ return supportedType_.begin ();
+ }
+
+ ComponentInterfaceDescription::supportedType_iterator ComponentInterfaceDescription::
+ end_supportedType ()
+ {
+ return supportedType_.end ();
+ }
+
+ ComponentInterfaceDescription::supportedType_const_iterator ComponentInterfaceDescription::
+ begin_supportedType () const
+ {
+ return supportedType_.begin ();
+ }
+
+ ComponentInterfaceDescription::supportedType_const_iterator ComponentInterfaceDescription::
+ end_supportedType () const
+ {
+ return supportedType_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_supportedType (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ supportedType_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_supportedType(void) const
+ {
+ return supportedType_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::idlFile_iterator ComponentInterfaceDescription::
+ begin_idlFile ()
+ {
+ return idlFile_.begin ();
+ }
+
+ ComponentInterfaceDescription::idlFile_iterator ComponentInterfaceDescription::
+ end_idlFile ()
+ {
+ return idlFile_.end ();
+ }
+
+ ComponentInterfaceDescription::idlFile_const_iterator ComponentInterfaceDescription::
+ begin_idlFile () const
+ {
+ return idlFile_.begin ();
+ }
+
+ ComponentInterfaceDescription::idlFile_const_iterator ComponentInterfaceDescription::
+ end_idlFile () const
+ {
+ return idlFile_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_idlFile (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ idlFile_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_idlFile(void) const
+ {
+ return idlFile_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::configProperty_iterator ComponentInterfaceDescription::
+ begin_configProperty ()
+ {
+ return configProperty_.begin ();
+ }
+
+ ComponentInterfaceDescription::configProperty_iterator ComponentInterfaceDescription::
+ end_configProperty ()
+ {
+ return configProperty_.end ();
+ }
+
+ ComponentInterfaceDescription::configProperty_const_iterator ComponentInterfaceDescription::
+ begin_configProperty () const
+ {
+ return configProperty_.begin ();
+ }
+
+ ComponentInterfaceDescription::configProperty_const_iterator ComponentInterfaceDescription::
+ end_configProperty () const
+ {
+ return configProperty_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_configProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ configProperty_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_configProperty(void) const
+ {
+ return configProperty_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::port_iterator ComponentInterfaceDescription::
+ begin_port ()
+ {
+ return port_.begin ();
+ }
+
+ ComponentInterfaceDescription::port_iterator ComponentInterfaceDescription::
+ end_port ()
+ {
+ return port_.end ();
+ }
+
+ ComponentInterfaceDescription::port_const_iterator ComponentInterfaceDescription::
+ begin_port () const
+ {
+ return port_.begin ();
+ }
+
+ ComponentInterfaceDescription::port_const_iterator ComponentInterfaceDescription::
+ end_port () const
+ {
+ return port_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_port (::CIAO::Config_Handlers::ComponentPortDescription const& e)
+ {
+ port_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_port(void) const
+ {
+ return port_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::property_iterator ComponentInterfaceDescription::
+ begin_property ()
+ {
+ return property_.begin ();
+ }
+
+ ComponentInterfaceDescription::property_iterator ComponentInterfaceDescription::
+ end_property ()
+ {
+ return property_.end ();
+ }
+
+ ComponentInterfaceDescription::property_const_iterator ComponentInterfaceDescription::
+ begin_property () const
+ {
+ return property_.begin ();
+ }
+
+ ComponentInterfaceDescription::property_const_iterator ComponentInterfaceDescription::
+ end_property () const
+ {
+ return property_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_property (::CIAO::Config_Handlers::ComponentPropertyDescription const& e)
+ {
+ property_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_property(void) const
+ {
+ return property_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ ComponentInterfaceDescription::infoProperty_iterator ComponentInterfaceDescription::
+ begin_infoProperty ()
+ {
+ return infoProperty_.begin ();
+ }
+
+ ComponentInterfaceDescription::infoProperty_iterator ComponentInterfaceDescription::
+ end_infoProperty ()
+ {
+ return infoProperty_.end ();
+ }
+
+ ComponentInterfaceDescription::infoProperty_const_iterator ComponentInterfaceDescription::
+ begin_infoProperty () const
+ {
+ return infoProperty_.begin ();
+ }
+
+ ComponentInterfaceDescription::infoProperty_const_iterator ComponentInterfaceDescription::
+ end_infoProperty () const
+ {
+ return infoProperty_.end ();
+ }
+
+ void ComponentInterfaceDescription::
+ add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ infoProperty_.push_back (e);
+ }
+
+ size_t ComponentInterfaceDescription::
+ count_infoProperty(void) const
+ {
+ return infoProperty_.size ();
+ }
+
+ // ComponentInterfaceDescription
+ //
+ bool ComponentInterfaceDescription::
+ contentLocation_p () const
+ {
+ return contentLocation_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription::
+ contentLocation () const
+ {
+ return *contentLocation_;
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (contentLocation_.get ())
+ {
+ *contentLocation_ = e;
+ }
+
+ else
+ {
+ contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ contentLocation_->container (this);
+ }
+ }
+
+ // ComponentInterfaceDescription
+ //
+ bool ComponentInterfaceDescription::
+ href_p () const
+ {
+ return href_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& ComponentInterfaceDescription::
+ href () const
+ {
+ return *href_;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR >& ComponentInterfaceDescription::
+ href ()
+ {
+ return *href_;
+ }
+
+ void ComponentInterfaceDescription::
+ href (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (href_.get ())
+ {
+ *href_ = e;
+ }
+
+ else
+ {
+ href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ href_->container (this);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ComponentInterfaceDescription
+ //
+
+ ComponentInterfaceDescription::
+ ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "label")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ label (t);
+ }
+
+ else if (n == "UUID")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ UUID (t);
+ }
+
+ else if (n == "specificType")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ specificType (t);
+ }
+
+ else if (n == "supportedType")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ add_supportedType (t);
+ }
+
+ else if (n == "idlFile")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ add_idlFile (t);
+ }
+
+ else if (n == "configProperty")
+ {
+ ::CIAO::Config_Handlers::Property t (e);
+ add_configProperty (t);
+ }
+
+ else if (n == "port")
+ {
+ ::CIAO::Config_Handlers::ComponentPortDescription t (e);
+ add_port (t);
+ }
+
+ else if (n == "property")
+ {
+ ::CIAO::Config_Handlers::ComponentPropertyDescription t (e);
+ add_property (t);
+ }
+
+ else if (n == "infoProperty")
+ {
+ ::CIAO::Config_Handlers::Property t (e);
+ add_infoProperty (t);
+ }
+
+ else if (n == "contentLocation")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ contentLocation (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "href")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (a);
+ href (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+ struct ComponentInterfaceDescriptionTypeInfoInitializer
+ {
+ ComponentInterfaceDescriptionTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ComponentInterfaceDescription));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ComponentInterfaceDescriptionTypeInfoInitializer ComponentInterfaceDescriptionTypeInfoInitializer_;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ // ComponentInterfaceDescription
+ //
+ //
+
+ void ComponentInterfaceDescription::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.specificType_p ()) specificType (o);
+ else specificType_none (o);
+ supportedType (o);
+ idlFile (o);
+ configProperty (o);
+ port (o);
+ property (o);
+ infoProperty (o);
+ if (o.contentLocation_p ()) contentLocation (o);
+ else contentLocation_none (o);
+ if (o.href_p ()) href (o);
+ else href_none (o);
+ post (o);
+ }
+
+ void ComponentInterfaceDescription::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.specificType_p ()) specificType (o);
+ else specificType_none (o);
+ supportedType (o);
+ idlFile (o);
+ configProperty (o);
+ port (o);
+ property (o);
+ infoProperty (o);
+ if (o.contentLocation_p ()) contentLocation (o);
+ else contentLocation_none (o);
+ if (o.href_p ()) href (o);
+ else href_none (o);
+ post (o);
+ }
+
+ void ComponentInterfaceDescription::
+ pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ label (Type& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void ComponentInterfaceDescription::
+ label (Type const& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void ComponentInterfaceDescription::
+ label_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ label_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ UUID (Type& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void ComponentInterfaceDescription::
+ UUID (Type const& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void ComponentInterfaceDescription::
+ UUID_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ UUID_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ specificType (Type& o)
+ {
+ dispatch (o.specificType ());
+ }
+
+ void ComponentInterfaceDescription::
+ specificType (Type const& o)
+ {
+ dispatch (o.specificType ());
+ }
+
+ void ComponentInterfaceDescription::
+ specificType_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ specificType_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::supportedType_iterator b (o.begin_supportedType()), e (o.end_supportedType());
+
+ if (b != e)
+ {
+ supportedType_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) supportedType_next (o);
+ }
+
+ supportedType_post (o);
+ }
+
+ else supportedType_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::supportedType_const_iterator b (o.begin_supportedType()), e (o.end_supportedType());
+
+ if (b != e)
+ {
+ supportedType_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) supportedType_next (o);
+ }
+
+ supportedType_post (o);
+ }
+
+ else supportedType_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::idlFile_iterator b (o.begin_idlFile()), e (o.end_idlFile());
+
+ if (b != e)
+ {
+ idlFile_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) idlFile_next (o);
+ }
+
+ idlFile_post (o);
+ }
+
+ else idlFile_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::idlFile_const_iterator b (o.begin_idlFile()), e (o.end_idlFile());
+
+ if (b != e)
+ {
+ idlFile_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) idlFile_next (o);
+ }
+
+ idlFile_post (o);
+ }
+
+ else idlFile_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+ if (b != e)
+ {
+ configProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) configProperty_next (o);
+ }
+
+ configProperty_post (o);
+ }
+
+ else configProperty_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+ if (b != e)
+ {
+ configProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) configProperty_next (o);
+ }
+
+ configProperty_post (o);
+ }
+
+ else configProperty_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::port_iterator b (o.begin_port()), e (o.end_port());
+
+ if (b != e)
+ {
+ port_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) port_next (o);
+ }
+
+ port_post (o);
+ }
+
+ else port_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ port (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::port_const_iterator b (o.begin_port()), e (o.end_port());
+
+ if (b != e)
+ {
+ port_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) port_next (o);
+ }
+
+ port_post (o);
+ }
+
+ else port_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ port_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ port_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::property_iterator b (o.begin_property()), e (o.end_property());
+
+ if (b != e)
+ {
+ property_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) property_next (o);
+ }
+
+ property_post (o);
+ }
+
+ else property_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ property (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::property_const_iterator b (o.begin_property()), e (o.end_property());
+
+ if (b != e)
+ {
+ property_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) property_next (o);
+ }
+
+ property_post (o);
+ }
+
+ else property_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ property_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ property_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+ if (b != e)
+ {
+ infoProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) infoProperty_next (o);
+ }
+
+ infoProperty_post (o);
+ }
+
+ else infoProperty_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentInterfaceDescription::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+ if (b != e)
+ {
+ infoProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) infoProperty_next (o);
+ }
+
+ infoProperty_post (o);
+ }
+
+ else infoProperty_none (o);
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_pre (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_pre (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_next (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_next (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_post (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation (Type& o)
+ {
+ dispatch (o.contentLocation ());
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation (Type const& o)
+ {
+ dispatch (o.contentLocation ());
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ href (Type& o)
+ {
+ dispatch (o.href ());
+ }
+
+ void ComponentInterfaceDescription::
+ href (Type const& o)
+ {
+ dispatch (o.href ());
+ }
+
+ void ComponentInterfaceDescription::
+ href_none (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ href_none (Type const&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ post (Type&)
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ post (Type const&)
+ {
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ // ComponentInterfaceDescription
+ //
+ //
+
+ ComponentInterfaceDescription::
+ ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ComponentInterfaceDescription::
+ ComponentInterfaceDescription ()
+ {
+ }
+
+ void ComponentInterfaceDescription::
+ traverse (Type const& o)
+ {
+ Traversal::ComponentInterfaceDescription::traverse (o);
+ }
+
+ void ComponentInterfaceDescription::
+ label (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+ Traversal::ComponentInterfaceDescription::label (o);
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ UUID (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+ Traversal::ComponentInterfaceDescription::UUID (o);
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ specificType (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("specificType", top_ ()));
+ Traversal::ComponentInterfaceDescription::specificType (o);
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("supportedType", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_next (Type const& o)
+ {
+ supportedType_post (o);
+ supportedType_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ supportedType_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("idlFile", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_next (Type const& o)
+ {
+ idlFile_post (o);
+ idlFile_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ idlFile_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_next (Type const& o)
+ {
+ configProperty_post (o);
+ configProperty_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ configProperty_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ port_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("port", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ port_next (Type const& o)
+ {
+ port_post (o);
+ port_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ port_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ property_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ property_next (Type const& o)
+ {
+ property_post (o);
+ property_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ property_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_next (Type const& o)
+ {
+ infoProperty_post (o);
+ infoProperty_pre (o);
+ }
+
+ void ComponentInterfaceDescription::
+ infoProperty_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ contentLocation (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("contentLocation", top_ ()));
+ Traversal::ComponentInterfaceDescription::contentLocation (o);
+ pop_ ();
+ }
+
+ void ComponentInterfaceDescription::
+ href (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("href", "", top_ ());
+ attr_ (&a);
+ Traversal::ComponentInterfaceDescription::href (o);
+ attr_ (0);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/ccd.hpp b/modules/CIAO/tools/Config_Handlers/ccd.hpp
new file mode 100644
index 00000000000..0a95203fecf
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/ccd.hpp
@@ -0,0 +1,775 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef CCD_HPP
+#define CCD_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class ComponentInterfaceDescription;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export ComponentInterfaceDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// specificType
+//
+public:
+bool specificType_p () const;
+::XMLSchema::string< ACE_TCHAR > const& specificType () const;
+void specificType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > specificType_;
+
+// supportedType
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator supportedType_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator supportedType_const_iterator;
+supportedType_iterator begin_supportedType ();
+supportedType_iterator end_supportedType ();
+supportedType_const_iterator begin_supportedType () const;
+supportedType_const_iterator end_supportedType () const;
+void add_supportedType (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_supportedType (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > supportedType_;
+
+// idlFile
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator idlFile_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator idlFile_const_iterator;
+idlFile_iterator begin_idlFile ();
+idlFile_iterator end_idlFile ();
+idlFile_const_iterator begin_idlFile () const;
+idlFile_const_iterator end_idlFile () const;
+void add_idlFile (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_idlFile (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > idlFile_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// port
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentPortDescription >::iterator port_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentPortDescription >::const_iterator port_const_iterator;
+port_iterator begin_port ();
+port_iterator end_port ();
+port_const_iterator begin_port () const;
+port_const_iterator end_port () const;
+void add_port (::CIAO::Config_Handlers::ComponentPortDescription const& );
+size_t count_port (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ComponentPortDescription > port_;
+
+// property
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentPropertyDescription >::iterator property_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ComponentPropertyDescription >::const_iterator property_const_iterator;
+property_iterator begin_property ();
+property_iterator end_property ();
+property_const_iterator begin_property () const;
+property_const_iterator end_property () const;
+void add_property (::CIAO::Config_Handlers::ComponentPropertyDescription const& );
+size_t count_property (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ComponentPropertyDescription > property_;
+
+// infoProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+infoProperty_iterator begin_infoProperty ();
+infoProperty_iterator end_infoProperty ();
+infoProperty_const_iterator begin_infoProperty () const;
+infoProperty_const_iterator end_infoProperty () const;
+void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_infoProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+// contentLocation
+//
+public:
+bool contentLocation_p () const;
+::XMLSchema::string< ACE_TCHAR > const& contentLocation () const;
+void contentLocation (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_;
+
+// href
+//
+public:
+bool href_p () const;
+::XMLSchema::string< ACE_TCHAR > const& href () const;
+::XMLSchema::string< ACE_TCHAR >& href ();
+void href (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_;
+
+public:
+ComponentInterfaceDescription ();
+
+ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentInterfaceDescription (ComponentInterfaceDescription const& s);
+
+ComponentInterfaceDescription&
+operator= (ComponentInterfaceDescription const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export ComponentInterfaceDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentInterfaceDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+specificType (Type&);
+
+virtual void
+specificType (Type const&);
+
+virtual void
+specificType_none (Type&);
+
+virtual void
+specificType_none (Type const&);
+
+virtual void
+supportedType (Type&);
+
+virtual void
+supportedType (Type const&);
+
+virtual void
+supportedType_pre (Type&);
+
+virtual void
+supportedType_pre (Type const&);
+
+virtual void
+supportedType_next (Type&);
+
+virtual void
+supportedType_next (Type const&);
+
+virtual void
+supportedType_post (Type&);
+
+virtual void
+supportedType_post (Type const&);
+
+virtual void
+supportedType_none (Type&);
+
+virtual void
+supportedType_none (Type const&);
+
+virtual void
+idlFile (Type&);
+
+virtual void
+idlFile (Type const&);
+
+virtual void
+idlFile_pre (Type&);
+
+virtual void
+idlFile_pre (Type const&);
+
+virtual void
+idlFile_next (Type&);
+
+virtual void
+idlFile_next (Type const&);
+
+virtual void
+idlFile_post (Type&);
+
+virtual void
+idlFile_post (Type const&);
+
+virtual void
+idlFile_none (Type&);
+
+virtual void
+idlFile_none (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+port (Type&);
+
+virtual void
+port (Type const&);
+
+virtual void
+port_pre (Type&);
+
+virtual void
+port_pre (Type const&);
+
+virtual void
+port_next (Type&);
+
+virtual void
+port_next (Type const&);
+
+virtual void
+port_post (Type&);
+
+virtual void
+port_post (Type const&);
+
+virtual void
+port_none (Type&);
+
+virtual void
+port_none (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+property_pre (Type&);
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type&);
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type&);
+
+virtual void
+property_post (Type const&);
+
+virtual void
+property_none (Type&);
+
+virtual void
+property_none (Type const&);
+
+virtual void
+infoProperty (Type&);
+
+virtual void
+infoProperty (Type const&);
+
+virtual void
+infoProperty_pre (Type&);
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type&);
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type&);
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+infoProperty_none (Type&);
+
+virtual void
+infoProperty_none (Type const&);
+
+virtual void
+contentLocation (Type&);
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+contentLocation_none (Type&);
+
+virtual void
+contentLocation_none (Type const&);
+
+virtual void
+href (Type&);
+
+virtual void
+href (Type const&);
+
+virtual void
+href_none (Type&);
+
+virtual void
+href_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct ComponentInterfaceDescription : Traversal::ComponentInterfaceDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentInterfaceDescription Type;
+ComponentInterfaceDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+specificType (Type &o)
+{
+
+this->specificType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+specificType (Type const&);
+
+virtual void
+supportedType_pre (Type &o)
+{
+
+this->supportedType_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_pre (Type const&);
+
+virtual void
+supportedType_next (Type &o)
+{
+
+this->supportedType_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_next (Type const&);
+
+virtual void
+supportedType_post (Type &o)
+{
+
+this->supportedType_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+supportedType_post (Type const&);
+
+virtual void
+idlFile_pre (Type &o)
+{
+
+this->idlFile_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+idlFile_pre (Type const&);
+
+virtual void
+idlFile_next (Type &o)
+{
+
+this->idlFile_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+idlFile_next (Type const&);
+
+virtual void
+idlFile_post (Type &o)
+{
+
+this->idlFile_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+idlFile_post (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+port_pre (Type &o)
+{
+
+this->port_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+port_pre (Type const&);
+
+virtual void
+port_next (Type &o)
+{
+
+this->port_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+port_next (Type const&);
+
+virtual void
+port_post (Type &o)
+{
+
+this->port_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+port_post (Type const&);
+
+virtual void
+property_pre (Type &o)
+{
+
+this->property_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_pre (Type const&);
+
+virtual void
+property_next (Type &o)
+{
+
+this->property_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_next (Type const&);
+
+virtual void
+property_post (Type &o)
+{
+
+this->property_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property_post (Type const&);
+
+virtual void
+infoProperty_pre (Type &o)
+{
+
+this->infoProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type &o)
+{
+
+this->infoProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type &o)
+{
+
+this->infoProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+contentLocation (Type &o)
+{
+
+this->contentLocation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+href (Type &o)
+{
+
+this->href (const_cast <Type const &> (o));
+}
+
+
+virtual void
+href (Type const&);
+
+protected:
+ComponentInterfaceDescription ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // CCD_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/cdd.cpp b/modules/CIAO/tools/Config_Handlers/cdd.cpp
new file mode 100644
index 00000000000..081ff061ea8
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cdd.cpp
@@ -0,0 +1,3392 @@
+
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "cdd.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // Domain
+ //
+
+ Domain::
+ Domain ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ Domain::
+ Domain (::CIAO::Config_Handlers::Domain const& s)
+ :
+ ::XSCRT::Type (),
+ UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+ label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+ regulator__ ()
+ {
+ if (UUID_.get ()) UUID_->container (this);
+ if (label_.get ()) label_->container (this);
+ {
+ for (node_const_iterator i (s.node_.begin ());i != s.node_.end ();++i) add_node (*i);
+ }
+
+ {
+ for (interconnect_const_iterator i (s.interconnect_.begin ());i != s.interconnect_.end ();++i) add_interconnect (*i);
+ }
+
+ {
+ for (bridge_const_iterator i (s.bridge_.begin ());i != s.bridge_.end ();++i) add_bridge (*i);
+ }
+
+ {
+ for (sharedResource_const_iterator i (s.sharedResource_.begin ());i != s.sharedResource_.end ();++i) add_sharedResource (*i);
+ }
+
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::Domain& Domain::
+ operator= (::CIAO::Config_Handlers::Domain const& s)
+ {
+ if (s.UUID_.get ()) UUID (*(s.UUID_));
+ else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.label_.get ()) label (*(s.label_));
+ else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ node_.clear ();
+ {
+ for (node_const_iterator i (s.node_.begin ());i != s.node_.end ();++i) add_node (*i);
+ }
+
+ interconnect_.clear ();
+ {
+ for (interconnect_const_iterator i (s.interconnect_.begin ());i != s.interconnect_.end ();++i) add_interconnect (*i);
+ }
+
+ bridge_.clear ();
+ {
+ for (bridge_const_iterator i (s.bridge_.begin ());i != s.bridge_.end ();++i) add_bridge (*i);
+ }
+
+ sharedResource_.clear ();
+ {
+ for (sharedResource_const_iterator i (s.sharedResource_.begin ());i != s.sharedResource_.end ();++i) add_sharedResource (*i);
+ }
+
+ infoProperty_.clear ();
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+
+ return *this;
+ }
+
+
+ // Domain
+ //
+ bool Domain::
+ UUID_p () const
+ {
+ return UUID_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& Domain::
+ UUID () const
+ {
+ return *UUID_;
+ }
+
+ void Domain::
+ UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (UUID_.get ())
+ {
+ *UUID_ = e;
+ }
+
+ else
+ {
+ UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ UUID_->container (this);
+ }
+ }
+
+ // Domain
+ //
+ bool Domain::
+ label_p () const
+ {
+ return label_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& Domain::
+ label () const
+ {
+ return *label_;
+ }
+
+ void Domain::
+ label (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (label_.get ())
+ {
+ *label_ = e;
+ }
+
+ else
+ {
+ label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ label_->container (this);
+ }
+ }
+
+ // Domain
+ //
+ Domain::node_iterator Domain::
+ begin_node ()
+ {
+ return node_.begin ();
+ }
+
+ Domain::node_iterator Domain::
+ end_node ()
+ {
+ return node_.end ();
+ }
+
+ Domain::node_const_iterator Domain::
+ begin_node () const
+ {
+ return node_.begin ();
+ }
+
+ Domain::node_const_iterator Domain::
+ end_node () const
+ {
+ return node_.end ();
+ }
+
+ void Domain::
+ add_node (::CIAO::Config_Handlers::Node const& e)
+ {
+ node_.push_back (e);
+ }
+
+ size_t Domain::
+ count_node(void) const
+ {
+ return node_.size ();
+ }
+
+ // Domain
+ //
+ Domain::interconnect_iterator Domain::
+ begin_interconnect ()
+ {
+ return interconnect_.begin ();
+ }
+
+ Domain::interconnect_iterator Domain::
+ end_interconnect ()
+ {
+ return interconnect_.end ();
+ }
+
+ Domain::interconnect_const_iterator Domain::
+ begin_interconnect () const
+ {
+ return interconnect_.begin ();
+ }
+
+ Domain::interconnect_const_iterator Domain::
+ end_interconnect () const
+ {
+ return interconnect_.end ();
+ }
+
+ void Domain::
+ add_interconnect (::CIAO::Config_Handlers::Interconnect const& e)
+ {
+ interconnect_.push_back (e);
+ }
+
+ size_t Domain::
+ count_interconnect(void) const
+ {
+ return interconnect_.size ();
+ }
+
+ // Domain
+ //
+ Domain::bridge_iterator Domain::
+ begin_bridge ()
+ {
+ return bridge_.begin ();
+ }
+
+ Domain::bridge_iterator Domain::
+ end_bridge ()
+ {
+ return bridge_.end ();
+ }
+
+ Domain::bridge_const_iterator Domain::
+ begin_bridge () const
+ {
+ return bridge_.begin ();
+ }
+
+ Domain::bridge_const_iterator Domain::
+ end_bridge () const
+ {
+ return bridge_.end ();
+ }
+
+ void Domain::
+ add_bridge (::CIAO::Config_Handlers::Bridge const& e)
+ {
+ bridge_.push_back (e);
+ }
+
+ size_t Domain::
+ count_bridge(void) const
+ {
+ return bridge_.size ();
+ }
+
+ // Domain
+ //
+ Domain::sharedResource_iterator Domain::
+ begin_sharedResource ()
+ {
+ return sharedResource_.begin ();
+ }
+
+ Domain::sharedResource_iterator Domain::
+ end_sharedResource ()
+ {
+ return sharedResource_.end ();
+ }
+
+ Domain::sharedResource_const_iterator Domain::
+ begin_sharedResource () const
+ {
+ return sharedResource_.begin ();
+ }
+
+ Domain::sharedResource_const_iterator Domain::
+ end_sharedResource () const
+ {
+ return sharedResource_.end ();
+ }
+
+ void Domain::
+ add_sharedResource (::CIAO::Config_Handlers::SharedResource const& e)
+ {
+ sharedResource_.push_back (e);
+ }
+
+ size_t Domain::
+ count_sharedResource(void) const
+ {
+ return sharedResource_.size ();
+ }
+
+ // Domain
+ //
+ Domain::infoProperty_iterator Domain::
+ begin_infoProperty ()
+ {
+ return infoProperty_.begin ();
+ }
+
+ Domain::infoProperty_iterator Domain::
+ end_infoProperty ()
+ {
+ return infoProperty_.end ();
+ }
+
+ Domain::infoProperty_const_iterator Domain::
+ begin_infoProperty () const
+ {
+ return infoProperty_.begin ();
+ }
+
+ Domain::infoProperty_const_iterator Domain::
+ end_infoProperty () const
+ {
+ return infoProperty_.end ();
+ }
+
+ void Domain::
+ add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ infoProperty_.push_back (e);
+ }
+
+ size_t Domain::
+ count_infoProperty(void) const
+ {
+ return infoProperty_.size ();
+ }
+
+
+ // Bridge
+ //
+
+ Bridge::
+ Bridge (::XMLSchema::string< ACE_TCHAR > const& name__)
+ :
+ ::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+Bridge::
+Bridge (::CIAO::Config_Handlers::Bridge const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+regulator__ ()
+{
+name_->container (this);
+if (label_.get ()) label_->container (this);
+{
+for (connect_const_iterator i (s.connect_.begin ());i != s.connect_.end ();++i) add_connect (*i);
+}
+
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+}
+
+::CIAO::Config_Handlers::Bridge& Bridge::
+operator= (::CIAO::Config_Handlers::Bridge const& s)
+{
+name (s.name ());
+
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+connect_.clear ();
+{
+for (connect_const_iterator i (s.connect_.begin ());i != s.connect_.end ();++i) add_connect (*i);
+}
+
+resource_.clear ();
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+
+return *this;
+}
+
+
+// Bridge
+//
+::XMLSchema::string< ACE_TCHAR > const& Bridge::
+name () const
+{
+return *name_;
+}
+
+void Bridge::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Bridge
+//
+bool Bridge::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& Bridge::
+label () const
+{
+return *label_;
+}
+
+void Bridge::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// Bridge
+//
+Bridge::connect_iterator Bridge::
+begin_connect ()
+{
+return connect_.begin ();
+}
+
+Bridge::connect_iterator Bridge::
+end_connect ()
+{
+return connect_.end ();
+}
+
+Bridge::connect_const_iterator Bridge::
+begin_connect () const
+{
+return connect_.begin ();
+}
+
+Bridge::connect_const_iterator Bridge::
+end_connect () const
+{
+return connect_.end ();
+}
+
+void Bridge::
+add_connect (::CIAO::Config_Handlers::Interconnect const& e)
+{
+connect_.push_back (e);
+}
+
+size_t Bridge::
+count_connect(void) const
+{
+return connect_.size ();
+}
+
+// Bridge
+//
+Bridge::resource_iterator Bridge::
+begin_resource ()
+{
+return resource_.begin ();
+}
+
+Bridge::resource_iterator Bridge::
+end_resource ()
+{
+return resource_.end ();
+}
+
+Bridge::resource_const_iterator Bridge::
+begin_resource () const
+{
+return resource_.begin ();
+}
+
+Bridge::resource_const_iterator Bridge::
+end_resource () const
+{
+return resource_.end ();
+}
+
+void Bridge::
+add_resource (::CIAO::Config_Handlers::Resource const& e)
+{
+resource_.push_back (e);
+}
+
+size_t Bridge::
+count_resource(void) const
+{
+return resource_.size ();
+}
+
+
+// Interconnect
+//
+
+Interconnect::
+Interconnect (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+Interconnect::
+Interconnect (::CIAO::Config_Handlers::Interconnect const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+regulator__ ()
+{
+name_->container (this);
+if (label_.get ()) label_->container (this);
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+{
+for (connect_const_iterator i (s.connect_.begin ());i != s.connect_.end ();++i) add_connect (*i);
+}
+
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+}
+
+::CIAO::Config_Handlers::Interconnect& Interconnect::
+operator= (::CIAO::Config_Handlers::Interconnect const& s)
+{
+name (s.name ());
+
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+connection_.clear ();
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+connect_.clear ();
+{
+for (connect_const_iterator i (s.connect_.begin ());i != s.connect_.end ();++i) add_connect (*i);
+}
+
+resource_.clear ();
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+
+return *this;
+}
+
+
+// Interconnect
+//
+::XMLSchema::string< ACE_TCHAR > const& Interconnect::
+name () const
+{
+return *name_;
+}
+
+void Interconnect::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Interconnect
+//
+bool Interconnect::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& Interconnect::
+label () const
+{
+return *label_;
+}
+
+void Interconnect::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// Interconnect
+//
+Interconnect::connection_iterator Interconnect::
+begin_connection ()
+{
+return connection_.begin ();
+}
+
+Interconnect::connection_iterator Interconnect::
+end_connection ()
+{
+return connection_.end ();
+}
+
+Interconnect::connection_const_iterator Interconnect::
+begin_connection () const
+{
+return connection_.begin ();
+}
+
+Interconnect::connection_const_iterator Interconnect::
+end_connection () const
+{
+return connection_.end ();
+}
+
+void Interconnect::
+add_connection (::CIAO::Config_Handlers::Bridge const& e)
+{
+connection_.push_back (e);
+}
+
+size_t Interconnect::
+count_connection(void) const
+{
+return connection_.size ();
+}
+
+// Interconnect
+//
+Interconnect::connect_iterator Interconnect::
+begin_connect ()
+{
+return connect_.begin ();
+}
+
+Interconnect::connect_iterator Interconnect::
+end_connect ()
+{
+return connect_.end ();
+}
+
+Interconnect::connect_const_iterator Interconnect::
+begin_connect () const
+{
+return connect_.begin ();
+}
+
+Interconnect::connect_const_iterator Interconnect::
+end_connect () const
+{
+return connect_.end ();
+}
+
+void Interconnect::
+add_connect (::CIAO::Config_Handlers::Node const& e)
+{
+connect_.push_back (e);
+}
+
+size_t Interconnect::
+count_connect(void) const
+{
+return connect_.size ();
+}
+
+// Interconnect
+//
+Interconnect::resource_iterator Interconnect::
+begin_resource ()
+{
+return resource_.begin ();
+}
+
+Interconnect::resource_iterator Interconnect::
+end_resource ()
+{
+return resource_.end ();
+}
+
+Interconnect::resource_const_iterator Interconnect::
+begin_resource () const
+{
+return resource_.begin ();
+}
+
+Interconnect::resource_const_iterator Interconnect::
+end_resource () const
+{
+return resource_.end ();
+}
+
+void Interconnect::
+add_resource (::CIAO::Config_Handlers::Resource const& e)
+{
+resource_.push_back (e);
+}
+
+size_t Interconnect::
+count_resource(void) const
+{
+return resource_.size ();
+}
+
+
+// Node
+//
+
+Node::
+Node (::XMLSchema::string< ACE_TCHAR > const& name__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+regulator__ ()
+{
+name_->container (this);
+}
+
+Node::
+Node (::CIAO::Config_Handlers::Node const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+regulator__ ()
+{
+name_->container (this);
+if (label_.get ()) label_->container (this);
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+{
+for (sharedResource_const_iterator i (s.sharedResource_.begin ());i != s.sharedResource_.end ();++i) add_sharedResource (*i);
+}
+
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+}
+
+::CIAO::Config_Handlers::Node& Node::
+operator= (::CIAO::Config_Handlers::Node const& s)
+{
+name (s.name ());
+
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+connection_.clear ();
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+sharedResource_.clear ();
+{
+for (sharedResource_const_iterator i (s.sharedResource_.begin ());i != s.sharedResource_.end ();++i) add_sharedResource (*i);
+}
+
+resource_.clear ();
+{
+for (resource_const_iterator i (s.resource_.begin ());i != s.resource_.end ();++i) add_resource (*i);
+}
+
+return *this;
+}
+
+
+// Node
+//
+::XMLSchema::string< ACE_TCHAR > const& Node::
+name () const
+{
+return *name_;
+}
+
+void Node::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// Node
+//
+bool Node::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& Node::
+label () const
+{
+return *label_;
+}
+
+void Node::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// Node
+//
+Node::connection_iterator Node::
+begin_connection ()
+{
+return connection_.begin ();
+}
+
+Node::connection_iterator Node::
+end_connection ()
+{
+return connection_.end ();
+}
+
+Node::connection_const_iterator Node::
+begin_connection () const
+{
+return connection_.begin ();
+}
+
+Node::connection_const_iterator Node::
+end_connection () const
+{
+return connection_.end ();
+}
+
+void Node::
+add_connection (::CIAO::Config_Handlers::Interconnect const& e)
+{
+connection_.push_back (e);
+}
+
+size_t Node::
+count_connection(void) const
+{
+return connection_.size ();
+}
+
+// Node
+//
+Node::sharedResource_iterator Node::
+begin_sharedResource ()
+{
+return sharedResource_.begin ();
+}
+
+Node::sharedResource_iterator Node::
+end_sharedResource ()
+{
+return sharedResource_.end ();
+}
+
+Node::sharedResource_const_iterator Node::
+begin_sharedResource () const
+{
+return sharedResource_.begin ();
+}
+
+Node::sharedResource_const_iterator Node::
+end_sharedResource () const
+{
+return sharedResource_.end ();
+}
+
+void Node::
+add_sharedResource (::CIAO::Config_Handlers::SharedResource const& e)
+{
+sharedResource_.push_back (e);
+}
+
+size_t Node::
+count_sharedResource(void) const
+{
+return sharedResource_.size ();
+}
+
+// Node
+//
+Node::resource_iterator Node::
+begin_resource ()
+{
+return resource_.begin ();
+}
+
+Node::resource_iterator Node::
+end_resource ()
+{
+return resource_.end ();
+}
+
+Node::resource_const_iterator Node::
+begin_resource () const
+{
+return resource_.begin ();
+}
+
+Node::resource_const_iterator Node::
+end_resource () const
+{
+return resource_.end ();
+}
+
+void Node::
+add_resource (::CIAO::Config_Handlers::Resource const& e)
+{
+resource_.push_back (e);
+}
+
+size_t Node::
+count_resource(void) const
+{
+return resource_.size ();
+}
+
+
+// SharedResource
+//
+
+SharedResource::
+SharedResource (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::CIAO::Config_Handlers::Node const& node__,
+::CIAO::Config_Handlers::SatisfierProperty const& property__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (resourceType__)),
+node_ (new ::CIAO::Config_Handlers::Node (node__)),
+property_ (new ::CIAO::Config_Handlers::SatisfierProperty (property__)),
+regulator__ ()
+{
+name_->container (this);
+resourceType_->container (this);
+node_->container (this);
+property_->container (this);
+}
+
+SharedResource::
+SharedResource (::CIAO::Config_Handlers::SharedResource const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+resourceType_ (new ::XMLSchema::string< ACE_TCHAR > (*s.resourceType_)),
+node_ (new ::CIAO::Config_Handlers::Node (*s.node_)),
+property_ (new ::CIAO::Config_Handlers::SatisfierProperty (*s.property_)),
+regulator__ ()
+{
+name_->container (this);
+resourceType_->container (this);
+node_->container (this);
+property_->container (this);
+}
+
+::CIAO::Config_Handlers::SharedResource& SharedResource::
+operator= (::CIAO::Config_Handlers::SharedResource const& s)
+{
+name (s.name ());
+
+resourceType (s.resourceType ());
+
+node (s.node ());
+
+property (s.property ());
+
+return *this;
+}
+
+
+// SharedResource
+//
+::XMLSchema::string< ACE_TCHAR > const& SharedResource::
+name () const
+{
+return *name_;
+}
+
+void SharedResource::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// SharedResource
+//
+::XMLSchema::string< ACE_TCHAR > const& SharedResource::
+resourceType () const
+{
+return *resourceType_;
+}
+
+void SharedResource::
+resourceType (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*resourceType_ = e;
+}
+
+// SharedResource
+//
+::CIAO::Config_Handlers::Node const& SharedResource::
+node () const
+{
+return *node_;
+}
+
+void SharedResource::
+node (::CIAO::Config_Handlers::Node const& e)
+{
+*node_ = e;
+}
+
+// SharedResource
+//
+::CIAO::Config_Handlers::SatisfierProperty const& SharedResource::
+property () const
+{
+return *property_;
+}
+
+void SharedResource::
+property (::CIAO::Config_Handlers::SatisfierProperty const& e)
+{
+*property_ = e;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+// Domain
+//
+
+Domain::
+Domain (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "UUID")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+UUID (t);
+}
+
+else if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "node")
+{
+::CIAO::Config_Handlers::Node t (e);
+add_node (t);
+}
+
+else if (n == "interconnect")
+{
+::CIAO::Config_Handlers::Interconnect t (e);
+add_interconnect (t);
+}
+
+else if (n == "bridge")
+{
+::CIAO::Config_Handlers::Bridge t (e);
+add_bridge (t);
+}
+
+else if (n == "sharedResource")
+{
+::CIAO::Config_Handlers::SharedResource t (e);
+add_sharedResource (t);
+}
+
+else if (n == "infoProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_infoProperty (t);
+}
+
+else
+{
+}
+}
+}
+
+// Bridge
+//
+
+Bridge::
+Bridge (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "connect")
+{
+::CIAO::Config_Handlers::Interconnect t (e);
+add_connect (t);
+}
+
+else if (n == "resource")
+{
+::CIAO::Config_Handlers::Resource t (e);
+add_resource (t);
+}
+
+else
+{
+}
+}
+}
+
+// Interconnect
+//
+
+Interconnect::
+Interconnect (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "connection")
+{
+::CIAO::Config_Handlers::Bridge t (e);
+add_connection (t);
+}
+
+else if (n == "connect")
+{
+::CIAO::Config_Handlers::Node t (e);
+add_connect (t);
+}
+
+else if (n == "resource")
+{
+::CIAO::Config_Handlers::Resource t (e);
+add_resource (t);
+}
+
+else
+{
+}
+}
+}
+
+// Node
+//
+
+Node::
+Node (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "connection")
+{
+::CIAO::Config_Handlers::Interconnect t (e);
+add_connection (t);
+}
+
+else if (n == "sharedResource")
+{
+::CIAO::Config_Handlers::SharedResource t (e);
+add_sharedResource (t);
+}
+
+else if (n == "resource")
+{
+::CIAO::Config_Handlers::Resource t (e);
+add_resource (t);
+}
+
+else
+{
+}
+}
+}
+
+// SharedResource
+//
+
+SharedResource::
+SharedResource (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "resourceType")
+{
+resourceType_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+resourceType_->container (this);
+}
+
+else if (n == "node")
+{
+node_ = ::std::auto_ptr< ::CIAO::Config_Handlers::Node > (new ::CIAO::Config_Handlers::Node (e));
+node_->container (this);
+}
+
+else if (n == "property")
+{
+property_ = ::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierProperty > (new ::CIAO::Config_Handlers::SatisfierProperty (e));
+property_->container (this);
+}
+
+else
+{
+}
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace
+{
+::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+struct DomainTypeInfoInitializer
+{
+DomainTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Domain));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+DomainTypeInfoInitializer DomainTypeInfoInitializer_;
+
+struct BridgeTypeInfoInitializer
+{
+BridgeTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Bridge));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+BridgeTypeInfoInitializer BridgeTypeInfoInitializer_;
+
+struct InterconnectTypeInfoInitializer
+{
+InterconnectTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Interconnect));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+InterconnectTypeInfoInitializer InterconnectTypeInfoInitializer_;
+
+struct NodeTypeInfoInitializer
+{
+NodeTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (Node));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+NodeTypeInfoInitializer NodeTypeInfoInitializer_;
+
+struct SharedResourceTypeInfoInitializer
+{
+SharedResourceTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SharedResource));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SharedResourceTypeInfoInitializer SharedResourceTypeInfoInitializer_;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+// Domain
+//
+//
+
+void Domain::
+traverse (Type& o)
+{
+pre (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+node (o);
+interconnect (o);
+bridge (o);
+sharedResource (o);
+infoProperty (o);
+post (o);
+}
+
+void Domain::
+traverse (Type const& o)
+{
+pre (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+node (o);
+interconnect (o);
+bridge (o);
+sharedResource (o);
+infoProperty (o);
+post (o);
+}
+
+void Domain::
+pre (Type&)
+{
+}
+
+void Domain::
+pre (Type const&)
+{
+}
+
+void Domain::
+UUID (Type& o)
+{
+dispatch (o.UUID ());
+}
+
+void Domain::
+UUID (Type const& o)
+{
+dispatch (o.UUID ());
+}
+
+void Domain::
+UUID_none (Type&)
+{
+}
+
+void Domain::
+UUID_none (Type const&)
+{
+}
+
+void Domain::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void Domain::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void Domain::
+label_none (Type&)
+{
+}
+
+void Domain::
+label_none (Type const&)
+{
+}
+
+void Domain::
+node (Type& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::node_iterator b (o.begin_node()), e (o.end_node());
+
+if (b != e)
+{
+node_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) node_next (o);
+}
+
+node_post (o);
+}
+}
+
+void Domain::
+node (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::node_const_iterator b (o.begin_node()), e (o.end_node());
+
+if (b != e)
+{
+node_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) node_next (o);
+}
+
+node_post (o);
+}
+}
+
+void Domain::
+node_pre (Type&)
+{
+}
+
+void Domain::
+node_pre (Type const&)
+{
+}
+
+void Domain::
+node_next (Type&)
+{
+}
+
+void Domain::
+node_next (Type const&)
+{
+}
+
+void Domain::
+node_post (Type&)
+{
+}
+
+void Domain::
+node_post (Type const&)
+{
+}
+
+void Domain::
+interconnect (Type& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::interconnect_iterator b (o.begin_interconnect()), e (o.end_interconnect());
+
+if (b != e)
+{
+interconnect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) interconnect_next (o);
+}
+
+interconnect_post (o);
+}
+
+else interconnect_none (o);
+}
+
+void Domain::
+interconnect (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::interconnect_const_iterator b (o.begin_interconnect()), e (o.end_interconnect());
+
+if (b != e)
+{
+interconnect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) interconnect_next (o);
+}
+
+interconnect_post (o);
+}
+
+else interconnect_none (o);
+}
+
+void Domain::
+interconnect_pre (Type&)
+{
+}
+
+void Domain::
+interconnect_pre (Type const&)
+{
+}
+
+void Domain::
+interconnect_next (Type&)
+{
+}
+
+void Domain::
+interconnect_next (Type const&)
+{
+}
+
+void Domain::
+interconnect_post (Type&)
+{
+}
+
+void Domain::
+interconnect_post (Type const&)
+{
+}
+
+void Domain::
+interconnect_none (Type&)
+{
+}
+
+void Domain::
+interconnect_none (Type const&)
+{
+}
+
+void Domain::
+bridge (Type& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::bridge_iterator b (o.begin_bridge()), e (o.end_bridge());
+
+if (b != e)
+{
+bridge_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) bridge_next (o);
+}
+
+bridge_post (o);
+}
+
+else bridge_none (o);
+}
+
+void Domain::
+bridge (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::bridge_const_iterator b (o.begin_bridge()), e (o.end_bridge());
+
+if (b != e)
+{
+bridge_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) bridge_next (o);
+}
+
+bridge_post (o);
+}
+
+else bridge_none (o);
+}
+
+void Domain::
+bridge_pre (Type&)
+{
+}
+
+void Domain::
+bridge_pre (Type const&)
+{
+}
+
+void Domain::
+bridge_next (Type&)
+{
+}
+
+void Domain::
+bridge_next (Type const&)
+{
+}
+
+void Domain::
+bridge_post (Type&)
+{
+}
+
+void Domain::
+bridge_post (Type const&)
+{
+}
+
+void Domain::
+bridge_none (Type&)
+{
+}
+
+void Domain::
+bridge_none (Type const&)
+{
+}
+
+void Domain::
+sharedResource (Type& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::sharedResource_iterator b (o.begin_sharedResource()), e (o.end_sharedResource());
+
+if (b != e)
+{
+sharedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) sharedResource_next (o);
+}
+
+sharedResource_post (o);
+}
+
+else sharedResource_none (o);
+}
+
+void Domain::
+sharedResource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::sharedResource_const_iterator b (o.begin_sharedResource()), e (o.end_sharedResource());
+
+if (b != e)
+{
+sharedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) sharedResource_next (o);
+}
+
+sharedResource_post (o);
+}
+
+else sharedResource_none (o);
+}
+
+void Domain::
+sharedResource_pre (Type&)
+{
+}
+
+void Domain::
+sharedResource_pre (Type const&)
+{
+}
+
+void Domain::
+sharedResource_next (Type&)
+{
+}
+
+void Domain::
+sharedResource_next (Type const&)
+{
+}
+
+void Domain::
+sharedResource_post (Type&)
+{
+}
+
+void Domain::
+sharedResource_post (Type const&)
+{
+}
+
+void Domain::
+sharedResource_none (Type&)
+{
+}
+
+void Domain::
+sharedResource_none (Type const&)
+{
+}
+
+void Domain::
+infoProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void Domain::
+infoProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Domain::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void Domain::
+infoProperty_pre (Type&)
+{
+}
+
+void Domain::
+infoProperty_pre (Type const&)
+{
+}
+
+void Domain::
+infoProperty_next (Type&)
+{
+}
+
+void Domain::
+infoProperty_next (Type const&)
+{
+}
+
+void Domain::
+infoProperty_post (Type&)
+{
+}
+
+void Domain::
+infoProperty_post (Type const&)
+{
+}
+
+void Domain::
+infoProperty_none (Type&)
+{
+}
+
+void Domain::
+infoProperty_none (Type const&)
+{
+}
+
+void Domain::
+post (Type&)
+{
+}
+
+void Domain::
+post (Type const&)
+{
+}
+
+// Bridge
+//
+//
+
+void Bridge::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connect (o);
+resource (o);
+post (o);
+}
+
+void Bridge::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connect (o);
+resource (o);
+post (o);
+}
+
+void Bridge::
+pre (Type&)
+{
+}
+
+void Bridge::
+pre (Type const&)
+{
+}
+
+void Bridge::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Bridge::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Bridge::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void Bridge::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void Bridge::
+label_none (Type&)
+{
+}
+
+void Bridge::
+label_none (Type const&)
+{
+}
+
+void Bridge::
+connect (Type& o)
+{
+// VC6 anathema strikes again
+//
+Bridge::Type::connect_iterator b (o.begin_connect()), e (o.end_connect());
+
+if (b != e)
+{
+connect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connect_next (o);
+}
+
+connect_post (o);
+}
+}
+
+void Bridge::
+connect (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Bridge::Type::connect_const_iterator b (o.begin_connect()), e (o.end_connect());
+
+if (b != e)
+{
+connect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connect_next (o);
+}
+
+connect_post (o);
+}
+}
+
+void Bridge::
+connect_pre (Type&)
+{
+}
+
+void Bridge::
+connect_pre (Type const&)
+{
+}
+
+void Bridge::
+connect_next (Type&)
+{
+}
+
+void Bridge::
+connect_next (Type const&)
+{
+}
+
+void Bridge::
+connect_post (Type&)
+{
+}
+
+void Bridge::
+connect_post (Type const&)
+{
+}
+
+void Bridge::
+resource (Type& o)
+{
+// VC6 anathema strikes again
+//
+Bridge::Type::resource_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Bridge::
+resource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Bridge::Type::resource_const_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Bridge::
+resource_pre (Type&)
+{
+}
+
+void Bridge::
+resource_pre (Type const&)
+{
+}
+
+void Bridge::
+resource_next (Type&)
+{
+}
+
+void Bridge::
+resource_next (Type const&)
+{
+}
+
+void Bridge::
+resource_post (Type&)
+{
+}
+
+void Bridge::
+resource_post (Type const&)
+{
+}
+
+void Bridge::
+resource_none (Type&)
+{
+}
+
+void Bridge::
+resource_none (Type const&)
+{
+}
+
+void Bridge::
+post (Type&)
+{
+}
+
+void Bridge::
+post (Type const&)
+{
+}
+
+// Interconnect
+//
+//
+
+void Interconnect::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connection (o);
+connect (o);
+resource (o);
+post (o);
+}
+
+void Interconnect::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connection (o);
+connect (o);
+resource (o);
+post (o);
+}
+
+void Interconnect::
+pre (Type&)
+{
+}
+
+void Interconnect::
+pre (Type const&)
+{
+}
+
+void Interconnect::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Interconnect::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Interconnect::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void Interconnect::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void Interconnect::
+label_none (Type&)
+{
+}
+
+void Interconnect::
+label_none (Type const&)
+{
+}
+
+void Interconnect::
+connection (Type& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::connection_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void Interconnect::
+connection (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::connection_const_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void Interconnect::
+connection_pre (Type&)
+{
+}
+
+void Interconnect::
+connection_pre (Type const&)
+{
+}
+
+void Interconnect::
+connection_next (Type&)
+{
+}
+
+void Interconnect::
+connection_next (Type const&)
+{
+}
+
+void Interconnect::
+connection_post (Type&)
+{
+}
+
+void Interconnect::
+connection_post (Type const&)
+{
+}
+
+void Interconnect::
+connection_none (Type&)
+{
+}
+
+void Interconnect::
+connection_none (Type const&)
+{
+}
+
+void Interconnect::
+connect (Type& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::connect_iterator b (o.begin_connect()), e (o.end_connect());
+
+if (b != e)
+{
+connect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connect_next (o);
+}
+
+connect_post (o);
+}
+}
+
+void Interconnect::
+connect (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::connect_const_iterator b (o.begin_connect()), e (o.end_connect());
+
+if (b != e)
+{
+connect_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connect_next (o);
+}
+
+connect_post (o);
+}
+}
+
+void Interconnect::
+connect_pre (Type&)
+{
+}
+
+void Interconnect::
+connect_pre (Type const&)
+{
+}
+
+void Interconnect::
+connect_next (Type&)
+{
+}
+
+void Interconnect::
+connect_next (Type const&)
+{
+}
+
+void Interconnect::
+connect_post (Type&)
+{
+}
+
+void Interconnect::
+connect_post (Type const&)
+{
+}
+
+void Interconnect::
+resource (Type& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::resource_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Interconnect::
+resource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Interconnect::Type::resource_const_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Interconnect::
+resource_pre (Type&)
+{
+}
+
+void Interconnect::
+resource_pre (Type const&)
+{
+}
+
+void Interconnect::
+resource_next (Type&)
+{
+}
+
+void Interconnect::
+resource_next (Type const&)
+{
+}
+
+void Interconnect::
+resource_post (Type&)
+{
+}
+
+void Interconnect::
+resource_post (Type const&)
+{
+}
+
+void Interconnect::
+resource_none (Type&)
+{
+}
+
+void Interconnect::
+resource_none (Type const&)
+{
+}
+
+void Interconnect::
+post (Type&)
+{
+}
+
+void Interconnect::
+post (Type const&)
+{
+}
+
+// Node
+//
+//
+
+void Node::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connection (o);
+sharedResource (o);
+resource (o);
+post (o);
+}
+
+void Node::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+connection (o);
+sharedResource (o);
+resource (o);
+post (o);
+}
+
+void Node::
+pre (Type&)
+{
+}
+
+void Node::
+pre (Type const&)
+{
+}
+
+void Node::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void Node::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void Node::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void Node::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void Node::
+label_none (Type&)
+{
+}
+
+void Node::
+label_none (Type const&)
+{
+}
+
+void Node::
+connection (Type& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::connection_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void Node::
+connection (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::connection_const_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void Node::
+connection_pre (Type&)
+{
+}
+
+void Node::
+connection_pre (Type const&)
+{
+}
+
+void Node::
+connection_next (Type&)
+{
+}
+
+void Node::
+connection_next (Type const&)
+{
+}
+
+void Node::
+connection_post (Type&)
+{
+}
+
+void Node::
+connection_post (Type const&)
+{
+}
+
+void Node::
+connection_none (Type&)
+{
+}
+
+void Node::
+connection_none (Type const&)
+{
+}
+
+void Node::
+sharedResource (Type& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::sharedResource_iterator b (o.begin_sharedResource()), e (o.end_sharedResource());
+
+if (b != e)
+{
+sharedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) sharedResource_next (o);
+}
+
+sharedResource_post (o);
+}
+
+else sharedResource_none (o);
+}
+
+void Node::
+sharedResource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::sharedResource_const_iterator b (o.begin_sharedResource()), e (o.end_sharedResource());
+
+if (b != e)
+{
+sharedResource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) sharedResource_next (o);
+}
+
+sharedResource_post (o);
+}
+
+else sharedResource_none (o);
+}
+
+void Node::
+sharedResource_pre (Type&)
+{
+}
+
+void Node::
+sharedResource_pre (Type const&)
+{
+}
+
+void Node::
+sharedResource_next (Type&)
+{
+}
+
+void Node::
+sharedResource_next (Type const&)
+{
+}
+
+void Node::
+sharedResource_post (Type&)
+{
+}
+
+void Node::
+sharedResource_post (Type const&)
+{
+}
+
+void Node::
+sharedResource_none (Type&)
+{
+}
+
+void Node::
+sharedResource_none (Type const&)
+{
+}
+
+void Node::
+resource (Type& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::resource_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Node::
+resource (Type const& o)
+{
+// VC6 anathema strikes again
+//
+Node::Type::resource_const_iterator b (o.begin_resource()), e (o.end_resource());
+
+if (b != e)
+{
+resource_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) resource_next (o);
+}
+
+resource_post (o);
+}
+
+else resource_none (o);
+}
+
+void Node::
+resource_pre (Type&)
+{
+}
+
+void Node::
+resource_pre (Type const&)
+{
+}
+
+void Node::
+resource_next (Type&)
+{
+}
+
+void Node::
+resource_next (Type const&)
+{
+}
+
+void Node::
+resource_post (Type&)
+{
+}
+
+void Node::
+resource_post (Type const&)
+{
+}
+
+void Node::
+resource_none (Type&)
+{
+}
+
+void Node::
+resource_none (Type const&)
+{
+}
+
+void Node::
+post (Type&)
+{
+}
+
+void Node::
+post (Type const&)
+{
+}
+
+// SharedResource
+//
+//
+
+void SharedResource::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+node (o);
+property (o);
+post (o);
+}
+
+void SharedResource::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+resourceType (o);
+node (o);
+property (o);
+post (o);
+}
+
+void SharedResource::
+pre (Type&)
+{
+}
+
+void SharedResource::
+pre (Type const&)
+{
+}
+
+void SharedResource::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void SharedResource::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void SharedResource::
+resourceType (Type& o)
+{
+dispatch (o.resourceType ());
+}
+
+void SharedResource::
+resourceType (Type const& o)
+{
+dispatch (o.resourceType ());
+}
+
+void SharedResource::
+node (Type& o)
+{
+dispatch (o.node ());
+}
+
+void SharedResource::
+node (Type const& o)
+{
+dispatch (o.node ());
+}
+
+void SharedResource::
+property (Type& o)
+{
+dispatch (o.property ());
+}
+
+void SharedResource::
+property (Type const& o)
+{
+dispatch (o.property ());
+}
+
+void SharedResource::
+post (Type&)
+{
+}
+
+void SharedResource::
+post (Type const&)
+{
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+// Domain
+//
+//
+
+Domain::
+Domain (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Domain::
+Domain ()
+{
+}
+
+void Domain::
+traverse (Type const& o)
+{
+Traversal::Domain::traverse (o);
+}
+
+void Domain::
+UUID (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+Traversal::Domain::UUID (o);
+pop_ ();
+}
+
+void Domain::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::Domain::label (o);
+pop_ ();
+}
+
+void Domain::
+node_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("node", top_ ()));
+}
+
+void Domain::
+node_next (Type const& o)
+{
+node_post (o);
+node_pre (o);
+}
+
+void Domain::
+node_post (Type const&)
+{
+pop_ ();
+}
+
+void Domain::
+interconnect_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("interconnect", top_ ()));
+}
+
+void Domain::
+interconnect_next (Type const& o)
+{
+interconnect_post (o);
+interconnect_pre (o);
+}
+
+void Domain::
+interconnect_post (Type const&)
+{
+pop_ ();
+}
+
+void Domain::
+bridge_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("bridge", top_ ()));
+}
+
+void Domain::
+bridge_next (Type const& o)
+{
+bridge_post (o);
+bridge_pre (o);
+}
+
+void Domain::
+bridge_post (Type const&)
+{
+pop_ ();
+}
+
+void Domain::
+sharedResource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("sharedResource", top_ ()));
+}
+
+void Domain::
+sharedResource_next (Type const& o)
+{
+sharedResource_post (o);
+sharedResource_pre (o);
+}
+
+void Domain::
+sharedResource_post (Type const&)
+{
+pop_ ();
+}
+
+void Domain::
+infoProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+}
+
+void Domain::
+infoProperty_next (Type const& o)
+{
+infoProperty_post (o);
+infoProperty_pre (o);
+}
+
+void Domain::
+infoProperty_post (Type const&)
+{
+pop_ ();
+}
+
+// Bridge
+//
+//
+
+Bridge::
+Bridge (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Bridge::
+Bridge ()
+{
+}
+
+void Bridge::
+traverse (Type const& o)
+{
+Traversal::Bridge::traverse (o);
+}
+
+void Bridge::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Bridge::name (o);
+pop_ ();
+}
+
+void Bridge::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::Bridge::label (o);
+pop_ ();
+}
+
+void Bridge::
+connect_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connect", top_ ()));
+}
+
+void Bridge::
+connect_next (Type const& o)
+{
+connect_post (o);
+connect_pre (o);
+}
+
+void Bridge::
+connect_post (Type const&)
+{
+pop_ ();
+}
+
+void Bridge::
+resource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resource", top_ ()));
+}
+
+void Bridge::
+resource_next (Type const& o)
+{
+resource_post (o);
+resource_pre (o);
+}
+
+void Bridge::
+resource_post (Type const&)
+{
+pop_ ();
+}
+
+// Interconnect
+//
+//
+
+Interconnect::
+Interconnect (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Interconnect::
+Interconnect ()
+{
+}
+
+void Interconnect::
+traverse (Type const& o)
+{
+Traversal::Interconnect::traverse (o);
+}
+
+void Interconnect::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Interconnect::name (o);
+pop_ ();
+}
+
+void Interconnect::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::Interconnect::label (o);
+pop_ ();
+}
+
+void Interconnect::
+connection_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connection", top_ ()));
+}
+
+void Interconnect::
+connection_next (Type const& o)
+{
+connection_post (o);
+connection_pre (o);
+}
+
+void Interconnect::
+connection_post (Type const&)
+{
+pop_ ();
+}
+
+void Interconnect::
+connect_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connect", top_ ()));
+}
+
+void Interconnect::
+connect_next (Type const& o)
+{
+connect_post (o);
+connect_pre (o);
+}
+
+void Interconnect::
+connect_post (Type const&)
+{
+pop_ ();
+}
+
+void Interconnect::
+resource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resource", top_ ()));
+}
+
+void Interconnect::
+resource_next (Type const& o)
+{
+resource_post (o);
+resource_pre (o);
+}
+
+void Interconnect::
+resource_post (Type const&)
+{
+pop_ ();
+}
+
+// Node
+//
+//
+
+Node::
+Node (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+Node::
+Node ()
+{
+}
+
+void Node::
+traverse (Type const& o)
+{
+Traversal::Node::traverse (o);
+}
+
+void Node::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::Node::name (o);
+pop_ ();
+}
+
+void Node::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::Node::label (o);
+pop_ ();
+}
+
+void Node::
+connection_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connection", top_ ()));
+}
+
+void Node::
+connection_next (Type const& o)
+{
+connection_post (o);
+connection_pre (o);
+}
+
+void Node::
+connection_post (Type const&)
+{
+pop_ ();
+}
+
+void Node::
+sharedResource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("sharedResource", top_ ()));
+}
+
+void Node::
+sharedResource_next (Type const& o)
+{
+sharedResource_post (o);
+sharedResource_pre (o);
+}
+
+void Node::
+sharedResource_post (Type const&)
+{
+pop_ ();
+}
+
+void Node::
+resource_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resource", top_ ()));
+}
+
+void Node::
+resource_next (Type const& o)
+{
+resource_post (o);
+resource_pre (o);
+}
+
+void Node::
+resource_post (Type const&)
+{
+pop_ ();
+}
+
+// SharedResource
+//
+//
+
+SharedResource::
+SharedResource (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SharedResource::
+SharedResource ()
+{
+}
+
+void SharedResource::
+traverse (Type const& o)
+{
+Traversal::SharedResource::traverse (o);
+}
+
+void SharedResource::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::SharedResource::name (o);
+pop_ ();
+}
+
+void SharedResource::
+resourceType (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("resourceType", top_ ()));
+Traversal::SharedResource::resourceType (o);
+pop_ ();
+}
+
+void SharedResource::
+node (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("node", top_ ()));
+Traversal::SharedResource::node (o);
+pop_ ();
+}
+
+void SharedResource::
+property (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("property", top_ ()));
+Traversal::SharedResource::property (o);
+pop_ ();
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/cdd.hpp b/modules/CIAO/tools/Config_Handlers/cdd.hpp
new file mode 100644
index 00000000000..f2e599d1b9d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cdd.hpp
@@ -0,0 +1,1735 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef CDD_HPP
+#define CDD_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class Domain;
+class Bridge;
+class Interconnect;
+class Node;
+class SharedResource;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export Domain : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// node
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Node >::iterator node_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Node >::const_iterator node_const_iterator;
+node_iterator begin_node ();
+node_iterator end_node ();
+node_const_iterator begin_node () const;
+node_const_iterator end_node () const;
+void add_node (::CIAO::Config_Handlers::Node const& );
+size_t count_node (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Node > node_;
+
+// interconnect
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::iterator interconnect_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::const_iterator interconnect_const_iterator;
+interconnect_iterator begin_interconnect ();
+interconnect_iterator end_interconnect ();
+interconnect_const_iterator begin_interconnect () const;
+interconnect_const_iterator end_interconnect () const;
+void add_interconnect (::CIAO::Config_Handlers::Interconnect const& );
+size_t count_interconnect (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Interconnect > interconnect_;
+
+// bridge
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Bridge >::iterator bridge_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Bridge >::const_iterator bridge_const_iterator;
+bridge_iterator begin_bridge ();
+bridge_iterator end_bridge ();
+bridge_const_iterator begin_bridge () const;
+bridge_const_iterator end_bridge () const;
+void add_bridge (::CIAO::Config_Handlers::Bridge const& );
+size_t count_bridge (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Bridge > bridge_;
+
+// sharedResource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SharedResource >::iterator sharedResource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SharedResource >::const_iterator sharedResource_const_iterator;
+sharedResource_iterator begin_sharedResource ();
+sharedResource_iterator end_sharedResource ();
+sharedResource_const_iterator begin_sharedResource () const;
+sharedResource_const_iterator end_sharedResource () const;
+void add_sharedResource (::CIAO::Config_Handlers::SharedResource const& );
+size_t count_sharedResource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SharedResource > sharedResource_;
+
+// infoProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+infoProperty_iterator begin_infoProperty ();
+infoProperty_iterator end_infoProperty ();
+infoProperty_const_iterator begin_infoProperty () const;
+infoProperty_const_iterator end_infoProperty () const;
+void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_infoProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+public:
+Domain ();
+
+Domain (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Domain (Domain const& s);
+
+Domain&
+operator= (Domain const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Bridge : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// connect
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::iterator connect_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::const_iterator connect_const_iterator;
+connect_iterator begin_connect ();
+connect_iterator end_connect ();
+connect_const_iterator begin_connect () const;
+connect_const_iterator end_connect () const;
+void add_connect (::CIAO::Config_Handlers::Interconnect const& );
+size_t count_connect (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Interconnect > connect_;
+
+// resource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::iterator resource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::const_iterator resource_const_iterator;
+resource_iterator begin_resource ();
+resource_iterator end_resource ();
+resource_const_iterator begin_resource () const;
+resource_const_iterator end_resource () const;
+void add_resource (::CIAO::Config_Handlers::Resource const& );
+size_t count_resource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Resource > resource_;
+
+public:
+Bridge (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Bridge (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Bridge (Bridge const& s);
+
+Bridge&
+operator= (Bridge const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Interconnect : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// connection
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Bridge >::iterator connection_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Bridge >::const_iterator connection_const_iterator;
+connection_iterator begin_connection ();
+connection_iterator end_connection ();
+connection_const_iterator begin_connection () const;
+connection_const_iterator end_connection () const;
+void add_connection (::CIAO::Config_Handlers::Bridge const& );
+size_t count_connection (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Bridge > connection_;
+
+// connect
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Node >::iterator connect_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Node >::const_iterator connect_const_iterator;
+connect_iterator begin_connect ();
+connect_iterator end_connect ();
+connect_const_iterator begin_connect () const;
+connect_const_iterator end_connect () const;
+void add_connect (::CIAO::Config_Handlers::Node const& );
+size_t count_connect (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Node > connect_;
+
+// resource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::iterator resource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::const_iterator resource_const_iterator;
+resource_iterator begin_resource ();
+resource_iterator end_resource ();
+resource_const_iterator begin_resource () const;
+resource_const_iterator end_resource () const;
+void add_resource (::CIAO::Config_Handlers::Resource const& );
+size_t count_resource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Resource > resource_;
+
+public:
+Interconnect (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Interconnect (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Interconnect (Interconnect const& s);
+
+Interconnect&
+operator= (Interconnect const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export Node : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// connection
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::iterator connection_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Interconnect >::const_iterator connection_const_iterator;
+connection_iterator begin_connection ();
+connection_iterator end_connection ();
+connection_const_iterator begin_connection () const;
+connection_const_iterator end_connection () const;
+void add_connection (::CIAO::Config_Handlers::Interconnect const& );
+size_t count_connection (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Interconnect > connection_;
+
+// sharedResource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SharedResource >::iterator sharedResource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SharedResource >::const_iterator sharedResource_const_iterator;
+sharedResource_iterator begin_sharedResource ();
+sharedResource_iterator end_sharedResource ();
+sharedResource_const_iterator begin_sharedResource () const;
+sharedResource_const_iterator end_sharedResource () const;
+void add_sharedResource (::CIAO::Config_Handlers::SharedResource const& );
+size_t count_sharedResource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SharedResource > sharedResource_;
+
+// resource
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::iterator resource_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Resource >::const_iterator resource_const_iterator;
+resource_iterator begin_resource ();
+resource_iterator end_resource ();
+resource_const_iterator begin_resource () const;
+resource_const_iterator end_resource () const;
+void add_resource (::CIAO::Config_Handlers::Resource const& );
+size_t count_resource (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Resource > resource_;
+
+public:
+Node (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+Node (::XSCRT::XML::Element< ACE_TCHAR > const&);
+Node (Node const& s);
+
+Node&
+operator= (Node const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export SharedResource : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// resourceType
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& resourceType () const;
+void resourceType (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > resourceType_;
+
+// node
+//
+public:
+::CIAO::Config_Handlers::Node const& node () const;
+void node (::CIAO::Config_Handlers::Node const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::Node > node_;
+
+// property
+//
+public:
+::CIAO::Config_Handlers::SatisfierProperty const& property () const;
+void property (::CIAO::Config_Handlers::SatisfierProperty const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::SatisfierProperty > property_;
+
+public:
+SharedResource (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& resourceType__,
+::CIAO::Config_Handlers::Node const& node__,
+::CIAO::Config_Handlers::SatisfierProperty const& property__);
+
+SharedResource (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SharedResource (SharedResource const& s);
+
+SharedResource&
+operator= (SharedResource const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export Domain : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Domain >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+node (Type&);
+
+virtual void
+node (Type const&);
+
+virtual void
+node_pre (Type&);
+
+virtual void
+node_pre (Type const&);
+
+virtual void
+node_next (Type&);
+
+virtual void
+node_next (Type const&);
+
+virtual void
+node_post (Type&);
+
+virtual void
+node_post (Type const&);
+
+virtual void
+interconnect (Type&);
+
+virtual void
+interconnect (Type const&);
+
+virtual void
+interconnect_pre (Type&);
+
+virtual void
+interconnect_pre (Type const&);
+
+virtual void
+interconnect_next (Type&);
+
+virtual void
+interconnect_next (Type const&);
+
+virtual void
+interconnect_post (Type&);
+
+virtual void
+interconnect_post (Type const&);
+
+virtual void
+interconnect_none (Type&);
+
+virtual void
+interconnect_none (Type const&);
+
+virtual void
+bridge (Type&);
+
+virtual void
+bridge (Type const&);
+
+virtual void
+bridge_pre (Type&);
+
+virtual void
+bridge_pre (Type const&);
+
+virtual void
+bridge_next (Type&);
+
+virtual void
+bridge_next (Type const&);
+
+virtual void
+bridge_post (Type&);
+
+virtual void
+bridge_post (Type const&);
+
+virtual void
+bridge_none (Type&);
+
+virtual void
+bridge_none (Type const&);
+
+virtual void
+sharedResource (Type&);
+
+virtual void
+sharedResource (Type const&);
+
+virtual void
+sharedResource_pre (Type&);
+
+virtual void
+sharedResource_pre (Type const&);
+
+virtual void
+sharedResource_next (Type&);
+
+virtual void
+sharedResource_next (Type const&);
+
+virtual void
+sharedResource_post (Type&);
+
+virtual void
+sharedResource_post (Type const&);
+
+virtual void
+sharedResource_none (Type&);
+
+virtual void
+sharedResource_none (Type const&);
+
+virtual void
+infoProperty (Type&);
+
+virtual void
+infoProperty (Type const&);
+
+virtual void
+infoProperty_pre (Type&);
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type&);
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type&);
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+infoProperty_none (Type&);
+
+virtual void
+infoProperty_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Bridge : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Bridge >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+connect (Type&);
+
+virtual void
+connect (Type const&);
+
+virtual void
+connect_pre (Type&);
+
+virtual void
+connect_pre (Type const&);
+
+virtual void
+connect_next (Type&);
+
+virtual void
+connect_next (Type const&);
+
+virtual void
+connect_post (Type&);
+
+virtual void
+connect_post (Type const&);
+
+virtual void
+resource (Type&);
+
+virtual void
+resource (Type const&);
+
+virtual void
+resource_pre (Type&);
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type&);
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type&);
+
+virtual void
+resource_post (Type const&);
+
+virtual void
+resource_none (Type&);
+
+virtual void
+resource_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Interconnect : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Interconnect >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+connection (Type&);
+
+virtual void
+connection (Type const&);
+
+virtual void
+connection_pre (Type&);
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type&);
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type&);
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+connection_none (Type&);
+
+virtual void
+connection_none (Type const&);
+
+virtual void
+connect (Type&);
+
+virtual void
+connect (Type const&);
+
+virtual void
+connect_pre (Type&);
+
+virtual void
+connect_pre (Type const&);
+
+virtual void
+connect_next (Type&);
+
+virtual void
+connect_next (Type const&);
+
+virtual void
+connect_post (Type&);
+
+virtual void
+connect_post (Type const&);
+
+virtual void
+resource (Type&);
+
+virtual void
+resource (Type const&);
+
+virtual void
+resource_pre (Type&);
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type&);
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type&);
+
+virtual void
+resource_post (Type const&);
+
+virtual void
+resource_none (Type&);
+
+virtual void
+resource_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export Node : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::Node >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+connection (Type&);
+
+virtual void
+connection (Type const&);
+
+virtual void
+connection_pre (Type&);
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type&);
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type&);
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+connection_none (Type&);
+
+virtual void
+connection_none (Type const&);
+
+virtual void
+sharedResource (Type&);
+
+virtual void
+sharedResource (Type const&);
+
+virtual void
+sharedResource_pre (Type&);
+
+virtual void
+sharedResource_pre (Type const&);
+
+virtual void
+sharedResource_next (Type&);
+
+virtual void
+sharedResource_next (Type const&);
+
+virtual void
+sharedResource_post (Type&);
+
+virtual void
+sharedResource_post (Type const&);
+
+virtual void
+sharedResource_none (Type&);
+
+virtual void
+sharedResource_none (Type const&);
+
+virtual void
+resource (Type&);
+
+virtual void
+resource (Type const&);
+
+virtual void
+resource_pre (Type&);
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type&);
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type&);
+
+virtual void
+resource_post (Type const&);
+
+virtual void
+resource_none (Type&);
+
+virtual void
+resource_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export SharedResource : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SharedResource >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType (Type&);
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+node (Type&);
+
+virtual void
+node (Type const&);
+
+virtual void
+property (Type&);
+
+virtual void
+property (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct Domain : Traversal::Domain,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Domain Type;
+Domain (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+node_pre (Type &o)
+{
+
+this->node_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node_pre (Type const&);
+
+virtual void
+node_next (Type &o)
+{
+
+this->node_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node_next (Type const&);
+
+virtual void
+node_post (Type &o)
+{
+
+this->node_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node_post (Type const&);
+
+virtual void
+interconnect_pre (Type &o)
+{
+
+this->interconnect_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+interconnect_pre (Type const&);
+
+virtual void
+interconnect_next (Type &o)
+{
+
+this->interconnect_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+interconnect_next (Type const&);
+
+virtual void
+interconnect_post (Type &o)
+{
+
+this->interconnect_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+interconnect_post (Type const&);
+
+virtual void
+bridge_pre (Type &o)
+{
+
+this->bridge_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+bridge_pre (Type const&);
+
+virtual void
+bridge_next (Type &o)
+{
+
+this->bridge_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+bridge_next (Type const&);
+
+virtual void
+bridge_post (Type &o)
+{
+
+this->bridge_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+bridge_post (Type const&);
+
+virtual void
+sharedResource_pre (Type &o)
+{
+
+this->sharedResource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_pre (Type const&);
+
+virtual void
+sharedResource_next (Type &o)
+{
+
+this->sharedResource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_next (Type const&);
+
+virtual void
+sharedResource_post (Type &o)
+{
+
+this->sharedResource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_post (Type const&);
+
+virtual void
+infoProperty_pre (Type &o)
+{
+
+this->infoProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type &o)
+{
+
+this->infoProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type &o)
+{
+
+this->infoProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_post (Type const&);
+
+protected:
+Domain ();
+};
+
+struct Bridge : Traversal::Bridge,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Bridge Type;
+Bridge (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+connect_pre (Type &o)
+{
+
+this->connect_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_pre (Type const&);
+
+virtual void
+connect_next (Type &o)
+{
+
+this->connect_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_next (Type const&);
+
+virtual void
+connect_post (Type &o)
+{
+
+this->connect_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_post (Type const&);
+
+virtual void
+resource_pre (Type &o)
+{
+
+this->resource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type &o)
+{
+
+this->resource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type &o)
+{
+
+this->resource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_post (Type const&);
+
+protected:
+Bridge ();
+};
+
+struct Interconnect : Traversal::Interconnect,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Interconnect Type;
+Interconnect (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+connection_pre (Type &o)
+{
+
+this->connection_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type &o)
+{
+
+this->connection_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type &o)
+{
+
+this->connection_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+connect_pre (Type &o)
+{
+
+this->connect_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_pre (Type const&);
+
+virtual void
+connect_next (Type &o)
+{
+
+this->connect_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_next (Type const&);
+
+virtual void
+connect_post (Type &o)
+{
+
+this->connect_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connect_post (Type const&);
+
+virtual void
+resource_pre (Type &o)
+{
+
+this->resource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type &o)
+{
+
+this->resource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type &o)
+{
+
+this->resource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_post (Type const&);
+
+protected:
+Interconnect ();
+};
+
+struct Node : Traversal::Node,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::Node Type;
+Node (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+connection_pre (Type &o)
+{
+
+this->connection_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type &o)
+{
+
+this->connection_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type &o)
+{
+
+this->connection_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+sharedResource_pre (Type &o)
+{
+
+this->sharedResource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_pre (Type const&);
+
+virtual void
+sharedResource_next (Type &o)
+{
+
+this->sharedResource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_next (Type const&);
+
+virtual void
+sharedResource_post (Type &o)
+{
+
+this->sharedResource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+sharedResource_post (Type const&);
+
+virtual void
+resource_pre (Type &o)
+{
+
+this->resource_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_pre (Type const&);
+
+virtual void
+resource_next (Type &o)
+{
+
+this->resource_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_next (Type const&);
+
+virtual void
+resource_post (Type &o)
+{
+
+this->resource_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resource_post (Type const&);
+
+protected:
+Node ();
+};
+
+struct SharedResource : Traversal::SharedResource,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::SharedResource Type;
+SharedResource (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+resourceType (Type &o)
+{
+
+this->resourceType (const_cast <Type const &> (o));
+}
+
+
+virtual void
+resourceType (Type const&);
+
+virtual void
+node (Type &o)
+{
+
+this->node (const_cast <Type const &> (o));
+}
+
+
+virtual void
+node (Type const&);
+
+virtual void
+property (Type &o)
+{
+
+this->property (const_cast <Type const &> (o));
+}
+
+
+virtual void
+property (Type const&);
+
+protected:
+SharedResource ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // CDD_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/cdp.cpp b/modules/CIAO/tools/Config_Handlers/cdp.cpp
new file mode 100644
index 00000000000..0ba7c13577d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cdp.cpp
@@ -0,0 +1,1345 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "cdp.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // DeploymentPlan
+ //
+
+ DeploymentPlan::
+ DeploymentPlan ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ DeploymentPlan::
+ DeploymentPlan (::CIAO::Config_Handlers::DeploymentPlan const& s)
+ :
+ ::XSCRT::Type (),
+ label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+ UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+ realizes_ (s.realizes_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.realizes_) : 0),
+ regulator__ ()
+ {
+ if (label_.get ()) label_->container (this);
+ if (UUID_.get ()) UUID_->container (this);
+ if (realizes_.get ()) realizes_->container (this);
+ {
+ for (implementation_const_iterator i (s.implementation_.begin ());i != s.implementation_.end ();++i) add_implementation (*i);
+ }
+
+ {
+ for (instance_const_iterator i (s.instance_.begin ());i != s.instance_.end ();++i) add_instance (*i);
+ }
+
+ {
+ for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+ }
+
+ {
+ for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+ }
+
+ {
+ for (artifact_const_iterator i (s.artifact_.begin ());i != s.artifact_.end ();++i) add_artifact (*i);
+ }
+
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::DeploymentPlan& DeploymentPlan::
+ operator= (::CIAO::Config_Handlers::DeploymentPlan const& s)
+ {
+ if (s.label_.get ()) label (*(s.label_));
+ else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.UUID_.get ()) UUID (*(s.UUID_));
+ else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.realizes_.get ()) realizes (*(s.realizes_));
+ else realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (0);
+
+ implementation_.clear ();
+ {
+ for (implementation_const_iterator i (s.implementation_.begin ());i != s.implementation_.end ();++i) add_implementation (*i);
+ }
+
+ instance_.clear ();
+ {
+ for (instance_const_iterator i (s.instance_.begin ());i != s.instance_.end ();++i) add_instance (*i);
+ }
+
+ connection_.clear ();
+ {
+ for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+ }
+
+ dependsOn_.clear ();
+ {
+ for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+ }
+
+ artifact_.clear ();
+ {
+ for (artifact_const_iterator i (s.artifact_.begin ());i != s.artifact_.end ();++i) add_artifact (*i);
+ }
+
+ infoProperty_.clear ();
+ {
+ for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+ }
+
+ return *this;
+ }
+
+
+ // DeploymentPlan
+ //
+ bool DeploymentPlan::
+ label_p () const
+ {
+ return label_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& DeploymentPlan::
+ label () const
+ {
+ return *label_;
+ }
+
+ void DeploymentPlan::
+ label (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (label_.get ())
+ {
+ *label_ = e;
+ }
+
+ else
+ {
+ label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ label_->container (this);
+ }
+ }
+
+ // DeploymentPlan
+ //
+ bool DeploymentPlan::
+ UUID_p () const
+ {
+ return UUID_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& DeploymentPlan::
+ UUID () const
+ {
+ return *UUID_;
+ }
+
+ void DeploymentPlan::
+ UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (UUID_.get ())
+ {
+ *UUID_ = e;
+ }
+
+ else
+ {
+ UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ UUID_->container (this);
+ }
+ }
+
+ // DeploymentPlan
+ //
+ bool DeploymentPlan::
+ realizes_p () const
+ {
+ return realizes_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription const& DeploymentPlan::
+ realizes () const
+ {
+ return *realizes_;
+ }
+
+ void DeploymentPlan::
+ realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e)
+ {
+ if (realizes_.get ())
+ {
+ *realizes_ = e;
+ }
+
+ else
+ {
+ realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e));
+ realizes_->container (this);
+ }
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::implementation_iterator DeploymentPlan::
+ begin_implementation ()
+ {
+ return implementation_.begin ();
+ }
+
+ DeploymentPlan::implementation_iterator DeploymentPlan::
+ end_implementation ()
+ {
+ return implementation_.end ();
+ }
+
+ DeploymentPlan::implementation_const_iterator DeploymentPlan::
+ begin_implementation () const
+ {
+ return implementation_.begin ();
+ }
+
+ DeploymentPlan::implementation_const_iterator DeploymentPlan::
+ end_implementation () const
+ {
+ return implementation_.end ();
+ }
+
+ void DeploymentPlan::
+ add_implementation (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& e)
+ {
+ implementation_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_implementation(void) const
+ {
+ return implementation_.size ();
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::instance_iterator DeploymentPlan::
+ begin_instance ()
+ {
+ return instance_.begin ();
+ }
+
+ DeploymentPlan::instance_iterator DeploymentPlan::
+ end_instance ()
+ {
+ return instance_.end ();
+ }
+
+ DeploymentPlan::instance_const_iterator DeploymentPlan::
+ begin_instance () const
+ {
+ return instance_.begin ();
+ }
+
+ DeploymentPlan::instance_const_iterator DeploymentPlan::
+ end_instance () const
+ {
+ return instance_.end ();
+ }
+
+ void DeploymentPlan::
+ add_instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& e)
+ {
+ instance_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_instance(void) const
+ {
+ return instance_.size ();
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::connection_iterator DeploymentPlan::
+ begin_connection ()
+ {
+ return connection_.begin ();
+ }
+
+ DeploymentPlan::connection_iterator DeploymentPlan::
+ end_connection ()
+ {
+ return connection_.end ();
+ }
+
+ DeploymentPlan::connection_const_iterator DeploymentPlan::
+ begin_connection () const
+ {
+ return connection_.begin ();
+ }
+
+ DeploymentPlan::connection_const_iterator DeploymentPlan::
+ end_connection () const
+ {
+ return connection_.end ();
+ }
+
+ void DeploymentPlan::
+ add_connection (::CIAO::Config_Handlers::PlanConnectionDescription const& e)
+ {
+ connection_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_connection(void) const
+ {
+ return connection_.size ();
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::dependsOn_iterator DeploymentPlan::
+ begin_dependsOn ()
+ {
+ return dependsOn_.begin ();
+ }
+
+ DeploymentPlan::dependsOn_iterator DeploymentPlan::
+ end_dependsOn ()
+ {
+ return dependsOn_.end ();
+ }
+
+ DeploymentPlan::dependsOn_const_iterator DeploymentPlan::
+ begin_dependsOn () const
+ {
+ return dependsOn_.begin ();
+ }
+
+ DeploymentPlan::dependsOn_const_iterator DeploymentPlan::
+ end_dependsOn () const
+ {
+ return dependsOn_.end ();
+ }
+
+ void DeploymentPlan::
+ add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& e)
+ {
+ dependsOn_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_dependsOn(void) const
+ {
+ return dependsOn_.size ();
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::artifact_iterator DeploymentPlan::
+ begin_artifact ()
+ {
+ return artifact_.begin ();
+ }
+
+ DeploymentPlan::artifact_iterator DeploymentPlan::
+ end_artifact ()
+ {
+ return artifact_.end ();
+ }
+
+ DeploymentPlan::artifact_const_iterator DeploymentPlan::
+ begin_artifact () const
+ {
+ return artifact_.begin ();
+ }
+
+ DeploymentPlan::artifact_const_iterator DeploymentPlan::
+ end_artifact () const
+ {
+ return artifact_.end ();
+ }
+
+ void DeploymentPlan::
+ add_artifact (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& e)
+ {
+ artifact_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_artifact(void) const
+ {
+ return artifact_.size ();
+ }
+
+ // DeploymentPlan
+ //
+ DeploymentPlan::infoProperty_iterator DeploymentPlan::
+ begin_infoProperty ()
+ {
+ return infoProperty_.begin ();
+ }
+
+ DeploymentPlan::infoProperty_iterator DeploymentPlan::
+ end_infoProperty ()
+ {
+ return infoProperty_.end ();
+ }
+
+ DeploymentPlan::infoProperty_const_iterator DeploymentPlan::
+ begin_infoProperty () const
+ {
+ return infoProperty_.begin ();
+ }
+
+ DeploymentPlan::infoProperty_const_iterator DeploymentPlan::
+ end_infoProperty () const
+ {
+ return infoProperty_.end ();
+ }
+
+ void DeploymentPlan::
+ add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ infoProperty_.push_back (e);
+ }
+
+ size_t DeploymentPlan::
+ count_infoProperty(void) const
+ {
+ return infoProperty_.size ();
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // DeploymentPlan
+ //
+
+ DeploymentPlan::
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "label")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ label (t);
+ }
+
+ else if (n == "UUID")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ UUID (t);
+ }
+
+ else if (n == "realizes")
+ {
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription t (e);
+ realizes (t);
+ }
+
+ else if (n == "implementation")
+ {
+ ::CIAO::Config_Handlers::MonolithicDeploymentDescription t (e);
+ add_implementation (t);
+ }
+
+ else if (n == "instance")
+ {
+ ::CIAO::Config_Handlers::InstanceDeploymentDescription t (e);
+ add_instance (t);
+ }
+
+ else if (n == "connection")
+ {
+ ::CIAO::Config_Handlers::PlanConnectionDescription t (e);
+ add_connection (t);
+ }
+
+ else if (n == "dependsOn")
+ {
+ ::CIAO::Config_Handlers::ImplementationDependency t (e);
+ add_dependsOn (t);
+ }
+
+ else if (n == "artifact")
+ {
+ ::CIAO::Config_Handlers::ArtifactDeploymentDescription t (e);
+ add_artifact (t);
+ }
+
+ else if (n == "infoProperty")
+ {
+ ::CIAO::Config_Handlers::Property t (e);
+ add_infoProperty (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+ struct DeploymentPlanTypeInfoInitializer
+ {
+ DeploymentPlanTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (DeploymentPlan));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ DeploymentPlanTypeInfoInitializer DeploymentPlanTypeInfoInitializer_;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ // DeploymentPlan
+ //
+ //
+
+ void DeploymentPlan::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.realizes_p ()) realizes (o);
+ else realizes_none (o);
+ implementation (o);
+ instance (o);
+ connection (o);
+ dependsOn (o);
+ artifact (o);
+ infoProperty (o);
+ post (o);
+ }
+
+ void DeploymentPlan::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.realizes_p ()) realizes (o);
+ else realizes_none (o);
+ implementation (o);
+ instance (o);
+ connection (o);
+ dependsOn (o);
+ artifact (o);
+ infoProperty (o);
+ post (o);
+ }
+
+ void DeploymentPlan::
+ pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ label (Type& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void DeploymentPlan::
+ label (Type const& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void DeploymentPlan::
+ label_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ label_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ UUID (Type& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void DeploymentPlan::
+ UUID (Type const& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void DeploymentPlan::
+ UUID_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ UUID_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ realizes (Type& o)
+ {
+ dispatch (o.realizes ());
+ }
+
+ void DeploymentPlan::
+ realizes (Type const& o)
+ {
+ dispatch (o.realizes ());
+ }
+
+ void DeploymentPlan::
+ realizes_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ realizes_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::implementation_iterator b (o.begin_implementation()), e (o.end_implementation());
+
+ if (b != e)
+ {
+ implementation_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) implementation_next (o);
+ }
+
+ implementation_post (o);
+ }
+ }
+
+ void DeploymentPlan::
+ implementation (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::implementation_const_iterator b (o.begin_implementation()), e (o.end_implementation());
+
+ if (b != e)
+ {
+ implementation_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) implementation_next (o);
+ }
+
+ implementation_post (o);
+ }
+ }
+
+ void DeploymentPlan::
+ implementation_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ implementation_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::instance_iterator b (o.begin_instance()), e (o.end_instance());
+
+ if (b != e)
+ {
+ instance_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) instance_next (o);
+ }
+
+ instance_post (o);
+ }
+
+ else instance_none (o);
+ }
+
+ void DeploymentPlan::
+ instance (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::instance_const_iterator b (o.begin_instance()), e (o.end_instance());
+
+ if (b != e)
+ {
+ instance_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) instance_next (o);
+ }
+
+ instance_post (o);
+ }
+
+ else instance_none (o);
+ }
+
+ void DeploymentPlan::
+ instance_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ instance_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::connection_iterator b (o.begin_connection()), e (o.end_connection());
+
+ if (b != e)
+ {
+ connection_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) connection_next (o);
+ }
+
+ connection_post (o);
+ }
+
+ else connection_none (o);
+ }
+
+ void DeploymentPlan::
+ connection (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::connection_const_iterator b (o.begin_connection()), e (o.end_connection());
+
+ if (b != e)
+ {
+ connection_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) connection_next (o);
+ }
+
+ connection_post (o);
+ }
+
+ else connection_none (o);
+ }
+
+ void DeploymentPlan::
+ connection_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ connection_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+ if (b != e)
+ {
+ dependsOn_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) dependsOn_next (o);
+ }
+
+ dependsOn_post (o);
+ }
+
+ else dependsOn_none (o);
+ }
+
+ void DeploymentPlan::
+ dependsOn (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+ if (b != e)
+ {
+ dependsOn_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) dependsOn_next (o);
+ }
+
+ dependsOn_post (o);
+ }
+
+ else dependsOn_none (o);
+ }
+
+ void DeploymentPlan::
+ dependsOn_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ dependsOn_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::artifact_iterator b (o.begin_artifact()), e (o.end_artifact());
+
+ if (b != e)
+ {
+ artifact_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) artifact_next (o);
+ }
+
+ artifact_post (o);
+ }
+
+ else artifact_none (o);
+ }
+
+ void DeploymentPlan::
+ artifact (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::artifact_const_iterator b (o.begin_artifact()), e (o.end_artifact());
+
+ if (b != e)
+ {
+ artifact_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) artifact_next (o);
+ }
+
+ artifact_post (o);
+ }
+
+ else artifact_none (o);
+ }
+
+ void DeploymentPlan::
+ artifact_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ artifact_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+ if (b != e)
+ {
+ infoProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) infoProperty_next (o);
+ }
+
+ infoProperty_post (o);
+ }
+
+ else infoProperty_none (o);
+ }
+
+ void DeploymentPlan::
+ infoProperty (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ DeploymentPlan::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+ if (b != e)
+ {
+ infoProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) infoProperty_next (o);
+ }
+
+ infoProperty_post (o);
+ }
+
+ else infoProperty_none (o);
+ }
+
+ void DeploymentPlan::
+ infoProperty_pre (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_pre (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_next (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_next (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_post (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_none (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ infoProperty_none (Type const&)
+ {
+ }
+
+ void DeploymentPlan::
+ post (Type&)
+ {
+ }
+
+ void DeploymentPlan::
+ post (Type const&)
+ {
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ // DeploymentPlan
+ //
+ //
+
+ DeploymentPlan::
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ DeploymentPlan::
+ DeploymentPlan ()
+ {
+ }
+
+ void DeploymentPlan::
+ traverse (Type const& o)
+ {
+ Traversal::DeploymentPlan::traverse (o);
+ }
+
+ void DeploymentPlan::
+ label (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+ Traversal::DeploymentPlan::label (o);
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ UUID (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+ Traversal::DeploymentPlan::UUID (o);
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ realizes (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("realizes", top_ ()));
+ Traversal::DeploymentPlan::realizes (o);
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ implementation_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("implementation", top_ ()));
+ }
+
+ void DeploymentPlan::
+ implementation_next (Type const& o)
+ {
+ implementation_post (o);
+ implementation_pre (o);
+ }
+
+ void DeploymentPlan::
+ implementation_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ instance_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("instance", top_ ()));
+ }
+
+ void DeploymentPlan::
+ instance_next (Type const& o)
+ {
+ instance_post (o);
+ instance_pre (o);
+ }
+
+ void DeploymentPlan::
+ instance_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ connection_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connection", top_ ()));
+ }
+
+ void DeploymentPlan::
+ connection_next (Type const& o)
+ {
+ connection_post (o);
+ connection_pre (o);
+ }
+
+ void DeploymentPlan::
+ connection_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ dependsOn_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dependsOn", top_ ()));
+ }
+
+ void DeploymentPlan::
+ dependsOn_next (Type const& o)
+ {
+ dependsOn_post (o);
+ dependsOn_pre (o);
+ }
+
+ void DeploymentPlan::
+ dependsOn_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ artifact_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("artifact", top_ ()));
+ }
+
+ void DeploymentPlan::
+ artifact_next (Type const& o)
+ {
+ artifact_post (o);
+ artifact_pre (o);
+ }
+
+ void DeploymentPlan::
+ artifact_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void DeploymentPlan::
+ infoProperty_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+ }
+
+ void DeploymentPlan::
+ infoProperty_next (Type const& o)
+ {
+ infoProperty_post (o);
+ infoProperty_pre (o);
+ }
+
+ void DeploymentPlan::
+ infoProperty_post (Type const&)
+ {
+ pop_ ();
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/cdp.hpp b/modules/CIAO/tools/Config_Handlers/cdp.hpp
new file mode 100644
index 00000000000..f6033db9fca
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cdp.hpp
@@ -0,0 +1,703 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+
+#ifndef CDP_HPP
+#define CDP_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class DeploymentPlan;
+ }
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "ccd.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class XSC_XML_Handlers_Export DeploymentPlan : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // label
+ //
+ public:
+ bool label_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& label () const;
+ void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+ // UUID
+ //
+ public:
+ bool UUID_p () const;
+ ::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+ void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+ protected:
+ ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+ // realizes
+ //
+ public:
+ bool realizes_p () const;
+ ::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const;
+ void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_;
+
+ // implementation
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::iterator implementation_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription >::const_iterator implementation_const_iterator;
+ implementation_iterator begin_implementation ();
+ implementation_iterator end_implementation ();
+ implementation_const_iterator begin_implementation () const;
+ implementation_const_iterator end_implementation () const;
+ void add_implementation (::CIAO::Config_Handlers::MonolithicDeploymentDescription const& );
+ size_t count_implementation (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::MonolithicDeploymentDescription > implementation_;
+
+ // instance
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::iterator instance_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription >::const_iterator instance_const_iterator;
+ instance_iterator begin_instance ();
+ instance_iterator end_instance ();
+ instance_const_iterator begin_instance () const;
+ instance_const_iterator end_instance () const;
+ void add_instance (::CIAO::Config_Handlers::InstanceDeploymentDescription const& );
+ size_t count_instance (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::InstanceDeploymentDescription > instance_;
+
+ // connection
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::iterator connection_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription >::const_iterator connection_const_iterator;
+ connection_iterator begin_connection ();
+ connection_iterator end_connection ();
+ connection_const_iterator begin_connection () const;
+ connection_const_iterator end_connection () const;
+ void add_connection (::CIAO::Config_Handlers::PlanConnectionDescription const& );
+ size_t count_connection (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::PlanConnectionDescription > connection_;
+
+ // dependsOn
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::iterator dependsOn_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::const_iterator dependsOn_const_iterator;
+ dependsOn_iterator begin_dependsOn ();
+ dependsOn_iterator end_dependsOn ();
+ dependsOn_const_iterator begin_dependsOn () const;
+ dependsOn_const_iterator end_dependsOn () const;
+ void add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& );
+ size_t count_dependsOn (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ImplementationDependency > dependsOn_;
+
+ // artifact
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::iterator artifact_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription >::const_iterator artifact_const_iterator;
+ artifact_iterator begin_artifact ();
+ artifact_iterator end_artifact ();
+ artifact_const_iterator begin_artifact () const;
+ artifact_const_iterator end_artifact () const;
+ void add_artifact (::CIAO::Config_Handlers::ArtifactDeploymentDescription const& );
+ size_t count_artifact (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::ArtifactDeploymentDescription > artifact_;
+
+ // infoProperty
+ //
+ public:
+ typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+ typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+ infoProperty_iterator begin_infoProperty ();
+ infoProperty_iterator end_infoProperty ();
+ infoProperty_const_iterator begin_infoProperty () const;
+ infoProperty_const_iterator end_infoProperty () const;
+ void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+ size_t count_infoProperty (void) const;
+
+ protected:
+ ::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+ public:
+ DeploymentPlan ();
+
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ DeploymentPlan (DeploymentPlan const& s);
+
+ DeploymentPlan&
+ operator= (DeploymentPlan const& s);
+
+ private:
+ char regulator__;
+ };
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ struct XSC_XML_Handlers_Export DeploymentPlan : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::DeploymentPlan >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ label (Type&);
+
+ virtual void
+ label (Type const&);
+
+ virtual void
+ label_none (Type&);
+
+ virtual void
+ label_none (Type const&);
+
+ virtual void
+ UUID (Type&);
+
+ virtual void
+ UUID (Type const&);
+
+ virtual void
+ UUID_none (Type&);
+
+ virtual void
+ UUID_none (Type const&);
+
+ virtual void
+ realizes (Type&);
+
+ virtual void
+ realizes (Type const&);
+
+ virtual void
+ realizes_none (Type&);
+
+ virtual void
+ realizes_none (Type const&);
+
+ virtual void
+ implementation (Type&);
+
+ virtual void
+ implementation (Type const&);
+
+ virtual void
+ implementation_pre (Type&);
+
+ virtual void
+ implementation_pre (Type const&);
+
+ virtual void
+ implementation_next (Type&);
+
+ virtual void
+ implementation_next (Type const&);
+
+ virtual void
+ implementation_post (Type&);
+
+ virtual void
+ implementation_post (Type const&);
+
+ virtual void
+ instance (Type&);
+
+ virtual void
+ instance (Type const&);
+
+ virtual void
+ instance_pre (Type&);
+
+ virtual void
+ instance_pre (Type const&);
+
+ virtual void
+ instance_next (Type&);
+
+ virtual void
+ instance_next (Type const&);
+
+ virtual void
+ instance_post (Type&);
+
+ virtual void
+ instance_post (Type const&);
+
+ virtual void
+ instance_none (Type&);
+
+ virtual void
+ instance_none (Type const&);
+
+ virtual void
+ connection (Type&);
+
+ virtual void
+ connection (Type const&);
+
+ virtual void
+ connection_pre (Type&);
+
+ virtual void
+ connection_pre (Type const&);
+
+ virtual void
+ connection_next (Type&);
+
+ virtual void
+ connection_next (Type const&);
+
+ virtual void
+ connection_post (Type&);
+
+ virtual void
+ connection_post (Type const&);
+
+ virtual void
+ connection_none (Type&);
+
+ virtual void
+ connection_none (Type const&);
+
+ virtual void
+ dependsOn (Type&);
+
+ virtual void
+ dependsOn (Type const&);
+
+ virtual void
+ dependsOn_pre (Type&);
+
+ virtual void
+ dependsOn_pre (Type const&);
+
+ virtual void
+ dependsOn_next (Type&);
+
+ virtual void
+ dependsOn_next (Type const&);
+
+ virtual void
+ dependsOn_post (Type&);
+
+ virtual void
+ dependsOn_post (Type const&);
+
+ virtual void
+ dependsOn_none (Type&);
+
+ virtual void
+ dependsOn_none (Type const&);
+
+ virtual void
+ artifact (Type&);
+
+ virtual void
+ artifact (Type const&);
+
+ virtual void
+ artifact_pre (Type&);
+
+ virtual void
+ artifact_pre (Type const&);
+
+ virtual void
+ artifact_next (Type&);
+
+ virtual void
+ artifact_next (Type const&);
+
+ virtual void
+ artifact_post (Type&);
+
+ virtual void
+ artifact_post (Type const&);
+
+ virtual void
+ artifact_none (Type&);
+
+ virtual void
+ artifact_none (Type const&);
+
+ virtual void
+ infoProperty (Type&);
+
+ virtual void
+ infoProperty (Type const&);
+
+ virtual void
+ infoProperty_pre (Type&);
+
+ virtual void
+ infoProperty_pre (Type const&);
+
+ virtual void
+ infoProperty_next (Type&);
+
+ virtual void
+ infoProperty_next (Type const&);
+
+ virtual void
+ infoProperty_post (Type&);
+
+ virtual void
+ infoProperty_post (Type const&);
+
+ virtual void
+ infoProperty_none (Type&);
+
+ virtual void
+ infoProperty_none (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+ }
+ }
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ struct DeploymentPlan : Traversal::DeploymentPlan,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::DeploymentPlan Type;
+ DeploymentPlan (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ label (Type &o)
+ {
+
+ this->label (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ label (Type const&);
+
+ virtual void
+ UUID (Type &o)
+ {
+
+ this->UUID (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ UUID (Type const&);
+
+ virtual void
+ realizes (Type &o)
+ {
+
+ this->realizes (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ realizes (Type const&);
+
+ virtual void
+ implementation_pre (Type &o)
+ {
+
+ this->implementation_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ implementation_pre (Type const&);
+
+ virtual void
+ implementation_next (Type &o)
+ {
+
+ this->implementation_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ implementation_next (Type const&);
+
+ virtual void
+ implementation_post (Type &o)
+ {
+
+ this->implementation_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ implementation_post (Type const&);
+
+ virtual void
+ instance_pre (Type &o)
+ {
+
+ this->instance_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ instance_pre (Type const&);
+
+ virtual void
+ instance_next (Type &o)
+ {
+
+ this->instance_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ instance_next (Type const&);
+
+ virtual void
+ instance_post (Type &o)
+ {
+
+ this->instance_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ instance_post (Type const&);
+
+ virtual void
+ connection_pre (Type &o)
+ {
+
+ this->connection_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connection_pre (Type const&);
+
+ virtual void
+ connection_next (Type &o)
+ {
+
+ this->connection_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connection_next (Type const&);
+
+ virtual void
+ connection_post (Type &o)
+ {
+
+ this->connection_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ connection_post (Type const&);
+
+ virtual void
+ dependsOn_pre (Type &o)
+ {
+
+ this->dependsOn_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ dependsOn_pre (Type const&);
+
+ virtual void
+ dependsOn_next (Type &o)
+ {
+
+ this->dependsOn_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ dependsOn_next (Type const&);
+
+ virtual void
+ dependsOn_post (Type &o)
+ {
+
+ this->dependsOn_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ dependsOn_post (Type const&);
+
+ virtual void
+ artifact_pre (Type &o)
+ {
+
+ this->artifact_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ artifact_pre (Type const&);
+
+ virtual void
+ artifact_next (Type &o)
+ {
+
+ this->artifact_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ artifact_next (Type const&);
+
+ virtual void
+ artifact_post (Type &o)
+ {
+
+ this->artifact_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ artifact_post (Type const&);
+
+ virtual void
+ infoProperty_pre (Type &o)
+ {
+
+ this->infoProperty_pre (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ infoProperty_pre (Type const&);
+
+ virtual void
+ infoProperty_next (Type &o)
+ {
+
+ this->infoProperty_next (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ infoProperty_next (Type const&);
+
+ virtual void
+ infoProperty_post (Type &o)
+ {
+
+ this->infoProperty_post (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ infoProperty_post (Type const&);
+
+ protected:
+ DeploymentPlan ();
+ };
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#endif // CDP_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/cid.cpp b/modules/CIAO/tools/Config_Handlers/cid.cpp
new file mode 100644
index 00000000000..5cfd51e40d5
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cid.cpp
@@ -0,0 +1,4124 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "cid.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // SubcomponentInstantiationDescription
+ //
+
+ SubcomponentInstantiationDescription::
+ SubcomponentInstantiationDescription (::XMLSchema::string< ACE_TCHAR > const& name__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ }
+
+ SubcomponentInstantiationDescription::
+ SubcomponentInstantiationDescription (::CIAO::Config_Handlers::SubcomponentInstantiationDescription const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+ basePackage_ (s.basePackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageDescription (*s.basePackage_) : 0),
+ specializedConfig_ (s.specializedConfig_.get () ? new ::CIAO::Config_Handlers::PackageConfiguration (*s.specializedConfig_) : 0),
+ referencedPackage_ (s.referencedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageReference (*s.referencedPackage_) : 0),
+ importedPackage_ (s.importedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageImport (*s.importedPackage_) : 0),
+ id_ (s.id_.get () ? new ::XMLSchema::ID< ACE_TCHAR > (*s.id_) : 0),
+ regulator__ ()
+ {
+ name_->container (this);
+ if (basePackage_.get ()) basePackage_->container (this);
+ if (specializedConfig_.get ()) specializedConfig_->container (this);
+ {
+ for (selectRequirement_const_iterator i (s.selectRequirement_.begin ());i != s.selectRequirement_.end ();++i) add_selectRequirement (*i);
+ }
+
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ if (referencedPackage_.get ()) referencedPackage_->container (this);
+ if (importedPackage_.get ()) importedPackage_->container (this);
+ if (id_.get ()) id_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::SubcomponentInstantiationDescription& SubcomponentInstantiationDescription::
+ operator= (::CIAO::Config_Handlers::SubcomponentInstantiationDescription const& s)
+ {
+ name (s.name ());
+
+ if (s.basePackage_.get ()) basePackage (*(s.basePackage_));
+ else basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (0);
+
+ if (s.specializedConfig_.get ()) specializedConfig (*(s.specializedConfig_));
+ else specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (0);
+
+ selectRequirement_.clear ();
+ {
+ for (selectRequirement_const_iterator i (s.selectRequirement_.begin ());i != s.selectRequirement_.end ();++i) add_selectRequirement (*i);
+ }
+
+ configProperty_.clear ();
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ if (s.referencedPackage_.get ()) referencedPackage (*(s.referencedPackage_));
+ else referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (0);
+
+ if (s.importedPackage_.get ()) importedPackage (*(s.importedPackage_));
+ else importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (0);
+
+ if (s.id_.get ()) id (*(s.id_));
+ else id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // SubcomponentInstantiationDescription
+ //
+ ::XMLSchema::string< ACE_TCHAR > const& SubcomponentInstantiationDescription::
+ name () const
+ {
+ return *name_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ name (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ *name_ = e;
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ bool SubcomponentInstantiationDescription::
+ basePackage_p () const
+ {
+ return basePackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageDescription const& SubcomponentInstantiationDescription::
+ basePackage () const
+ {
+ return *basePackage_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& e)
+ {
+ if (basePackage_.get ())
+ {
+ *basePackage_ = e;
+ }
+
+ else
+ {
+ basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (new ::CIAO::Config_Handlers::ComponentPackageDescription (e));
+ basePackage_->container (this);
+ }
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ bool SubcomponentInstantiationDescription::
+ specializedConfig_p () const
+ {
+ return specializedConfig_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::PackageConfiguration const& SubcomponentInstantiationDescription::
+ specializedConfig () const
+ {
+ return *specializedConfig_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& e)
+ {
+ if (specializedConfig_.get ())
+ {
+ *specializedConfig_ = e;
+ }
+
+ else
+ {
+ specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e));
+ specializedConfig_->container (this);
+ }
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ SubcomponentInstantiationDescription::selectRequirement_iterator SubcomponentInstantiationDescription::
+ begin_selectRequirement ()
+ {
+ return selectRequirement_.begin ();
+ }
+
+ SubcomponentInstantiationDescription::selectRequirement_iterator SubcomponentInstantiationDescription::
+ end_selectRequirement ()
+ {
+ return selectRequirement_.end ();
+ }
+
+ SubcomponentInstantiationDescription::selectRequirement_const_iterator SubcomponentInstantiationDescription::
+ begin_selectRequirement () const
+ {
+ return selectRequirement_.begin ();
+ }
+
+ SubcomponentInstantiationDescription::selectRequirement_const_iterator SubcomponentInstantiationDescription::
+ end_selectRequirement () const
+ {
+ return selectRequirement_.end ();
+ }
+
+ void SubcomponentInstantiationDescription::
+ add_selectRequirement (::CIAO::Config_Handlers::Requirement const& e)
+ {
+ selectRequirement_.push_back (e);
+ }
+
+ size_t SubcomponentInstantiationDescription::
+ count_selectRequirement(void) const
+ {
+ return selectRequirement_.size ();
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ SubcomponentInstantiationDescription::configProperty_iterator SubcomponentInstantiationDescription::
+ begin_configProperty ()
+ {
+ return configProperty_.begin ();
+ }
+
+ SubcomponentInstantiationDescription::configProperty_iterator SubcomponentInstantiationDescription::
+ end_configProperty ()
+ {
+ return configProperty_.end ();
+ }
+
+ SubcomponentInstantiationDescription::configProperty_const_iterator SubcomponentInstantiationDescription::
+ begin_configProperty () const
+ {
+ return configProperty_.begin ();
+ }
+
+ SubcomponentInstantiationDescription::configProperty_const_iterator SubcomponentInstantiationDescription::
+ end_configProperty () const
+ {
+ return configProperty_.end ();
+ }
+
+ void SubcomponentInstantiationDescription::
+ add_configProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ configProperty_.push_back (e);
+ }
+
+ size_t SubcomponentInstantiationDescription::
+ count_configProperty(void) const
+ {
+ return configProperty_.size ();
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ bool SubcomponentInstantiationDescription::
+ referencedPackage_p () const
+ {
+ return referencedPackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageReference const& SubcomponentInstantiationDescription::
+ referencedPackage () const
+ {
+ return *referencedPackage_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& e)
+ {
+ if (referencedPackage_.get ())
+ {
+ *referencedPackage_ = e;
+ }
+
+ else
+ {
+ referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (new ::CIAO::Config_Handlers::ComponentPackageReference (e));
+ referencedPackage_->container (this);
+ }
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ bool SubcomponentInstantiationDescription::
+ importedPackage_p () const
+ {
+ return importedPackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageImport const& SubcomponentInstantiationDescription::
+ importedPackage () const
+ {
+ return *importedPackage_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& e)
+ {
+ if (importedPackage_.get ())
+ {
+ *importedPackage_ = e;
+ }
+
+ else
+ {
+ importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (new ::CIAO::Config_Handlers::ComponentPackageImport (e));
+ importedPackage_->container (this);
+ }
+ }
+
+ // SubcomponentInstantiationDescription
+ //
+ bool SubcomponentInstantiationDescription::
+ id_p () const
+ {
+ return id_.get () != 0;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR > const& SubcomponentInstantiationDescription::
+ id () const
+ {
+ return *id_;
+ }
+
+ ::XMLSchema::ID< ACE_TCHAR >& SubcomponentInstantiationDescription::
+ id ()
+ {
+ return *id_;
+ }
+
+ void SubcomponentInstantiationDescription::
+ id (::XMLSchema::ID< ACE_TCHAR > const& e)
+ {
+ if (id_.get ())
+ {
+ *id_ = e;
+ }
+
+ else
+ {
+ id_ = ::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > (new ::XMLSchema::ID< ACE_TCHAR > (e));
+ id_->container (this);
+ }
+ }
+
+
+ // SubcomponentPropertyReference
+ //
+
+ SubcomponentPropertyReference::
+ SubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__,
+ ::XMLSchema::IDREF< ACE_TCHAR > const& instance__)
+ :
+ ::XSCRT::Type (),
+propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (propertyName__)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (instance__)),
+regulator__ ()
+{
+propertyName_->container (this);
+instance_->container (this);
+}
+
+SubcomponentPropertyReference::
+SubcomponentPropertyReference (::CIAO::Config_Handlers::SubcomponentPropertyReference const& s)
+:
+::XSCRT::Type (),
+propertyName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.propertyName_)),
+instance_ (new ::XMLSchema::IDREF< ACE_TCHAR > (*s.instance_)),
+regulator__ ()
+{
+propertyName_->container (this);
+instance_->container (this);
+}
+
+::CIAO::Config_Handlers::SubcomponentPropertyReference& SubcomponentPropertyReference::
+operator= (::CIAO::Config_Handlers::SubcomponentPropertyReference const& s)
+{
+propertyName (s.propertyName ());
+
+instance (s.instance ());
+
+return *this;
+}
+
+
+// SubcomponentPropertyReference
+//
+::XMLSchema::string< ACE_TCHAR > const& SubcomponentPropertyReference::
+propertyName () const
+{
+return *propertyName_;
+}
+
+void SubcomponentPropertyReference::
+propertyName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*propertyName_ = e;
+}
+
+// SubcomponentPropertyReference
+//
+::XMLSchema::IDREF< ACE_TCHAR > const& SubcomponentPropertyReference::
+instance () const
+{
+return *instance_;
+}
+
+void SubcomponentPropertyReference::
+instance (::XMLSchema::IDREF< ACE_TCHAR > const& e)
+{
+*instance_ = e;
+}
+
+
+// AssemblyPropertyMapping
+//
+
+AssemblyPropertyMapping::
+AssemblyPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& externalName__)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+externalName_ (new ::XMLSchema::string< ACE_TCHAR > (externalName__)),
+regulator__ ()
+{
+name_->container (this);
+externalName_->container (this);
+}
+
+AssemblyPropertyMapping::
+AssemblyPropertyMapping (::CIAO::Config_Handlers::AssemblyPropertyMapping const& s)
+:
+::XSCRT::Type (),
+name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+externalName_ (new ::XMLSchema::string< ACE_TCHAR > (*s.externalName_)),
+regulator__ ()
+{
+name_->container (this);
+externalName_->container (this);
+{
+for (delegatesTo_const_iterator i (s.delegatesTo_.begin ());i != s.delegatesTo_.end ();++i) add_delegatesTo (*i);
+}
+}
+
+::CIAO::Config_Handlers::AssemblyPropertyMapping& AssemblyPropertyMapping::
+operator= (::CIAO::Config_Handlers::AssemblyPropertyMapping const& s)
+{
+name (s.name ());
+
+externalName (s.externalName ());
+
+delegatesTo_.clear ();
+{
+for (delegatesTo_const_iterator i (s.delegatesTo_.begin ());i != s.delegatesTo_.end ();++i) add_delegatesTo (*i);
+}
+
+return *this;
+}
+
+
+// AssemblyPropertyMapping
+//
+::XMLSchema::string< ACE_TCHAR > const& AssemblyPropertyMapping::
+name () const
+{
+return *name_;
+}
+
+void AssemblyPropertyMapping::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// AssemblyPropertyMapping
+//
+::XMLSchema::string< ACE_TCHAR > const& AssemblyPropertyMapping::
+externalName () const
+{
+return *externalName_;
+}
+
+void AssemblyPropertyMapping::
+externalName (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*externalName_ = e;
+}
+
+// AssemblyPropertyMapping
+//
+AssemblyPropertyMapping::delegatesTo_iterator AssemblyPropertyMapping::
+begin_delegatesTo ()
+{
+return delegatesTo_.begin ();
+}
+
+AssemblyPropertyMapping::delegatesTo_iterator AssemblyPropertyMapping::
+end_delegatesTo ()
+{
+return delegatesTo_.end ();
+}
+
+AssemblyPropertyMapping::delegatesTo_const_iterator AssemblyPropertyMapping::
+begin_delegatesTo () const
+{
+return delegatesTo_.begin ();
+}
+
+AssemblyPropertyMapping::delegatesTo_const_iterator AssemblyPropertyMapping::
+end_delegatesTo () const
+{
+return delegatesTo_.end ();
+}
+
+void AssemblyPropertyMapping::
+add_delegatesTo (::CIAO::Config_Handlers::SubcomponentPropertyReference const& e)
+{
+delegatesTo_.push_back (e);
+}
+
+size_t AssemblyPropertyMapping::
+count_delegatesTo(void) const
+{
+return delegatesTo_.size ();
+}
+
+
+// ComponentAssemblyDescription
+//
+
+ComponentAssemblyDescription::
+ComponentAssemblyDescription ()
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+}
+
+ComponentAssemblyDescription::
+ComponentAssemblyDescription (::CIAO::Config_Handlers::ComponentAssemblyDescription const& s)
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+{
+for (instance_const_iterator i (s.instance_.begin ());i != s.instance_.end ();++i) add_instance (*i);
+}
+
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+{
+for (externalProperty_const_iterator i (s.externalProperty_.begin ());i != s.externalProperty_.end ();++i) add_externalProperty (*i);
+}
+}
+
+::CIAO::Config_Handlers::ComponentAssemblyDescription& ComponentAssemblyDescription::
+operator= (::CIAO::Config_Handlers::ComponentAssemblyDescription const& s)
+{
+instance_.clear ();
+{
+for (instance_const_iterator i (s.instance_.begin ());i != s.instance_.end ();++i) add_instance (*i);
+}
+
+connection_.clear ();
+{
+for (connection_const_iterator i (s.connection_.begin ());i != s.connection_.end ();++i) add_connection (*i);
+}
+
+externalProperty_.clear ();
+{
+for (externalProperty_const_iterator i (s.externalProperty_.begin ());i != s.externalProperty_.end ();++i) add_externalProperty (*i);
+}
+
+return *this;
+}
+
+
+// ComponentAssemblyDescription
+//
+ComponentAssemblyDescription::instance_iterator ComponentAssemblyDescription::
+begin_instance ()
+{
+return instance_.begin ();
+}
+
+ComponentAssemblyDescription::instance_iterator ComponentAssemblyDescription::
+end_instance ()
+{
+return instance_.end ();
+}
+
+ComponentAssemblyDescription::instance_const_iterator ComponentAssemblyDescription::
+begin_instance () const
+{
+return instance_.begin ();
+}
+
+ComponentAssemblyDescription::instance_const_iterator ComponentAssemblyDescription::
+end_instance () const
+{
+return instance_.end ();
+}
+
+void ComponentAssemblyDescription::
+add_instance (::CIAO::Config_Handlers::SubcomponentInstantiationDescription const& e)
+{
+instance_.push_back (e);
+}
+
+size_t ComponentAssemblyDescription::
+count_instance(void) const
+{
+return instance_.size ();
+}
+
+// ComponentAssemblyDescription
+//
+ComponentAssemblyDescription::connection_iterator ComponentAssemblyDescription::
+begin_connection ()
+{
+return connection_.begin ();
+}
+
+ComponentAssemblyDescription::connection_iterator ComponentAssemblyDescription::
+end_connection ()
+{
+return connection_.end ();
+}
+
+ComponentAssemblyDescription::connection_const_iterator ComponentAssemblyDescription::
+begin_connection () const
+{
+return connection_.begin ();
+}
+
+ComponentAssemblyDescription::connection_const_iterator ComponentAssemblyDescription::
+end_connection () const
+{
+return connection_.end ();
+}
+
+void ComponentAssemblyDescription::
+add_connection (::CIAO::Config_Handlers::AssemblyConnectionDescription const& e)
+{
+connection_.push_back (e);
+}
+
+size_t ComponentAssemblyDescription::
+count_connection(void) const
+{
+return connection_.size ();
+}
+
+// ComponentAssemblyDescription
+//
+ComponentAssemblyDescription::externalProperty_iterator ComponentAssemblyDescription::
+begin_externalProperty ()
+{
+return externalProperty_.begin ();
+}
+
+ComponentAssemblyDescription::externalProperty_iterator ComponentAssemblyDescription::
+end_externalProperty ()
+{
+return externalProperty_.end ();
+}
+
+ComponentAssemblyDescription::externalProperty_const_iterator ComponentAssemblyDescription::
+begin_externalProperty () const
+{
+return externalProperty_.begin ();
+}
+
+ComponentAssemblyDescription::externalProperty_const_iterator ComponentAssemblyDescription::
+end_externalProperty () const
+{
+return externalProperty_.end ();
+}
+
+void ComponentAssemblyDescription::
+add_externalProperty (::CIAO::Config_Handlers::AssemblyPropertyMapping const& e)
+{
+externalProperty_.push_back (e);
+}
+
+size_t ComponentAssemblyDescription::
+count_externalProperty(void) const
+{
+return externalProperty_.size ();
+}
+
+
+// MonolithicImplementationDescription
+//
+
+MonolithicImplementationDescription::
+MonolithicImplementationDescription ()
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+}
+
+MonolithicImplementationDescription::
+MonolithicImplementationDescription (::CIAO::Config_Handlers::MonolithicImplementationDescription const& s)
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+{
+for (nodeExecParameter_const_iterator i (s.nodeExecParameter_.begin ());i != s.nodeExecParameter_.end ();++i) add_nodeExecParameter (*i);
+}
+
+{
+for (componentExecParameter_const_iterator i (s.componentExecParameter_.begin ());i != s.componentExecParameter_.end ();++i) add_componentExecParameter (*i);
+}
+
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+{
+for (primaryArtifact_const_iterator i (s.primaryArtifact_.begin ());i != s.primaryArtifact_.end ();++i) add_primaryArtifact (*i);
+}
+}
+
+::CIAO::Config_Handlers::MonolithicImplementationDescription& MonolithicImplementationDescription::
+operator= (::CIAO::Config_Handlers::MonolithicImplementationDescription const& s)
+{
+nodeExecParameter_.clear ();
+{
+for (nodeExecParameter_const_iterator i (s.nodeExecParameter_.begin ());i != s.nodeExecParameter_.end ();++i) add_nodeExecParameter (*i);
+}
+
+componentExecParameter_.clear ();
+{
+for (componentExecParameter_const_iterator i (s.componentExecParameter_.begin ());i != s.componentExecParameter_.end ();++i) add_componentExecParameter (*i);
+}
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+primaryArtifact_.clear ();
+{
+for (primaryArtifact_const_iterator i (s.primaryArtifact_.begin ());i != s.primaryArtifact_.end ();++i) add_primaryArtifact (*i);
+}
+
+return *this;
+}
+
+
+// MonolithicImplementationDescription
+//
+MonolithicImplementationDescription::nodeExecParameter_iterator MonolithicImplementationDescription::
+begin_nodeExecParameter ()
+{
+return nodeExecParameter_.begin ();
+}
+
+MonolithicImplementationDescription::nodeExecParameter_iterator MonolithicImplementationDescription::
+end_nodeExecParameter ()
+{
+return nodeExecParameter_.end ();
+}
+
+MonolithicImplementationDescription::nodeExecParameter_const_iterator MonolithicImplementationDescription::
+begin_nodeExecParameter () const
+{
+return nodeExecParameter_.begin ();
+}
+
+MonolithicImplementationDescription::nodeExecParameter_const_iterator MonolithicImplementationDescription::
+end_nodeExecParameter () const
+{
+return nodeExecParameter_.end ();
+}
+
+void MonolithicImplementationDescription::
+add_nodeExecParameter (::CIAO::Config_Handlers::Property const& e)
+{
+nodeExecParameter_.push_back (e);
+}
+
+size_t MonolithicImplementationDescription::
+count_nodeExecParameter(void) const
+{
+return nodeExecParameter_.size ();
+}
+
+// MonolithicImplementationDescription
+//
+MonolithicImplementationDescription::componentExecParameter_iterator MonolithicImplementationDescription::
+begin_componentExecParameter ()
+{
+return componentExecParameter_.begin ();
+}
+
+MonolithicImplementationDescription::componentExecParameter_iterator MonolithicImplementationDescription::
+end_componentExecParameter ()
+{
+return componentExecParameter_.end ();
+}
+
+MonolithicImplementationDescription::componentExecParameter_const_iterator MonolithicImplementationDescription::
+begin_componentExecParameter () const
+{
+return componentExecParameter_.begin ();
+}
+
+MonolithicImplementationDescription::componentExecParameter_const_iterator MonolithicImplementationDescription::
+end_componentExecParameter () const
+{
+return componentExecParameter_.end ();
+}
+
+void MonolithicImplementationDescription::
+add_componentExecParameter (::CIAO::Config_Handlers::Property const& e)
+{
+componentExecParameter_.push_back (e);
+}
+
+size_t MonolithicImplementationDescription::
+count_componentExecParameter(void) const
+{
+return componentExecParameter_.size ();
+}
+
+// MonolithicImplementationDescription
+//
+MonolithicImplementationDescription::deployRequirement_iterator MonolithicImplementationDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+MonolithicImplementationDescription::deployRequirement_iterator MonolithicImplementationDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+MonolithicImplementationDescription::deployRequirement_const_iterator MonolithicImplementationDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+MonolithicImplementationDescription::deployRequirement_const_iterator MonolithicImplementationDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void MonolithicImplementationDescription::
+add_deployRequirement (::CIAO::Config_Handlers::ImplementationRequirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t MonolithicImplementationDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// MonolithicImplementationDescription
+//
+MonolithicImplementationDescription::primaryArtifact_iterator MonolithicImplementationDescription::
+begin_primaryArtifact ()
+{
+return primaryArtifact_.begin ();
+}
+
+MonolithicImplementationDescription::primaryArtifact_iterator MonolithicImplementationDescription::
+end_primaryArtifact ()
+{
+return primaryArtifact_.end ();
+}
+
+MonolithicImplementationDescription::primaryArtifact_const_iterator MonolithicImplementationDescription::
+begin_primaryArtifact () const
+{
+return primaryArtifact_.begin ();
+}
+
+MonolithicImplementationDescription::primaryArtifact_const_iterator MonolithicImplementationDescription::
+end_primaryArtifact () const
+{
+return primaryArtifact_.end ();
+}
+
+void MonolithicImplementationDescription::
+add_primaryArtifact (::CIAO::Config_Handlers::NamedImplementationArtifact const& e)
+{
+primaryArtifact_.push_back (e);
+}
+
+size_t MonolithicImplementationDescription::
+count_primaryArtifact(void) const
+{
+return primaryArtifact_.size ();
+}
+
+
+// ComponentImplementationDescription
+//
+
+ComponentImplementationDescription::
+ComponentImplementationDescription ()
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+}
+
+ComponentImplementationDescription::
+ComponentImplementationDescription (::CIAO::Config_Handlers::ComponentImplementationDescription const& s)
+:
+::XSCRT::Type (),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+implements_ (s.implements_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.implements_) : 0),
+assemblyImpl_ (s.assemblyImpl_.get () ? new ::CIAO::Config_Handlers::ComponentAssemblyDescription (*s.assemblyImpl_) : 0),
+monolithicImpl_ (s.monolithicImpl_.get () ? new ::CIAO::Config_Handlers::MonolithicImplementationDescription (*s.monolithicImpl_) : 0),
+contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0),
+href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0),
+regulator__ ()
+{
+if (label_.get ()) label_->container (this);
+if (UUID_.get ()) UUID_->container (this);
+if (implements_.get ()) implements_->container (this);
+if (assemblyImpl_.get ()) assemblyImpl_->container (this);
+if (monolithicImpl_.get ()) monolithicImpl_->container (this);
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+{
+for (capability_const_iterator i (s.capability_.begin ());i != s.capability_.end ();++i) add_capability (*i);
+}
+
+{
+for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+}
+
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+if (contentLocation_.get ()) contentLocation_->container (this);
+if (href_.get ()) href_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentImplementationDescription& ComponentImplementationDescription::
+operator= (::CIAO::Config_Handlers::ComponentImplementationDescription const& s)
+{
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.UUID_.get ()) UUID (*(s.UUID_));
+else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.implements_.get ()) implements (*(s.implements_));
+else implements_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (0);
+
+if (s.assemblyImpl_.get ()) assemblyImpl (*(s.assemblyImpl_));
+else assemblyImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > (0);
+
+if (s.monolithicImpl_.get ()) monolithicImpl (*(s.monolithicImpl_));
+else monolithicImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > (0);
+
+configProperty_.clear ();
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+capability_.clear ();
+{
+for (capability_const_iterator i (s.capability_.begin ());i != s.capability_.end ();++i) add_capability (*i);
+}
+
+dependsOn_.clear ();
+{
+for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+}
+
+infoProperty_.clear ();
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+if (s.contentLocation_.get ()) contentLocation (*(s.contentLocation_));
+else contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.href_.get ()) href (*(s.href_));
+else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription::
+label () const
+{
+return *label_;
+}
+
+void ComponentImplementationDescription::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+UUID_p () const
+{
+return UUID_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription::
+UUID () const
+{
+return *UUID_;
+}
+
+void ComponentImplementationDescription::
+UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (UUID_.get ())
+{
+*UUID_ = e;
+}
+
+else
+{
+UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+UUID_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+implements_p () const
+{
+return implements_.get () != 0;
+}
+
+::CIAO::Config_Handlers::ComponentInterfaceDescription const& ComponentImplementationDescription::
+implements () const
+{
+return *implements_;
+}
+
+void ComponentImplementationDescription::
+implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e)
+{
+if (implements_.get ())
+{
+*implements_ = e;
+}
+
+else
+{
+implements_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e));
+implements_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+assemblyImpl_p () const
+{
+return assemblyImpl_.get () != 0;
+}
+
+::CIAO::Config_Handlers::ComponentAssemblyDescription const& ComponentImplementationDescription::
+assemblyImpl () const
+{
+return *assemblyImpl_;
+}
+
+void ComponentImplementationDescription::
+assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& e)
+{
+if (assemblyImpl_.get ())
+{
+*assemblyImpl_ = e;
+}
+
+else
+{
+assemblyImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > (new ::CIAO::Config_Handlers::ComponentAssemblyDescription (e));
+assemblyImpl_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+monolithicImpl_p () const
+{
+return monolithicImpl_.get () != 0;
+}
+
+::CIAO::Config_Handlers::MonolithicImplementationDescription const& ComponentImplementationDescription::
+monolithicImpl () const
+{
+return *monolithicImpl_;
+}
+
+void ComponentImplementationDescription::
+monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& e)
+{
+if (monolithicImpl_.get ())
+{
+*monolithicImpl_ = e;
+}
+
+else
+{
+monolithicImpl_ = ::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > (new ::CIAO::Config_Handlers::MonolithicImplementationDescription (e));
+monolithicImpl_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+ComponentImplementationDescription::configProperty_iterator ComponentImplementationDescription::
+begin_configProperty ()
+{
+return configProperty_.begin ();
+}
+
+ComponentImplementationDescription::configProperty_iterator ComponentImplementationDescription::
+end_configProperty ()
+{
+return configProperty_.end ();
+}
+
+ComponentImplementationDescription::configProperty_const_iterator ComponentImplementationDescription::
+begin_configProperty () const
+{
+return configProperty_.begin ();
+}
+
+ComponentImplementationDescription::configProperty_const_iterator ComponentImplementationDescription::
+end_configProperty () const
+{
+return configProperty_.end ();
+}
+
+void ComponentImplementationDescription::
+add_configProperty (::CIAO::Config_Handlers::Property const& e)
+{
+configProperty_.push_back (e);
+}
+
+size_t ComponentImplementationDescription::
+count_configProperty(void) const
+{
+return configProperty_.size ();
+}
+
+// ComponentImplementationDescription
+//
+ComponentImplementationDescription::capability_iterator ComponentImplementationDescription::
+begin_capability ()
+{
+return capability_.begin ();
+}
+
+ComponentImplementationDescription::capability_iterator ComponentImplementationDescription::
+end_capability ()
+{
+return capability_.end ();
+}
+
+ComponentImplementationDescription::capability_const_iterator ComponentImplementationDescription::
+begin_capability () const
+{
+return capability_.begin ();
+}
+
+ComponentImplementationDescription::capability_const_iterator ComponentImplementationDescription::
+end_capability () const
+{
+return capability_.end ();
+}
+
+void ComponentImplementationDescription::
+add_capability (::CIAO::Config_Handlers::Capability const& e)
+{
+capability_.push_back (e);
+}
+
+size_t ComponentImplementationDescription::
+count_capability(void) const
+{
+return capability_.size ();
+}
+
+// ComponentImplementationDescription
+//
+ComponentImplementationDescription::dependsOn_iterator ComponentImplementationDescription::
+begin_dependsOn ()
+{
+return dependsOn_.begin ();
+}
+
+ComponentImplementationDescription::dependsOn_iterator ComponentImplementationDescription::
+end_dependsOn ()
+{
+return dependsOn_.end ();
+}
+
+ComponentImplementationDescription::dependsOn_const_iterator ComponentImplementationDescription::
+begin_dependsOn () const
+{
+return dependsOn_.begin ();
+}
+
+ComponentImplementationDescription::dependsOn_const_iterator ComponentImplementationDescription::
+end_dependsOn () const
+{
+return dependsOn_.end ();
+}
+
+void ComponentImplementationDescription::
+add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& e)
+{
+dependsOn_.push_back (e);
+}
+
+size_t ComponentImplementationDescription::
+count_dependsOn(void) const
+{
+return dependsOn_.size ();
+}
+
+// ComponentImplementationDescription
+//
+ComponentImplementationDescription::infoProperty_iterator ComponentImplementationDescription::
+begin_infoProperty ()
+{
+return infoProperty_.begin ();
+}
+
+ComponentImplementationDescription::infoProperty_iterator ComponentImplementationDescription::
+end_infoProperty ()
+{
+return infoProperty_.end ();
+}
+
+ComponentImplementationDescription::infoProperty_const_iterator ComponentImplementationDescription::
+begin_infoProperty () const
+{
+return infoProperty_.begin ();
+}
+
+ComponentImplementationDescription::infoProperty_const_iterator ComponentImplementationDescription::
+end_infoProperty () const
+{
+return infoProperty_.end ();
+}
+
+void ComponentImplementationDescription::
+add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+{
+infoProperty_.push_back (e);
+}
+
+size_t ComponentImplementationDescription::
+count_infoProperty(void) const
+{
+return infoProperty_.size ();
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+contentLocation_p () const
+{
+return contentLocation_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription::
+contentLocation () const
+{
+return *contentLocation_;
+}
+
+void ComponentImplementationDescription::
+contentLocation (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (contentLocation_.get ())
+{
+*contentLocation_ = e;
+}
+
+else
+{
+contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+contentLocation_->container (this);
+}
+}
+
+// ComponentImplementationDescription
+//
+bool ComponentImplementationDescription::
+href_p () const
+{
+return href_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentImplementationDescription::
+href () const
+{
+return *href_;
+}
+
+::XMLSchema::string< ACE_TCHAR >& ComponentImplementationDescription::
+href ()
+{
+return *href_;
+}
+
+void ComponentImplementationDescription::
+href (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (href_.get ())
+{
+*href_ = e;
+}
+
+else
+{
+href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+href_->container (this);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+// SubcomponentInstantiationDescription
+//
+
+SubcomponentInstantiationDescription::
+SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "basePackage")
+{
+::CIAO::Config_Handlers::ComponentPackageDescription t (e);
+basePackage (t);
+}
+
+else if (n == "specializedConfig")
+{
+::CIAO::Config_Handlers::PackageConfiguration t (e);
+specializedConfig (t);
+}
+
+else if (n == "selectRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_selectRequirement (t);
+}
+
+else if (n == "configProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_configProperty (t);
+}
+
+else if (n == "referencedPackage")
+{
+::CIAO::Config_Handlers::ComponentPackageReference t (e);
+referencedPackage (t);
+}
+
+else if (n == "importedPackage")
+{
+::CIAO::Config_Handlers::ComponentPackageImport t (e);
+importedPackage (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "id")
+{
+::XMLSchema::ID< ACE_TCHAR > t (a);
+id (t);
+}
+
+else
+{
+}
+}
+}
+
+// SubcomponentPropertyReference
+//
+
+SubcomponentPropertyReference::
+SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "propertyName")
+{
+propertyName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+propertyName_->container (this);
+}
+
+else if (n == "instance")
+{
+instance_ = ::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > (new ::XMLSchema::IDREF< ACE_TCHAR > (e));
+instance_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// AssemblyPropertyMapping
+//
+
+AssemblyPropertyMapping::
+AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "externalName")
+{
+externalName_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+externalName_->container (this);
+}
+
+else if (n == "delegatesTo")
+{
+::CIAO::Config_Handlers::SubcomponentPropertyReference t (e);
+add_delegatesTo (t);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentAssemblyDescription
+//
+
+ComponentAssemblyDescription::
+ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "instance")
+{
+::CIAO::Config_Handlers::SubcomponentInstantiationDescription t (e);
+add_instance (t);
+}
+
+else if (n == "connection")
+{
+::CIAO::Config_Handlers::AssemblyConnectionDescription t (e);
+add_connection (t);
+}
+
+else if (n == "externalProperty")
+{
+::CIAO::Config_Handlers::AssemblyPropertyMapping t (e);
+add_externalProperty (t);
+}
+
+else
+{
+}
+}
+}
+
+// MonolithicImplementationDescription
+//
+
+MonolithicImplementationDescription::
+MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "nodeExecParameter")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_nodeExecParameter (t);
+}
+
+else if (n == "componentExecParameter")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_componentExecParameter (t);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::ImplementationRequirement t (e);
+add_deployRequirement (t);
+}
+
+else if (n == "primaryArtifact")
+{
+::CIAO::Config_Handlers::NamedImplementationArtifact t (e);
+add_primaryArtifact (t);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentImplementationDescription
+//
+
+ComponentImplementationDescription::
+ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "UUID")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+UUID (t);
+}
+
+else if (n == "implements")
+{
+::CIAO::Config_Handlers::ComponentInterfaceDescription t (e);
+implements (t);
+}
+
+else if (n == "assemblyImpl")
+{
+::CIAO::Config_Handlers::ComponentAssemblyDescription t (e);
+assemblyImpl (t);
+}
+
+else if (n == "monolithicImpl")
+{
+::CIAO::Config_Handlers::MonolithicImplementationDescription t (e);
+monolithicImpl (t);
+}
+
+else if (n == "configProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_configProperty (t);
+}
+
+else if (n == "capability")
+{
+::CIAO::Config_Handlers::Capability t (e);
+add_capability (t);
+}
+
+else if (n == "dependsOn")
+{
+::CIAO::Config_Handlers::ImplementationDependency t (e);
+add_dependsOn (t);
+}
+
+else if (n == "infoProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_infoProperty (t);
+}
+
+else if (n == "contentLocation")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+contentLocation (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "href")
+{
+::XMLSchema::string< ACE_TCHAR > t (a);
+href (t);
+}
+
+else
+{
+}
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace
+{
+::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+struct SubcomponentInstantiationDescriptionTypeInfoInitializer
+{
+SubcomponentInstantiationDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SubcomponentInstantiationDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SubcomponentInstantiationDescriptionTypeInfoInitializer SubcomponentInstantiationDescriptionTypeInfoInitializer_;
+
+struct SubcomponentPropertyReferenceTypeInfoInitializer
+{
+SubcomponentPropertyReferenceTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (SubcomponentPropertyReference));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+SubcomponentPropertyReferenceTypeInfoInitializer SubcomponentPropertyReferenceTypeInfoInitializer_;
+
+struct AssemblyPropertyMappingTypeInfoInitializer
+{
+AssemblyPropertyMappingTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (AssemblyPropertyMapping));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+AssemblyPropertyMappingTypeInfoInitializer AssemblyPropertyMappingTypeInfoInitializer_;
+
+struct ComponentAssemblyDescriptionTypeInfoInitializer
+{
+ComponentAssemblyDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentAssemblyDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentAssemblyDescriptionTypeInfoInitializer ComponentAssemblyDescriptionTypeInfoInitializer_;
+
+struct MonolithicImplementationDescriptionTypeInfoInitializer
+{
+MonolithicImplementationDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (MonolithicImplementationDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+MonolithicImplementationDescriptionTypeInfoInitializer MonolithicImplementationDescriptionTypeInfoInitializer_;
+
+struct ComponentImplementationDescriptionTypeInfoInitializer
+{
+ComponentImplementationDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentImplementationDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentImplementationDescriptionTypeInfoInitializer ComponentImplementationDescriptionTypeInfoInitializer_;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+// SubcomponentInstantiationDescription
+//
+//
+
+void SubcomponentInstantiationDescription::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+if (o.basePackage_p ()) basePackage (o);
+else basePackage_none (o);
+if (o.specializedConfig_p ()) specializedConfig (o);
+else specializedConfig_none (o);
+selectRequirement (o);
+configProperty (o);
+if (o.referencedPackage_p ()) referencedPackage (o);
+else referencedPackage_none (o);
+if (o.importedPackage_p ()) importedPackage (o);
+else importedPackage_none (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void SubcomponentInstantiationDescription::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+if (o.basePackage_p ()) basePackage (o);
+else basePackage_none (o);
+if (o.specializedConfig_p ()) specializedConfig (o);
+else specializedConfig_none (o);
+selectRequirement (o);
+configProperty (o);
+if (o.referencedPackage_p ()) referencedPackage (o);
+else referencedPackage_none (o);
+if (o.importedPackage_p ()) importedPackage (o);
+else importedPackage_none (o);
+if (o.id_p ()) id (o);
+else id_none (o);
+post (o);
+}
+
+void SubcomponentInstantiationDescription::
+pre (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+pre (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void SubcomponentInstantiationDescription::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void SubcomponentInstantiationDescription::
+basePackage (Type& o)
+{
+dispatch (o.basePackage ());
+}
+
+void SubcomponentInstantiationDescription::
+basePackage (Type const& o)
+{
+dispatch (o.basePackage ());
+}
+
+void SubcomponentInstantiationDescription::
+basePackage_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+basePackage_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+specializedConfig (Type& o)
+{
+dispatch (o.specializedConfig ());
+}
+
+void SubcomponentInstantiationDescription::
+specializedConfig (Type const& o)
+{
+dispatch (o.specializedConfig ());
+}
+
+void SubcomponentInstantiationDescription::
+specializedConfig_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+specializedConfig_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+SubcomponentInstantiationDescription::Type::selectRequirement_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement());
+
+if (b != e)
+{
+selectRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) selectRequirement_next (o);
+}
+
+selectRequirement_post (o);
+}
+
+else selectRequirement_none (o);
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+SubcomponentInstantiationDescription::Type::selectRequirement_const_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement());
+
+if (b != e)
+{
+selectRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) selectRequirement_next (o);
+}
+
+selectRequirement_post (o);
+}
+
+else selectRequirement_none (o);
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_pre (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_pre (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_next (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_next (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_post (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_post (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+SubcomponentInstantiationDescription::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void SubcomponentInstantiationDescription::
+configProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+SubcomponentInstantiationDescription::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_pre (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_pre (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_next (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_next (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_post (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_post (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+referencedPackage (Type& o)
+{
+dispatch (o.referencedPackage ());
+}
+
+void SubcomponentInstantiationDescription::
+referencedPackage (Type const& o)
+{
+dispatch (o.referencedPackage ());
+}
+
+void SubcomponentInstantiationDescription::
+referencedPackage_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+referencedPackage_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+importedPackage (Type& o)
+{
+dispatch (o.importedPackage ());
+}
+
+void SubcomponentInstantiationDescription::
+importedPackage (Type const& o)
+{
+dispatch (o.importedPackage ());
+}
+
+void SubcomponentInstantiationDescription::
+importedPackage_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+importedPackage_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+id (Type& o)
+{
+dispatch (o.id ());
+}
+
+void SubcomponentInstantiationDescription::
+id (Type const& o)
+{
+dispatch (o.id ());
+}
+
+void SubcomponentInstantiationDescription::
+id_none (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+id_none (Type const&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+post (Type&)
+{
+}
+
+void SubcomponentInstantiationDescription::
+post (Type const&)
+{
+}
+
+// SubcomponentPropertyReference
+//
+//
+
+void SubcomponentPropertyReference::
+traverse (Type& o)
+{
+pre (o);
+propertyName (o);
+instance (o);
+post (o);
+}
+
+void SubcomponentPropertyReference::
+traverse (Type const& o)
+{
+pre (o);
+propertyName (o);
+instance (o);
+post (o);
+}
+
+void SubcomponentPropertyReference::
+pre (Type&)
+{
+}
+
+void SubcomponentPropertyReference::
+pre (Type const&)
+{
+}
+
+void SubcomponentPropertyReference::
+propertyName (Type& o)
+{
+dispatch (o.propertyName ());
+}
+
+void SubcomponentPropertyReference::
+propertyName (Type const& o)
+{
+dispatch (o.propertyName ());
+}
+
+void SubcomponentPropertyReference::
+instance (Type& o)
+{
+dispatch (o.instance ());
+}
+
+void SubcomponentPropertyReference::
+instance (Type const& o)
+{
+dispatch (o.instance ());
+}
+
+void SubcomponentPropertyReference::
+post (Type&)
+{
+}
+
+void SubcomponentPropertyReference::
+post (Type const&)
+{
+}
+
+// AssemblyPropertyMapping
+//
+//
+
+void AssemblyPropertyMapping::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+externalName (o);
+delegatesTo (o);
+post (o);
+}
+
+void AssemblyPropertyMapping::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+externalName (o);
+delegatesTo (o);
+post (o);
+}
+
+void AssemblyPropertyMapping::
+pre (Type&)
+{
+}
+
+void AssemblyPropertyMapping::
+pre (Type const&)
+{
+}
+
+void AssemblyPropertyMapping::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void AssemblyPropertyMapping::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void AssemblyPropertyMapping::
+externalName (Type& o)
+{
+dispatch (o.externalName ());
+}
+
+void AssemblyPropertyMapping::
+externalName (Type const& o)
+{
+dispatch (o.externalName ());
+}
+
+void AssemblyPropertyMapping::
+delegatesTo (Type& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyPropertyMapping::Type::delegatesTo_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo());
+
+if (b != e)
+{
+delegatesTo_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) delegatesTo_next (o);
+}
+
+delegatesTo_post (o);
+}
+}
+
+void AssemblyPropertyMapping::
+delegatesTo (Type const& o)
+{
+// VC6 anathema strikes again
+//
+AssemblyPropertyMapping::Type::delegatesTo_const_iterator b (o.begin_delegatesTo()), e (o.end_delegatesTo());
+
+if (b != e)
+{
+delegatesTo_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) delegatesTo_next (o);
+}
+
+delegatesTo_post (o);
+}
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_pre (Type&)
+{
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_pre (Type const&)
+{
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_next (Type&)
+{
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_next (Type const&)
+{
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_post (Type&)
+{
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_post (Type const&)
+{
+}
+
+void AssemblyPropertyMapping::
+post (Type&)
+{
+}
+
+void AssemblyPropertyMapping::
+post (Type const&)
+{
+}
+
+// ComponentAssemblyDescription
+//
+//
+
+void ComponentAssemblyDescription::
+traverse (Type& o)
+{
+pre (o);
+instance (o);
+connection (o);
+externalProperty (o);
+post (o);
+}
+
+void ComponentAssemblyDescription::
+traverse (Type const& o)
+{
+pre (o);
+instance (o);
+connection (o);
+externalProperty (o);
+post (o);
+}
+
+void ComponentAssemblyDescription::
+pre (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+pre (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::instance_iterator b (o.begin_instance()), e (o.end_instance());
+
+if (b != e)
+{
+instance_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) instance_next (o);
+}
+
+instance_post (o);
+}
+}
+
+void ComponentAssemblyDescription::
+instance (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::instance_const_iterator b (o.begin_instance()), e (o.end_instance());
+
+if (b != e)
+{
+instance_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) instance_next (o);
+}
+
+instance_post (o);
+}
+}
+
+void ComponentAssemblyDescription::
+instance_pre (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance_pre (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance_next (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance_next (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance_post (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+instance_post (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::connection_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void ComponentAssemblyDescription::
+connection (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::connection_const_iterator b (o.begin_connection()), e (o.end_connection());
+
+if (b != e)
+{
+connection_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) connection_next (o);
+}
+
+connection_post (o);
+}
+
+else connection_none (o);
+}
+
+void ComponentAssemblyDescription::
+connection_pre (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_pre (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_next (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_next (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_post (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_post (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_none (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+connection_none (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::externalProperty_iterator b (o.begin_externalProperty()), e (o.end_externalProperty());
+
+if (b != e)
+{
+externalProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalProperty_next (o);
+}
+
+externalProperty_post (o);
+}
+
+else externalProperty_none (o);
+}
+
+void ComponentAssemblyDescription::
+externalProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentAssemblyDescription::Type::externalProperty_const_iterator b (o.begin_externalProperty()), e (o.end_externalProperty());
+
+if (b != e)
+{
+externalProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) externalProperty_next (o);
+}
+
+externalProperty_post (o);
+}
+
+else externalProperty_none (o);
+}
+
+void ComponentAssemblyDescription::
+externalProperty_pre (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_pre (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_next (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_next (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_post (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_post (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_none (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+externalProperty_none (Type const&)
+{
+}
+
+void ComponentAssemblyDescription::
+post (Type&)
+{
+}
+
+void ComponentAssemblyDescription::
+post (Type const&)
+{
+}
+
+// MonolithicImplementationDescription
+//
+//
+
+void MonolithicImplementationDescription::
+traverse (Type& o)
+{
+pre (o);
+nodeExecParameter (o);
+componentExecParameter (o);
+deployRequirement (o);
+primaryArtifact (o);
+post (o);
+}
+
+void MonolithicImplementationDescription::
+traverse (Type const& o)
+{
+pre (o);
+nodeExecParameter (o);
+componentExecParameter (o);
+deployRequirement (o);
+primaryArtifact (o);
+post (o);
+}
+
+void MonolithicImplementationDescription::
+pre (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+pre (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::nodeExecParameter_iterator b (o.begin_nodeExecParameter()), e (o.end_nodeExecParameter());
+
+if (b != e)
+{
+nodeExecParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) nodeExecParameter_next (o);
+}
+
+nodeExecParameter_post (o);
+}
+
+else nodeExecParameter_none (o);
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::nodeExecParameter_const_iterator b (o.begin_nodeExecParameter()), e (o.end_nodeExecParameter());
+
+if (b != e)
+{
+nodeExecParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) nodeExecParameter_next (o);
+}
+
+nodeExecParameter_post (o);
+}
+
+else nodeExecParameter_none (o);
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_pre (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_pre (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_next (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_next (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_post (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_post (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_none (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_none (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::componentExecParameter_iterator b (o.begin_componentExecParameter()), e (o.end_componentExecParameter());
+
+if (b != e)
+{
+componentExecParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) componentExecParameter_next (o);
+}
+
+componentExecParameter_post (o);
+}
+
+else componentExecParameter_none (o);
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::componentExecParameter_const_iterator b (o.begin_componentExecParameter()), e (o.end_componentExecParameter());
+
+if (b != e)
+{
+componentExecParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) componentExecParameter_next (o);
+}
+
+componentExecParameter_post (o);
+}
+
+else componentExecParameter_none (o);
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_pre (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_pre (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_next (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_next (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_post (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_post (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_none (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_none (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void MonolithicImplementationDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact (Type& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::primaryArtifact_iterator b (o.begin_primaryArtifact()), e (o.end_primaryArtifact());
+
+if (b != e)
+{
+primaryArtifact_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) primaryArtifact_next (o);
+}
+
+primaryArtifact_post (o);
+}
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact (Type const& o)
+{
+// VC6 anathema strikes again
+//
+MonolithicImplementationDescription::Type::primaryArtifact_const_iterator b (o.begin_primaryArtifact()), e (o.end_primaryArtifact());
+
+if (b != e)
+{
+primaryArtifact_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) primaryArtifact_next (o);
+}
+
+primaryArtifact_post (o);
+}
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_pre (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_pre (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_next (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_next (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_post (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_post (Type const&)
+{
+}
+
+void MonolithicImplementationDescription::
+post (Type&)
+{
+}
+
+void MonolithicImplementationDescription::
+post (Type const&)
+{
+}
+
+// ComponentImplementationDescription
+//
+//
+
+void ComponentImplementationDescription::
+traverse (Type& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.implements_p ()) implements (o);
+else implements_none (o);
+if (o.assemblyImpl_p ()) assemblyImpl (o);
+else assemblyImpl_none (o);
+if (o.monolithicImpl_p ()) monolithicImpl (o);
+else monolithicImpl_none (o);
+configProperty (o);
+capability (o);
+dependsOn (o);
+infoProperty (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ComponentImplementationDescription::
+traverse (Type const& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.implements_p ()) implements (o);
+else implements_none (o);
+if (o.assemblyImpl_p ()) assemblyImpl (o);
+else assemblyImpl_none (o);
+if (o.monolithicImpl_p ()) monolithicImpl (o);
+else monolithicImpl_none (o);
+configProperty (o);
+capability (o);
+dependsOn (o);
+infoProperty (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ComponentImplementationDescription::
+pre (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+pre (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void ComponentImplementationDescription::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void ComponentImplementationDescription::
+label_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+label_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+UUID (Type& o)
+{
+dispatch (o.UUID ());
+}
+
+void ComponentImplementationDescription::
+UUID (Type const& o)
+{
+dispatch (o.UUID ());
+}
+
+void ComponentImplementationDescription::
+UUID_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+UUID_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+implements (Type& o)
+{
+dispatch (o.implements ());
+}
+
+void ComponentImplementationDescription::
+implements (Type const& o)
+{
+dispatch (o.implements ());
+}
+
+void ComponentImplementationDescription::
+implements_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+implements_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+assemblyImpl (Type& o)
+{
+dispatch (o.assemblyImpl ());
+}
+
+void ComponentImplementationDescription::
+assemblyImpl (Type const& o)
+{
+dispatch (o.assemblyImpl ());
+}
+
+void ComponentImplementationDescription::
+assemblyImpl_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+assemblyImpl_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+monolithicImpl (Type& o)
+{
+dispatch (o.monolithicImpl ());
+}
+
+void ComponentImplementationDescription::
+monolithicImpl (Type const& o)
+{
+dispatch (o.monolithicImpl ());
+}
+
+void ComponentImplementationDescription::
+monolithicImpl_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+monolithicImpl_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void ComponentImplementationDescription::
+configProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void ComponentImplementationDescription::
+configProperty_pre (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_pre (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_next (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_next (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_post (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_post (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+configProperty_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+capability (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::capability_iterator b (o.begin_capability()), e (o.end_capability());
+
+if (b != e)
+{
+capability_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) capability_next (o);
+}
+
+capability_post (o);
+}
+
+else capability_none (o);
+}
+
+void ComponentImplementationDescription::
+capability (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::capability_const_iterator b (o.begin_capability()), e (o.end_capability());
+
+if (b != e)
+{
+capability_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) capability_next (o);
+}
+
+capability_post (o);
+}
+
+else capability_none (o);
+}
+
+void ComponentImplementationDescription::
+capability_pre (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_pre (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_next (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_next (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_post (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_post (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+capability_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+if (b != e)
+{
+dependsOn_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) dependsOn_next (o);
+}
+
+dependsOn_post (o);
+}
+
+else dependsOn_none (o);
+}
+
+void ComponentImplementationDescription::
+dependsOn (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+if (b != e)
+{
+dependsOn_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) dependsOn_next (o);
+}
+
+dependsOn_post (o);
+}
+
+else dependsOn_none (o);
+}
+
+void ComponentImplementationDescription::
+dependsOn_pre (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_pre (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_next (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_next (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_post (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_post (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+dependsOn_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ComponentImplementationDescription::
+infoProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentImplementationDescription::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ComponentImplementationDescription::
+infoProperty_pre (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_pre (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_next (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_next (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_post (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_post (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+infoProperty_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+contentLocation (Type& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ComponentImplementationDescription::
+contentLocation (Type const& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ComponentImplementationDescription::
+contentLocation_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+contentLocation_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+href (Type& o)
+{
+dispatch (o.href ());
+}
+
+void ComponentImplementationDescription::
+href (Type const& o)
+{
+dispatch (o.href ());
+}
+
+void ComponentImplementationDescription::
+href_none (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+href_none (Type const&)
+{
+}
+
+void ComponentImplementationDescription::
+post (Type&)
+{
+}
+
+void ComponentImplementationDescription::
+post (Type const&)
+{
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+// SubcomponentInstantiationDescription
+//
+//
+
+SubcomponentInstantiationDescription::
+SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SubcomponentInstantiationDescription::
+SubcomponentInstantiationDescription ()
+{
+}
+
+void SubcomponentInstantiationDescription::
+traverse (Type const& o)
+{
+Traversal::SubcomponentInstantiationDescription::traverse (o);
+}
+
+void SubcomponentInstantiationDescription::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::SubcomponentInstantiationDescription::name (o);
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+basePackage (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("basePackage", top_ ()));
+Traversal::SubcomponentInstantiationDescription::basePackage (o);
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+specializedConfig (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("specializedConfig", top_ ()));
+Traversal::SubcomponentInstantiationDescription::specializedConfig (o);
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("selectRequirement", top_ ()));
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_next (Type const& o)
+{
+selectRequirement_post (o);
+selectRequirement_pre (o);
+}
+
+void SubcomponentInstantiationDescription::
+selectRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_next (Type const& o)
+{
+configProperty_post (o);
+configProperty_pre (o);
+}
+
+void SubcomponentInstantiationDescription::
+configProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+referencedPackage (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("referencedPackage", top_ ()));
+Traversal::SubcomponentInstantiationDescription::referencedPackage (o);
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+importedPackage (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("importedPackage", top_ ()));
+Traversal::SubcomponentInstantiationDescription::importedPackage (o);
+pop_ ();
+}
+
+void SubcomponentInstantiationDescription::
+id (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("id", "", top_ ());
+attr_ (&a);
+Traversal::SubcomponentInstantiationDescription::id (o);
+attr_ (0);
+}
+
+// SubcomponentPropertyReference
+//
+//
+
+SubcomponentPropertyReference::
+SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+SubcomponentPropertyReference::
+SubcomponentPropertyReference ()
+{
+}
+
+void SubcomponentPropertyReference::
+traverse (Type const& o)
+{
+Traversal::SubcomponentPropertyReference::traverse (o);
+}
+
+void SubcomponentPropertyReference::
+propertyName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("propertyName", top_ ()));
+Traversal::SubcomponentPropertyReference::propertyName (o);
+pop_ ();
+}
+
+void SubcomponentPropertyReference::
+instance (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("instance", top_ ()));
+Traversal::SubcomponentPropertyReference::instance (o);
+pop_ ();
+}
+
+// AssemblyPropertyMapping
+//
+//
+
+AssemblyPropertyMapping::
+AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+AssemblyPropertyMapping::
+AssemblyPropertyMapping ()
+{
+}
+
+void AssemblyPropertyMapping::
+traverse (Type const& o)
+{
+Traversal::AssemblyPropertyMapping::traverse (o);
+}
+
+void AssemblyPropertyMapping::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::AssemblyPropertyMapping::name (o);
+pop_ ();
+}
+
+void AssemblyPropertyMapping::
+externalName (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalName", top_ ()));
+Traversal::AssemblyPropertyMapping::externalName (o);
+pop_ ();
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("delegatesTo", top_ ()));
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_next (Type const& o)
+{
+delegatesTo_post (o);
+delegatesTo_pre (o);
+}
+
+void AssemblyPropertyMapping::
+delegatesTo_post (Type const&)
+{
+pop_ ();
+}
+
+// ComponentAssemblyDescription
+//
+//
+
+ComponentAssemblyDescription::
+ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentAssemblyDescription::
+ComponentAssemblyDescription ()
+{
+}
+
+void ComponentAssemblyDescription::
+traverse (Type const& o)
+{
+Traversal::ComponentAssemblyDescription::traverse (o);
+}
+
+void ComponentAssemblyDescription::
+instance_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("instance", top_ ()));
+}
+
+void ComponentAssemblyDescription::
+instance_next (Type const& o)
+{
+instance_post (o);
+instance_pre (o);
+}
+
+void ComponentAssemblyDescription::
+instance_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentAssemblyDescription::
+connection_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("connection", top_ ()));
+}
+
+void ComponentAssemblyDescription::
+connection_next (Type const& o)
+{
+connection_post (o);
+connection_pre (o);
+}
+
+void ComponentAssemblyDescription::
+connection_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentAssemblyDescription::
+externalProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("externalProperty", top_ ()));
+}
+
+void ComponentAssemblyDescription::
+externalProperty_next (Type const& o)
+{
+externalProperty_post (o);
+externalProperty_pre (o);
+}
+
+void ComponentAssemblyDescription::
+externalProperty_post (Type const&)
+{
+pop_ ();
+}
+
+// MonolithicImplementationDescription
+//
+//
+
+MonolithicImplementationDescription::
+MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+MonolithicImplementationDescription::
+MonolithicImplementationDescription ()
+{
+}
+
+void MonolithicImplementationDescription::
+traverse (Type const& o)
+{
+Traversal::MonolithicImplementationDescription::traverse (o);
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("nodeExecParameter", top_ ()));
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_next (Type const& o)
+{
+nodeExecParameter_post (o);
+nodeExecParameter_pre (o);
+}
+
+void MonolithicImplementationDescription::
+nodeExecParameter_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("componentExecParameter", top_ ()));
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_next (Type const& o)
+{
+componentExecParameter_post (o);
+componentExecParameter_pre (o);
+}
+
+void MonolithicImplementationDescription::
+componentExecParameter_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void MonolithicImplementationDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("primaryArtifact", top_ ()));
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_next (Type const& o)
+{
+primaryArtifact_post (o);
+primaryArtifact_pre (o);
+}
+
+void MonolithicImplementationDescription::
+primaryArtifact_post (Type const&)
+{
+pop_ ();
+}
+
+// ComponentImplementationDescription
+//
+//
+
+ComponentImplementationDescription::
+ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentImplementationDescription::
+ComponentImplementationDescription ()
+{
+}
+
+void ComponentImplementationDescription::
+traverse (Type const& o)
+{
+Traversal::ComponentImplementationDescription::traverse (o);
+}
+
+void ComponentImplementationDescription::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::ComponentImplementationDescription::label (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+UUID (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+Traversal::ComponentImplementationDescription::UUID (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+implements (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("implements", top_ ()));
+Traversal::ComponentImplementationDescription::implements (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+assemblyImpl (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("assemblyImpl", top_ ()));
+Traversal::ComponentImplementationDescription::assemblyImpl (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+monolithicImpl (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("monolithicImpl", top_ ()));
+Traversal::ComponentImplementationDescription::monolithicImpl (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+configProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+}
+
+void ComponentImplementationDescription::
+configProperty_next (Type const& o)
+{
+configProperty_post (o);
+configProperty_pre (o);
+}
+
+void ComponentImplementationDescription::
+configProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+capability_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("capability", top_ ()));
+}
+
+void ComponentImplementationDescription::
+capability_next (Type const& o)
+{
+capability_post (o);
+capability_pre (o);
+}
+
+void ComponentImplementationDescription::
+capability_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+dependsOn_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dependsOn", top_ ()));
+}
+
+void ComponentImplementationDescription::
+dependsOn_next (Type const& o)
+{
+dependsOn_post (o);
+dependsOn_pre (o);
+}
+
+void ComponentImplementationDescription::
+dependsOn_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+infoProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+}
+
+void ComponentImplementationDescription::
+infoProperty_next (Type const& o)
+{
+infoProperty_post (o);
+infoProperty_pre (o);
+}
+
+void ComponentImplementationDescription::
+infoProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+contentLocation (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("contentLocation", top_ ()));
+Traversal::ComponentImplementationDescription::contentLocation (o);
+pop_ ();
+}
+
+void ComponentImplementationDescription::
+href (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("href", "", top_ ());
+attr_ (&a);
+Traversal::ComponentImplementationDescription::href (o);
+attr_ (0);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/cid.hpp b/modules/CIAO/tools/Config_Handlers/cid.hpp
new file mode 100644
index 00000000000..069c7407eae
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cid.hpp
@@ -0,0 +1,2061 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef CID_HPP
+#define CID_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class SubcomponentInstantiationDescription;
+class SubcomponentPropertyReference;
+class AssemblyPropertyMapping;
+class ComponentAssemblyDescription;
+class MonolithicImplementationDescription;
+class ComponentImplementationDescription;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+#include "cpd.hpp"
+
+#include "iad.hpp"
+
+#include "pcd.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export SubcomponentInstantiationDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// basePackage
+//
+public:
+bool basePackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageDescription const& basePackage () const;
+void basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > basePackage_;
+
+// specializedConfig
+//
+public:
+bool specializedConfig_p () const;
+::CIAO::Config_Handlers::PackageConfiguration const& specializedConfig () const;
+void specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > specializedConfig_;
+
+// selectRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator selectRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator selectRequirement_const_iterator;
+selectRequirement_iterator begin_selectRequirement ();
+selectRequirement_iterator end_selectRequirement ();
+selectRequirement_const_iterator begin_selectRequirement () const;
+selectRequirement_const_iterator end_selectRequirement () const;
+void add_selectRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_selectRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > selectRequirement_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// referencedPackage
+//
+public:
+bool referencedPackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageReference const& referencedPackage () const;
+void referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > referencedPackage_;
+
+// importedPackage
+//
+public:
+bool importedPackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageImport const& importedPackage () const;
+void importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > importedPackage_;
+
+// id
+//
+public:
+bool id_p () const;
+::XMLSchema::ID< ACE_TCHAR > const& id () const;
+::XMLSchema::ID< ACE_TCHAR >& id ();
+void id (::XMLSchema::ID< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::ID< ACE_TCHAR > > id_;
+
+public:
+SubcomponentInstantiationDescription (::XMLSchema::string< ACE_TCHAR > const& name__);
+
+SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SubcomponentInstantiationDescription (SubcomponentInstantiationDescription const& s);
+
+SubcomponentInstantiationDescription&
+operator= (SubcomponentInstantiationDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export SubcomponentPropertyReference : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// propertyName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& propertyName () const;
+void propertyName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > propertyName_;
+
+// instance
+//
+public:
+::XMLSchema::IDREF< ACE_TCHAR > const& instance () const;
+void instance (::XMLSchema::IDREF< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::IDREF< ACE_TCHAR > > instance_;
+
+public:
+SubcomponentPropertyReference (::XMLSchema::string< ACE_TCHAR > const& propertyName__,
+::XMLSchema::IDREF< ACE_TCHAR > const& instance__);
+
+SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR > const&);
+SubcomponentPropertyReference (SubcomponentPropertyReference const& s);
+
+SubcomponentPropertyReference&
+operator= (SubcomponentPropertyReference const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export AssemblyPropertyMapping : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// externalName
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& externalName () const;
+void externalName (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > externalName_;
+
+// delegatesTo
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentPropertyReference >::iterator delegatesTo_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentPropertyReference >::const_iterator delegatesTo_const_iterator;
+delegatesTo_iterator begin_delegatesTo ();
+delegatesTo_iterator end_delegatesTo ();
+delegatesTo_const_iterator begin_delegatesTo () const;
+delegatesTo_const_iterator end_delegatesTo () const;
+void add_delegatesTo (::CIAO::Config_Handlers::SubcomponentPropertyReference const& );
+size_t count_delegatesTo (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SubcomponentPropertyReference > delegatesTo_;
+
+public:
+AssemblyPropertyMapping (::XMLSchema::string< ACE_TCHAR > const& name__,
+::XMLSchema::string< ACE_TCHAR > const& externalName__);
+
+AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR > const&);
+AssemblyPropertyMapping (AssemblyPropertyMapping const& s);
+
+AssemblyPropertyMapping&
+operator= (AssemblyPropertyMapping const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentAssemblyDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// instance
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentInstantiationDescription >::iterator instance_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::SubcomponentInstantiationDescription >::const_iterator instance_const_iterator;
+instance_iterator begin_instance ();
+instance_iterator end_instance ();
+instance_const_iterator begin_instance () const;
+instance_const_iterator end_instance () const;
+void add_instance (::CIAO::Config_Handlers::SubcomponentInstantiationDescription const& );
+size_t count_instance (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::SubcomponentInstantiationDescription > instance_;
+
+// connection
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::AssemblyConnectionDescription >::iterator connection_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::AssemblyConnectionDescription >::const_iterator connection_const_iterator;
+connection_iterator begin_connection ();
+connection_iterator end_connection ();
+connection_const_iterator begin_connection () const;
+connection_const_iterator end_connection () const;
+void add_connection (::CIAO::Config_Handlers::AssemblyConnectionDescription const& );
+size_t count_connection (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::AssemblyConnectionDescription > connection_;
+
+// externalProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::AssemblyPropertyMapping >::iterator externalProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::AssemblyPropertyMapping >::const_iterator externalProperty_const_iterator;
+externalProperty_iterator begin_externalProperty ();
+externalProperty_iterator end_externalProperty ();
+externalProperty_const_iterator begin_externalProperty () const;
+externalProperty_const_iterator end_externalProperty () const;
+void add_externalProperty (::CIAO::Config_Handlers::AssemblyPropertyMapping const& );
+size_t count_externalProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::AssemblyPropertyMapping > externalProperty_;
+
+public:
+ComponentAssemblyDescription ();
+
+ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentAssemblyDescription (ComponentAssemblyDescription const& s);
+
+ComponentAssemblyDescription&
+operator= (ComponentAssemblyDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export MonolithicImplementationDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// nodeExecParameter
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator nodeExecParameter_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator nodeExecParameter_const_iterator;
+nodeExecParameter_iterator begin_nodeExecParameter ();
+nodeExecParameter_iterator end_nodeExecParameter ();
+nodeExecParameter_const_iterator begin_nodeExecParameter () const;
+nodeExecParameter_const_iterator end_nodeExecParameter () const;
+void add_nodeExecParameter (::CIAO::Config_Handlers::Property const& );
+size_t count_nodeExecParameter (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > nodeExecParameter_;
+
+// componentExecParameter
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator componentExecParameter_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator componentExecParameter_const_iterator;
+componentExecParameter_iterator begin_componentExecParameter ();
+componentExecParameter_iterator end_componentExecParameter ();
+componentExecParameter_const_iterator begin_componentExecParameter () const;
+componentExecParameter_const_iterator end_componentExecParameter () const;
+void add_componentExecParameter (::CIAO::Config_Handlers::Property const& );
+size_t count_componentExecParameter (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > componentExecParameter_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ImplementationRequirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ImplementationRequirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::ImplementationRequirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ImplementationRequirement > deployRequirement_;
+
+// primaryArtifact
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact >::iterator primaryArtifact_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact >::const_iterator primaryArtifact_const_iterator;
+primaryArtifact_iterator begin_primaryArtifact ();
+primaryArtifact_iterator end_primaryArtifact ();
+primaryArtifact_const_iterator begin_primaryArtifact () const;
+primaryArtifact_const_iterator end_primaryArtifact () const;
+void add_primaryArtifact (::CIAO::Config_Handlers::NamedImplementationArtifact const& );
+size_t count_primaryArtifact (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact > primaryArtifact_;
+
+public:
+MonolithicImplementationDescription ();
+
+MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+MonolithicImplementationDescription (MonolithicImplementationDescription const& s);
+
+MonolithicImplementationDescription&
+operator= (MonolithicImplementationDescription const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentImplementationDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// implements
+//
+public:
+bool implements_p () const;
+::CIAO::Config_Handlers::ComponentInterfaceDescription const& implements () const;
+void implements (::CIAO::Config_Handlers::ComponentInterfaceDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > implements_;
+
+// assemblyImpl
+//
+public:
+bool assemblyImpl_p () const;
+::CIAO::Config_Handlers::ComponentAssemblyDescription const& assemblyImpl () const;
+void assemblyImpl (::CIAO::Config_Handlers::ComponentAssemblyDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentAssemblyDescription > assemblyImpl_;
+
+// monolithicImpl
+//
+public:
+bool monolithicImpl_p () const;
+::CIAO::Config_Handlers::MonolithicImplementationDescription const& monolithicImpl () const;
+void monolithicImpl (::CIAO::Config_Handlers::MonolithicImplementationDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::MonolithicImplementationDescription > monolithicImpl_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// capability
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Capability >::iterator capability_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Capability >::const_iterator capability_const_iterator;
+capability_iterator begin_capability ();
+capability_iterator end_capability ();
+capability_const_iterator begin_capability () const;
+capability_const_iterator end_capability () const;
+void add_capability (::CIAO::Config_Handlers::Capability const& );
+size_t count_capability (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Capability > capability_;
+
+// dependsOn
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::iterator dependsOn_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::ImplementationDependency >::const_iterator dependsOn_const_iterator;
+dependsOn_iterator begin_dependsOn ();
+dependsOn_iterator end_dependsOn ();
+dependsOn_const_iterator begin_dependsOn () const;
+dependsOn_const_iterator end_dependsOn () const;
+void add_dependsOn (::CIAO::Config_Handlers::ImplementationDependency const& );
+size_t count_dependsOn (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::ImplementationDependency > dependsOn_;
+
+// infoProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+infoProperty_iterator begin_infoProperty ();
+infoProperty_iterator end_infoProperty ();
+infoProperty_const_iterator begin_infoProperty () const;
+infoProperty_const_iterator end_infoProperty () const;
+void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_infoProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+// contentLocation
+//
+public:
+bool contentLocation_p () const;
+::XMLSchema::string< ACE_TCHAR > const& contentLocation () const;
+void contentLocation (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_;
+
+// href
+//
+public:
+bool href_p () const;
+::XMLSchema::string< ACE_TCHAR > const& href () const;
+::XMLSchema::string< ACE_TCHAR >& href ();
+void href (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_;
+
+public:
+ComponentImplementationDescription ();
+
+ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentImplementationDescription (ComponentImplementationDescription const& s);
+
+ComponentImplementationDescription&
+operator= (ComponentImplementationDescription const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export SubcomponentInstantiationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentInstantiationDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+basePackage (Type&);
+
+virtual void
+basePackage (Type const&);
+
+virtual void
+basePackage_none (Type&);
+
+virtual void
+basePackage_none (Type const&);
+
+virtual void
+specializedConfig (Type&);
+
+virtual void
+specializedConfig (Type const&);
+
+virtual void
+specializedConfig_none (Type&);
+
+virtual void
+specializedConfig_none (Type const&);
+
+virtual void
+selectRequirement (Type&);
+
+virtual void
+selectRequirement (Type const&);
+
+virtual void
+selectRequirement_pre (Type&);
+
+virtual void
+selectRequirement_pre (Type const&);
+
+virtual void
+selectRequirement_next (Type&);
+
+virtual void
+selectRequirement_next (Type const&);
+
+virtual void
+selectRequirement_post (Type&);
+
+virtual void
+selectRequirement_post (Type const&);
+
+virtual void
+selectRequirement_none (Type&);
+
+virtual void
+selectRequirement_none (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+referencedPackage (Type&);
+
+virtual void
+referencedPackage (Type const&);
+
+virtual void
+referencedPackage_none (Type&);
+
+virtual void
+referencedPackage_none (Type const&);
+
+virtual void
+importedPackage (Type&);
+
+virtual void
+importedPackage (Type const&);
+
+virtual void
+importedPackage_none (Type&);
+
+virtual void
+importedPackage_none (Type const&);
+
+virtual void
+id (Type&);
+
+virtual void
+id (Type const&);
+
+virtual void
+id_none (Type&);
+
+virtual void
+id_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export SubcomponentPropertyReference : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::SubcomponentPropertyReference >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+propertyName (Type&);
+
+virtual void
+propertyName (Type const&);
+
+virtual void
+instance (Type&);
+
+virtual void
+instance (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export AssemblyPropertyMapping : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::AssemblyPropertyMapping >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+externalName (Type&);
+
+virtual void
+externalName (Type const&);
+
+virtual void
+delegatesTo (Type&);
+
+virtual void
+delegatesTo (Type const&);
+
+virtual void
+delegatesTo_pre (Type&);
+
+virtual void
+delegatesTo_pre (Type const&);
+
+virtual void
+delegatesTo_next (Type&);
+
+virtual void
+delegatesTo_next (Type const&);
+
+virtual void
+delegatesTo_post (Type&);
+
+virtual void
+delegatesTo_post (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentAssemblyDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentAssemblyDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+instance (Type&);
+
+virtual void
+instance (Type const&);
+
+virtual void
+instance_pre (Type&);
+
+virtual void
+instance_pre (Type const&);
+
+virtual void
+instance_next (Type&);
+
+virtual void
+instance_next (Type const&);
+
+virtual void
+instance_post (Type&);
+
+virtual void
+instance_post (Type const&);
+
+virtual void
+connection (Type&);
+
+virtual void
+connection (Type const&);
+
+virtual void
+connection_pre (Type&);
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type&);
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type&);
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+connection_none (Type&);
+
+virtual void
+connection_none (Type const&);
+
+virtual void
+externalProperty (Type&);
+
+virtual void
+externalProperty (Type const&);
+
+virtual void
+externalProperty_pre (Type&);
+
+virtual void
+externalProperty_pre (Type const&);
+
+virtual void
+externalProperty_next (Type&);
+
+virtual void
+externalProperty_next (Type const&);
+
+virtual void
+externalProperty_post (Type&);
+
+virtual void
+externalProperty_post (Type const&);
+
+virtual void
+externalProperty_none (Type&);
+
+virtual void
+externalProperty_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export MonolithicImplementationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::MonolithicImplementationDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+nodeExecParameter (Type&);
+
+virtual void
+nodeExecParameter (Type const&);
+
+virtual void
+nodeExecParameter_pre (Type&);
+
+virtual void
+nodeExecParameter_pre (Type const&);
+
+virtual void
+nodeExecParameter_next (Type&);
+
+virtual void
+nodeExecParameter_next (Type const&);
+
+virtual void
+nodeExecParameter_post (Type&);
+
+virtual void
+nodeExecParameter_post (Type const&);
+
+virtual void
+nodeExecParameter_none (Type&);
+
+virtual void
+nodeExecParameter_none (Type const&);
+
+virtual void
+componentExecParameter (Type&);
+
+virtual void
+componentExecParameter (Type const&);
+
+virtual void
+componentExecParameter_pre (Type&);
+
+virtual void
+componentExecParameter_pre (Type const&);
+
+virtual void
+componentExecParameter_next (Type&);
+
+virtual void
+componentExecParameter_next (Type const&);
+
+virtual void
+componentExecParameter_post (Type&);
+
+virtual void
+componentExecParameter_post (Type const&);
+
+virtual void
+componentExecParameter_none (Type&);
+
+virtual void
+componentExecParameter_none (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+primaryArtifact (Type&);
+
+virtual void
+primaryArtifact (Type const&);
+
+virtual void
+primaryArtifact_pre (Type&);
+
+virtual void
+primaryArtifact_pre (Type const&);
+
+virtual void
+primaryArtifact_next (Type&);
+
+virtual void
+primaryArtifact_next (Type const&);
+
+virtual void
+primaryArtifact_post (Type&);
+
+virtual void
+primaryArtifact_post (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentImplementationDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentImplementationDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+implements (Type&);
+
+virtual void
+implements (Type const&);
+
+virtual void
+implements_none (Type&);
+
+virtual void
+implements_none (Type const&);
+
+virtual void
+assemblyImpl (Type&);
+
+virtual void
+assemblyImpl (Type const&);
+
+virtual void
+assemblyImpl_none (Type&);
+
+virtual void
+assemblyImpl_none (Type const&);
+
+virtual void
+monolithicImpl (Type&);
+
+virtual void
+monolithicImpl (Type const&);
+
+virtual void
+monolithicImpl_none (Type&);
+
+virtual void
+monolithicImpl_none (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+capability (Type&);
+
+virtual void
+capability (Type const&);
+
+virtual void
+capability_pre (Type&);
+
+virtual void
+capability_pre (Type const&);
+
+virtual void
+capability_next (Type&);
+
+virtual void
+capability_next (Type const&);
+
+virtual void
+capability_post (Type&);
+
+virtual void
+capability_post (Type const&);
+
+virtual void
+capability_none (Type&);
+
+virtual void
+capability_none (Type const&);
+
+virtual void
+dependsOn (Type&);
+
+virtual void
+dependsOn (Type const&);
+
+virtual void
+dependsOn_pre (Type&);
+
+virtual void
+dependsOn_pre (Type const&);
+
+virtual void
+dependsOn_next (Type&);
+
+virtual void
+dependsOn_next (Type const&);
+
+virtual void
+dependsOn_post (Type&);
+
+virtual void
+dependsOn_post (Type const&);
+
+virtual void
+dependsOn_none (Type&);
+
+virtual void
+dependsOn_none (Type const&);
+
+virtual void
+infoProperty (Type&);
+
+virtual void
+infoProperty (Type const&);
+
+virtual void
+infoProperty_pre (Type&);
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type&);
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type&);
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+infoProperty_none (Type&);
+
+virtual void
+infoProperty_none (Type const&);
+
+virtual void
+contentLocation (Type&);
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+contentLocation_none (Type&);
+
+virtual void
+contentLocation_none (Type const&);
+
+virtual void
+href (Type&);
+
+virtual void
+href (Type const&);
+
+virtual void
+href_none (Type&);
+
+virtual void
+href_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct SubcomponentInstantiationDescription : Traversal::SubcomponentInstantiationDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::SubcomponentInstantiationDescription Type;
+SubcomponentInstantiationDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+basePackage (Type &o)
+{
+
+this->basePackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+basePackage (Type const&);
+
+virtual void
+specializedConfig (Type &o)
+{
+
+this->specializedConfig (const_cast <Type const &> (o));
+}
+
+
+virtual void
+specializedConfig (Type const&);
+
+virtual void
+selectRequirement_pre (Type &o)
+{
+
+this->selectRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_pre (Type const&);
+
+virtual void
+selectRequirement_next (Type &o)
+{
+
+this->selectRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_next (Type const&);
+
+virtual void
+selectRequirement_post (Type &o)
+{
+
+this->selectRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_post (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+referencedPackage (Type &o)
+{
+
+this->referencedPackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+referencedPackage (Type const&);
+
+virtual void
+importedPackage (Type &o)
+{
+
+this->importedPackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+importedPackage (Type const&);
+
+virtual void
+id (Type &o)
+{
+
+this->id (const_cast <Type const &> (o));
+}
+
+
+virtual void
+id (Type const&);
+
+protected:
+SubcomponentInstantiationDescription ();
+};
+
+struct SubcomponentPropertyReference : Traversal::SubcomponentPropertyReference,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::SubcomponentPropertyReference Type;
+SubcomponentPropertyReference (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+propertyName (Type &o)
+{
+
+this->propertyName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+propertyName (Type const&);
+
+virtual void
+instance (Type &o)
+{
+
+this->instance (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance (Type const&);
+
+protected:
+SubcomponentPropertyReference ();
+};
+
+struct AssemblyPropertyMapping : Traversal::AssemblyPropertyMapping,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::AssemblyPropertyMapping Type;
+AssemblyPropertyMapping (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+externalName (Type &o)
+{
+
+this->externalName (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalName (Type const&);
+
+virtual void
+delegatesTo_pre (Type &o)
+{
+
+this->delegatesTo_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+delegatesTo_pre (Type const&);
+
+virtual void
+delegatesTo_next (Type &o)
+{
+
+this->delegatesTo_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+delegatesTo_next (Type const&);
+
+virtual void
+delegatesTo_post (Type &o)
+{
+
+this->delegatesTo_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+delegatesTo_post (Type const&);
+
+protected:
+AssemblyPropertyMapping ();
+};
+
+struct ComponentAssemblyDescription : Traversal::ComponentAssemblyDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentAssemblyDescription Type;
+ComponentAssemblyDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+instance_pre (Type &o)
+{
+
+this->instance_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance_pre (Type const&);
+
+virtual void
+instance_next (Type &o)
+{
+
+this->instance_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance_next (Type const&);
+
+virtual void
+instance_post (Type &o)
+{
+
+this->instance_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+instance_post (Type const&);
+
+virtual void
+connection_pre (Type &o)
+{
+
+this->connection_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_pre (Type const&);
+
+virtual void
+connection_next (Type &o)
+{
+
+this->connection_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_next (Type const&);
+
+virtual void
+connection_post (Type &o)
+{
+
+this->connection_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+connection_post (Type const&);
+
+virtual void
+externalProperty_pre (Type &o)
+{
+
+this->externalProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalProperty_pre (Type const&);
+
+virtual void
+externalProperty_next (Type &o)
+{
+
+this->externalProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalProperty_next (Type const&);
+
+virtual void
+externalProperty_post (Type &o)
+{
+
+this->externalProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+externalProperty_post (Type const&);
+
+protected:
+ComponentAssemblyDescription ();
+};
+
+struct MonolithicImplementationDescription : Traversal::MonolithicImplementationDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::MonolithicImplementationDescription Type;
+MonolithicImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+nodeExecParameter_pre (Type &o)
+{
+
+this->nodeExecParameter_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+nodeExecParameter_pre (Type const&);
+
+virtual void
+nodeExecParameter_next (Type &o)
+{
+
+this->nodeExecParameter_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+nodeExecParameter_next (Type const&);
+
+virtual void
+nodeExecParameter_post (Type &o)
+{
+
+this->nodeExecParameter_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+nodeExecParameter_post (Type const&);
+
+virtual void
+componentExecParameter_pre (Type &o)
+{
+
+this->componentExecParameter_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+componentExecParameter_pre (Type const&);
+
+virtual void
+componentExecParameter_next (Type &o)
+{
+
+this->componentExecParameter_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+componentExecParameter_next (Type const&);
+
+virtual void
+componentExecParameter_post (Type &o)
+{
+
+this->componentExecParameter_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+componentExecParameter_post (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+primaryArtifact_pre (Type &o)
+{
+
+this->primaryArtifact_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+primaryArtifact_pre (Type const&);
+
+virtual void
+primaryArtifact_next (Type &o)
+{
+
+this->primaryArtifact_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+primaryArtifact_next (Type const&);
+
+virtual void
+primaryArtifact_post (Type &o)
+{
+
+this->primaryArtifact_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+primaryArtifact_post (Type const&);
+
+protected:
+MonolithicImplementationDescription ();
+};
+
+struct ComponentImplementationDescription : Traversal::ComponentImplementationDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentImplementationDescription Type;
+ComponentImplementationDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+implements (Type &o)
+{
+
+this->implements (const_cast <Type const &> (o));
+}
+
+
+virtual void
+implements (Type const&);
+
+virtual void
+assemblyImpl (Type &o)
+{
+
+this->assemblyImpl (const_cast <Type const &> (o));
+}
+
+
+virtual void
+assemblyImpl (Type const&);
+
+virtual void
+monolithicImpl (Type &o)
+{
+
+this->monolithicImpl (const_cast <Type const &> (o));
+}
+
+
+virtual void
+monolithicImpl (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+capability_pre (Type &o)
+{
+
+this->capability_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+capability_pre (Type const&);
+
+virtual void
+capability_next (Type &o)
+{
+
+this->capability_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+capability_next (Type const&);
+
+virtual void
+capability_post (Type &o)
+{
+
+this->capability_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+capability_post (Type const&);
+
+virtual void
+dependsOn_pre (Type &o)
+{
+
+this->dependsOn_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_pre (Type const&);
+
+virtual void
+dependsOn_next (Type &o)
+{
+
+this->dependsOn_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_next (Type const&);
+
+virtual void
+dependsOn_post (Type &o)
+{
+
+this->dependsOn_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_post (Type const&);
+
+virtual void
+infoProperty_pre (Type &o)
+{
+
+this->infoProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type &o)
+{
+
+this->infoProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type &o)
+{
+
+this->infoProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+contentLocation (Type &o)
+{
+
+this->contentLocation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+href (Type &o)
+{
+
+this->href (const_cast <Type const &> (o));
+}
+
+
+virtual void
+href (Type const&);
+
+protected:
+ComponentImplementationDescription ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // CID_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/cpd.cpp b/modules/CIAO/tools/Config_Handlers/cpd.cpp
new file mode 100644
index 00000000000..234843d14d4
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cpd.cpp
@@ -0,0 +1,1268 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "cpd.hpp"
+#include <iostream>
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // PackagedComponentImplementation
+ //
+
+ PackagedComponentImplementation::
+ PackagedComponentImplementation (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ referencedImplementation_ (new ::CIAO::Config_Handlers::ComponentImplementationDescription (referencedImplementation__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ referencedImplementation_->container (this);
+ }
+
+ PackagedComponentImplementation::
+ PackagedComponentImplementation (::CIAO::Config_Handlers::PackagedComponentImplementation const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+referencedImplementation_ (new ::CIAO::Config_Handlers::ComponentImplementationDescription (*s.referencedImplementation_)),
+regulator__ ()
+{
+name_->container (this);
+referencedImplementation_->container (this);
+}
+
+::CIAO::Config_Handlers::PackagedComponentImplementation& PackagedComponentImplementation::
+operator= (::CIAO::Config_Handlers::PackagedComponentImplementation const& s)
+{
+name (s.name ());
+
+referencedImplementation (s.referencedImplementation ());
+
+return *this;
+}
+
+
+// PackagedComponentImplementation
+//
+::XMLSchema::string< ACE_TCHAR > const& PackagedComponentImplementation::
+name () const
+{
+return *name_;
+}
+
+void PackagedComponentImplementation::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// PackagedComponentImplementation
+//
+::CIAO::Config_Handlers::ComponentImplementationDescription const& PackagedComponentImplementation::
+referencedImplementation () const
+{
+return *referencedImplementation_;
+}
+
+void PackagedComponentImplementation::
+referencedImplementation (::CIAO::Config_Handlers::ComponentImplementationDescription const& e)
+{
+*referencedImplementation_ = e;
+}
+
+
+// ComponentPackageDescription
+//
+
+ComponentPackageDescription::
+ComponentPackageDescription ()
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+}
+
+ComponentPackageDescription::
+ComponentPackageDescription (::CIAO::Config_Handlers::ComponentPackageDescription const& s)
+:
+::XSCRT::Type (),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+realizes_ (s.realizes_.get () ? new ::CIAO::Config_Handlers::ComponentInterfaceDescription (*s.realizes_) : 0),
+contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0),
+href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0),
+regulator__ ()
+{
+if (label_.get ()) label_->container (this);
+if (UUID_.get ()) UUID_->container (this);
+if (realizes_.get ()) realizes_->container (this);
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+{
+for (implementation_const_iterator i (s.implementation_.begin ());i != s.implementation_.end ();++i) add_implementation (*i);
+}
+
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+if (contentLocation_.get ()) contentLocation_->container (this);
+if (href_.get ()) href_->container (this);
+}
+
+::CIAO::Config_Handlers::ComponentPackageDescription& ComponentPackageDescription::
+operator= (::CIAO::Config_Handlers::ComponentPackageDescription const& s)
+{
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.UUID_.get ()) UUID (*(s.UUID_));
+else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.realizes_.get ()) realizes (*(s.realizes_));
+else realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (0);
+
+configProperty_.clear ();
+{
+for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+}
+
+implementation_.clear ();
+{
+for (implementation_const_iterator i (s.implementation_.begin ());i != s.implementation_.end ();++i) add_implementation (*i);
+}
+
+infoProperty_.clear ();
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+if (s.contentLocation_.get ()) contentLocation (*(s.contentLocation_));
+else contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.href_.get ()) href (*(s.href_));
+else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// ComponentPackageDescription
+//
+bool ComponentPackageDescription::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription::
+label () const
+{
+return *label_;
+}
+
+void ComponentPackageDescription::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// ComponentPackageDescription
+//
+bool ComponentPackageDescription::
+UUID_p () const
+{
+return UUID_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription::
+UUID () const
+{
+return *UUID_;
+}
+
+void ComponentPackageDescription::
+UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (UUID_.get ())
+{
+*UUID_ = e;
+}
+
+else
+{
+UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+UUID_->container (this);
+}
+}
+
+// ComponentPackageDescription
+//
+bool ComponentPackageDescription::
+realizes_p () const
+{
+return realizes_.get () != 0;
+}
+
+::CIAO::Config_Handlers::ComponentInterfaceDescription const& ComponentPackageDescription::
+realizes () const
+{
+return *realizes_;
+}
+
+void ComponentPackageDescription::
+realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& e)
+{
+if (realizes_.get ())
+{
+*realizes_ = e;
+}
+
+else
+{
+realizes_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > (new ::CIAO::Config_Handlers::ComponentInterfaceDescription (e));
+realizes_->container (this);
+}
+}
+
+// ComponentPackageDescription
+//
+ComponentPackageDescription::configProperty_iterator ComponentPackageDescription::
+begin_configProperty ()
+{
+return configProperty_.begin ();
+}
+
+ComponentPackageDescription::configProperty_iterator ComponentPackageDescription::
+end_configProperty ()
+{
+return configProperty_.end ();
+}
+
+ComponentPackageDescription::configProperty_const_iterator ComponentPackageDescription::
+begin_configProperty () const
+{
+return configProperty_.begin ();
+}
+
+ComponentPackageDescription::configProperty_const_iterator ComponentPackageDescription::
+end_configProperty () const
+{
+return configProperty_.end ();
+}
+
+void ComponentPackageDescription::
+add_configProperty (::CIAO::Config_Handlers::Property const& e)
+{
+configProperty_.push_back (e);
+}
+
+size_t ComponentPackageDescription::
+count_configProperty(void) const
+{
+return configProperty_.size ();
+}
+
+// ComponentPackageDescription
+//
+ComponentPackageDescription::implementation_iterator ComponentPackageDescription::
+begin_implementation ()
+{
+return implementation_.begin ();
+}
+
+ComponentPackageDescription::implementation_iterator ComponentPackageDescription::
+end_implementation ()
+{
+return implementation_.end ();
+}
+
+ComponentPackageDescription::implementation_const_iterator ComponentPackageDescription::
+begin_implementation () const
+{
+return implementation_.begin ();
+}
+
+ComponentPackageDescription::implementation_const_iterator ComponentPackageDescription::
+end_implementation () const
+{
+return implementation_.end ();
+}
+
+void ComponentPackageDescription::
+add_implementation (::CIAO::Config_Handlers::PackagedComponentImplementation const& e)
+{
+implementation_.push_back (e);
+}
+
+size_t ComponentPackageDescription::
+count_implementation(void) const
+{
+return implementation_.size ();
+}
+
+// ComponentPackageDescription
+//
+ComponentPackageDescription::infoProperty_iterator ComponentPackageDescription::
+begin_infoProperty ()
+{
+return infoProperty_.begin ();
+}
+
+ComponentPackageDescription::infoProperty_iterator ComponentPackageDescription::
+end_infoProperty ()
+{
+return infoProperty_.end ();
+}
+
+ComponentPackageDescription::infoProperty_const_iterator ComponentPackageDescription::
+begin_infoProperty () const
+{
+return infoProperty_.begin ();
+}
+
+ComponentPackageDescription::infoProperty_const_iterator ComponentPackageDescription::
+end_infoProperty () const
+{
+return infoProperty_.end ();
+}
+
+void ComponentPackageDescription::
+add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+{
+infoProperty_.push_back (e);
+}
+
+size_t ComponentPackageDescription::
+count_infoProperty(void) const
+{
+return infoProperty_.size ();
+}
+
+// ComponentPackageDescription
+//
+bool ComponentPackageDescription::
+contentLocation_p () const
+{
+return contentLocation_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription::
+contentLocation () const
+{
+return *contentLocation_;
+}
+
+void ComponentPackageDescription::
+contentLocation (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (contentLocation_.get ())
+{
+*contentLocation_ = e;
+}
+
+else
+{
+contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+contentLocation_->container (this);
+}
+}
+
+// ComponentPackageDescription
+//
+bool ComponentPackageDescription::
+href_p () const
+{
+return href_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ComponentPackageDescription::
+href () const
+{
+return *href_;
+}
+
+::XMLSchema::string< ACE_TCHAR >& ComponentPackageDescription::
+href ()
+{
+return *href_;
+}
+
+void ComponentPackageDescription::
+href (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (href_.get ())
+{
+*href_ = e;
+}
+
+else
+{
+href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+href_->container (this);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+// PackagedComponentImplementation
+//
+
+PackagedComponentImplementation::
+PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "referencedImplementation")
+{
+referencedImplementation_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentImplementationDescription > (new ::CIAO::Config_Handlers::ComponentImplementationDescription (e));
+referencedImplementation_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ComponentPackageDescription
+//
+
+ComponentPackageDescription::
+ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "UUID")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+UUID (t);
+}
+
+else if (n == "realizes")
+{
+::CIAO::Config_Handlers::ComponentInterfaceDescription t (e);
+realizes (t);
+}
+
+else if (n == "configProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_configProperty (t);
+}
+
+else if (n == "implementation")
+{
+::CIAO::Config_Handlers::PackagedComponentImplementation t (e);
+add_implementation (t);
+}
+
+else if (n == "infoProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_infoProperty (t);
+}
+
+else if (n == "contentLocation")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+contentLocation (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "href")
+{
+::XMLSchema::string< ACE_TCHAR > t (a);
+href (t);
+}
+
+else
+{
+}
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace
+{
+::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+struct PackagedComponentImplementationTypeInfoInitializer
+{
+PackagedComponentImplementationTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (PackagedComponentImplementation));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+PackagedComponentImplementationTypeInfoInitializer PackagedComponentImplementationTypeInfoInitializer_;
+
+struct ComponentPackageDescriptionTypeInfoInitializer
+{
+ComponentPackageDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ComponentPackageDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ComponentPackageDescriptionTypeInfoInitializer ComponentPackageDescriptionTypeInfoInitializer_;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+// PackagedComponentImplementation
+//
+//
+
+void PackagedComponentImplementation::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+referencedImplementation (o);
+post (o);
+}
+
+void PackagedComponentImplementation::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+referencedImplementation (o);
+post (o);
+}
+
+void PackagedComponentImplementation::
+pre (Type&)
+{
+}
+
+void PackagedComponentImplementation::
+pre (Type const&)
+{
+}
+
+void PackagedComponentImplementation::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void PackagedComponentImplementation::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void PackagedComponentImplementation::
+referencedImplementation (Type& o)
+{
+dispatch (o.referencedImplementation ());
+}
+
+void PackagedComponentImplementation::
+referencedImplementation (Type const& o)
+{
+dispatch (o.referencedImplementation ());
+}
+
+void PackagedComponentImplementation::
+post (Type&)
+{
+}
+
+void PackagedComponentImplementation::
+post (Type const&)
+{
+}
+
+// ComponentPackageDescription
+//
+//
+
+void ComponentPackageDescription::
+traverse (Type& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.realizes_p ()) realizes (o);
+else realizes_none (o);
+configProperty (o);
+implementation (o);
+infoProperty (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ComponentPackageDescription::
+traverse (Type const& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+if (o.realizes_p ()) realizes (o);
+else realizes_none (o);
+configProperty (o);
+implementation (o);
+infoProperty (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ComponentPackageDescription::
+pre (Type&)
+{
+}
+
+void ComponentPackageDescription::
+pre (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void ComponentPackageDescription::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void ComponentPackageDescription::
+label_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+label_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+UUID (Type& o)
+{
+dispatch (o.UUID ());
+}
+
+void ComponentPackageDescription::
+UUID (Type const& o)
+{
+dispatch (o.UUID ());
+}
+
+void ComponentPackageDescription::
+UUID_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+UUID_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+realizes (Type& o)
+{
+dispatch (o.realizes ());
+}
+
+void ComponentPackageDescription::
+realizes (Type const& o)
+{
+dispatch (o.realizes ());
+}
+
+void ComponentPackageDescription::
+realizes_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+realizes_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void ComponentPackageDescription::
+configProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+if (b != e)
+{
+configProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) configProperty_next (o);
+}
+
+configProperty_post (o);
+}
+
+else configProperty_none (o);
+}
+
+void ComponentPackageDescription::
+configProperty_pre (Type&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_pre (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_next (Type&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_next (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_post (Type&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_post (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+configProperty_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+implementation (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::implementation_iterator b (o.begin_implementation()), e (o.end_implementation());
+
+if (b != e)
+{
+implementation_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) implementation_next (o);
+}
+
+implementation_post (o);
+}
+
+else implementation_none (o);
+}
+
+void ComponentPackageDescription::
+implementation (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::implementation_const_iterator b (o.begin_implementation()), e (o.end_implementation());
+
+if (b != e)
+{
+implementation_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) implementation_next (o);
+}
+
+implementation_post (o);
+}
+
+else implementation_none (o);
+}
+
+void ComponentPackageDescription::
+implementation_pre (Type&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_pre (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_next (Type&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_next (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_post (Type&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_post (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+implementation_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ComponentPackageDescription::
+infoProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ComponentPackageDescription::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ComponentPackageDescription::
+infoProperty_pre (Type&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_pre (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_next (Type&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_next (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_post (Type&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_post (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+infoProperty_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+contentLocation (Type& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ComponentPackageDescription::
+contentLocation (Type const& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ComponentPackageDescription::
+contentLocation_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+contentLocation_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+href (Type& o)
+{
+dispatch (o.href ());
+}
+
+void ComponentPackageDescription::
+href (Type const& o)
+{
+dispatch (o.href ());
+}
+
+void ComponentPackageDescription::
+href_none (Type&)
+{
+}
+
+void ComponentPackageDescription::
+href_none (Type const&)
+{
+}
+
+void ComponentPackageDescription::
+post (Type&)
+{
+}
+
+void ComponentPackageDescription::
+post (Type const&)
+{
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+// PackagedComponentImplementation
+//
+//
+
+PackagedComponentImplementation::
+PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+PackagedComponentImplementation::
+PackagedComponentImplementation ()
+{
+}
+
+void PackagedComponentImplementation::
+traverse (Type const& o)
+{
+Traversal::PackagedComponentImplementation::traverse (o);
+}
+
+void PackagedComponentImplementation::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::PackagedComponentImplementation::name (o);
+pop_ ();
+}
+
+void PackagedComponentImplementation::
+referencedImplementation (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("referencedImplementation", top_ ()));
+Traversal::PackagedComponentImplementation::referencedImplementation (o);
+pop_ ();
+}
+
+// ComponentPackageDescription
+//
+//
+
+ComponentPackageDescription::
+ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ComponentPackageDescription::
+ComponentPackageDescription ()
+{
+}
+
+void ComponentPackageDescription::
+traverse (Type const& o)
+{
+Traversal::ComponentPackageDescription::traverse (o);
+}
+
+void ComponentPackageDescription::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::ComponentPackageDescription::label (o);
+pop_ ();
+}
+
+void ComponentPackageDescription::
+UUID (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+Traversal::ComponentPackageDescription::UUID (o);
+pop_ ();
+}
+
+void ComponentPackageDescription::
+realizes (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("realizes", top_ ()));
+Traversal::ComponentPackageDescription::realizes (o);
+pop_ ();
+}
+
+void ComponentPackageDescription::
+configProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+}
+
+void ComponentPackageDescription::
+configProperty_next (Type const& o)
+{
+configProperty_post (o);
+configProperty_pre (o);
+}
+
+void ComponentPackageDescription::
+configProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentPackageDescription::
+implementation_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("implementation", top_ ()));
+}
+
+void ComponentPackageDescription::
+implementation_next (Type const& o)
+{
+implementation_post (o);
+implementation_pre (o);
+}
+
+void ComponentPackageDescription::
+implementation_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentPackageDescription::
+infoProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+}
+
+void ComponentPackageDescription::
+infoProperty_next (Type const& o)
+{
+infoProperty_post (o);
+infoProperty_pre (o);
+}
+
+void ComponentPackageDescription::
+infoProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void ComponentPackageDescription::
+contentLocation (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("contentLocation", top_ ()));
+Traversal::ComponentPackageDescription::contentLocation (o);
+pop_ ();
+}
+
+void ComponentPackageDescription::
+href (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("href", "", top_ ());
+attr_ (&a);
+Traversal::ComponentPackageDescription::href (o);
+attr_ (0);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/cpd.hpp b/modules/CIAO/tools/Config_Handlers/cpd.hpp
new file mode 100644
index 00000000000..d5f6d9dccd7
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/cpd.hpp
@@ -0,0 +1,658 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef CPD_HPP
+#define CPD_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class PackagedComponentImplementation;
+class ComponentPackageDescription;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "ccd.hpp"
+
+#include "cid.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export PackagedComponentImplementation : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// referencedImplementation
+//
+public:
+::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation () const;
+void referencedImplementation (::CIAO::Config_Handlers::ComponentImplementationDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentImplementationDescription > referencedImplementation_;
+
+public:
+PackagedComponentImplementation (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::ComponentImplementationDescription const& referencedImplementation__);
+
+PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR > const&);
+PackagedComponentImplementation (PackagedComponentImplementation const& s);
+
+PackagedComponentImplementation&
+operator= (PackagedComponentImplementation const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ComponentPackageDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// realizes
+//
+public:
+bool realizes_p () const;
+::CIAO::Config_Handlers::ComponentInterfaceDescription const& realizes () const;
+void realizes (::CIAO::Config_Handlers::ComponentInterfaceDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentInterfaceDescription > realizes_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// implementation
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::PackagedComponentImplementation >::iterator implementation_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::PackagedComponentImplementation >::const_iterator implementation_const_iterator;
+implementation_iterator begin_implementation ();
+implementation_iterator end_implementation ();
+implementation_const_iterator begin_implementation () const;
+implementation_const_iterator end_implementation () const;
+void add_implementation (::CIAO::Config_Handlers::PackagedComponentImplementation const& );
+size_t count_implementation (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::PackagedComponentImplementation > implementation_;
+
+// infoProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+infoProperty_iterator begin_infoProperty ();
+infoProperty_iterator end_infoProperty ();
+infoProperty_const_iterator begin_infoProperty () const;
+infoProperty_const_iterator end_infoProperty () const;
+void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_infoProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+// contentLocation
+//
+public:
+bool contentLocation_p () const;
+::XMLSchema::string< ACE_TCHAR > const& contentLocation () const;
+void contentLocation (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_;
+
+// href
+//
+public:
+bool href_p () const;
+::XMLSchema::string< ACE_TCHAR > const& href () const;
+::XMLSchema::string< ACE_TCHAR >& href ();
+void href (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_;
+
+public:
+ComponentPackageDescription ();
+
+ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentPackageDescription (ComponentPackageDescription const& s);
+
+ComponentPackageDescription&
+operator= (ComponentPackageDescription const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export PackagedComponentImplementation : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PackagedComponentImplementation >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+referencedImplementation (Type&);
+
+virtual void
+referencedImplementation (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ComponentPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+realizes (Type&);
+
+virtual void
+realizes (Type const&);
+
+virtual void
+realizes_none (Type&);
+
+virtual void
+realizes_none (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+implementation (Type&);
+
+virtual void
+implementation (Type const&);
+
+virtual void
+implementation_pre (Type&);
+
+virtual void
+implementation_pre (Type const&);
+
+virtual void
+implementation_next (Type&);
+
+virtual void
+implementation_next (Type const&);
+
+virtual void
+implementation_post (Type&);
+
+virtual void
+implementation_post (Type const&);
+
+virtual void
+implementation_none (Type&);
+
+virtual void
+implementation_none (Type const&);
+
+virtual void
+infoProperty (Type&);
+
+virtual void
+infoProperty (Type const&);
+
+virtual void
+infoProperty_pre (Type&);
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type&);
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type&);
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+infoProperty_none (Type&);
+
+virtual void
+infoProperty_none (Type const&);
+
+virtual void
+contentLocation (Type&);
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+contentLocation_none (Type&);
+
+virtual void
+contentLocation_none (Type const&);
+
+virtual void
+href (Type&);
+
+virtual void
+href (Type const&);
+
+virtual void
+href_none (Type&);
+
+virtual void
+href_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct PackagedComponentImplementation : Traversal::PackagedComponentImplementation,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::PackagedComponentImplementation Type;
+PackagedComponentImplementation (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+referencedImplementation (Type &o)
+{
+
+this->referencedImplementation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+referencedImplementation (Type const&);
+
+protected:
+PackagedComponentImplementation ();
+};
+
+struct ComponentPackageDescription : Traversal::ComponentPackageDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentPackageDescription Type;
+ComponentPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+realizes (Type &o)
+{
+
+this->realizes (const_cast <Type const &> (o));
+}
+
+
+virtual void
+realizes (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+implementation_pre (Type &o)
+{
+
+this->implementation_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+implementation_pre (Type const&);
+
+virtual void
+implementation_next (Type &o)
+{
+
+this->implementation_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+implementation_next (Type const&);
+
+virtual void
+implementation_post (Type &o)
+{
+
+this->implementation_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+implementation_post (Type const&);
+
+virtual void
+infoProperty_pre (Type &o)
+{
+
+this->infoProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type &o)
+{
+
+this->infoProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type &o)
+{
+
+this->infoProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+contentLocation (Type &o)
+{
+
+this->contentLocation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+href (Type &o)
+{
+
+this->href (const_cast <Type const &> (o));
+}
+
+
+virtual void
+href (Type const&);
+
+protected:
+ComponentPackageDescription ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // CPD_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/iad.cpp b/modules/CIAO/tools/Config_Handlers/iad.cpp
new file mode 100644
index 00000000000..e799fd544fb
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/iad.cpp
@@ -0,0 +1,1510 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "iad.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // NamedImplementationArtifact
+ //
+
+ NamedImplementationArtifact::
+ NamedImplementationArtifact (::XMLSchema::string< ACE_TCHAR > const& name__,
+ ::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact__)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (name__)),
+ referencedArtifact_ (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (referencedArtifact__)),
+ regulator__ ()
+ {
+ name_->container (this);
+ referencedArtifact_->container (this);
+ }
+
+ NamedImplementationArtifact::
+ NamedImplementationArtifact (::CIAO::Config_Handlers::NamedImplementationArtifact const& s)
+ :
+ ::XSCRT::Type (),
+ name_ (new ::XMLSchema::string< ACE_TCHAR > (*s.name_)),
+referencedArtifact_ (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (*s.referencedArtifact_)),
+regulator__ ()
+{
+name_->container (this);
+referencedArtifact_->container (this);
+}
+
+::CIAO::Config_Handlers::NamedImplementationArtifact& NamedImplementationArtifact::
+operator= (::CIAO::Config_Handlers::NamedImplementationArtifact const& s)
+{
+name (s.name ());
+
+referencedArtifact (s.referencedArtifact ());
+
+return *this;
+}
+
+
+// NamedImplementationArtifact
+//
+::XMLSchema::string< ACE_TCHAR > const& NamedImplementationArtifact::
+name () const
+{
+return *name_;
+}
+
+void NamedImplementationArtifact::
+name (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+*name_ = e;
+}
+
+// NamedImplementationArtifact
+//
+::CIAO::Config_Handlers::ImplementationArtifactDescription const& NamedImplementationArtifact::
+referencedArtifact () const
+{
+return *referencedArtifact_;
+}
+
+void NamedImplementationArtifact::
+referencedArtifact (::CIAO::Config_Handlers::ImplementationArtifactDescription const& e)
+{
+*referencedArtifact_ = e;
+}
+
+
+// ImplementationArtifactDescription
+//
+
+ImplementationArtifactDescription::
+ImplementationArtifactDescription ()
+:
+::XSCRT::Type (),
+regulator__ ()
+{
+}
+
+ImplementationArtifactDescription::
+ImplementationArtifactDescription (::CIAO::Config_Handlers::ImplementationArtifactDescription const& s)
+:
+::XSCRT::Type (),
+label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0),
+href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0),
+regulator__ ()
+{
+if (label_.get ()) label_->container (this);
+if (UUID_.get ()) UUID_->container (this);
+{
+for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+}
+
+{
+for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+}
+
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+if (contentLocation_.get ()) contentLocation_->container (this);
+if (href_.get ()) href_->container (this);
+}
+
+::CIAO::Config_Handlers::ImplementationArtifactDescription& ImplementationArtifactDescription::
+operator= (::CIAO::Config_Handlers::ImplementationArtifactDescription const& s)
+{
+if (s.label_.get ()) label (*(s.label_));
+else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.UUID_.get ()) UUID (*(s.UUID_));
+else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+location_.clear ();
+{
+for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+}
+
+dependsOn_.clear ();
+{
+for (dependsOn_const_iterator i (s.dependsOn_.begin ());i != s.dependsOn_.end ();++i) add_dependsOn (*i);
+}
+
+execParameter_.clear ();
+{
+for (execParameter_const_iterator i (s.execParameter_.begin ());i != s.execParameter_.end ();++i) add_execParameter (*i);
+}
+
+infoProperty_.clear ();
+{
+for (infoProperty_const_iterator i (s.infoProperty_.begin ());i != s.infoProperty_.end ();++i) add_infoProperty (*i);
+}
+
+deployRequirement_.clear ();
+{
+for (deployRequirement_const_iterator i (s.deployRequirement_.begin ());i != s.deployRequirement_.end ();++i) add_deployRequirement (*i);
+}
+
+if (s.contentLocation_.get ()) contentLocation (*(s.contentLocation_));
+else contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+if (s.href_.get ()) href (*(s.href_));
+else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+return *this;
+}
+
+
+// ImplementationArtifactDescription
+//
+bool ImplementationArtifactDescription::
+label_p () const
+{
+return label_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription::
+label () const
+{
+return *label_;
+}
+
+void ImplementationArtifactDescription::
+label (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (label_.get ())
+{
+*label_ = e;
+}
+
+else
+{
+label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+label_->container (this);
+}
+}
+
+// ImplementationArtifactDescription
+//
+bool ImplementationArtifactDescription::
+UUID_p () const
+{
+return UUID_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription::
+UUID () const
+{
+return *UUID_;
+}
+
+void ImplementationArtifactDescription::
+UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (UUID_.get ())
+{
+*UUID_ = e;
+}
+
+else
+{
+UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+UUID_->container (this);
+}
+}
+
+// ImplementationArtifactDescription
+//
+ImplementationArtifactDescription::location_iterator ImplementationArtifactDescription::
+begin_location ()
+{
+return location_.begin ();
+}
+
+ImplementationArtifactDescription::location_iterator ImplementationArtifactDescription::
+end_location ()
+{
+return location_.end ();
+}
+
+ImplementationArtifactDescription::location_const_iterator ImplementationArtifactDescription::
+begin_location () const
+{
+return location_.begin ();
+}
+
+ImplementationArtifactDescription::location_const_iterator ImplementationArtifactDescription::
+end_location () const
+{
+return location_.end ();
+}
+
+void ImplementationArtifactDescription::
+add_location (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+location_.push_back (e);
+}
+
+size_t ImplementationArtifactDescription::
+count_location(void) const
+{
+return location_.size ();
+}
+
+// ImplementationArtifactDescription
+//
+ImplementationArtifactDescription::dependsOn_iterator ImplementationArtifactDescription::
+begin_dependsOn ()
+{
+return dependsOn_.begin ();
+}
+
+ImplementationArtifactDescription::dependsOn_iterator ImplementationArtifactDescription::
+end_dependsOn ()
+{
+return dependsOn_.end ();
+}
+
+ImplementationArtifactDescription::dependsOn_const_iterator ImplementationArtifactDescription::
+begin_dependsOn () const
+{
+return dependsOn_.begin ();
+}
+
+ImplementationArtifactDescription::dependsOn_const_iterator ImplementationArtifactDescription::
+end_dependsOn () const
+{
+return dependsOn_.end ();
+}
+
+void ImplementationArtifactDescription::
+add_dependsOn (::CIAO::Config_Handlers::NamedImplementationArtifact const& e)
+{
+dependsOn_.push_back (e);
+}
+
+size_t ImplementationArtifactDescription::
+count_dependsOn(void) const
+{
+return dependsOn_.size ();
+}
+
+// ImplementationArtifactDescription
+//
+ImplementationArtifactDescription::execParameter_iterator ImplementationArtifactDescription::
+begin_execParameter ()
+{
+return execParameter_.begin ();
+}
+
+ImplementationArtifactDescription::execParameter_iterator ImplementationArtifactDescription::
+end_execParameter ()
+{
+return execParameter_.end ();
+}
+
+ImplementationArtifactDescription::execParameter_const_iterator ImplementationArtifactDescription::
+begin_execParameter () const
+{
+return execParameter_.begin ();
+}
+
+ImplementationArtifactDescription::execParameter_const_iterator ImplementationArtifactDescription::
+end_execParameter () const
+{
+return execParameter_.end ();
+}
+
+void ImplementationArtifactDescription::
+add_execParameter (::CIAO::Config_Handlers::Property const& e)
+{
+execParameter_.push_back (e);
+}
+
+size_t ImplementationArtifactDescription::
+count_execParameter(void) const
+{
+return execParameter_.size ();
+}
+
+// ImplementationArtifactDescription
+//
+ImplementationArtifactDescription::infoProperty_iterator ImplementationArtifactDescription::
+begin_infoProperty ()
+{
+return infoProperty_.begin ();
+}
+
+ImplementationArtifactDescription::infoProperty_iterator ImplementationArtifactDescription::
+end_infoProperty ()
+{
+return infoProperty_.end ();
+}
+
+ImplementationArtifactDescription::infoProperty_const_iterator ImplementationArtifactDescription::
+begin_infoProperty () const
+{
+return infoProperty_.begin ();
+}
+
+ImplementationArtifactDescription::infoProperty_const_iterator ImplementationArtifactDescription::
+end_infoProperty () const
+{
+return infoProperty_.end ();
+}
+
+void ImplementationArtifactDescription::
+add_infoProperty (::CIAO::Config_Handlers::Property const& e)
+{
+infoProperty_.push_back (e);
+}
+
+size_t ImplementationArtifactDescription::
+count_infoProperty(void) const
+{
+return infoProperty_.size ();
+}
+
+// ImplementationArtifactDescription
+//
+ImplementationArtifactDescription::deployRequirement_iterator ImplementationArtifactDescription::
+begin_deployRequirement ()
+{
+return deployRequirement_.begin ();
+}
+
+ImplementationArtifactDescription::deployRequirement_iterator ImplementationArtifactDescription::
+end_deployRequirement ()
+{
+return deployRequirement_.end ();
+}
+
+ImplementationArtifactDescription::deployRequirement_const_iterator ImplementationArtifactDescription::
+begin_deployRequirement () const
+{
+return deployRequirement_.begin ();
+}
+
+ImplementationArtifactDescription::deployRequirement_const_iterator ImplementationArtifactDescription::
+end_deployRequirement () const
+{
+return deployRequirement_.end ();
+}
+
+void ImplementationArtifactDescription::
+add_deployRequirement (::CIAO::Config_Handlers::Requirement const& e)
+{
+deployRequirement_.push_back (e);
+}
+
+size_t ImplementationArtifactDescription::
+count_deployRequirement(void) const
+{
+return deployRequirement_.size ();
+}
+
+// ImplementationArtifactDescription
+//
+bool ImplementationArtifactDescription::
+contentLocation_p () const
+{
+return contentLocation_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription::
+contentLocation () const
+{
+return *contentLocation_;
+}
+
+void ImplementationArtifactDescription::
+contentLocation (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (contentLocation_.get ())
+{
+*contentLocation_ = e;
+}
+
+else
+{
+contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+contentLocation_->container (this);
+}
+}
+
+// ImplementationArtifactDescription
+//
+bool ImplementationArtifactDescription::
+href_p () const
+{
+return href_.get () != 0;
+}
+
+::XMLSchema::string< ACE_TCHAR > const& ImplementationArtifactDescription::
+href () const
+{
+return *href_;
+}
+
+::XMLSchema::string< ACE_TCHAR >& ImplementationArtifactDescription::
+href ()
+{
+return *href_;
+}
+
+void ImplementationArtifactDescription::
+href (::XMLSchema::string< ACE_TCHAR > const& e)
+{
+if (href_.get ())
+{
+*href_ = e;
+}
+
+else
+{
+href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+href_->container (this);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+// NamedImplementationArtifact
+//
+
+NamedImplementationArtifact::
+NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "name")
+{
+name_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+name_->container (this);
+}
+
+else if (n == "referencedArtifact")
+{
+referencedArtifact_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ImplementationArtifactDescription > (new ::CIAO::Config_Handlers::ImplementationArtifactDescription (e));
+referencedArtifact_->container (this);
+}
+
+else
+{
+}
+}
+}
+
+// ImplementationArtifactDescription
+//
+
+ImplementationArtifactDescription::
+ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+:Base__ (e), regulator__ ()
+{
+
+::XSCRT::Parser< ACE_TCHAR > p (e);
+
+while (p.more_elements ())
+{
+::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+if (n == "label")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+label (t);
+}
+
+else if (n == "UUID")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+UUID (t);
+}
+
+else if (n == "location")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+add_location (t);
+}
+
+else if (n == "dependsOn")
+{
+::CIAO::Config_Handlers::NamedImplementationArtifact t (e);
+add_dependsOn (t);
+}
+
+else if (n == "execParameter")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_execParameter (t);
+}
+
+else if (n == "infoProperty")
+{
+::CIAO::Config_Handlers::Property t (e);
+add_infoProperty (t);
+}
+
+else if (n == "deployRequirement")
+{
+::CIAO::Config_Handlers::Requirement t (e);
+add_deployRequirement (t);
+}
+
+else if (n == "contentLocation")
+{
+::XMLSchema::string< ACE_TCHAR > t (e);
+contentLocation (t);
+}
+
+else
+{
+}
+}
+
+while (p.more_attributes ())
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+if (n == "href")
+{
+::XMLSchema::string< ACE_TCHAR > t (a);
+href (t);
+}
+
+else
+{
+}
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace
+{
+::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+struct NamedImplementationArtifactTypeInfoInitializer
+{
+NamedImplementationArtifactTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (NamedImplementationArtifact));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+NamedImplementationArtifactTypeInfoInitializer NamedImplementationArtifactTypeInfoInitializer_;
+
+struct ImplementationArtifactDescriptionTypeInfoInitializer
+{
+ImplementationArtifactDescriptionTypeInfoInitializer ()
+{
+::XSCRT::TypeId id (typeid (ImplementationArtifactDescription));
+::XSCRT::ExtendedTypeInfo nf (id);
+
+nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+}
+};
+
+ImplementationArtifactDescriptionTypeInfoInitializer ImplementationArtifactDescriptionTypeInfoInitializer_;
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+// NamedImplementationArtifact
+//
+//
+
+void NamedImplementationArtifact::
+traverse (Type& o)
+{
+pre (o);
+name (o);
+referencedArtifact (o);
+post (o);
+}
+
+void NamedImplementationArtifact::
+traverse (Type const& o)
+{
+pre (o);
+name (o);
+referencedArtifact (o);
+post (o);
+}
+
+void NamedImplementationArtifact::
+pre (Type&)
+{
+}
+
+void NamedImplementationArtifact::
+pre (Type const&)
+{
+}
+
+void NamedImplementationArtifact::
+name (Type& o)
+{
+dispatch (o.name ());
+}
+
+void NamedImplementationArtifact::
+name (Type const& o)
+{
+dispatch (o.name ());
+}
+
+void NamedImplementationArtifact::
+referencedArtifact (Type& o)
+{
+dispatch (o.referencedArtifact ());
+}
+
+void NamedImplementationArtifact::
+referencedArtifact (Type const& o)
+{
+dispatch (o.referencedArtifact ());
+}
+
+void NamedImplementationArtifact::
+post (Type&)
+{
+}
+
+void NamedImplementationArtifact::
+post (Type const&)
+{
+}
+
+// ImplementationArtifactDescription
+//
+//
+
+void ImplementationArtifactDescription::
+traverse (Type& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+location (o);
+dependsOn (o);
+execParameter (o);
+infoProperty (o);
+deployRequirement (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ImplementationArtifactDescription::
+traverse (Type const& o)
+{
+pre (o);
+if (o.label_p ()) label (o);
+else label_none (o);
+if (o.UUID_p ()) UUID (o);
+else UUID_none (o);
+location (o);
+dependsOn (o);
+execParameter (o);
+infoProperty (o);
+deployRequirement (o);
+if (o.contentLocation_p ()) contentLocation (o);
+else contentLocation_none (o);
+if (o.href_p ()) href (o);
+else href_none (o);
+post (o);
+}
+
+void ImplementationArtifactDescription::
+pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+label (Type& o)
+{
+dispatch (o.label ());
+}
+
+void ImplementationArtifactDescription::
+label (Type const& o)
+{
+dispatch (o.label ());
+}
+
+void ImplementationArtifactDescription::
+label_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+label_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+UUID (Type& o)
+{
+dispatch (o.UUID ());
+}
+
+void ImplementationArtifactDescription::
+UUID (Type const& o)
+{
+dispatch (o.UUID ());
+}
+
+void ImplementationArtifactDescription::
+UUID_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+UUID_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+location (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::location_iterator b (o.begin_location()), e (o.end_location());
+
+if (b != e)
+{
+location_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) location_next (o);
+}
+
+location_post (o);
+}
+
+else location_none (o);
+}
+
+void ImplementationArtifactDescription::
+location (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::location_const_iterator b (o.begin_location()), e (o.end_location());
+
+if (b != e)
+{
+location_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) location_next (o);
+}
+
+location_post (o);
+}
+
+else location_none (o);
+}
+
+void ImplementationArtifactDescription::
+location_pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_next (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_next (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_post (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+location_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::dependsOn_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+if (b != e)
+{
+dependsOn_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) dependsOn_next (o);
+}
+
+dependsOn_post (o);
+}
+
+else dependsOn_none (o);
+}
+
+void ImplementationArtifactDescription::
+dependsOn (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::dependsOn_const_iterator b (o.begin_dependsOn()), e (o.end_dependsOn());
+
+if (b != e)
+{
+dependsOn_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) dependsOn_next (o);
+}
+
+dependsOn_post (o);
+}
+
+else dependsOn_none (o);
+}
+
+void ImplementationArtifactDescription::
+dependsOn_pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_next (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_next (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_post (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+dependsOn_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::execParameter_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void ImplementationArtifactDescription::
+execParameter (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::execParameter_const_iterator b (o.begin_execParameter()), e (o.end_execParameter());
+
+if (b != e)
+{
+execParameter_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) execParameter_next (o);
+}
+
+execParameter_post (o);
+}
+
+else execParameter_none (o);
+}
+
+void ImplementationArtifactDescription::
+execParameter_pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_next (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_next (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_post (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+execParameter_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::infoProperty_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ImplementationArtifactDescription::
+infoProperty (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::infoProperty_const_iterator b (o.begin_infoProperty()), e (o.end_infoProperty());
+
+if (b != e)
+{
+infoProperty_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) infoProperty_next (o);
+}
+
+infoProperty_post (o);
+}
+
+else infoProperty_none (o);
+}
+
+void ImplementationArtifactDescription::
+infoProperty_pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_next (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_next (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_post (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+infoProperty_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement (Type& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::deployRequirement_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void ImplementationArtifactDescription::
+deployRequirement (Type const& o)
+{
+// VC6 anathema strikes again
+//
+ImplementationArtifactDescription::Type::deployRequirement_const_iterator b (o.begin_deployRequirement()), e (o.end_deployRequirement());
+
+if (b != e)
+{
+deployRequirement_pre (o);
+for (; b != e;)
+{
+dispatch (*b);
+if (++b != e) deployRequirement_next (o);
+}
+
+deployRequirement_post (o);
+}
+
+else deployRequirement_none (o);
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_pre (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_pre (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_next (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_next (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_post (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+contentLocation (Type& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ImplementationArtifactDescription::
+contentLocation (Type const& o)
+{
+dispatch (o.contentLocation ());
+}
+
+void ImplementationArtifactDescription::
+contentLocation_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+contentLocation_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+href (Type& o)
+{
+dispatch (o.href ());
+}
+
+void ImplementationArtifactDescription::
+href (Type const& o)
+{
+dispatch (o.href ());
+}
+
+void ImplementationArtifactDescription::
+href_none (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+href_none (Type const&)
+{
+}
+
+void ImplementationArtifactDescription::
+post (Type&)
+{
+}
+
+void ImplementationArtifactDescription::
+post (Type const&)
+{
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+// NamedImplementationArtifact
+//
+//
+
+NamedImplementationArtifact::
+NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+NamedImplementationArtifact::
+NamedImplementationArtifact ()
+{
+}
+
+void NamedImplementationArtifact::
+traverse (Type const& o)
+{
+Traversal::NamedImplementationArtifact::traverse (o);
+}
+
+void NamedImplementationArtifact::
+name (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("name", top_ ()));
+Traversal::NamedImplementationArtifact::name (o);
+pop_ ();
+}
+
+void NamedImplementationArtifact::
+referencedArtifact (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("referencedArtifact", top_ ()));
+Traversal::NamedImplementationArtifact::referencedArtifact (o);
+pop_ ();
+}
+
+// ImplementationArtifactDescription
+//
+//
+
+ImplementationArtifactDescription::
+ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+: ::XSCRT::Writer< ACE_TCHAR > (e)
+{
+}
+
+ImplementationArtifactDescription::
+ImplementationArtifactDescription ()
+{
+}
+
+void ImplementationArtifactDescription::
+traverse (Type const& o)
+{
+Traversal::ImplementationArtifactDescription::traverse (o);
+}
+
+void ImplementationArtifactDescription::
+label (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+Traversal::ImplementationArtifactDescription::label (o);
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+UUID (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+Traversal::ImplementationArtifactDescription::UUID (o);
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+location_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("location", top_ ()));
+}
+
+void ImplementationArtifactDescription::
+location_next (Type const& o)
+{
+location_post (o);
+location_pre (o);
+}
+
+void ImplementationArtifactDescription::
+location_post (Type const&)
+{
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+dependsOn_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("dependsOn", top_ ()));
+}
+
+void ImplementationArtifactDescription::
+dependsOn_next (Type const& o)
+{
+dependsOn_post (o);
+dependsOn_pre (o);
+}
+
+void ImplementationArtifactDescription::
+dependsOn_post (Type const&)
+{
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+execParameter_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("execParameter", top_ ()));
+}
+
+void ImplementationArtifactDescription::
+execParameter_next (Type const& o)
+{
+execParameter_post (o);
+execParameter_pre (o);
+}
+
+void ImplementationArtifactDescription::
+execParameter_post (Type const&)
+{
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+infoProperty_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("infoProperty", top_ ()));
+}
+
+void ImplementationArtifactDescription::
+infoProperty_next (Type const& o)
+{
+infoProperty_post (o);
+infoProperty_pre (o);
+}
+
+void ImplementationArtifactDescription::
+infoProperty_post (Type const&)
+{
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_pre (Type const&)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("deployRequirement", top_ ()));
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_next (Type const& o)
+{
+deployRequirement_post (o);
+deployRequirement_pre (o);
+}
+
+void ImplementationArtifactDescription::
+deployRequirement_post (Type const&)
+{
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+contentLocation (Type const& o)
+{
+push_ (::XSCRT::XML::Element< ACE_TCHAR > ("contentLocation", top_ ()));
+Traversal::ImplementationArtifactDescription::contentLocation (o);
+pop_ ();
+}
+
+void ImplementationArtifactDescription::
+href (Type const& o)
+{
+::XSCRT::XML::Attribute< ACE_TCHAR > a ("href", "", top_ ());
+attr_ (&a);
+Traversal::ImplementationArtifactDescription::href (o);
+attr_ (0);
+}
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/iad.hpp b/modules/CIAO/tools/Config_Handlers/iad.hpp
new file mode 100644
index 00000000000..f5a5c82399a
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/iad.hpp
@@ -0,0 +1,779 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef IAD_HPP
+#define IAD_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class NamedImplementationArtifact;
+class ImplementationArtifactDescription;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export NamedImplementationArtifact : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// name
+//
+public:
+::XMLSchema::string< ACE_TCHAR > const& name () const;
+void name (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > name_;
+
+// referencedArtifact
+//
+public:
+::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact () const;
+void referencedArtifact (::CIAO::Config_Handlers::ImplementationArtifactDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ImplementationArtifactDescription > referencedArtifact_;
+
+public:
+NamedImplementationArtifact (::XMLSchema::string< ACE_TCHAR > const& name__,
+::CIAO::Config_Handlers::ImplementationArtifactDescription const& referencedArtifact__);
+
+NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR > const&);
+NamedImplementationArtifact (NamedImplementationArtifact const& s);
+
+NamedImplementationArtifact&
+operator= (NamedImplementationArtifact const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export ImplementationArtifactDescription : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// location
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator location_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator location_const_iterator;
+location_iterator begin_location ();
+location_iterator end_location ();
+location_const_iterator begin_location () const;
+location_const_iterator end_location () const;
+void add_location (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_location (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > location_;
+
+// dependsOn
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact >::iterator dependsOn_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact >::const_iterator dependsOn_const_iterator;
+dependsOn_iterator begin_dependsOn ();
+dependsOn_iterator end_dependsOn ();
+dependsOn_const_iterator begin_dependsOn () const;
+dependsOn_const_iterator end_dependsOn () const;
+void add_dependsOn (::CIAO::Config_Handlers::NamedImplementationArtifact const& );
+size_t count_dependsOn (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::NamedImplementationArtifact > dependsOn_;
+
+// execParameter
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator execParameter_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator execParameter_const_iterator;
+execParameter_iterator begin_execParameter ();
+execParameter_iterator end_execParameter ();
+execParameter_const_iterator begin_execParameter () const;
+execParameter_const_iterator end_execParameter () const;
+void add_execParameter (::CIAO::Config_Handlers::Property const& );
+size_t count_execParameter (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > execParameter_;
+
+// infoProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator infoProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator infoProperty_const_iterator;
+infoProperty_iterator begin_infoProperty ();
+infoProperty_iterator end_infoProperty ();
+infoProperty_const_iterator begin_infoProperty () const;
+infoProperty_const_iterator end_infoProperty () const;
+void add_infoProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_infoProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > infoProperty_;
+
+// deployRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator deployRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator deployRequirement_const_iterator;
+deployRequirement_iterator begin_deployRequirement ();
+deployRequirement_iterator end_deployRequirement ();
+deployRequirement_const_iterator begin_deployRequirement () const;
+deployRequirement_const_iterator end_deployRequirement () const;
+void add_deployRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_deployRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > deployRequirement_;
+
+// contentLocation
+//
+public:
+bool contentLocation_p () const;
+::XMLSchema::string< ACE_TCHAR > const& contentLocation () const;
+void contentLocation (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_;
+
+// href
+//
+public:
+bool href_p () const;
+::XMLSchema::string< ACE_TCHAR > const& href () const;
+::XMLSchema::string< ACE_TCHAR >& href ();
+void href (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_;
+
+public:
+ImplementationArtifactDescription ();
+
+ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ImplementationArtifactDescription (ImplementationArtifactDescription const& s);
+
+ImplementationArtifactDescription&
+operator= (ImplementationArtifactDescription const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export NamedImplementationArtifact : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::NamedImplementationArtifact >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+name (Type&);
+
+virtual void
+name (Type const&);
+
+virtual void
+referencedArtifact (Type&);
+
+virtual void
+referencedArtifact (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export ImplementationArtifactDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ImplementationArtifactDescription >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+location (Type&);
+
+virtual void
+location (Type const&);
+
+virtual void
+location_pre (Type&);
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type&);
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type&);
+
+virtual void
+location_post (Type const&);
+
+virtual void
+location_none (Type&);
+
+virtual void
+location_none (Type const&);
+
+virtual void
+dependsOn (Type&);
+
+virtual void
+dependsOn (Type const&);
+
+virtual void
+dependsOn_pre (Type&);
+
+virtual void
+dependsOn_pre (Type const&);
+
+virtual void
+dependsOn_next (Type&);
+
+virtual void
+dependsOn_next (Type const&);
+
+virtual void
+dependsOn_post (Type&);
+
+virtual void
+dependsOn_post (Type const&);
+
+virtual void
+dependsOn_none (Type&);
+
+virtual void
+dependsOn_none (Type const&);
+
+virtual void
+execParameter (Type&);
+
+virtual void
+execParameter (Type const&);
+
+virtual void
+execParameter_pre (Type&);
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type&);
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type&);
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+execParameter_none (Type&);
+
+virtual void
+execParameter_none (Type const&);
+
+virtual void
+infoProperty (Type&);
+
+virtual void
+infoProperty (Type const&);
+
+virtual void
+infoProperty_pre (Type&);
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type&);
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type&);
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+infoProperty_none (Type&);
+
+virtual void
+infoProperty_none (Type const&);
+
+virtual void
+deployRequirement (Type&);
+
+virtual void
+deployRequirement (Type const&);
+
+virtual void
+deployRequirement_pre (Type&);
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type&);
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type&);
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+deployRequirement_none (Type&);
+
+virtual void
+deployRequirement_none (Type const&);
+
+virtual void
+contentLocation (Type&);
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+contentLocation_none (Type&);
+
+virtual void
+contentLocation_none (Type const&);
+
+virtual void
+href (Type&);
+
+virtual void
+href (Type const&);
+
+virtual void
+href_none (Type&);
+
+virtual void
+href_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct NamedImplementationArtifact : Traversal::NamedImplementationArtifact,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::NamedImplementationArtifact Type;
+NamedImplementationArtifact (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+name (Type &o)
+{
+
+this->name (const_cast <Type const &> (o));
+}
+
+
+virtual void
+name (Type const&);
+
+virtual void
+referencedArtifact (Type &o)
+{
+
+this->referencedArtifact (const_cast <Type const &> (o));
+}
+
+
+virtual void
+referencedArtifact (Type const&);
+
+protected:
+NamedImplementationArtifact ();
+};
+
+struct ImplementationArtifactDescription : Traversal::ImplementationArtifactDescription,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ImplementationArtifactDescription Type;
+ImplementationArtifactDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+location_pre (Type &o)
+{
+
+this->location_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type &o)
+{
+
+this->location_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type &o)
+{
+
+this->location_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_post (Type const&);
+
+virtual void
+dependsOn_pre (Type &o)
+{
+
+this->dependsOn_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_pre (Type const&);
+
+virtual void
+dependsOn_next (Type &o)
+{
+
+this->dependsOn_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_next (Type const&);
+
+virtual void
+dependsOn_post (Type &o)
+{
+
+this->dependsOn_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+dependsOn_post (Type const&);
+
+virtual void
+execParameter_pre (Type &o)
+{
+
+this->execParameter_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_pre (Type const&);
+
+virtual void
+execParameter_next (Type &o)
+{
+
+this->execParameter_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_next (Type const&);
+
+virtual void
+execParameter_post (Type &o)
+{
+
+this->execParameter_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+execParameter_post (Type const&);
+
+virtual void
+infoProperty_pre (Type &o)
+{
+
+this->infoProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_pre (Type const&);
+
+virtual void
+infoProperty_next (Type &o)
+{
+
+this->infoProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_next (Type const&);
+
+virtual void
+infoProperty_post (Type &o)
+{
+
+this->infoProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+infoProperty_post (Type const&);
+
+virtual void
+deployRequirement_pre (Type &o)
+{
+
+this->deployRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_pre (Type const&);
+
+virtual void
+deployRequirement_next (Type &o)
+{
+
+this->deployRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_next (Type const&);
+
+virtual void
+deployRequirement_post (Type &o)
+{
+
+this->deployRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+deployRequirement_post (Type const&);
+
+virtual void
+contentLocation (Type &o)
+{
+
+this->contentLocation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+href (Type &o)
+{
+
+this->href (const_cast <Type const &> (o));
+}
+
+
+virtual void
+href (Type const&);
+
+protected:
+ImplementationArtifactDescription ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // IAD_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/pcd.cpp b/modules/CIAO/tools/Config_Handlers/pcd.cpp
new file mode 100644
index 00000000000..1021d178ad6
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/pcd.cpp
@@ -0,0 +1,1378 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "pcd.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ComponentPackageImport
+ //
+
+ ComponentPackageImport::
+ ComponentPackageImport ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ ComponentPackageImport::
+ ComponentPackageImport (::CIAO::Config_Handlers::ComponentPackageImport const& s)
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ {
+ for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+ }
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageImport& ComponentPackageImport::
+ operator= (::CIAO::Config_Handlers::ComponentPackageImport const& s)
+ {
+ location_.clear ();
+ {
+ for (location_const_iterator i (s.location_.begin ());i != s.location_.end ();++i) add_location (*i);
+ }
+
+ return *this;
+ }
+
+
+ // ComponentPackageImport
+ //
+ ComponentPackageImport::location_iterator ComponentPackageImport::
+ begin_location ()
+ {
+ return location_.begin ();
+ }
+
+ ComponentPackageImport::location_iterator ComponentPackageImport::
+ end_location ()
+ {
+ return location_.end ();
+ }
+
+ ComponentPackageImport::location_const_iterator ComponentPackageImport::
+ begin_location () const
+ {
+ return location_.begin ();
+ }
+
+ ComponentPackageImport::location_const_iterator ComponentPackageImport::
+ end_location () const
+ {
+ return location_.end ();
+ }
+
+ void ComponentPackageImport::
+ add_location (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ location_.push_back (e);
+ }
+
+ size_t ComponentPackageImport::
+ count_location(void) const
+ {
+ return location_.size ();
+ }
+
+
+ // PackageConfiguration
+ //
+
+ PackageConfiguration::
+ PackageConfiguration ()
+ :
+ ::XSCRT::Type (),
+ regulator__ ()
+ {
+ }
+
+ PackageConfiguration::
+ PackageConfiguration (::CIAO::Config_Handlers::PackageConfiguration const& s)
+ :
+ ::XSCRT::Type (),
+ label_ (s.label_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.label_) : 0),
+ UUID_ (s.UUID_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.UUID_) : 0),
+ basePackage_ (s.basePackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageDescription (*s.basePackage_) : 0),
+ specializedConfig_ (s.specializedConfig_.get () ? new ::CIAO::Config_Handlers::PackageConfiguration (*s.specializedConfig_) : 0),
+ importedPackage_ (s.importedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageImport (*s.importedPackage_) : 0),
+ referencedPackage_ (s.referencedPackage_.get () ? new ::CIAO::Config_Handlers::ComponentPackageReference (*s.referencedPackage_) : 0),
+ contentLocation_ (s.contentLocation_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.contentLocation_) : 0),
+ href_ (s.href_.get () ? new ::XMLSchema::string< ACE_TCHAR > (*s.href_) : 0),
+ regulator__ ()
+ {
+ if (label_.get ()) label_->container (this);
+ if (UUID_.get ()) UUID_->container (this);
+ if (basePackage_.get ()) basePackage_->container (this);
+ if (specializedConfig_.get ()) specializedConfig_->container (this);
+ if (importedPackage_.get ()) importedPackage_->container (this);
+ if (referencedPackage_.get ()) referencedPackage_->container (this);
+ {
+ for (selectRequirement_const_iterator i (s.selectRequirement_.begin ());i != s.selectRequirement_.end ();++i) add_selectRequirement (*i);
+ }
+
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ if (contentLocation_.get ()) contentLocation_->container (this);
+ if (href_.get ()) href_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::PackageConfiguration& PackageConfiguration::
+ operator= (::CIAO::Config_Handlers::PackageConfiguration const& s)
+ {
+ if (s.label_.get ()) label (*(s.label_));
+ else label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.UUID_.get ()) UUID (*(s.UUID_));
+ else UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.basePackage_.get ()) basePackage (*(s.basePackage_));
+ else basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (0);
+
+ if (s.specializedConfig_.get ()) specializedConfig (*(s.specializedConfig_));
+ else specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (0);
+
+ if (s.importedPackage_.get ()) importedPackage (*(s.importedPackage_));
+ else importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (0);
+
+ if (s.referencedPackage_.get ()) referencedPackage (*(s.referencedPackage_));
+ else referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (0);
+
+ selectRequirement_.clear ();
+ {
+ for (selectRequirement_const_iterator i (s.selectRequirement_.begin ());i != s.selectRequirement_.end ();++i) add_selectRequirement (*i);
+ }
+
+ configProperty_.clear ();
+ {
+ for (configProperty_const_iterator i (s.configProperty_.begin ());i != s.configProperty_.end ();++i) add_configProperty (*i);
+ }
+
+ if (s.contentLocation_.get ()) contentLocation (*(s.contentLocation_));
+ else contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ if (s.href_.get ()) href (*(s.href_));
+ else href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (0);
+
+ return *this;
+ }
+
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ label_p () const
+ {
+ return label_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration::
+ label () const
+ {
+ return *label_;
+ }
+
+ void PackageConfiguration::
+ label (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (label_.get ())
+ {
+ *label_ = e;
+ }
+
+ else
+ {
+ label_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ label_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ UUID_p () const
+ {
+ return UUID_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration::
+ UUID () const
+ {
+ return *UUID_;
+ }
+
+ void PackageConfiguration::
+ UUID (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (UUID_.get ())
+ {
+ *UUID_ = e;
+ }
+
+ else
+ {
+ UUID_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ UUID_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ basePackage_p () const
+ {
+ return basePackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageDescription const& PackageConfiguration::
+ basePackage () const
+ {
+ return *basePackage_;
+ }
+
+ void PackageConfiguration::
+ basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& e)
+ {
+ if (basePackage_.get ())
+ {
+ *basePackage_ = e;
+ }
+
+ else
+ {
+ basePackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > (new ::CIAO::Config_Handlers::ComponentPackageDescription (e));
+ basePackage_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ specializedConfig_p () const
+ {
+ return specializedConfig_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::PackageConfiguration const& PackageConfiguration::
+ specializedConfig () const
+ {
+ return *specializedConfig_;
+ }
+
+ void PackageConfiguration::
+ specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& e)
+ {
+ if (specializedConfig_.get ())
+ {
+ *specializedConfig_ = e;
+ }
+
+ else
+ {
+ specializedConfig_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e));
+ specializedConfig_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ importedPackage_p () const
+ {
+ return importedPackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageImport const& PackageConfiguration::
+ importedPackage () const
+ {
+ return *importedPackage_;
+ }
+
+ void PackageConfiguration::
+ importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& e)
+ {
+ if (importedPackage_.get ())
+ {
+ *importedPackage_ = e;
+ }
+
+ else
+ {
+ importedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > (new ::CIAO::Config_Handlers::ComponentPackageImport (e));
+ importedPackage_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ referencedPackage_p () const
+ {
+ return referencedPackage_.get () != 0;
+ }
+
+ ::CIAO::Config_Handlers::ComponentPackageReference const& PackageConfiguration::
+ referencedPackage () const
+ {
+ return *referencedPackage_;
+ }
+
+ void PackageConfiguration::
+ referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& e)
+ {
+ if (referencedPackage_.get ())
+ {
+ *referencedPackage_ = e;
+ }
+
+ else
+ {
+ referencedPackage_ = ::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > (new ::CIAO::Config_Handlers::ComponentPackageReference (e));
+ referencedPackage_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ PackageConfiguration::selectRequirement_iterator PackageConfiguration::
+ begin_selectRequirement ()
+ {
+ return selectRequirement_.begin ();
+ }
+
+ PackageConfiguration::selectRequirement_iterator PackageConfiguration::
+ end_selectRequirement ()
+ {
+ return selectRequirement_.end ();
+ }
+
+ PackageConfiguration::selectRequirement_const_iterator PackageConfiguration::
+ begin_selectRequirement () const
+ {
+ return selectRequirement_.begin ();
+ }
+
+ PackageConfiguration::selectRequirement_const_iterator PackageConfiguration::
+ end_selectRequirement () const
+ {
+ return selectRequirement_.end ();
+ }
+
+ void PackageConfiguration::
+ add_selectRequirement (::CIAO::Config_Handlers::Requirement const& e)
+ {
+ selectRequirement_.push_back (e);
+ }
+
+ size_t PackageConfiguration::
+ count_selectRequirement(void) const
+ {
+ return selectRequirement_.size ();
+ }
+
+ // PackageConfiguration
+ //
+ PackageConfiguration::configProperty_iterator PackageConfiguration::
+ begin_configProperty ()
+ {
+ return configProperty_.begin ();
+ }
+
+ PackageConfiguration::configProperty_iterator PackageConfiguration::
+ end_configProperty ()
+ {
+ return configProperty_.end ();
+ }
+
+ PackageConfiguration::configProperty_const_iterator PackageConfiguration::
+ begin_configProperty () const
+ {
+ return configProperty_.begin ();
+ }
+
+ PackageConfiguration::configProperty_const_iterator PackageConfiguration::
+ end_configProperty () const
+ {
+ return configProperty_.end ();
+ }
+
+ void PackageConfiguration::
+ add_configProperty (::CIAO::Config_Handlers::Property const& e)
+ {
+ configProperty_.push_back (e);
+ }
+
+ size_t PackageConfiguration::
+ count_configProperty(void) const
+ {
+ return configProperty_.size ();
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ contentLocation_p () const
+ {
+ return contentLocation_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration::
+ contentLocation () const
+ {
+ return *contentLocation_;
+ }
+
+ void PackageConfiguration::
+ contentLocation (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (contentLocation_.get ())
+ {
+ *contentLocation_ = e;
+ }
+
+ else
+ {
+ contentLocation_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ contentLocation_->container (this);
+ }
+ }
+
+ // PackageConfiguration
+ //
+ bool PackageConfiguration::
+ href_p () const
+ {
+ return href_.get () != 0;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR > const& PackageConfiguration::
+ href () const
+ {
+ return *href_;
+ }
+
+ ::XMLSchema::string< ACE_TCHAR >& PackageConfiguration::
+ href ()
+ {
+ return *href_;
+ }
+
+ void PackageConfiguration::
+ href (::XMLSchema::string< ACE_TCHAR > const& e)
+ {
+ if (href_.get ())
+ {
+ *href_ = e;
+ }
+
+ else
+ {
+ href_ = ::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > (new ::XMLSchema::string< ACE_TCHAR > (e));
+ href_->container (this);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // ComponentPackageImport
+ //
+
+ ComponentPackageImport::
+ ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "location")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ add_location (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+
+ // PackageConfiguration
+ //
+
+ PackageConfiguration::
+ PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "label")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ label (t);
+ }
+
+ else if (n == "UUID")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ UUID (t);
+ }
+
+ else if (n == "basePackage")
+ {
+ ::CIAO::Config_Handlers::ComponentPackageDescription t (e);
+ basePackage (t);
+ }
+
+ else if (n == "specializedConfig")
+ {
+ ::CIAO::Config_Handlers::PackageConfiguration t (e);
+ specializedConfig (t);
+ }
+
+ else if (n == "importedPackage")
+ {
+ ::CIAO::Config_Handlers::ComponentPackageImport t (e);
+ importedPackage (t);
+ }
+
+ else if (n == "referencedPackage")
+ {
+ ::CIAO::Config_Handlers::ComponentPackageReference t (e);
+ referencedPackage (t);
+ }
+
+ else if (n == "selectRequirement")
+ {
+ ::CIAO::Config_Handlers::Requirement t (e);
+ add_selectRequirement (t);
+ }
+
+ else if (n == "configProperty")
+ {
+ ::CIAO::Config_Handlers::Property t (e);
+ add_configProperty (t);
+ }
+
+ else if (n == "contentLocation")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (e);
+ contentLocation (t);
+ }
+
+ else
+ {
+ }
+ }
+
+ while (p.more_attributes ())
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a (p.next_attribute ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (a.name ()));
+ if (n == "href")
+ {
+ ::XMLSchema::string< ACE_TCHAR > t (a);
+ href (t);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+ struct ComponentPackageImportTypeInfoInitializer
+ {
+ ComponentPackageImportTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (ComponentPackageImport));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ ComponentPackageImportTypeInfoInitializer ComponentPackageImportTypeInfoInitializer_;
+
+ struct PackageConfigurationTypeInfoInitializer
+ {
+ PackageConfigurationTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (PackageConfiguration));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ PackageConfigurationTypeInfoInitializer PackageConfigurationTypeInfoInitializer_;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ // ComponentPackageImport
+ //
+ //
+
+ void ComponentPackageImport::
+ traverse (Type& o)
+ {
+ pre (o);
+ location (o);
+ post (o);
+ }
+
+ void ComponentPackageImport::
+ traverse (Type const& o)
+ {
+ pre (o);
+ location (o);
+ post (o);
+ }
+
+ void ComponentPackageImport::
+ pre (Type&)
+ {
+ }
+
+ void ComponentPackageImport::
+ pre (Type const&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentPackageImport::Type::location_iterator b (o.begin_location()), e (o.end_location());
+
+ if (b != e)
+ {
+ location_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) location_next (o);
+ }
+
+ location_post (o);
+ }
+ }
+
+ void ComponentPackageImport::
+ location (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ ComponentPackageImport::Type::location_const_iterator b (o.begin_location()), e (o.end_location());
+
+ if (b != e)
+ {
+ location_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) location_next (o);
+ }
+
+ location_post (o);
+ }
+ }
+
+ void ComponentPackageImport::
+ location_pre (Type&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location_pre (Type const&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location_next (Type&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location_next (Type const&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location_post (Type&)
+ {
+ }
+
+ void ComponentPackageImport::
+ location_post (Type const&)
+ {
+ }
+
+ void ComponentPackageImport::
+ post (Type&)
+ {
+ }
+
+ void ComponentPackageImport::
+ post (Type const&)
+ {
+ }
+
+ // PackageConfiguration
+ //
+ //
+
+ void PackageConfiguration::
+ traverse (Type& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.basePackage_p ()) basePackage (o);
+ else basePackage_none (o);
+ if (o.specializedConfig_p ()) specializedConfig (o);
+ else specializedConfig_none (o);
+ if (o.importedPackage_p ()) importedPackage (o);
+ else importedPackage_none (o);
+ if (o.referencedPackage_p ()) referencedPackage (o);
+ else referencedPackage_none (o);
+ selectRequirement (o);
+ configProperty (o);
+ if (o.contentLocation_p ()) contentLocation (o);
+ else contentLocation_none (o);
+ if (o.href_p ()) href (o);
+ else href_none (o);
+ post (o);
+ }
+
+ void PackageConfiguration::
+ traverse (Type const& o)
+ {
+ pre (o);
+ if (o.label_p ()) label (o);
+ else label_none (o);
+ if (o.UUID_p ()) UUID (o);
+ else UUID_none (o);
+ if (o.basePackage_p ()) basePackage (o);
+ else basePackage_none (o);
+ if (o.specializedConfig_p ()) specializedConfig (o);
+ else specializedConfig_none (o);
+ if (o.importedPackage_p ()) importedPackage (o);
+ else importedPackage_none (o);
+ if (o.referencedPackage_p ()) referencedPackage (o);
+ else referencedPackage_none (o);
+ selectRequirement (o);
+ configProperty (o);
+ if (o.contentLocation_p ()) contentLocation (o);
+ else contentLocation_none (o);
+ if (o.href_p ()) href (o);
+ else href_none (o);
+ post (o);
+ }
+
+ void PackageConfiguration::
+ pre (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ pre (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ label (Type& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void PackageConfiguration::
+ label (Type const& o)
+ {
+ dispatch (o.label ());
+ }
+
+ void PackageConfiguration::
+ label_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ label_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ UUID (Type& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void PackageConfiguration::
+ UUID (Type const& o)
+ {
+ dispatch (o.UUID ());
+ }
+
+ void PackageConfiguration::
+ UUID_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ UUID_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ basePackage (Type& o)
+ {
+ dispatch (o.basePackage ());
+ }
+
+ void PackageConfiguration::
+ basePackage (Type const& o)
+ {
+ dispatch (o.basePackage ());
+ }
+
+ void PackageConfiguration::
+ basePackage_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ basePackage_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ specializedConfig (Type& o)
+ {
+ dispatch (o.specializedConfig ());
+ }
+
+ void PackageConfiguration::
+ specializedConfig (Type const& o)
+ {
+ dispatch (o.specializedConfig ());
+ }
+
+ void PackageConfiguration::
+ specializedConfig_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ specializedConfig_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ importedPackage (Type& o)
+ {
+ dispatch (o.importedPackage ());
+ }
+
+ void PackageConfiguration::
+ importedPackage (Type const& o)
+ {
+ dispatch (o.importedPackage ());
+ }
+
+ void PackageConfiguration::
+ importedPackage_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ importedPackage_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ referencedPackage (Type& o)
+ {
+ dispatch (o.referencedPackage ());
+ }
+
+ void PackageConfiguration::
+ referencedPackage (Type const& o)
+ {
+ dispatch (o.referencedPackage ());
+ }
+
+ void PackageConfiguration::
+ referencedPackage_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ referencedPackage_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PackageConfiguration::Type::selectRequirement_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement());
+
+ if (b != e)
+ {
+ selectRequirement_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) selectRequirement_next (o);
+ }
+
+ selectRequirement_post (o);
+ }
+
+ else selectRequirement_none (o);
+ }
+
+ void PackageConfiguration::
+ selectRequirement (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PackageConfiguration::Type::selectRequirement_const_iterator b (o.begin_selectRequirement()), e (o.end_selectRequirement());
+
+ if (b != e)
+ {
+ selectRequirement_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) selectRequirement_next (o);
+ }
+
+ selectRequirement_post (o);
+ }
+
+ else selectRequirement_none (o);
+ }
+
+ void PackageConfiguration::
+ selectRequirement_pre (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_pre (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_next (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_next (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_post (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_post (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ selectRequirement_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty (Type& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PackageConfiguration::Type::configProperty_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+ if (b != e)
+ {
+ configProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) configProperty_next (o);
+ }
+
+ configProperty_post (o);
+ }
+
+ else configProperty_none (o);
+ }
+
+ void PackageConfiguration::
+ configProperty (Type const& o)
+ {
+ // VC6 anathema strikes again
+ //
+ PackageConfiguration::Type::configProperty_const_iterator b (o.begin_configProperty()), e (o.end_configProperty());
+
+ if (b != e)
+ {
+ configProperty_pre (o);
+ for (; b != e;)
+ {
+ dispatch (*b);
+ if (++b != e) configProperty_next (o);
+ }
+
+ configProperty_post (o);
+ }
+
+ else configProperty_none (o);
+ }
+
+ void PackageConfiguration::
+ configProperty_pre (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_pre (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_next (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_next (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_post (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_post (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ configProperty_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ contentLocation (Type& o)
+ {
+ dispatch (o.contentLocation ());
+ }
+
+ void PackageConfiguration::
+ contentLocation (Type const& o)
+ {
+ dispatch (o.contentLocation ());
+ }
+
+ void PackageConfiguration::
+ contentLocation_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ contentLocation_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ href (Type& o)
+ {
+ dispatch (o.href ());
+ }
+
+ void PackageConfiguration::
+ href (Type const& o)
+ {
+ dispatch (o.href ());
+ }
+
+ void PackageConfiguration::
+ href_none (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ href_none (Type const&)
+ {
+ }
+
+ void PackageConfiguration::
+ post (Type&)
+ {
+ }
+
+ void PackageConfiguration::
+ post (Type const&)
+ {
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ // ComponentPackageImport
+ //
+ //
+
+ ComponentPackageImport::
+ ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ ComponentPackageImport::
+ ComponentPackageImport ()
+ {
+ }
+
+ void ComponentPackageImport::
+ traverse (Type const& o)
+ {
+ Traversal::ComponentPackageImport::traverse (o);
+ }
+
+ void ComponentPackageImport::
+ location_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("location", top_ ()));
+ }
+
+ void ComponentPackageImport::
+ location_next (Type const& o)
+ {
+ location_post (o);
+ location_pre (o);
+ }
+
+ void ComponentPackageImport::
+ location_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ // PackageConfiguration
+ //
+ //
+
+ PackageConfiguration::
+ PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ PackageConfiguration::
+ PackageConfiguration ()
+ {
+ }
+
+ void PackageConfiguration::
+ traverse (Type const& o)
+ {
+ Traversal::PackageConfiguration::traverse (o);
+ }
+
+ void PackageConfiguration::
+ label (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("label", top_ ()));
+ Traversal::PackageConfiguration::label (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ UUID (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("UUID", top_ ()));
+ Traversal::PackageConfiguration::UUID (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ basePackage (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("basePackage", top_ ()));
+ Traversal::PackageConfiguration::basePackage (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ specializedConfig (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("specializedConfig", top_ ()));
+ Traversal::PackageConfiguration::specializedConfig (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ importedPackage (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("importedPackage", top_ ()));
+ Traversal::PackageConfiguration::importedPackage (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ referencedPackage (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("referencedPackage", top_ ()));
+ Traversal::PackageConfiguration::referencedPackage (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ selectRequirement_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("selectRequirement", top_ ()));
+ }
+
+ void PackageConfiguration::
+ selectRequirement_next (Type const& o)
+ {
+ selectRequirement_post (o);
+ selectRequirement_pre (o);
+ }
+
+ void PackageConfiguration::
+ selectRequirement_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ configProperty_pre (Type const&)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("configProperty", top_ ()));
+ }
+
+ void PackageConfiguration::
+ configProperty_next (Type const& o)
+ {
+ configProperty_post (o);
+ configProperty_pre (o);
+ }
+
+ void PackageConfiguration::
+ configProperty_post (Type const&)
+ {
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ contentLocation (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("contentLocation", top_ ()));
+ Traversal::PackageConfiguration::contentLocation (o);
+ pop_ ();
+ }
+
+ void PackageConfiguration::
+ href (Type const& o)
+ {
+ ::XSCRT::XML::Attribute< ACE_TCHAR > a ("href", "", top_ ());
+ attr_ (&a);
+ Traversal::PackageConfiguration::href (o);
+ attr_ (0);
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/pcd.hpp b/modules/CIAO/tools/Config_Handlers/pcd.hpp
new file mode 100644
index 00000000000..d58c46fc5d9
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/pcd.hpp
@@ -0,0 +1,698 @@
+/* $Id$
+* This code was generated by the XML Schema Compiler.
+*
+* Changes made to this code will most likely be overwritten
+* when the handlers are recompiled.
+*
+* If you find errors or feel that there are bugfixes to be made,
+* please contact the current XSC maintainer:
+* Will Otte <wotte@dre.vanderbilt.edu>
+*/
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef PCD_HPP
+#define PCD_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class ComponentPackageImport;
+class PackageConfiguration;
+}
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "Basic_Deployment_Data.hpp"
+
+#include "cpd.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+class XSC_XML_Handlers_Export ComponentPackageImport : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// location
+//
+public:
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::iterator location_iterator;
+typedef ::std::list< ::XMLSchema::string< ACE_TCHAR > >::const_iterator location_const_iterator;
+location_iterator begin_location ();
+location_iterator end_location ();
+location_const_iterator begin_location () const;
+location_const_iterator end_location () const;
+void add_location (::XMLSchema::string< ACE_TCHAR > const& );
+size_t count_location (void) const;
+
+protected:
+::std::list< ::XMLSchema::string< ACE_TCHAR > > location_;
+
+public:
+ComponentPackageImport ();
+
+ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ComponentPackageImport (ComponentPackageImport const& s);
+
+ComponentPackageImport&
+operator= (ComponentPackageImport const& s);
+
+private:
+char regulator__;
+};
+
+
+class XSC_XML_Handlers_Export PackageConfiguration : public ::XSCRT::Type
+{
+//@@ VC6 anathema
+typedef ::XSCRT::Type Base__;
+
+// label
+//
+public:
+bool label_p () const;
+::XMLSchema::string< ACE_TCHAR > const& label () const;
+void label (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > label_;
+
+// UUID
+//
+public:
+bool UUID_p () const;
+::XMLSchema::string< ACE_TCHAR > const& UUID () const;
+void UUID (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > UUID_;
+
+// basePackage
+//
+public:
+bool basePackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageDescription const& basePackage () const;
+void basePackage (::CIAO::Config_Handlers::ComponentPackageDescription const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageDescription > basePackage_;
+
+// specializedConfig
+//
+public:
+bool specializedConfig_p () const;
+::CIAO::Config_Handlers::PackageConfiguration const& specializedConfig () const;
+void specializedConfig (::CIAO::Config_Handlers::PackageConfiguration const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > specializedConfig_;
+
+// importedPackage
+//
+public:
+bool importedPackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageImport const& importedPackage () const;
+void importedPackage (::CIAO::Config_Handlers::ComponentPackageImport const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageImport > importedPackage_;
+
+// referencedPackage
+//
+public:
+bool referencedPackage_p () const;
+::CIAO::Config_Handlers::ComponentPackageReference const& referencedPackage () const;
+void referencedPackage (::CIAO::Config_Handlers::ComponentPackageReference const& );
+
+protected:
+::std::auto_ptr< ::CIAO::Config_Handlers::ComponentPackageReference > referencedPackage_;
+
+// selectRequirement
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::iterator selectRequirement_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Requirement >::const_iterator selectRequirement_const_iterator;
+selectRequirement_iterator begin_selectRequirement ();
+selectRequirement_iterator end_selectRequirement ();
+selectRequirement_const_iterator begin_selectRequirement () const;
+selectRequirement_const_iterator end_selectRequirement () const;
+void add_selectRequirement (::CIAO::Config_Handlers::Requirement const& );
+size_t count_selectRequirement (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Requirement > selectRequirement_;
+
+// configProperty
+//
+public:
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::iterator configProperty_iterator;
+typedef ::std::list< ::CIAO::Config_Handlers::Property >::const_iterator configProperty_const_iterator;
+configProperty_iterator begin_configProperty ();
+configProperty_iterator end_configProperty ();
+configProperty_const_iterator begin_configProperty () const;
+configProperty_const_iterator end_configProperty () const;
+void add_configProperty (::CIAO::Config_Handlers::Property const& );
+size_t count_configProperty (void) const;
+
+protected:
+::std::list< ::CIAO::Config_Handlers::Property > configProperty_;
+
+// contentLocation
+//
+public:
+bool contentLocation_p () const;
+::XMLSchema::string< ACE_TCHAR > const& contentLocation () const;
+void contentLocation (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > contentLocation_;
+
+// href
+//
+public:
+bool href_p () const;
+::XMLSchema::string< ACE_TCHAR > const& href () const;
+::XMLSchema::string< ACE_TCHAR >& href ();
+void href (::XMLSchema::string< ACE_TCHAR > const& );
+
+protected:
+::std::auto_ptr< ::XMLSchema::string< ACE_TCHAR > > href_;
+
+public:
+PackageConfiguration ();
+
+PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR > const&);
+PackageConfiguration (PackageConfiguration const& s);
+
+PackageConfiguration&
+operator= (PackageConfiguration const& s);
+
+private:
+char regulator__;
+};
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Traversal
+{
+struct XSC_XML_Handlers_Export ComponentPackageImport : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::ComponentPackageImport >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+location (Type&);
+
+virtual void
+location (Type const&);
+
+virtual void
+location_pre (Type&);
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type&);
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type&);
+
+virtual void
+location_post (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+
+struct XSC_XML_Handlers_Export PackageConfiguration : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::PackageConfiguration >
+{
+virtual void
+traverse (Type&);
+
+virtual void
+traverse (Type const&);
+
+virtual void
+pre (Type&);
+
+virtual void
+pre (Type const&);
+
+virtual void
+label (Type&);
+
+virtual void
+label (Type const&);
+
+virtual void
+label_none (Type&);
+
+virtual void
+label_none (Type const&);
+
+virtual void
+UUID (Type&);
+
+virtual void
+UUID (Type const&);
+
+virtual void
+UUID_none (Type&);
+
+virtual void
+UUID_none (Type const&);
+
+virtual void
+basePackage (Type&);
+
+virtual void
+basePackage (Type const&);
+
+virtual void
+basePackage_none (Type&);
+
+virtual void
+basePackage_none (Type const&);
+
+virtual void
+specializedConfig (Type&);
+
+virtual void
+specializedConfig (Type const&);
+
+virtual void
+specializedConfig_none (Type&);
+
+virtual void
+specializedConfig_none (Type const&);
+
+virtual void
+importedPackage (Type&);
+
+virtual void
+importedPackage (Type const&);
+
+virtual void
+importedPackage_none (Type&);
+
+virtual void
+importedPackage_none (Type const&);
+
+virtual void
+referencedPackage (Type&);
+
+virtual void
+referencedPackage (Type const&);
+
+virtual void
+referencedPackage_none (Type&);
+
+virtual void
+referencedPackage_none (Type const&);
+
+virtual void
+selectRequirement (Type&);
+
+virtual void
+selectRequirement (Type const&);
+
+virtual void
+selectRequirement_pre (Type&);
+
+virtual void
+selectRequirement_pre (Type const&);
+
+virtual void
+selectRequirement_next (Type&);
+
+virtual void
+selectRequirement_next (Type const&);
+
+virtual void
+selectRequirement_post (Type&);
+
+virtual void
+selectRequirement_post (Type const&);
+
+virtual void
+selectRequirement_none (Type&);
+
+virtual void
+selectRequirement_none (Type const&);
+
+virtual void
+configProperty (Type&);
+
+virtual void
+configProperty (Type const&);
+
+virtual void
+configProperty_pre (Type&);
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type&);
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type&);
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+configProperty_none (Type&);
+
+virtual void
+configProperty_none (Type const&);
+
+virtual void
+contentLocation (Type&);
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+contentLocation_none (Type&);
+
+virtual void
+contentLocation_none (Type const&);
+
+virtual void
+href (Type&);
+
+virtual void
+href (Type const&);
+
+virtual void
+href_none (Type&);
+
+virtual void
+href_none (Type const&);
+
+virtual void
+post (Type&);
+
+virtual void
+post (Type const&);
+};
+}
+}
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+namespace Writer
+{
+struct ComponentPackageImport : Traversal::ComponentPackageImport,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::ComponentPackageImport Type;
+ComponentPackageImport (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+location_pre (Type &o)
+{
+
+this->location_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_pre (Type const&);
+
+virtual void
+location_next (Type &o)
+{
+
+this->location_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_next (Type const&);
+
+virtual void
+location_post (Type &o)
+{
+
+this->location_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+location_post (Type const&);
+
+protected:
+ComponentPackageImport ();
+};
+
+struct PackageConfiguration : Traversal::PackageConfiguration,
+virtual ::XSCRT::Writer< ACE_TCHAR >
+{
+typedef ::CIAO::Config_Handlers::PackageConfiguration Type;
+PackageConfiguration (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+virtual void
+traverse (Type &o)
+{
+
+this->traverse (const_cast <Type const &> (o));
+}
+
+
+virtual void
+traverse (Type const&);
+
+virtual void
+label (Type &o)
+{
+
+this->label (const_cast <Type const &> (o));
+}
+
+
+virtual void
+label (Type const&);
+
+virtual void
+UUID (Type &o)
+{
+
+this->UUID (const_cast <Type const &> (o));
+}
+
+
+virtual void
+UUID (Type const&);
+
+virtual void
+basePackage (Type &o)
+{
+
+this->basePackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+basePackage (Type const&);
+
+virtual void
+specializedConfig (Type &o)
+{
+
+this->specializedConfig (const_cast <Type const &> (o));
+}
+
+
+virtual void
+specializedConfig (Type const&);
+
+virtual void
+importedPackage (Type &o)
+{
+
+this->importedPackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+importedPackage (Type const&);
+
+virtual void
+referencedPackage (Type &o)
+{
+
+this->referencedPackage (const_cast <Type const &> (o));
+}
+
+
+virtual void
+referencedPackage (Type const&);
+
+virtual void
+selectRequirement_pre (Type &o)
+{
+
+this->selectRequirement_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_pre (Type const&);
+
+virtual void
+selectRequirement_next (Type &o)
+{
+
+this->selectRequirement_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_next (Type const&);
+
+virtual void
+selectRequirement_post (Type &o)
+{
+
+this->selectRequirement_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+selectRequirement_post (Type const&);
+
+virtual void
+configProperty_pre (Type &o)
+{
+
+this->configProperty_pre (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_pre (Type const&);
+
+virtual void
+configProperty_next (Type &o)
+{
+
+this->configProperty_next (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_next (Type const&);
+
+virtual void
+configProperty_post (Type &o)
+{
+
+this->configProperty_post (const_cast <Type const &> (o));
+}
+
+
+virtual void
+configProperty_post (Type const&);
+
+virtual void
+contentLocation (Type &o)
+{
+
+this->contentLocation (const_cast <Type const &> (o));
+}
+
+
+virtual void
+contentLocation (Type const&);
+
+virtual void
+href (Type &o)
+{
+
+this->href (const_cast <Type const &> (o));
+}
+
+
+virtual void
+href (Type const&);
+
+protected:
+PackageConfiguration ();
+};
+}
+}
+}
+
+namespace CIAO
+{
+namespace Config_Handlers
+{
+}
+}
+
+#endif // PCD_HPP
diff --git a/modules/CIAO/tools/Config_Handlers/test.cdp b/modules/CIAO/tools/Config_Handlers/test.cdp
new file mode 100644
index 00000000000..2430859601b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/test.cdp
@@ -0,0 +1,1827 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Deployment:deploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd">
+
+<UUID>8E8594AF-3310-446F-95E2-4440D622D5CE</UUID>
+
+<implementation id="_2D19FD96-440B-48D4-8D68-4E9B466B2BCC">
+<name>RT1H_Combined.ComponentImplementations.Config_Op_Impl.Config_Op</name>
+<source/>
+<artifact>_304555B7-9E3A-4DC5-9535-FA774FAA5070</artifact>
+<artifact>_358C7270-F290-465E-B0E4-5FD390980B44</artifact>
+<artifact>_C4A896EE-C035-45F1-8F14-2320383B1991</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_DA5C3C13-030E-4971-A0BF-8631563EFDF3">
+<name>RT1H_Combined.ComponentImplementations.Planner_One_Impl.MonolithicImplementation</name>
+<source/>
+<artifact>_6C7AA3D5-7A09-4DEF-8D49-60A4E1DE173D</artifact>
+<artifact>_1DAD54BC-F7B5-41E3-9FFC-3E0AE255D989</artifact>
+<artifact>_66E9CA12-F886-4760-A9B3-DB1E3F27B920</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_A7DAA16F-D455-4C63-92CE-05B98DD34B15">
+<name>RT1H_Combined.ComponentImplementations.Planner_Three_Impl.MonolithicImplementation</name>
+<source/>
+<artifact>_2748D2D1-AAE5-4934-A43F-1639241C4351</artifact>
+<artifact>_556249CC-E874-4BC6-9411-1B33EB2B895B</artifact>
+<artifact>_458C6E27-87CA-4F77-8036-C9F612511B6F</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_A8181747-270E-43FF-B723-50825AA8EA74">
+<name>RT1H_Combined.ComponentImplementations.Env_Dectector_Impl.MonolithicImplementation</name>
+<source/>
+<artifact>_1A46D81D-989F-406B-9E87-A57D63ADDF43</artifact>
+<artifact>_208D7378-B123-4F15-B376-CAA58B5CB1E0</artifact>
+<artifact>_5D7CAC69-4E3B-45F9-BACD-B12D3A86AC7A</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_05FAFE3F-76B3-4C6E-A86B-0225B9E76909">
+<name>RT1H_Combined.ComponentImplementations.Effector_Main_Impl.MonolithicImplementation</name>
+<source/>
+<artifact>_D40E03AB-CE43-49D6-A7FF-C1231FE98898</artifact>
+<artifact>_840618C0-5513-4389-97A4-C53EB87B29A0</artifact>
+<artifact>_E1AF706E-0B37-480B-8B26-E844FE2E9C3E</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_8D45FC0E-C3DD-4671-926D-A08430B37D37">
+<name>RT1H_Combined.ComponentImplementations.Effector_Secondary_Impl.MonolithicImplementation</name>
+<source/>
+<artifact>__31B2C21F-86C7-4306-AA10-33687687B5D0</artifact>
+<artifact>__C7A0B01C-6C13-4EAA-8527-155035BF1A00</artifact>
+<artifact>__2F43BA6B-2749-4744-B9C4-18F4AEAC16C9</artifact>
+<execParameter>
+<name>LoadAverage</name>
+<value>
+<type>
+<kind>tk_double</kind>
+</type>
+<value>
+<double>.25</double>
+</value>
+</value>
+</execParameter>
+</implementation>
+
+<implementation id="_2DF6D3BE-F1A2-43E1-BEA0-54576784FF96">
+<name>RT1H_Combined.CUTS_ComponentImplementations.BDC_Implementation.BDC_Monolithic_Impl</name>
+<source/>
+<artifact>__55C2DCD4-30B1-46A3-86B2-229896D74D0D</artifact>
+<artifact>__BF5CDECF-AF12-4876-9B6C-211B7BF0B22F</artifact>
+<artifact>_0E615519-6CC8-4EA5-B67A-65FF73586F04</artifact>
+</implementation>
+
+<implementation id="_BA0C4535-191E-4BE0-9BF4-A054EB2C4139">
+<name>RT1H_Combined.CUTS_ComponentImplementations.BDC_Ex_Implementation.BDC_Ex_Impl</name>
+<source/>
+<artifact>_2DBFA82B-1D1F-48C6-9BDC-014E789E6A77</artifact>
+<artifact>_5CE1793F-38DD-427D-A21E-E6D870E769E4</artifact>
+<artifact>_0B8A6C29-8962-4DA6-99F4-25FEECD77E97</artifact>
+</implementation>
+
+<implementation id="_D98AF36F-11FA-43A4-8FAD-C14A461437FF">
+<name>RT1H_Combined.RACE_ComponentImplementations.ControllerImplementation.ControllerMonolithicImpl</name>
+<source/>
+<artifact>__032AE7B6-3ABD-478A-B0D7-56BC4AAEF0B7</artifact>
+<artifact>__00B105AB-50F5-49B7-A822-9B267F2D8896</artifact>
+<artifact>__BF4AE6A2-BE32-4B8E-9919-C812EC18BF00</artifact>
+</implementation>
+
+<implementation id="_CA363CD1-4E23-4A4B-B25B-C38B939E2B25">
+<name>RT1H_Combined.RACE_ComponentImplementations.TargetManagerImplImplementation.TargetManagerImplMonolithicImpl</name>
+<source/>
+<artifact>__C22D0B06-6CDA-4652-B1CE-586E0C23251F</artifact>
+<artifact>__9CB3A43B-397F-4FA9-97AA-EBFC3A22BFEC</artifact>
+<artifact>__0F176DA2-9953-482A-9268-7DA5E69A88FE</artifact>
+</implementation>
+
+<implementation id="_7A233158-69BB-4382-BDE0-72432BF3D48E">
+<name>RT1H_Combined.RA_ComponentImplementations.AnalyzerImplementation.AnalyzerMonolithicImpl</name>
+<source/>
+<artifact>__315FC65C-0582-4E0E-BB8B-C23A1238C67F</artifact>
+<artifact>__7AD332BC-90DC-4E7D-B026-8D5053F2552E</artifact>
+<artifact>__84974D39-AE18-4C0A-B81A-B1EC349E93BB</artifact>
+</implementation>
+
+<implementation id="_14E77757-BC3A-49F4-8D45-FB447FA7F626">
+<name>RT1H_Combined.RA_ComponentImplementations.SimpleAllocationAnalyzerImplementation.SimpleAllocationAnalyzerMonolithicImpl</name>
+<source/>
+<artifact>__6BDE830C-FFA8-4F2D-9733-34F02F35020F</artifact>
+<artifact>__138A0FE1-D8AA-4C1E-BB5E-4EC9714F4CA8</artifact>
+<artifact>__621F3412-C507-4945-836B-CF9B81BDCC99</artifact>
+</implementation>
+
+<implementation id="_E4DC8736-E532-44DC-9C9B-789EBA3D6B27">
+<name>RT1H_Combined.RA_ComponentImplementations.Input_AdapterImplementation.Input_AdapterMonolithicImpl</name>
+<source/>
+<artifact>__DC22BCBB-DB20-4072-AA64-161AFD7A9C10</artifact>
+<artifact>__3E362049-0CF5-4F01-905F-67CAD769FFD5</artifact>
+<artifact>__3B466B60-F8C2-4E48-A6E4-3D3D7EED9F03</artifact>
+</implementation>
+
+<implementation id="_73898E70-9FB1-4881-9313-A2DE181EE48E">
+<name>RT1H_Combined.RA_ComponentImplementations.Interactive_Input_AdapterImplementation.Interactive_Input_AdapterMonolithicImpl</name>
+<source/>
+<artifact>__AD4B52E0-103C-49E2-BE47-29CAE978676F</artifact>
+<artifact>__E4AF24BF-5A39-46B1-8217-6343D7D53298</artifact>
+<artifact>__76A0CEFE-E2F7-4BF7-BB91-F309FB5AD33C</artifact>
+</implementation>
+
+<implementation id="_796D9731-1CD9-4855-83F2-025AECB90C93">
+<name>RT1H_Combined.RA_ComponentImplementations.Output_AdapterImplementation.Output_AdapterMonolithicImpl</name>
+<source/>
+<artifact>__864DB99C-C60B-4FDD-A47D-AFD5C1599892</artifact>
+<artifact>__D6EB8E01-F794-4C43-AB14-A3AFB9767D01</artifact>
+<artifact>__4C78C4F9-FEF4-45AA-84A4-FFB10255A1EC</artifact>
+</implementation>
+
+<implementation id="_A22015F9-9BC9-4767-A861-FAFF737E074B">
+<name>RT1H_Combined.RA_ComponentImplementations.Output_ManagerImplementation.Output_ManagerMonolithicImpl</name>
+<source/>
+<artifact>__AB498B7F-A0E8-4F59-BF24-BBB9D125EED3</artifact>
+<artifact>__1BB4CD4A-38A8-4BBA-9303-4A10F5B8BC57</artifact>
+<artifact>__280E6118-F4C7-4DE4-A0A4-A50637282EAE</artifact>
+</implementation>
+
+<implementation id="_219DB379-DB2E-44D2-8308-D91FC5A42A9D">
+<name>RT1H_Combined.RA_ComponentImplementations.DAnCE_Output_AdapterImplementation.DAnCE_Output_AdapterMonolithicImpl</name>
+<source/>
+<artifact>__A47095F9-2E08-485E-96B4-CC0829051DF3</artifact>
+<artifact>__E54AE941-14CA-48FC-BAAA-1B93269EF79B</artifact>
+<artifact>__ACA6BD67-D92A-4DBF-827A-7C0B15EA3F6D</artifact>
+</implementation>
+
+<implementation id="_5A98D073-1392-4C85-AB88-1AD6E61BF34D">
+<name>RT1H_Combined.RA_ComponentImplementations.XML_Output_AdapterImplementation.XML_Output_AdapterMonolithicImpl</name>
+<source/>
+<artifact>__CF7C6C9B-C6E3-4356-B9F1-598FA0B4A5B7</artifact>
+<artifact>__437B6234-9DD3-40E4-9AE0-0923EBAF4548</artifact>
+<artifact>__E2F1EA75-127C-4579-B692-ADD1026C6F23</artifact>
+</implementation>
+
+<implementation id="_571F6ECC-579F-4F69-88AB-EA1603B422E8">
+<name>RT1H_Combined.RA_ComponentImplementations.PlannerImplementation.PlannerMonolithicImpl</name>
+<source/>
+<artifact>__B28C1F32-0231-4F7F-8FE2-164321942B87</artifact>
+<artifact>__2021EE2F-3480-4BF9-9A3A-D146A99D251D</artifact>
+<artifact>__D952F988-841F-43BA-9650-86846B08DF5F</artifact>
+</implementation>
+
+<implementation id="_38C5B64C-72FD-48FF-B095-260669E2A488">
+<name>RT1H_Combined.RA_ComponentImplementations.SimpleBinPackerImplementation.SimpleBinPackerMonolithicImpl</name>
+<source/>
+<artifact>__2B5FE9E6-AF4C-4BC1-92A2-58101B2ECCA8</artifact>
+<artifact>__4D375D8F-5470-4236-8614-EF07D08020E3</artifact>
+<artifact>__D6176B6C-58E4-43D4-BFC9-3DCF98249044</artifact>
+</implementation>
+
+<implementation id="_FD120510-765E-4B02-803D-7DADF3F5E4E6">
+<name>RT1H_Combined.RA_ComponentImplementations.Planner_ManagerImplementation.Planner_ManagerMonolithicImpl</name>
+<source/>
+<artifact>__5B614077-C99E-428C-B8BE-252ADD7905B7</artifact>
+<artifact>__0BEB188E-3967-4D91-A6A1-CDF08EF81718</artifact>
+<artifact>__A65A1FA0-8F4D-4807-9AE9-90D344154D2C</artifact>
+</implementation>
+
+<implementation id="_5D6641D2-640C-4F80-B055-10DC69C7A636">
+<name>RT1H_Combined.RA_ComponentImplementations.Plan_AnalyzerImplementation.Plan_AnalyzerMonolithicImpl</name>
+<source/>
+<artifact>__1CC443DF-7EE3-4130-8ACE-EE4181AC96CD</artifact>
+<artifact>__57123764-8624-4D79-9C5B-7ADF929536E6</artifact>
+<artifact>__CDC7061A-483C-447B-8151-E68250566E86</artifact>
+</implementation>
+
+<instance id="_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector1</name>
+<node>blade44</node>
+<source/>
+<implementation>_A8181747-270E-43FF-B723-50825AA8EA74</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Env_Detector.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_AC6DB008-DCCB-45D7-B52D-628B74B49AC9">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector2</name>
+<node>blade44</node>
+<source/>
+<implementation>_A8181747-270E-43FF-B723-50825AA8EA74</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Env_Detector.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_7529501D-B22A-42F9-A75B-0E71DC97D3AA">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetecto3</name>
+<node>blade44</node>
+<source/>
+<implementation>_A8181747-270E-43FF-B723-50825AA8EA74</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Env_Detector.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_FEBD6AD3-6310-4E25-A0E5-957DED0B6509">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.EnvDetector4</name>
+<node>blade44</node>
+<source/>
+<implementation>_A8181747-270E-43FF-B723-50825AA8EA74</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Env_Detector.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector3</name>
+<node>blade43</node>
+<source/>
+<implementation>_8D45FC0E-C3DD-4671-926D-A08430B37D37</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Effectory_Secondary.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_EC0045E5-7501-4E2B-B755-D8CE22BF4816">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector2</name>
+<node>blade43</node>
+<source/>
+<implementation>_8D45FC0E-C3DD-4671-926D-A08430B37D37</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Effectory_Secondary.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_57B08287-3528-4862-9110-ACACD713360B">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector4</name>
+<node>blade43</node>
+<source/>
+<implementation>_8D45FC0E-C3DD-4671-926D-A08430B37D37</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Effectory_Secondary.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_AB189D2B-6D86-4020-88BD-74DBECC7F7B8">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Planner_Three</name>
+<node>blade39</node>
+<source/>
+<implementation>_A7DAA16F-D455-4C63-92CE-05B98DD34B15</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Planner_Three.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_002D7B3A-A628-43E3-AD53-B1AB8636001E">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Planner_One</name>
+<node>blade42</node>
+<source/>
+<implementation>_DA5C3C13-030E-4971-A0BF-8631563EFDF3</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Planner_One.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_015ACD88-117F-42C9-8D04-3FFAB9F6C98E">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Effector_Main</name>
+<node>blade41</node>
+<source/>
+<implementation>_05FAFE3F-76B3-4C6E-A86B-0225B9E76909</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Effectory_Main.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_34C61830-1F54-494F-95DE-4003BCD428C5">
+<name>RT1H_Combined.ComponentImplementations.RT1H.RT1H.Config_Op</name>
+<node>blade40</node>
+<source/>
+<implementation>_2D19FD96-440B-48D4-8D68-4E9B466B2BCC</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>Config_Op.ior</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<instance id="_7AE0BE73-48F8-4717-A5FF-524D454C58DD">
+<name>RT1H_Combined.ComponentImplementations.RACE.RACE.Benchmark_Data_Collector_Ex</name>
+<node>blade10</node>
+<source/>
+<implementation>_BA0C4535-191E-4BE0-9BF4-A054EB2C4139</implementation>
+<configProperty>
+<name>ComponentIOR</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>BDC_Ex.ior</string>
+</value>
+</value>
+</configProperty>
+<configProperty>
+<name>server_name</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>blade10.isislab.vanderbilt.edu</string>
+</value>
+</value>
+</configProperty>
+</instance>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_002D7B3A-A628-43E3-AD53-B1AB8636001E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_34C61830-1F54-494F-95DE-4003BCD428C5</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_57B08287-3528-4862-9110-ACACD713360B</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_EC0045E5-7501-4E2B-B755-D8CE22BF4816</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_FEBD6AD3-6310-4E25-A0E5-957DED0B6509</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_7529501D-B22A-42F9-A75B-0E71DC97D3AA</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_AC6DB008-DCCB-45D7-B52D-628B74B49AC9</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>cuts_testing_service_testing_service</name>
+<internalEndpoint>
+<portName>cuts_testing_service</portName>
+<kind>SimplexReceptacle</kind>
+<instance>_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>testing_service</portName>
+<kind>Facet</kind>
+<instance>_7AE0BE73-48F8-4717-A5FF-524D454C58DD</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>status_status</name>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventPublisher</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventConsumer</kind>
+<instance>_34C61830-1F54-494F-95DE-4003BCD428C5</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>status_status</name>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventPublisher</kind>
+<instance>_EC0045E5-7501-4E2B-B755-D8CE22BF4816</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventConsumer</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>status_status</name>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventPublisher</kind>
+<instance>_57B08287-3528-4862-9110-ACACD713360B</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventConsumer</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>status_status</name>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventPublisher</kind>
+<instance>_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>status</portName>
+<kind>EventConsumer</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_34C61830-1F54-494F-95DE-4003BCD428C5</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_57B08287-3528-4862-9110-ACACD713360B</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_EC0045E5-7501-4E2B-B755-D8CE22BF4816</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_015ACD88-117F-42C9-8D04-3FFAB9F6C98E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_2F3B1B72-DB17-47E7-BA21-1ABEF84032EC</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>assessment_assessment</name>
+<internalEndpoint>
+<portName>assessment</portName>
+<kind>EventPublisher</kind>
+<instance>_002D7B3A-A628-43E3-AD53-B1AB8636001E</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>assessment</portName>
+<kind>EventConsumer</kind>
+<instance>_34C61830-1F54-494F-95DE-4003BCD428C5</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>situation_situation</name>
+<internalEndpoint>
+<portName>situation</portName>
+<kind>EventPublisher</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>situation</portName>
+<kind>EventConsumer</kind>
+<instance>_002D7B3A-A628-43E3-AD53-B1AB8636001E</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_FEBD6AD3-6310-4E25-A0E5-957DED0B6509</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_7529501D-B22A-42F9-A75B-0E71DC97D3AA</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>command_command</name>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventPublisher</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>command</portName>
+<kind>EventConsumer</kind>
+<instance>_AC6DB008-DCCB-45D7-B52D-628B74B49AC9</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>track_track</name>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventPublisher</kind>
+<instance>_FEBD6AD3-6310-4E25-A0E5-957DED0B6509</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventConsumer</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>track_track</name>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventPublisher</kind>
+<instance>_7529501D-B22A-42F9-A75B-0E71DC97D3AA</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventConsumer</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>track_track</name>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventPublisher</kind>
+<instance>_AC6DB008-DCCB-45D7-B52D-628B74B49AC9</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventConsumer</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+</connection>
+
+<connection>
+<name>track_track</name>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventPublisher</kind>
+<instance>_3FD684C5-47B0-4E8C-88D0-8AD9CEB11FEB</instance>
+</internalEndpoint>
+<internalEndpoint>
+<portName>track</portName>
+<kind>EventConsumer</kind>
+<instance>_AB189D2B-6D86-4020-88BD-74DBECC7F7B8</instance>
+</internalEndpoint>
+</connection>
+
+<artifact id="_358C7270-F290-465E-B0E4-5FD390980B44">
+<name>RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_stub</name>
+<source/>
+<node/>
+<location>Config_Op_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="_304555B7-9E3A-4DC5-9535-FA774FAA5070">
+<name>RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_svnt</name>
+<source/>
+<node/>
+<location>Config_Op_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Config_Op_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_C4A896EE-C035-45F1-8F14-2320383B1991">
+<name>RT1H_Combined.ImplementationArtifacts.Config_Op_Artifacts.Config_Op_exec</name>
+<source/>
+<node/>
+<location>Config_Op_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Config_Op_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_208D7378-B123-4F15-B376-CAA58B5CB1E0">
+<name>RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Detector_exec</name>
+<source/>
+<node/>
+<location>Env_Detector_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Env_Detector_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_5D7CAC69-4E3B-45F9-BACD-B12D3A86AC7A">
+<name>RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Dectector_stub</name>
+<source/>
+<node/>
+<location>Env_Detector_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="_1A46D81D-989F-406B-9E87-A57D63ADDF43">
+<name>RT1H_Combined.ImplementationArtifacts.Env_Dectector_Artifacts.Env_Detector_svnt</name>
+<source/>
+<node/>
+<location>Env_Detector_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Env_Detector_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_1DAD54BC-F7B5-41E3-9FFC-3E0AE255D989">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_stub</name>
+<source/>
+<node/>
+<location>Planner_One_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="_6C7AA3D5-7A09-4DEF-8D49-60A4E1DE173D">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_svnt</name>
+<source/>
+<node/>
+<location>Planner_One_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Planner_One_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_66E9CA12-F886-4760-A9B3-DB1E3F27B920">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_One_Artifacts.Planner_One_exec</name>
+<source/>
+<node/>
+<location>Planner_One_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Planner_One_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__C7A0B01C-6C13-4EAA-8527-155035BF1A00">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_svnt</name>
+<source/>
+<node/>
+<location>Effector_Secondary_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Effector_Secondary_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__31B2C21F-86C7-4306-AA10-33687687B5D0">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_stub</name>
+<source/>
+<node/>
+<location>Effector_Secondary_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="__2F43BA6B-2749-4744-B9C4-18F4AEAC16C9">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Secondary_Artifacts.Effector_Secondary_exec</name>
+<source/>
+<node/>
+<location>Effector_Secondary_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Effector_Secondary_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_840618C0-5513-4389-97A4-C53EB87B29A0">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_svnt</name>
+<source/>
+<node/>
+<location>Effector_Main_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Effector_Main_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_E1AF706E-0B37-480B-8B26-E844FE2E9C3E">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_exec</name>
+<source/>
+<node/>
+<location>Effector_Main_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Effector_Main_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_D40E03AB-CE43-49D6-A7FF-C1231FE98898">
+<name>RT1H_Combined.ImplementationArtifacts.Effector_Main_Artifacts.Effector_Main_stub</name>
+<source/>
+<node/>
+<location>Effector_Main_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="_556249CC-E874-4BC6-9411-1B33EB2B895B">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_svnt</name>
+<source/>
+<node/>
+<location>Planner_Three_CoWorkEr_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Planner_Three_Factory_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_458C6E27-87CA-4F77-8036-C9F612511B6F">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_exec</name>
+<source/>
+<node/>
+<location>Planner_Three_CoWorkEr_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_TSCE_Planner_Three_Factory_CoWorkEr_Factory_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_2748D2D1-AAE5-4934-A43F-1639241C4351">
+<name>RT1H_Combined.ImplementationArtifacts.Planner_Three_Artifacts.Planner_Three_stub</name>
+<source/>
+<node/>
+<location>Planner_Three_CoWorkEr_stub</location>
+</artifact>
+
+<artifact id="__55C2DCD4-30B1-46A3-86B2-229896D74D0D">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_stub</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_stub</location>
+</artifact>
+
+<artifact id="__BF5CDECF-AF12-4876-9B6C-211B7BF0B22F">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_svnt</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CUTS_Benchmark_Data_Collector_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_0E615519-6CC8-4EA5-B67A-65FF73586F04">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Artifacts.BDC_exec</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CUTS_Benchmark_Data_Collector_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_0B8A6C29-8962-4DA6-99F4-25FEECD77E97">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_exec</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_Ex_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CUTS_Benchmark_Data_Collector_Ex_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="_5CE1793F-38DD-427D-A21E-E6D870E769E4">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_stub</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_Ex_stub</location>
+</artifact>
+
+<artifact id="_2DBFA82B-1D1F-48C6-9BDC-014E789E6A77">
+<name>RT1H_Combined.CUTS_ImplementationArtifacts.BDC_Ex_Artifacts.BDC_Ex_svnt</name>
+<source/>
+<node/>
+<location>Benchmark_Data_Collector_Ex_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CUTS_Benchmark_Data_Collector_Ex_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__032AE7B6-3ABD-478A-B0D7-56BC4AAEF0B7">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_stub</name>
+<source/>
+<node/>
+<location>Controller_stub</location>
+</artifact>
+
+<artifact id="__00B105AB-50F5-49B7-A822-9B267F2D8896">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_svnt</name>
+<source/>
+<node/>
+<location>Controller_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Controller_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__BF4AE6A2-BE32-4B8E-9919-C812EC18BF00">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.ControllerArtifacts.Controller_exec</name>
+<source/>
+<node/>
+<location>Controller_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Controller_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__C22D0B06-6CDA-4652-B1CE-586E0C23251F">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_stub</name>
+<source/>
+<node/>
+<location>TargetManager_stub</location>
+</artifact>
+
+<artifact id="__9CB3A43B-397F-4FA9-97AA-EBFC3A22BFEC">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_svnt</name>
+<source/>
+<node/>
+<location>TargetManager_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_TargetManagerHome_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__0F176DA2-9953-482A-9268-7DA5E69A88FE">
+<name>RT1H_Combined.RACE_ImplementationArtifacts.TargetManagerImplArtifacts.TargetManager_exec</name>
+<source/>
+<node/>
+<location>TargetManager_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_TargetManagerHome_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__315FC65C-0582-4E0E-BB8B-C23A1238C67F">
+<name>RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_stub</name>
+<source/>
+<node/>
+<location>Analyzer_stub</location>
+</artifact>
+
+<artifact id="__7AD332BC-90DC-4E7D-B026-8D5053F2552E">
+<name>RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_svnt</name>
+<source/>
+<node/>
+<location>Analyzer_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Analyzer_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__84974D39-AE18-4C0A-B81A-B1EC349E93BB">
+<name>RT1H_Combined.RA_ImplementationArtifacts.AnalyzerArtifacts.Analyzer_exec</name>
+<source/>
+<node/>
+<location>Analyzer_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Analyzer_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__6BDE830C-FFA8-4F2D-9733-34F02F35020F">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_stub</name>
+<source/>
+<node/>
+<location>SimpleAllocationAnalyzer_stub</location>
+</artifact>
+
+<artifact id="__138A0FE1-D8AA-4C1E-BB5E-4EC9714F4CA8">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_svnt</name>
+<source/>
+<node/>
+<location>SimpleAllocationAnalyzer_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_SimpleAllocationAnalyzer_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__621F3412-C507-4945-836B-CF9B81BDCC99">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleAllocationAnalyzerArtifacts.SimpleAllocationAnalyzer_exec</name>
+<source/>
+<node/>
+<location>SimpleAllocationAnalyzer_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_SimpleAllocationAnalyzer_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__DC22BCBB-DB20-4072-AA64-161AFD7A9C10">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_stub</name>
+<source/>
+<node/>
+<location>Input_Adapter_stub</location>
+</artifact>
+
+<artifact id="__3E362049-0CF5-4F01-905F-67CAD769FFD5">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_svnt</name>
+<source/>
+<node/>
+<location>Input_Adapter_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Input_Adapter_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__3B466B60-F8C2-4E48-A6E4-3D3D7EED9F03">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Input_AdapterArtifacts.Input_Adapter_exec</name>
+<source/>
+<node/>
+<location>Input_Adapter_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Input_Adapter_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__AD4B52E0-103C-49E2-BE47-29CAE978676F">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_stub</name>
+<source/>
+<node/>
+<location>Interactive_Input_Adapter_stub</location>
+</artifact>
+
+<artifact id="__E4AF24BF-5A39-46B1-8217-6343D7D53298">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_svnt</name>
+<source/>
+<node/>
+<location>Interactive_Input_Adapter_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Interactive_Input_Adapter_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__76A0CEFE-E2F7-4BF7-BB91-F309FB5AD33C">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Interactive_Input_AdapterArtifacts.Interactive_Input_Adapter_exec</name>
+<source/>
+<node/>
+<location>Interactive_Input_Adapter_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Interactive_Input_Adapter_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__864DB99C-C60B-4FDD-A47D-AFD5C1599892">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_stub</name>
+<source/>
+<node/>
+<location>Output_Adapter_stub</location>
+</artifact>
+
+<artifact id="__D6EB8E01-F794-4C43-AB14-A3AFB9767D01">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_svnt</name>
+<source/>
+<node/>
+<location>Output_Adapter_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Output_Adapter_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__4C78C4F9-FEF4-45AA-84A4-FFB10255A1EC">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_AdapterArtifacts.Output_Adapter_exec</name>
+<source/>
+<node/>
+<location>Output_Adapter_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Output_Adapter_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__AB498B7F-A0E8-4F59-BF24-BBB9D125EED3">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_stub</name>
+<source/>
+<node/>
+<location>Output_Manager_stub</location>
+</artifact>
+
+<artifact id="__1BB4CD4A-38A8-4BBA-9303-4A10F5B8BC57">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_svnt</name>
+<source/>
+<node/>
+<location>Output_Manager_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Output_Manager_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__280E6118-F4C7-4DE4-A0A4-A50637282EAE">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Output_ManagerArtifacts.Output_Manager_exec</name>
+<source/>
+<node/>
+<location>Output_Manager_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Output_Manager_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__A47095F9-2E08-485E-96B4-CC0829051DF3">
+<name>RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_stub</name>
+<source/>
+<node/>
+<location>DAnCE_Output_Adapter_stub</location>
+</artifact>
+
+<artifact id="__E54AE941-14CA-48FC-BAAA-1B93269EF79B">
+<name>RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_svnt</name>
+<source/>
+<node/>
+<location>DAnCE_Output_Adapter_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_DAnCE_Output_Adapter_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__ACA6BD67-D92A-4DBF-827A-7C0B15EA3F6D">
+<name>RT1H_Combined.RA_ImplementationArtifacts.DAnCE_Output_AdapterArtifacts.DAnCE_Output_Adapter_exec</name>
+<source/>
+<node/>
+<location>DAnCE_Output_Adapter_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_DAnCE_Output_Adapter_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__CF7C6C9B-C6E3-4356-B9F1-598FA0B4A5B7">
+<name>RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_stub</name>
+<source/>
+<node/>
+<location>XML_Output_Adapter_stub</location>
+</artifact>
+
+<artifact id="__437B6234-9DD3-40E4-9AE0-0923EBAF4548">
+<name>RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_svnt</name>
+<source/>
+<node/>
+<location>XML_Output_Adapter_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_XML_Output_Adapter_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__E2F1EA75-127C-4579-B692-ADD1026C6F23">
+<name>RT1H_Combined.RA_ImplementationArtifacts.XML_Output_AdapterArtifacts.XML_Output_Adapter_exec</name>
+<source/>
+<node/>
+<location>XML_Output_Adapter_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_XML_Output_Adapter_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__B28C1F32-0231-4F7F-8FE2-164321942B87">
+<name>RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_stub</name>
+<source/>
+<node/>
+<location>Planner_stub</location>
+</artifact>
+
+<artifact id="__2021EE2F-3480-4BF9-9A3A-D146A99D251D">
+<name>RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_svnt</name>
+<source/>
+<node/>
+<location>Planner_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Planner_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__D952F988-841F-43BA-9650-86846B08DF5F">
+<name>RT1H_Combined.RA_ImplementationArtifacts.PlannerArtifacts.Planner_exec</name>
+<source/>
+<node/>
+<location>Planner_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Planner_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__2B5FE9E6-AF4C-4BC1-92A2-58101B2ECCA8">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_stub</name>
+<source/>
+<node/>
+<location>SimpleBinPacker_stub</location>
+</artifact>
+
+<artifact id="__4D375D8F-5470-4236-8614-EF07D08020E3">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_svnt</name>
+<source/>
+<node/>
+<location>SimpleBinPacker_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_SimpleBinPacker_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__D6176B6C-58E4-43D4-BFC9-3DCF98249044">
+<name>RT1H_Combined.RA_ImplementationArtifacts.SimpleBinPackerArtifacts.SimpleBinPacker_exec</name>
+<source/>
+<node/>
+<location>SimpleBinPacker_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_SimpleBinPacker_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__5B614077-C99E-428C-B8BE-252ADD7905B7">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_stub</name>
+<source/>
+<node/>
+<location>Planner_Manager_stub</location>
+</artifact>
+
+<artifact id="__0BEB188E-3967-4D91-A6A1-CDF08EF81718">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_svnt</name>
+<source/>
+<node/>
+<location>Planner_Manager_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Planner_Manager_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__A65A1FA0-8F4D-4807-9AE9-90D344154D2C">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Planner_ManagerArtifacts.Planner_Manager_exec</name>
+<source/>
+<node/>
+<location>Planner_Manager_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Planner_Manager_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__1CC443DF-7EE3-4130-8ACE-EE4181AC96CD">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_stub</name>
+<source/>
+<node/>
+<location>Plan_Analyzer_stub</location>
+</artifact>
+
+<artifact id="__57123764-8624-4D79-9C5B-7ADF929536E6">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_svnt</name>
+<source/>
+<node/>
+<location>Plan_Analyzer_svnt</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Plan_Analyzer_Home_Servant</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+<artifact id="__CDC7061A-483C-447B-8151-E68250566E86">
+<name>RT1H_Combined.RA_ImplementationArtifacts.Plan_AnalyzerArtifacts.Plan_Analyzer_exec</name>
+<source/>
+<node/>
+<location>Plan_Analyzer_exec</location>
+<execParameter>
+<name>entryPoint</name>
+<value>
+<type>
+<kind>tk_string</kind>
+</type>
+<value>
+<string>create_CIAO_RACE_Plan_Analyzer_Home_Impl</string>
+</value>
+</value>
+</execParameter>
+</artifact>
+
+</Deployment:deploymentPlan>
diff --git a/modules/CIAO/tools/Config_Handlers/test.cpp b/modules/CIAO/tools/Config_Handlers/test.cpp
new file mode 100644
index 00000000000..549700fb79d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/test.cpp
@@ -0,0 +1,120 @@
+// $Id$
+
+#include <iostream>
+
+#include "Deployment.hpp"
+#include "DP_Handler.h"
+#include "ciao/Deployment_DataC.h"
+#include "ciao/CIAO_ServerResourcesC.h"
+#include "ace/Get_Opt.h"
+#include "Utils/XML_Helper.h"
+#include "DnC_Dump.h"
+#include "tao/ORB.h"
+static const char *input_file = "BasicSP.cdp";
+
+
+static int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "i:");
+
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'i':
+ input_file = get_opts.opt_arg ();
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-i <input file> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command-line
+ return 0;
+}
+
+// Check to see if SRD was imported.
+void check_srd (const Deployment::DeploymentPlan &);
+
+using namespace CIAO::Config_Handlers;
+
+
+int main (int argc, char *argv[])
+{
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ // Initialize an ORB so Any will work
+ CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv, "");
+ ACE_UNUSED_ARG (orb);
+
+ //Create an XML_Helper for all the file work
+ XML_Helper the_helper;
+
+ if (xercesc::DOMDocument *doc = the_helper.create_dom (input_file))
+ {
+ //Read in the XSC type structure from the DOMDocument
+ DeploymentPlan dp = deploymentPlan (doc);
+
+ //Convert the XSC to an IDL datatype
+
+ DP_Handler dp_handler (dp);
+
+ std::cout << "Instance document import succeeded. Dumping contents to file\n";
+
+ //Retrieve the newly created IDL structure
+ Deployment::DeploymentPlan *idl = dp_handler.plan();
+
+ // Check for server resources, if present....
+ check_srd (*idl);
+
+ //Convert it back to an XSC structure with a new DP_Handler
+ DP_Handler reverse_handler(*idl);
+
+ //Create a new DOMDocument for writing the XSC into XML
+ xercesc::DOMDocument* the_xsc (the_helper.create_dom(0));
+
+ //Serialize the XSC into a DOMDocument
+ deploymentPlan(*reverse_handler.xsc(), the_xsc);
+
+
+ //Write it to test.xml
+ the_helper.write_DOM(the_xsc, "test.xml");
+
+ //Cleanliness is next to Godliness
+ delete doc;
+ }
+
+ std::cout << "Test completed!\n";
+
+ return 0;
+}
+
+
+void check_srd (const Deployment::DeploymentPlan &dp)
+{
+ for (CORBA::ULong i = 0;
+ i < dp.infoProperty.length ();
+ ++i)
+ {
+ if (ACE_OS::strcmp (dp.infoProperty[i].name.in (),
+ "CIAOServerResources") == 0)
+ {
+ CIAO::DAnCE::ServerResource *test;
+
+ if (dp.infoProperty[i].value >>= test)
+ std::cerr << "ServerResources found and successfully extracted." << std::endl;
+ else
+ std::cerr << "ERROR: ServerResource extraction failed!" << std::endl;
+ }
+ }
+
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/toplevel.cpp b/modules/CIAO/tools/Config_Handlers/toplevel.cpp
new file mode 100644
index 00000000000..25c9a04929d
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/toplevel.cpp
@@ -0,0 +1,238 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+#include "toplevel.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // TopLevelPackageDescription
+ //
+
+ TopLevelPackageDescription::
+ TopLevelPackageDescription (::CIAO::Config_Handlers::PackageConfiguration const& package__)
+ :
+ ::XSCRT::Type (),
+ package_ (new ::CIAO::Config_Handlers::PackageConfiguration (package__)),
+ regulator__ ()
+ {
+ package_->container (this);
+ }
+
+ TopLevelPackageDescription::
+ TopLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const& s)
+ :
+ ::XSCRT::Type (),
+ package_ (new ::CIAO::Config_Handlers::PackageConfiguration (*s.package_)),
+ regulator__ ()
+ {
+ package_->container (this);
+ }
+
+ ::CIAO::Config_Handlers::TopLevelPackageDescription& TopLevelPackageDescription::
+ operator= (::CIAO::Config_Handlers::TopLevelPackageDescription const& s)
+ {
+ package (s.package ());
+
+ return *this;
+ }
+
+
+ // TopLevelPackageDescription
+ //
+ ::CIAO::Config_Handlers::PackageConfiguration const& TopLevelPackageDescription::
+ package () const
+ {
+ return *package_;
+ }
+
+ void TopLevelPackageDescription::
+ package (::CIAO::Config_Handlers::PackageConfiguration const& e)
+ {
+ *package_ = e;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ // TopLevelPackageDescription
+ //
+
+ TopLevelPackageDescription::
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e)
+ :Base__ (e), regulator__ ()
+ {
+
+ ::XSCRT::Parser< ACE_TCHAR > p (e);
+
+ while (p.more_elements ())
+ {
+ ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ());
+ ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ()));
+
+ if (n == "package")
+ {
+ package_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e));
+ package_->container (this);
+ }
+
+ else
+ {
+ }
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/TypeInfo.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace
+ {
+ ::XMLSchema::TypeInfoInitializer < ACE_TCHAR > XMLSchemaTypeInfoInitializer_ (::XSCRT::extended_type_info_map ());
+
+ struct TopLevelPackageDescriptionTypeInfoInitializer
+ {
+ TopLevelPackageDescriptionTypeInfoInitializer ()
+ {
+ ::XSCRT::TypeId id (typeid (TopLevelPackageDescription));
+ ::XSCRT::ExtendedTypeInfo nf (id);
+
+ nf.add_base (::XSCRT::ExtendedTypeInfo::Access::public_, false, typeid (::XSCRT::Type));
+ ::XSCRT::extended_type_info_map ().insert (::std::make_pair (id, nf));
+ }
+ };
+
+ TopLevelPackageDescriptionTypeInfoInitializer TopLevelPackageDescriptionTypeInfoInitializer_;
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ // TopLevelPackageDescription
+ //
+ //
+
+ void TopLevelPackageDescription::
+ traverse (Type& o)
+ {
+ pre (o);
+ package (o);
+ post (o);
+ }
+
+ void TopLevelPackageDescription::
+ traverse (Type const& o)
+ {
+ pre (o);
+ package (o);
+ post (o);
+ }
+
+ void TopLevelPackageDescription::
+ pre (Type&)
+ {
+ }
+
+ void TopLevelPackageDescription::
+ pre (Type const&)
+ {
+ }
+
+ void TopLevelPackageDescription::
+ package (Type& o)
+ {
+ dispatch (o.package ());
+ }
+
+ void TopLevelPackageDescription::
+ package (Type const& o)
+ {
+ dispatch (o.package ());
+ }
+
+ void TopLevelPackageDescription::
+ post (Type&)
+ {
+ }
+
+ void TopLevelPackageDescription::
+ post (Type const&)
+ {
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ // TopLevelPackageDescription
+ //
+ //
+
+ TopLevelPackageDescription::
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e)
+ : ::XSCRT::Writer< ACE_TCHAR > (e)
+ {
+ }
+
+ TopLevelPackageDescription::
+ TopLevelPackageDescription ()
+ {
+ }
+
+ void TopLevelPackageDescription::
+ traverse (Type const& o)
+ {
+ Traversal::TopLevelPackageDescription::traverse (o);
+ }
+
+ void TopLevelPackageDescription::
+ package (Type const& o)
+ {
+ push_ (::XSCRT::XML::Element< ACE_TCHAR > ("package", top_ ()));
+ Traversal::TopLevelPackageDescription::package (o);
+ pop_ ();
+ }
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
diff --git a/modules/CIAO/tools/Config_Handlers/toplevel.hpp b/modules/CIAO/tools/Config_Handlers/toplevel.hpp
new file mode 100644
index 00000000000..09964cff90b
--- /dev/null
+++ b/modules/CIAO/tools/Config_Handlers/toplevel.hpp
@@ -0,0 +1,168 @@
+/* $Id$
+ * This code was generated by the XML Schema Compiler.
+ *
+ * Changes made to this code will most likely be overwritten
+ * when the handlers are recompiled.
+ *
+ * If you find errors or feel that there are bugfixes to be made,
+ * please contact the current XSC maintainer:
+ * Will Otte <wotte@dre.vanderbilt.edu>
+ */
+
+
+// Fix for Borland compilers, which seem to have a broken
+// <string> include.
+#ifdef __BORLANDC__
+# include <string.h>
+#endif
+
+#include "XSC_XML_Handlers_Export.h"
+#ifndef TOPLEVEL_HPP
+#define TOPLEVEL_HPP
+
+// Forward declarations.
+//
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class TopLevelPackageDescription;
+ }
+}
+
+#include <memory>
+#include <list>
+#include "XMLSchema/Types.hpp"
+
+#include "pcd.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ class XSC_XML_Handlers_Export TopLevelPackageDescription : public ::XSCRT::Type
+ {
+ //@@ VC6 anathema
+ typedef ::XSCRT::Type Base__;
+
+ // package
+ //
+ public:
+ ::CIAO::Config_Handlers::PackageConfiguration const& package () const;
+ void package (::CIAO::Config_Handlers::PackageConfiguration const& );
+
+ protected:
+ ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > package_;
+
+ public:
+ TopLevelPackageDescription (::CIAO::Config_Handlers::PackageConfiguration const& package__);
+
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const&);
+ TopLevelPackageDescription (TopLevelPackageDescription const& s);
+
+ ~TopLevelPackageDescription () {};
+ TopLevelPackageDescription&
+ operator= (TopLevelPackageDescription const& s);
+
+ private:
+ char regulator__;
+ };
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#include "XMLSchema/Traversal.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Traversal
+ {
+ struct XSC_XML_Handlers_Export TopLevelPackageDescription : ::XMLSchema::Traversal::Traverser< ::CIAO::Config_Handlers::TopLevelPackageDescription >
+ {
+ virtual void
+ traverse (Type&);
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ pre (Type&);
+
+ virtual void
+ pre (Type const&);
+
+ virtual void
+ package (Type&);
+
+ virtual void
+ package (Type const&);
+
+ virtual void
+ post (Type&);
+
+ virtual void
+ post (Type const&);
+ };
+ }
+ }
+}
+
+#include "XMLSchema/Writer.hpp"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ namespace Writer
+ {
+ struct TopLevelPackageDescription : Traversal::TopLevelPackageDescription,
+ virtual ::XSCRT::Writer< ACE_TCHAR >
+ {
+ typedef ::CIAO::Config_Handlers::TopLevelPackageDescription Type;
+ TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >&);
+
+ virtual void
+ traverse (Type &o)
+ {
+
+ this->traverse (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ traverse (Type const&);
+
+ virtual void
+ package (Type &o)
+ {
+
+ this->package (const_cast <Type const &> (o));
+ }
+
+
+ virtual void
+ package (Type const&);
+
+ protected:
+ TopLevelPackageDescription ();
+ };
+ }
+ }
+}
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+ }
+}
+
+#endif // TOPLEVEL_HPP
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc b/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc
new file mode 100644
index 00000000000..b2cd31ba41e
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/IDL3_to_IDL2.mpc
@@ -0,0 +1,67 @@
+// -*- MPC -*-
+// $Id$
+
+project(TAO_IDL3_TO_IDL2_BE) : acelib, install, tao_output, crosscompile {
+ after += TAO_IDL_FE
+ sharedname = TAO_IDL3_TO_IDL2_BE
+ libs += TAO_IDL_FE
+ dynamicflags = TAO_IDL3_TO_IDL2_BE_BUILD_DLL
+ includes += $(TAO_ROOT)/TAO_IDL/include $(TAO_ROOT)/TAO_IDL/fe
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ Source_Files {
+ be_global.cpp
+ be_helper.cpp
+ be_init.cpp
+ be_produce.cpp
+ be_sunsoft.cpp
+ idl3_to_idl2_visitor.cpp
+ }
+
+ Header_Files {
+ be_extern.h
+ be_global.h
+ be_helper.h
+ be_sunsoft.h
+ idl3_to_idl2_visitor.h
+ TAO_IDL3_TO_IDL2_BE_Export.h
+ }
+}
+
+
+project(TAO_IDL3_TO_IDL2_EXE) : aceexe, install, tao_output, crosscompile {
+ after += TAO_IDL3_TO_IDL2_BE TAO_IDL_FE
+ exename = tao_idl3_to_idl2
+ libs += TAO_IDL3_TO_IDL2_BE TAO_IDL_FE
+ includes += . $(TAO_ROOT)/TAO_IDL/include \
+ $(TAO_ROOT)/TAO_IDL/fe \
+ $(TAO_ROOT)
+ libpaths += $(TAO_ROOT)/TAO_IDL
+ install = $(ACE_ROOT)/bin
+
+ // This is necessary for MPC to pull in rules.ciao.GNU
+ includes += $(CIAO_ROOT)
+
+ verbatim(gnuace, local) {
+ ifeq ($(TAO_IDL_PREPROCESSOR),)
+ CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(strip $(CXX))\\\"
+ else
+ CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(subst \\,\\,$(TAO_IDL_PREPROCESSOR))\\\"
+ endif
+
+ VPATH = $(TAO_ROOT)/TAO_IDL $(TAO_ROOT)/TAO_IDL/driver
+ }
+
+ Source_Files {
+ $(TAO_ROOT)/TAO_IDL/driver/drv_args.cpp
+ $(TAO_ROOT)/TAO_IDL/driver/drv_preproc.cpp
+ $(TAO_ROOT)/TAO_IDL/tao_idl.cpp
+ }
+
+ Header_Files {
+ $(TAO_ROOT)/TAO_IDL/include/drv_extern.h
+ }
+}
+
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/README b/modules/CIAO/tools/IDL3_to_IDL2/README
new file mode 100644
index 00000000000..3f3672c2115
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/README
@@ -0,0 +1,128 @@
+
+ IDL3 To IDL2 Converter
+
+A pluggable back end used with the IDL compiler parser
+and command line processor, this tool converts CCM-related
+IDL constructs into their corresponding IDL2 equivalents,
+in a new IDL file. For more information about CIAO and the CIAO
+CIDL compiler, please see
+
+$CIAO_ROOT/docs/releasenotes/index.html
+
+COMPILING:
+
+Use the provided .mpc file to generate a project or makefile to
+compile the pluggable back end library and the executable.
+Make sure the TAO IDL compiler front end is already built.
+
+EXECUTABLE NAME:
+
+tao_idl3_to_idl2
+
+COMMAND LINE OPTIONS:
+
+All the usual front-end command line options that apply to the IDL compiler
+(such as path includes) work with this tool as well, since the IDL compiler
+front end is simply reused. The options -? or -h will display a usage
+message, including both front end and back end options. For a complete
+list of IDL compiler command line options and a description of each, see
+TAO/docs/compiler.html.
+
+BACKEND OPTIONS:
+
+-o <path> Also works the same as with the IDL compiler, setting the
+output directory, overriding the default, which is the directory of
+execution.
+
+CAVEAT:
+
+When using the TAO IDL compiler on files that are generated by this tool,
+use the command line option -Sm on the IDL compiler, which will disable
+the internal generation of equivalent IDL nodes in the AST. You'll notice
+from the example below that the only ones that remain are eventtypes.
+The -Sm option will prevent the IDL compiler from trying to create the
+corresponding xxxConsumer interface, which now already exists explicitly
+in IDL.
+
+EXAMPLE CONVERSION:
+
+
+// test.idl
+
+#include <Components.idl>
+
+interface Foo {};
+
+eventtype Ev {};
+
+component Bar
+{
+ uses multiple Foo needs_foo;
+ publishes Ev ev_pub;
+};
+
+home BarHome manages Bar
+{
+};
+
+
+Typing
+
+tao_idl3_to_idl2 -I<CIAO_ROOT>/ciao -I<TAO_ROOT> test.idl
+
+will generate
+
+
+
+// test_IDL2.idl
+
+#include "Components.idl"
+
+interface Foo {};
+
+eventtype Ev {};
+
+interface EvConsumer : Components::EventConsumerBase
+{
+ void push_Ev (in Ev the_Ev);
+};
+
+interface Bar : Components::CCMObject
+{
+ struct needs_fooConnection
+ {
+ Foo objref;
+ Components::Cookie ck;
+ };
+
+ typedef sequence<needs_fooConnection> needs_fooConnections;
+
+ Components::Cookie connect_needs_foo (in Foo connection)
+ raises (Components::ExceededConnectionLimit, Components::InvalidConnection);
+
+ Foo disconnect_needs_foo (in Components::Cookie ck)
+ raises (Components::InvalidConnection);
+
+ needs_fooConnections get_connections_needs_foo ();
+
+ Components::Cookie subscribe_ev_pub (in EvConsumer consumer)
+ raises (Components::ExceededConnectionLimit);
+
+ EvConsumer unsubscribe_ev_pub (in Components::Cookie ck)
+ raises (Components::InvalidConnection);
+};
+
+interface BarHomeExplicit : Components::CCMHome
+{
+};
+
+interface BarHomeImplicit : Components::KeylessCCMHome
+{
+ Bar create ()
+ raises (Components::CreateFailure);
+};
+
+interface BarHome : BarHomeExplicit, BarHomeImplicit
+{
+};
+
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h b/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h
new file mode 100644
index 00000000000..ca8bb4e2394
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/TAO_IDL3_TO_IDL2_BE_Export.h
@@ -0,0 +1,40 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl
+// ------------------------------
+#ifndef TAO_IDL3_TO_IDL2_BE_EXPORT_H
+#define TAO_IDL3_TO_IDL2_BE_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if defined (ACE_AS_STATIC_LIBS)
+# if !defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL)
+# define TAO_IDL3_TO_IDL2_BE_HAS_DLL 0
+# endif /* ! TAO_IDL3_TO_IDL2_BE_HAS_DLL */
+#else
+# if !defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL)
+# define TAO_IDL3_TO_IDL2_BE_HAS_DLL 1
+# endif /* ! TAO_IDL3_TO_IDL2_BE_HAS_DLL */
+#endif
+
+#if defined (TAO_IDL3_TO_IDL2_BE_HAS_DLL) && (TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1)
+# if defined (TAO_IDL3_TO_IDL2_BE_BUILD_DLL)
+# define TAO_IDL3_TO_IDL2_BE_Export ACE_Proper_Export_Flag
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* TAO_IDL3_TO_IDL2_BE_BUILD_DLL */
+# define TAO_IDL3_TO_IDL2_BE_Export ACE_Proper_Import_Flag
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* TAO_IDL3_TO_IDL2_BE_BUILD_DLL */
+#else /* TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1 */
+# define TAO_IDL3_TO_IDL2_BE_Export
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARATION(T)
+# define TAO_IDL3_TO_IDL2_BE_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* TAO_IDL3_TO_IDL2_BE_HAS_DLL == 1 */
+
+#endif /* TAO_IDL3_TO_IDL2_BE_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h b/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h
new file mode 100644
index 00000000000..472600e9d8b
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_extern.h
@@ -0,0 +1,86 @@
+// This may look like C, but it's really -*- C++ -*-
+// $Id$
+/*
+
+COPYRIGHT
+
+Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
+States of America. All Rights Reserved.
+
+This product is protected by copyright and distributed under the following
+license restricting its use.
+
+The Interface Definition Language Compiler Front End (CFE) is made
+available for your use provided that you include this license and copyright
+notice on all media and documentation and the software program in which
+this product is incorporated in whole or part. You may copy and extend
+functionality (but may not remove functionality) of the Interface
+Definition Language CFE without charge, but you are not authorized to
+license or distribute it to anyone else except as part of a product or
+program developed by you or with the express written consent of Sun
+Microsystems, Inc. ("Sun").
+
+The names of Sun Microsystems, Inc. and any of its subsidiaries or
+affiliates may not be used in advertising or publicity pertaining to
+distribution of Interface Definition Language CFE as permitted herein.
+
+This license is effective until terminated by Sun for failure to comply
+with this license. Upon termination, you shall destroy or return all code
+and documentation for the Interface Definition Language CFE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
+ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
+FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
+DEALING, USAGE OR TRADE PRACTICE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
+ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
+TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
+
+SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
+RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
+INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
+
+IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
+ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
+DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Use, duplication, or disclosure by the government is subject to
+restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
+Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
+52.227-19.
+
+Sun, Sun Microsystems and the Sun logo are trademarks or registered
+trademarks of Sun Microsystems, Inc.
+
+SunSoft, Inc.
+2550 Garcia Avenue
+Mountain View, California 94043
+
+NOTE:
+
+SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
+trademarks or registered trademarks of Sun Microsystems, Inc.
+
+*/
+
+#ifndef TAO_IFR_BE_EXTERN_H
+#define TAO_IFR_BE_EXTERN_H
+
+#include "TAO_IDL3_TO_IDL2_BE_Export.h"
+#include "be_global.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+extern TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData *be_global;
+
+extern TAO_IDL3_TO_IDL2_BE_Export int BE_init (int &, char*[]);
+extern TAO_IDL3_TO_IDL2_BE_Export void BE_post_init (char *[], long);
+extern TAO_IDL3_TO_IDL2_BE_Export void BE_version (void);
+extern TAO_IDL3_TO_IDL2_BE_Export void BE_produce (void);
+extern TAO_IDL3_TO_IDL2_BE_Export void BE_cleanup (void);
+extern TAO_IDL3_TO_IDL2_BE_Export void BE_abort (void);
+
+#endif /* TAO_IFR_BE_EXTERN_H */
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp
new file mode 100644
index 00000000000..21e6ccc7d6e
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_global.cpp
@@ -0,0 +1,131 @@
+// $Id$
+
+// ============================================================================
+//
+//
+// = LIBRARY
+// TAO_IDL3_TO_IDL2L_BE_DLL
+//
+// = FILENAME
+// be_global.cpp
+//
+// = DESCRIPTION
+// Stores global data specific to the compiler back end.
+//
+// = AUTHOR
+// Jeff Parsons <j.parsons@vanderbilt.edu>
+//
+// ============================================================================
+
+#include "be_global.h"
+#include "ast_generator.h"
+#include "global_extern.h"
+#include "idl_defines.h"
+#include "idl3_to_idl2_visitor.h"
+#include "ace/OS_NS_stdio.h"
+
+TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData *be_global = 0;
+
+BE_GlobalData::BE_GlobalData (void)
+ : filename_ (0),
+ output_dir_ (0)
+{
+}
+
+BE_GlobalData::~BE_GlobalData (void)
+{
+}
+
+const char *
+BE_GlobalData::filename (void) const
+{
+ return this->filename_;
+}
+
+void
+BE_GlobalData::filename (char *fname)
+{
+ this->filename_ = fname;
+}
+
+const char*
+BE_GlobalData::output_dir (void) const
+{
+ return this->output_dir_;
+}
+
+void
+BE_GlobalData::output_dir (const char* s)
+{
+ delete [] this->output_dir_;
+ this->output_dir_ = ACE::strnew (s);
+}
+
+void
+BE_GlobalData::parse_args (long &i, char **av)
+{
+ switch (av[i][1])
+ {
+ // Directory where the generated file is to
+ // be kept. Default is the current directory from which
+ // <tao_idl3_to_idl2> is called.
+ case 'o':
+ if (av[i][2] == '\0')
+ {
+ be_global->output_dir (av [i + 1]);
+ i++;
+ }
+ else
+ {
+ be_global->output_dir (av[i] + 2);
+ }
+ break;
+ default:
+ ACE_ERROR ((
+ LM_ERROR,
+ ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
+ av[i]
+ ));
+
+ idl_global->set_compile_flags (idl_global->compile_flags ()
+ | IDL_CF_ONLY_USAGE);
+ break;
+ }
+}
+
+// Prepare an argument for a BE
+void
+BE_GlobalData::prep_be_arg (char *)
+{
+}
+
+void
+BE_GlobalData::arg_post_proc (void)
+{
+}
+
+void
+BE_GlobalData::usage (void) const
+{
+ ACE_DEBUG ((
+ LM_DEBUG,
+ ACE_TEXT (" -o <dir>\t\tOutput directory for the generated file.")
+ ACE_TEXT (" Default is current directory\n")
+ ));
+}
+
+AST_Generator *
+BE_GlobalData::generator_init (void)
+{
+ AST_Generator *gen = 0;
+ ACE_NEW_RETURN (gen,
+ AST_Generator,
+ 0);
+ return gen;
+}
+
+
+void
+BE_GlobalData::destroy (void)
+{
+}
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_global.h b/modules/CIAO/tools/IDL3_to_IDL2/be_global.h
new file mode 100644
index 00000000000..f70b062b77a
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_global.h
@@ -0,0 +1,85 @@
+/* -*- c++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IFR_BE_DLL
+//
+// = FILENAME
+// be_global.h
+//
+// = DESCRIPTION
+// Header file for class containing compiler back end global data.
+//
+// = AUTHOR
+// Jeff Parsons <parsons@cs.wustl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_IFR_BE_GLOBAL_H
+#define TAO_IFR_BE_GLOBAL_H
+
+#include "TAO_IDL3_TO_IDL2_BE_Export.h"
+#include "idl_defines.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class AST_Generator;
+
+// Defines a class containing all back end global data.
+
+class TAO_IDL3_TO_IDL2_BE_Export BE_GlobalData
+{
+public:
+ // = TITLE
+ // BE_GlobalData
+ //
+ // = DESCRIPTION
+ // Storage of global data specific to the compiler back end
+ //
+ BE_GlobalData (void);
+ // Constructor.
+
+ virtual ~BE_GlobalData (void);
+ // Destructor.
+
+ // Data accessors.
+
+ const char *filename (void) const;
+ void filename (char *fname);
+
+ const char* output_dir (void) const;
+ void output_dir (const char* s);
+
+ void parse_args (long &i, char **av);
+ // Parse args that affect the backend.
+
+ void prep_be_arg (char *s);
+ // Special BE arg call factored out of DRV_args.
+
+ void arg_post_proc (void);
+ // Checks made after parsing args.
+
+ void usage (void) const;
+ // Usage message for backend options.
+
+ AST_Generator *generator_init (void);
+ // Create an AST node generator.
+
+ void destroy (void);
+ // Cleanup.
+
+private:
+ char *filename_;
+ // Name of the IDL file we are processing.
+
+ char *output_dir_;
+ // Directory where the generated file is to be
+ // kept. Default value is 0 for this string which means the current
+ // directory from which the <tao_picml> is called.
+};
+
+#endif /* TAO_IFR_BE_GLOBAL_H */
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp
new file mode 100644
index 00000000000..c5000558c24
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.cpp
@@ -0,0 +1,436 @@
+// $Id$
+
+// ============================================================================
+//
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_helper.cpp
+//
+// = DESCRIPTION
+// Provides helper classes to print generated code to the output
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// Improvements by Carlos O'Ryan
+//
+// ============================================================================
+
+#include "be_helper.h"
+#include "idl_defines.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/OS_NS_string.h"
+#include "ace/os_include/os_ctype.h"
+
+ACE_RCSID (be,
+ be_helper,
+ "$Id$")
+
+static const char copyright[] =
+"// -*- C++ -*-\n"
+"//\n"
+"// $I" "d$\n\n"
+"// **** Code generated by the The ACE ORB (TAO) IDL Compiler ****\n"
+"// TAO and the TAO IDL Compiler have been developed by:\n"
+"// Center for Distributed Object Computing\n"
+"// Washington University\n"
+"// St. Louis, MO\n"
+"// USA\n"
+"// http://www.cs.wustl.edu/~schmidt/doc-center.html\n"
+"// and\n"
+"// Distributed Object Computing Laboratory\n"
+"// University of California at Irvine\n"
+"// Irvine, CA\n"
+"// USA\n"
+"// http://doc.ece.uci.edu/\n"
+"// and\n"
+"// Institute for Software Integrated Systems\n"
+"// Vanderbilt University\n"
+"// Nashville, TN\n"
+"// USA\n"
+"// http://www.isis.vanderbilt.edu/\n"
+"//\n"
+"// Information about TAO is available at:\n"
+"// http://www.cs.wustl.edu/~schmidt/TAO.html";
+
+TAO_NL::TAO_NL (void)
+{
+}
+
+TAO_INDENT::TAO_INDENT (int do_now)
+ : do_now_ (do_now)
+{
+}
+
+TAO_UNINDENT::TAO_UNINDENT (int do_now)
+ : do_now_ (do_now)
+{
+}
+
+const TAO_NL be_nl;
+const TAO_INDENT be_idt;
+const TAO_INDENT be_idt_nl (1);
+const TAO_UNINDENT be_uidt;
+const TAO_UNINDENT be_uidt_nl (1);
+
+// Methods of the TAO_OutStream class.
+
+TAO_OutStream::TAO_OutStream (void)
+ : fp_ (0),
+ indent_level_ (0)
+{
+}
+
+TAO_OutStream::~TAO_OutStream (void)
+{
+ // Close the underlying I/O handle only if it exists.
+ if (this->fp_ != 0)
+ {
+ ACE_OS::fclose (this->fp_);
+ this->fp_ = 0;
+ }
+
+ indent_level_ = 0;
+}
+
+int
+TAO_OutStream::open (const char *fname)
+{
+ if (fname != 0)
+ {
+ // File name exists, open an I/O file handle.
+ this->fp_ = ACE_OS::fopen (fname, "w");
+
+ if (this->fp_ != 0)
+ {
+ // Put the copyright notice.
+ ACE_OS::fprintf (this->fp_,
+ "%s\n",
+ copyright);
+
+ ACE_OS::fflush (this->fp_);
+
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+// Return the underlying lowlevel file pointer.
+// indentation.
+FILE *
+TAO_OutStream::file (void)
+{
+ return this->fp_;
+}
+
+int
+TAO_OutStream::incr_indent (unsigned short flag)
+{
+ indent_level_++;
+
+ if (flag != 0)
+ {
+ return this->indent ();
+ }
+ else
+ {
+ // Do not indent output.
+ return 0;
+ }
+}
+
+// Indentation
+int
+TAO_OutStream::decr_indent (unsigned short flag)
+{
+ this->indent_level_--;
+ // Just in case somebody gets "unindent happy".
+ if (this->indent_level_ < 0)
+ {
+ // ACE_DEBUG ((LM_DEBUG, "negative indentation?\n"));
+ this->indent_level_ = 0;
+ }
+ if (flag != 0)
+ {
+ return this->indent ();
+ }
+ else
+ {
+ // Do not indent output.
+ return 0;
+ }
+}
+
+int
+TAO_OutStream::reset (void)
+{
+ this->indent_level_ = 0;
+ return 0;
+}
+
+// Indented print.
+int
+TAO_OutStream::indent (void)
+{
+ // Based on the current indentation level, leave appropriate number of blank
+ // spaces in the output.
+ if (this->indent_level_ > 0)
+ {
+ for (int i = 0; i < this->indent_level_; i++)
+ {
+ ACE_OS::fprintf (this->fp_, " ");
+ ACE_OS::fflush (this->fp_);
+ }
+ }
+
+ return 0;
+}
+
+int
+TAO_OutStream::nl (void)
+{
+ ACE_OS::fprintf (this->fp_, "\n");
+ this->indent ();
+ return 0;
+}
+
+// Printf style variable argument print.
+int
+TAO_OutStream::print (const char *format, ...)
+{
+ int result = 0;
+ va_list ap;
+ va_start (ap, format);
+ ACE_OSCALL (::vfprintf (this->fp_,
+ format,
+ ap),
+ int,
+ -1,
+ result);
+
+ ACE_OS::fflush (this->fp_);
+ va_end (ap);
+
+ return result;
+}
+
+void
+TAO_OutStream::gen_ifndef_string (const char *fname,
+ const char *prefix,
+ const char *suffix)
+{
+ static char macro_name [NAMEBUFSIZE];
+
+ ACE_OS::memset (macro_name,
+ '\0',
+ NAMEBUFSIZE);
+
+ const char *extension = ACE_OS::strrchr (fname, '.');
+
+ if (extension == 0)
+ {
+ // File seems to have no extension, so let us take the name
+ // as it is.
+ extension = fname;
+ }
+
+ ACE_OS::sprintf (macro_name, prefix);
+
+ size_t offset = ACE_OS::strlen (prefix);
+
+ // Convert letters in fname to upper case.
+ for (int i = 0; i < (extension - fname); i++)
+ {
+ if (isalpha (fname [i]))
+ {
+ macro_name[i + offset] = (char) toupper (fname [i]);
+ }
+ else if (isdigit (fname [i]))
+ {
+ macro_name[i + offset] = fname[i];
+ }
+ else
+ {
+ macro_name[i + offset] = '_';
+ }
+ }
+
+ ACE_OS::strcat (macro_name, suffix);
+
+ // Generate the #ifndef ... #define statements.
+ this->print ("#ifndef %s\n",
+ macro_name);
+ this->print ("#define %s",
+ macro_name);
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const char *str)
+{
+ ACE_OS::fprintf (this->fp_, "%s", str);
+ ACE_OS::fflush (this->fp_);
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::UShort num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%hu",
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::Short num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%hd",
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::ULong num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%lu",
+ (unsigned long) num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::Long num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%ld",
+ (long) num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+#if defined (ACE_WIN64)
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::ULongLong num)
+{
+ ACE_OS::fprintf (this->fp_,
+ ACE_UINT64_FORMAT_SPECIFIER,
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const ACE_CDR::LongLong num)
+{
+ ACE_OS::fprintf (this->fp_,
+ ACE_INT64_FORMAT_SPECIFIER,
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+#endif /* ACE_WIN64 */
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const unsigned long num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%lu",
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const long num)
+{
+ ACE_OS::fprintf (this->fp_,
+ "%ld",
+ num);
+
+ ACE_OS::fflush (this->fp_);
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const TAO_NL&)
+{
+ ACE_OS::fprintf (this->fp_ ,
+ "\n");
+ this->indent ();
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const TAO_INDENT& i)
+{
+ this->incr_indent (0);
+
+ if (i.do_now_)
+ {
+ this->nl ();
+ }
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (const TAO_UNINDENT& i)
+{
+ this->decr_indent (0);
+
+ if (i.do_now_)
+ {
+ this->nl ();
+ }
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (Identifier *id)
+{
+ return this->print (id);
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (UTL_IdList *id)
+{
+ return this->print (id);
+}
+
+TAO_OutStream &
+TAO_OutStream::operator<< (AST_Expression *expr)
+{
+ return this->print (expr);
+}
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h
new file mode 100644
index 00000000000..bd3b4bc0829
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_helper.h
@@ -0,0 +1,186 @@
+/* -*- c++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_helper.h
+//
+// = DESCRIPTION
+// Defines the abstract class for outputting the C++ mapping. This is a
+// helper class to the singleton TAO_CodeGen class
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// Improvements by Carlos O'Ryan
+//
+// ============================================================================
+
+#ifndef TAO_BE_OUTSTRM_H
+#define TAO_BE_OUTSTRM_H
+
+#include "ace/CDR_Base.h"
+
+class Identifier;
+class UTL_IdList;
+class AST_Expression;
+
+// a dummy structure to inform TAO_OutStream's << operator to put a newline
+// and use the current indentation for the succeeding line
+struct TAO_NL
+{
+public:
+ TAO_NL (void);
+};
+
+struct TAO_INDENT
+{
+ // = TITLE
+ // Operates like a manipulator, increasing the indentation level.
+ //
+ // = DESCRIPTION
+ // Increase the indentation level, if the "do_now" parameter is
+ // not zero then the <indent> method is called on the stream.
+ //
+ TAO_INDENT (int do_now = 0);
+
+ const int do_now_;
+};
+
+struct TAO_UNINDENT
+{
+ // = TITLE
+ // Operates like a manipulator, decreasing the indentation level.
+ //
+ // = DESCRIPTION
+ // Decrease the indentation level, if the "do_now" parameter is
+ // not zero then the <indent> method is called on the stream.
+ //
+ TAO_UNINDENT (int do_now = 0);
+
+ const int do_now_;
+};
+
+extern const TAO_NL be_nl;
+extern const TAO_INDENT be_idt;
+extern const TAO_INDENT be_idt_nl;
+extern const TAO_UNINDENT be_uidt;
+extern const TAO_UNINDENT be_uidt_nl;
+
+class TAO_OutStream
+{
+ // =TITLE
+ // TAO_OutStream
+ //
+ // =DESCRIPTION
+ // Defines an interface by which the backend code generator can
+ // print its output to the underlying I/O handle. This is a
+ // helper class that will be used by the TAO_CodeGen
+ // class. However, this is an abstract class and classes that
+ // understand specific front ends must derive from this class.
+public:
+ TAO_OutStream (void);
+ // constructor.
+
+ virtual ~TAO_OutStream (void);
+ // destructor.
+
+ int open (const char *fname);
+ // open the underlying low-level handle for output.
+
+
+ FILE *file (void);
+ // Return the underlying lowlevel file pointer.
+
+ int incr_indent (unsigned short flag = 1);
+ // increment the indentation level and by default actually indent the output
+ // accordingly
+
+ int decr_indent (unsigned short flag = 1);
+ // decrease the indentation level and by default actually indent the output
+ // accordingly
+
+ int reset (void);
+ // reset indentation level to 0
+
+ int indent (void);
+ // indent starting next line
+
+ int nl (void);
+ // put a newline and indent on the next line
+
+ int print (const char *format, ...);
+ // "printf" style variable argument print
+
+ void gen_ifndef_string (const char *fname,
+ const char *prefix,
+ const char *suffix);
+
+ // =overloaded operators
+
+ TAO_OutStream &operator<< (const char *str);
+ // output the char string and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const ACE_CDR::UShort num);
+ // output the integer and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const ACE_CDR::Short num);
+ // output the integer and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const ACE_CDR::ULong num);
+ // output the integer and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const ACE_CDR::Long num);
+ // output the integer and return a reference to ourselves
+
+#if defined (ACE_WIN64)
+ TAO_OutStream &operator<< (const ACE_CDR::ULongLong num);
+ // output the integer and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const ACE_CDR::LongLong num);
+ // output the integer and return a reference to ourselves
+#endif /* ACE_WIN64 */
+
+ TAO_OutStream &operator<< (const unsigned long num);
+ // output the integer and return a reference to ourselves
+
+ TAO_OutStream &operator<< (const long num);
+ // output the integer and return a reference to ourselves
+
+ // = MANIPULATORS
+
+ TAO_OutStream &operator<< (const TAO_NL& nl);
+ TAO_OutStream &operator<< (const TAO_INDENT& i);
+ TAO_OutStream &operator<< (const TAO_UNINDENT& i);
+
+ // The following will be provided by specialized classes
+
+ TAO_OutStream &operator<< (Identifier *id);
+ // output an Identifier node
+
+ TAO_OutStream &operator<< (UTL_IdList *idl);
+ // output a scoped name
+
+ TAO_OutStream &operator<< (AST_Expression *expr);
+ // output an AST_Expression node
+
+ // provided by specialized classes
+ virtual TAO_OutStream &print (Identifier *id) = 0;
+
+ virtual TAO_OutStream &print (UTL_IdList *idl) = 0;
+
+ virtual TAO_OutStream &print (AST_Expression *idl) = 0;
+
+protected:
+ FILE *fp_;
+ // the underlying low-level I/O handle
+
+ int indent_level_;
+ // indentation level
+};
+
+#endif // if !defined
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp
new file mode 100644
index 00000000000..c0e7b8c2e54
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_init.cpp
@@ -0,0 +1,32 @@
+// $Id$
+
+#include "global_extern.h"
+#include "be_extern.h"
+#include "../../ciao/Version.h"
+
+TAO_IDL3_TO_IDL2_BE_Export void
+BE_version (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "%s %s\n",
+ ACE_TEXT ("TAO_ID3_TO_IDL2_BE, version"),
+ ACE_TEXT (CIAO_VERSION)));
+}
+
+TAO_IDL3_TO_IDL2_BE_Export int
+BE_init (int & /* argc */, char * /* argv */ [])
+{
+ // Initialize BE global data object.
+ ACE_NEW_RETURN (be_global,
+ BE_GlobalData,
+ -1);
+
+ idl_global->pass_orb_idl (true);
+ return 0;
+}
+
+TAO_IDL3_TO_IDL2_BE_Export void
+BE_post_init (char * /* files */ [], long /* nfiles */)
+{
+}
+
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp
new file mode 100644
index 00000000000..65159bd055f
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_produce.cpp
@@ -0,0 +1,119 @@
+// $Id$
+
+/*
+
+COPYRIGHT
+
+Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
+States of America. All Rights Reserved.
+
+This product is protected by copyright and distributed under the following
+license restricting its use.
+
+The Interface Definition Language Compiler Front End (CFE) is made
+available for your use provided that you include this license and copyright
+notice on all media and documentation and the software program in which
+this product is incorporated in whole or part. You may copy and extend
+functionality (but may not remove functionality) of the Interface
+Definition Language CFE without charge, but you are not authorized to
+license or distribute it to anyone else except as part of a product or
+program developed by you or with the express written consent of Sun
+Microsystems, Inc. ("Sun").
+
+The names of Sun Microsystems, Inc. and any of its subsidiaries or
+affiliates may not be used in advertising or publicity pertaining to
+distribution of Interface Definition Language CFE as permitted herein.
+
+This license is effective until terminated by Sun for failure to comply
+with this license. Upon termination, you shall destroy or return all code
+and documentation for the Interface Definition Language CFE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
+ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
+FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
+DEALING, USAGE OR TRADE PRACTICE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
+ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
+TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
+
+SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
+RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
+INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
+
+IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
+ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
+DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Use, duplication, or disclosure by the government is subject to
+restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
+Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
+52.227-19.
+
+Sun, Sun Microsystems and the Sun logo are trademarks or registered
+trademarks of Sun Microsystems, Inc.
+
+SunSoft, Inc.
+2550 Garcia Avenue
+Mountain View, California 94043
+
+NOTE:
+
+SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
+trademarks or registered trademarks of Sun Microsystems, Inc.
+
+ */
+
+#include "TAO_IDL3_TO_IDL2_BE_Export.h"
+#include "global_extern.h"
+#include "be_extern.h"
+#include "fe_extern.h"
+#include "ast_root.h"
+#include "idl3_to_idl2_visitor.h"
+
+// Clean up before exit, whether successful or not.
+TAO_IDL3_TO_IDL2_BE_Export void
+BE_cleanup (void)
+{
+ idl_global->destroy ();
+}
+
+// Abort this run of the BE.
+TAO_IDL3_TO_IDL2_BE_Export void
+BE_abort (void)
+{
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Fatal Error - Aborting\n")));
+
+ // BE_cleanup will be called after the exception is caught.
+ throw FE_Bailout ();
+}
+
+// Do the work of this BE. This is the starting point for code generation.
+TAO_IDL3_TO_IDL2_BE_Export void
+BE_produce (void)
+{
+ // Get the root node.
+ AST_Decl *d = idl_global->root ();
+ AST_Root *ast_root = AST_Root::narrow_from_decl (d);
+
+ if (ast_root == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%N:%l) BE_produce - ")
+ ACE_TEXT ("No Root\n")));
+ BE_abort ();
+ }
+
+ idl3_to_idl2_visitor visitor;
+
+ if (visitor.visit_root (ast_root) == -1)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%N:%l) BE_produce -")
+ ACE_TEXT (" failed to accept visitor\n")));
+ }
+
+ // Clean up.
+ BE_cleanup ();
+}
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp
new file mode 100644
index 00000000000..71c67116ab1
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.cpp
@@ -0,0 +1,191 @@
+// $Id$
+
+#include "be_sunsoft.h"
+#include "ast_expression.h"
+#include "utl_identifier.h"
+#include "utl_idlist.h"
+#include "utl_string.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/OS_NS_string.h"
+#include "ace/os_include/os_ctype.h"
+
+ACE_RCSID (be,
+ be_sunsoft,
+ "$Id$")
+
+TAO_SunSoft_OutStream::TAO_SunSoft_OutStream (void)
+ : TAO_OutStream ()
+{
+}
+
+TAO_SunSoft_OutStream::~TAO_SunSoft_OutStream (void)
+{
+}
+
+TAO_OutStream &
+TAO_SunSoft_OutStream::print (Identifier *id)
+{
+ ACE_OS::fprintf (this->fp_,
+ id->get_string ());
+
+ return *this;
+}
+
+TAO_OutStream &
+TAO_SunSoft_OutStream::print (UTL_IdList *idl)
+{
+ long first = true;
+ long second = false;
+ Identifier *id = 0;
+
+ for (UTL_IdListActiveIterator i (idl); !i.is_done (); i.next ())
+ {
+ if (!first)
+ {
+ *this << "::";
+ }
+ else if (second)
+ {
+ first = second = false;
+ }
+
+ // Print the identifier.
+ id = i.item ();
+ *this << id;
+
+ if (first)
+ {
+ if (ACE_OS::strcmp (id->get_string (), "") != 0)
+ {
+ // Does not start with a "".
+ first = false;
+ }
+ else
+ {
+ second = true;
+ }
+ }
+ }
+
+ return *this;
+}
+
+TAO_OutStream&
+TAO_SunSoft_OutStream::print (AST_Expression *expr)
+{
+ AST_Expression::AST_ExprValue *ev = expr->ev ();
+
+ if (ev)
+ {
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ this->TAO_OutStream::print ("%hd", ev->u.sval);
+ break;
+ case AST_Expression::EV_ushort:
+ this->TAO_OutStream::print ("%hu%c", ev->u.usval, 'U');
+ break;
+ case AST_Expression::EV_long:
+ this->TAO_OutStream::print ("%ld", ev->u.lval);
+ break;
+ case AST_Expression::EV_ulong:
+ this->TAO_OutStream::print ("%u%c", ev->u.ulval, 'U');
+ break;
+ case AST_Expression::EV_longlong:
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ this->TAO_OutStream::print ("%ld", ev->u.llval);
+#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
+ break;
+ case AST_Expression::EV_ulonglong:
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ this->TAO_OutStream::print ("ACE_UINT64_LITERAL (");
+ this->TAO_OutStream::print (ACE_UINT64_FORMAT_SPECIFIER,
+ ev->u.ullval);
+ this->TAO_OutStream::print (")");
+#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
+ break;
+ case AST_Expression::EV_float:
+ this->TAO_OutStream::print ("%f%c", ev->u.fval, 'F');
+ break;
+ case AST_Expression::EV_double:
+ this->TAO_OutStream::print ("%24.16G", ev->u.dval);
+ break;
+ case AST_Expression::EV_longdouble:
+ break;
+ case AST_Expression::EV_char:
+ // isprint() sees \ and ' as printable characters
+ // so we have to test for them first.
+ if (ev->u.cval == '\\')
+ this->TAO_OutStream::print ("'\\\\'");
+ else if (ev->u.cval == '\'')
+ this->TAO_OutStream::print ("'\\''");
+
+ // This handles hex and octal escape sequences
+ // that would print out either as weird characters
+ // or as an unsigned number too large for a char.
+ else if ((unsigned char) ev->u.cval > ACE_CHAR_MAX)
+ this->TAO_OutStream::print ("%hd", ev->u.cval);
+ else if (isprint (ev->u.cval))
+ this->TAO_OutStream::print ("'%c'", ev->u.cval);
+ else if (iscntrl (ev->u.cval))
+ switch (ev->u.cval)
+ {
+ case '\n':
+ this->TAO_OutStream::print ("'\\n'");
+ break;
+ case '\t':
+ this->TAO_OutStream::print ("'\\t'");
+ break;
+ case '\r':
+ this->TAO_OutStream::print ("'\\r'");
+ break;
+ case '\v':
+ this->TAO_OutStream::print ("'\\v'");
+ break;
+ case '\f':
+ this->TAO_OutStream::print ("'\\f'");
+ break;
+ case '\b':
+ this->TAO_OutStream::print ("'\\b'");
+ break;
+ case '\a':
+ this->TAO_OutStream::print ("'\\a'");
+ break;
+ case '\?':
+ this->TAO_OutStream::print ("'?'");
+ break;
+ default:
+ this->TAO_OutStream::print ("'\\x%x'", ev->u.cval);
+ }
+ else
+ this->TAO_OutStream::print ("'\\x%x'", ev->u.cval);
+ break;
+ case AST_Expression::EV_wchar:
+ this->TAO_OutStream::print ("L'%lc'", ev->u.wcval);
+ break;
+ case AST_Expression::EV_octet:
+ this->TAO_OutStream::print ("%d", ev->u.oval);
+ break;
+ case AST_Expression::EV_bool:
+ this->TAO_OutStream::print ("%s", ev->u.bval ? "true" : "false");
+ break;
+ case AST_Expression::EV_string:
+ this->TAO_OutStream::print ("\"%s\"", ev->u.strval->get_string ());
+ break;
+ case AST_Expression::EV_wstring:
+ this->TAO_OutStream::print ("L\"%s\"", ev->u.wstrval);
+ break;
+ case AST_Expression::EV_enum:
+ this->print (expr->n ());
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ // XXXASG: need to add code here
+ }
+
+ return *this;
+}
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h
new file mode 100644
index 00000000000..a44633f5395
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/be_sunsoft.h
@@ -0,0 +1,49 @@
+/* -*- c++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_sunsoft.h
+//
+// = DESCRIPTION
+// SunSoft specific backend output generation
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#ifndef TAO_BE_HELPER_H
+#define TAO_BE_HELPER_H
+
+#include "be_helper.h"
+
+class TAO_SunSoft_OutStream : public TAO_OutStream
+{
+ // =TITLE
+ // TAO_SunSoft_OutStream
+ // =DESCRIPTION
+ // Backend specific to SunSoft AST nodes
+public:
+ TAO_SunSoft_OutStream (void);
+ // constructor
+
+ ~TAO_SunSoft_OutStream (void);
+ // destuctor
+
+ virtual TAO_OutStream &print (Identifier *id);
+ // output the SunSoft IDL Identifier Node
+
+ virtual TAO_OutStream &print (UTL_IdList *idl);
+ // output the SunSoft IDL UTL_IdList Node which is usually used to maintain a
+ // scoped name
+
+ virtual TAO_OutStream &print (AST_Expression *expr);
+ // output the contents of the AST_Expression node
+};
+
+#endif // if !defined
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp
new file mode 100644
index 00000000000..38fc2a1f7df
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.cpp
@@ -0,0 +1,1722 @@
+/* -*- c++ -*- */
+// $Id$
+
+#include "idl3_to_idl2_visitor.h"
+#include "be_sunsoft.h"
+#include "be_extern.h"
+
+#include "ast_argument.h"
+#include "ast_array.h"
+#include "ast_attribute.h"
+#include "ast_component_fwd.h"
+#include "ast_enum.h"
+#include "ast_enum_val.h"
+#include "ast_eventtype.h"
+#include "ast_eventtype_fwd.h"
+#include "ast_exception.h"
+#include "ast_factory.h"
+#include "ast_field.h"
+#include "ast_home.h"
+#include "ast_operation.h"
+#include "ast_root.h"
+#include "ast_sequence.h"
+#include "ast_string.h"
+#include "ast_structure_fwd.h"
+#include "ast_union.h"
+#include "ast_union_branch.h"
+#include "ast_union_fwd.h"
+#include "ast_union_label.h"
+#include "ast_valuebox.h"
+#include "ast_valuetype_fwd.h"
+#include "ast_native.h"
+#include "utl_exceptlist.h"
+#include "utl_identifier.h"
+#include "utl_idlist.h"
+#include "utl_string.h"
+#include "global_extern.h"
+#include "nr_extern.h"
+#include "ace/OS_NS_stdio.h"
+
+idl3_to_idl2_visitor::idl3_to_idl2_visitor (void)
+ : os (0),
+ disc_type_ (0)
+{
+}
+
+idl3_to_idl2_visitor::~idl3_to_idl2_visitor (void)
+{
+ delete this->os;
+ this->os = 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_decl (AST_Decl *)
+{
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_scope (UTL_Scope *node)
+{
+ for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ AST_Decl *d = si.item ();
+
+ if (d->node_type () == AST_Decl::NT_pre_defined)
+ {
+ continue;
+ }
+
+ // Want to skip the uses_xxxConnection structs added by uses
+ // multiple ports.
+ // @@@ (JP) This will go away when the visitor is finished, since
+ // those uses_xxxConnection structs will not be added to the AST.
+ if (ScopeAsDecl (node)->node_type () == AST_Decl::NT_component
+ && d->node_type () != AST_Decl::NT_attr)
+ {
+ continue;
+ }
+
+ if (d->ast_accept (this) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_scope - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+ }
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_type (AST_Type *)
+{
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_predefined_type (AST_PredefinedType *)
+{
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_module (AST_Module *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "module " << node->local_name () << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+ this->check_prefix (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_module - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_interface (AST_Interface *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ if (node->is_local ())
+ {
+ *os << "local ";
+ }
+
+ if (node->is_abstract ())
+ {
+ *os << "abstract ";
+ }
+
+ *os << "interface " << node->local_name ();
+
+ AST_Interface **parents = node->inherits ();
+
+ for (long i = 0; i < node->n_inherits (); ++i)
+ {
+ if (i == 0)
+ {
+ *os << " : ";
+ }
+ else
+ {
+ *os << ", ";
+ }
+
+ *os << parents[i]->name ();
+ }
+
+ *os << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+ this->check_prefix (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_interface - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_interface_fwd (AST_InterfaceFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ if (node->is_local ())
+ {
+ *os << "local ";
+ }
+
+ if (node->is_abstract ())
+ {
+ *os << "abstract ";
+ }
+
+ *os << "interface " << node->local_name () << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_valuebox (AST_ValueBox *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl
+ << "valuetype " << node->local_name ();
+
+ AST_Type *bt = node->boxed_type ();
+
+ // Keep output statements separate because of side effects.
+
+ if (bt->node_type () == AST_Decl::NT_array)
+ {
+ this->gen_anonymous_array (bt, node);
+ }
+ else
+ {
+ *os << this->type_name (bt);
+ }
+
+ *os << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_valuetype (AST_ValueType *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ if (node->is_abstract ())
+ {
+ *os << "abstract ";
+ }
+
+ if (node->custom ())
+ {
+ *os << "custom ";
+ }
+
+ *os << "valuetype " << node->local_name ();
+
+ AST_Decl::NodeType nt = node->node_type ();
+ AST_Interface **parents = node->inherits ();
+ long ninherits = node->n_inherits ();
+
+ long i = 0;
+ for (i = 0; i < ninherits; ++i)
+ {
+ if (i == 0)
+ {
+ *os << " : ";
+ }
+ else
+ {
+ *os << ", ";
+ }
+
+ *os << parents[i]->name ();
+ }
+
+ if (nt == AST_Decl::NT_eventtype)
+ {
+ *os << (ninherits == 0 ? " : " : ", ")
+ << "Components::EventBase";
+ }
+
+ AST_Interface **supports = node->supports ();
+
+ for (i = 0; i < node->n_supports (); ++i)
+ {
+ if (i == 0)
+ {
+ *os << " supports ";
+ }
+ else
+ {
+ *os << ", ";
+ }
+
+ *os << supports[i]->name ();
+ }
+
+ *os << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+ this->check_prefix (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_valuetype - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_valuetype_fwd (AST_ValueTypeFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ if (node->is_abstract ())
+ {
+ *os << "abstract ";
+ }
+
+ (void) node->node_type ();
+
+ *os << "valuetype " << node->local_name () << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_component (AST_Component *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl
+ << "interface " << node->local_name ();
+
+ AST_Component *base = node->base_component ();
+ long nsupports = node->n_supports ();
+
+ *os << " : "
+ << (base != 0 ? base->full_name () : "Components::CCMObject");
+
+ for (long i = 0; i < nsupports; ++i)
+ {
+ *os << ", " << node->supports ()[i]->name ();
+ }
+
+ *os << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_component - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ this->gen_provides (node);
+ this->gen_uses (node);
+ this->gen_publishes (node);
+ this->gen_emits (node);
+ this->gen_consumes (node);
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_component_fwd (AST_ComponentFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "component " << node->local_name () << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_eventtype (AST_EventType *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ if (this->visit_valuetype (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_eventtype - "
+ "codegen for valuetype failed\n"),
+ -1);
+ }
+
+ *os << be_nl << be_nl
+ << "interface " << node->local_name () << "Consumer : ";
+
+ AST_Interface *parent = 0;
+ AST_Decl::NodeType nt = AST_Decl::NT_native;
+
+ if (node->n_inherits () > 0)
+ {
+ parent = node->inherits ()[0];
+ AST_Type *ut = parent->unaliased_type ();
+ nt = ut->node_type ();
+ }
+
+ if (node->n_inherits () == 0 || nt == AST_Decl::NT_valuetype)
+ {
+ *os << "Components::EventConsumerBase";
+ }
+ else
+ {
+ *os << node->inherits ()[0]->name () << "Consumer";
+ }
+
+ *os << be_nl
+ << "{" << be_idt_nl
+ << "void push_" << node->local_name () << " (in "
+ << node->local_name () << " the_"
+ << node->local_name () << ");" << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_eventtype_fwd (AST_EventTypeFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ if (this->visit_valuetype_fwd (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_eventtype_fwd - "
+ "codegen for valuetype_fwd failed\n"),
+ -1);
+ }
+
+ *os << be_nl
+ << "interface " << node->local_name () << "Consumer;";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_home (AST_Home *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ ACE_CString explicit_name = node->local_name ()->get_string ();
+ explicit_name += "Explicit";
+
+ *os << be_nl << be_nl
+ << "interface " << explicit_name.c_str () << " : ";
+
+ AST_Home *base = node->base_home ();
+
+ if (base == 0)
+ {
+ *os << "Components::CCMHome";
+ }
+ else
+ {
+ *os << base->name () << "Explicit";
+ }
+
+ *os << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+
+ // Create a temporary interface node corresponding to the one we
+ // just generated above for the home explicit interface.
+ UTL_ScopedName *sn =
+ this->create_scoped_name (0,
+ explicit_name.c_str (),
+ 0,
+ ScopeAsDecl (node->defined_in ()));
+
+ AST_Interface xplicit (sn,
+ 0,
+ 0,
+ 0,
+ 0,
+ false,
+ false);
+ xplicit.set_defined_in (node->defined_in ());
+
+ // Reset the home's decls to be defined in the explicit home interface.
+ this->tranfer_scope_elements (node, xplicit);
+
+ this->gen_factories (node, xplicit);
+ this->gen_finders (node, xplicit);
+
+ *os << be_uidt_nl
+ << "};" << be_nl << be_nl;
+
+ xplicit.destroy ();
+ sn->destroy ();
+ delete sn;
+ sn = 0;
+
+ AST_ValueType *key = node->primary_key ();
+
+ // Generate the implicit home interface and its operations.
+ *os << "interface " << node->local_name () << "Implicit"
+ << (key == 0 ? " : Components::KeylessCCMHome" : "")
+ << be_nl
+ << "{" << be_idt_nl
+ << node->managed_component ()->name () << " create (";
+
+ if (key != 0)
+ {
+ *os << "in " << key->name () << " key";
+ }
+
+ *os << ")" << be_idt_nl
+ << "raises (Components::CreateFailure";
+
+ if (key != 0)
+ {
+ *os << ", Components::InvalidKey, Components::DuplicateKeyValue";
+ }
+
+ *os << ");" << be_uidt;
+
+ if (key != 0)
+ {
+ *os << be_nl << be_nl
+ << node->managed_component ()->name ()
+ << " find_by_primary_key (in " << key->name ()
+ << " key)" << be_idt_nl
+ << "raises (Components::InvalidKey, Components::UnknownKeyValue, "
+ << "Components::FinderFailure);" << be_uidt;
+
+ *os << be_nl << be_nl
+ << "void remove (in " << key->name () << " key)" << be_idt_nl
+ << "raises (Components::InvalidKey, Components::UnknownKeyValue, "
+ << "Components::RemoveFailure);" << be_uidt;
+
+ *os << be_nl << be_nl
+ << key->name () << " get_primary_key (in "
+ << node->managed_component ()->name () << " comp);";
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ // Create equivalent interface.
+ *os << be_nl << be_nl
+ << "interface " << node->local_name () << " : "
+ << node->local_name () << "Explicit, "
+ << node->local_name () << "Implicit" << be_nl
+ << "{" << be_nl
+ << "};";
+
+ return 0;
+}
+
+
+int
+idl3_to_idl2_visitor::visit_factory (AST_Factory *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl;
+
+ *os << "factory " << node->local_name () << " (";
+
+ this->gen_params (node, node->argument_count ());
+
+ *os << ")";
+
+ this->gen_exception_list (node->exceptions ());
+
+ *os << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_structure (AST_Structure *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "struct " << node->local_name () << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_structure - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_structure_fwd (AST_StructureFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "struct " << node->local_name () << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_exception (AST_Exception *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "exception " << node->local_name () << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_exception - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_expression (AST_Expression *)
+{
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_enum (AST_Enum *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "enum " << node->local_name () << be_nl
+ << "{" << be_idt;
+
+ for (UTL_ScopeActiveIterator i (node, UTL_Scope::IK_decls);
+ !i.is_done ();)
+ {
+ *os << be_nl;
+
+ AST_EnumVal *ev = AST_EnumVal::narrow_from_decl (i.item ());
+ *os << ev->local_name ();
+
+ // Advance here so the check below will work.
+ i.next ();
+
+ if (!i.is_done ())
+ {
+ *os << ",";
+ }
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_operation (AST_Operation *node)
+{
+ *os << be_nl << be_nl;
+
+ if (node->flags () == AST_Operation::OP_oneway)
+ {
+ *os << "oneway ";
+ }
+
+ *os << this->type_name (node->return_type ());
+ *os << " " << node->local_name () << " (";
+
+ this->gen_params (node, node->argument_count ());
+
+ *os << ")";
+
+ this->gen_exception_list (node->exceptions ());
+
+ *os << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_field (AST_Field *node)
+{
+ AST_Field::Visibility v = node->visibility ();
+
+ *os << be_nl
+ << (v == AST_Field::vis_PUBLIC
+ ? "public "
+ : (v == AST_Field::vis_PRIVATE ? "private " : ""));
+
+ AST_Type *ft = node->field_type ();
+
+ if (ft->node_type () == AST_Decl::NT_array)
+ {
+ this->gen_anonymous_array (ft, node);
+ }
+ else
+ {
+ // Keep these statements separate because of side effects.
+ *os << this->type_name (ft);
+ *os << " " << node->local_name ();
+ }
+
+ *os << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_argument (AST_Argument *node)
+{
+ *os << be_nl;
+
+ switch (node->direction ())
+ {
+ case AST_Argument::dir_IN:
+ *os << "in ";
+ break;
+ case AST_Argument::dir_INOUT:
+ *os << "inout ";
+ break;
+ case AST_Argument::dir_OUT:
+ *os << "out ";
+ break;
+ default:
+ return -1;
+ }
+
+ *os << this->type_name (node->field_type ())
+ << " " << node->local_name ();
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_attribute (AST_Attribute *node)
+{
+ bool rd_only = node->readonly ();
+
+ // Keep output statements separate because of side effects.
+ // No need to check for anonymous array - anonymous types not
+ // accepted by parser for attributes.
+ *os << be_nl << be_nl
+ << (rd_only ? "readonly " : "") << "attribute ";
+ *os << this->type_name (node->field_type ());
+ *os << " " << node->local_name ();
+
+ this->gen_exception_list (node->get_get_exceptions (),
+ rd_only ? "" : "get");
+
+ this->gen_exception_list (node->get_set_exceptions (),
+ "set");
+
+ *os << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_union (AST_Union *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ this->disc_type_ = node->disc_type ()->unaliased_type ();
+
+ *os << be_nl << be_nl;
+
+ *os << "union " << node->local_name () << " switch ("
+ << node->disc_type ()->name () << ")" << be_nl
+ << "{" << be_idt;
+
+ this->check_id_and_version (node);
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_union - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_uidt_nl
+ << "};";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_union_fwd (AST_UnionFwd *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl
+ << "union " << node->local_name () << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_union_branch (AST_UnionBranch *node)
+{
+ for (unsigned long i = 0; i < node->label_list_length (); ++i)
+ {
+ if (this->visit_union_label (node->label (i)) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_union_branch - "
+ "codegen for label failed\n"),
+ -1);
+ }
+ }
+
+ AST_Type *ft = node->field_type ();
+
+ if (ft->node_type () == AST_Decl::NT_array)
+ {
+ this->gen_anonymous_array (ft, node);
+ }
+ else
+ {
+ *os << this->type_name (ft);
+ *os << " " << node->local_name ();
+ }
+
+ *os << ";";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_union_label (AST_UnionLabel *node)
+{
+ *os << be_nl;
+
+ if (node->label_kind () == AST_UnionLabel::UL_default)
+ {
+ *os << "default: ";
+ }
+ else
+ {
+ *os << "case ";
+ this->gen_label_value (node);
+ *os << ": ";
+ }
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_constant (AST_Constant *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "const ";
+
+ switch (node->et ())
+ {
+ case AST_Expression::EV_short:
+ *os << "short";
+ break;
+ case AST_Expression::EV_ushort:
+ *os << "unsigned short";
+ break;
+ case AST_Expression::EV_long:
+ *os << "long";
+ break;
+ case AST_Expression::EV_ulong:
+ *os << "unsigned long";
+ break;
+ case AST_Expression::EV_longlong:
+ *os << "long long";
+ break;
+ case AST_Expression::EV_ulonglong:
+ *os << "unsigned long long";
+ break;
+ case AST_Expression::EV_char:
+ *os << "char";
+ break;
+ case AST_Expression::EV_wchar:
+ *os << "wchar";
+ break;
+ case AST_Expression::EV_bool:
+ *os << "boolean";
+ break;
+ case AST_Expression::EV_octet:
+ *os << "octet";
+ break;
+ case AST_Expression::EV_float:
+ *os << "float";
+ break;
+ case AST_Expression::EV_double:
+ *os << "double";
+ break;
+ case AST_Expression::EV_longdouble:
+ *os << "long double";
+ break;
+ case AST_Expression::EV_string:
+ *os << "string";
+ break;
+ case AST_Expression::EV_wstring:
+ *os << "wstring";
+ break;
+ case AST_Expression::EV_enum:
+ *os << node->enum_full_name ();
+ break;
+ default:
+ break;
+ }
+
+ *os << " "
+ << node->local_name () << " = " << node->constant_value () << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_enum_val (AST_EnumVal *)
+{
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_array (AST_Array *node)
+{
+ *os << node->base_type ()->name ();
+
+ for (unsigned long i = 0; i < node->n_dims (); ++i)
+ {
+ *os << "[" << node->dims ()[i] << "]";
+ }
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_sequence (AST_Sequence *node)
+{
+ // Keep output statements separate because of side effects.
+ *os << "sequence<";
+ *os << this->type_name (node->base_type ());
+
+ if (!node->unbounded ())
+ {
+ *os << ", " << node->max_size ()->ev ()->u.ulval;
+ }
+
+ *os << "> ";
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_string (AST_String *node)
+{
+ *os << (node->width () > 1 ? "w" : "") << "string";
+
+ unsigned long bound = node->max_size ()->ev ()->u.ulval;
+
+ if (bound > 0)
+ {
+ *os << "<" << bound << ">";
+ }
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_typedef (AST_Typedef *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl
+ << "typedef ";
+
+ AST_Type *bt = node->base_type ();
+
+ // Keep output statements separate because of side effects.
+
+ if (bt->node_type () == AST_Decl::NT_array)
+ {
+ this->gen_anonymous_array (bt, node);
+ }
+ else
+ {
+ *os << this->type_name (bt);
+ *os << " " << node->local_name ();
+ }
+
+ *os << ";";
+
+ this->check_id_and_version (node);
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_root (AST_Root *node)
+{
+ ACE_NEW_RETURN (this->os,
+ TAO_SunSoft_OutStream,
+ -1);
+
+ ACE_CString fn (idl_global->stripped_filename ()->get_string ());
+ fn = fn.substr (0, fn.rfind ('.'));
+ fn += "_IDL2.idl";
+
+ const char *path = be_global->output_dir ();
+ ACE_CString target_name;
+
+ if (path != 0)
+ {
+ target_name = path;
+ target_name += "/";
+ }
+
+ target_name += fn;
+
+ if (this->os->open (target_name.c_str ()) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "Failed to open file %s for writing.\n",
+ target_name.c_str ()));
+
+ return -1;
+ }
+
+ *os << be_nl;
+
+ os->gen_ifndef_string (fn.c_str (), "_TAO_IDL_", "_IDL_");
+
+ ACE_CString raw_filename;
+ ACE_CString filename;
+
+ for (size_t i = 0; i < idl_global->n_included_idl_files (); ++i)
+ {
+ if (i == 0)
+ {
+ *os << be_nl;
+ }
+
+ raw_filename = idl_global->included_idl_files ()[i];
+
+ if (raw_filename.find (".pidl") != ACE_CString::npos
+ || raw_filename == "orb.idl"
+ || raw_filename == "Components.idl")
+ {
+ filename = raw_filename;
+ }
+ else
+ {
+ filename =
+ raw_filename.substr (0, raw_filename.rfind ('.')) + "_IDL2.idl";
+ }
+
+ *os << be_nl
+ << "#include \"" << filename.c_str () << "\"";
+ }
+
+ const char *pfix = node->prefix ();
+
+ if (ACE_OS::strcmp (pfix, "") != 0)
+ {
+ *os << be_nl << be_nl
+ << "#pragma prefix \"" << pfix << "\"";
+ }
+
+ if (this->visit_scope (node) != 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "idl3_to_idl2_visitor::visit_root - "
+ "codegen for scope failed\n"),
+ -1);
+ }
+
+ *os << be_nl << be_nl
+ << "#endif /* ifndef */" << be_nl << be_nl;
+
+ return 0;
+}
+
+int
+idl3_to_idl2_visitor::visit_native (AST_Native *node)
+{
+ if (node->imported ())
+ {
+ return 0;
+ }
+
+ *os << be_nl << be_nl;
+
+ *os << "native " << node->local_name () << ";";
+
+ return 0;
+}
+
+void
+idl3_to_idl2_visitor::check_prefix (AST_Decl *d)
+{
+ if (d->typeid_set ())
+ {
+ return;
+ }
+
+ const char *the_prefix = d->prefix ();
+ AST_Decl *p = ScopeAsDecl (d->defined_in ());
+
+ if (ACE_OS::strcmp (the_prefix, p->prefix ()) != 0)
+ {
+ *os << be_nl
+ << "typeprefix " << d->local_name ()
+ << " \"" << the_prefix << "\";";
+ }
+}
+
+void
+idl3_to_idl2_visitor::check_id_and_version (AST_Decl *d)
+{
+ if (d->typeid_set ())
+ {
+ *os << be_nl
+ << "typeid " << d->local_name ()
+ << " \"" << d->repoID () << "\";";
+
+ return;
+ }
+
+ const char *the_version = d->version ();
+ AST_Decl *p = ScopeAsDecl (d->defined_in ());
+
+ if (ACE_OS::strcmp (the_version, p->version ()) != 0)
+ {
+ *os << "\n"
+ << "#pragma version " << d->local_name ()
+ << " " << the_version;
+ }
+}
+
+const char *
+idl3_to_idl2_visitor::type_name (AST_Type *t)
+{
+ AST_PredefinedType *pdt = 0;
+
+ switch (t->node_type ())
+ {
+ case AST_Decl::NT_wstring:
+ case AST_Decl::NT_string:
+ case AST_Decl::NT_sequence:
+ // This causes side effects so output statements
+ // sending us here should not be concatenated.
+ (void) t->ast_accept (this);
+ return "";
+ case AST_Decl::NT_pre_defined:
+ pdt = AST_PredefinedType::narrow_from_decl (t);
+
+ switch (pdt->pt ())
+ {
+ case AST_PredefinedType::PT_pseudo:
+ return t->full_name ();
+ case AST_PredefinedType::PT_object:
+ return "Object";
+ case AST_PredefinedType::PT_any:
+ return "any";
+ case AST_PredefinedType::PT_long:
+ return "long";
+ case AST_PredefinedType::PT_ulong:
+ return "unsigned long";
+ case AST_PredefinedType::PT_longlong:
+ return "long long";
+ case AST_PredefinedType::PT_ulonglong:
+ return "unsigned long long";
+ case AST_PredefinedType::PT_short:
+ return "short";
+ case AST_PredefinedType::PT_ushort:
+ return "unsigned short";
+ case AST_PredefinedType::PT_float:
+ return "float";
+ case AST_PredefinedType::PT_double:
+ return "double";
+ case AST_PredefinedType::PT_longdouble:
+ return "long double";
+ case AST_PredefinedType::PT_char:
+ return "char";
+ case AST_PredefinedType::PT_wchar:
+ return "wchar";
+ case AST_PredefinedType::PT_boolean:
+ return "boolean";
+ case AST_PredefinedType::PT_octet:
+ return "octet";
+ case AST_PredefinedType::PT_void:
+ return "void";
+ default:
+ break;
+ }
+ default:
+ return t->full_name ();
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_anonymous_array (AST_Type *a,
+ AST_Decl *wrapper)
+{
+ AST_Array *array = AST_Array::narrow_from_decl (a);
+ AST_Type *bt = array->base_type ();
+
+ *os << this->type_name (bt);
+ *os << " " << wrapper->local_name ();
+
+ for (unsigned long i = 0; i < array->n_dims (); ++i)
+ {
+ *os << "[" << array->dims ()[i]->ev ()->u.ulval << "]";
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_label_value (AST_UnionLabel *node)
+{
+ AST_Expression *val = node->label_val ();
+ AST_Expression::AST_ExprValue *ev = val->ev ();
+
+ if (this->disc_type_->node_type () == AST_Decl::NT_enum)
+ {
+ UTL_Scope *s = this->disc_type_->defined_in ();
+
+ if (s == 0)
+ {
+ *os << val->n ();
+ }
+ else
+ {
+ *os << ScopeAsDecl (s)->name () << "::"
+ << val->n ()->last_component ();
+ }
+
+ return;
+ }
+
+ switch (ev->et)
+ {
+ case AST_Expression::EV_short:
+ *os << ev->u.sval;
+ break;
+ case AST_Expression::EV_ushort:
+ *os << ev->u.usval;
+ break;
+ case AST_Expression::EV_long:
+ *os << ev->u.lval;
+ break;
+ case AST_Expression::EV_ulong:
+ *os << ev->u.ulval;
+ break;
+ case AST_Expression::EV_longlong:
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ this->os->print ("%ld", ev->u.llval);
+#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
+ break;
+ case AST_Expression::EV_ulonglong:
+#if ! defined (ACE_LACKS_LONGLONG_T)
+ *os << "ACE_UINT64_LITERAL (";
+ this->os->print (ACE_UINT64_FORMAT_SPECIFIER, ev->u.ullval);
+ *os << ")";
+#endif /* ! defined (ACE_LACKS_LONGLONG_T) */
+ break;
+ case AST_Expression::EV_char:
+ *os << ev->u.cval;
+ break;
+ case AST_Expression::EV_wchar:
+ *os << ev->u.wcval;
+ break;
+ case AST_Expression::EV_bool:
+ *os << (ev->u.bval ? "true" : "false");
+ break;
+ case AST_Expression::EV_enum:
+ *os << val->n ();
+ break;
+ default:
+ break;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_provides (AST_Component *node)
+{
+ ACE_Unbounded_Queue<AST_Component::port_description> &s =
+ node->provides ();
+ AST_Component::port_description *pd = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Component::port_description> iter (s);
+ ! iter.done ();
+ iter.advance ())
+ {
+ iter.next (pd);
+
+ *os << be_nl << be_nl
+ << pd->impl->name () << " provide_" << pd->id << " ();";
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_uses (AST_Component *node)
+{
+ ACE_Unbounded_Queue<AST_Component::port_description> &s =
+ node->uses ();
+ AST_Component::port_description *pd = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Component::port_description> iter (s);
+ ! iter.done ();
+ iter.advance ())
+ {
+ iter.next (pd);
+
+ *os << be_nl << be_nl;
+
+ if (pd->is_multiple)
+ {
+ *os << "struct " << pd->id << "Connection" << be_nl
+ << "{" << be_idt_nl
+ << pd->impl->name () << " objref;" << be_nl
+ << "Components::Cookie ck;" << be_uidt_nl
+ << "};" << be_nl << be_nl
+ << "typedef sequence<" << pd->id << "Connection> "
+ << pd->id << "Connections;"
+ << be_nl << be_nl
+ << "Components::Cookie connect_" << pd->id << " (in "
+ << pd->impl->name () << " connection)" << be_idt_nl
+ << "raises (Components::ExceededConnectionLimit, "
+ << "Components::InvalidConnection);" << be_uidt_nl << be_nl
+ << pd->impl->name () << " disconnect_" << pd->id
+ << " (in Components::Cookie ck)" << be_idt_nl
+ << "raises (Components::InvalidConnection);"
+ << be_uidt_nl << be_nl
+ << pd->id << "Connections get_connections_" << pd->id
+ << " ();";
+ }
+ else
+ {
+ *os << "void connect_" << pd->id << " (in "
+ << pd->impl->name () << " conxn)" << be_idt_nl
+ << "raises (Components::AlreadyConnected, "
+ << "Components::InvalidConnection);" << be_uidt_nl << be_nl
+ << pd->impl->name () << " disconnect_" << pd->id
+ << " ()" << be_idt_nl
+ << "raises (Components::NoConnection);" << be_uidt_nl << be_nl
+ << pd->impl->name () << " get_connection_" << pd->id
+ << " ();";
+ }
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_publishes (AST_Component *node)
+{
+ ACE_Unbounded_Queue<AST_Component::port_description> &s =
+ node->publishes ();
+ AST_Component::port_description *pd = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Component::port_description> iter (s);
+ ! iter.done ();
+ iter.advance ())
+ {
+ iter.next (pd);
+
+ *os << be_nl << be_nl
+ << "Components::Cookie subscribe_" << pd->id
+ << " (in " << pd->impl->name () <<"Consumer consumer)"
+ << be_idt_nl
+ << "raises (Components::ExceededConnectionLimit);"
+ << be_uidt_nl << be_nl
+ << pd->impl->name () << "Consumer unsubscribe_" << pd->id
+ << " (in Components::Cookie ck)" << be_idt_nl
+ << "raises (Components::InvalidConnection);" << be_uidt;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_emits (AST_Component *node)
+{
+ ACE_Unbounded_Queue<AST_Component::port_description> &s =
+ node->emits ();
+ AST_Component::port_description *pd = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Component::port_description> iter (s);
+ ! iter.done ();
+ iter.advance ())
+ {
+ iter.next (pd);
+
+ *os << be_nl << be_nl
+ << "void connect_" << pd->id
+ << " (in " << pd->impl->name ()
+ << "Consumer consumer)" << be_idt_nl
+ << "raises (Components::AlreadyConnected);"
+ << be_uidt_nl << be_nl
+ << pd->impl->name () << "Consumer disconnect_" << pd->id
+ << " ()" << be_idt_nl
+ << "raises (Components::NoConnection);" << be_uidt;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_consumes (AST_Component *node)
+{
+ ACE_Unbounded_Queue<AST_Component::port_description> &s =
+ node->consumes ();
+ AST_Component::port_description *pd = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Component::port_description> iter (s);
+ ! iter.done ();
+ iter.advance ())
+ {
+ iter.next (pd);
+
+ *os << be_nl << be_nl
+ << pd->impl->name () << "Consumer get_consumer_" << pd->id
+ << " ();";
+ }
+}
+
+UTL_ScopedName *
+idl3_to_idl2_visitor::create_scoped_name (const char *prefix,
+ const char *local_name,
+ const char *suffix,
+ AST_Decl *parent)
+{
+ ACE_CString local_string (prefix,
+ 0,
+ 0);
+ local_string += local_name;
+ local_string += suffix;
+ Identifier *local_id = 0;
+ ACE_NEW_RETURN (local_id,
+ Identifier (local_string.fast_rep ()),
+ 0);
+ UTL_ScopedName *last_segment = 0;
+ ACE_NEW_RETURN (last_segment,
+ UTL_ScopedName (local_id,
+ 0),
+ 0);
+ UTL_ScopedName *full_name =
+ static_cast<UTL_ScopedName *> (parent->name ()->copy ());
+ full_name->nconc (last_segment);
+ return full_name;
+}
+
+void
+idl3_to_idl2_visitor::tranfer_scope_elements (AST_Home *src,
+ AST_Interface &dst)
+{
+ // Transfer the elements of the home's scope to the temporary
+ // explicit home interface.
+ for (UTL_ScopeActiveIterator src_iter (src, UTL_Scope::IK_decls);
+ ! src_iter.is_done ();
+ src_iter.next ())
+ {
+ AST_Decl *d = src_iter.item ();
+ d->set_defined_in (&dst);
+ UTL_ScopedName *new_name =
+ this->create_scoped_name (0,
+ d->local_name ()->get_string (),
+ 0,
+ &dst);
+ d->set_name (new_name);
+ dst.add_to_scope (d);
+ }
+
+ // Visit the transferred scope elements normally to generate the IDL.
+ // This way referenced items will have the interface's name in the
+ // scoped name instead of the home's name.
+ for (UTL_ScopeActiveIterator dst_iter (&dst, UTL_Scope::IK_decls);
+ ! dst_iter.is_done ();
+ dst_iter.next ())
+ {
+ if (dst_iter.item ()->ast_accept (this) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "idl3_to_idl2_visitor::tranfer_scope_elements - "
+ "codegen for destination scope failed\n"));
+ }
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_factories (AST_Home *node,
+ AST_Interface &)
+{
+ AST_Operation **item = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Operation *> i (node->factories ());
+ ! i.done ();
+ i.advance ())
+ {
+ i.next (item);
+
+ *os << be_nl << be_nl
+ << node->managed_component ()->name () << " "
+ << (*item)->local_name () << " (";
+
+ this->gen_params (*item, (*item)->argument_count ());
+
+ *os << ")";
+
+ UTL_ExceptList *exceps = (*item)->exceptions ();
+
+ if (exceps != 0 && exceps->length () > 0)
+ {
+ this->gen_exception_list (exceps, "", false);
+ }
+ else
+ {
+ *os << be_idt_nl
+ << "raises (";
+ }
+
+ *os << "Components::CreateFailure);" << be_uidt;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_finders (AST_Home *node,
+ AST_Interface &)
+{
+ AST_Operation **item = 0;
+
+ for (ACE_Unbounded_Queue_Iterator<AST_Operation *> i (node->finders ());
+ ! i.done ();
+ i.advance ())
+ {
+ i.next (item);
+
+ *os << be_nl << be_nl
+ << node->managed_component ()->name () << " "
+ << (*item)->local_name () << " (";
+
+ this->gen_params (*item, (*item)->argument_count ());
+
+ *os << ")";
+
+ UTL_ExceptList *exceps = (*item)->exceptions ();
+
+ if (exceps != 0 && exceps->length () > 0)
+ {
+ this->gen_exception_list (exceps, "", false);
+ }
+ else
+ {
+ *os << be_idt_nl
+ << "raises (";
+ }
+
+ *os << "Components::FinderFailure);" << be_uidt;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_params (UTL_Scope *s, int arg_count)
+{
+ if (arg_count > 0)
+ {
+ *os << be_idt << be_idt;
+
+ for (UTL_ScopeActiveIterator si (s, UTL_Scope::IK_decls);
+ !si.is_done ();)
+ {
+ if (si.item ()->ast_accept (this) != 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "idl3_to_idl2_visitor::gen_params - "
+ "codegen for parameters failed\n"));
+ }
+
+ si.next ();
+
+ if (!si.is_done ())
+ {
+ *os << ",";
+ }
+ }
+
+ *os << be_uidt_nl << be_uidt;
+ }
+}
+
+void
+idl3_to_idl2_visitor::gen_exception_list (UTL_ExceptList *exceptions,
+ const char *prefix,
+ bool closed)
+{
+ if (exceptions != 0 && exceptions->length () > 0)
+ {
+ *os << be_idt_nl
+ << prefix << "raises (";
+
+ for (UTL_ExceptlistActiveIterator ei (exceptions);
+ !ei.is_done ();)
+ {
+ *os << ei.item ()->name ();
+
+ ei.next ();
+
+ if (!ei.is_done () || !closed)
+ {
+ *os << ", ";
+ }
+ }
+
+ if (closed)
+ {
+ *os << ")" << be_uidt;
+ }
+ }
+}
diff --git a/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h
new file mode 100644
index 00000000000..e5f976edf3e
--- /dev/null
+++ b/modules/CIAO/tools/IDL3_to_IDL2/idl3_to_idl2_visitor.h
@@ -0,0 +1,114 @@
+// $Id$
+
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO_PICML_BE_DLL
+//
+// = FILENAME
+// idl3_to_idl2_visitor.h
+//
+// = DESCRIPTION
+// The IDML importer visitor base class.
+//
+// = AUTHOR
+// Jeff Parsons <j.parsons@vanderbilt.edu>
+//
+// ============================================================================
+
+#ifndef TAO_PICML_VISITOR_H
+#define TAO_PICML_VISITOR_H
+
+#include "ast_visitor.h"
+#include "utl_scoped_name.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_OutStream;
+class UTL_ExceptList;
+
+class idl3_to_idl2_visitor : public ast_visitor
+{
+ //
+ // = TITLE
+ // idl3_to_idl2_visitor.
+ //
+ // = DESCRIPTION
+ // IDL3 to IDL2 conversion visitor. The methods are
+ // not pure virtual to facilitate the implementation of some
+ // derived visitors that override only a few.
+ //
+public:
+ idl3_to_idl2_visitor (void);
+ virtual ~idl3_to_idl2_visitor (void);
+
+ virtual int visit_decl (AST_Decl *d);
+ virtual int visit_scope (UTL_Scope *node);
+ virtual int visit_type (AST_Type *node);
+ virtual int visit_predefined_type (AST_PredefinedType *node);
+ virtual int visit_module (AST_Module *node);
+ virtual int visit_interface (AST_Interface *node);
+ virtual int visit_interface_fwd (AST_InterfaceFwd *node);
+ virtual int visit_valuebox (AST_ValueBox *node);
+ virtual int visit_valuetype (AST_ValueType *node);
+ virtual int visit_valuetype_fwd (AST_ValueTypeFwd *node);
+ virtual int visit_component (AST_Component *node);
+ virtual int visit_component_fwd (AST_ComponentFwd *node);
+ virtual int visit_eventtype (AST_EventType *node);
+ virtual int visit_eventtype_fwd (AST_EventTypeFwd *node);
+ virtual int visit_home (AST_Home *node);
+ virtual int visit_factory (AST_Factory *node);
+ virtual int visit_structure (AST_Structure *node);
+ virtual int visit_structure_fwd (AST_StructureFwd *node);
+ virtual int visit_exception (AST_Exception *node);
+ virtual int visit_expression (AST_Expression *node);
+ virtual int visit_enum (AST_Enum *node);
+ virtual int visit_operation (AST_Operation *node);
+ virtual int visit_field (AST_Field *node);
+ virtual int visit_argument (AST_Argument *node);
+ virtual int visit_attribute (AST_Attribute *node);
+ virtual int visit_union (AST_Union *node);
+ virtual int visit_union_fwd (AST_UnionFwd *node);
+ virtual int visit_union_branch (AST_UnionBranch *node);
+ virtual int visit_union_label (AST_UnionLabel *node);
+ virtual int visit_constant (AST_Constant *node);
+ virtual int visit_enum_val (AST_EnumVal *node);
+ virtual int visit_array (AST_Array *node);
+ virtual int visit_sequence (AST_Sequence *node);
+ virtual int visit_string (AST_String *node);
+ virtual int visit_typedef (AST_Typedef *node);
+ virtual int visit_root (AST_Root *node);
+ virtual int visit_native (AST_Native *node);
+
+private:
+ void check_prefix (AST_Decl *d);
+ void check_id_and_version (AST_Decl *d);
+ const char *type_name (AST_Type *t);
+ void gen_anonymous_array (AST_Type *array, AST_Decl *wrapper);
+ void gen_label_value (AST_UnionLabel *node);
+ void gen_provides (AST_Component *node);
+ void gen_uses (AST_Component *node);
+ void gen_publishes (AST_Component *node);
+ void gen_emits (AST_Component *node);
+ void gen_consumes (AST_Component *node);
+ UTL_ScopedName *create_scoped_name (const char *prefix,
+ const char *local_name,
+ const char *suffix,
+ AST_Decl *parent);
+ void tranfer_scope_elements (AST_Home *src, AST_Interface &dst);
+ void gen_factories (AST_Home *node, AST_Interface &xplicit);
+ void gen_finders (AST_Home *node, AST_Interface &xplicit);
+ void gen_params (UTL_Scope *s, int arg_count);
+ void gen_exception_list (UTL_ExceptList *exceptions,
+ const char *prefix = "",
+ bool closed = true);
+
+private:
+ TAO_OutStream *os;
+ AST_Type *disc_type_;
+};
+
+#endif /* TAO_PICML_VISITOR_H */
diff --git a/modules/CIAO/tools/tools.mwc b/modules/CIAO/tools/tools.mwc
new file mode 100644
index 00000000000..ae28cfcba54
--- /dev/null
+++ b/modules/CIAO/tools/tools.mwc
@@ -0,0 +1,7 @@
+// -*- MPC -*-
+// $Id$
+
+workspace {
+ Config_Handlers
+ IDL3_to_IDL2
+} \ No newline at end of file