Changeset 76
- Timestamp:
- 08/07/06 16:57:04 (2 years ago)
- Files:
-
- trunk/bcd.gen/bcd/gen/bcdgen.d (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bcd.gen/bcd/gen/bcdgen.d
r75 r76 1157 1157 char[] name = getNName(node); 1158 1158 char[] mangled = toStringFree(getMangled(node)); 1159 ParsedType type = parseType (toStringFree(xmlGetProp(node, "returns")));1159 ParsedType type = parseTypeReturnable(toStringFree(xmlGetProp(node, "returns"))); 1160 1160 char[] Dargs; 1161 1161 char[] Deargs; … … 1183 1183 char[] name = toStringFree(xmlGetProp(node, "name"));; 1184 1184 char[] mangled = toStringFree(getMangled(node)); 1185 ParsedType type = parseType (toStringFree(xmlGetProp(node, "returns")));1185 ParsedType type = parseTypeReturnable(toStringFree(xmlGetProp(node, "returns"))); 1186 1186 char[] Dargs; 1187 1187 char[] Deargs; … … 1355 1355 char[] mangled = toStringFree(getMangled(node)); 1356 1356 char[] demangled = toStringFree(getDemangled(node)); 1357 ParsedType type = parseType (toStringFree(xmlGetProp(node, "returns")));1357 ParsedType type = parseTypeReturnable(toStringFree(xmlGetProp(node, "returns"))); 1358 1358 char[] Dargs; 1359 1359 char[] Deargs; … … 1563 1563 bool isClassPtr; 1564 1564 bool isFunction; 1565 bool isStaticArray; 1566 } 1567 1568 /** 1569 * Get the type of a node in C[++] and D, in a way which can be a D return type 1570 */ 1571 ParsedType parseTypeReturnable(char[] type) 1572 { 1573 ParsedType t = parseType(type); 1574 if (t.isStaticArray) { 1575 // can't return a static array, convert it into a pointer 1576 int bloc = rfind(t.DType, '['); 1577 if (bloc != -1) { 1578 // cut off the [...] 1579 t.DType = t.DType[0..bloc] ~ "*"; 1580 t.isStaticArray = false; 1581 } 1582 } 1583 1584 return t; 1565 1585 } 1566 1586 … … 1716 1736 baseType.DType ~= " [" ~ toString(size) ~ "]"; 1717 1737 1718 parsedCache[type] = new ParsedType(baseType); 1738 ParsedType t = new ParsedType(baseType); 1739 t.isStaticArray = true; 1740 parsedCache[type] = t; 1719 1741 1720 1742 } else if (nname == "ReferenceType") {
