00001 /* 00002 * ALMA - Atacama Large Millimiter Array 00003 * (c) European Southern Observatory, 2002 00004 * Copyright by ESO (in the framework of the ALMA collaboration), 00005 * All rights reserved 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00020 * MA 02111-1307 USA 00021 */ 00022 00023 #ifndef _XMLTEST_IDL_ 00024 #define _XMLTEST_IDL_ 00025 00026 #include <acscommon.idl> 00027 #include <acscomponent.idl> 00028 00029 #pragma prefix "alma" 00030 00031 00032 module xmltest 00033 { 00034 00035 /********************************************************* 00036 * XmlEntityStruct is defined in the module 00037 * ACS/CommonSoftware/define, file xmlentity.idl, 00038 * which we can't include here because of module built order. 00039 * 00040 * For testing this module, it does not matter that we simply define 00041 * the struct below instead of #including xmlentity.idl. 00042 * Currently even the content of XmlEntityStruct does not matter, 00043 * it just has to exist as a struct. 00044 *********************************************************/ 00045 00046 struct XmlEntityStruct 00047 { 00048 string xmlString; // works only for Latin-1 characters; otherwise use wstring! 00049 // string entityId; // unique ID, same as inside the xml, but easier to access 00050 // string entityTypeName; // unique name like "SchedBlock" (should be the schema name w/o ".xsd") 00051 // string schemaVersion; // the schema version that the entity complies with 00052 }; 00053 00054 00055 /********************************************************* 00056 * typedefs for our entity objects 00057 *********************************************************/ 00058 00059 typedef XmlEntityStruct ObsProposal; 00060 typedef XmlEntityStruct SchedBlock; 00061 00062 typedef sequence <SchedBlock> SchedBlockSeq; 00063 00064 typedef SchedBlockSeq EvenMoreHiddenEntityClass; 00065 00066 /********************************************************* 00067 * example component 00068 *********************************************************/ 00069 00070 interface NonXMLAcsComponent : ACS::ACSComponent 00071 { 00072 string sayHello(); 00073 }; 00074 00075 interface NonXMLIndirectAcsComponent : NonXMLAcsComponent 00076 { 00077 }; 00078 00079 interface XMLAcsComponent : ACS::ACSComponent 00080 { 00081 string sayHello(); 00082 ObsProposal createObsProposal(); 00083 }; 00084 00085 interface XMLNonAcsComponent 00086 { 00087 string sayHello(); 00088 ObsProposal createObsProposal(); 00089 }; 00090 00091 00092 struct ObsProjectTree 00093 { 00094 ObsProposal prop; 00095 SchedBlockSeq schedBlocks; 00096 }; 00097 00098 interface MyBaseInterface; 00099 00100 interface ReturnInterface : ACS::ACSComponent 00101 { 00102 ObsProposal createObsProposal(); 00103 MyBaseInterface createBaseInterface(in long pippo); 00104 }; 00105 00106 interface MyBaseInterface 00107 { 00108 attribute float radius; 00109 void someDumbMethod(in string stupidArg); 00110 }; 00111 00112 00113 interface IFWithIndirectEntityUsage : ACS::ACSComponent 00114 { 00115 SchedBlockSeq methodWithEntitySequence(); 00116 void methodWithHiddenEntitySequence(out EvenMoreHiddenEntityClass outThing); 00117 }; 00118 00119 00120 /* ------------- */ 00121 /* | Offshoots | */ 00122 /* ------------- */ 00123 interface NoXmlOffshoot : ACS::OffShoot 00124 { 00125 void getNothing(); 00126 }; 00127 00128 interface XmlOffshoot : ACS::OffShoot 00129 { 00130 ObsProposal getObsProposal(); 00131 void setPreferedProposal(in ObsProposal proposal); 00132 }; 00133 00134 /* ------------------------------------ */ 00135 /* | Non-AcsComponent using Offshoots | */ 00136 /* ------------------------------------ */ 00137 interface NonComponentUsingXmlOffshoot { 00138 XmlOffshoot getOffshoot(); 00139 }; 00140 00141 /* --------------------------------- */ 00142 /* | AcsComponents using Offshoots | */ 00143 /* --------------------------------- */ 00144 interface NormalComponentUsingXmlOffshoot : ACS::ACSComponent { 00145 XmlOffshoot getOffshoot(); 00146 }; 00147 00148 interface XmlComponentUsingXmlOffshoot : ACS::ACSComponent { 00149 ObsProposal createObsProposal(); 00150 XmlOffshoot getOffshoot(); 00151 }; 00152 00153 interface NormalComponentUsingNormalOffshoot : ACS::ACSComponent { 00154 NoXmlOffshoot getOffshoot(); 00155 }; 00156 00157 interface XmlComponentUsingNormalOffshoot : ACS::ACSComponent { 00158 ObsProposal createObsProposal(); 00159 NoXmlOffshoot getOffshoot(); 00160 }; 00161 }; 00162 00163 #endif