CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
xml_serialization_writer.h
1
2#pragma once
3#include <xml/xml_writer.h>
4#include <xml/xml_node.h>
5#include <xml/i_xml_serializable.h>
6#include <xml/xml_qualified_name.h>
7#include <xml/serialization/xml_serializer_namespaces.h>
8#include <system/type_info.h>
9#include <system/string.h>
10#include <system/shared_ptr.h>
11#include <system/reflection/assembly.h>
12#include <system/object.h>
13#include <system/exceptions.h>
14#include <system/date_time.h>
15#include <system/array.h>
16#include <system/collections/hashset.h>
17#include <system/collections/queue.h>
18#include <cstdint>
19
20namespace System {
21
22namespace Xml {
23
24namespace Serialization {
25
27class ASPOSECPP_SHARED_CLASS ABSTRACT XmlSerializationWriter : public System::Object
28{
30
31public:
36
37protected:
38
42 ASPOSECPP_SHARED_API void set_Writer(System::SharedPtr<XmlWriter> value);
43 ASPOSECPP_SHARED_API bool get_EscapeName();
44 ASPOSECPP_SHARED_API void set_EscapeName(bool value);
45
46 ASPOSECPP_SHARED_API XmlSerializationWriter();
47
48 ASPOSECPP_SHARED_API Exception CreateChoiceIdentifierValueException(String value, String identifier, String name, String ns);
50 ASPOSECPP_SHARED_API Exception CreateMismatchChoiceException(String value, String elementName, String enumValue);
53 ASPOSECPP_SHARED_API Exception CreateUnknownTypeException(const TypeInfo& type);
55 ASPOSECPP_SHARED_API static String FromByteArrayHex(System::ArrayPtr<uint8_t> value);
56 ASPOSECPP_SHARED_API static String FromChar(char16_t value);
57 ASPOSECPP_SHARED_API static String FromDate(DateTime value);
58 ASPOSECPP_SHARED_API static String FromDateTime(DateTime value);
59 ASPOSECPP_SHARED_API static String FromEnum(int64_t value, System::ArrayPtr<String> values, System::ArrayPtr<int64_t> ids);
60 ASPOSECPP_SHARED_API static String FromTime(DateTime value);
61 ASPOSECPP_SHARED_API static String FromXmlName(String name);
62 ASPOSECPP_SHARED_API static String FromXmlNCName(String ncName);
63 ASPOSECPP_SHARED_API static String FromXmlNmToken(String nmToken);
64 ASPOSECPP_SHARED_API static String FromXmlNmTokens(String nmTokens);
65 ASPOSECPP_SHARED_API String FromXmlQualifiedName(System::SharedPtr<XmlQualifiedName> xmlQualifiedName);
66 ASPOSECPP_SHARED_API virtual void InitCallbacks() = 0;
67 ASPOSECPP_SHARED_API void TopLevelElement();
68 ASPOSECPP_SHARED_API void WriteAttribute(String localName, System::ArrayPtr<uint8_t> value);
69 ASPOSECPP_SHARED_API void WriteAttribute(String localName, String value);
70 ASPOSECPP_SHARED_API void WriteAttribute(String localName, String ns, System::ArrayPtr<uint8_t> value);
71 ASPOSECPP_SHARED_API void WriteAttribute(String localName, String ns, String value);
72 ASPOSECPP_SHARED_API void WriteAttribute(String prefix, String localName, String ns, String value);
73 ASPOSECPP_SHARED_API void WriteElementEncoded(System::SharedPtr<XmlNode> node, String name, String ns, bool isNullable, bool any);
74 ASPOSECPP_SHARED_API void WriteElementLiteral(System::SharedPtr<XmlNode> node, String name, String ns, bool isNullable, bool any);
75 ASPOSECPP_SHARED_API void WriteElementQualifiedName(String localName, System::SharedPtr<XmlQualifiedName> value);
76 ASPOSECPP_SHARED_API void WriteElementQualifiedName(String localName, String ns, System::SharedPtr<XmlQualifiedName> value);
79 ASPOSECPP_SHARED_API void WriteElementString(String localName, String value);
80 ASPOSECPP_SHARED_API void WriteElementString(String localName, String ns, String value);
81 ASPOSECPP_SHARED_API void WriteElementString(String localName, String value, System::SharedPtr<XmlQualifiedName> xsiType);
82 ASPOSECPP_SHARED_API void WriteElementString(String localName, String ns, String value, System::SharedPtr<XmlQualifiedName> xsiType);
83 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, System::ArrayPtr<uint8_t> value);
84 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, String value);
86 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, String ns, System::ArrayPtr<uint8_t> value);
87 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, String ns, String value);
88 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, String value, System::SharedPtr<XmlQualifiedName> xsiType);
90 ASPOSECPP_SHARED_API void WriteElementStringRaw(String localName, String ns, String value, System::SharedPtr<XmlQualifiedName> xsiType);
91 ASPOSECPP_SHARED_API void WriteEmptyTag(String name);
92 ASPOSECPP_SHARED_API void WriteEmptyTag(String name, String ns);
93 ASPOSECPP_SHARED_API void WriteEndElement();
94 ASPOSECPP_SHARED_API void WriteEndElement(System::SharedPtr<Object> o);
95 ASPOSECPP_SHARED_API void WriteId(System::SharedPtr<Object> o);
99 ASPOSECPP_SHARED_API void WriteNullableStringEncoded(String name, String ns, String value, System::SharedPtr<XmlQualifiedName> xsiType);
101 ASPOSECPP_SHARED_API void WriteNullableStringEncodedRaw(String name, String ns, String value, System::SharedPtr<XmlQualifiedName> xsiType);
102 ASPOSECPP_SHARED_API void WriteNullableStringLiteral(String name, String ns, String value);
103 ASPOSECPP_SHARED_API void WriteNullableStringLiteralRaw(String name, String ns, System::ArrayPtr<uint8_t> value);
104 ASPOSECPP_SHARED_API void WriteNullableStringLiteralRaw(String name, String ns, String value);
105 ASPOSECPP_SHARED_API void WriteNullTagEncoded(String name);
106 ASPOSECPP_SHARED_API void WriteNullTagEncoded(String name, String ns);
107 ASPOSECPP_SHARED_API void WriteNullTagLiteral(String name);
108 ASPOSECPP_SHARED_API void WriteNullTagLiteral(String name, String ns);
110 ASPOSECPP_SHARED_API void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr<Object> o, const TypeInfo& ambientType);
111 ASPOSECPP_SHARED_API void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr<Object> o, const TypeInfo& ambientType, bool suppressReference);
112 ASPOSECPP_SHARED_API void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr<Object> o, const TypeInfo& ambientType, bool suppressReference, bool isNullable);
113 ASPOSECPP_SHARED_API void WriteReferencedElements();
115 ASPOSECPP_SHARED_API void WriteReferencingElement(String n, String ns, System::SharedPtr<Object> o, bool isNullable);
116 ASPOSECPP_SHARED_API void WriteRpcResult(String name, String ns);
117 ASPOSECPP_SHARED_API void WriteSerializable(System::SharedPtr<IXmlSerializable> serializable, String name, String ns, bool isNullable);
118 ASPOSECPP_SHARED_API void WriteSerializable(System::SharedPtr<IXmlSerializable> serializable, String name, String ns, bool isNullable, bool wrapped);
119 ASPOSECPP_SHARED_API void WriteStartDocument();
120 ASPOSECPP_SHARED_API void WriteStartElement(String name);
121 ASPOSECPP_SHARED_API void WriteStartElement(String name, String ns);
122 ASPOSECPP_SHARED_API void WriteStartElement(String name, String ns, bool writePrefixed);
123 ASPOSECPP_SHARED_API void WriteStartElement(String name, String ns, System::SharedPtr<Object> o);
124 ASPOSECPP_SHARED_API void WriteStartElement(String name, String ns, System::SharedPtr<Object> o, bool writePrefixed);
125 ASPOSECPP_SHARED_API void WriteStartElement(String name, String ns, System::SharedPtr<Object> o, bool writePrefixed, System::SharedPtr<XmlSerializerNamespaces> xmlns);
126 ASPOSECPP_SHARED_API void WriteTypedPrimitive(String name, String ns, System::SharedPtr<Object> o, bool xsiType);
127 ASPOSECPP_SHARED_API void WriteValue(System::ArrayPtr<uint8_t> value);
128 ASPOSECPP_SHARED_API void WriteValue(String value);
129 ASPOSECPP_SHARED_API void WriteXmlAttribute(System::SharedPtr<XmlNode> node);
131 ASPOSECPP_SHARED_API void WriteXsiType(String name, String ns);
133 ASPOSECPP_SHARED_API Exception CreateInvalidAnyTypeException(const TypeInfo& type);
135 ASPOSECPP_SHARED_API static String FromEnum(int64_t value, System::ArrayPtr<String> values, System::ArrayPtr<int64_t> ids, String typeName);
136 ASPOSECPP_SHARED_API String FromXmlQualifiedName(System::SharedPtr<XmlQualifiedName> xmlQualifiedName, bool ignoreEmpty);
137 ASPOSECPP_SHARED_API static System::SharedPtr<Reflection::Assembly> ResolveDynamicAssembly(String assemblyFullName);
138
139protected:
140#ifdef ASPOSE_GET_SHARED_MEMBERS
142 ASPOSECPP_SHARED_API void GetSharedMembers(System::Object::shared_members_type& result) const override;
143#endif
144
145private:
146 int32_t qnameCount;
147 bool topLevelElement;
152 static const String xmlNamespace;
153 static const String unexpectedTypeError;
154
155 String GetId(System::SharedPtr<Object> o, bool addToReferencesList);
156 bool AlreadyQueued(System::SharedPtr<Object> ob);
157 String GetNamespacePrefix(String ns);
158 String GetQualifiedName(String name, String ns);
159 void WriteXmlNode(System::SharedPtr<XmlNode> node);
160 void CheckReferenceQueue();
161 void WriteStartElementInternal(String name, String ns, System::SharedPtr<Object> o, bool writePrefixed,
163};
164
165} // namespace Serialization
166} // namespace Xml
167} // namespace System
168
List forward declaration.
Definition: list.h:127
Represents a specific date and time value on the time continuum. This type should be allocated on sta...
Definition: date_time.h:50
Template that represents wrapper of exceptions that are derived from Exception class.
Definition: exception.h:113
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
Represents a particular type and provides information about it.
Definition: type_info.h:109
Service class improving XmlWriter experience.
Definition: xml_serialization_writer.h:28
void WriteElementStringRaw(String localName, String value)
void Initialize(System::SharedPtr< XmlWriter > writer, System::SharedPtr< XmlSerializerNamespaces > nss)
Initializes XmlSerializationReader class.
String FromXmlQualifiedName(System::SharedPtr< XmlQualifiedName > xmlQualifiedName, bool ignoreEmpty)
void WriteAttribute(String localName, String value)
void WriteReferencingElement(String n, String ns, System::SharedPtr< Object > o)
void WriteElementString(String localName, String value, System::SharedPtr< XmlQualifiedName > xsiType)
static String FromEnum(int64_t value, System::ArrayPtr< String > values, System::ArrayPtr< int64_t > ids, String typeName)
void WriteElementStringRaw(String localName, System::ArrayPtr< uint8_t > value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteAttribute(String localName, System::ArrayPtr< uint8_t > value)
void WriteNamespaceDeclarations(System::SharedPtr< XmlSerializerNamespaces > xmlns)
void WriteElementStringRaw(String localName, System::ArrayPtr< uint8_t > value)
String FromXmlQualifiedName(System::SharedPtr< XmlQualifiedName > xmlQualifiedName)
void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr< Object > o, const TypeInfo &ambientType, bool suppressReference)
void WriteSerializable(System::SharedPtr< IXmlSerializable > serializable, String name, String ns, bool isNullable, bool wrapped)
void WriteElementQualifiedName(String localName, System::SharedPtr< XmlQualifiedName > value)
void set_Namespaces(System::SharedPtr< System::Collections::Generic::List< System::SharedPtr< Xml::XmlQualifiedName > > > value)
Exception CreateInvalidEnumValueException(System::SharedPtr< Object > value, String typeName)
void WriteXmlAttribute(System::SharedPtr< XmlNode > node)
void WriteNullableStringLiteral(String name, String ns, String value)
void WriteStartElement(String name, String ns)
void WriteXmlAttribute(System::SharedPtr< XmlNode > node, System::SharedPtr< Object > container)
static System::ArrayPtr< uint8_t > FromByteArrayBase64(System::ArrayPtr< uint8_t > value)
Exception CreateChoiceIdentifierValueException(String value, String identifier, String name, String ns)
void WriteAttribute(String localName, String ns, System::ArrayPtr< uint8_t > value)
void WriteElementLiteral(System::SharedPtr< XmlNode > node, String name, String ns, bool isNullable, bool any)
void WriteNullableQualifiedNameLiteral(String name, String ns, System::SharedPtr< XmlQualifiedName > value)
void WriteId(System::SharedPtr< Object > o)
void WriteValue(System::ArrayPtr< uint8_t > value)
void WriteEndElement(System::SharedPtr< Object > o)
void WriteElementEncoded(System::SharedPtr< XmlNode > node, String name, String ns, bool isNullable, bool any)
void WriteElementStringRaw(String localName, String value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteNullableStringEncodedRaw(String name, String ns, System::ArrayPtr< uint8_t > value, System::SharedPtr< XmlQualifiedName > xsiType)
static String FromByteArrayHex(System::ArrayPtr< uint8_t > value)
void WriteNullableQualifiedNameEncoded(String name, String ns, System::SharedPtr< XmlQualifiedName > value, System::SharedPtr< XmlQualifiedName > xsiType)
void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr< Object > o)
Exception CreateMismatchChoiceException(String value, String elementName, String enumValue)
void WriteTypedPrimitive(String name, String ns, System::SharedPtr< Object > o, bool xsiType)
Exception CreateUnknownTypeException(const TypeInfo &type)
void WriteElementStringRaw(String localName, String ns, String value)
void WriteStartElement(String name, String ns, System::SharedPtr< Object > o, bool writePrefixed)
Exception CreateInvalidChoiceIdentifierValueException(String type, String identifier)
void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr< Object > o, const TypeInfo &ambientType)
void WriteElementQualifiedName(String localName, System::SharedPtr< XmlQualifiedName > value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteElementQualifiedName(String localName, String ns, System::SharedPtr< XmlQualifiedName > value, System::SharedPtr< XmlQualifiedName > xsiType)
static String FromXmlNmTokens(String nmTokens)
void WriteNullableStringLiteralRaw(String name, String ns, System::ArrayPtr< uint8_t > value)
void WriteNullableStringEncoded(String name, String ns, String value, System::SharedPtr< XmlQualifiedName > xsiType)
Exception CreateInvalidAnyTypeException(const TypeInfo &type)
void WriteStartElement(String name, String ns, System::SharedPtr< Object > o, bool writePrefixed, System::SharedPtr< XmlSerializerNamespaces > xmlns)
Exception CreateUnknownAnyElementException(String name, String ns)
void WriteStartElement(String name, String ns, System::SharedPtr< Object > o)
void WriteElementStringRaw(String localName, String ns, System::ArrayPtr< uint8_t > value)
void WriteStartElement(String name, String ns, bool writePrefixed)
void WriteNullTagEncoded(String name, String ns)
System::SharedPtr< System::Collections::Generic::List< System::SharedPtr< Xml::XmlQualifiedName > > > get_Namespaces()
void WriteSerializable(System::SharedPtr< IXmlSerializable > serializable, String name, String ns, bool isNullable)
Exception CreateUnknownTypeException(System::SharedPtr< Object > o)
void WriteAttribute(String prefix, String localName, String ns, String value)
Exception CreateInvalidAnyTypeException(System::SharedPtr< Object > o)
static System::SharedPtr< Reflection::Assembly > ResolveDynamicAssembly(String assemblyFullName)
void WritePotentiallyReferencingElement(String n, String ns, System::SharedPtr< Object > o, const TypeInfo &ambientType, bool suppressReference, bool isNullable)
void WriteElementQualifiedName(String localName, String ns, System::SharedPtr< XmlQualifiedName > value)
void WriteNullableStringEncodedRaw(String name, String ns, String value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteAttribute(String localName, String ns, String value)
void WriteElementString(String localName, String value)
void WriteReferencingElement(String n, String ns, System::SharedPtr< Object > o, bool isNullable)
void WriteElementStringRaw(String localName, String ns, System::ArrayPtr< uint8_t > value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteElementStringRaw(String localName, String ns, String value, System::SharedPtr< XmlQualifiedName > xsiType)
void WriteElementString(String localName, String ns, String value)
void set_Writer(System::SharedPtr< XmlWriter > value)
System::SharedPtr< XmlWriter > get_Writer()
void WriteNullTagLiteral(String name, String ns)
void WriteElementString(String localName, String ns, String value, System::SharedPtr< XmlQualifiedName > xsiType)
static String FromXmlNmToken(String nmToken)
static String FromEnum(int64_t value, System::ArrayPtr< String > values, System::ArrayPtr< int64_t > ids)
void WriteNullableStringLiteralRaw(String name, String ns, String value)
@ Xml
Serialize according to the XML 1.0 rules.
Definition: db_command.h:9