1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "hdi_type_emitter.h"
17 
18 namespace OHOS {
19 namespace Idl {
20 std::string HdiTypeEmitter::dataParcelName_;
21 std::string HdiTypeEmitter::replyParcelName_;
22 std::string HdiTypeEmitter::errorCodeName_;
IsPod() const23 bool HdiTypeEmitter::IsPod() const
24 {
25     return isPod_;
26 }
27 
SetPod(const bool & isPod)28 void HdiTypeEmitter::SetPod(const bool &isPod)
29 {
30     isPod_ = isPod;
31 }
32 
GetTypeKind()33 TypeKind HdiTypeEmitter::GetTypeKind()
34 {
35     return TypeKind::TYPE_UNKNOWN;
36 }
37 
SetTypeName(const std::string & name)38 void HdiTypeEmitter::SetTypeName(const std::string &name)
39 {
40     typeName_ = name;
41 }
42 
GetTypeName()43 std::string HdiTypeEmitter::GetTypeName()
44 {
45     return typeName_;
46 }
47 
SetName(const std::string & name)48 void HdiTypeEmitter::SetName(const std::string &name)
49 {
50     name_ = name;
51 }
52 
GetName()53 std::string HdiTypeEmitter::GetName()
54 {
55     return name_;
56 }
57 
EmitCType(TypeMode mode) const58 std::string HdiTypeEmitter::EmitCType(TypeMode mode) const
59 {
60     return "unknow";
61 }
62 
EmitCppType(TypeMode mode) const63 std::string HdiTypeEmitter::EmitCppType(TypeMode mode) const
64 {
65     return "unknow";
66 }
67 
EmitJavaType(TypeMode mode,bool isInnerType) const68 std::string HdiTypeEmitter::EmitJavaType(TypeMode mode, bool isInnerType) const
69 {
70     return "unknow";
71 }
72 
EmitCTypeDecl() const73 std::string HdiTypeEmitter::EmitCTypeDecl() const
74 {
75     StringBuilder sb;
76     return sb.ToString();
77 }
78 
EmitCppTypeDecl() const79 std::string HdiTypeEmitter::EmitCppTypeDecl() const
80 {
81     StringBuilder sb;
82     return sb.ToString();
83 }
84 
EmitJavaTypeDecl() const85 std::string HdiTypeEmitter::EmitJavaTypeDecl() const
86 {
87     StringBuilder sb;
88 
89     return sb.ToString();
90 }
91 
EmitCWriteVar(TypeMode mode,const std::string & name,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix) const92 void HdiTypeEmitter::EmitCWriteVar(TypeMode mode, const std::string &name,
93     const std::string &gotoLabel, StringBuilder &sb, const std::string &prefix) const
94 {
95     sb.Append(prefix).AppendFormat("//Writing \"%s\" type of data is not supported\n", name_.c_str());
96 }
97 
EmitCProxyWriteOutVar(const std::string & name,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix) const98 void HdiTypeEmitter::EmitCProxyWriteOutVar(const std::string &name, const std::string &gotoLabel, StringBuilder &sb,
99     const std::string &prefix) const
100 {
101 }
102 
EmitCProxyReadVar(const std::string & name,bool isInnerType,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix) const103 void HdiTypeEmitter::EmitCProxyReadVar(const std::string &name, bool isInnerType, const std::string &gotoLabel,
104     StringBuilder &sb, const std::string &prefix) const
105 {
106     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
107 }
108 
EmitCStubReadVar(const std::string & name,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix) const109 void HdiTypeEmitter::EmitCStubReadVar(const std::string &name, const std::string &gotoLabel, StringBuilder &sb,
110     const std::string &prefix) const
111 {
112     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
113 }
114 
EmitCStubReadOutVar(const std::string & memFlagName,const std::string & name,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix) const115 void HdiTypeEmitter::EmitCStubReadOutVar(const std::string &memFlagName, const std::string &name,
116     const std::string &gotoLabel, StringBuilder &sb, const std::string &prefix) const
117 {
118     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
119 }
120 
EmitCppWriteVar(const std::string & parcelName,const std::string & name,StringBuilder & sb,const std::string & prefix,unsigned int innerLevel) const121 void HdiTypeEmitter::EmitCppWriteVar(const std::string &parcelName, const std::string &name,
122     StringBuilder &sb, const std::string &prefix, unsigned int innerLevel) const
123 {
124     sb.Append(prefix).AppendFormat("//Writing \"%s\" type of data is not supported\n", name_.c_str());
125 }
126 
EmitCppReadVar(const std::string & name,StringBuilder & sb,const std::string & prefix,TypeMode mode,unsigned int innerLevel) const127 void HdiTypeEmitter::EmitCppReadVar(const std::string &name, StringBuilder &sb, const std::string &prefix,
128     TypeMode mode, unsigned int innerLevel) const
129 {
130     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
131 }
132 
EmitCMarshalling(const std::string & name,StringBuilder & sb,const std::string & prefix) const133 void HdiTypeEmitter::EmitCMarshalling(const std::string &name, StringBuilder &sb, const std::string &prefix) const
134 {
135     sb.Append(prefix).AppendFormat("//Writing \"%s\" type of data is not supported\n", name_.c_str());
136 }
137 
EmitCUnMarshalling(const std::string & name,const std::string & gotoLabel,StringBuilder & sb,const std::string & prefix,std::vector<std::string> & freeObjStatements) const138 void HdiTypeEmitter::EmitCUnMarshalling(const std::string &name, const std::string &gotoLabel,
139     StringBuilder &sb, const std::string &prefix, std::vector<std::string> &freeObjStatements) const
140 {
141     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
142 }
143 
EmitFreeStatements(const std::vector<std::string> & freeObjStatements,StringBuilder & sb,const std::string & prefix) const144 void HdiTypeEmitter::EmitFreeStatements(
145     const std::vector<std::string> &freeObjStatements, StringBuilder &sb, const std::string &prefix) const
146 {
147     for (auto it = freeObjStatements.rbegin(); it != freeObjStatements.rend(); it++) {
148         sb.Append(prefix).Append(*it);
149     }
150 }
151 
EmitCppMarshalling(const std::string & parcelName,const std::string & name,StringBuilder & sb,const std::string & prefix,unsigned int innerLevel) const152 void HdiTypeEmitter::EmitCppMarshalling(const std::string &parcelName, const std::string &name,
153     StringBuilder &sb, const std::string &prefix, unsigned int innerLevel) const
154 {
155 }
156 
EmitCppUnMarshalling(const std::string & parcelName,const std::string & name,StringBuilder & sb,const std::string & prefix,unsigned int innerLevel) const157 void HdiTypeEmitter::EmitCppUnMarshalling(const std::string &parcelName, const std::string &name,
158     StringBuilder &sb, const std::string &prefix, unsigned int innerLevel) const
159 {
160 }
161 
EmitMemoryRecycle(const std::string & name,bool ownership,StringBuilder & sb,const std::string & prefix) const162 void HdiTypeEmitter::EmitMemoryRecycle(
163     const std::string &name, bool ownership, StringBuilder &sb, const std::string &prefix) const
164 {
165     // only std::string, Array, List, struct and union type need recycle memory
166     (void)name;
167     (void)ownership;
168     (void)sb;
169     (void)prefix;
170 }
171 
EmitJavaWriteVar(const std::string & parcelName,const std::string & name,StringBuilder & sb,const std::string & prefix,TypeMode mode) const172 void HdiTypeEmitter::EmitJavaWriteVar(const std::string &parcelName, const std::string &name,
173     StringBuilder &sb, const std::string &prefix, TypeMode mode) const
174 {
175     sb.Append(prefix).AppendFormat("//Writing \"%s\" type of data is not supported\n", name_.c_str());
176 }
177 
EmitJavaReadVar(const std::string & parcelName,const std::string & name,StringBuilder & sb,const std::string & prefix) const178 void HdiTypeEmitter::EmitJavaReadVar(
179     const std::string &parcelName, const std::string &name, StringBuilder &sb, const std::string &prefix) const
180 {
181     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
182 }
183 
EmitJavaReadInnerVar(const std::string & parcelName,const std::string & name,bool isInner,StringBuilder & sb,const std::string & prefix) const184 void HdiTypeEmitter::EmitJavaReadInnerVar(const std::string &parcelName, const std::string &name, bool isInner,
185     StringBuilder &sb, const std::string &prefix) const
186 {
187     sb.Append(prefix).AppendFormat("//Reading \"%s\" type of data is not supported\n", name_.c_str());
188 }
189 
EmitCWriteMethods(UtilMethodMap & methods,const std::string & prefix,const std::string & methodPrefix,bool isDecl) const190 void HdiTypeEmitter::EmitCWriteMethods(UtilMethodMap &methods, const std::string &prefix,
191     const std::string &methodPrefix, bool isDecl) const
192 {
193 }
194 
EmitCReadMethods(UtilMethodMap & methods,const std::string & prefix,const std::string & methodPrefix,bool isDecl) const195 void HdiTypeEmitter::EmitCReadMethods(UtilMethodMap &methods, const std::string &prefix,
196     const std::string &methodPrefix, bool isDecl) const
197 {
198 }
199 
EmitCStubReadMethods(UtilMethodMap & methods,const std::string & prefix,const std::string & methodPrefix,bool isDecl) const200 void HdiTypeEmitter::EmitCStubReadMethods(UtilMethodMap &methods, const std::string &prefix,
201     const std::string &methodPrefix, bool isDecl) const
202 {
203 }
204 
EmitCppWriteMethods(UtilMethodMap & methods,const std::string & prefix,const std::string & methodPrefix,bool isDecl) const205 void HdiTypeEmitter::EmitCppWriteMethods(UtilMethodMap &methods, const std::string &prefix,
206     const std::string &methodPrefix, bool isDecl) const
207 {
208 }
209 
EmitCppReadMethods(UtilMethodMap & methods,const std::string & prefix,const std::string & methodPrefix,bool isDecl) const210 void HdiTypeEmitter::EmitCppReadMethods(UtilMethodMap &methods, const std::string &prefix,
211     const std::string &methodPrefix, bool isDecl) const
212 {
213 }
214 } // namespace Idl
215 } // namespace OHOS