1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 public class CType {
18 
19     String baseType;
20     boolean isConst;
21     boolean isPointer;
22 
CType()23     public CType() {
24     }
25 
CType(String baseType)26     public CType(String baseType) {
27     setBaseType(baseType);
28     }
29 
CType(String baseType, boolean isConst, boolean isPointer)30     public CType(String baseType, boolean isConst, boolean isPointer) {
31     setBaseType(baseType);
32     setIsConst(isConst);
33     setIsPointer(isPointer);
34     }
35 
getDeclaration()36     public String getDeclaration() {
37     return baseType + (isPointer ? " *" : "");
38     }
39 
setIsConst(boolean isConst)40     public void setIsConst(boolean isConst) {
41     this.isConst = isConst;
42     }
43 
isConst()44     public boolean isConst() {
45     return isConst;
46     }
47 
setIsPointer(boolean isPointer)48     public void setIsPointer(boolean isPointer) {
49     this.isPointer = isPointer;
50     }
51 
isPointer()52     public boolean isPointer() {
53     return isPointer;
54     }
55 
isEGLHandle()56     public boolean isEGLHandle() {
57         if(baseType.equals("EGLContext")
58            || baseType.equals("EGLConfig")
59            || baseType.equals("EGLSurface")
60            || baseType.equals("EGLDisplay")
61            || baseType.equals("EGLImage")
62            || baseType.equals("EGLSync")) {
63                return true;
64         }
65         return false;
66     }
67 
isVoid()68     boolean isVoid() {
69     String baseType = getBaseType();
70     return baseType.equals("GLvoid") ||
71         baseType.equals("void");
72     }
73 
isConstCharPointer()74     public boolean isConstCharPointer() {
75         return isConst && isPointer &&
76             (baseType.equals("char") || baseType.equals("GLchar"));
77     }
78 
isTypedPointer()79     public boolean isTypedPointer() {
80     return isPointer() && !isVoid() && !isConstCharPointer();
81     }
82 
setBaseType(String baseType)83     public void setBaseType(String baseType) {
84     this.baseType = baseType;
85     }
86 
getBaseType()87     public String getBaseType() {
88     return baseType;
89     }
90 
91     @Override
toString()92     public String toString() {
93     String s = "";
94     if (isConst()) {
95         s += "const ";
96     }
97     s += baseType;
98     if (isPointer()) {
99         s += "*";
100     }
101 
102     return s;
103     }
104 
105     @Override
hashCode()106     public int hashCode() {
107     return baseType.hashCode() ^ (isPointer ? 2 : 0) ^ (isConst ? 1 : 0);
108     }
109 
110     @Override
equals(Object o)111     public boolean equals(Object o) {
112     if (o != null && o instanceof CType) {
113         CType c = (CType)o;
114         return baseType.equals(c.baseType) &&
115         isPointer() == c.isPointer() &&
116         isConst() == c.isConst();
117     }
118     return false;
119     }
120 }
121