17#ifdef epicsExportSharedSymbols
18# define configurationEpicsExportSharedSymbols
19# undef epicsExportSharedSymbols
23#include <pv/noDefaultMethods.h>
25#include <pv/sharedPtr.h>
28#ifdef configurationEpicsExportSharedSymbols
29# define epicsExportSharedSymbols
30# undef configurationEpicsExportSharedSymbols
45class epicsShareClass Configuration
47 EPICS_NOT_COPYABLE(Configuration)
49 POINTER_DEFINITIONS(Configuration);
52 virtual ~Configuration() =0;
131 virtual void addKeys(keys_t&)
const {}
135class epicsShareClass ConfigurationMap:
public Configuration
137 EPICS_NOT_COPYABLE(ConfigurationMap)
140 properties_t properties;
141 ConfigurationMap() {}
142 ConfigurationMap(
const properties_t& p) :properties(p) {}
143 virtual ~ConfigurationMap() {}
146 virtual void addKeys(keys_t&)
const;
150class epicsShareClass ConfigurationEnviron:
public Configuration
152 EPICS_NOT_COPYABLE(ConfigurationEnviron)
154 ConfigurationEnviron() {}
155 virtual ~ConfigurationEnviron() {}
164class epicsShareClass ConfigurationStack :
public Configuration
166 EPICS_NOT_COPYABLE(ConfigurationStack)
170 virtual void addKeys(keys_t&)
const;
172 ConfigurationStack() {}
173 virtual ~ConfigurationStack() {}
174 inline void push_back(
const confs_t::value_type& conf) {
175 confs.push_back(conf);
177 inline confs_t::value_type pop_back() {
180 confs_t::value_type ret(confs.back());
184 inline size_t size()
const {
189struct epicsShareClass ConfigurationBuilder
191 ConfigurationBuilder();
192 ConfigurationBuilder& push_env();
193 ConfigurationBuilder& push_map();
194 ConfigurationBuilder& push_config(
const Configuration::shared_pointer&);
200 return _add(name, strm.
str());
202 Configuration::shared_pointer build();
205 ConfigurationMap::properties_t mymap;
206 std::tr1::shared_ptr<ConfigurationStack> stack;
213class epicsShareClass ConfigurationProvider
215 EPICS_NOT_COPYABLE(ConfigurationProvider)
217 POINTER_DEFINITIONS(ConfigurationProvider);
218 ConfigurationProvider() {}
219 virtual ~ConfigurationProvider() {}
239 EPICS_NOT_COPYABLE(ConfigurationProviderImpl)
241 ConfigurationProviderImpl() {}
245 virtual ~ConfigurationProviderImpl() {}
246 Configuration::shared_pointer getConfiguration(
const std::string &name);
247 void registerConfiguration(
const std::string &name, Configuration::shared_pointer
const & configuration);
249 epics::pvData::Mutex _mutex;
256class epicsShareClass ConfigurationFactory
258 EPICS_NOT_COPYABLE(ConfigurationFactory)
260 POINTER_DEFINITIONS(ConfigurationFactory);
271 static void registerConfiguration(
const std::string &name, Configuration::shared_pointer
const & configuration)
273 getProvider()->registerConfiguration(name, configuration);
275 static Configuration::shared_pointer getConfiguration(
const std::string& name)
277 return getProvider()->getConfiguration(name);
281 ConfigurationFactory() {};
basic_ostringstream< char > ostringstream
valarray< size_t > size() const
basic_string< char > string
basic_ostream< _CharT, _Traits > & operator<<(basic_ostream< _CharT, _Traits > &__os, const basic_string< _CharT, _Traits, _Alloc > &__str)
__string_type str() const
Lookup configuration strings from the process environment.
static ConfigurationProvider::shared_pointer getProvider()
Lazily creates configuration provider.
epics::pvData::int32 getPropertyAsInteger(const std::string &name, const epics::pvData::int32 defaultValue) const
Get the environment variable specified by name or return default value if it does not exist.
bool getPropertyAsAddress(const std::string &name, osiSockAddr *addr) const
Fetch and parse as a socket address and port number (address family set accordingly).
keys_t keys() const
Return a (partial) list of available key names.
double getPropertyAsDouble(const std::string &name, const double defaultValue) const
Get the environment variable specified by name or return default value if it does not exist.
float getPropertyAsFloat(const std::string &name, const float defaultValue) const
Get the environment variable specified by name or return default value if it does not exist.
std::string getPropertyAsString(const std::string &name, const std::string &defaultValue) const
Get the environment variable specified by name or return default value if it does not exist.
bool getPropertyAsBoolean(const std::string &name, const bool defaultValue) const
Get the environment variable specified by name or return default value if it does not exist.
virtual void registerConfiguration(const std::string &name, Configuration::shared_pointer const &configuration)=0
Register configuration.
virtual Configuration::shared_pointer getConfiguration(const std::string &name)=0
Return configuration specified by name.
Copyright - See the COPYRIGHT that is included with this distribution.