14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/UserDataList.h"
17#include "arcane/utils/String.h"
18#include "arcane/utils/TraceInfo.h"
19#include "arcane/utils/ArgumentException.h"
20#include "arcane/utils/IUserData.h"
37 typedef std::map<String, IUserData*> MapType;
66 Impl::MapType::const_iterator begin = m_p->m_list.begin();
67 Impl::MapType::const_iterator end = m_p->m_list.end();
68 for (; begin != end; ++begin)
69 begin->second->notifyDetach();
79 Impl::MapType::const_iterator i = m_p->m_list.find(name);
80 if (i != m_p->m_list.end())
81 throw ArgumentException(A_FUNCINFO, String::format(
"key '{0}' already exists", name));
82 m_p->m_list.insert(std::make_pair(name, ud));
92 Impl::MapType::const_iterator i = m_p->m_list.find(name);
93 if (i == m_p->m_list.end()) {
107 Impl::MapType::iterator i = m_p->m_list.find(name);
108 if (i == m_p->m_list.end()) {
111 throw ArgumentException(A_FUNCINFO, String::format(
"key '{0}' not found", name));
114 m_p->m_list.erase(i);
Exception when an argument is invalid.
Interface for user data attached to another object.
virtual void notifyAttach()=0
Method executed when the instance is attached.
virtual void notifyDetach()=0
Method executed when the instance is detached.
Unicode character string.
virtual void clear()
Removes all user data.
virtual void removeData(const String &name, bool allow_null=false)
Removes the data associated with the name name.
virtual IUserData * data(const String &name, bool allow_null=false) const
Data associated with name.
virtual void setData(const String &name, IUserData *ud)
Sets the user data associated with the name name.
~UserDataList()
Frees resources.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --