/* core/label.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CORE_LABEL_H__ #define __INCLUDED_CORE_LABEL_H__ #include #include "auxiliary/functions.h" namespace core { /** * @brief baseclass for objects with a name and a label */ class Label { public: inline Label() { } inline ~Label() { labelstr.clear(); namestr.clear(); } /* --- inspectors ------------------------------------------------- */ inline const std::string & label() const { return labelstr; } inline const std::string & name() const { return namestr; } /* --- mutators --------------------------------------------------- */ inline void set_label(const std::string & label) { labelstr.assign(label); aux::to_label(labelstr); } inline void set_label(const char *label) { if (label) { labelstr.assign(label); aux::to_label(labelstr); } else { labelstr.clear(); } } inline void set_name(const std::string & name) { namestr.assign(name); } inline void set_name(const char *name) { if (name) namestr.assign(name); else namestr.clear(); } private: std::string labelstr; std::string namestr; }; // class Label } // namespace core #endif // __INCLUDED_CORE_LABEL_H__