src/API.cpp
changeset 209 5cbec15fadfe
parent 195 c1ba166f3fc4
child 222 0cde1379b29f
     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      }