170 std::string_view _name,
173 std::string_view _content = {});
177 void save(std::ostream& _stream,
size_t _level);
181 std::string_view _name,
182 std::string_view _content = {},
186 template<
typename T,
typename = std::enable_if_t<!std::is_convertible_v<T, std::
string_view>>>
192 void addAttribute(std::string_view _key, std::string_view _value);
194 void removeAttribute(std::string_view _key);
196 void setAttribute(std::string_view _key, std::string_view _value);
198 template<
typename T,
typename = std::enable_if_t<!std::is_convertible_v<T, std::
string_view>>>
204 void addContent(std::string_view _content);
206 template<
typename T,
typename = std::enable_if_t<!std::is_convertible_v<T, std::
string_view>>>
212 void setContent(std::string_view _content);
216 bool findAttribute(std::string_view _name, std::string& _value);
217 std::string_view findAttribute(std::string_view _name);
219 const std::string& getName()
const;
221 const std::string& getContent()
const;
231 std::unique_ptr<Element> createCopy();
234#ifndef MYGUI_DONT_USE_OBSOLETE
238 "use : template <typename T> void Element::addAttribute(const std::string &_key, const T& _value)")
239 void addAttributes(std::string_view _key, const T& _value)
241 addAttribute<T>(_key, _value);
243 MYGUI_OBSOLETE(
"use : void Element::addAttribute(std::string_view _key, std::string_view _value)")
244 void addAttributes(std::string_view _key, std::string_view _value)
246 addAttribute(_key, _value);
250 MYGUI_OBSOLETE(
"use : template <typename T> void Element::addContent(const T& _content)")
251 void addBody(const T& _content)
253 addContent<T>(_content);
255 MYGUI_OBSOLETE(
"use : void Element::addContent(std::string_view _content)")
256 void addBody(std::string_view _content)
258 addContent(_content);
261 MYGUI_OBSOLETE(
"use : template <typename T> void Element::setContent(const T& _content)")
262 void setBody(const T& _content)
264 setContent<T>(_content);
266 MYGUI_OBSOLETE(
"use : void Element::setContent(std::string_view _content)")
267 void setBody(std::string_view _content)
269 setContent(_content);
273 const std::
string& getBody()
const
277 MYGUI_OBSOLETE(
"use : ElementEnumerator Element::getElementEnumerator()")
280 return getElementEnumerator();
287 std::string mContent;
301 bool open(
const std::string& _filename);
304 bool open(
const std::wstring& _filename);
307 bool open(std::istream& _stream);
309 bool open(
const UString& _filename);
314 bool save(
const std::string& _filename);
317 bool save(
const std::wstring& _filename);
319 bool save(std::ostream& _stream);
321 bool save(
const UString& _filename);
325 std::string getLastError()
const;
327 void clearLastError();
329 ElementPtr createDeclaration(std::string_view _version =
"1.0", std::string_view _encoding =
"UTF-8");
330 ElementPtr createRoot(std::string_view _name);
335#ifndef MYGUI_DONT_USE_OBSOLETE
338 "use : ElementPtr Document::createDeclaration(std::string_view _version, std::string_view _encoding)")
339 ElementPtr createInfo(std::string_view _version = "1.0", std::string_view _encoding = "UTF-8")
341 return createDeclaration(_version, _encoding);
347 void setLastFileError(std::string_view _filename);
348 void setLastFileError(
const std::wstring& _filename);
350 bool parseTag(
ElementPtr& _currentNode, std::string _content);
352 bool checkPair(std::string& _key, std::string& _value);
354 bool parseLine(std::string& _line,
ElementPtr& _element);
357 size_t find(std::string_view _text,
char _char,
size_t _start = 0);
359 void clearDeclaration();
363 std::unique_ptr<Element> mRoot;
364 std::unique_ptr<Element> mDeclaration;
366 std::string mLastErrorFile;