109 MemberInfo getConstructor() {
110 for (final MemberInfo memInfo : members) {
111 if (memInfo.getKind() == Kind.CONSTRUCTOR) {
112 return memInfo;
113 }
114 }
115 return null;
116 }
117
118 List<MemberInfo> getSpecializedConstructors() {
119 final List<MemberInfo> res = new LinkedList<>();
120 for (final MemberInfo memInfo : members) {
121 if (memInfo.isSpecializedConstructor()) {
122 assert memInfo.getKind() == Kind.SPECIALIZED_FUNCTION;
123 res.add(memInfo);
124 }
125 }
126 return Collections.unmodifiableList(res);
127 }
128
129 int getPrototypeMemberCount() {
130 int count = 0;
131 for (final MemberInfo memInfo : members) {
132 if (memInfo.getWhere() == Where.PROTOTYPE || memInfo.isConstructor()) {
133 count++;
134 }
135 }
136 return count;
137 }
138
139 int getConstructorMemberCount() {
140 int count = 0;
141 for (final MemberInfo memInfo : members) {
142 if (memInfo.getWhere() == Where.CONSTRUCTOR) {
143 count++;
144 }
145 }
146 return count;
147 }
148
149 int getInstancePropertyCount() {
150 int count = 0;
151 for (final MemberInfo memInfo : members) {
152 if (memInfo.getWhere() == Where.INSTANCE) {
153 count++;
154 }
155 }
156 return count;
157 }
158
159 MemberInfo find(final String findJavaName, final String findJavaDesc, final int findAccess) {
160 for (final MemberInfo memInfo : members) {
161 if (memInfo.getJavaName().equals(findJavaName) &&
162 memInfo.getJavaDesc().equals(findJavaDesc) &&
163 memInfo.getJavaAccess() == findAccess) {
164 return memInfo;
165 }
166 }
167 return null;
168 }
169
170 List<MemberInfo> findSpecializations(final String methodName) {
171 final List<MemberInfo> res = new LinkedList<>();
|
109 MemberInfo getConstructor() {
110 for (final MemberInfo memInfo : members) {
111 if (memInfo.getKind() == Kind.CONSTRUCTOR) {
112 return memInfo;
113 }
114 }
115 return null;
116 }
117
118 List<MemberInfo> getSpecializedConstructors() {
119 final List<MemberInfo> res = new LinkedList<>();
120 for (final MemberInfo memInfo : members) {
121 if (memInfo.isSpecializedConstructor()) {
122 assert memInfo.getKind() == Kind.SPECIALIZED_FUNCTION;
123 res.add(memInfo);
124 }
125 }
126 return Collections.unmodifiableList(res);
127 }
128
129 boolean isConstructorNeeded() {
130 // Constructor class generation is needed if we one or
131 // more constructor properties are defined or @Constructor
132 // is defined in the class.
133 for (final MemberInfo memInfo : members) {
134 if (memInfo.getKind() == Kind.CONSTRUCTOR ||
135 memInfo.getWhere() == Where.CONSTRUCTOR) {
136 return true;
137 }
138 }
139 return false;
140 }
141
142 boolean isPrototypeNeeded() {
143 // Prototype class generation is needed if we have atleast one
144 // prototype property or @Constructor defined in the class.
145 for (final MemberInfo memInfo : members) {
146 if (memInfo.getWhere() == Where.PROTOTYPE || memInfo.isConstructor()) {
147 return true;
148 }
149 }
150 return false;
151 }
152
153 int getPrototypeMemberCount() {
154 int count = 0;
155 for (final MemberInfo memInfo : members) {
156 switch (memInfo.getKind()) {
157 case SETTER:
158 case SPECIALIZED_FUNCTION:
159 // SETTER was counted when GETTER was encountered.
160 // SPECIALIZED_FUNCTION was counted as FUNCTION already.
161 continue;
162 }
163
164 if (memInfo.getWhere() == Where.PROTOTYPE) {
165 count++;
166 }
167 }
168 return count;
169 }
170
171 int getConstructorMemberCount() {
172 int count = 0;
173 for (final MemberInfo memInfo : members) {
174 switch (memInfo.getKind()) {
175 case CONSTRUCTOR:
176 case SETTER:
177 case SPECIALIZED_FUNCTION:
178 // SETTER was counted when GETTER was encountered.
179 // Constructor and constructor SpecializedFunctions
180 // are not added as members and so not counted.
181 continue;
182 }
183
184 if (memInfo.getWhere() == Where.CONSTRUCTOR) {
185 count++;
186 }
187 }
188 return count;
189 }
190
191 int getInstancePropertyCount() {
192 int count = 0;
193 for (final MemberInfo memInfo : members) {
194 switch (memInfo.getKind()) {
195 case SETTER:
196 case SPECIALIZED_FUNCTION:
197 // SETTER was counted when GETTER was encountered.
198 // SPECIALIZED_FUNCTION was counted as FUNCTION already.
199 continue;
200 }
201
202 if (memInfo.getWhere() == Where.INSTANCE) {
203 count++;
204 }
205 }
206 return count;
207 }
208
209 MemberInfo find(final String findJavaName, final String findJavaDesc, final int findAccess) {
210 for (final MemberInfo memInfo : members) {
211 if (memInfo.getJavaName().equals(findJavaName) &&
212 memInfo.getJavaDesc().equals(findJavaDesc) &&
213 memInfo.getJavaAccess() == findAccess) {
214 return memInfo;
215 }
216 }
217 return null;
218 }
219
220 List<MemberInfo> findSpecializations(final String methodName) {
221 final List<MemberInfo> res = new LinkedList<>();
|