blob: de9c9b6864d2e47fb981275afc752c4262d806b3 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.eclipse.gltrace.format;
import com.android.ide.eclipse.gltrace.GLProtoBuf.GLMessage.DataType.Type;
public class GLDataTypeSpec {
private final String mCType;
private final Type mType;
private final String mName;
private final boolean mIsPointer;
public GLDataTypeSpec(String type, String name) {
mCType = type;
mName = name;
mType = getDataType(type);
mIsPointer = type.contains("*"); //$NON-NLS-1$
}
private Type getDataType(String type) {
type = type.toLowerCase();
// We use type.contains() rather than type.equals since we are matching against
// the type name along with qualifiers. e.g. "void", "GLvoid" and "void*" should
// all be assigned the same type.
if (type.contains("boolean")) { //$NON-NLS-1$
return Type.BOOL;
} else if (type.contains("enum")) { //$NON-NLS-1$
return Type.ENUM;
} else if (type.contains("float") || type.contains("clampf")) { //$NON-NLS-1$ //$NON-NLS-2$
return Type.FLOAT;
} else if (type.contains("void")) { //$NON-NLS-1$
return Type.VOID;
} else if (type.contains("char")) { //$NON-NLS-1$
return Type.CHAR;
} else {
// Matches all of the following types:
// glclampx, gluint, glint, glshort, glsizei, glfixed,
// glsizeiptr, glintptr, glbitfield, glfixed, glubyte.
// We might do custom formatting for these types in the future.
return Type.INT;
}
}
public Type getDataType() {
return mType;
}
public String getCType() {
return mCType;
}
public String getArgName() {
return mName;
}
public boolean isPointer() {
return mIsPointer;
}
}