aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java166
1 files changed, 0 insertions, 166 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java
deleted file mode 100644
index 6c34005ac..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/format/GLMessageFormatter.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.GLEnum;
-import com.android.ide.eclipse.gltrace.GLProtoBuf.GLMessage;
-import com.android.ide.eclipse.gltrace.GLProtoBuf.GLMessage.DataType;
-import com.android.ide.eclipse.gltrace.GLProtoBuf.GLMessage.DataType.Type;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * GLMessageFormatter is used to format and create a string representation for a {@link GLMessage}.
- * It is provided with a specification for all GL Functions. Using this information, each
- * GLMessage is parsed and formatted appropriately for display.
- */
-public class GLMessageFormatter {
- private static final String GL_NO_ERROR = "GL_NO_ERROR";
- private Map<String, GLAPISpec> mAPISpecs;
- private enum DataTypeContext { CONTEXT_ARGUMENT, CONTEXT_RETURNVALUE };
-
- public GLMessageFormatter(Map<String, GLAPISpec> specs) {
- mAPISpecs = specs;
- }
-
- public String formatGLMessage(GLMessage glMessage) {
- GLAPISpec apiSpec = mAPISpecs.get(glMessage.getFunction().toString());
- if (apiSpec == null) {
- return glMessage.getFunction().toString();
- }
-
- return formatCall(apiSpec, glMessage) + formatReturnValue(apiSpec, glMessage);
- }
-
- private String formatReturnValue(GLAPISpec apiSpec, GLMessage glMessage) {
- if (apiSpec.getReturnValue().getDataType() == Type.VOID) {
- return "";
- }
-
- GLDataTypeSpec returnSpec = apiSpec.getReturnValue();
- return String.format(" = (%s) %s", returnSpec.getCType(), //$NON-NLS-1$
- formatDataValue(glMessage.getReturnValue(),
- returnSpec,
- DataTypeContext.CONTEXT_RETURNVALUE));
- }
-
- private String formatCall(GLAPISpec apiSpec, GLMessage glMessage) {
- return String.format("%s(%s)", apiSpec.getFunction(), //$NON-NLS-1$
- formatArgs(glMessage, apiSpec.getArgs()));
- }
-
- private String formatArgs(GLMessage glMessage, List<GLDataTypeSpec> argSpecs) {
- int sizeEstimate = 10 + argSpecs.size() * 5;
- StringBuilder sb = new StringBuilder(sizeEstimate);
-
- for (int i = 0; i < argSpecs.size(); i++) {
- GLDataTypeSpec argSpec = argSpecs.get(i);
-
- if (argSpec.getDataType() == Type.VOID && !argSpec.isPointer()) {
- sb.append("void"); //$NON-NLS-1$
- } else {
- sb.append(argSpec.getArgName());
- sb.append(" = "); //$NON-NLS-1$
- sb.append(formatDataValue(glMessage.getArgs(i),
- argSpec,
- DataTypeContext.CONTEXT_ARGUMENT));
- }
-
- if (i < argSpecs.size() - 1) {
- sb.append(", "); //$NON-NLS-1$
- }
- }
-
- return sb.toString();
- }
-
- private String formatDataValue(DataType var, GLDataTypeSpec typeSpec, DataTypeContext context) {
- if (typeSpec.isPointer()) {
- return formatPointer(var, typeSpec.getDataType());
- }
-
- switch (typeSpec.getDataType()) {
- case VOID:
- return "";
- case BOOL:
- return Boolean.toString(var.getBoolValue(0));
- case FLOAT:
- return String.format("%f", var.getFloatValue(0)); //$NON-NLS-1$
- case INT:
- return Integer.toString(var.getIntValue(0));
- case ENUM:
- if (var.getIntValue(0) == 0 && context == DataTypeContext.CONTEXT_RETURNVALUE) {
- return GL_NO_ERROR;
- } else {
- return GLEnum.valueOf(var.getIntValue(0)).toString();
- }
- default:
- return "(unknown type)"; //$NON-NLS-1$
- }
- }
-
- private String formatPointer(DataType var, Type typeSpec) {
- if (var.getType() != typeSpec && !isEnumTypeWithIntData(var, typeSpec)) {
- // the type of the data in the message does not match expected specification.
- // in such a case, just print the data as a pointer and don't try to interpret it.
- if (var.getIntValueCount() > 0) {
- return String.format("0x%x", var.getIntValue(0)); //$NON-NLS-1$
- } else {
- return "0x??"; //$NON-NLS-1$
- }
- }
-
- // Display as array if possible
- switch (typeSpec) {
- case BOOL:
- return var.getBoolValueList().toString();
- case FLOAT:
- return var.getFloatValueList().toString();
- case INT:
- return var.getIntValueList().toString();
- case CHAR:
- return var.getCharValueList().get(0).toStringUtf8();
- case ENUM:
- List<Integer> vals = var.getIntValueList();
- StringBuilder sb = new StringBuilder(vals.size() * 5);
- sb.append('[');
- for (Integer v: vals) {
- sb.append(GLEnum.valueOf(v.intValue()));
- }
- sb.append(']');
- return sb.toString();
- case VOID:
- if (var.getRawBytesList().size() > 0) {
- return String.format("[ %d bytes ]", var.getRawBytesList().get(0).size()); //$NON-NLS-1$
- }
- return "[]"; //$NON-NLS-1$
- }
-
- // We have a pointer, but we don't have the data pointed to.
- // Just format and return the pointer (points to device memory)
- if (var.getIntValue(0) == 0) {
- return "NULL"; //$NON-NLS-1$
- } else {
- return String.format("0x%x", var.getIntValue(0)); //$NON-NLS-1$
- }
- }
-
- private boolean isEnumTypeWithIntData(DataType var, Type typeSpec) {
- return var.getType() == Type.INT && typeSpec == Type.ENUM;
- }
-}