Node.h
1 // Copyright 2001-2020 Aspose Pty Ltd. All Rights Reserved.
3 //
4 // This file is part of Aspose.Words. The source code in this file
5 // is only intended as a supplement to the documentation, and is provided
6 // "as is", without warranty of any kind, either expressed or implied.
9 #pragma once
10 
11 #include <system/text/string_builder.h>
12 #include <system/string.h>
13 #include <system/shared_ptr.h>
14 #include <system/object.h>
15 #include <system/constraints.h>
16 #include <system/collections/stack.h>
17 #include <cstdint>
18 
19 #include "Aspose.Words.Cpp/Model/Nodes/NodeType.h"
20 #include "Aspose.Words.Cpp/Model/Document/SaveFormat.h"
21 #include "Aspose.Words.Cpp/aspose_words_api_defs.h"
22 
23 namespace Aspose { namespace Words { class NodeRemover; } }
24 namespace Aspose { namespace Words { namespace Markup { class StructuredDocumentTagRangeStart; } } }
25 namespace Aspose { namespace Words { namespace Markup { class StructuredDocumentTagRangeEnd; } } }
26 namespace Aspose { namespace Words { class AnnotationUtil; } }
27 namespace Aspose { namespace Words { class RangeBound; } }
28 namespace Aspose { namespace Words { namespace Revisions { class MoveRangeRevisionHelper; } } }
29 namespace Aspose { namespace Words { namespace Layout { namespace PreAps { class FloaterZOrderSorter; } } } }
30 namespace Aspose { namespace Words { namespace Fields { class FieldIncludeTextUpdater; } } }
31 namespace Aspose { namespace Words { class MoveRange; } }
32 namespace Aspose { namespace Words { class NodeCollection; } }
33 namespace Aspose { namespace Words { namespace Layout { class RevisionCommentsPreprocessor; } } }
34 namespace Aspose { namespace Words { namespace Layout { class ParagraphPrConverter; } } }
35 namespace Aspose { namespace Words { namespace Comparison { class ComparerNodeUtil; } } }
36 namespace Aspose { namespace Words { namespace Comparison { class ComparerIndexer; } } }
37 namespace Aspose { namespace Words { namespace Comparison { class StoryComparer; } } }
38 namespace Aspose { namespace Words { namespace Validation { class ComplexScriptRunUpdater; } } }
39 namespace Aspose { namespace Words { class CompositeNode; } }
40 namespace Aspose { namespace Words { class DocumentInserter; } }
41 namespace Aspose { namespace Words { namespace Fields { class FieldUnlinker; } } }
42 namespace Aspose { namespace Words { namespace Fields { class HiddenParagraphTocEntry; } } }
43 namespace Aspose { namespace Words { namespace Math { class OfficeMathUtil; } } }
44 namespace Aspose { namespace Words { class FormatRevisionText; } }
45 namespace Aspose { namespace Words { namespace Replacing { class FindReplaceIndexer; } } }
46 namespace Aspose { namespace Words { namespace Tables { class TableMerger; } } }
47 namespace Aspose { namespace Words { namespace RW { class InlineMarkupResolver; } } }
48 namespace Aspose { namespace Words { namespace RW { namespace Markdown { namespace Writer { class MarkdownHyperlinkWriter; } } } } }
49 namespace Aspose { namespace Words { namespace RW { namespace Markdown { namespace Writer { class MarkdownTableWriter; } } } } }
50 namespace Aspose { namespace Words { namespace Validation { class OfficeMathToShapeConverter; } } }
51 namespace Aspose { namespace Words { namespace Fields { class TocEntriesBookmarkDeferredRemover; } } }
52 namespace Aspose { namespace Words { class NodeEnumerator; } }
53 namespace Aspose { namespace Words { namespace Validation { namespace VmlToDml { class VmlToDmlComplexShapeConverter; } } } }
54 namespace Aspose { namespace Words { namespace RW { namespace Nrx { namespace Reader { class NrxFldCharReaderBase; } } } } }
55 namespace Aspose { namespace Words { namespace Replacing { class FindReplace; } } }
56 namespace Aspose { namespace Words { namespace MailMerging { class MailMergeRegion; } } }
57 namespace Aspose { namespace Words { namespace Fields { class FieldBuilder; } } }
58 namespace Aspose { namespace Words { namespace Fields { class Field; } } }
59 namespace Aspose { namespace Words { namespace MailMerging { class RepalacedTagRestoreCollector; } } }
60 namespace Aspose { namespace Words { namespace Revisions { class RevisionUtil; } } }
61 namespace Aspose { namespace Words { namespace Revisions { class BookmarkDeleter; } } }
62 namespace Aspose { namespace Words { namespace Revisions { class BookmarkMover; } } }
63 namespace Aspose { namespace Words { namespace Revisions { class RevisionHandlingContext; } } }
64 namespace Aspose { namespace Words { namespace Validation { class ShapeValidator; } } }
65 namespace Aspose { namespace Words { namespace RW { namespace Dml { namespace Reader { class DmlDiagramReader; } } } } }
66 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Dml { class DmlPictureRenderer; } } } }
67 namespace Aspose { namespace Words { namespace Fields { class FieldDisplayContext; } } }
68 namespace Aspose { namespace Words { namespace Layout { namespace Core { class WarningGenerator; } } } }
69 namespace Aspose { namespace Words { namespace Layout { namespace Core { class StoryLayoutBuilder; } } } }
70 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class OfficeMathToApsConverter; } } } }
71 namespace Aspose { namespace Words { namespace Layout { class RunWrapFinder; } } }
72 namespace Aspose { namespace Words { class RangeDocumentBuilder; } }
73 namespace Aspose { namespace Words { namespace Fields { class FieldFakeResultAppender; } } }
74 namespace Aspose { namespace Words { namespace Fields { class FieldOldResultNodeCollection; } } }
75 namespace Aspose { namespace Words { namespace Fields { class FieldReplacer; } } }
76 namespace Aspose { namespace Words { namespace Fields { class FieldIndexAndTablesUtil; } } }
77 namespace Aspose { namespace Words { namespace Fields { class FieldIndex; } } }
78 namespace Aspose { namespace Words { namespace Fields { class ChapterTitleParagraphFinder; } } }
79 namespace Aspose { namespace Words { namespace Markup { class SdtContentUpdater; } } }
80 namespace Aspose { namespace Words { class EditableRangeEnd; } }
81 namespace Aspose { namespace Words { class EditableRangeStart; } }
82 namespace Aspose { namespace Words { class MoveRangeEnd; } }
83 namespace Aspose { namespace Words { class MoveRangeFinder; } }
84 namespace Aspose { namespace Words { class MoveRangeStart; } }
85 namespace Aspose { namespace Words { namespace Tables { class FixedGridCalculator; } } }
86 namespace Aspose { namespace Words { namespace Validation { namespace DmlToVml { class DmlUtil; } } } }
87 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Reader { namespace CommonBorder { class CommonBorderContainer; } } } } } }
88 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlStyleWriter; } } } } }
89 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlTabStopExtractor; } } } } }
90 namespace Aspose { namespace Words { namespace RW { namespace MathML { class MathMLWriter; } } } }
91 namespace Aspose { namespace Words { namespace RW { namespace MarkupLanguage { namespace Writer { class MarkupLanguageShapeWriter; } } } } }
92 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtTrackedChangesWriter; } } } } }
93 namespace Aspose { namespace Words { class SubDocument; } }
94 namespace Aspose { namespace Words { namespace Fields { class FieldPageRef; } } }
95 namespace Aspose { namespace Words { namespace Fields { class FieldRef; } } }
96 namespace Aspose { namespace Words { namespace Fields { class FieldSeqDataProvider; } } }
97 namespace Aspose { namespace Words { namespace Fields { class FieldToc; } } }
98 namespace Aspose { namespace Words { namespace Fields { class FieldXE; } } }
99 namespace Aspose { namespace Words { namespace Fields { class ParagraphTocEntry; } } }
100 namespace Aspose { namespace Words { namespace Fields { class StyleFinder; } } }
101 namespace Aspose { namespace Words { namespace Fields { class TocEntryExtractor; } } }
102 namespace Aspose { namespace Words { namespace Fields { class FieldUtil; } } }
103 namespace Aspose { namespace Words { namespace MailMerging { class TagReplacer; } } }
104 namespace Aspose { namespace Words { namespace Markup { class SdtContentHelper; } } }
105 namespace Aspose { namespace Words { namespace Markup { class XmlMapping; } } }
106 namespace Aspose { namespace Words { class ShapeFieldRemover; } }
107 namespace Aspose { namespace Words { class NodeCopier; } }
108 namespace Aspose { namespace Words { class NodeTextCollector; } }
109 namespace Aspose { namespace Words { class DocumentPosition; } }
110 namespace Aspose { namespace Words { class NodeRange; } }
111 namespace Aspose { namespace Words { class NodeUtil; } }
112 namespace Aspose { namespace Words { namespace Layout { class AttributeConverter; } } }
113 namespace Aspose { namespace Words { namespace Layout { class DocumentSpanConverter; } } }
114 namespace Aspose { namespace Words { namespace Layout { namespace PreAps { class LayoutSpanPicture; } } } }
115 namespace Aspose { namespace Words { namespace Layout { namespace Core { class SpanGenerator; } } } }
116 namespace Aspose { namespace Words { class Bookmark; } }
117 namespace Aspose { namespace Words { class BookmarkEnd; } }
118 namespace Aspose { namespace Words { class BookmarkStart; } }
119 namespace Aspose { namespace Words { namespace Fields { class FieldUpdater; } } }
120 namespace Aspose { namespace Words { namespace Fields { namespace Expressions { class RectangularCellRange; } } } }
121 namespace Aspose { namespace Words { namespace Fields { class NodeRangeFieldCodeTokenizer; } } }
122 namespace Aspose { namespace Words { namespace Fields { class ResultEnumerator; } } }
123 namespace Aspose { namespace Words { namespace Fields { class FormField; } } }
124 namespace Aspose { namespace Words { class CommentRangeEnd; } }
125 namespace Aspose { namespace Words { class CommentRangeStart; } }
126 namespace Aspose { namespace Words { namespace Validation { class AnnotationValidator; } } }
127 namespace Aspose { namespace Words { namespace Validation { class CommentValidatorItem; } } }
128 namespace Aspose { namespace Words { namespace TableLayout { class Extensions; } } }
129 namespace Aspose { namespace Words { namespace Tables { class TableFormattingExpander; } } }
130 namespace Aspose { namespace Words { namespace Validation { class BookmarkValidator; } } }
131 namespace Aspose { namespace Words { class DocumentBuilder; } }
132 namespace Aspose { namespace Words { namespace Validation { class DocumentPostLoader; } } }
133 namespace Aspose { namespace Words { namespace Validation { class DocumentValidator; } } }
134 namespace Aspose { namespace Words { namespace Validation { class FieldValidator; } } }
135 namespace Aspose { namespace Words { namespace Saving { class ImageSavingArgs; } } }
136 namespace Aspose { namespace Words { class TableBuilder; } }
137 namespace Aspose { namespace Words { class WordCounter; } }
138 namespace Aspose { namespace Words { namespace Drawing { class ShapeBase; } } }
139 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Shapes { class ShapeApsBuilder; } } } }
140 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Css { namespace New { class CssPositionStyleConverter; } } } } } }
141 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlCommonBorderSpanWriter; } } } } }
142 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlCoreWriter; } } } } }
143 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlParaBorderWriter; } } } } }
144 namespace Aspose { namespace Words { namespace Validation { class RubyConverter; } } }
145 namespace Aspose { namespace Words { namespace RW { namespace MarkupLanguage { namespace Writer { class MarkupLanguageDocumentTreeWriter; } } } } }
146 namespace Aspose { namespace Words { namespace RW { namespace MarkupLanguage { namespace Writer { class MarkupLanguageShapeResourceWriter; } } } } }
147 namespace Aspose { namespace Words { namespace Fields { class FieldRefUtil; } } }
148 namespace Aspose { namespace Words { namespace Fields { class FieldNumUtil; } } }
149 namespace Aspose { namespace Words { class FootnoteSeparatorCollection; } }
150 namespace Aspose { namespace Words { class NodeImporter; } }
151 namespace Aspose { namespace Words { namespace Lists { class ListCollection; } } }
152 namespace Aspose { namespace Words { namespace TableLayout { class ParagraphMeasurer; } } }
153 namespace Aspose { namespace Words { namespace TableLayout { class TableLayouter; } } }
154 namespace Aspose { namespace Words { class Inline; } }
155 namespace Aspose { namespace Words { class Paragraph; } }
156 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxDocumentReaderBase; } } } } }
157 namespace Aspose { namespace Words { namespace RW { namespace Nrx { namespace Reader { class NrxDocumentReaderBase; } } } } }
158 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxDocumentWriterBase; } } } } }
159 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlDocumentSplitter; } } } } }
160 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtShapeWriter; } } } } }
161 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtTextContentReader; } } } } }
162 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtContentReader; } } } } }
163 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtFieldWriter; } } } } }
164 namespace Aspose { namespace Words { class WordUtil; } }
165 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxDocumentWriter; } } } } }
166 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class ModelBuilder; } } } } }
167 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class DocWriter; } } } } }
168 namespace Aspose { namespace Words { namespace RW { namespace Html { class CssParagraph; } } } }
169 namespace Aspose { namespace Words { namespace RW { namespace HtmlCommon { class HtmlUtil; } } } }
170 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Reader { class HtmlReader; } } } } }
171 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtFootnoteWriter; } } } } }
172 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtBookmarkWriter; } } } } }
173 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtParagraphWriter; } } } } }
174 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtAutoStylesWriter; } } } } }
175 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtSpanWriter; } } } } }
176 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtTableWriter; } } } } }
177 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtParagraphPropertiesWriter; } } } } }
178 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtStylesWriter; } } } } }
179 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtWriter; } } } } }
180 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfLegacyListHandler; } } } } }
181 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfModelBuilder; } } } } }
182 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfWriter; } } } } }
183 namespace Aspose { namespace Words { namespace RW { namespace Txt { namespace Writer { class TxtWriter; } } } } }
184 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Reader { class WmlDocPrReader; } } } } }
185 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Writer { class WmlWriter; } } } } }
186 namespace Aspose { namespace Words { enum class NodeLevel; } }
187 namespace Aspose { namespace Words { class DocumentBase; } }
188 namespace Aspose { namespace Words { class Range; } }
189 namespace Aspose { namespace Words { class Document; } }
190 namespace Aspose { namespace Words { class INodeCloningListener; } }
191 namespace Aspose { namespace Words { class DocumentVisitor; } }
192 namespace Aspose { namespace Words { enum class VisitorAction; } }
193 namespace Aspose { namespace Words { namespace Saving { class SaveOptions; } } }
194 
195 namespace Aspose {
196 
197 namespace Words {
198 
214 class Node : public virtual System::Object
215 {
216  typedef Node ThisType;
217  typedef System::Object BaseType;
218 
219  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
220  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
221 
222  FRIEND_FUNCTION_System_MakeObject;
223  friend class Aspose::Words::NodeRemover;
226  friend class Aspose::Words::AnnotationUtil;
227  friend class Aspose::Words::RangeBound;
228  friend class Aspose::Words::Revisions::MoveRangeRevisionHelper;
229  friend class Aspose::Words::Layout::PreAps::FloaterZOrderSorter;
230  friend class Aspose::Words::Fields::FieldIncludeTextUpdater;
231  friend class Aspose::Words::MoveRange;
232  friend class Aspose::Words::NodeCollection;
233  friend class Aspose::Words::Layout::RevisionCommentsPreprocessor;
234  friend class Aspose::Words::Layout::ParagraphPrConverter;
235  friend class Aspose::Words::Comparison::ComparerNodeUtil;
236  friend class Aspose::Words::Comparison::ComparerIndexer;
237  friend class Aspose::Words::Comparison::StoryComparer;
238  friend class Aspose::Words::Validation::ComplexScriptRunUpdater;
239  friend class Aspose::Words::CompositeNode;
240  friend class Aspose::Words::DocumentInserter;
241  friend class Aspose::Words::Fields::FieldUnlinker;
242  friend class Aspose::Words::Fields::HiddenParagraphTocEntry;
243  friend class Aspose::Words::Math::OfficeMathUtil;
244  friend class Aspose::Words::FormatRevisionText;
245  friend class Aspose::Words::Replacing::FindReplaceIndexer;
246  friend class Aspose::Words::Tables::TableMerger;
247  friend class Aspose::Words::RW::InlineMarkupResolver;
248  friend class Aspose::Words::RW::Markdown::Writer::MarkdownHyperlinkWriter;
249  friend class Aspose::Words::RW::Markdown::Writer::MarkdownTableWriter;
250  friend class Aspose::Words::Validation::OfficeMathToShapeConverter;
251  friend class Aspose::Words::Fields::TocEntriesBookmarkDeferredRemover;
252  friend class Aspose::Words::Fields::TocEntriesBookmarkDeferredRemover;
253  friend class Aspose::Words::NodeEnumerator;
254  friend class Aspose::Words::Validation::VmlToDml::VmlToDmlComplexShapeConverter;
255  friend class Aspose::Words::RW::Nrx::Reader::NrxFldCharReaderBase;
256  friend class Aspose::Words::Replacing::FindReplace;
257  friend class Aspose::Words::MailMerging::MailMergeRegion;
259  friend class Aspose::Words::Fields::Field;
260  friend class Aspose::Words::MailMerging::RepalacedTagRestoreCollector;
261  friend class Aspose::Words::Revisions::RevisionUtil;
262  friend class Aspose::Words::Revisions::BookmarkDeleter;
263  friend class Aspose::Words::Revisions::BookmarkMover;
264  friend class Aspose::Words::Revisions::RevisionHandlingContext;
265  friend class Aspose::Words::Revisions::RevisionHandlingContext;
266  friend class Aspose::Words::Validation::ShapeValidator;
267  friend class Aspose::Words::RW::Dml::Reader::DmlDiagramReader;
268  friend class Aspose::Words::ApsBuilder::Dml::DmlPictureRenderer;
269  friend class Aspose::Words::Fields::FieldDisplayContext;
270  friend class Aspose::Words::Layout::Core::WarningGenerator;
271  friend class Aspose::Words::Layout::Core::StoryLayoutBuilder;
272  friend class Aspose::Words::ApsBuilder::Math::OfficeMathToApsConverter;
273  friend class Aspose::Words::Layout::RunWrapFinder;
274  friend class Aspose::Words::RangeDocumentBuilder;
275  friend class Aspose::Words::Fields::FieldFakeResultAppender;
276  friend class Aspose::Words::Fields::FieldOldResultNodeCollection;
277  friend class Aspose::Words::Fields::FieldReplacer;
278  friend class Aspose::Words::Fields::FieldIndexAndTablesUtil;
281  friend class Aspose::Words::Fields::ChapterTitleParagraphFinder;
282  friend class Aspose::Words::Markup::SdtContentUpdater;
283  friend class Aspose::Words::EditableRangeEnd;
285  friend class Aspose::Words::MoveRangeEnd;
286  friend class Aspose::Words::MoveRangeFinder;
287  friend class Aspose::Words::MoveRangeStart;
288  friend class Aspose::Words::Tables::FixedGridCalculator;
289  friend class Aspose::Words::Validation::DmlToVml::DmlUtil;
290  friend class Aspose::Words::RW::Html::Reader::CommonBorder::CommonBorderContainer;
291  friend class Aspose::Words::RW::Html::Writer::HtmlStyleWriter;
292  friend class Aspose::Words::RW::Html::Writer::HtmlTabStopExtractor;
293  friend class Aspose::Words::RW::MathML::MathMLWriter;
294  friend class Aspose::Words::RW::MarkupLanguage::Writer::MarkupLanguageShapeWriter;
295  friend class Aspose::Words::RW::Odt::Writer::OdtTrackedChangesWriter;
296  friend class Aspose::Words::SubDocument;
298  friend class Aspose::Words::Fields::FieldRef;
299  friend class Aspose::Words::Fields::FieldSeqDataProvider;
300  friend class Aspose::Words::Fields::FieldToc;
301  friend class Aspose::Words::Fields::FieldXE;
302  friend class Aspose::Words::Fields::ParagraphTocEntry;
303  friend class Aspose::Words::Fields::StyleFinder;
304  friend class Aspose::Words::Fields::TocEntryExtractor;
305  friend class Aspose::Words::Fields::FieldUtil;
306  friend class Aspose::Words::MailMerging::TagReplacer;
307  friend class Aspose::Words::Markup::SdtContentHelper;
309  friend class Aspose::Words::ShapeFieldRemover;
310  friend class Aspose::Words::NodeCopier;
311  friend class Aspose::Words::NodeTextCollector;
312  friend class Aspose::Words::DocumentPosition;
313  friend class Aspose::Words::NodeRange;
314  friend class Aspose::Words::NodeUtil;
315  friend class Aspose::Words::Layout::AttributeConverter;
316  friend class Aspose::Words::Layout::DocumentSpanConverter;
317  friend class Aspose::Words::Layout::PreAps::LayoutSpanPicture;
318  friend class Aspose::Words::Layout::Core::SpanGenerator;
319  friend class Aspose::Words::Bookmark;
320  friend class Aspose::Words::BookmarkEnd;
321  friend class Aspose::Words::BookmarkStart;
322  friend class Aspose::Words::Fields::FieldUpdater;
323  friend class Aspose::Words::Fields::Expressions::RectangularCellRange;
324  friend class Aspose::Words::Fields::NodeRangeFieldCodeTokenizer;
325  friend class Aspose::Words::Fields::ResultEnumerator;
327  friend class Aspose::Words::CommentRangeEnd;
329  friend class Aspose::Words::Validation::AnnotationValidator;
330  friend class Aspose::Words::Validation::CommentValidatorItem;
331  friend class Aspose::Words::TableLayout::Extensions;
332  friend class Aspose::Words::Tables::TableFormattingExpander;
333  friend class Aspose::Words::Validation::BookmarkValidator;
334  friend class Aspose::Words::DocumentBuilder;
335  friend class Aspose::Words::Validation::DocumentPostLoader;
336  friend class Aspose::Words::Validation::DocumentValidator;
337  friend class Aspose::Words::Validation::FieldValidator;
339  friend class Aspose::Words::TableBuilder;
340  friend class Aspose::Words::WordCounter;
342  friend class Aspose::Words::ApsBuilder::Shapes::ShapeApsBuilder;
343  friend class Aspose::Words::RW::Html::Css::New::CssPositionStyleConverter;
344  friend class Aspose::Words::RW::Html::Writer::HtmlCommonBorderSpanWriter;
345  friend class Aspose::Words::RW::Html::Writer::HtmlCoreWriter;
346  friend class Aspose::Words::RW::Html::Writer::HtmlParaBorderWriter;
347  friend class Aspose::Words::Validation::RubyConverter;
348  friend class Aspose::Words::RW::MarkupLanguage::Writer::MarkupLanguageDocumentTreeWriter;
349  friend class Aspose::Words::RW::MarkupLanguage::Writer::MarkupLanguageShapeResourceWriter;
350  friend class Aspose::Words::Fields::FieldRefUtil;
351  friend class Aspose::Words::Fields::FieldNumUtil;
352  friend class Aspose::Words::FootnoteSeparatorCollection;
353  friend class Aspose::Words::NodeImporter;
355  friend class Aspose::Words::TableLayout::ParagraphMeasurer;
356  friend class Aspose::Words::TableLayout::TableLayouter;
357  friend class Aspose::Words::Inline;
358  friend class Aspose::Words::Paragraph;
359  friend class Aspose::Words::RW::Docx::Reader::DocxDocumentReaderBase;
360  friend class Aspose::Words::RW::Nrx::Reader::NrxDocumentReaderBase;
361  friend class Aspose::Words::RW::Docx::Writer::DocxDocumentWriterBase;
362  friend class Aspose::Words::RW::Html::Writer::HtmlDocumentSplitter;
363  friend class Aspose::Words::RW::Odt::Writer::OdtShapeWriter;
364  friend class Aspose::Words::RW::Odt::Reader::OdtTextContentReader;
365  friend class Aspose::Words::RW::Odt::Reader::OdtContentReader;
366  friend class Aspose::Words::RW::Odt::Writer::OdtFieldWriter;
367  friend class Aspose::Words::WordUtil;
368  friend class Aspose::Words::RW::Docx::Writer::DocxDocumentWriter;
369  friend class Aspose::Words::RW::Doc::Reader::ModelBuilder;
370  friend class Aspose::Words::RW::Doc::Writer::DocWriter;
371  friend class Aspose::Words::RW::Html::CssParagraph;
372  friend class Aspose::Words::RW::HtmlCommon::HtmlUtil;
373  friend class Aspose::Words::RW::Html::Reader::HtmlReader;
374  friend class Aspose::Words::RW::Odt::Writer::OdtFootnoteWriter;
375  friend class Aspose::Words::RW::Odt::Writer::OdtBookmarkWriter;
376  friend class Aspose::Words::RW::Odt::Writer::OdtParagraphWriter;
377  friend class Aspose::Words::RW::Odt::Writer::OdtAutoStylesWriter;
378  friend class Aspose::Words::RW::Odt::Writer::OdtSpanWriter;
379  friend class Aspose::Words::RW::Odt::Writer::OdtTableWriter;
380  friend class Aspose::Words::RW::Odt::Writer::OdtParagraphPropertiesWriter;
381  friend class Aspose::Words::RW::Odt::Writer::OdtStylesWriter;
382  friend class Aspose::Words::RW::Odt::Writer::OdtWriter;
383  friend class Aspose::Words::RW::Rtf::Reader::RtfLegacyListHandler;
384  friend class Aspose::Words::RW::Rtf::Reader::RtfModelBuilder;
385  friend class Aspose::Words::RW::Rtf::Writer::RtfWriter;
386  friend class Aspose::Words::RW::Txt::Writer::TxtWriter;
387  friend class Aspose::Words::RW::Wml::Reader::WmlDocPrReader;
388  friend class Aspose::Words::RW::Wml::Writer::WmlWriter;
389 
390 public:
392 
393 public:
394 
398  virtual ASPOSE_WORDS_SHARED_API Aspose::Words::NodeType get_NodeType() const = 0;
414  virtual ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::DocumentBase> get_Document() const;
433  virtual ASPOSE_WORDS_SHARED_API bool get_IsComposite();
438 
440  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> Clone(bool isCloneChildren);
447  virtual ASPOSE_WORDS_SHARED_API bool Accept(System::SharedPtr<Aspose::Words::DocumentVisitor> visitor) = 0;
454  virtual ASPOSE_WORDS_SHARED_API System::String GetText();
455  template <typename T>
457  {
458  typedef Aspose::Words::CompositeNode BaseT_CompositeNode;
459 assert_is_base_of(BaseT_CompositeNode, T);
460 System::SharedPtr<Aspose::Words::Node> curParent = System::StaticCast<Aspose::Words::Node>(this->get_ParentNode());
461 while (curParent != nullptr)
462 {
463  auto parent = System::StaticCast_noexcept<typename T::Pointee_>(curParent);
464  if (parent != nullptr)
465  {
466  return parent;
467  }
468  curParent = System::StaticCast<Aspose::Words::Node>(curParent->get_ParentNode());
469 }
470 return nullptr;
471  }
481  ASPOSE_WORDS_SHARED_API void Remove();
498  ASPOSE_WORDS_SHARED_API System::String ToString(Aspose::Words::SaveFormat saveFormat);
508  static ASPOSE_WORDS_SHARED_API System::String NodeTypeToString(Aspose::Words::NodeType nodeType);
509 
510 protected:
511 
512  System::SharedPtr<Aspose::Words::CompositeNode> get_FirstNonMarkupParentNode();
513  System::SharedPtr<Aspose::Words::CompositeNode> get_FirstMeaningfulParentNode();
514  System::SharedPtr<Aspose::Words::Node> get_PreviousNonAnnotationSibling();
515  System::SharedPtr<Aspose::Words::Node> get_PreviousNonMarkupNodeLimited();
516  System::SharedPtr<Aspose::Words::Node> get_NextNonMarkupNodeLimited();
517  System::SharedPtr<Aspose::Words::CompositeNode> get_PreviousNonMarkupCompositeLimited();
518  System::SharedPtr<Aspose::Words::CompositeNode> get_NextNonMarkupCompositeLimited();
519  System::SharedPtr<Aspose::Words::Node> get_NextNonAnnotationSibling();
520  bool get_IsLastChild();
521  bool get_IsFirstChild();
522  bool get_IsFirstNonZeroLengthChild();
523  bool get_IsLastNonZeroLengthChild();
524  System::SharedPtr<Aspose::Words::Node> get_NextNode() const;
525  void set_NextNode(System::SharedPtr<Aspose::Words::Node> value);
526  System::SharedPtr<Aspose::Words::Node> get_PrevNode() const;
527  void set_PrevNode(System::SharedPtr<Aspose::Words::Node> value);
528  System::SharedPtr<Aspose::Words::Node> get_NextOrParent();
529  Aspose::Words::NodeLevel get_NodeLevel();
530  bool get_IsRemoved();
531 
532  ASPOSE_WORDS_SHARED_API Node();
533  ASPOSE_WORDS_SHARED_API Node(System::SharedPtr<Aspose::Words::DocumentBase> doc);
534 
536  System::SharedPtr<Aspose::Words::Document> FetchDocumentOrGlossaryMain();
537  int32_t GetStart();
538  int32_t GetEnd();
539  bool Contains(int32_t position);
540  virtual ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> GetNodeFromPos(int32_t position);
541  virtual ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> Clone(bool isCloneChildren, System::SharedPtr<Aspose::Words::INodeCloningListener> cloningListener);
542  static ASPOSE_WORDS_SHARED_API bool VisitorActionToBool(Aspose::Words::VisitorAction action);
543  virtual ASPOSE_WORDS_SHARED_API void GetTextToBuilder(System::SharedPtr<System::Text::StringBuilder> builder);
544  void SetParent(System::SharedPtr<Aspose::Words::Node> parentNode);
546  bool IsAncestorNode(System::SharedPtr<Aspose::Words::Node> node);
547  System::SharedPtr<Aspose::Words::Node> GetTopmostAncestor();
548  virtual ASPOSE_WORDS_SHARED_API int32_t GetTextLength();
550  System::SharedPtr<Aspose::Words::Node> PreviousSiblingOfType(Aspose::Words::NodeType nodeType);
552  System::SharedPtr<Aspose::Words::Node> GetNearestSibling(bool isNext);
554  System::SharedPtr<Aspose::Words::DocumentPosition> GetBeforeDocumentPosition();
555  System::SharedPtr<Aspose::Words::DocumentPosition> GetAfterDocumentPosition();
556  bool IsAbove(System::SharedPtr<Aspose::Words::Node> node);
559  System::String GetNodeId() const;
560 
561  virtual ASPOSE_WORDS_SHARED_API ~Node();
562 
563  ASPOSE_WORDS_SHARED_API System::Object::shared_members_type GetSharedMembers() override;
564 
565 private:
566 
570 
573  virtual ThisType* CppMemberwiseClone() const = 0;
574 
575 };
576 
577 }
578 }
@ StructuredDocumentTagRangeStart
A start of ranged structured document tag which accepts multi-sections content.
@ Doc
Microsoft Word 95 or Word 97 - 2003 Document.
Provides data for the ImageSaving event.
Definition: ImageSavingArgs.h:47
System::Details::SharedMembersType shared_members_type
@ Odt
ODF Text Document.
@ FieldIndex
Specifies the INDEX field.
Specifies the information that is used to establish a mapping between the parent structured document ...
Definition: XmlMapping.h:50
@ Html
Implements the XE field.
Definition: FieldXE.h:43
Base class for all nodes of a Word document.
Definition: Node.h:215
@ EditableRangeStart
A beginning of an editable range.
@ Shapes
Module that renders ordinary shapes.
@ SubDocument
A subdocument node which is a link to another document.
@ Nrx
Common modules that are shared between DOCX/WML reader/writer modules.
@ Dml
Drawing Markup Language is used to define the shape.
System::SharedPtr< Aspose::Words::Node > PreviousPreOrder(System::SharedPtr< Aspose::Words::Node > rootNode)
Gets the previous node according to the pre-order tree traversal algorithm.
Represents a single bookmark.
Definition: Bookmark.h:54
Implements the INDEX field.
Definition: FieldIndex.h:58
Base class for objects in the drawing layer, such as an AutoShape, freeform, OLE object,...
Definition: ShapeBase.h:278
System::SharedPtr< Aspose::Words::Node > NextPreOrder(System::SharedPtr< Aspose::Words::Node > rootNode)
Gets next node according to the pre-order tree traversal algorithm.
virtual System::SharedPtr< Aspose::Words::DocumentBase > get_Document() const
Gets the document to which this node belongs.
@ CommentRangeStart
A marker node that represents the start of a commented range.
Represents a start of an editable range in a Word document.
Definition: EditableRangeStart.h:57
@ FieldRef
Specifies the REF field.
@ Rtf
RTF format.
System::SharedPtr< Aspose::Words::Node > get_PreviousSibling()
Gets the node immediately preceding this node.
@ Inline
Not documented. Seems to be a possible value for floating paragraphs and tables.
virtual System::String GetText()
Gets the text of this node and of all its children.
@ Words
System::SharedPtr< Aspose::Words::CompositeNode > GetAncestor(Aspose::Words::NodeType ancestorType)
Gets the first ancestor of the specified NodeType.
SaveFormat
Indicates the format in which the document is saved.
Definition: SaveFormat.h:26
Allows to efficiently perform repeated import of nodes from one document to another.
Definition: NodeImporter.h:97
Stores and manages formatting of bulleted and numbered lists used in a document.
Definition: ListCollection.h:131
@ CommentRangeEnd
A marker node that represents the end of a commented range.
Represents an end of ranged structured document tag which accepts multi-sections content....
Definition: StructuredDocumentTagRangeEnd.h:39
@ New
Other document is used as a base during comparison.
@ Document
Represents a collection of nodes of a specific type.
Definition: NodeCollection.h:75
@ BookmarkEnd
An end of a bookmark marker.
Represents an end of an editable range in a Word document.
Definition: EditableRangeEnd.h:52
@ MathML
Module that reads W3C MathML files.
Base class for nodes that can contain other nodes.
Definition: CompositeNode.h:134
Represents a Microsoft Word document field.
Definition: Field.h:143
T GetAncestorOf()
Definition: Node.h:456
static System::String NodeTypeToString(Aspose::Words::NodeType nodeType)
A utility method that converts a node type enum value into a user friendly string.
Represents an end of a bookmark in a Word document.
Definition: BookmarkEnd.h:49
virtual bool Accept(System::SharedPtr< Aspose::Words::DocumentVisitor > visitor)=0
Accepts a visitor.
Builds a field from field code tokens (arguments and switches).
Definition: FieldBuilder.h:39
Represents a start of ranged structured document tag which accepts multi-sections content....
Definition: StructuredDocumentTagRangeStart.h:49
Represents a SubDocument - which is a reference to an externally stored document.
Definition: SubDocument.h:45
System::SharedPtr< Aspose::Words::Node > Clone(bool isCloneChildren)
Provides methods to insert text, images and other content, specify font, paragraph and section format...
Definition: DocumentBuilder.h:137
Implements the TOC field.
Definition: FieldToc.h:57
@ Docx
Office Open XML WordprocessingML Document (macro-free).
NodeType
Specifies the type of a Word document node.
Definition: NodeType.h:23
System::SharedPtr< Aspose::Words::CompositeNode > get_ParentNode()
Gets the immediate parent of this node.
Denotes the end of a region of text that has a comment associated with it.
Definition: CommentRangeEnd.h:39
@ FieldPageRef
Specifies the PAGEREF field.
virtual ASPOSECPP_SHARED_API String ToString() const
Base class for inline-level nodes that can have character formatting associated with them,...
Definition: Inline.h:134
@ StructuredDocumentTagRangeEnd
A end of ranged structured document tag which accepts multi-sections content.
System::String ToString(Aspose::Words::SaveFormat saveFormat)
Exports the content of the node into a string in the specified format.
@ Range
Represents a paragraph of text.
Definition: Paragraph.h:220
System::SharedPtr< Aspose::Words::Node > get_NextSibling()
Gets the node immediately following this node.
@ Markdown
Markdown text document.
virtual bool get_IsComposite()
Returns true if this node can contain other nodes.
@ FormField
Implements the PAGEREF field.
Definition: FieldPageRef.h:41
@ Tables
@ BookmarkStart
A beginning of a bookmark marker.
@ Layout
Module that builds a document layout.
Represents a start of a bookmark in a Word document.
Definition: BookmarkStart.h:58
@ EditableRangeEnd
An end of an editable range.
void Remove()
Removes itself from the parent.
Represents a single form field.
Definition: FormField.h:81
System::SharedPtr< Aspose::Words::Range > get_Range()
Returns a Range object that represents the portion of a document that is contained in this node.
@ Paragraph
Specifies that the building block shall be inserted into its own paragraph.
virtual Aspose::Words::NodeType get_NodeType() const =0
Gets the type of this node.
System::String ToString(System::SharedPtr< Aspose::Words::Saving::SaveOptions > saveOptions)
Exports the content of the node into a string using the specified save options.
VisitorAction
Allows the visitor to control the enumeration of nodes.
Definition: VisitorAction.h:23
Denotes the start of a region of text that has a comment associated with it.
Definition: CommentRangeStart.h:39
Implements the REF field.
Definition: FieldRef.h:48