search/mag_sel search/close
FieldIf.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/string.h>
12 #include <cstdint>
13 
14 #include <Aspose.Words.Cpp/Fields/IMergeFieldSurrogate.h>
15 #include <Aspose.Words.Cpp/Fields/FieldIfComparisonResult.h>
16 #include <Aspose.Words.Cpp/Fields/Field.h>
17 #include <Aspose.Words.Cpp/Fields/Expressions/IComparisonExpression.h>
18 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
19 
20 namespace Aspose { namespace Words { namespace Fields { class FieldStart; } } }
21 namespace Aspose { namespace Words { namespace Fields { class FieldSeparator; } } }
22 namespace Aspose { namespace Words { namespace Fields { class FieldEnd; } } }
23 namespace Aspose { namespace Words { namespace Fields { class FieldArgument; } } }
24 namespace Aspose { namespace Words { namespace Fields { namespace Expressions { class Constant; } } } }
25 namespace Aspose { namespace Words { namespace Fields { class FieldUpdateAction; } } }
26 namespace Aspose { namespace Words { namespace Fields { enum class FieldUpdateStrategy; } } }
27 namespace Aspose { namespace Words { namespace Fields { class IFieldArgument; } } }
28 namespace System { namespace Text { namespace RegularExpressions { class Regex; } } }
29 namespace Aspose { namespace Words { namespace Fields { class FieldCode; } } }
30 
31 namespace Aspose {
32 
33 namespace Words {
34 
35 namespace Fields {
36 
85 class ASPOSE_WORDS_SHARED_CLASS FieldIf : public Aspose::Words::Fields::Field, public Aspose::Words::Fields::IMergeFieldSurrogate
86 {
87  typedef FieldIf ThisType;
89  typedef Aspose::Words::Fields::IMergeFieldSurrogate BaseType1;
90 
91  typedef ::System::BaseTypesInfo<BaseType, BaseType1> ThisTypeBaseTypesInfo;
92  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
93 
94 private:
95 
96  class FieldIfComparisonExpression : public Aspose::Words::Fields::Expressions::IComparisonExpression
97  {
98  typedef FieldIfComparisonExpression ThisType;
99  typedef Aspose::Words::Fields::Expressions::IComparisonExpression BaseType;
100 
101  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
102  RTTI_INFO_DECL();
103 
104  private:
105 
106  class FieldIfArgumentsBundle : public System::Object
107  {
108  typedef FieldIfArgumentsBundle ThisType;
109  typedef System::Object BaseType;
110 
111  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
112  RTTI_INFO_DECL();
113 
114  public:
115 
116  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_LeftExpressionArgument() const;
117  System::String get_LeftExpression() const;
118  System::String get_ComparisonOperator() const;
119  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_RightExpressionArgument() const;
120  System::String get_RightExpression() const;
121  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_TrueResultArgument() const;
122  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_FalseResultArgument() const;
123 
124  FieldIfArgumentsBundle(System::SharedPtr<Aspose::Words::Fields::FieldArgument> leftExpressionArgument, System::String leftExpression, System::String comparisonOperator, System::SharedPtr<Aspose::Words::Fields::FieldArgument> rightExpressionArgument, System::String rightExpression, System::SharedPtr<Aspose::Words::Fields::FieldArgument> trueResultArgument, System::SharedPtr<Aspose::Words::Fields::FieldArgument> falseResultArgument);
125 
126  private:
127 
129  System::String pr_LeftExpression;
130  System::String pr_ComparisonOperator;
132  System::String pr_RightExpression;
135 
136  };
137 
138  public:
139 
140  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_LeftExpressionArgument();
141  System::String get_LeftExpression() override;
142  System::String get_ComparisonOperator() override;
143  System::SharedPtr<Aspose::Words::Fields::FieldArgument> get_RightExpressionArgument();
144  System::String get_RightExpression() override;
147 
148  FieldIfComparisonExpression(System::SharedPtr<Aspose::Words::Fields::FieldCode> fieldCode);
149 
150  private:
151 
153 
157 
158  };
159 
160 public:
161 
164 
167 
170 
214  ASPOSE_WORDS_SHARED_API System::String get_LeftExpression();
215 
217  ASPOSE_WORDS_SHARED_API void set_LeftExpression(System::String value);
218 
262  ASPOSE_WORDS_SHARED_API System::String get_ComparisonOperator();
263 
265  ASPOSE_WORDS_SHARED_API void set_ComparisonOperator(System::String value);
266 
310  ASPOSE_WORDS_SHARED_API System::String get_RightExpression();
311 
313  ASPOSE_WORDS_SHARED_API void set_RightExpression(System::String value);
314 
358  ASPOSE_WORDS_SHARED_API System::String get_TrueText();
359 
361  ASPOSE_WORDS_SHARED_API void set_TrueText(System::String value);
362 
406  ASPOSE_WORDS_SHARED_API System::String get_FalseText();
407 
409  ASPOSE_WORDS_SHARED_API void set_FalseText(System::String value);
410 
411  ASPOSE_WORDS_SHARED_API System::String GetMergeFieldName() override;
412  ASPOSE_WORDS_SHARED_API bool CanWorkAsMergeField() override;
413  ASPOSE_WORDS_SHARED_API bool IsMergeValueRequired() override;
414 
461 
462 protected:
463 
464  ASPOSE_WORDS_SHARED_API bool get_SupportsConditionalUpdate() override;
465 
466  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Fields::FieldUpdateAction> UpdateCore() override;
467  ASPOSE_WORDS_SHARED_API Aspose::Words::Fields::FieldUpdateStrategy GetChildFieldsUpdateStrategyInArgument(System::SharedPtr<Aspose::Words::Fields::IFieldArgument> argument) override;
468  ASPOSE_WORDS_SHARED_API void NotifyChildFieldUpdated(System::SharedPtr<Aspose::Words::Fields::IFieldArgument> argument) override;
469  ASPOSE_WORDS_SHARED_API void ParseFieldCode() override;
470 
471  virtual ASPOSE_WORDS_SHARED_API ~FieldIf();
472 
473 private:
474 
478 
480  static const int32_t TrueResultArgumentIndex;
481  static const int32_t FalseResultArgumentIndex;
482  static const int32_t LeftExpressionArgumentIndex;
483  static const int32_t ComparisonOperatorArgumentIndex;
484  static const int32_t RightExpressionArgumentIndex;
485  static const int32_t TrueTextArgumentIndex;
486  static const int32_t FalseTextArgumentIndex;
487 
488  void EnsureComparisonResult();
489  void InvalidateComparisonResult();
492 
493 };
494 
495 }
496 }
497 }