content: /*
   * Copyright (C) 2006 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.
   */
  
  public class CType {
  
      String baseType;
      boolean isConst;
      boolean isPointer;
  
      public CType() {
      }
  
      public CType(String baseType) {
      setBaseType(baseType);
      }
  
      public CType(String baseType, boolean isConst, boolean isPointer) {
      setBaseType(baseType);
      setIsConst(isConst);
      setIsPointer(isPointer);
      }
  
      public String getDeclaration() {
      return baseType + (isPointer ? " *" : "");
      }
  
      public void setIsConst(boolean isConst) {
      this.isConst = isConst;
      }
  
      public boolean isConst() {
      return isConst;
      }
  
      public void setIsPointer(boolean isPointer) {
      this.isPointer = isPointer;
      }
  
      public boolean isPointer() {
      return isPointer;
      }
  
      public boolean isEGLHandle() {
          if(baseType.equals("EGLContext")
             || baseType.equals("EGLConfig")
             || baseType.equals("EGLSurface")
             || baseType.equals("EGLDisplay")
             || baseType.equals("EGLImage")
             || baseType.equals("EGLSync")) {
                 return true;
          }
          return false;
      }
  
      boolean isVoid() {
      String baseType = getBaseType();
      return baseType.equals("GLvoid") ||
          baseType.equals("void");
      }
  
      public boolean isConstCharPointer() {
          return isConst && isPointer &&
              (baseType.equals("char") || baseType.equals("GLchar"));
      }
  
      public boolean isTypedPointer() {
      return isPointer() && !isVoid() && !isConstCharPointer();
      }
  
      public void setBaseType(String baseType) {
      this.baseType = baseType;
      }
  
      public String getBaseType() {
      return baseType;
      }
  
      @Override
      public String toString() {
      String s = "";
      if (isConst()) {
          s += "const ";
      }
      s += baseType;
      if (isPointer()) {
          s += "*";
      }
  
      return s;
      }
  
      @Override
      public int hashCode() {
      return baseType.hashCode() ^ (isPointer ? 2 : 0) ^ (isConst ? 1 : 0);
      }
  
      @Override
      public boolean equals(Object o) {
      if (o != null && o instanceof CType) {
          CType c = (CType)o;
          return baseType.equals(c.baseType) &&
          isPointer() == c.isPointer() &&
          isConst() == c.isConst();
      }
      return false;
      }
  }
  