1.1 --- a/src/API.cpp Sat Nov 17 22:02:08 2012 -0800
1.2 +++ b/src/API.cpp Sat Nov 17 23:11:38 2012 -0800
1.3 @@ -275,20 +275,25 @@
1.4 {
1.5 switch (param.type()) {
1.6 case Ke::Parameter::Array:
1.7 - return type->isArray() &&
1.8 - type->levels() == 1 &&
1.9 - (type->contained()->isPrimitive() || type->contained()->isEnum()) &&
1.10 - (type->contained()->primitive() != PrimitiveType_Char);
1.11 + {
1.12 + if (!type->isArray())
1.13 + return false;
1.14 +
1.15 + ArrayType *atype = ArrayType::cast(type);
1.16 + return atype->levels() == 1 &&
1.17 + (atype->contained()->isPrimitive() || atype->contained()->isEnum()) &&
1.18 + (atype->contained()->primitive() != PrimitiveType_Char);
1.19 + }
1.20 case Ke::Parameter::CharArray:
1.21 - return type->isCharArray();
1.22 + return type->isArray() && ArrayType::cast(type)->isCharArray();
1.23 case Ke::Parameter::Float:
1.24 return type->isFloat();
1.25 case Ke::Parameter::FloatRef:
1.26 - return type->isReference() && type->contained()->isFloat();
1.27 + return type->isReference() && type->contained_ref()->isFloat();
1.28 case Ke::Parameter::Int:
1.29 return type->isInt32() || type->isEnum();
1.30 case Ke::Parameter::IntRef:
1.31 - return type->isReference() && (type->contained()->isInt32() || type->contained()->isEnum());
1.32 + return type->isReference() && (type->contained_ref()->isInt32() || type->contained_ref()->isEnum());
1.33 default:
1.34 return false;
1.35 }