diff options
author | Hwankyu Jhun <h.jhun@samsung.com> | 2019-01-09 19:41:20 +0900 |
---|---|---|
committer | Hwankyu Jhun <h.jhun@samsung.com> | 2019-01-09 19:42:38 +0900 |
commit | a1c9cc35872a8ce6651401b6b57fa0e6eaaf4867 (patch) | |
tree | 01b45625970ab4efddb7700f3bcccb4b7389db3c | |
parent | 0babdc9477f95c3c699ac8899fafaa494aa188f7 (diff) | |
download | tidl-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.cc | 5 | ||||
-rw-r--r-- | idlc/c_gen/c_body_gen_base_cb.h | 12 |
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 { |