search/mag_sel search/close
RevisionCollection.h
1 // Copyright 2001-2021 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/shared_ptr.h>
12 #include <system/collections/ienumerator.h>
13 #include <system/collections/ienumerable.h>
14 #include <cstdint>
15 
16 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
17 
18 namespace System { namespace Collections { namespace Generic { template <typename> class List; } } }
19 namespace System { namespace Collections { namespace Generic { template <typename> class IList; } } }
20 namespace Aspose { template <typename> class EnumeratorWrapperPalGeneric; }
21 namespace Aspose { namespace Words { class Revision; } }
22 namespace Aspose { namespace Words { class Document; } }
23 namespace Aspose { namespace Words { class StyleCollection; } }
24 namespace Aspose { namespace Words { class RevisionGroupCollection; } }
25 namespace Aspose { namespace Words { class DocumentBase; } }
26 namespace Aspose { namespace Words { class RevisionNodeMatcher; } }
27 namespace Aspose { namespace Words { class Style; } }
28 namespace Aspose { namespace Words { class RevisionGroup; } }
29 namespace Aspose { namespace Words { class WordAttrCollection; } }
30 namespace Aspose { namespace Words { class Node; } }
31 namespace Aspose { namespace Words { enum class RevisionType; } }
32 namespace Aspose { namespace Words { namespace Revisions { class RevisionBase; } } }
33 namespace System { class String; }
34 
35 namespace Aspose {
36 
37 namespace Words {
38 
121 class ASPOSE_WORDS_SHARED_CLASS RevisionCollection : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Words::Revision>>
122 {
125 
126  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
127  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
128 
129  friend class Aspose::Words::Revision;
130  friend class Aspose::Words::Document;
131  friend class Aspose::Words::StyleCollection;
132 
133 private:
134 
135  class RevisionIterator final : public System::Collections::Generic::IEnumerator<System::SharedPtr<Aspose::Words::Revision>>
136  {
137  typedef RevisionIterator ThisType;
139 
140  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
141  RTTI_INFO_DECL();
142 
143  public:
144 
145  System::SharedPtr<Aspose::Words::Revision> get_Current() const override;
146 
147  RevisionIterator(System::SharedPtr<Aspose::Words::RevisionCollection> revisions);
148 
149  void Dispose() override;
150  bool MoveNext() override;
151  void Reset() override;
152 
153  private:
154 
156  int32_t mCollectionChangeCount;
159  int32_t mIndex;
161 
162  static const System::String& ExceptionMessage();
163 
164  };
165 
166 public:
167 
248  ASPOSE_WORDS_SHARED_API int32_t get_Count();
249 
308 
343  ASPOSE_WORDS_SHARED_API void AcceptAll();
344 
402  ASPOSE_WORDS_SHARED_API void RejectAll();
403 
495  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Revision> idx_get(int32_t index);
496 
555 
556 protected:
557 
558  int32_t get_EmptyFormatRevisionsCount();
559  int32_t get_ChangeCount() const;
560 
562 
563  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(RevisionCollection, CODEPORTING_ARGS(System::SharedPtr<Aspose::Words::DocumentBase> doc));
564  void Invalidate(System::SharedPtr<Aspose::Words::Revision> revision);
565  void Remove(System::SharedPtr<Aspose::Words::Style> style);
566  void AddStyleRevisions(System::SharedPtr<Aspose::Words::Style> style);
569 
570  virtual ASPOSE_WORDS_SHARED_API ~RevisionCollection();
571 
572 private:
573 
574  int32_t get_DocumentChangeCount();
575 
576  int32_t mChangeCount;
577  int32_t mDocumentChangeCount;
582 
583  static System::SharedPtr<Aspose::Words::RevisionNodeMatcher>& gRevisionNodeMatcher();
584 
586 
587  void InvalidateAll();
588  void CollectRevisions();
589  void CheckInvalidate();
590  void AddEmptyStyleFormatRevision(System::SharedPtr<Aspose::Words::Style> style);
594  void IncrementChangeCount(bool incChangeCount);
595 
596 };
597 
598 }
599 }