/* * 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; } }