// // Attributes.cpp // // $Id: //poco/1.4/CppParser/src/Attributes.cpp#2 $ // // Library: CppParser // Package: Attributes // Module: Attributes // // Copyright (c) 2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #include "Poco/CppParser/Attributes.h" #include "Poco/NumberParser.h" #include "Poco/Exception.h" #include using Poco::NumberParser; namespace Poco { namespace CppParser { Attributes::Attributes() { } Attributes::Attributes(const Attributes& attrs) { _map = attrs._map; } Attributes::~Attributes() { } Attributes& Attributes::operator = (const Attributes& attrs) { AttrMap map(attrs._map); std::swap(_map, map); return *this; } bool Attributes::has(const std::string& name) const { return _map.find(name) != _map.end(); } std::string Attributes::getString(const std::string& name) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return it->second; else throw Poco::NotFoundException(name); } std::string Attributes::getString(const std::string& name, const std::string& defaultValue) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return it->second; else return defaultValue; } int Attributes::getInt(const std::string& name) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return NumberParser::parse(it->second); else throw Poco::NotFoundException(name); } int Attributes::getInt(const std::string& name, int defaultValue) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return NumberParser::parse(it->second); else return defaultValue; } bool Attributes::getBool(const std::string& name) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return it->second != "false"; else throw Poco::NotFoundException(name); } bool Attributes::getBool(const std::string& name, bool defaultValue) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return it->second != "false"; else return defaultValue; } void Attributes::set(const std::string& name, const std::string& value) { _map[name] = value; } void Attributes::remove(const std::string& name) { AttrMap::iterator it = _map.find(name); if (it != _map.end()) _map.erase(it); } const std::string& Attributes::operator [] (const std::string& name) const { AttrMap::const_iterator it = _map.find(name); if (it != _map.end()) return it->second; else throw Poco::NotFoundException(name); } std::string& Attributes::operator [] (const std::string& name) { return _map[name]; } void Attributes::clear() { _map.clear(); } } } // namespace Poco::CppParser