From: Joshua Brindle <method@manicmethod.com>
To: selinux@tycho.nsa.gov
Cc: sds@tycho.nsa.gov, kmacmillan@mentalrootkit.com, tmiller@tresys.com
Subject: [POLICYREP] [patch 4/7] symbol base class
Date: Tue, 22 Jan 2008 14:43:35 -0500 [thread overview]
Message-ID: <20080121160227.534155782@manicmethod.com> (raw)
In-Reply-To: 20080121160031.792610312@manicmethod.com
This adds the symbol base class and makes all symbols (types, roles, etc) inherit from it.
---
libpolicyrep/include/policyrep/conditional.hpp | 5 -
libpolicyrep/include/policyrep/mls.hpp | 16 +---
libpolicyrep/include/policyrep/object_class.hpp | 10 +--
libpolicyrep/include/policyrep/policy.hpp | 6 -
libpolicyrep/include/policyrep/rbac.hpp | 6 -
libpolicyrep/include/policyrep/symbol.hpp | 27 ++++++++
libpolicyrep/include/policyrep/te_decl.hpp | 10 ---
libpolicyrep/include/policyrep/user.hpp | 6 -
libpolicyrep/src/conditional.cpp | 21 +-----
libpolicyrep/src/mls.cpp | 78 ++++++++----------------
libpolicyrep/src/object_class.cpp | 42 ++++--------
libpolicyrep/src/policy.cpp | 20 +-----
libpolicyrep/src/rbac.cpp | 27 +++-----
libpolicyrep/src/symbol.cpp | 71 +++++++++++++++++++++
libpolicyrep/src/te_decl.cpp | 52 +++++-----------
libpolicyrep/src/user.cpp | 27 +++-----
16 files changed, 206 insertions(+), 218 deletions(-)
--- policyrep.new.orig/libpolicyrep/include/policyrep/conditional.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/conditional.hpp
@@ -4,6 +4,7 @@
#define __conditional_hpp__
#include <policyrep/policy_base.hpp>
+#include <policyrep/symbol.hpp>
#include <list>
@@ -39,7 +40,7 @@ namespace policyrep
*/
struct CondBoolImpl;
- class CondBool : public Node
+ class CondBool : public Symbol
{
public:
CondBool();
@@ -48,8 +49,6 @@ namespace policyrep
virtual ~CondBool();
virtual void operator=(const CondBool& other);
- virtual void set_name(const std::string& name);
- virtual const std::string& get_name() const;
virtual void set_default_value(bool v);
virtual bool get_default_value() const;
--- policyrep.new.orig/libpolicyrep/include/policyrep/mls.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/mls.hpp
@@ -4,6 +4,7 @@
#define __mls_hpp__
#include <policyrep/policy_base.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -13,7 +14,7 @@ namespace policyrep
//
struct SensitivityImpl;
- class Sensitivity : public Node
+ class Sensitivity : public Symbol
{
public:
Sensitivity();
@@ -30,9 +31,6 @@ namespace policyrep
aliases().insert(begin, end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
virtual StringSet& aliases();
protected:
virtual void do_output(std::ostream& o, const OutputFormatter& op) const;
@@ -74,7 +72,7 @@ namespace policyrep
//
struct CategoryImpl;
- class Category : public Node
+ class Category : public Symbol
{
public:
Category();
@@ -91,9 +89,6 @@ namespace policyrep
aliases().insert(begin, end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
virtual StringSet& aliases();
protected:
virtual void do_output(std::ostream& o, const OutputFormatter& op) const;
@@ -107,7 +102,7 @@ namespace policyrep
//
struct LevelImpl;
- class Level : public Node
+ class Level : public Symbol
{
public:
Level();
@@ -124,9 +119,6 @@ namespace policyrep
categories().insert(begin, end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
virtual StringSet& categories();
virtual void do_output_brief(std::ostream& o, const OutputFormatter& op) const;
protected:
--- policyrep.new.orig/libpolicyrep/include/policyrep/object_class.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/object_class.hpp
@@ -4,6 +4,7 @@
#define __object_class_hpp__
#include <policyrep/policy_base.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -13,7 +14,7 @@ namespace policyrep
//
struct CommonPermsImpl;
- class CommonPerms : public Node
+ class CommonPerms : public Symbol
{
public:
CommonPerms();
@@ -29,8 +30,6 @@ namespace policyrep
perms().insert(perms_begin, perms_end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
virtual StringSet& perms();
protected:
@@ -46,10 +45,11 @@ namespace policyrep
//
struct ObjectClassImpl;
- class ObjectClass : public Node
+ class ObjectClass : public Symbol
{
public:
ObjectClass();
+ ObjectClass(const std::string& name);
ObjectClass(const std::string& name, const std::string& commons);
ObjectClass(const ObjectClass& other);
virtual ~ObjectClass();
@@ -65,8 +65,6 @@ namespace policyrep
perms().insert(perms_begin, perms_end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
virtual StringSet& perms();
virtual const std::string& get_common_perms() const;
virtual void set_common_perms(const std::string& name);
--- policyrep.new.orig/libpolicyrep/include/policyrep/policy.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/policy.hpp
@@ -12,6 +12,7 @@
#include <policyrep/user.hpp>
#include <policyrep/mls.hpp>
#include <policyrep/optional.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -69,7 +70,7 @@ namespace policyrep
//
struct InitialSidImpl;
- class InitialSid : public Node
+ class InitialSid : public Symbol
{
public:
InitialSid();
@@ -78,9 +79,6 @@ namespace policyrep
virtual ~InitialSid();
virtual void operator=(const InitialSid& other);
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
protected:
virtual void do_output(std::ostream& o, const OutputFormatter& op) const;
void copy(const InitialSid& other);
--- policyrep.new.orig/libpolicyrep/include/policyrep/rbac.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/rbac.hpp
@@ -4,6 +4,7 @@
#define __role_hpp__
#include <policyrep/policy_base.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -13,7 +14,7 @@ namespace policyrep
//
struct RoleImpl;
- class Role : public Node
+ class Role : public Symbol
{
public:
Role();
@@ -30,9 +31,6 @@ namespace policyrep
types().insert(types_begin, end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
virtual StringSet& types();
protected:
virtual void do_output(std::ostream& o, const OutputFormatter& op) const;
--- /dev/null
+++ policyrep.new/libpolicyrep/include/policyrep/symbol.hpp
@@ -0,0 +1,27 @@
+/* Author: Jeremy A. Mowery <jmowery@tresys.com> */
+
+#ifndef __symbol_hpp__
+#define __symbol_hpp__
+
+#include <policyrep/policy_base.hpp>
+
+namespace policyrep
+{
+ struct SymbolImpl;
+ class Symbol : public Node
+ {
+ public:
+ typedef boost::shared_ptr<Symbol> Ptr;
+ Symbol();
+ Symbol(const std::string & name);
+ Symbol(const Symbol & other);
+ virtual ~Symbol();
+ const std::string & get_name() const;
+ std::string& set_name(const std::string & name);
+ virtual Symbol & operator=(const Symbol & other);
+ private:
+ SymbolImpl * _symbol_impl;
+ };
+}
+
+#endif /* __symbol_hpp__ */
--- policyrep.new.orig/libpolicyrep/include/policyrep/te_decl.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/te_decl.hpp
@@ -4,6 +4,7 @@
#define __te_decl_hpp__
#include <policyrep/policy_base.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -13,7 +14,7 @@ namespace policyrep
//
struct TypeImpl;
- class Type : public Node
+ class Type : public Symbol
{
public:
Type();
@@ -40,9 +41,6 @@ namespace policyrep
aliases().insert(aliases_begin, aliases_end);
}
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
-
virtual StringSet& aliases();
virtual StringSet& attributes();
protected:
@@ -58,7 +56,7 @@ namespace policyrep
//
struct AttributeImpl;
- class Attribute : public Node
+ class Attribute : public Symbol
{
public:
Attribute();
@@ -67,8 +65,6 @@ namespace policyrep
virtual ~Attribute();
virtual void operator=(const Attribute& other);
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
protected:
virtual void do_output(std::ostream& o, const OutputFormatter& op) const;
virtual void copy(const Attribute& other);
--- policyrep.new.orig/libpolicyrep/include/policyrep/user.hpp
+++ policyrep.new/libpolicyrep/include/policyrep/user.hpp
@@ -5,6 +5,7 @@
#include <policyrep/policy_base.hpp>
#include <policyrep/mls.hpp>
+#include <policyrep/symbol.hpp>
namespace policyrep
{
@@ -14,7 +15,7 @@ namespace policyrep
//
struct UserImpl;
- class User : public Node
+ class User : public Symbol
{
public:
User();
@@ -43,9 +44,6 @@ namespace policyrep
set_range_high(high);
}
-
- virtual const std::string& get_name() const;
- virtual void set_name(const std::string& name);
virtual void set_level(LevelPtr level);
virtual void set_range_low(LevelPtr low);
virtual void set_range_high(LevelPtr high);
--- policyrep.new.orig/libpolicyrep/src/conditional.cpp
+++ policyrep.new/libpolicyrep/src/conditional.cpp
@@ -33,23 +33,21 @@ namespace policyrep
struct CondBoolImpl
{
- std::string name;
bool default_value;
};
- CondBool::CondBool() : impl(new CondBoolImpl)
+ CondBool::CondBool() : Symbol(), impl(new CondBoolImpl)
{
}
CondBool::CondBool(const std::string& name, bool v)
- : impl(new CondBoolImpl)
+ :Symbol(name), impl(new CondBoolImpl)
{
- impl->name = name;
impl->default_value = v;
}
- CondBool::CondBool(const CondBool& other) : Node(), impl(new CondBoolImpl)
+ CondBool::CondBool(const CondBool& other) : Symbol(other), impl(new CondBoolImpl)
{
copy(other);
}
@@ -61,19 +59,10 @@ namespace policyrep
void CondBool::operator=(const CondBool& other)
{
+ Symbol::operator=(other);
copy(other);
}
- void CondBool::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
- const std::string& CondBool::get_name() const
- {
- return impl->name;
- }
-
void CondBool::set_default_value(bool v)
{
impl->default_value = v;
@@ -86,7 +75,7 @@ namespace policyrep
void CondBool::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "bool " << impl->name << " ";
+ o << "bool " << get_name() << " ";
if (impl->default_value)
o << "true;";
else
--- policyrep.new.orig/libpolicyrep/src/mls.cpp
+++ policyrep.new/libpolicyrep/src/mls.cpp
@@ -29,7 +29,6 @@ namespace policyrep
struct SensitivityImpl
{
- std::string name;
StringSet aliases;
};
@@ -38,18 +37,22 @@ namespace policyrep
impl = new SensitivityImpl;
}
- Sensitivity::Sensitivity() { init(); }
+ Sensitivity::Sensitivity()
+ :Symbol()
+ {
+ impl = new SensitivityImpl;
+ }
Sensitivity::Sensitivity(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new SensitivityImpl;
}
Sensitivity::Sensitivity(const Sensitivity& other)
- : Node()
+ :Symbol(other)
{
- init();
+ impl = new SensitivityImpl;
*impl = *other.impl;
}
@@ -60,16 +63,6 @@ namespace policyrep
*impl = *other.impl;
}
- const std::string& Sensitivity::get_name() const
- {
- return impl->name;
- }
-
- void Sensitivity::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& Sensitivity::aliases()
{
return impl->aliases;
@@ -77,7 +70,7 @@ namespace policyrep
void Sensitivity::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "sensitivity " << impl->name;
+ o << "sensitivity " << get_name();
if (!impl->aliases.empty()) {
o << " alias ";
bracket_output_container(o, impl->aliases.begin(),
@@ -137,7 +130,6 @@ namespace policyrep
struct CategoryImpl
{
- std::string name;
StringSet aliases;
};
@@ -146,16 +138,20 @@ namespace policyrep
impl = new CategoryImpl;
}
- Category::Category() { init(); }
+ Category::Category()
+ :Symbol()
+ {
+ impl = new CategoryImpl;
+ }
Category::Category(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new CategoryImpl;
}
Category::Category(const Category& other)
- : Node()
+ :Symbol(other)
{
init();
*impl = *other.impl;
@@ -168,16 +164,6 @@ namespace policyrep
*impl = *other.impl;
}
- const std::string& Category::get_name() const
- {
- return impl->name;
- }
-
- void Category::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& Category::aliases()
{
return impl->aliases;
@@ -185,7 +171,7 @@ namespace policyrep
void Category::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "category " << impl->name;
+ o << "category " << get_name();
if (!impl->aliases.empty()) {
o << " alias ";
bracket_output_container(o, impl->aliases.begin(),
@@ -209,18 +195,22 @@ namespace policyrep
impl = new LevelImpl;
}
- Level::Level() { init(); }
+ Level::Level()
+ :Symbol()
+ {
+ impl = new LevelImpl;
+ }
Level::Level(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new LevelImpl;
}
Level::Level(const Level& other)
- : Node()
+ :Symbol(other)
{
- init();
+ impl = new LevelImpl;
*impl = *other.impl;
}
@@ -233,16 +223,6 @@ namespace policyrep
*impl = *other.impl;
}
- const std::string& Level::get_name() const
- {
- return impl->name;
- }
-
- void Level::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& Level::categories()
{
return impl->categories;
@@ -250,7 +230,7 @@ namespace policyrep
void Level::do_output_brief(std::ostream& o, const OutputFormatter& op) const
{
- o << impl->name;
+ o << get_name();
if (!impl->categories.empty()) {
o << ":";
bracket_output_container(o, impl->categories.begin(),
--- /dev/null
+++ policyrep.new/libpolicyrep/src/symbol.cpp
@@ -0,0 +1,71 @@
+/*
+ * Author : Jeremy A. Mowery <jmowery@tresys.com>
+ *
+ * Copyright (C) 2007 Tresys Technology, LLC.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <policyrep/symbol.hpp>
+
+namespace policyrep
+{
+ struct SymbolImpl
+ {
+ std::string name;
+ };
+
+ Symbol::Symbol()
+ :Node()
+ {
+ _symbol_impl = new SymbolImpl;
+ }
+
+ Symbol::Symbol(const std::string & name)
+ :Node()
+ {
+ _symbol_impl = new SymbolImpl;
+ _symbol_impl->name = name;
+ }
+
+ Symbol::Symbol(const Symbol & other)
+ :Node(other)
+ {
+ _symbol_impl = new SymbolImpl;
+ *_symbol_impl = *other._symbol_impl;
+ }
+
+ Symbol::~Symbol()
+ {
+ delete _symbol_impl;
+ }
+
+ const std::string & Symbol::get_name() const
+ {
+ return _symbol_impl->name;
+ }
+
+ std::string& Symbol::set_name(const std::string & name)
+ {
+ return _symbol_impl->name = name;
+ }
+
+ Symbol & Symbol::operator=(const Symbol & other)
+ {
+ Node::operator=(other);
+ *_symbol_impl = *other._symbol_impl;
+ return *this;
+ }
+}
--- policyrep.new.orig/libpolicyrep/src/object_class.cpp
+++ policyrep.new/libpolicyrep/src/object_class.cpp
@@ -28,7 +28,6 @@ namespace policyrep {
struct CommonPermsImpl
{
- std::string name;
StringSet perms;
};
@@ -37,10 +36,10 @@ namespace policyrep {
CommonPerms::CommonPerms() { init(); }
CommonPerms::CommonPerms(const CommonPerms& other)
- : Node()
+ :Symbol(other)
{
- init();
- copy(other);
+ impl = new CommonPermsImpl;
+ *impl = *other.impl;
}
CommonPerms::~CommonPerms()
@@ -53,16 +52,6 @@ namespace policyrep {
copy(other);
}
- const std::string& CommonPerms::get_name() const
- {
- return impl->name;
- }
-
- void CommonPerms::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& CommonPerms::perms()
{
return impl->perms;
@@ -70,7 +59,7 @@ namespace policyrep {
void CommonPerms::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "common " << impl->name << " ";
+ o << "common " << get_name() << " ";
output_set_space(o, impl->perms);
}
@@ -86,7 +75,6 @@ namespace policyrep {
struct ObjectClassImpl
{
- std::string name;
StringSet perms;
std::string common_perms;
};
@@ -95,15 +83,21 @@ namespace policyrep {
ObjectClass::ObjectClass() { init(); }
+ ObjectClass::ObjectClass(const std::string &name)
+ :Symbol(name)
+ {
+ impl = new ObjectClassImpl;
+ }
+
ObjectClass::ObjectClass(const std::string& name, const std::string& commons)
+ :Symbol(name)
{
init();
- set_name(name);
set_common_perms(commons);
}
ObjectClass::ObjectClass(const ObjectClass& other)
- : Node()
+ :Symbol(other)
{
init();
copy(other);
@@ -119,16 +113,6 @@ namespace policyrep {
copy(other);
}
- const std::string& ObjectClass::get_name() const
- {
- return impl->name;
- }
-
- void ObjectClass::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& ObjectClass::perms()
{
return impl->perms;
@@ -146,7 +130,7 @@ namespace policyrep {
void ObjectClass::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "class " << impl->name;
+ o << "class " << get_name();
if (impl->common_perms != "")
o << " inherits " << impl->common_perms;
if (!impl->perms.empty()) {
--- policyrep.new.orig/libpolicyrep/src/policy.cpp
+++ policyrep.new/libpolicyrep/src/policy.cpp
@@ -148,20 +148,18 @@ namespace policyrep
struct InitialSidImpl
{
- std::string name;
};
InitialSid::InitialSid()
- : impl(new InitialSidImpl) { }
+ :Symbol(), impl(new InitialSidImpl) { }
InitialSid::InitialSid(const std::string& name)
- : impl(new InitialSidImpl)
+ :Symbol(name), impl(new InitialSidImpl)
{
- impl->name = name;
}
InitialSid::InitialSid(const InitialSid& other)
- : Node(), impl(new InitialSidImpl)
+ : Symbol(other), impl(new InitialSidImpl)
{
copy(other);
}
@@ -173,19 +171,9 @@ namespace policyrep
copy(other);
}
- const std::string& InitialSid::get_name() const
- {
- return impl->name;
- }
-
- void InitialSid::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
void InitialSid::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "sid " << impl->name;
+ o << "sid " << get_name();
}
void InitialSid::copy(const InitialSid& other)
--- policyrep.new.orig/libpolicyrep/src/rbac.cpp
+++ policyrep.new/libpolicyrep/src/rbac.cpp
@@ -29,7 +29,6 @@ namespace policyrep
struct RoleImpl
{
- std::string name;
StringSet types;
};
@@ -38,18 +37,22 @@ namespace policyrep
impl = new RoleImpl;
}
- Role::Role() { init(); }
+ Role::Role()
+ :Symbol()
+ {
+ impl = new RoleImpl;
+ }
Role::Role(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new RoleImpl;
}
Role::Role(const Role& other)
- : Node()
+ :Symbol(other)
{
- init();
+ impl = new RoleImpl;
*impl = *other.impl;
}
@@ -60,16 +63,6 @@ namespace policyrep
*impl = *other.impl;
}
- const std::string& Role::get_name() const
- {
- return impl->name;
- }
-
- void Role::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& Role::types()
{
return impl->types;
@@ -77,7 +70,7 @@ namespace policyrep
void Role::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "role " << impl->name;
+ o << "role " << get_name();
if (!impl->types.empty()) {
o << " types ";
output_set_comma(o, impl->types);
--- policyrep.new.orig/libpolicyrep/src/te_decl.cpp
+++ policyrep.new/libpolicyrep/src/te_decl.cpp
@@ -31,7 +31,6 @@ namespace policyrep
struct TypeImpl
{
- std::string name;
StringSet attributes;
StringSet aliases;
};
@@ -41,19 +40,23 @@ namespace policyrep
impl = new TypeImpl;
}
- Type::Type() { init(); }
+ Type::Type()
+ :Symbol()
+ {
+ impl = new TypeImpl;
+ }
Type::Type(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new TypeImpl;
}
Type::Type(const Type& other)
- : Node()
+ :Symbol(other)
{
- init();
- copy(other);
+ impl = new TypeImpl;
+ *impl = *other.impl;
}
Type::~Type() { delete impl; }
@@ -63,16 +66,6 @@ namespace policyrep
copy(other);
}
- const std::string& Type::get_name() const
- {
- return impl->name;
- }
-
- void Type::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& Type::aliases()
{
return impl->aliases;
@@ -85,7 +78,7 @@ namespace policyrep
void Type::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "type " << impl->name;
+ o << "type " << get_name();
if (!impl->aliases.empty()) {
o << " alias ";
output_set_space(o, impl->aliases);
@@ -109,15 +102,16 @@ namespace policyrep
struct AttributeImpl
{
- std::string name;
};
- Attribute::Attribute() : impl(new AttributeImpl) { }
+ Attribute::Attribute()
+ :Symbol(), impl(new AttributeImpl)
+ {
+ }
Attribute::Attribute(const std::string& name)
- : impl(new AttributeImpl)
+ :Symbol(name), impl(new AttributeImpl)
{
- impl->name = name;
}
Attribute::~Attribute()
@@ -126,7 +120,7 @@ namespace policyrep
}
Attribute::Attribute(const Attribute& other)
- : Node(), impl(new AttributeImpl)
+ :Symbol(other), impl(new AttributeImpl)
{
copy(other);
}
@@ -136,19 +130,9 @@ namespace policyrep
copy(other);
}
- const std::string& Attribute::get_name() const
- {
- return impl->name;
- }
-
- void Attribute::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
void Attribute::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "attribute " << impl->name << ";";
+ o << "attribute " << get_name() << ";";
}
void Attribute::copy(const Attribute& other)
--- policyrep.new.orig/libpolicyrep/src/user.cpp
+++ policyrep.new/libpolicyrep/src/user.cpp
@@ -30,7 +30,6 @@ namespace policyrep
struct UserImpl
{
- std::string name;
LevelPtr level;
RangePtr range;
StringSet roles;
@@ -41,18 +40,22 @@ namespace policyrep
impl = new UserImpl;
}
- User::User() { init(); }
+ User::User()
+ :Symbol()
+ {
+ impl = new UserImpl;
+ }
User::User(const std::string& name)
+ :Symbol(name)
{
- init();
- impl->name = name;
+ impl = new UserImpl;
}
User::User(const User& other)
- : Node()
+ :Symbol(other)
{
- init();
+ impl = new UserImpl;
*impl = *other.impl;
}
@@ -65,16 +68,6 @@ namespace policyrep
*impl = *other.impl;
}
- const std::string& User::get_name() const
- {
- return impl->name;
- }
-
- void User::set_name(const std::string& name)
- {
- impl->name = name;
- }
-
StringSet& User::roles()
{
return impl->roles;
@@ -99,7 +92,7 @@ namespace policyrep
void User::do_output(std::ostream& o, const OutputFormatter& op) const
{
- o << "user " << impl->name;
+ o << "user " << get_name();
if (!impl->roles.empty()) {
o << " roles ";
output_set_comma(o, impl->roles);
--
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
next prev parent reply other threads:[~2008-01-22 19:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-22 19:43 [POLICYREP] [patch 0/7] various cleanups and base symbol class Joshua Brindle
2008-01-22 19:43 ` [POLICYREP] [patch 1/7] remove makefile targets that dont build Joshua Brindle
2008-01-22 19:43 ` [POLICYREP] [patch 2/7] remove policy_package Joshua Brindle
2008-01-22 19:43 ` [POLICYREP] [patch 3/7] remove duplicated optional.hpp data Joshua Brindle
2008-01-22 19:43 ` Joshua Brindle [this message]
2008-01-22 19:43 ` [POLICYREP] [patch 5/7] fix operator= calls to return pointer Joshua Brindle
2008-01-22 19:43 ` [POLICYREP] [patch 6/7] add negset to idset Joshua Brindle
2008-01-22 19:43 ` [POLICYREP] [patch 7/7] remove unused copy/init functions Joshua Brindle
2008-01-22 21:29 ` Joshua Brindle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080121160227.534155782@manicmethod.com \
--to=method@manicmethod.com \
--cc=kmacmillan@mentalrootkit.com \
--cc=sds@tycho.nsa.gov \
--cc=selinux@tycho.nsa.gov \
--cc=tmiller@tresys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.