# Poco::Util

# class LayeredConfiguration

Library: Util
Package: Configuration
Header: Poco/Util/LayeredConfiguration.h

## Description

A LayeredConfiguration consists of a number of AbstractConfigurations.

When reading a configuration property in a LayeredConfiguration, all added configurations are searched, in order of their priority. Configurations with lower priority values have precedence.

When setting a property, the property is always written to the first writeable configuration (see addWriteable()). If no writeable configuration has been added to the LayeredConfiguration, and an attempt is made to set a property, a RuntimeException is thrown.

Every configuration added to the LayeredConfiguration has a priority value. The priority determines the position where the configuration is inserted, with lower priority values coming before higher priority values.

If no priority is specified, a priority of 0 is assumed.

## Inheritance

Direct Base Classes: AbstractConfiguration

All Base Classes: Poco::RefCountedObject, AbstractConfiguration

## Member Summary

Member Functions: add, addFront, addWriteable, enumerate, getRaw, highest, insert, lowest, removeConfiguration, removeRaw, setRaw

Inherited Functions: createView, duplicate, enableEvents, enumerate, eventsEnabled, expand, getBool, getDouble, getInt, getRaw, getRawString, getString, has, hasOption, hasProperty, keys, parseBool, parseInt, referenceCount, release, remove, removeRaw, setBool, setDouble, setInt, setRaw, setRawWithEvent, setString

## Nested Classes

### struct ConfigItem

## Types

### ConfigPtr

typedef Poco::AutoPtr < AbstractConfiguration > ConfigPtr;

## Constructors

### LayeredConfiguration

LayeredConfiguration();

Creates the LayeredConfiguration.

## Destructor

### ~LayeredConfiguration

~LayeredConfiguration();

## Member Functions

### add

void add(
AbstractConfiguration * pConfig
);

Adds a read-only configuration to the back of the LayeredConfiguration. The LayeredConfiguration does not take ownership of the given configuration. In other words, the configuration's reference count is incremented.

### add

void add(
AbstractConfiguration * pConfig,
bool shared
);

Adds a read-only configuration to the back of the LayeredConfiguration. If shared is false, the LayeredConfiguration takes ownership of the given configuration (and the configuration's reference count remains unchanged).

### add

void add(
AbstractConfiguration * pConfig,
int priority
);

Adds a read-only configuration to the LayeredConfiguration. The LayeredConfiguration does not take ownership of the given configuration. In other words, the configuration's reference count is incremented.

### add

void add(
AbstractConfiguration * pConfig,
int priority,
bool shared
);

Adds a read-only configuration the LayeredConfiguration. If shared is false, the LayeredConfiguration takes ownership of the given configuration (and the configuration's reference count remains unchanged).

### add

void add(
AbstractConfiguration * pConfig,
int priority,
bool writeable,
bool shared
);

Adds a configuration to the LayeredConfiguration. If shared is false, the LayeredConfiguration takes ownership of the given configuration (and the configuration's reference count remains unchanged).

### addFront

void addFront(
AbstractConfiguration * pConfig
);

Deprecated. This function is deprecated and should no longer be used.

Adds a read-only configuration to the front of the LayeredConfiguration. The LayeredConfiguration does not take ownership of the given configuration. In other words, the configuration's reference count is incremented.

### addFront

void addFront(
AbstractConfiguration * pConfig,
bool shared
);

Deprecated. This function is deprecated and should no longer be used.

Adds a read-only configuration to the front of the LayeredConfiguration. If shared is true, the LayeredConfiguration takes ownership of the given configuration.

### addWriteable

void addWriteable(
AbstractConfiguration * pConfig,
int priority
);

Adds a writeable configuration to the LayeredConfiguration. The LayeredConfiguration does not take ownership of the given configuration. In other words, the configuration's reference count is incremented.

### addWriteable

void addWriteable(
AbstractConfiguration * pConfig,
int priority,
bool shared
);

Adds a writeable configuration to the LayeredConfiguration. If shared is false, the LayeredConfiguration takes ownership of the given configuration (and the configuration's reference count remains unchanged).

### removeConfiguration

void removeConfiguration(
AbstractConfiguration * pConfig
);

Removes the given configuration from the LayeredConfiguration.

Does nothing if the given configuration is not part of the LayeredConfiguration.

### enumerate

void enumerate(
const std::string & key,
Keys & range
) const;

See also: Poco::Util::AbstractConfiguration::enumerate()

### getRaw

bool getRaw(
const std::string & key,
std::string & value
) const;

See also: Poco::Util::AbstractConfiguration::getRaw()

### highest

int highest() const;

### insert

void insert(
const ConfigItem & item
);

### lowest

int lowest() const;

### removeRaw

void removeRaw(
const std::string & key
);

See also: Poco::Util::AbstractConfiguration::removeRaw()

### setRaw

void setRaw(
const std::string & key,
const std::string & value
);

See also: Poco::Util::AbstractConfiguration::setRaw()