1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_backend_XMultiLayerStratum_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_configuration_backend_XMultiLayerStratum_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_backend_XLayer_idl__ 31*b1cdbd2cSJim Jagielski#include <com/sun/star/configuration/backend/XLayer.idl> 32*b1cdbd2cSJim Jagielski#endif 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_backend_XUpdatableLayer_idl__ 35*b1cdbd2cSJim Jagielski#include <com/sun/star/configuration/backend/XUpdatableLayer.idl> 36*b1cdbd2cSJim Jagielski#endif 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_backend_BackendAccessException_idl__ 39*b1cdbd2cSJim Jagielski#include <com/sun/star/configuration/backend/BackendAccessException.idl> 40*b1cdbd2cSJim Jagielski#endif 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ 43*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl> 44*b1cdbd2cSJim Jagielski#endif 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_NoSupportException_idl__ 47*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/NoSupportException.idl> 48*b1cdbd2cSJim Jagielski#endif 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski//============================================================================= 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module configuration { module backend { 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski//============================================================================= 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski/** 57*b1cdbd2cSJim Jagielski Handles access to a stratum consisting of multiple layers 58*b1cdbd2cSJim Jagielski in a single configuration data repository 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski <p> The interface provides access to data for multiple entities and 61*b1cdbd2cSJim Jagielski timestamp-checking capabilities for efficient caching. 62*b1cdbd2cSJim Jagielski </p> 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XBackendEntities 65*b1cdbd2cSJim Jagielski @see com::sun::star::util::XTimeStamped 66*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XSchemaSupplier 67*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XSingleLayerStratum 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski @since OpenOffice 1.1.2 70*b1cdbd2cSJim Jagielski*/ 71*b1cdbd2cSJim Jagielskipublished interface XMultiLayerStratum : ::com::sun::star::uno::XInterface 72*b1cdbd2cSJim Jagielski{ 73*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski /** 76*b1cdbd2cSJim Jagielski identifies the layers within this stratum which should be read and 77*b1cdbd2cSJim Jagielski merged to determine data of a component for an entity 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski @param aComponent 81*b1cdbd2cSJim Jagielski The name of the component to access. 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski @param aEntity 84*b1cdbd2cSJim Jagielski The name of an entity on behalf of which data will be accessed. 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski @return 87*b1cdbd2cSJim Jagielski a list of layer identifiers that can be used to 88*b1cdbd2cSJim Jagielski retrieve <type>Layer</type> objects. 89*b1cdbd2cSJim Jagielski <p> The list ist ordered by priority. Typically 90*b1cdbd2cSJim Jagielski the most general layers (global defaults, 91*b1cdbd2cSJim Jagielski entire organization) are first, more specific layers 92*b1cdbd2cSJim Jagielski (associated to specific groups or roles) are next 93*b1cdbd2cSJim Jagielski and the entity's own data is last. 94*b1cdbd2cSJim Jagielski </p> 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 97*b1cdbd2cSJim Jagielski if the component identifier is invalid or 98*b1cdbd2cSJim Jagielski if the entity doesn't exist. 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 101*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XMultiLayerStratum::getLayer() 104*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XMultiLayerStratum::getLayers() 105*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XMultiLayerStratum::getMultipleLayers() 106*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XBackendEntities 107*b1cdbd2cSJim Jagielski */ 108*b1cdbd2cSJim Jagielski sequence<string> listLayerIds([in] string aComponent, 109*b1cdbd2cSJim Jagielski [in] string aEntity) 110*b1cdbd2cSJim Jagielski raises (BackendAccessException, 111*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski /** 116*b1cdbd2cSJim Jagielski identifies the layer which should be modified 117*b1cdbd2cSJim Jagielski to update data of a component on behalf of an entity. 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski <p> The layer id returned is one of the layer ids obtained from 120*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::listLayerIds()</member> for the same 121*b1cdbd2cSJim Jagielski component and entity. 122*b1cdbd2cSJim Jagielski </p> 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski @param aComponent 125*b1cdbd2cSJim Jagielski The name of the component to access. 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski @param aEntity 128*b1cdbd2cSJim Jagielski The name of an entity on behalf of which data will be accessed. 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski @returns 131*b1cdbd2cSJim Jagielski a layer identifier that can be used to obtain 132*b1cdbd2cSJim Jagielski an <type>UpdatableLayer</type> object. 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 135*b1cdbd2cSJim Jagielski if the component identifier is invalid or 136*b1cdbd2cSJim Jagielski if the entity doesn't exist. 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::NoSupportException 139*b1cdbd2cSJim Jagielski if the implementation does not support updates. 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 142*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XMultiLayerStratum::getUpdatableLayer() 145*b1cdbd2cSJim Jagielski @see com::sun::star::configuration::backend::XBackendEntities 146*b1cdbd2cSJim Jagielski */ 147*b1cdbd2cSJim Jagielski string getUpdateLayerId([in] string aComponent, 148*b1cdbd2cSJim Jagielski [in] string aEntity) 149*b1cdbd2cSJim Jagielski raises (BackendAccessException, 150*b1cdbd2cSJim Jagielski com::sun::star::lang::NoSupportException, 151*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski /** 156*b1cdbd2cSJim Jagielski retrieves a layer associated to a layer id, if newer than indicated. 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski <p> A timestamp can be provided, which is used to indicate 159*b1cdbd2cSJim Jagielski a point in time. The layer should be returned only if is modified 160*b1cdbd2cSJim Jagielski since that time. 161*b1cdbd2cSJim Jagielski </p> 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski @param aLayerId 164*b1cdbd2cSJim Jagielski identifier of the layers to be accessed. 165*b1cdbd2cSJim Jagielski <p>Layer ids can be obtained from 166*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::listLayerIds()</member> or 167*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::getUpdateLayerId()</member>. 168*b1cdbd2cSJim Jagielski </p> 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski @param aTimestamp 171*b1cdbd2cSJim Jagielski a timestamp for the layer. 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski <p> An empty timestamp indicates, that the layer should be 174*b1cdbd2cSJim Jagielski retrieved irrespective of its modification time. 175*b1cdbd2cSJim Jagielski </p> 176*b1cdbd2cSJim Jagielski <p> The format and meaning of a timestamp depends on 177*b1cdbd2cSJim Jagielski the implementation. Timestamps can be obtained using 178*b1cdbd2cSJim Jagielski <member scope="com::sun::star::util">XTimeStamped::getTimestamp()</member>. 179*b1cdbd2cSJim Jagielski </p> 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski @returns 182*b1cdbd2cSJim Jagielski a <type>Layer</type> object providing access to the layer data, 183*b1cdbd2cSJim Jagielski <NULL/> if the layer is newer than indicated by the timestamp. 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 186*b1cdbd2cSJim Jagielski if the layer id is invalid or 187*b1cdbd2cSJim Jagielski if the timestamp is invalid 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 190*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski @see com::sun::star::util::XTimeStamped 193*b1cdbd2cSJim Jagielski */ 194*b1cdbd2cSJim Jagielski XLayer getLayer([in] string aLayerId, 195*b1cdbd2cSJim Jagielski [in] string aTimestamp) 196*b1cdbd2cSJim Jagielski raises (BackendAccessException, 197*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski /** 202*b1cdbd2cSJim Jagielski retrieves the layers associated to a series of layer ids, 203*b1cdbd2cSJim Jagielski if newer than indicated. 204*b1cdbd2cSJim Jagielski <p> A timestamp can be provided, which is used to indicate 205*b1cdbd2cSJim Jagielski a point in time. Only layers that are modified since that time 206*b1cdbd2cSJim Jagielski should be returned. The same timestamp is used for all layers. 207*b1cdbd2cSJim Jagielski </p> 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski @param aLayerIds 210*b1cdbd2cSJim Jagielski identifiers of the layers to be accessed. 211*b1cdbd2cSJim Jagielski <p>Layer ids can be obtained from 212*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::listLayerIds()</member>. 213*b1cdbd2cSJim Jagielski </p> 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski @param aTimestamp 216*b1cdbd2cSJim Jagielski a timestamp for all of the layers. 217*b1cdbd2cSJim Jagielski <p> An empty timestamp indicates, that the layers should be 218*b1cdbd2cSJim Jagielski retrieved irrespective of their modification time. 219*b1cdbd2cSJim Jagielski </p> 220*b1cdbd2cSJim Jagielski <p> The format and meaning of a timestamp depends on 221*b1cdbd2cSJim Jagielski the implementation. Timestamps can be obtained using 222*b1cdbd2cSJim Jagielski <member scope="com::sun::star::util">XTimeStamped::getTimestamp()</member>. 223*b1cdbd2cSJim Jagielski </p> 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski @returns 226*b1cdbd2cSJim Jagielski a list of <type>Layer</type> objects 227*b1cdbd2cSJim Jagielski providing access to the layer data. 228*b1cdbd2cSJim Jagielski <p> The list has the same length as aLayerIds. Each layer 229*b1cdbd2cSJim Jagielski object is associated to the layer id in the corresponding 230*b1cdbd2cSJim Jagielski position. 231*b1cdbd2cSJim Jagielski </p> 232*b1cdbd2cSJim Jagielski <p> For layers that are newer than indicated by the 233*b1cdbd2cSJim Jagielski timestamp, the list contains a <NULL/> element. 234*b1cdbd2cSJim Jagielski </p> 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 237*b1cdbd2cSJim Jagielski if one of the layer ids is invalid or 238*b1cdbd2cSJim Jagielski if the timestamp is invalid 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 241*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski @see com::sun::star::util::XTimeStamped 244*b1cdbd2cSJim Jagielski */ 245*b1cdbd2cSJim Jagielski sequence<XLayer> getLayers([in] sequence<string> aLayerIds, 246*b1cdbd2cSJim Jagielski [in] string aTimestamp) 247*b1cdbd2cSJim Jagielski raises (BackendAccessException, 248*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski /** 253*b1cdbd2cSJim Jagielski retrieves the layers associated to a series of layer ids, 254*b1cdbd2cSJim Jagielski if newer than indicated for each layer. 255*b1cdbd2cSJim Jagielski <p> For each layer an individual timestamp can be provided, 256*b1cdbd2cSJim Jagielski which is used to indicate the last known version of the layer. 257*b1cdbd2cSJim Jagielski Only layers that are modified since that time should be returned. 258*b1cdbd2cSJim Jagielski </p> 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski @param aLayerIds 261*b1cdbd2cSJim Jagielski identifiers of the layers to be accessed. 262*b1cdbd2cSJim Jagielski <p>Layer ids can be obtained from 263*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::listLayerIds()</member>. 264*b1cdbd2cSJim Jagielski </p> 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski @param aTimestamps 267*b1cdbd2cSJim Jagielski timestamps for each of the layers. 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski <p> This list must have the same length as aLayerIds. 270*b1cdbd2cSJim Jagielski Timestamps are matched to layer ids by their position. 271*b1cdbd2cSJim Jagielski </p> 272*b1cdbd2cSJim Jagielski <p> An empty timestamp indicates, that the associated layer 273*b1cdbd2cSJim Jagielski should be retrieved irrespective of its modification time. 274*b1cdbd2cSJim Jagielski </p> 275*b1cdbd2cSJim Jagielski <p> The format and meaning of a timestamp depends on 276*b1cdbd2cSJim Jagielski the implementation. Timestamps can be obtained using 277*b1cdbd2cSJim Jagielski <member scope="com::sun::star::util">XTimeStamped::getTimestamp()</member>. 278*b1cdbd2cSJim Jagielski </p> 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski @returns 281*b1cdbd2cSJim Jagielski a list of <type>Layer</type> objects 282*b1cdbd2cSJim Jagielski providing access to the layer data. 283*b1cdbd2cSJim Jagielski <p> The list has the same length as aLayerIds. Each layer 284*b1cdbd2cSJim Jagielski object is associated to the layer id in the corresponding 285*b1cdbd2cSJim Jagielski position. 286*b1cdbd2cSJim Jagielski </p> 287*b1cdbd2cSJim Jagielski <p> For layers that are newer than indicated by the corresponding 288*b1cdbd2cSJim Jagielski timestamp, the list contains a <NULL/> element. 289*b1cdbd2cSJim Jagielski </p> 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 292*b1cdbd2cSJim Jagielski if one of the layer ids is invalid or 293*b1cdbd2cSJim Jagielski if one of the timestamps is invalid or 294*b1cdbd2cSJim Jagielski if the lengths of the arguments don't match. 295*b1cdbd2cSJim Jagielski 296*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 297*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 298*b1cdbd2cSJim Jagielski 299*b1cdbd2cSJim Jagielski @see com::sun::star::util::XTimeStamped 300*b1cdbd2cSJim Jagielski */ 301*b1cdbd2cSJim Jagielski sequence<XLayer> getMultipleLayers([in] sequence<string> aLayerIds, 302*b1cdbd2cSJim Jagielski [in] sequence<string> aTimestamps) 303*b1cdbd2cSJim Jagielski raises (BackendAccessException, 304*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 305*b1cdbd2cSJim Jagielski 306*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 307*b1cdbd2cSJim Jagielski 308*b1cdbd2cSJim Jagielski /** 309*b1cdbd2cSJim Jagielski retrieves a writable representation of the layer 310*b1cdbd2cSJim Jagielski associated to a layer id. 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski @param aLayerId 313*b1cdbd2cSJim Jagielski identifier of the layer to be accessed for writing. 314*b1cdbd2cSJim Jagielski <p>A layer id for writing can be obtained from 315*b1cdbd2cSJim Jagielski <member>XMultiLayerStratum::getUpdateLayerId()</member>. 316*b1cdbd2cSJim Jagielski </p> 317*b1cdbd2cSJim Jagielski 318*b1cdbd2cSJim Jagielski @return 319*b1cdbd2cSJim Jagielski an <type>UpdatableLayer</type> object providing 320*b1cdbd2cSJim Jagielski write access to the layer 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::IllegalArgumentException 323*b1cdbd2cSJim Jagielski if the layer id is invalid. 324*b1cdbd2cSJim Jagielski 325*b1cdbd2cSJim Jagielski @throws com::sun::star::lang::NoSupportException 326*b1cdbd2cSJim Jagielski if the implementation does not support updates. 327*b1cdbd2cSJim Jagielski 328*b1cdbd2cSJim Jagielski @throws com::sun::star::configuration::backend::BackendAccessException 329*b1cdbd2cSJim Jagielski if an error occurs while accessing the data. 330*b1cdbd2cSJim Jagielski */ 331*b1cdbd2cSJim Jagielski XUpdatableLayer getUpdatableLayer([in] string aLayerId) 332*b1cdbd2cSJim Jagielski raises (BackendAccessException, 333*b1cdbd2cSJim Jagielski com::sun::star::lang::NoSupportException, 334*b1cdbd2cSJim Jagielski com::sun::star::lang::IllegalArgumentException) ; 335*b1cdbd2cSJim Jagielski 336*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 337*b1cdbd2cSJim Jagielski} ; 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski//============================================================================= 340*b1cdbd2cSJim Jagielski 341*b1cdbd2cSJim Jagielski} ; } ; } ; } ; } ; 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski#endif 344