quicktype-core 23.0.70 → 23.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,14 +44,49 @@ const pascalUpperAcronymsValue = ["pascal-case-upper-acronyms", "pascal-upper-ac
44
44
  const camelUpperAcronymsValue = ["camel-case-upper-acronyms", "camel-upper-acronyms"];
45
45
  /* cJSON generator options */
46
46
  exports.cJSONOptions = {
47
- typeSourceStyle: new RendererOptions_1.EnumOption("source-style", "Source code generation type, whether to generate single or multiple source files", [["single-source", true], ["multi-source", false]], "single-source", "secondary"),
48
- typeIntegerSize: new RendererOptions_1.EnumOption("integer-size", "Integer code generation type (int64_t by default)", [["int8_t", "int8_t"], ["int16_t", "int16_t"], ["int32_t", "int32_t"], ["int64_t", "int64_t"]], "int64_t", "secondary"),
47
+ typeSourceStyle: new RendererOptions_1.EnumOption("source-style", "Source code generation type, whether to generate single or multiple source files", [
48
+ ["single-source", true],
49
+ ["multi-source", false]
50
+ ], "single-source", "secondary"),
51
+ typeIntegerSize: new RendererOptions_1.EnumOption("integer-size", "Integer code generation type (int64_t by default)", [
52
+ ["int8_t", "int8_t"],
53
+ ["int16_t", "int16_t"],
54
+ ["int32_t", "int32_t"],
55
+ ["int64_t", "int64_t"]
56
+ ], "int64_t", "secondary"),
49
57
  hashtableSize: new RendererOptions_1.StringOption("hashtable-size", "Hashtable size, used when maps are created (64 by default)", "SIZE", "64"),
50
- addTypedefAlias: new RendererOptions_1.EnumOption("typedef-alias", "Add typedef alias to unions, structs, and enums (no typedef by default)", [["no-typedef", false], ["add-typedef", true]], "no-typedef", "secondary"),
51
- printStyle: new RendererOptions_1.EnumOption("print-style", "Which cJSON print should be used (formatted by default)", [["print-formatted", false], ["print-unformatted", true]], "print-formatted", "secondary"),
52
- typeNamingStyle: new RendererOptions_1.EnumOption("type-style", "Naming style for types", [pascalValue, underscoreValue, camelValue, upperUnderscoreValue, pascalUpperAcronymsValue, camelUpperAcronymsValue]),
53
- memberNamingStyle: new RendererOptions_1.EnumOption("member-style", "Naming style for members", [underscoreValue, pascalValue, camelValue, upperUnderscoreValue, pascalUpperAcronymsValue, camelUpperAcronymsValue]),
54
- enumeratorNamingStyle: new RendererOptions_1.EnumOption("enumerator-style", "Naming style for enumerators", [upperUnderscoreValue, underscoreValue, pascalValue, camelValue, pascalUpperAcronymsValue, camelUpperAcronymsValue])
58
+ addTypedefAlias: new RendererOptions_1.EnumOption("typedef-alias", "Add typedef alias to unions, structs, and enums (no typedef by default)", [
59
+ ["no-typedef", false],
60
+ ["add-typedef", true]
61
+ ], "no-typedef", "secondary"),
62
+ printStyle: new RendererOptions_1.EnumOption("print-style", "Which cJSON print should be used (formatted by default)", [
63
+ ["print-formatted", false],
64
+ ["print-unformatted", true]
65
+ ], "print-formatted", "secondary"),
66
+ typeNamingStyle: new RendererOptions_1.EnumOption("type-style", "Naming style for types", [
67
+ pascalValue,
68
+ underscoreValue,
69
+ camelValue,
70
+ upperUnderscoreValue,
71
+ pascalUpperAcronymsValue,
72
+ camelUpperAcronymsValue
73
+ ]),
74
+ memberNamingStyle: new RendererOptions_1.EnumOption("member-style", "Naming style for members", [
75
+ underscoreValue,
76
+ pascalValue,
77
+ camelValue,
78
+ upperUnderscoreValue,
79
+ pascalUpperAcronymsValue,
80
+ camelUpperAcronymsValue
81
+ ]),
82
+ enumeratorNamingStyle: new RendererOptions_1.EnumOption("enumerator-style", "Naming style for enumerators", [
83
+ upperUnderscoreValue,
84
+ underscoreValue,
85
+ pascalValue,
86
+ camelValue,
87
+ pascalUpperAcronymsValue,
88
+ camelUpperAcronymsValue
89
+ ])
55
90
  };
56
91
  /* cJSON generator target language */
57
92
  class CJSONTargetLanguage extends TargetLanguage_1.TargetLanguage {
@@ -376,7 +411,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
376
411
  /* Create file */
377
412
  this.startFile(proposedFilename);
378
413
  /* Create types */
379
- this.forEachDeclaration("leading-and-interposing", (decl) => {
414
+ this.forEachDeclaration("leading-and-interposing", decl => {
380
415
  if (decl.kind === "forward") {
381
416
  this.emitLine("struct ", this.nameForNamedType(decl.type), ";");
382
417
  }
@@ -511,7 +546,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
511
546
  let onFirst = true;
512
547
  const combinedName = (0, Strings_1.allUpperWordStyle)(this.sourcelikeToString(enumName));
513
548
  this.forEachEnumCase(enumType, "none", (name, jsonName) => {
514
- this.emitLine(onFirst ? "" : "else ", "if (!strcmp(cJSON_GetStringValue(j), \"", jsonName, "\")) x = ", combinedName, "_", name, ";");
549
+ this.emitLine(onFirst ? "" : "else ", 'if (!strcmp(cJSON_GetStringValue(j), "', jsonName, '")) x = ', combinedName, "_", name, ";");
515
550
  onFirst = false;
516
551
  });
517
552
  });
@@ -524,7 +559,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
524
559
  this.emitBlock(["switch (x)"], () => {
525
560
  const combinedName = (0, Strings_1.allUpperWordStyle)(this.sourcelikeToString(enumName));
526
561
  this.forEachEnumCase(enumType, "none", (name, jsonName) => {
527
- this.emitLine("case ", combinedName, "_", name, ": j = cJSON_CreateString(\"", jsonName, "\"); break;");
562
+ this.emitLine("case ", combinedName, "_", name, ': j = cJSON_CreateString("', jsonName, '"); break;');
528
563
  });
529
564
  });
530
565
  this.emitLine("return j;");
@@ -566,7 +601,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
566
601
  this.emitBlock(["union"], () => {
567
602
  for (const type of nonNulls) {
568
603
  const cJSON = this.quicktypeTypeToCJSON(type, false);
569
- this.emitLine(cJSON.cType, (cJSON.optionalQualifier !== "") ? " " : "", cJSON.optionalQualifier, " ", this.nameForUnionMember(unionType, type), ";");
604
+ this.emitLine(cJSON.cType, cJSON.optionalQualifier !== "" ? " " : "", cJSON.optionalQualifier, " ", this.nameForUnionMember(unionType, type), ";");
570
605
  }
571
606
  }, "value", true);
572
607
  }, "", true);
@@ -605,15 +640,21 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
605
640
  }
606
641
  for (const type of nonNulls) {
607
642
  const cJSON = this.quicktypeTypeToCJSON(type, false);
608
- this.emitBlock([(onFirst === true) ? "if (" : "else if (", cJSON.isType, "(j))"], () => {
643
+ this.emitBlock([onFirst === true ? "if (" : "else if (", cJSON.isType, "(j))"], () => {
609
644
  this.emitLine("x->type = ", cJSON.cjsonType, ";");
610
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
645
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
611
646
  const level = 0;
612
647
  const child_level = 1;
613
648
  this.emitLine(cJSON.cType, " * x", child_level.toString(), " = list_create(false, NULL);");
614
649
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
615
650
  this.emitLine("cJSON * e", child_level.toString(), " = NULL;");
616
- this.emitBlock(["cJSON_ArrayForEach(e", child_level.toString(), ", j", (level > 0) ? level.toString() : "", ")"], () => {
651
+ this.emitBlock([
652
+ "cJSON_ArrayForEach(e",
653
+ child_level.toString(),
654
+ ", j",
655
+ level > 0 ? level.toString() : "",
656
+ ")"
657
+ ], () => {
617
658
  const add = (cJSON, level, child_level) => {
618
659
  if (cJSON.items.cjsonType === "cJSON_Array") {
619
660
  /* Not supported */
@@ -621,20 +662,22 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
621
662
  else if (cJSON.items.cjsonType === "cJSON_Map") {
622
663
  /* Not supported */
623
664
  }
624
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
665
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
666
+ cJSON.items.cjsonType === "cJSON_NULL") {
625
667
  this.emitLine("list_add_tail(x", child_level.toString(), ", (", cJSON.items.cType, " *)0xDEADBEEF, sizeof(", cJSON.items.cType, " *));");
626
668
  }
627
669
  else if (cJSON.items.cjsonType === "cJSON_String") {
628
670
  this.emitLine("list_add_tail(x", child_level.toString(), ", strdup(", cJSON.items.getValue, "(e", child_level.toString(), ")), sizeof(", cJSON.items.cType, " *));");
629
671
  }
630
- else if ((cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
672
+ else if (cJSON.items.cjsonType === "cJSON_Object" ||
673
+ cJSON.items.cjsonType === "cJSON_Union") {
631
674
  this.emitLine("list_add_tail(x", child_level.toString(), ", ", cJSON.items.getValue, "(e", child_level.toString(), "), sizeof(", cJSON.items.cType, " *));");
632
675
  }
633
676
  else {
634
- this.emitLine(cJSON.items.cType, " * tmp", (level > 0) ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
635
- this.emitBlock(["if (NULL != tmp", (level > 0) ? level.toString() : "", ")"], () => {
636
- this.emitLine("* tmp", (level > 0) ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
637
- this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", (level > 0) ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
677
+ this.emitLine(cJSON.items.cType, " * tmp", level > 0 ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
678
+ this.emitBlock(["if (NULL != tmp", level > 0 ? level.toString() : "", ")"], () => {
679
+ this.emitLine("* tmp", level > 0 ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
680
+ this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", level > 0 ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
638
681
  });
639
682
  }
640
683
  };
@@ -653,13 +696,19 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
653
696
  this.emitLine("x->value.", this.nameForUnionMember(unionType, type), " = x", child_level.toString(), ";");
654
697
  });
655
698
  }
656
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
699
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
657
700
  const level = 0;
658
701
  const child_level = 1;
659
702
  this.emitLine(cJSON.cType, " * x", child_level.toString(), " = hashtable_create(", this.hashtableSize, ", false);");
660
703
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
661
704
  this.emitLine("cJSON * e", child_level.toString(), " = NULL;");
662
- this.emitBlock(["cJSON_ArrayForEach(e", child_level.toString(), ", j", (level > 0) ? level.toString() : "", ")"], () => {
705
+ this.emitBlock([
706
+ "cJSON_ArrayForEach(e",
707
+ child_level.toString(),
708
+ ", j",
709
+ level > 0 ? level.toString() : "",
710
+ ")"
711
+ ], () => {
663
712
  const add = (cJSON, level, child_level) => {
664
713
  if (cJSON.items.cjsonType === "cJSON_Array") {
665
714
  /* Not supported */
@@ -667,20 +716,22 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
667
716
  else if (cJSON.items.cjsonType === "cJSON_Map") {
668
717
  /* Not supported */
669
718
  }
670
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
719
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
720
+ cJSON.items.cjsonType === "cJSON_NULL") {
671
721
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, (", cJSON.items.cType, " *)0xDEADBEEF, sizeof(", cJSON.items.cType, " *));");
672
722
  }
673
723
  else if (cJSON.items.cjsonType === "cJSON_String") {
674
724
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, strdup(", cJSON.items.getValue, "(e", child_level.toString(), ")), sizeof(", cJSON.items.cType, " *));");
675
725
  }
676
- else if ((cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
726
+ else if (cJSON.items.cjsonType === "cJSON_Object" ||
727
+ cJSON.items.cjsonType === "cJSON_Union") {
677
728
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, ", cJSON.items.getValue, "(e", child_level.toString(), "), sizeof(", cJSON.items.cType, " *));");
678
729
  }
679
730
  else {
680
- this.emitLine(cJSON.items.cType, " * tmp", (level > 0) ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
681
- this.emitBlock(["if (NULL != tmp", (level > 0) ? level.toString() : "", ")"], () => {
682
- this.emitLine("* tmp", (level > 0) ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
683
- this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, tmp", (level > 0) ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
731
+ this.emitLine(cJSON.items.cType, " * tmp", level > 0 ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
732
+ this.emitBlock(["if (NULL != tmp", level > 0 ? level.toString() : "", ")"], () => {
733
+ this.emitLine("* tmp", level > 0 ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
734
+ this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, tmp", level > 0 ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
684
735
  });
685
736
  }
686
737
  };
@@ -699,7 +750,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
699
750
  this.emitLine("x->value.", this.nameForUnionMember(unionType, type), " = x", child_level.toString(), ";");
700
751
  });
701
752
  }
702
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
753
+ else if (cJSON.cjsonType === "cJSON_Invalid" || cJSON.cjsonType === "cJSON_NULL") {
703
754
  this.emitLine("x->value.", this.nameForUnionMember(unionType, type), " = (", cJSON.cType, " *)0xDEADBEEF;");
704
755
  }
705
756
  else if (cJSON.cjsonType === "cJSON_String") {
@@ -728,13 +779,13 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
728
779
  }
729
780
  for (const type of nonNulls) {
730
781
  const cJSON = this.quicktypeTypeToCJSON(type, false);
731
- this.emitBlock([(onFirst === true) ? "if (" : "else if (", cJSON.cjsonType, " == x->type)"], () => {
732
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
782
+ this.emitBlock([onFirst === true ? "if (" : "else if (", cJSON.cjsonType, " == x->type)"], () => {
783
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
733
784
  const level = 0;
734
785
  const child_level = 1;
735
786
  this.emitLine("cJSON * j", child_level.toString(), " = ", cJSON.createObject, "();");
736
787
  this.emitBlock(["if (NULL != j", child_level.toString(), ")"], () => {
737
- this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
788
+ this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
738
789
  this.emitBlock(["while (NULL != x", child_level.toString(), ")"], () => {
739
790
  const add = (cJSON, child_level) => {
740
791
  if (cJSON.items.cjsonType === "cJSON_Array") {
@@ -749,7 +800,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
749
800
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
750
801
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.items.createObject, "());");
751
802
  }
752
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
803
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
804
+ cJSON.items.cjsonType === "cJSON_Object" ||
805
+ cJSON.items.cjsonType === "cJSON_Union") {
753
806
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.items.createObject, "(x", child_level.toString(), "));");
754
807
  }
755
808
  else {
@@ -767,21 +820,31 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
767
820
  else {
768
821
  add(cJSON, child_level);
769
822
  }
770
- this.emitLine("x", child_level.toString(), " = list_get_next(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
823
+ this.emitLine("x", child_level.toString(), " = list_get_next(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
771
824
  });
772
825
  this.emitLine("j = j", child_level.toString(), ";");
773
826
  });
774
827
  }
775
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
828
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
776
829
  const level = 0;
777
830
  const child_level = 1;
778
831
  this.emitLine("cJSON * j", child_level.toString(), " = ", cJSON.createObject, "();");
779
832
  this.emitBlock(["if (NULL != j", child_level.toString(), ")"], () => {
780
833
  this.emitLine("char **keys", child_level.toString(), " = NULL;");
781
- this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", &keys", child_level.toString(), ");");
834
+ this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", &keys", child_level.toString(), ");");
782
835
  this.emitBlock(["if (NULL != keys", child_level.toString(), ")"], () => {
783
- this.emitBlock(["for (size_t index", child_level.toString(), " = 0; index", child_level.toString(), " < count", child_level.toString(), "; index", child_level.toString(), "++)"], () => {
784
- this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
836
+ this.emitBlock([
837
+ "for (size_t index",
838
+ child_level.toString(),
839
+ " = 0; index",
840
+ child_level.toString(),
841
+ " < count",
842
+ child_level.toString(),
843
+ "; index",
844
+ child_level.toString(),
845
+ "++)"
846
+ ], () => {
847
+ this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
785
848
  const add = (cJSON, child_level) => {
786
849
  if (cJSON.items.cjsonType === "cJSON_Array") {
787
850
  /* Not supported */
@@ -795,7 +858,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
795
858
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
796
859
  this.emitLine(cJSON.addToObject, "(j", child_level.toString(), ", keys", child_level.toString(), "[index", child_level.toString(), "], ", cJSON.items.createObject, "());");
797
860
  }
798
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
861
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
862
+ cJSON.items.cjsonType === "cJSON_Object" ||
863
+ cJSON.items.cjsonType === "cJSON_Union") {
799
864
  this.emitLine(cJSON.addToObject, "(j", child_level.toString(), ", keys", child_level.toString(), "[index", child_level.toString(), "], ", cJSON.items.createObject, "(x", child_level.toString(), "));");
800
865
  }
801
866
  else {
@@ -803,7 +868,11 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
803
868
  }
804
869
  };
805
870
  if (cJSON.items.isNullable) {
806
- this.emitBlock(["if ((void *)0xDEADBEEF != x", child_level.toString(), ")"], () => {
871
+ this.emitBlock([
872
+ "if ((void *)0xDEADBEEF != x",
873
+ child_level.toString(),
874
+ ")"
875
+ ], () => {
807
876
  add(cJSON, child_level);
808
877
  });
809
878
  this.emitBlock(["else"], () => {
@@ -841,12 +910,18 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
841
910
  let onFirst = true;
842
911
  for (const type of nonNulls) {
843
912
  const cJSON = this.quicktypeTypeToCJSON(type, false);
844
- this.emitBlock([(onFirst === true) ? "if (" : "else if (", cJSON.cjsonType, " == x->type)"], () => {
845
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
913
+ this.emitBlock([onFirst === true ? "if (" : "else if (", cJSON.cjsonType, " == x->type)"], () => {
914
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
846
915
  const level = 0;
847
916
  const child_level = 1;
848
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ")"], () => {
849
- this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
917
+ this.emitBlock([
918
+ "if (NULL != x",
919
+ level > 0 ? level.toString() : "",
920
+ "->value.",
921
+ this.nameForUnionMember(unionType, type),
922
+ ")"
923
+ ], () => {
924
+ this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
850
925
  this.emitBlock(["while (NULL != x", child_level.toString(), ")"], () => {
851
926
  if (cJSON.items.cjsonType === "cJSON_Array") {
852
927
  /* Not supported */
@@ -854,7 +929,8 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
854
929
  else if (cJSON.items.cjsonType === "cJSON_Map") {
855
930
  /* Not supported */
856
931
  }
857
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
932
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
933
+ cJSON.items.cjsonType === "cJSON_NULL") {
858
934
  /* Nothing to do */
859
935
  }
860
936
  else {
@@ -867,20 +943,36 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
867
943
  this.emitLine(cJSON.items.deleteType, "(x", child_level.toString(), ");");
868
944
  }
869
945
  }
870
- this.emitLine("x", child_level.toString(), " = list_get_next(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
946
+ this.emitLine("x", child_level.toString(), " = list_get_next(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
871
947
  });
872
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
948
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
873
949
  });
874
950
  }
875
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
951
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
876
952
  const level = 0;
877
953
  const child_level = 1;
878
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ")"], () => {
954
+ this.emitBlock([
955
+ "if (NULL != x",
956
+ level > 0 ? level.toString() : "",
957
+ "->value.",
958
+ this.nameForUnionMember(unionType, type),
959
+ ")"
960
+ ], () => {
879
961
  this.emitLine("char **keys", child_level.toString(), " = NULL;");
880
- this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", &keys", child_level.toString(), ");");
962
+ this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", &keys", child_level.toString(), ");");
881
963
  this.emitBlock(["if (NULL != keys", child_level.toString(), ")"], () => {
882
- this.emitBlock(["for (size_t index", child_level.toString(), " = 0; index", child_level.toString(), " < count", child_level.toString(), "; index", child_level.toString(), "++)"], () => {
883
- this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
964
+ this.emitBlock([
965
+ "for (size_t index",
966
+ child_level.toString(),
967
+ " = 0; index",
968
+ child_level.toString(),
969
+ " < count",
970
+ child_level.toString(),
971
+ "; index",
972
+ child_level.toString(),
973
+ "++)"
974
+ ], () => {
975
+ this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
884
976
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
885
977
  if (cJSON.items.cjsonType === "cJSON_Array") {
886
978
  /* Not supported */
@@ -888,12 +980,17 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
888
980
  else if (cJSON.items.cjsonType === "cJSON_Map") {
889
981
  /* Not supported */
890
982
  }
891
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
983
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
984
+ cJSON.items.cjsonType === "cJSON_NULL") {
892
985
  /* Nothing to do */
893
986
  }
894
987
  else {
895
988
  if (cJSON.items.isNullable) {
896
- this.emitBlock(["if ((void *)0xDEADBEEF != x", child_level.toString(), ")"], () => {
989
+ this.emitBlock([
990
+ "if ((void *)0xDEADBEEF != x",
991
+ child_level.toString(),
992
+ ")"
993
+ ], () => {
897
994
  this.emitLine(cJSON.items.deleteType, "(x", child_level.toString(), ");");
898
995
  });
899
996
  }
@@ -905,13 +1002,15 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
905
1002
  });
906
1003
  this.emitLine("cJSON_free(keys", child_level.toString(), ");");
907
1004
  });
908
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
1005
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->value.", this.nameForUnionMember(unionType, type), ");");
909
1006
  });
910
1007
  }
911
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1008
+ else if (cJSON.cjsonType === "cJSON_Invalid" || cJSON.cjsonType === "cJSON_NULL") {
912
1009
  /* Nothing to do */
913
1010
  }
914
- else if ((cJSON.cjsonType === "cJSON_String") || (cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1011
+ else if (cJSON.cjsonType === "cJSON_String" ||
1012
+ cJSON.cjsonType === "cJSON_Object" ||
1013
+ cJSON.cjsonType === "cJSON_Union") {
915
1014
  this.emitLine(cJSON.deleteType, "(x->value.", this.nameForUnionMember(unionType, type), ");");
916
1015
  }
917
1016
  else {
@@ -958,7 +1057,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
958
1057
  this.forEachClassProperty(classType, "none", (name, jsonName, property) => {
959
1058
  this.emitDescription(this.descriptionForClassProperty(classType, jsonName));
960
1059
  const cJSON = this.quicktypeTypeToCJSON(property.type, property.isOptional);
961
- this.emitLine(cJSON.cType, (cJSON.optionalQualifier !== "") ? " " : "", cJSON.optionalQualifier, " ", name, ";");
1060
+ this.emitLine(cJSON.cType, cJSON.optionalQualifier !== "" ? " " : "", cJSON.optionalQualifier, " ", name, ";");
962
1061
  });
963
1062
  }, "", true);
964
1063
  this.ensureBlankLine();
@@ -1018,20 +1117,22 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1018
1117
  else if (cJSON.cjsonType === "cJSON_Map") {
1019
1118
  /* Not supported */
1020
1119
  }
1021
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1120
+ else if (cJSON.cjsonType === "cJSON_Invalid" ||
1121
+ cJSON.cjsonType === "cJSON_NULL") {
1022
1122
  this.emitLine("list_add_tail(x", child_level.toString(), ", (", cJSON.cType, " *)0xDEADBEEF, sizeof(", cJSON.cType, " *));");
1023
1123
  }
1024
1124
  else if (cJSON.cjsonType === "cJSON_String") {
1025
1125
  this.emitLine("list_add_tail(x", child_level.toString(), ", strdup(", cJSON.getValue, "(e", child_level.toString(), ")), sizeof(", cJSON.cType, " *));");
1026
1126
  }
1027
- else if ((cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1127
+ else if (cJSON.cjsonType === "cJSON_Object" ||
1128
+ cJSON.cjsonType === "cJSON_Union") {
1028
1129
  this.emitLine("list_add_tail(x", child_level.toString(), ", ", cJSON.getValue, "(e", child_level.toString(), "), sizeof(", cJSON.cType, " *));");
1029
1130
  }
1030
1131
  else {
1031
- this.emitLine(cJSON.cType, " * tmp", (level > 0) ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.cType, "));");
1032
- this.emitBlock(["if (NULL != tmp", (level > 0) ? level.toString() : "", ")"], () => {
1033
- this.emitLine("* tmp", (level > 0) ? level.toString() : "", " = ", cJSON.getValue, "(e", child_level.toString(), ");");
1034
- this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", (level > 0) ? level.toString() : "", ", sizeof(", cJSON.cType, " *));");
1132
+ this.emitLine(cJSON.cType, " * tmp", level > 0 ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.cType, "));");
1133
+ this.emitBlock(["if (NULL != tmp", level > 0 ? level.toString() : "", ")"], () => {
1134
+ this.emitLine("* tmp", level > 0 ? level.toString() : "", " = ", cJSON.getValue, "(e", child_level.toString(), ");");
1135
+ this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", level > 0 ? level.toString() : "", ", sizeof(", cJSON.cType, " *));");
1035
1136
  });
1036
1137
  }
1037
1138
  });
@@ -1040,14 +1141,38 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1040
1141
  else if (type instanceof Type_1.ClassType) {
1041
1142
  this.forEachClassProperty(type, "none", (name, jsonName, property) => {
1042
1143
  const cJSON = this.quicktypeTypeToCJSON(property.type, property.isOptional);
1043
- this.emitBlock((!cJSON.isNullable) ? ["if (cJSON_HasObjectItem(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\"))"] : ["if ((cJSON_HasObjectItem(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\")) && (!cJSON_IsNull(cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\"))))"], () => {
1044
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
1144
+ this.emitBlock(!cJSON.isNullable
1145
+ ? [
1146
+ "if (cJSON_HasObjectItem(j",
1147
+ level > 0 ? level.toString() : "",
1148
+ ', "',
1149
+ jsonName,
1150
+ '"))'
1151
+ ]
1152
+ : [
1153
+ "if ((cJSON_HasObjectItem(j",
1154
+ level > 0 ? level.toString() : "",
1155
+ ', "',
1156
+ jsonName,
1157
+ '")) && (!cJSON_IsNull(cJSON_GetObjectItemCaseSensitive(j',
1158
+ level > 0 ? level.toString() : "",
1159
+ ', "',
1160
+ jsonName,
1161
+ '"))))'
1162
+ ], () => {
1163
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1045
1164
  const child_level = level + 1;
1046
1165
  this.emitLine(cJSON.cType, " * x", child_level.toString(), " = list_create(false, NULL);");
1047
1166
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
1048
1167
  this.emitLine("cJSON * e", child_level.toString(), " = NULL;");
1049
- this.emitLine("cJSON * j", child_level.toString(), " = cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1050
- this.emitBlock(["cJSON_ArrayForEach(e", child_level.toString(), ", j", child_level.toString(), ")"], () => {
1168
+ this.emitLine("cJSON * j", child_level.toString(), " = cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1169
+ this.emitBlock([
1170
+ "cJSON_ArrayForEach(e",
1171
+ child_level.toString(),
1172
+ ", j",
1173
+ child_level.toString(),
1174
+ ")"
1175
+ ], () => {
1051
1176
  const add = (type, cJSON, level, child_level) => {
1052
1177
  if (cJSON.items.cjsonType === "cJSON_Array") {
1053
1178
  if (type instanceof Type_1.ArrayType) {
@@ -1062,25 +1187,35 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1062
1187
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1063
1188
  /* Not supported */
1064
1189
  }
1065
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1190
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1191
+ cJSON.items.cjsonType === "cJSON_NULL") {
1066
1192
  this.emitLine("list_add_tail(x", child_level.toString(), ", (", cJSON.items.cType, " *)0xDEADBEEF, sizeof(", cJSON.items.cType, " *));");
1067
1193
  }
1068
1194
  else if (cJSON.items.cjsonType === "cJSON_String") {
1069
1195
  this.emitLine("list_add_tail(x", child_level.toString(), ", strdup(", cJSON.items.getValue, "(e", child_level.toString(), ")), sizeof(", cJSON.items.cType, " *));");
1070
1196
  }
1071
- else if ((cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
1197
+ else if (cJSON.items.cjsonType === "cJSON_Object" ||
1198
+ cJSON.items.cjsonType === "cJSON_Union") {
1072
1199
  this.emitLine("list_add_tail(x", child_level.toString(), ", ", cJSON.items.getValue, "(e", child_level.toString(), "), sizeof(", cJSON.items.cType, " *));");
1073
1200
  }
1074
1201
  else {
1075
- this.emitLine(cJSON.items.cType, " * tmp", (level > 0) ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
1076
- this.emitBlock(["if (NULL != tmp", (level > 0) ? level.toString() : "", ")"], () => {
1077
- this.emitLine("* tmp", (level > 0) ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
1078
- this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", (level > 0) ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
1202
+ this.emitLine(cJSON.items.cType, " * tmp", level > 0 ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
1203
+ this.emitBlock([
1204
+ "if (NULL != tmp",
1205
+ level > 0 ? level.toString() : "",
1206
+ ")"
1207
+ ], () => {
1208
+ this.emitLine("* tmp", level > 0 ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
1209
+ this.emitLine("list_add_tail(x", child_level.toString(), ", tmp", level > 0 ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
1079
1210
  });
1080
1211
  }
1081
1212
  };
1082
1213
  if (cJSON.items.isNullable) {
1083
- this.emitBlock(["if (!cJSON_IsNull(e", child_level.toString(), "))"], () => {
1214
+ this.emitBlock([
1215
+ "if (!cJSON_IsNull(e",
1216
+ child_level.toString(),
1217
+ "))"
1218
+ ], () => {
1084
1219
  add(property.type, cJSON, level, child_level);
1085
1220
  });
1086
1221
  this.emitBlock(["else"], () => {
@@ -1091,16 +1226,22 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1091
1226
  add(property.type, cJSON, level, child_level);
1092
1227
  }
1093
1228
  });
1094
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = x", child_level.toString(), ";");
1229
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = x", child_level.toString(), ";");
1095
1230
  });
1096
1231
  }
1097
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
1232
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1098
1233
  const child_level = level + 1;
1099
1234
  this.emitLine(cJSON.cType, " * x", child_level.toString(), " = hashtable_create(", this.hashtableSize, ", false);");
1100
1235
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
1101
1236
  this.emitLine("cJSON * e", child_level.toString(), " = NULL;");
1102
- this.emitLine("cJSON * j", child_level.toString(), " = cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1103
- this.emitBlock(["cJSON_ArrayForEach(e", child_level.toString(), ", j", child_level.toString(), ")"], () => {
1237
+ this.emitLine("cJSON * j", child_level.toString(), " = cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1238
+ this.emitBlock([
1239
+ "cJSON_ArrayForEach(e",
1240
+ child_level.toString(),
1241
+ ", j",
1242
+ child_level.toString(),
1243
+ ")"
1244
+ ], () => {
1104
1245
  const add = (type, cJSON, level, child_level) => {
1105
1246
  if (cJSON.items.cjsonType === "cJSON_Array") {
1106
1247
  if (type instanceof Type_1.MapType) {
@@ -1115,25 +1256,35 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1115
1256
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1116
1257
  /* Not supported */
1117
1258
  }
1118
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1259
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1260
+ cJSON.items.cjsonType === "cJSON_NULL") {
1119
1261
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, (", cJSON.items.cType, " *)0xDEADBEEF, sizeof(", cJSON.items.cType, " *));");
1120
1262
  }
1121
1263
  else if (cJSON.items.cjsonType === "cJSON_String") {
1122
1264
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, strdup(", cJSON.items.getValue, "(e", child_level.toString(), ")), sizeof(", cJSON.items.cType, " *));");
1123
1265
  }
1124
- else if ((cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
1266
+ else if (cJSON.items.cjsonType === "cJSON_Object" ||
1267
+ cJSON.items.cjsonType === "cJSON_Union") {
1125
1268
  this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, ", cJSON.items.getValue, "(e", child_level.toString(), "), sizeof(", cJSON.items.cType, " *));");
1126
1269
  }
1127
1270
  else {
1128
- this.emitLine(cJSON.items.cType, " * tmp", (level > 0) ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
1129
- this.emitBlock(["if (NULL != tmp", (level > 0) ? level.toString() : "", ")"], () => {
1130
- this.emitLine("* tmp", (level > 0) ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
1131
- this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, tmp", (level > 0) ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
1271
+ this.emitLine(cJSON.items.cType, " * tmp", level > 0 ? level.toString() : "", " = cJSON_malloc(sizeof(", cJSON.items.cType, "));");
1272
+ this.emitBlock([
1273
+ "if (NULL != tmp",
1274
+ level > 0 ? level.toString() : "",
1275
+ ")"
1276
+ ], () => {
1277
+ this.emitLine("* tmp", level > 0 ? level.toString() : "", " = ", cJSON.items.getValue, "(e", child_level.toString(), ");");
1278
+ this.emitLine("hashtable_add(x", child_level.toString(), ", e", child_level.toString(), "->string, tmp", level > 0 ? level.toString() : "", ", sizeof(", cJSON.items.cType, " *));");
1132
1279
  });
1133
1280
  }
1134
1281
  };
1135
1282
  if (cJSON.items.isNullable) {
1136
- this.emitBlock(["if (!cJSON_IsNull(e", child_level.toString(), "))"], () => {
1283
+ this.emitBlock([
1284
+ "if (!cJSON_IsNull(e",
1285
+ child_level.toString(),
1286
+ "))"
1287
+ ], () => {
1137
1288
  add(property.type, cJSON, level, child_level);
1138
1289
  });
1139
1290
  this.emitBlock(["else"], () => {
@@ -1144,49 +1295,68 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1144
1295
  add(property.type, cJSON, level, child_level);
1145
1296
  }
1146
1297
  });
1147
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = x", child_level.toString(), ";");
1298
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = x", child_level.toString(), ";");
1148
1299
  });
1149
1300
  }
1150
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1151
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = (", cJSON.cType, " *)0xDEADBEEF;");
1301
+ else if (cJSON.cjsonType === "cJSON_Invalid" ||
1302
+ cJSON.cjsonType === "cJSON_NULL") {
1303
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = (", cJSON.cType, " *)0xDEADBEEF;");
1152
1304
  }
1153
1305
  else if (cJSON.cjsonType === "cJSON_String") {
1154
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = strdup(", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\")));");
1306
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = strdup(", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '")));');
1155
1307
  }
1156
- else if ((cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1157
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\"));");
1308
+ else if (cJSON.cjsonType === "cJSON_Object" ||
1309
+ cJSON.cjsonType === "cJSON_Union") {
1310
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '"));');
1158
1311
  }
1159
1312
  else {
1160
- if ((property.isOptional) || (cJSON.isNullable)) {
1161
- this.emitBlock(["if (NULL != (x", (level > 0) ? level.toString() : "", "->", name, " = cJSON_malloc(sizeof(", cJSON.cType, "))))"], () => {
1162
- this.emitLine("*x", (level > 0) ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\"));");
1313
+ if (property.isOptional || cJSON.isNullable) {
1314
+ this.emitBlock([
1315
+ "if (NULL != (x",
1316
+ level > 0 ? level.toString() : "",
1317
+ "->",
1318
+ name,
1319
+ " = cJSON_malloc(sizeof(",
1320
+ cJSON.cType,
1321
+ "))))"
1322
+ ], () => {
1323
+ this.emitLine("*x", level > 0 ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '"));');
1163
1324
  });
1164
1325
  }
1165
1326
  else {
1166
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\"));");
1327
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = ", cJSON.getValue, "(cJSON_GetObjectItemCaseSensitive(j", level > 0 ? level.toString() : "", ', "', jsonName, '"));');
1167
1328
  }
1168
1329
  }
1169
1330
  });
1170
- if ((!property.isOptional) && (!cJSON.isNullable)) {
1331
+ if (!property.isOptional && !cJSON.isNullable) {
1171
1332
  if (cJSON.cjsonType === "cJSON_Array") {
1172
1333
  this.emitBlock(["else"], () => {
1173
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = list_create(false, NULL);");
1334
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = list_create(false, NULL);");
1174
1335
  });
1175
1336
  }
1176
1337
  else if (cJSON.cjsonType === "cJSON_Map") {
1177
1338
  this.emitBlock(["else"], () => {
1178
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = hashtable_create(", this.hashtableSize, ", false);");
1339
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = hashtable_create(", this.hashtableSize, ", false);");
1179
1340
  });
1180
1341
  }
1181
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1342
+ else if (cJSON.cjsonType === "cJSON_Invalid" ||
1343
+ cJSON.cjsonType === "cJSON_NULL") {
1182
1344
  this.emitBlock(["else"], () => {
1183
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, " = (", cJSON.cType, " *)0xDEADBEEF;");
1345
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, " = (", cJSON.cType, " *)0xDEADBEEF;");
1184
1346
  });
1185
1347
  }
1186
1348
  else if (cJSON.cjsonType === "cJSON_String") {
1187
1349
  this.emitBlock(["else"], () => {
1188
- this.emitBlock(["if (NULL != (x", (level > 0) ? level.toString() : "", "->", name, " = cJSON_malloc(sizeof(", cJSON.cType, "))))"], () => {
1189
- this.emitLine("x", (level > 0) ? level.toString() : "", "->", name, "[0] = '\\0';");
1350
+ this.emitBlock([
1351
+ "if (NULL != (x",
1352
+ level > 0 ? level.toString() : "",
1353
+ "->",
1354
+ name,
1355
+ " = cJSON_malloc(sizeof(",
1356
+ cJSON.cType,
1357
+ "))))"
1358
+ ], () => {
1359
+ this.emitLine("x", level > 0 ? level.toString() : "", "->", name, "[0] = '\\0';");
1190
1360
  });
1191
1361
  });
1192
1362
  }
@@ -1230,7 +1400,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1230
1400
  else if (cJSON.cjsonType === "cJSON_NULL") {
1231
1401
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.createObject, "());");
1232
1402
  }
1233
- else if ((cJSON.cjsonType === "cJSON_String") || (cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1403
+ else if (cJSON.cjsonType === "cJSON_String" ||
1404
+ cJSON.cjsonType === "cJSON_Object" ||
1405
+ cJSON.cjsonType === "cJSON_Union") {
1234
1406
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.createObject, "(x", child_level.toString(), "));");
1235
1407
  }
1236
1408
  else {
@@ -1243,12 +1415,12 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1243
1415
  else if (type instanceof Type_1.ClassType) {
1244
1416
  this.forEachClassProperty(type, "none", (name, jsonName, property) => {
1245
1417
  const cJSON = this.quicktypeTypeToCJSON(property.type, property.isOptional);
1246
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
1418
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1247
1419
  const child_level = level + 1;
1248
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1249
- this.emitLine("cJSON * j", child_level.toString(), " = cJSON_AddArrayToObject(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1420
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1421
+ this.emitLine("cJSON * j", child_level.toString(), " = cJSON_AddArrayToObject(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1250
1422
  this.emitBlock(["if (NULL != j", child_level.toString(), ")"], () => {
1251
- this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", (level > 0) ? level.toString() : "", "->", name, ");");
1423
+ this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", level > 0 ? level.toString() : "", "->", name, ");");
1252
1424
  this.emitBlock(["while (NULL != x", child_level.toString(), ")"], () => {
1253
1425
  const add = (type, cJSON, child_level) => {
1254
1426
  if (cJSON.items.cjsonType === "cJSON_Array") {
@@ -1270,7 +1442,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1270
1442
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
1271
1443
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.items.createObject, "());");
1272
1444
  }
1273
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
1445
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
1446
+ cJSON.items.cjsonType === "cJSON_Object" ||
1447
+ cJSON.items.cjsonType === "cJSON_Union") {
1274
1448
  this.emitLine("cJSON_AddItemToArray(j", child_level.toString(), ", ", cJSON.items.createObject, "(x", child_level.toString(), "));");
1275
1449
  }
1276
1450
  else {
@@ -1278,7 +1452,11 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1278
1452
  }
1279
1453
  };
1280
1454
  if (cJSON.items.isNullable) {
1281
- this.emitBlock(["if ((void *)0xDEADBEEF != x", child_level.toString(), ")"], () => {
1455
+ this.emitBlock([
1456
+ "if ((void *)0xDEADBEEF != x",
1457
+ child_level.toString(),
1458
+ ")"
1459
+ ], () => {
1282
1460
  add(property.type, cJSON, child_level);
1283
1461
  });
1284
1462
  this.emitBlock(["else"], () => {
@@ -1288,21 +1466,31 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1288
1466
  else {
1289
1467
  add(property.type, cJSON, child_level);
1290
1468
  }
1291
- this.emitLine("x", child_level.toString(), " = list_get_next(x", (level > 0) ? level.toString() : "", "->", name, ");");
1469
+ this.emitLine("x", child_level.toString(), " = list_get_next(x", level > 0 ? level.toString() : "", "->", name, ");");
1292
1470
  });
1293
1471
  });
1294
1472
  });
1295
1473
  }
1296
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
1474
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1297
1475
  const child_level = level + 1;
1298
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1476
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1299
1477
  this.emitLine("cJSON * j", child_level.toString(), " = ", cJSON.createObject, "();");
1300
1478
  this.emitBlock(["if (NULL != j", child_level.toString(), ")"], () => {
1301
1479
  this.emitLine("char **keys", child_level.toString(), " = NULL;");
1302
- this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", (level > 0) ? level.toString() : "", "->", name, ", &keys", child_level.toString(), ");");
1480
+ this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", level > 0 ? level.toString() : "", "->", name, ", &keys", child_level.toString(), ");");
1303
1481
  this.emitBlock(["if (NULL != keys", child_level.toString(), ")"], () => {
1304
- this.emitBlock(["for (size_t index", child_level.toString(), " = 0; index", child_level.toString(), " < count", child_level.toString(), "; index", child_level.toString(), "++)"], () => {
1305
- this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", (level > 0) ? level.toString() : "", "->", name, ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
1482
+ this.emitBlock([
1483
+ "for (size_t index",
1484
+ child_level.toString(),
1485
+ " = 0; index",
1486
+ child_level.toString(),
1487
+ " < count",
1488
+ child_level.toString(),
1489
+ "; index",
1490
+ child_level.toString(),
1491
+ "++)"
1492
+ ], () => {
1493
+ this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", level > 0 ? level.toString() : "", "->", name, ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
1306
1494
  const add = (type, cJSON, child_level) => {
1307
1495
  if (cJSON.items.cjsonType === "cJSON_Array") {
1308
1496
  if (type instanceof Type_1.MapType) {
@@ -1323,7 +1511,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1323
1511
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
1324
1512
  this.emitLine(cJSON.addToObject, "(j", child_level.toString(), ", keys", child_level.toString(), "[index", child_level.toString(), "], ", cJSON.items.createObject, "());");
1325
1513
  }
1326
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
1514
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
1515
+ cJSON.items.cjsonType === "cJSON_Object" ||
1516
+ cJSON.items.cjsonType === "cJSON_Union") {
1327
1517
  this.emitLine(cJSON.addToObject, "(j", child_level.toString(), ", keys", child_level.toString(), "[index", child_level.toString(), "], ", cJSON.items.createObject, "(x", child_level.toString(), "));");
1328
1518
  }
1329
1519
  else {
@@ -1331,7 +1521,11 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1331
1521
  }
1332
1522
  };
1333
1523
  if (cJSON.items.isNullable) {
1334
- this.emitBlock(["if ((void *)0xDEADBEEF != x", child_level.toString(), ")"], () => {
1524
+ this.emitBlock([
1525
+ "if ((void *)0xDEADBEEF != x",
1526
+ child_level.toString(),
1527
+ ")"
1528
+ ], () => {
1335
1529
  add(property.type, cJSON, child_level);
1336
1530
  });
1337
1531
  this.emitBlock(["else"], () => {
@@ -1344,7 +1538,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1344
1538
  });
1345
1539
  this.emitLine("cJSON_free(keys", child_level.toString(), ");");
1346
1540
  });
1347
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", j", child_level.toString(), ");");
1541
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", j', child_level.toString(), ");");
1348
1542
  });
1349
1543
  });
1350
1544
  }
@@ -1353,57 +1547,58 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1353
1547
  }
1354
1548
  else if (cJSON.cjsonType === "cJSON_NULL") {
1355
1549
  if (property.isOptional) {
1356
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1357
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1550
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1551
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1358
1552
  });
1359
1553
  }
1360
1554
  else {
1361
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1555
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1362
1556
  }
1363
1557
  }
1364
1558
  else if (cJSON.cjsonType === "cJSON_String") {
1365
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1366
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", x", (level > 0) ? level.toString() : "", "->", name, ");");
1559
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1560
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", x', level > 0 ? level.toString() : "", "->", name, ");");
1367
1561
  });
1368
- if ((!property.isOptional) && (!cJSON.isNullable)) {
1562
+ if (!property.isOptional && !cJSON.isNullable) {
1369
1563
  this.emitBlock(["else"], () => {
1370
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", \"\");");
1564
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", "");');
1371
1565
  });
1372
1566
  }
1373
1567
  }
1374
- else if ((cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1375
- if ((property.isOptional) || (cJSON.isNullable)) {
1376
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1377
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", ", cJSON.createObject, "(x", (level > 0) ? level.toString() : "", "->", name, "));");
1568
+ else if (cJSON.cjsonType === "cJSON_Object" ||
1569
+ cJSON.cjsonType === "cJSON_Union") {
1570
+ if (property.isOptional || cJSON.isNullable) {
1571
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1572
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", ', cJSON.createObject, "(x", level > 0 ? level.toString() : "", "->", name, "));");
1378
1573
  });
1379
1574
  }
1380
1575
  else {
1381
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", ", cJSON.createObject, "(x", (level > 0) ? level.toString() : "", "->", name, "));");
1576
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", ', cJSON.createObject, "(x", level > 0 ? level.toString() : "", "->", name, "));");
1382
1577
  }
1383
1578
  }
1384
1579
  else if (cJSON.cjsonType === "cJSON_Enum") {
1385
- if ((property.isOptional) || (cJSON.isNullable)) {
1386
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1387
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", ", cJSON.createObject, "(*x", (level > 0) ? level.toString() : "", "->", name, "));");
1580
+ if (property.isOptional || cJSON.isNullable) {
1581
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1582
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", ', cJSON.createObject, "(*x", level > 0 ? level.toString() : "", "->", name, "));");
1388
1583
  });
1389
1584
  }
1390
1585
  else {
1391
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", ", cJSON.createObject, "(x", (level > 0) ? level.toString() : "", "->", name, "));");
1586
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", ', cJSON.createObject, "(x", level > 0 ? level.toString() : "", "->", name, "));");
1392
1587
  }
1393
1588
  }
1394
1589
  else {
1395
- if ((property.isOptional) || (cJSON.isNullable)) {
1396
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1397
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", *x", (level > 0) ? level.toString() : "", "->", name, ");");
1590
+ if (property.isOptional || cJSON.isNullable) {
1591
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1592
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", *x', level > 0 ? level.toString() : "", "->", name, ");");
1398
1593
  });
1399
1594
  }
1400
1595
  else {
1401
- this.emitLine(cJSON.addToObject, "(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\", x", (level > 0) ? level.toString() : "", "->", name, ");");
1596
+ this.emitLine(cJSON.addToObject, "(j", level > 0 ? level.toString() : "", ', "', jsonName, '", x', level > 0 ? level.toString() : "", "->", name, ");");
1402
1597
  }
1403
1598
  }
1404
1599
  if (cJSON.isNullable) {
1405
1600
  this.emitBlock(["else"], () => {
1406
- this.emitLine("cJSON_AddNullToObject(j", (level > 0) ? level.toString() : "", ", \"", jsonName, "\");");
1601
+ this.emitLine("cJSON_AddNullToObject(j", level > 0 ? level.toString() : "", ', "', jsonName, '");');
1407
1602
  });
1408
1603
  }
1409
1604
  });
@@ -1444,7 +1639,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1444
1639
  else if (cJSON.cjsonType === "cJSON_Map") {
1445
1640
  /* Not supported */
1446
1641
  }
1447
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1642
+ else if (cJSON.cjsonType === "cJSON_Invalid" || cJSON.cjsonType === "cJSON_NULL") {
1448
1643
  /* Nothing to do */
1449
1644
  }
1450
1645
  else {
@@ -1456,10 +1651,10 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1456
1651
  else if (type instanceof Type_1.ClassType) {
1457
1652
  this.forEachClassProperty(type, "none", (name, _jsonName, property) => {
1458
1653
  const cJSON = this.quicktypeTypeToCJSON(property.type, property.isOptional);
1459
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
1654
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1460
1655
  const child_level = level + 1;
1461
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1462
- this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", (level > 0) ? level.toString() : "", "->", name, ");");
1656
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1657
+ this.emitLine(cJSON.items.cType, " * x", child_level.toString(), " = list_get_head(x", level > 0 ? level.toString() : "", "->", name, ");");
1463
1658
  this.emitBlock(["while (NULL != x", child_level.toString(), ")"], () => {
1464
1659
  if (cJSON.items.cjsonType === "cJSON_Array") {
1465
1660
  if (property.type instanceof Type_1.ArrayType) {
@@ -1473,7 +1668,8 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1473
1668
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1474
1669
  /* Not supported */
1475
1670
  }
1476
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1671
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1672
+ cJSON.items.cjsonType === "cJSON_NULL") {
1477
1673
  /* Nothing to do */
1478
1674
  }
1479
1675
  else {
@@ -1486,19 +1682,29 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1486
1682
  this.emitLine(cJSON.items.deleteType, "(x", child_level.toString(), ");");
1487
1683
  }
1488
1684
  }
1489
- this.emitLine("x", child_level.toString(), " = list_get_next(x", (level > 0) ? level.toString() : "", "->", name, ");");
1685
+ this.emitLine("x", child_level.toString(), " = list_get_next(x", level > 0 ? level.toString() : "", "->", name, ");");
1490
1686
  });
1491
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->", name, ");");
1687
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->", name, ");");
1492
1688
  });
1493
1689
  }
1494
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
1690
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1495
1691
  const child_level = level + 1;
1496
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1692
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1497
1693
  this.emitLine("char **keys", child_level.toString(), " = NULL;");
1498
- this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", (level > 0) ? level.toString() : "", "->", name, ", &keys", child_level.toString(), ");");
1694
+ this.emitLine("size_t count", child_level.toString(), " = hashtable_get_keys(x", level > 0 ? level.toString() : "", "->", name, ", &keys", child_level.toString(), ");");
1499
1695
  this.emitBlock(["if (NULL != keys", child_level.toString(), ")"], () => {
1500
- this.emitBlock(["for (size_t index", child_level.toString(), " = 0; index", child_level.toString(), " < count", child_level.toString(), "; index", child_level.toString(), "++)"], () => {
1501
- this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", (level > 0) ? level.toString() : "", "->", name, ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
1696
+ this.emitBlock([
1697
+ "for (size_t index",
1698
+ child_level.toString(),
1699
+ " = 0; index",
1700
+ child_level.toString(),
1701
+ " < count",
1702
+ child_level.toString(),
1703
+ "; index",
1704
+ child_level.toString(),
1705
+ "++)"
1706
+ ], () => {
1707
+ this.emitLine(cJSON.items.cType, " *x", child_level.toString(), " = hashtable_lookup(x", level > 0 ? level.toString() : "", "->", name, ", keys", child_level.toString(), "[index", child_level.toString(), "]);");
1502
1708
  this.emitBlock(["if (NULL != x", child_level.toString(), ")"], () => {
1503
1709
  if (cJSON.items.cjsonType === "cJSON_Array") {
1504
1710
  if (property.type instanceof Type_1.MapType) {
@@ -1512,12 +1718,17 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1512
1718
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1513
1719
  /* Not supported */
1514
1720
  }
1515
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1721
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1722
+ cJSON.items.cjsonType === "cJSON_NULL") {
1516
1723
  /* Nothing to do */
1517
1724
  }
1518
1725
  else {
1519
1726
  if (cJSON.items.isNullable) {
1520
- this.emitBlock(["if ((void *)0xDEADBEEF != x", child_level.toString(), ")"], () => {
1727
+ this.emitBlock([
1728
+ "if ((void *)0xDEADBEEF != x",
1729
+ child_level.toString(),
1730
+ ")"
1731
+ ], () => {
1521
1732
  this.emitLine(cJSON.items.deleteType, "(x", child_level.toString(), ");");
1522
1733
  });
1523
1734
  }
@@ -1529,21 +1740,23 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1529
1740
  });
1530
1741
  this.emitLine("cJSON_free(keys", child_level.toString(), ");");
1531
1742
  });
1532
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->", name, ");");
1743
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->", name, ");");
1533
1744
  });
1534
1745
  }
1535
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
1746
+ else if (cJSON.cjsonType === "cJSON_Invalid" || cJSON.cjsonType === "cJSON_NULL") {
1536
1747
  /* Nothing to do */
1537
1748
  }
1538
- else if ((cJSON.cjsonType === "cJSON_String") || (cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
1539
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1540
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->", name, ");");
1749
+ else if (cJSON.cjsonType === "cJSON_String" ||
1750
+ cJSON.cjsonType === "cJSON_Object" ||
1751
+ cJSON.cjsonType === "cJSON_Union") {
1752
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1753
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->", name, ");");
1541
1754
  });
1542
1755
  }
1543
1756
  else {
1544
- if ((property.isOptional) || (cJSON.isNullable)) {
1545
- this.emitBlock(["if (NULL != x", (level > 0) ? level.toString() : "", "->", name, ")"], () => {
1546
- this.emitLine(cJSON.deleteType, "(x", (level > 0) ? level.toString() : "", "->", name, ");");
1757
+ if (property.isOptional || cJSON.isNullable) {
1758
+ this.emitBlock(["if (NULL != x", level > 0 ? level.toString() : "", "->", name, ")"], () => {
1759
+ this.emitLine(cJSON.deleteType, "(x", level > 0 ? level.toString() : "", "->", name, ");");
1547
1760
  });
1548
1761
  }
1549
1762
  }
@@ -1588,7 +1801,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1588
1801
  emitTopLevelTypedef(type, className) {
1589
1802
  this.emitBlock(["struct ", className], () => {
1590
1803
  const cJSON = this.quicktypeTypeToCJSON(type, false);
1591
- this.emitLine(cJSON.cType, (cJSON.optionalQualifier !== "") ? " " : "", cJSON.optionalQualifier, " value;");
1804
+ this.emitLine(cJSON.cType, cJSON.optionalQualifier !== "" ? " " : "", cJSON.optionalQualifier, " value;");
1592
1805
  }, "", true);
1593
1806
  this.ensureBlankLine();
1594
1807
  this.emitTypdefAlias(type, className);
@@ -1632,7 +1845,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1632
1845
  this.emitBlock(["if (NULL != (x = cJSON_malloc(sizeof(struct ", className, "))))"], () => {
1633
1846
  this.emitLine("memset(x, 0, sizeof(struct ", className, "));");
1634
1847
  const cJSON = this.quicktypeTypeToCJSON(type, false);
1635
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
1848
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1636
1849
  this.emitLine("x->value = list_create(false, NULL);");
1637
1850
  this.emitBlock(["if (NULL != x->value)"], () => {
1638
1851
  this.emitLine("cJSON * e = NULL;");
@@ -1644,7 +1857,8 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1644
1857
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1645
1858
  /* Not supported */
1646
1859
  }
1647
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1860
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1861
+ cJSON.items.cjsonType === "cJSON_NULL") {
1648
1862
  this.emitLine("list_add_tail(x->value, (", cJSON.items.cType, " *)0xDEADBEAF, sizeof(", cJSON.items.cType, " *));");
1649
1863
  }
1650
1864
  else if (cJSON.items.cjsonType === "cJSON_String") {
@@ -1668,7 +1882,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1668
1882
  });
1669
1883
  });
1670
1884
  }
1671
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
1885
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1672
1886
  this.emitLine("x->value = hashtable_create(", this.hashtableSize, ", false);");
1673
1887
  this.emitBlock(["if (NULL != x->value)"], () => {
1674
1888
  this.emitLine("cJSON * e = NULL;");
@@ -1680,7 +1894,8 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1680
1894
  else if (cJSON.items.cjsonType === "cJSON_Map") {
1681
1895
  /* Not supported */
1682
1896
  }
1683
- else if ((cJSON.items.cjsonType === "cJSON_Invalid") || (cJSON.items.cjsonType === "cJSON_NULL")) {
1897
+ else if (cJSON.items.cjsonType === "cJSON_Invalid" ||
1898
+ cJSON.items.cjsonType === "cJSON_NULL") {
1684
1899
  this.emitLine("hashtable_add(x->value, e->string, (", cJSON.items.cType, " *)0xDEADBEEF, sizeof(", cJSON.items.cType, " *));");
1685
1900
  }
1686
1901
  else if (cJSON.items.cjsonType === "cJSON_String") {
@@ -1726,7 +1941,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1726
1941
  this.emitLine("cJSON * j = NULL;");
1727
1942
  this.emitBlock(["if (NULL != x)"], () => {
1728
1943
  const cJSON = this.quicktypeTypeToCJSON(type, false);
1729
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
1944
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1730
1945
  this.emitBlock(["if (NULL != x->value)"], () => {
1731
1946
  this.emitLine("j = ", cJSON.createObject, "();");
1732
1947
  this.emitBlock(["if (NULL != j)"], () => {
@@ -1745,7 +1960,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1745
1960
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
1746
1961
  this.emitLine("cJSON_AddItemToArray(j, ", cJSON.items.createObject, "());");
1747
1962
  }
1748
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
1963
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
1964
+ cJSON.items.cjsonType === "cJSON_Object" ||
1965
+ cJSON.items.cjsonType === "cJSON_Union") {
1749
1966
  this.emitLine("cJSON_AddItemToArray(j, ", cJSON.items.createObject, "(x1));");
1750
1967
  }
1751
1968
  else {
@@ -1768,7 +1985,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1768
1985
  });
1769
1986
  });
1770
1987
  }
1771
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
1988
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1772
1989
  this.emitBlock(["if (NULL != x->value)"], () => {
1773
1990
  this.emitLine("j = ", cJSON.createObject, "();");
1774
1991
  this.emitBlock(["if (NULL != j)"], () => {
@@ -1790,7 +2007,9 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1790
2007
  else if (cJSON.items.cjsonType === "cJSON_NULL") {
1791
2008
  this.emitLine(cJSON.addToObject, "(j, keys[index], ", cJSON.items.createObject, "());");
1792
2009
  }
1793
- else if ((cJSON.items.cjsonType === "cJSON_String") || (cJSON.items.cjsonType === "cJSON_Object") || (cJSON.items.cjsonType === "cJSON_Union")) {
2010
+ else if (cJSON.items.cjsonType === "cJSON_String" ||
2011
+ cJSON.items.cjsonType === "cJSON_Object" ||
2012
+ cJSON.items.cjsonType === "cJSON_Union") {
1794
2013
  this.emitLine(cJSON.addToObject, "(j, keys[index], ", cJSON.items.createObject, "(x2));");
1795
2014
  }
1796
2015
  else {
@@ -1844,7 +2063,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1844
2063
  this.emitBlock(["void cJSON_Delete", className, "(struct ", className, " * x)"], () => {
1845
2064
  this.emitBlock(["if (NULL != x)"], () => {
1846
2065
  const cJSON = this.quicktypeTypeToCJSON(type, false);
1847
- if ((cJSON.cjsonType === "cJSON_Array") && (cJSON.items !== undefined)) {
2066
+ if (cJSON.cjsonType === "cJSON_Array" && cJSON.items !== undefined) {
1848
2067
  this.emitBlock(["if (NULL != x->value)"], () => {
1849
2068
  this.emitLine(cJSON.items.cType, " * x1 = list_get_head(x->value);");
1850
2069
  this.emitBlock(["while (NULL != x1)"], () => {
@@ -1861,7 +2080,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1861
2080
  this.emitLine(cJSON.deleteType, "(x->value);");
1862
2081
  });
1863
2082
  }
1864
- else if ((cJSON.cjsonType === "cJSON_Map") && (cJSON.items !== undefined)) {
2083
+ else if (cJSON.cjsonType === "cJSON_Map" && cJSON.items !== undefined) {
1865
2084
  this.emitBlock(["if (NULL != x->value)"], () => {
1866
2085
  this.emitLine("char **keys = NULL;");
1867
2086
  this.emitLine("size_t count = hashtable_get_keys(x->value, &keys);");
@@ -1884,10 +2103,12 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1884
2103
  this.emitLine(cJSON.deleteType, "(x->value);");
1885
2104
  });
1886
2105
  }
1887
- else if ((cJSON.cjsonType === "cJSON_Invalid") || (cJSON.cjsonType === "cJSON_NULL")) {
2106
+ else if (cJSON.cjsonType === "cJSON_Invalid" || cJSON.cjsonType === "cJSON_NULL") {
1888
2107
  /* Nothing to do */
1889
2108
  }
1890
- else if ((cJSON.cjsonType === "cJSON_String") || (cJSON.cjsonType === "cJSON_Object") || (cJSON.cjsonType === "cJSON_Union")) {
2109
+ else if (cJSON.cjsonType === "cJSON_String" ||
2110
+ cJSON.cjsonType === "cJSON_Object" ||
2111
+ cJSON.cjsonType === "cJSON_Union") {
1891
2112
  this.emitLine(cJSON.deleteType, "(x->value);");
1892
2113
  }
1893
2114
  else {
@@ -1908,34 +2129,155 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1908
2129
  quicktypeTypeToCJSON(t, isOptional, isNullable = false) {
1909
2130
  /* Compute cJSON type */
1910
2131
  return (0, TypeUtils_1.matchType)(t, _anyType => {
1911
- return { cType: "void", optionalQualifier: "*", cjsonType: "cJSON_Invalid", isType: "cJSON_IsInvalid", getValue: "", addToObject: "", createObject: "", deleteType: "", items: undefined, isNullable };
2132
+ return {
2133
+ cType: "void",
2134
+ optionalQualifier: "*",
2135
+ cjsonType: "cJSON_Invalid",
2136
+ isType: "cJSON_IsInvalid",
2137
+ getValue: "",
2138
+ addToObject: "",
2139
+ createObject: "",
2140
+ deleteType: "",
2141
+ items: undefined,
2142
+ isNullable
2143
+ };
1912
2144
  }, _nullType => {
1913
- return { cType: "void", optionalQualifier: "*", cjsonType: "cJSON_NULL", isType: "cJSON_IsNull", getValue: "", addToObject: "cJSON_AddNullToObject", createObject: "cJSON_CreateNull", deleteType: "cJSON_free", items: undefined, isNullable };
2145
+ return {
2146
+ cType: "void",
2147
+ optionalQualifier: "*",
2148
+ cjsonType: "cJSON_NULL",
2149
+ isType: "cJSON_IsNull",
2150
+ getValue: "",
2151
+ addToObject: "cJSON_AddNullToObject",
2152
+ createObject: "cJSON_CreateNull",
2153
+ deleteType: "cJSON_free",
2154
+ items: undefined,
2155
+ isNullable
2156
+ };
1914
2157
  }, _boolType => {
1915
- return { cType: "bool", optionalQualifier: (isOptional === true) ? "*" : "", cjsonType: "cJSON_Bool", isType: "cJSON_IsBool", getValue: "cJSON_IsTrue", addToObject: "cJSON_AddBoolToObject", createObject: "cJSON_CreateBool", deleteType: "cJSON_free", items: undefined, isNullable };
2158
+ return {
2159
+ cType: "bool",
2160
+ optionalQualifier: isOptional === true ? "*" : "",
2161
+ cjsonType: "cJSON_Bool",
2162
+ isType: "cJSON_IsBool",
2163
+ getValue: "cJSON_IsTrue",
2164
+ addToObject: "cJSON_AddBoolToObject",
2165
+ createObject: "cJSON_CreateBool",
2166
+ deleteType: "cJSON_free",
2167
+ items: undefined,
2168
+ isNullable
2169
+ };
1916
2170
  }, _integerType => {
1917
- return { cType: this.typeIntegerSize, optionalQualifier: (isOptional === true) ? "*" : "", cjsonType: "cJSON_Number", isType: "cJSON_IsNumber", getValue: "cJSON_GetNumberValue", addToObject: "cJSON_AddNumberToObject", createObject: "cJSON_CreateNumber", deleteType: "cJSON_free", items: undefined, isNullable };
2171
+ return {
2172
+ cType: this.typeIntegerSize,
2173
+ optionalQualifier: isOptional === true ? "*" : "",
2174
+ cjsonType: "cJSON_Number",
2175
+ isType: "cJSON_IsNumber",
2176
+ getValue: "cJSON_GetNumberValue",
2177
+ addToObject: "cJSON_AddNumberToObject",
2178
+ createObject: "cJSON_CreateNumber",
2179
+ deleteType: "cJSON_free",
2180
+ items: undefined,
2181
+ isNullable
2182
+ };
1918
2183
  }, _doubleType => {
1919
- return { cType: "double", optionalQualifier: (isOptional === true) ? "*" : "", cjsonType: "cJSON_Number", isType: "cJSON_IsNumber", getValue: "cJSON_GetNumberValue", addToObject: "cJSON_AddNumberToObject", createObject: "cJSON_CreateNumber", deleteType: "cJSON_free", items: undefined, isNullable };
2184
+ return {
2185
+ cType: "double",
2186
+ optionalQualifier: isOptional === true ? "*" : "",
2187
+ cjsonType: "cJSON_Number",
2188
+ isType: "cJSON_IsNumber",
2189
+ getValue: "cJSON_GetNumberValue",
2190
+ addToObject: "cJSON_AddNumberToObject",
2191
+ createObject: "cJSON_CreateNumber",
2192
+ deleteType: "cJSON_free",
2193
+ items: undefined,
2194
+ isNullable
2195
+ };
1920
2196
  }, _stringType => {
1921
- return { cType: "char", optionalQualifier: "*", cjsonType: "cJSON_String", isType: "cJSON_IsString", getValue: "cJSON_GetStringValue", addToObject: "cJSON_AddStringToObject", createObject: "cJSON_CreateString", deleteType: "cJSON_free", items: undefined, isNullable };
2197
+ return {
2198
+ cType: "char",
2199
+ optionalQualifier: "*",
2200
+ cjsonType: "cJSON_String",
2201
+ isType: "cJSON_IsString",
2202
+ getValue: "cJSON_GetStringValue",
2203
+ addToObject: "cJSON_AddStringToObject",
2204
+ createObject: "cJSON_CreateString",
2205
+ deleteType: "cJSON_free",
2206
+ items: undefined,
2207
+ isNullable
2208
+ };
1922
2209
  }, arrayType => {
1923
2210
  const items = this.quicktypeTypeToCJSON(arrayType.items, false);
1924
- return { cType: "list_t", optionalQualifier: "*", cjsonType: "cJSON_Array", isType: "cJSON_IsArray", getValue: "cJSON_GetArrayItem", addToObject: "cJSON_AddItemToObject", createObject: "cJSON_CreateArray", deleteType: "list_release", items, isNullable };
2211
+ return {
2212
+ cType: "list_t",
2213
+ optionalQualifier: "*",
2214
+ cjsonType: "cJSON_Array",
2215
+ isType: "cJSON_IsArray",
2216
+ getValue: "cJSON_GetArrayItem",
2217
+ addToObject: "cJSON_AddItemToObject",
2218
+ createObject: "cJSON_CreateArray",
2219
+ deleteType: "list_release",
2220
+ items,
2221
+ isNullable
2222
+ };
1925
2223
  }, classType => {
1926
- return { cType: ["struct ", this.nameForNamedType(classType)], optionalQualifier: "*", cjsonType: "cJSON_Object", isType: "cJSON_IsObject", getValue: ["cJSON_Get", this.nameForNamedType(classType), "Value"], addToObject: "cJSON_AddItemToObject", createObject: ["cJSON_Create", this.nameForNamedType(classType)], deleteType: ["cJSON_Delete", this.nameForNamedType(classType)], items: undefined, isNullable };
2224
+ return {
2225
+ cType: ["struct ", this.nameForNamedType(classType)],
2226
+ optionalQualifier: "*",
2227
+ cjsonType: "cJSON_Object",
2228
+ isType: "cJSON_IsObject",
2229
+ getValue: ["cJSON_Get", this.nameForNamedType(classType), "Value"],
2230
+ addToObject: "cJSON_AddItemToObject",
2231
+ createObject: ["cJSON_Create", this.nameForNamedType(classType)],
2232
+ deleteType: ["cJSON_Delete", this.nameForNamedType(classType)],
2233
+ items: undefined,
2234
+ isNullable
2235
+ };
1927
2236
  }, mapType => {
1928
2237
  const items = this.quicktypeTypeToCJSON(mapType.values, false);
1929
- return { cType: "hashtable_t", optionalQualifier: "*", cjsonType: "cJSON_Map", isType: "cJSON_IsObject", getValue: "", addToObject: "cJSON_AddItemToObject", createObject: "cJSON_CreateObject", deleteType: "hashtable_release", items, isNullable };
2238
+ return {
2239
+ cType: "hashtable_t",
2240
+ optionalQualifier: "*",
2241
+ cjsonType: "cJSON_Map",
2242
+ isType: "cJSON_IsObject",
2243
+ getValue: "",
2244
+ addToObject: "cJSON_AddItemToObject",
2245
+ createObject: "cJSON_CreateObject",
2246
+ deleteType: "hashtable_release",
2247
+ items,
2248
+ isNullable
2249
+ };
1930
2250
  }, enumType => {
1931
- return { cType: ["enum ", this.nameForNamedType(enumType)], optionalQualifier: (isOptional === true) ? "*" : "", cjsonType: "cJSON_Enum", isType: "cJSON_IsString", getValue: ["cJSON_Get", this.nameForNamedType(enumType), "Value"], addToObject: "cJSON_AddItemToObject", createObject: ["cJSON_Create", this.nameForNamedType(enumType)], deleteType: "cJSON_free", items: undefined, isNullable };
2251
+ return {
2252
+ cType: ["enum ", this.nameForNamedType(enumType)],
2253
+ optionalQualifier: isOptional === true ? "*" : "",
2254
+ cjsonType: "cJSON_Enum",
2255
+ isType: "cJSON_IsString",
2256
+ getValue: ["cJSON_Get", this.nameForNamedType(enumType), "Value"],
2257
+ addToObject: "cJSON_AddItemToObject",
2258
+ createObject: ["cJSON_Create", this.nameForNamedType(enumType)],
2259
+ deleteType: "cJSON_free",
2260
+ items: undefined,
2261
+ isNullable
2262
+ };
1932
2263
  }, unionType => {
1933
2264
  const nullable = (0, TypeUtils_1.nullableFromUnion)(unionType);
1934
2265
  if (nullable !== null) {
1935
2266
  return this.quicktypeTypeToCJSON(nullable, true, true);
1936
2267
  }
1937
2268
  else {
1938
- return { cType: ["struct ", this.nameForNamedType(unionType)], optionalQualifier: "*", cjsonType: "cJSON_Union", isType: "", getValue: ["cJSON_Get", this.nameForNamedType(unionType), "Value"], addToObject: "cJSON_AddItemToObject", createObject: ["cJSON_Create", this.nameForNamedType(unionType)], deleteType: ["cJSON_Delete", this.nameForNamedType(unionType)], items: undefined, isNullable };
2269
+ return {
2270
+ cType: ["struct ", this.nameForNamedType(unionType)],
2271
+ optionalQualifier: "*",
2272
+ cjsonType: "cJSON_Union",
2273
+ isType: "",
2274
+ getValue: ["cJSON_Get", this.nameForNamedType(unionType), "Value"],
2275
+ addToObject: "cJSON_AddItemToObject",
2276
+ createObject: ["cJSON_Create", this.nameForNamedType(unionType)],
2277
+ deleteType: ["cJSON_Delete", this.nameForNamedType(unionType)],
2278
+ items: undefined,
2279
+ isNullable
2280
+ };
1939
2281
  }
1940
2282
  });
1941
2283
  }
@@ -1964,12 +2306,12 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
1964
2306
  ]);
1965
2307
  this.ensureBlankLine();
1966
2308
  /* Write include guard */
1967
- this.emitLine("#ifndef __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, 'g'), '_')), "__");
1968
- this.emitLine("#define __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, 'g'), '_')), "__");
2309
+ this.emitLine("#ifndef __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, "g"), "_")), "__");
2310
+ this.emitLine("#define __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, "g"), "_")), "__");
1969
2311
  this.ensureBlankLine();
1970
2312
  /* Write C++ guard */
1971
2313
  this.emitLine("#ifdef __cplusplus");
1972
- this.emitLine("extern \"C\" {");
2314
+ this.emitLine('extern "C" {');
1973
2315
  this.emitLine("#endif");
1974
2316
  this.ensureBlankLine();
1975
2317
  /* Write includes */
@@ -2006,7 +2348,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
2006
2348
  this.emitLine("#endif");
2007
2349
  this.ensureBlankLine();
2008
2350
  /* Write include guard */
2009
- this.emitLine("#endif /* __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, 'g'), '_')), "__ */");
2351
+ this.emitLine("#endif /* __", (0, Strings_1.allUpperWordStyle)(this.currentFilename.replace(new RegExp(/[^a-zA-Z0-9]+/, "g"), "_")), "__ */");
2010
2352
  this.ensureBlankLine();
2011
2353
  /* Close file */
2012
2354
  super.finishFile((0, Support_1.defined)(this.currentFilename));
@@ -2127,7 +2469,7 @@ class CJSONRenderer extends ConvenienceRenderer_1.ConvenienceRenderer {
2127
2469
  /* We can NOT forward declare direct class members, e.g. a class type is included at level#0 */
2128
2470
  /* HOWEVER if it is not a direct class member, then we can SURELY forward declare it */
2129
2471
  propRecord.typeKind = "class";
2130
- propRecord.kind = (t.level === 0) ? IncludeKind.Include : IncludeKind.ForwardDeclare;
2472
+ propRecord.kind = t.level === 0 ? IncludeKind.Include : IncludeKind.ForwardDeclare;
2131
2473
  if (t.forceInclude) {
2132
2474
  propRecord.kind = IncludeKind.Include;
2133
2475
  }