Skip to content

Commit 8f532cd

Browse files
authored
Improve docs (#373)
1 parent c54e090 commit 8f532cd

16 files changed

Lines changed: 289 additions & 43 deletions

src/odr/archive.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class Archive;
1111
namespace odr {
1212
class Filesystem;
1313

14+
/// @brief Represents an archive file.
1415
class Archive {
1516
public:
1617
explicit Archive(std::shared_ptr<internal::abstract::Archive>);

src/odr/document.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class DocumentFile;
1515
class Element;
1616
class Filesystem;
1717

18+
/// @brief Represents a document.
1819
class Document final {
1920
public:
2021
explicit Document(std::shared_ptr<internal::abstract::Document>);

src/odr/document_element.hpp

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class Circle;
7777
class CustomShape;
7878
class Image;
7979

80+
/// @brief Collection of element types.
8081
enum class ElementType {
8182
none,
8283

@@ -113,6 +114,7 @@ enum class ElementType {
113114
group,
114115
};
115116

117+
/// @brief Collection of anchor types.
116118
enum 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.
124127
enum class ValueType {
125128
unknown,
126129
string,
127130
float_number,
128131
};
129132

133+
/// @brief Represents an element in a document.
130134
class Element {
131135
public:
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.
181186
class ElementIterator {
182187
public:
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.
208214
class ElementRange {
209215
public:
210216
ElementRange();
@@ -219,6 +225,7 @@ class ElementRange {
219225
ElementIterator m_end;
220226
};
221227

228+
/// @brief Represents a typed element in a document.
222229
template <typename T> class TypedElement : public Element {
223230
public:
224231
TypedElement() = default;
@@ -238,9 +245,10 @@ template <typename T> class TypedElement : public Element {
238245
protected:
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.
244252
class TextRoot final : public TypedElement<internal::abstract::TextRoot> {
245253
public:
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.
253262
class Slide final : public TypedElement<internal::abstract::Slide> {
254263
public:
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.
264274
class Sheet final : public TypedElement<internal::abstract::Sheet> {
265275
public:
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.
281292
class SheetColumn final : public TypedElement<internal::abstract::Sheet> {
282293
public:
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.
293305
class SheetRow final : public TypedElement<internal::abstract::Sheet> {
294306
public:
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.
305318
class SheetCell final : public TypedElement<internal::abstract::SheetCell> {
306319
public:
307320
SheetCell() = default;
@@ -316,11 +329,12 @@ class SheetCell final : public TypedElement<internal::abstract::SheetCell> {
316329
[[nodiscard]] TableCellStyle style() const;
317330

318331
private:
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.
324338
class Page final : public TypedElement<internal::abstract::Page> {
325339
public:
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.
335350
class MasterPage final : public TypedElement<internal::abstract::MasterPage> {
336351
public:
337352
using TypedElement::TypedElement;
338353

339354
[[nodiscard]] PageLayout page_layout() const;
340355
};
341356

357+
/// @brief Represents a line break element in a document.
342358
class LineBreak final : public TypedElement<internal::abstract::LineBreak> {
343359
public:
344360
using TypedElement::TypedElement;
345361

346362
[[nodiscard]] TextStyle style() const;
347363
};
348364

365+
/// @brief Represents a paragraph element in a document.
349366
class Paragraph final : public TypedElement<internal::abstract::Paragraph> {
350367
public:
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.
357375
class Span final : public TypedElement<internal::abstract::Span> {
358376
public:
359377
using TypedElement::TypedElement;
360378

361379
[[nodiscard]] TextStyle style() const;
362380
};
363381

382+
/// @brief Represents a text element in a document.
364383
class Text final : public TypedElement<internal::abstract::Text> {
365384
public:
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.
374394
class Link final : public TypedElement<internal::abstract::Link> {
375395
public:
376396
using TypedElement::TypedElement;
377397

378398
[[nodiscard]] std::string href() const;
379399
};
380400

401+
/// @brief Represents a bookmark element in a document.
381402
class Bookmark final : public TypedElement<internal::abstract::Bookmark> {
382403
public:
383404
using TypedElement::TypedElement;
384405

385406
[[nodiscard]] std::string name() const;
386407
};
387408

409+
/// @brief Represents a list item element in a document.
388410
class ListItem final : public TypedElement<internal::abstract::ListItem> {
389411
public:
390412
using TypedElement::TypedElement;
391413

392414
[[nodiscard]] TextStyle style() const;
393415
};
394416

417+
/// @brief Represents a table element in a document.
395418
class Table final : public TypedElement<internal::abstract::Table> {
396419
public:
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.
407431
class TableColumn final : public TypedElement<internal::abstract::TableColumn> {
408432
public:
409433
using TypedElement::TypedElement;
410434

411435
[[nodiscard]] TableColumnStyle style() const;
412436
};
413437

438+
/// @brief Represents a table row element in a document.
414439
class TableRow final : public TypedElement<internal::abstract::TableRow> {
415440
public:
416441
using TypedElement::TypedElement;
417442

418443
[[nodiscard]] TableRowStyle style() const;
419444
};
420445

446+
/// @brief Represents a table cell element in a document.
421447
class TableCell final : public TypedElement<internal::abstract::TableCell> {
422448
public:
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.
432459
class Frame final : public TypedElement<internal::abstract::Frame> {
433460
public:
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.
446474
class Rect final : public TypedElement<internal::abstract::Rect> {
447475
public:
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.
458487
class Line final : public TypedElement<internal::abstract::Line> {
459488
public:
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.
470500
class Circle final : public TypedElement<internal::abstract::Circle> {
471501
public:
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.
482513
class CustomShape final : public TypedElement<internal::abstract::CustomShape> {
483514
public:
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.
494526
class Image final : public TypedElement<internal::abstract::Image> {
495527
public:
496528
using TypedElement::TypedElement;

src/odr/document_path.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ DocumentPath::ComponentTemplate<Derived>::to_string() const noexcept {
5050

5151
DocumentPath::Component
5252
DocumentPath::component_from_string(const std::string &string) {
53-
auto colon = string.find(":");
53+
auto colon = string.find(':');
5454
if (colon == std::string::npos) {
5555
throw std::invalid_argument("string");
5656
}
@@ -88,11 +88,11 @@ DocumentPath DocumentPath::extract(Element element, Element root) {
8888
}
8989

9090
if (current.table_column() || current.table_cell()) {
91-
reverse.push_back(Column(distance));
91+
reverse.emplace_back(Column(distance));
9292
} else if (current.table_row()) {
93-
reverse.push_back(Row(distance));
93+
reverse.emplace_back(Row(distance));
9494
} else {
95-
reverse.push_back(Child(distance));
95+
reverse.emplace_back(Child(distance));
9696
}
9797

9898
current = parent;
@@ -145,8 +145,6 @@ bool DocumentPath::operator!=(const DocumentPath &other) const noexcept {
145145
return m_components != other.m_components;
146146
}
147147

148-
DocumentPath::operator std::string() const noexcept { return to_string(); }
149-
150148
std::string DocumentPath::to_string() const noexcept {
151149
std::string result;
152150

src/odr/document_path.hpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ namespace odr {
1010
class Document;
1111
class Element;
1212

13+
/// @brief A path to a specific element in a document.
1314
class DocumentPath final {
1415
public:
1516
template <typename Derived> struct ComponentTemplate {
1617
static const std::string &prefix_string();
1718

1819
std::uint32_t number{0};
1920

20-
ComponentTemplate(const std::uint32_t number);
21+
explicit ComponentTemplate(std::uint32_t number);
2122

2223
bool operator==(const ComponentTemplate &other) const noexcept;
2324
bool operator!=(const ComponentTemplate &other) const noexcept;
@@ -53,16 +54,14 @@ class DocumentPath final {
5354
static Element find(Element root, const DocumentPath &path);
5455

5556
DocumentPath() noexcept;
56-
DocumentPath(const Container &components);
57-
DocumentPath(Container &&components);
58-
DocumentPath(const char *c_string);
59-
DocumentPath(const std::string &string);
57+
explicit DocumentPath(const Container &components);
58+
explicit DocumentPath(Container &&components);
59+
explicit DocumentPath(const char *c_string);
60+
explicit DocumentPath(const std::string &string);
6061

6162
bool operator==(const DocumentPath &other) const noexcept;
6263
bool operator!=(const DocumentPath &other) const noexcept;
6364

64-
operator std::string() const noexcept;
65-
6665
[[nodiscard]] std::string to_string() const noexcept;
6766

6867
[[nodiscard]] bool empty() const noexcept;
@@ -80,4 +79,4 @@ class DocumentPath final {
8079

8180
} // namespace odr
8281

83-
#endif // ODR_INTERNAL_COMMON_DOCUMENT_PATH_HPP
82+
#endif // ODR_DOCUMENT_PATH_HPP

0 commit comments

Comments
 (0)