});
str += NLine(1);
} else if (type.ToString() == "list") {
- if (type.GetMetaType()->IsUserDefinedType() ||
- type.GetMetaType()->ToString() == "string" ||
- type.GetMetaType()->ToString() == "bundle" ||
- type.GetMetaType()->ToString() == "list" ||
- type.GetMetaType()->ToString() == "array") {
- str += GenTemplateString(setter,
- [&]()->std::string {
- return "h->" + id;
- },
- [&]()->std::string {
- if (type.GetMetaType()->ToString() == "string")
- return "g_list_append(h->" + id + ", strdup(" + id + "))";
- return "g_list_append(h->" + id + ", " + id + ")";
- });
- } else {
- str += GenTemplateString(CB_SETTER_LIST_BLOCK,
- [&]()->std::string {
- return GetParcelParamTypeString(*type.GetMetaType());
- },
- [&]()->std::string {
- std::string s;
+ str += GenTemplateString(CB_SETTER_LIST_BLOCK,
+ [&]()->std::string {
+ return GetParcelParamTypeString(*type.GetMetaType());
+ },
+ [&]()->std::string {
+ std::string s;
+ if (type.GetMetaType()->IsUserDefinedType() ||
+ type.GetMetaType()->ToString() == "string" ||
+ type.GetMetaType()->ToString() == "bundle" ||
+ type.GetMetaType()->ToString() == "list" ||
+ type.GetMetaType()->ToString() == "array") {
+ s += GetSetterString(*type.GetMetaType(), "value", id);
+ s += GenTemplateString(CB_IF_STATEMENT_WITH_BRACES,
+ [&]()->std::string {
+ return "!value";
+ },
+ [&]()->std::string {
+ std::string s;
+ s += "_E(\"Out of memory\");" + NLine(1);
+ s += "return -1;";
+ return s;
+ });
+ s += NLine(1);
+ } else {
+ s += "value = calloc(1, sizeof(*value));" + NLine(1);
s += GenTemplateString(CB_IF_STATEMENT_WITH_BRACES,
[&]()->std::string {
return "!value";
});
s += NLine(1);
s += GetSetterString("*value", id);
- return s;
- },
- [&]()->std::string {
- return "h->" + id;
- },
- [&]()->std::string {
- return "h->" + id;
- });
- }
+ }
+ return s;
+ },
+ [&]()->std::string {
+ return "h->" + id;
+ },
+ [&]()->std::string {
+ return "h->" + id;
+ });
} else if (type.ToString() == "array") {
str += GetFinalizeString(id, type, "h->") + NLine(1);
str += GetSetterString("h->" + id, "NULL");