summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2019-01-09 19:41:20 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2019-01-09 19:42:38 +0900
commita1c9cc35872a8ce6651401b6b57fa0e6eaaf4867 (patch)
tree01b45625970ab4efddb7700f3bcccb4b7389db3c
parent0babdc9477f95c3c699ac8899fafaa494aa188f7 (diff)
downloadtidl-a1c9cc35872a8ce6651401b6b57fa0e6eaaf4867.tar.gz
tidl-a1c9cc35872a8ce6651401b6b57fa0e6eaaf4867.tar.bz2
tidl-a1c9cc35872a8ce6651401b6b57fa0e6eaaf4867.zip
Fix a bug about C generator
Change-Id: I4a303e54934ee37180b92d9c33844739c3b1973f Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rw-r--r--idlc/c_gen/c_body_gen_base.cc5
-rw-r--r--idlc/c_gen/c_body_gen_base_cb.h12
2 files changed, 17 insertions, 0 deletions
diff --git a/idlc/c_gen/c_body_gen_base.cc b/idlc/c_gen/c_body_gen_base.cc
index b744b49..8f8cde2 100644
--- a/idlc/c_gen/c_body_gen_base.cc
+++ b/idlc/c_gen/c_body_gen_base.cc
@@ -651,6 +651,11 @@ std::string CBodyGeneratorBase::GetParcelReadString(const std::string& id,
s += GetSetterString("h->" + id + "[i]", "value");
return s;
});
+ } else if (type.IsUserDefinedType()) {
+ str += GenTemplateString(ReplaceAll(CB_READ_USER_DEFINED_BLOCK, "##", id),
+ [&]()->std::string {
+ return GetFullNameFromType(type);
+ });
} else {
str += GenTemplateString(parcel,
[&]()->std::string {
diff --git a/idlc/c_gen/c_body_gen_base_cb.h b/idlc/c_gen/c_body_gen_base_cb.h
index a27cc54..a9d7ef1 100644
--- a/idlc/c_gen/c_body_gen_base_cb.h
+++ b/idlc/c_gen/c_body_gen_base_cb.h
@@ -257,6 +257,18 @@ do {
} while (0);
)__c_cb";
+const char CB_READ_USER_DEFINED_BLOCK[] =
+R"__c_cb(do {
+ rpc_port_$$_create(&h->##);
+ if (!h->##) {
+ _E("Failed to create handle");
+ return;
+ }
+
+ rpc_port_parcel_read(parcel, &h->##->parcelable, h->##);
+} while (0);
+)__c_cb";
+
const char CB_FINALIZE_LIST_BLOCK[] =
R"__c_cb(
do {