00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CONFIGUTILS_H
00009 #define CONFIGUTILS_H
00010
00011 #include "ace/Configuration.h"
00012 #include "dcps_export.h"
00013 #include "dds/DCPS/PoolAllocator.h"
00014
00015 #include <sstream>
00016 #include <cstdlib>
00017
00018 namespace OpenDDS {
00019 namespace DCPS {
00020
00021
00022 typedef OPENDDS_MAP(OPENDDS_STRING, OPENDDS_STRING) ValueMap;
00023 typedef std::pair<OPENDDS_STRING, ACE_Configuration_Section_Key> SubsectionPair;
00024 typedef OPENDDS_LIST(SubsectionPair) KeyList;
00025
00026
00027 template <typename T>
00028 bool convertToInteger(const OPENDDS_STRING& s, T& value)
00029 {
00030 #ifdef OPENDDS_SAFETY_PROFILE
00031 char* end;
00032 const long conv = std::strtol(s.c_str(), &end, 10);
00033 if (end == s.c_str()) return false;
00034 value = static_cast<T>(conv);
00035 #else
00036 std::stringstream istr(s.c_str());
00037 if (!(istr >> value) || (istr.peek() != EOF)) return false;
00038 #endif
00039 return true;
00040 }
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 OpenDDS_Dcps_Export int pullValues( ACE_Configuration_Heap& cf,
00055 const ACE_Configuration_Section_Key& key,
00056 ValueMap& values );
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 OpenDDS_Dcps_Export int processSections( ACE_Configuration_Heap& cf,
00075 const ACE_Configuration_Section_Key& key,
00076 KeyList& subsections );
00077
00078 }
00079 }
00080
00081 #endif