@@ -77,6 +77,7 @@ class Circle;
7777class CustomShape ;
7878class Image ;
7979
80+ // / @brief Collection of element types.
8081enum class ElementType {
8182 none,
8283
@@ -113,6 +114,7 @@ enum class ElementType {
113114 group,
114115};
115116
117+ // / @brief Collection of anchor types.
116118enum class AnchorType {
117119 as_char,
118120 at_char,
@@ -121,12 +123,14 @@ enum class AnchorType {
121123 at_paragraph,
122124};
123125
126+ // / @brief Collection of value types.
124127enum class ValueType {
125128 unknown,
126129 string,
127130 float_number,
128131};
129132
133+ // / @brief Represents an element in a document.
130134class Element {
131135public:
132136 Element ();
@@ -175,9 +179,10 @@ class Element {
175179 const internal::abstract::Document *m_document{nullptr };
176180 internal::abstract::Element *m_element{nullptr };
177181
178- bool exists_ () const ;
182+ [[nodiscard]] bool exists_ () const ;
179183};
180184
185+ // / @brief Represents an iterator for elements in a document.
181186class ElementIterator {
182187public:
183188 using value_type = Element;
@@ -202,9 +207,10 @@ class ElementIterator {
202207 const internal::abstract::Document *m_document{nullptr };
203208 internal::abstract::Element *m_element{nullptr };
204209
205- bool exists_ () const ;
210+ [[nodiscard]] bool exists_ () const ;
206211};
207212
213+ // / @brief Represents a range of elements in a document.
208214class ElementRange {
209215public:
210216 ElementRange ();
@@ -219,6 +225,7 @@ class ElementRange {
219225 ElementIterator m_end;
220226};
221227
228+ // / @brief Represents a typed element in a document.
222229template <typename T> class TypedElement : public Element {
223230public:
224231 TypedElement () = default ;
@@ -238,9 +245,10 @@ template <typename T> class TypedElement : public Element {
238245protected:
239246 T *m_element;
240247
241- bool exists_ () const { return m_element != nullptr ; }
248+ [[nodiscard]] bool exists_ () const { return m_element != nullptr ; }
242249};
243250
251+ // / @brief Represents a root element in a document.
244252class TextRoot final : public TypedElement<internal::abstract::TextRoot> {
245253public:
246254 using TypedElement::TypedElement;
@@ -250,6 +258,7 @@ class TextRoot final : public TypedElement<internal::abstract::TextRoot> {
250258 [[nodiscard]] MasterPage first_master_page () const ;
251259};
252260
261+ // / @brief Represents a slide element in a document.
253262class Slide final : public TypedElement<internal::abstract::Slide> {
254263public:
255264 using TypedElement::TypedElement;
@@ -261,6 +270,7 @@ class Slide final : public TypedElement<internal::abstract::Slide> {
261270 [[nodiscard]] MasterPage master_page () const ;
262271};
263272
273+ // / @brief Represents a sheet element in a document.
264274class Sheet final : public TypedElement<internal::abstract::Sheet> {
265275public:
266276 using TypedElement::TypedElement;
@@ -278,6 +288,7 @@ class Sheet final : public TypedElement<internal::abstract::Sheet> {
278288 [[nodiscard]] ElementRange shapes () const ;
279289};
280290
291+ // / @brief Represents a sheet column element in a document.
281292class SheetColumn final : public TypedElement<internal::abstract::Sheet> {
282293public:
283294 SheetColumn () = default ;
@@ -290,6 +301,7 @@ class SheetColumn final : public TypedElement<internal::abstract::Sheet> {
290301 std::uint32_t m_column{};
291302};
292303
304+ // / @brief Represents a sheet row element in a document.
293305class SheetRow final : public TypedElement<internal::abstract::Sheet> {
294306public:
295307 SheetRow () = default ;
@@ -302,6 +314,7 @@ class SheetRow final : public TypedElement<internal::abstract::Sheet> {
302314 std::uint32_t m_row{};
303315};
304316
317+ // / @brief Represents a sheet cell element in a document.
305318class SheetCell final : public TypedElement<internal::abstract::SheetCell> {
306319public:
307320 SheetCell () = default ;
@@ -316,11 +329,12 @@ class SheetCell final : public TypedElement<internal::abstract::SheetCell> {
316329 [[nodiscard]] TableCellStyle style () const ;
317330
318331private:
319- internal::abstract::Sheet *m_sheet;
332+ internal::abstract::Sheet *m_sheet{} ;
320333 std::uint32_t m_column{};
321334 std::uint32_t m_row{};
322335};
323336
337+ // / @brief Represents a page element in a document.
324338class Page final : public TypedElement<internal::abstract::Page> {
325339public:
326340 using TypedElement::TypedElement;
@@ -332,20 +346,23 @@ class Page final : public TypedElement<internal::abstract::Page> {
332346 [[nodiscard]] MasterPage master_page () const ;
333347};
334348
349+ // / @brief Represents a master page element in a document.
335350class MasterPage final : public TypedElement<internal::abstract::MasterPage> {
336351public:
337352 using TypedElement::TypedElement;
338353
339354 [[nodiscard]] PageLayout page_layout () const ;
340355};
341356
357+ // / @brief Represents a line break element in a document.
342358class LineBreak final : public TypedElement<internal::abstract::LineBreak> {
343359public:
344360 using TypedElement::TypedElement;
345361
346362 [[nodiscard]] TextStyle style () const ;
347363};
348364
365+ // / @brief Represents a paragraph element in a document.
349366class Paragraph final : public TypedElement<internal::abstract::Paragraph> {
350367public:
351368 using TypedElement::TypedElement;
@@ -354,13 +371,15 @@ class Paragraph final : public TypedElement<internal::abstract::Paragraph> {
354371 [[nodiscard]] TextStyle text_style () const ;
355372};
356373
374+ // / @brief Represents a span element in a document.
357375class Span final : public TypedElement<internal::abstract::Span> {
358376public:
359377 using TypedElement::TypedElement;
360378
361379 [[nodiscard]] TextStyle style () const ;
362380};
363381
382+ // / @brief Represents a text element in a document.
364383class Text final : public TypedElement<internal::abstract::Text> {
365384public:
366385 using TypedElement::TypedElement;
@@ -371,27 +390,31 @@ class Text final : public TypedElement<internal::abstract::Text> {
371390 [[nodiscard]] TextStyle style () const ;
372391};
373392
393+ // / @brief Represents a link element in a document.
374394class Link final : public TypedElement<internal::abstract::Link> {
375395public:
376396 using TypedElement::TypedElement;
377397
378398 [[nodiscard]] std::string href () const ;
379399};
380400
401+ // / @brief Represents a bookmark element in a document.
381402class Bookmark final : public TypedElement<internal::abstract::Bookmark> {
382403public:
383404 using TypedElement::TypedElement;
384405
385406 [[nodiscard]] std::string name () const ;
386407};
387408
409+ // / @brief Represents a list item element in a document.
388410class ListItem final : public TypedElement<internal::abstract::ListItem> {
389411public:
390412 using TypedElement::TypedElement;
391413
392414 [[nodiscard]] TextStyle style () const ;
393415};
394416
417+ // / @brief Represents a table element in a document.
395418class Table final : public TypedElement<internal::abstract::Table> {
396419public:
397420 using TypedElement::TypedElement;
@@ -404,20 +427,23 @@ class Table final : public TypedElement<internal::abstract::Table> {
404427 [[nodiscard]] TableStyle style () const ;
405428};
406429
430+ // / @brief Represents a table column element in a document.
407431class TableColumn final : public TypedElement<internal::abstract::TableColumn> {
408432public:
409433 using TypedElement::TypedElement;
410434
411435 [[nodiscard]] TableColumnStyle style () const ;
412436};
413437
438+ // / @brief Represents a table row element in a document.
414439class TableRow final : public TypedElement<internal::abstract::TableRow> {
415440public:
416441 using TypedElement::TypedElement;
417442
418443 [[nodiscard]] TableRowStyle style () const ;
419444};
420445
446+ // / @brief Represents a table cell element in a document.
421447class TableCell final : public TypedElement<internal::abstract::TableCell> {
422448public:
423449 using TypedElement::TypedElement;
@@ -429,6 +455,7 @@ class TableCell final : public TypedElement<internal::abstract::TableCell> {
429455 [[nodiscard]] TableCellStyle style () const ;
430456};
431457
458+ // / @brief Represents a frame element in a document.
432459class Frame final : public TypedElement<internal::abstract::Frame> {
433460public:
434461 using TypedElement::TypedElement;
@@ -443,6 +470,7 @@ class Frame final : public TypedElement<internal::abstract::Frame> {
443470 [[nodiscard]] GraphicStyle style () const ;
444471};
445472
473+ // / @brief Represents a rectangle element in a document.
446474class Rect final : public TypedElement<internal::abstract::Rect> {
447475public:
448476 using TypedElement::TypedElement;
@@ -455,6 +483,7 @@ class Rect final : public TypedElement<internal::abstract::Rect> {
455483 [[nodiscard]] GraphicStyle style () const ;
456484};
457485
486+ // / @brief Represents a line element in a document.
458487class Line final : public TypedElement<internal::abstract::Line> {
459488public:
460489 using TypedElement::TypedElement;
@@ -467,6 +496,7 @@ class Line final : public TypedElement<internal::abstract::Line> {
467496 [[nodiscard]] GraphicStyle style () const ;
468497};
469498
499+ // / @brief Represents a circle element in a document.
470500class Circle final : public TypedElement<internal::abstract::Circle> {
471501public:
472502 using TypedElement::TypedElement;
@@ -479,6 +509,7 @@ class Circle final : public TypedElement<internal::abstract::Circle> {
479509 [[nodiscard]] GraphicStyle style () const ;
480510};
481511
512+ // / @brief Represents a custom shape element in a document.
482513class CustomShape final : public TypedElement<internal::abstract::CustomShape> {
483514public:
484515 using TypedElement::TypedElement;
@@ -491,6 +522,7 @@ class CustomShape final : public TypedElement<internal::abstract::CustomShape> {
491522 [[nodiscard]] GraphicStyle style () const ;
492523};
493524
525+ // / @brief Represents an image element in a document.
494526class Image final : public TypedElement<internal::abstract::Image> {
495527public:
496528 using TypedElement::TypedElement;
0 commit comments