| 2203 | } |
| 2204 | |
| 2205 | string CGenerator::getTypenameName(DataType *t, const string &name) |
| 2206 | { |
| 2207 | string returnName; |
| 2208 | switch (t->getDataType()) |
| 2209 | { |
| 2210 | case DataType::data_type_t::kArrayType: |
| 2211 | { |
| 2212 | // Array type requires the array element count to come after the variable/member name. |
| 2213 | returnName = name; |
| 2214 | ArrayType *a = dynamic_cast<ArrayType *>(t); |
| 2215 | assert(a); |
| 2216 | giveBracesToArrays(returnName); |
| 2217 | returnName = format_string("%s[%d]", returnName.c_str(), a->getElementCount()); |
| 2218 | returnName = getTypenameName(a->getElementType(), returnName); |
| 2219 | break; |
| 2220 | } |
| 2221 | case DataType::data_type_t::kBuiltinType: |
| 2222 | { |
| 2223 | assert(nullptr != dynamic_cast<const BuiltinType *>(t)); |
| 2224 | returnName = getBuiltinTypename(dynamic_cast<const BuiltinType *>(t)); |
| 2225 | if (!(t->isString() && name != "" && name[0] == '*')) |
| 2226 | { |
| 2227 | returnName += returnSpaceWhenNotEmpty(name); |
| 2228 | } |
| 2229 | returnName += name; |
| 2230 | break; |
| 2231 | } |
| 2232 | case DataType::data_type_t::kListType: |
| 2233 | { |
| 2234 | const ListType *a = dynamic_cast<const ListType *>(t); |
| 2235 | assert(a); |
| 2236 | returnName = "* " + name; |
| 2237 | returnName = getTypenameName(a->getElementType(), returnName); |
| 2238 | break; |
| 2239 | } |
| 2240 | case DataType::data_type_t::kUnionType: |
| 2241 | { |
| 2242 | UnionType *unionType = dynamic_cast<UnionType *>(t); |
| 2243 | assert(unionType); |
| 2244 | if (unionType->isNonEncapsulatedUnion()) |
| 2245 | { |
| 2246 | returnName = getOutputName(t); |
| 2247 | returnName += returnSpaceWhenNotEmpty(name) + name; |
| 2248 | } |
| 2249 | else |
| 2250 | { |
| 2251 | returnName += "union\n {\n"; |
| 2252 | returnName += getUnionMembersData(unionType, " "); |
| 2253 | returnName += "\n } " + name; |
| 2254 | } |
| 2255 | break; |
| 2256 | } |
| 2257 | case DataType::data_type_t::kVoidType: |
| 2258 | { |
| 2259 | returnName = "void"; |
| 2260 | returnName += returnSpaceWhenNotEmpty(name) + name; |
| 2261 | break; |
| 2262 | } |
nothing calls this directly
no test coverage detected