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