130 defs_[jss::TYPES][
"Done"] = -1;
132 for (
auto const& [rawName, typeValue] :
kSTypeMap)
135 defs_[jss::TYPES][typeName] = typeValue;
136 typeMap[typeValue] = typeName;
141 defs_[jss::LEDGER_ENTRY_TYPES][jss::Invalid] = -1;
145 defs_[jss::LEDGER_ENTRY_TYPES][f.getName()] = f.getType();
158 v[jss::isVLEncoded] =
false;
159 v[jss::isSerialized] =
false;
160 v[jss::isSigningField] =
false;
161 v[jss::type] =
"Unknown";
163 defs_[jss::FIELDS][i++] = a;
168 a[0U] =
"ObjectEndMarker";
171 v[jss::isVLEncoded] =
false;
172 v[jss::isSerialized] =
true;
173 v[jss::isSigningField] =
true;
174 v[jss::type] =
"STObject";
176 defs_[jss::FIELDS][i++] = a;
181 a[0U] =
"ArrayEndMarker";
184 v[jss::isVLEncoded] =
false;
185 v[jss::isSerialized] =
true;
186 v[jss::isSigningField] =
true;
187 v[jss::type] =
"STArray";
189 defs_[jss::FIELDS][i++] = a;
194 a[0U] =
"taker_gets_funded";
197 v[jss::isVLEncoded] =
false;
198 v[jss::isSerialized] =
false;
199 v[jss::isSigningField] =
false;
200 v[jss::type] =
"Amount";
202 defs_[jss::FIELDS][i++] = a;
207 a[0U] =
"taker_pays_funded";
210 v[jss::isVLEncoded] =
false;
211 v[jss::isSerialized] =
false;
212 v[jss::isSigningField] =
false;
213 v[jss::type] =
"Amount";
215 defs_[jss::FIELDS][i++] = a;
222 for (
auto const& [code, field] : kSortedFields)
224 if (field->fieldName.empty())
229 int32_t
const type = field->fieldType;
231 innerObj[jss::nth] = field->fieldValue;
235 innerObj[jss::isVLEncoded] =
236 (type == STI_VL || type == STI_ACCOUNT || type == STI_VECTOR256);
238 STI_VL == 7U && STI_ACCOUNT == 8U && STI_VECTOR256 == 19U,
239 "STI_VL, STI_ACCOUNT, STI_VECTOR256 must be 7, 8, 19 respectively");
242 innerObj[jss::isSerialized] =
243 (type < 10000 && field->fieldName !=
"hash" &&
248 innerObj[jss::isSigningField] = field->shouldInclude(
false);
250 innerObj[jss::type] = typeMap[type];
253 innerArray[0U] = field->fieldName;
254 innerArray[1U] = innerObj;
256 defs_[jss::FIELDS][i++] = innerArray;
264 defs_[jss::TRANSACTION_RESULTS][terInfo.first] = code;
269 defs_[jss::TRANSACTION_TYPES][jss::Invalid] = -1;
272 defs_[jss::TRANSACTION_TYPES][f.getName()] = f.getType();
283 elementObj[jss::name] = element.sField().getName();
284 elementObj[jss::optionality] = element.style();
285 defs_[jss::TRANSACTION_FORMATS][jss::common].append(elementObj);
286 txCommonFields.insert(element.sField().getName());
291 auto const& soTemplate = format.getSOTemplate();
293 for (
auto const& element : soTemplate)
295 if (txCommonFields.contains(element.sField().getName()))
298 elementObj[jss::name] = element.sField().getName();
299 elementObj[jss::optionality] = element.style();
300 templateArray.
append(elementObj);
302 defs_[jss::TRANSACTION_FORMATS][format.getName()] = templateArray;
312 elementObj[jss::name] = element.sField().getName();
313 elementObj[jss::optionality] = element.style();
314 defs_[jss::LEDGER_ENTRY_FORMATS][jss::common].append(elementObj);
315 ledgerCommonFields.insert(element.sField().getName());
319 auto const& soTemplate = format.getSOTemplate();
321 for (
auto const& element : soTemplate)
323 if (ledgerCommonFields.contains(element.sField().getName()))
326 elementObj[jss::name] = element.sField().getName();
327 elementObj[jss::optionality] = element.style();
328 templateArray.
append(elementObj);
330 defs_[jss::LEDGER_ENTRY_FORMATS][format.getName()] = templateArray;
337 for (
auto const& [flagName, flagValue] : value)
339 txObj[flagName] = flagValue;
341 defs_[jss::TRANSACTION_FLAGS][name] = txObj;
348 for (
auto const& [flagName, flagValue] : value)
350 ledgerObj[flagName] = flagValue;
352 defs_[jss::LEDGER_ENTRY_FLAGS][name] = ledgerObj;
358 defs_[jss::ACCOUNT_SET_FLAGS][name] = value;