1#parse("com/amazonaws/util/awsclientgenerator/velocity/cfamily/Attribution.vm")
2
3#set($metadata = $serviceModel.metadata)
4#set($rootNamespace = $serviceModel.namespace)
5#set($serviceNamespace = $metadata.namespace)
6\#include <aws/${metadata.projectName}/model/${typeInfo.className}.h>
7\#include <aws/core/utils/xml/XmlSerializer.h>
8\#include <aws/core/utils/StringUtils.h>
9\#include <aws/core/utils/memory/stl/AWSStringStream.h>
10#foreach($header in $typeInfo.sourceIncludes)
11\#include $header
12#end
13
14\#include <utility>
15
16using namespace Aws::Utils::Xml;
17using namespace Aws::Utils;
18
19namespace ${rootNamespace}
20{
21namespace ${serviceNamespace}
22{
23namespace Model
24{
25
26#set($useRequiredField = true)
27#parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/ModelClassMembersGenerateInitializers.vm")
28${typeInfo.className}::${typeInfo.className}()$initializers
29{
30}
31
32${typeInfo.className}::${typeInfo.className}(const XmlNode& xmlNode)$initializers
33{
34  *this = xmlNode;
35}
36
37${typeInfo.className}& ${typeInfo.className}::operator =(const XmlNode& xmlNode)
38{
39  XmlNode resultNode = xmlNode;
40
41  if(!resultNode.IsNull())
42  {
43#set($useRequiredField = true)
44#parse("com/amazonaws/util/awsclientgenerator/velocity/cpp/xml/ModelClassMembersDeserializeXml.vm")
45  }
46
47  return *this;
48}
49
50#if($shape.members.isEmpty())
51void ${typeInfo.className}::OutputToStream(Aws::OStream&, const char*, unsigned, const char*) const
52#else
53void ${typeInfo.className}::OutputToStream(Aws::OStream& oStream, const char* location, unsigned index, const char* locationValue) const
54#end
55{
56#foreach($entry in $shape.members.entrySet())
57#set($memberName = $entry.key)
58#set($member = $entry.value)
59#set($lowerCaseVarName = $CppViewHelper.computeVariableName($memberName))
60#set($memberVarName = $CppViewHelper.computeMemberVariableName($memberName))
61#set($varNameHasBeenSet = $CppViewHelper.computeVariableHasBeenSetName($memberName))
62#set($spaces = "")
63#if(!$member.required)
64  if($varNameHasBeenSet)
65  {
66#set($spaces = "    ")
67#end
68#if($member.shape.structure)
69  ${spaces}Aws::StringStream ${lowerCaseVarName}LocationAndMemberSs;
70  ${spaces}${lowerCaseVarName}LocationAndMemberSs << location << index << locationValue << ".${memberName}";
71  ${spaces}${memberVarName}.OutputToStream(oStream, ${lowerCaseVarName}LocationAndMemberSs.str().c_str());
72#elseif($member.shape.string)
73  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}.c_str()) << "&";
74#elseif($member.shape.timeStamp)
75  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape)).c_str()) << "&";
76#elseif($member.shape.blob)
77  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << StringUtils::URLEncode(HashingUtils::Base64Encode(${memberVarName}).c_str()) << "&";
78#elseif($member.shape.double)
79    ${spaces}oStream << location << index << locationValue << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}) << "&";
80#elseif($member.shape.boolean)
81  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << std::boolalpha << ${memberVarName} << "&";
82#elseif($member.shape.primitive)
83  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << ${memberVarName} << "&";
84#elseif($member.shape.enum)
85  ${spaces}oStream << location << index << locationValue << ".${memberName}=" << ${member.shape.name}Mapper::GetNameFor${member.shape.name}(${memberVarName}) << "&";
86#elseif($member.shape.list)
87  ${spaces}unsigned ${lowerCaseVarName}Idx = 1;
88  ${spaces}for(auto& item : ${memberVarName})
89  ${spaces}{
90#if($metadata.protocol == "ec2")
91#if($member.queryName)
92#set($location = $member.queryName)
93#elseif($member.locationName)
94#set($location = $CppViewHelper.capitalizeFirstChar($member.locationName))
95#else
96#set($location = $memberName)
97#end
98#else
99#if($member.shape.listMember.locationName)
100#set($location = $member.shape.listMember.locationName)
101#else
102#set($location = $memberName + ".member")
103#end
104#end
105#if($member.shape.listMember.shape.structure)
106  ${spaces}  Aws::StringStream ${lowerCaseVarName}Ss;
107  ${spaces}  ${lowerCaseVarName}Ss << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++;
108  ${spaces}  item.OutputToStream(oStream, ${lowerCaseVarName}Ss.str().c_str());
109#elseif($member.shape.listMember.shape.string)
110  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
111#elseif($member.shape.listMember.shape.timeStamp)
112  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.listMember.shape)).c_str()) << "&";
113#elseif($member.shape.listMember.shape.blob)
114  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(HashingUtils::Base64Encode(item).c_str()) << "&";
115#elseif($member.shape.listMember.shape.double)
116  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item) << "&";
117#elseif($member.shape.listMember.shape.boolean)
118  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << std::boolalpha << item << "&";
119#elseif($member.shape.listMember.shape.primitive)
120  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << item << "&";
121#elseif($member.shape.listMember.shape.enum)
122  ${spaces}  oStream << location << index << locationValue << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << ${member.shape.listMember.shape.name}Mapper::GetNameFor${member.shape.listMember.shape.name}(item) << "&";
123#end
124  ${spaces}}
125#elseif($member.shape.map)
126#if($member.locationName)
127#set($mapLocationName = $member.locationName)
128#else
129#set($mapLocationName = $memberName + ".entry")
130#end
131#if($member.shape.mapKey.locationName)
132#set($mapKeyLocationName = $member.shape.mapKey.locationName)
133#else
134#set($mapKeyLocationName = "key")
135#end
136#if($member.shape.mapValue.locationName)
137#set($mapValueLocationName = $member.shape.mapValue.locationName)
138#else
139#set($mapValueLocationName = "value")
140#end
141  ${spaces}unsigned ${lowerCaseVarName}Idx = 1;
142  ${spaces}for(auto& item : ${memberVarName})
143  ${spaces}{
144  ${spaces}  oStream << location << index << locationValue << ".${mapLocationName}." << ${lowerCaseVarName}Idx << ".${mapKeyLocationName}="
145#if($member.shape.mapKey.shape.string)
146  ${spaces}      << StringUtils::URLEncode(item.first.c_str()) << "&";
147#elseif($member.shape.mapKey.shape.timeStamp)
148  ${spaces}      << StringUtils::URLEncode(item.first.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.mapKey.shape)).c_str()) << "&";
149#elseif($member.shape.mapKey.shape.enum)
150  ${spaces}      << StringUtils::URLEncode(${member.shape.mapKey.shape.name}Mapper::GetNameFor${member.shape.mapKey.shape.name}(item.first).c_str()) << "&";
151#elseif($member.shape.mapKey.shape.structure)
152  ${spaces}  item.first.OutputToStream(oStream, "${mapLocationName}.", ${lowerCaseVarName}Idx, ".${mapKeyLocationName}");
153#elseif($member.shape.mapKey.shape.double)
154  ${spaces}      << StringUtils::URLEncode(item.first) << "&";
155#elseif($member.shape.mapKey.shape.boolean)
156  ${spaces}      << std::boolalpha << item.first << "&";
157#else
158  ${spaces}      << item.first << "&";
159#end
160#if(!$member.shape.mapValue.shape.structure)
161  ${spaces}  oStream << location << index << locationValue << ".${mapLocationName}." << ${lowerCaseVarName}Idx << ".${mapValueLocationName}="
162#end
163#if($member.shape.mapValue.shape.string)
164  ${spaces}      << StringUtils::URLEncode(item.second.c_str()) << "&";
165#elseif($member.shape.mapValue.shape.timeStamp)
166  ${spaces}      << StringUtils::URLEncode(item.second.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.mapValue.shape)).c_str()) << "&";
167#elseif($member.shape.mapValue.shape.enum)
168  ${spaces}      << StringUtils::URLEncode(${member.shape.mapValue.shape.name}Mapper::GetNameFor${member.shape.mapValue.shape.name}(item.second).c_str()) << "&";
169#elseif($member.shape.mapValue.shape.structure)
170  ${spaces}  Aws::StringStream ${lowerCaseVarName}Ss;
171  ${spaces}  ${lowerCaseVarName}Ss << location << index << locationValue << ".${mapLocationName}." << ${lowerCaseVarName}Idx << ".${mapValueLocationName}";
172  ${spaces}  item.second.OutputToStream(oStream, ${lowerCaseVarName}Ss.str().c_str());
173#elseif($member.shape.mapValue.shape.double)
174  ${spaces}      << StringUtils::URLEncode(item.second) << "&";
175#elseif($member.shape.mapValue.shape.boolean)
176  ${spaces}      << std::boolalpha << item.second << "&";
177#else
178  ${spaces}      << item.second << "&";
179#end
180  ${spaces}  ${lowerCaseVarName}Idx++;
181  ${spaces}}
182#end
183#if(!$member.required)
184  }
185
186#end
187#end
188}
189
190#if($shape.members.isEmpty())
191void ${typeInfo.className}::OutputToStream(Aws::OStream&, const char*) const
192#else
193void ${typeInfo.className}::OutputToStream(Aws::OStream& oStream, const char* location) const
194#end
195{
196#foreach($entry in $shape.members.entrySet())
197#set($memberName = $entry.key)
198#set($member = $entry.value)
199#set($lowerCaseVarName = $CppViewHelper.computeVariableName($memberName))
200#set($memberVarName = $CppViewHelper.computeMemberVariableName($memberName))
201#set($varNameHasBeenSet = $CppViewHelper.computeVariableHasBeenSetName($memberName))
202#set($spaces = "")
203#if(!$member.required)
204  if($varNameHasBeenSet)
205  {
206#set($spaces = "    ")
207#end
208#if($member.shape.structure)
209  ${spaces}Aws::String ${lowerCaseVarName}LocationAndMember(location);
210  ${spaces}${lowerCaseVarName}LocationAndMember += ".${memberName}";
211  ${spaces}${memberVarName}.OutputToStream(oStream, ${lowerCaseVarName}LocationAndMember.c_str());
212#elseif($member.shape.string)
213  ${spaces}oStream << location << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}.c_str()) << "&";
214#elseif($member.shape.timeStamp)
215  ${spaces}oStream << location << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape)).c_str()) << "&";
216#elseif($member.shape.blob)
217  ${spaces}oStream << location << ".${memberName}=" << StringUtils::URLEncode(HashingUtils::Base64Encode(${memberVarName}).c_str()) << "&";
218#elseif($member.shape.double)
219    ${spaces}oStream << location << ".${memberName}=" << StringUtils::URLEncode(${memberVarName}) << "&";
220#elseif($member.shape.boolean)
221  ${spaces}oStream << location << ".${memberName}=" << std::boolalpha << ${memberVarName} << "&";
222#elseif($member.shape.primitive)
223  ${spaces}oStream << location << ".${memberName}=" << ${memberVarName} << "&";
224#elseif($member.shape.enum)
225  ${spaces}oStream << location << ".${memberName}=" << ${member.shape.name}Mapper::GetNameFor${member.shape.name}(${memberVarName}) << "&";
226#elseif($member.shape.list)
227  ${spaces}unsigned ${lowerCaseVarName}Idx = 1;
228  ${spaces}for(auto& item : ${memberVarName})
229  ${spaces}{
230#if($member.queryName)
231#set($location = $member.queryName)
232#elseif($member.locationName)
233#set($location = $CppViewHelper.capitalizeFirstChar($member.locationName))
234#elseif($member.shape.listMember.queryName)
235#set($location = $member.shape.listMember.queryName)
236#elseif($member.shape.listMember.locationName)
237#set($location = $member.shape.listMember.locationName)
238#if($metadata.protocol == "ec2")
239#set($location = $CppViewHelper.capitalizeFirstChar($location))
240#end
241#elseif($metadata.protocol == "ec2")
242#set($location = $memberName)
243#else
244#set($location = $memberName + ".member")
245#end
246#if($member.shape.listMember.shape.structure)
247  ${spaces}  Aws::StringStream ${lowerCaseVarName}Ss;
248  ${spaces}  ${lowerCaseVarName}Ss << location <<  ".${location}." << ${lowerCaseVarName}Idx++;
249  ${spaces}  item.OutputToStream(oStream, ${lowerCaseVarName}Ss.str().c_str());
250#elseif($member.shape.listMember.shape.string)
251  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
252#elseif($member.shape.listMember.shape.timeStamp)
253  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.listMember.shape)).c_str()) << "&";
254#elseif($member.shape.listMember.shape.blob)
255  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(HashingUtils::Base64Encode(item).c_str()) << "&";
256#elseif($member.shape.listMember.shape.double)
257    ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << StringUtils::URLEncode(item) << "&";
258#elseif($member.shape.listMember.shape.boolean)
259  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << std::boolalpha << item << "&";
260#elseif($member.shape.listMember.shape.primitive)
261  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << item << "&";
262#elseif($member.shape.listMember.shape.enum)
263  ${spaces}  oStream << location << ".${location}." << ${lowerCaseVarName}Idx++ << "=" << ${member.shape.listMember.shape.name}Mapper::GetNameFor${member.shape.listMember.shape.name}(item) << "&";
264#end
265  ${spaces}}
266#elseif($member.shape.map)
267#if($member.locationName)
268#set($mapLocationName = $member.locationName)
269#else
270#set($mapLocationName = $memberName + ".entry")
271#end
272#if($member.shape.mapKey.locationName)
273#set($mapKeyLocationName = $member.shape.mapKey.locationName)
274#else
275#set($mapKeyLocationName = "key")
276#end
277#if($member.shape.mapValue.locationName)
278#set($mapValueLocationName = $member.shape.mapValue.locationName)
279#else
280#set($mapValueLocationName = "value")
281#end
282  ${spaces}unsigned ${lowerCaseVarName}Idx = 1;
283  ${spaces}for(auto& item : ${memberVarName})
284  ${spaces}{
285  ${spaces}  oStream << location << ".${mapLocationName}."  << ${lowerCaseVarName}Idx << ".${mapKeyLocationName}="
286#if($member.shape.mapKey.shape.string)
287  ${spaces}      << StringUtils::URLEncode(item.first.c_str()) << "&";
288#elseif($member.shape.mapKey.shape.timeStamp)
289  ${spaces}      << StringUtils::URLEncode(item.first.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.mapKey.shape)).c_str()) << "&";
290#elseif($member.shape.mapKey.shape.enum)
291  ${spaces}      << StringUtils::URLEncode(${member.shape.mapKey.shape.name}Mapper::GetNameFor${member.shape.mapKey.shape.name}(item.first).c_str()) << "&";
292#elseif($member.shape.mapKey.shape.double)
293  ${spaces}      << StringUtils::URLEncode(item.first) << "&";
294#elseif($member.shape.mapKey.shape.boolean)
295  ${spaces}      << std::boolalpha << item.first << "&";
296#else
297  ${spaces}      << item.first << "&";
298#end
299#if(!$member.shape.mapValue.shape.structure)
300  ${spaces}  oStream << location <<  ".${mapLocationName}." << ${lowerCaseVarName}Idx << ".${mapValueLocationName}="
301#end
302#if($member.shape.mapValue.shape.string)
303  ${spaces}      << StringUtils::URLEncode(item.second.c_str()) << "&";
304#elseif($member.shape.mapValue.shape.timeStamp)
305  ${spaces}      << StringUtils::URLEncode(item.second.ToGmtString(DateFormat::$CppViewHelper.computeTimestampFormatInQueryString($member.shape.mapValue.shape)).c_str()) << "&";
306#elseif($member.shape.mapValue.shape.enum)
307  ${spaces}      << StringUtils::URLEncode(${member.shape.mapValue.shape.name}Mapper::GetNameFor${member.shape.mapValue.shape.name}(item.second).c_str()) << "&";
308#elseif($member.shape.mapValue.shape.structure)
309  ${spaces}  Aws::StringStream ${lowerCaseVarName}Ss;
310  ${spaces}  ${lowerCaseVarName}Ss << location << ".${mapLocationName}." << ${lowerCaseVarName}Idx << ".${mapValueLocationName}";
311  ${spaces}  item.second.OutputToStream(oStream, ${lowerCaseVarName}Ss.str().c_str());
312#elseif($member.shape.mapValue.shape.double)
313  ${spaces}      << StringUtils::URLEncode(item.second) << "&";
314#elseif($member.shape.mapValue.shape.boolean)
315  ${spaces}      << std::boolalpha << item.second << "&";
316#else
317  ${spaces}      << item.second << "&";
318#end
319  ${spaces}  ${lowerCaseVarName}Idx++;
320  ${spaces}}
321
322#end
323#if(!$member.required)
324  }
325#end
326#end
327}
328
329} // namespace Model
330} // namespace ${serviceNamespace}
331} // namespace ${rootNamespace}
332