Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

PsMultipleConfigurationParameter.h

Go to the documentation of this file.
00001 /*
00002  * This file is part of openMask © INRIA, CNRS, Universite de Rennes 1 1993-2002, thereinafter the Software
00003  * 
00004  * The Software has been developped within the Siames Project. 
00005  * INRIA, the University of Rennes 1 and CNRS jointly hold intellectual property rights
00006  * 
00007  * The Software has been registered with the Agence pour la Protection des
00008  * Programmes (APP) under registration number IDDN.FR.001.510008.00.S.P.2001.000.41200
00009  *
00010  * This file may be distributed under the terms of the Q Public License
00011  * version 1.0 as defined by Trolltech AS of Norway and appearing in the file
00012  * LICENSE.QPL included in the packaging of this file.
00013  *
00014  * Licensees holding valid specific licenses issued by INRIA, CNRS or Université de Rennes 1 
00015  * for the software may use this file in accordance with that specific license 
00016  *
00017  */
00018 #ifndef PsMultipleConfigurationParameterHEADER
00019 #define PsMultipleConfigurationParameterHEADER
00020 
00021 #include "PsConfigurationParameterDescriptor.h"
00022 #include <vector>
00023 
00024 #ifdef _HASHMAPNOTSTD
00025 #include <ext/hash_map>
00026 using namespace __gnu_cxx ;
00027 #else
00028 #include <hash_map>
00029 #endif
00030 
00037 class PsMultipleConfigurationParameter : public PsConfigurationParameterDescriptor 
00038 {
00039 public:
00041    PsMultipleConfigurationParameter () ;
00042 
00044    PsMultipleConfigurationParameter (const PsMultipleConfigurationParameter &) ;
00045 
00047    virtual ~PsMultipleConfigurationParameter() ;
00048 
00050    virtual const string & getAssociatedString () const ; 
00051 
00053    virtual const PsConfigurationParameterDescriptor * getSubDescriptorByName (const string & descriptorName ) const ;
00054 
00056    virtual const PsConfigurationParameterDescriptor * getSubDescriptorByPosition (int descriptorPosition) const ;
00057 
00059    virtual PsConfigurationParameterDescriptor * getSubDescriptorByName (const string & descriptorName );
00060 
00062    virtual PsConfigurationParameterDescriptor * getSubDescriptorByPosition (int descriptorPosition) ;
00063 
00065    virtual const string & getNameOfSubDescriptor (int descriptorPosition) const ;
00066 
00068    virtual int getNumberOfSubItems () const ;
00069 
00071    virtual int appendSubDescriptor( PsConfigurationParameterDescriptor * subDescriptor ) ;
00072 
00073 
00077    virtual int appendSubDescriptorNamed (const string & descriptorName, PsConfigurationParameterDescriptor * subDescriptor );
00078 
00080    virtual int replaceSubDescriptorNamed (const string & descriptorName, PsConfigurationParameterDescriptor * subDescriptor);
00081 
00083    virtual int replaceSubDescriptor (int position, PsConfigurationParameterDescriptor * subDescriptor);
00084   
00088    virtual int appendSubDescriptorsOf (const PsMultipleConfigurationParameter & otherDescriptor) ;
00089 
00092    virtual PsConfigurationParameterDescriptor * clone () const ;
00093 
00096    virtual void extract (istream & = cin)  ;
00097 
00100    virtual void insertInStream (ostream & = cout) const;
00101 
00104    virtual void printToStream (ostream & out, int offset ) const ;
00105 
00107    virtual void unpack (PsIncomingSynchronisationMessage &) ;
00108    
00110    virtual void pack (PsOutgoingSynchronisationMessage &) const ;
00111 
00112 protected:
00114    struct openMaskString_hash {
00115       size_t operator ()(const string & s) const
00116       {
00117          static hash<const char *> H;
00118          return H(s.c_str());
00119       }
00120    };
00121 
00123    typedef pair <string, PsConfigurationParameterDescriptor *> DataContainedType ;
00124 
00126    typedef vector < DataContainedType > DataContainerType ;
00127 
00129    typedef hash_map<string, PsConfigurationParameterDescriptor *, openMaskString_hash > FastAccessContainer ;
00130 
00132    DataContainerType _subDescriptors ;
00133 
00136    FastAccessContainer _hashtable ;
00137 
00139    mutable string _associatedString ;
00140 
00142    mutable bool _associatedStringValid ;
00143 };
00144 
00145 #endif
00146 
00147 
00148 

logo OpenMask

Documentation generated on Mon Nov 25 15:25:00 2002

Generated with doxygen 1.2.12 by Dimitri van Heesch ,   1997-2001