author | Michael Krelin <hacker@klever.net> | 2008-03-03 14:58:09 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-03-03 14:58:09 (UTC) |
commit | 0182b9dee269f1a8f3fc0794bfdf4a143fa1b5be (patch) (side-by-side diff) | |
tree | 0e435d48a9d2b94ff309c8fea2d416e0e14d8b2a | |
parent | 5fd5ecad8c2bd1e8846c11fa9b281f0f4ab8a4a7 (diff) | |
download | libopkele-0182b9dee269f1a8f3fc0794bfdf4a143fa1b5be.zip libopkele-0182b9dee269f1a8f3fc0794bfdf4a143fa1b5be.tar.gz libopkele-0182b9dee269f1a8f3fc0794bfdf4a143fa1b5be.tar.bz2 |
added append_to() to basic_openid_message
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | include/opkele/types.h | 1 | ||||
-rw-r--r-- | lib/openid_message.cc | 9 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h index af7fb1a..ffb9afb 100644 --- a/include/opkele/types.h +++ b/include/opkele/types.h @@ -124,16 +124,17 @@ namespace opkele { typedef util::forward_iterator_proxy< string,const string&,const string* > fields_iterator; basic_openid_message() { } virtual ~basic_openid_message() { } basic_openid_message(const basic_openid_message& x); void copy_to(basic_openid_message& x) const; + void append_to(basic_openid_message& x) const; virtual bool has_field(const string& n) const = 0; virtual const string& get_field(const string& n) const = 0; virtual bool has_ns(const string& uri) const; virtual string get_ns(const string& uri) const; virtual fields_iterator fields_begin() const = 0; diff --git a/lib/openid_message.cc b/lib/openid_message.cc index 4b9179b..e244f43 100644 --- a/lib/openid_message.cc +++ b/lib/openid_message.cc @@ -11,28 +11,31 @@ namespace opkele { using std::unary_function; struct __om_copier : public unary_function<const string&,void> { public: const basic_openid_message& from; basic_openid_message& to; __om_copier(basic_openid_message& t,const basic_openid_message& f) - : from(f), to(t) { - to.reset_fields(); - } + : from(f), to(t) { } result_type operator()(argument_type f) { to.set_field(f,from.get_field(f)); } }; basic_openid_message::basic_openid_message(const basic_openid_message& x) { x.copy_to(*this); } void basic_openid_message::copy_to(basic_openid_message& x) const { + x.reset_fields(); + for_each(fields_begin(),fields_end(), + __om_copier(x,*this) ); + } + void basic_openid_message::append_to(basic_openid_message& x) const { for_each(fields_begin(),fields_end(), __om_copier(x,*this) ); } struct __om_ns_finder : public unary_function<const string&,bool> { public: const basic_openid_message& om; const string& uri; |