@@ -128,8 +128,10 @@ public String[] generate() {
128128
129129 for (DisassemblerSymbol symbol : getVtables ()) {
130130 try {
131- String mname = getVirtualMethodDefinition (symbol );
132- lines .addElement (" " + mname + "// " + symbol .getName ());
131+ if (symbol != null ) {
132+ String mname = getVirtualMethodDefinition (symbol );
133+ lines .addElement (" " + mname + "// " + symbol .getName ());
134+ }
133135 } catch (Exception e ) {
134136 e .printStackTrace ();
135137 }
@@ -141,17 +143,21 @@ public String[] generate() {
141143 lines .addElement (" //Methods" );
142144
143145 for (DisassemblerSymbol symbol : getMethods ()) {
144- String mname = getMethodDefinition (symbol );
145- lines .addElement (" " + mname + "// " + symbol .getName ());
146+ if (symbol != null ) {
147+ String mname = getMethodDefinition (symbol );
148+ lines .addElement (" " + mname + "// " + symbol .getName ());
149+ }
146150 }
147151 }
148152
149153 if (getObjects () != null ) {
150154 lines .addElement ("public:" );
151155 lines .addElement (" //Objects" );
152156 for (DisassemblerSymbol symbol : getObjects ()) {
153- String mname = getObjectDefinition (symbol );
154- lines .addElement (" " + mname + "// " + symbol .getName ());
157+ if (symbol != null ) {
158+ String mname = getObjectDefinition (symbol );
159+ lines .addElement (" " + mname + "// " + symbol .getName ());
160+ }
155161 }
156162 }
157163 lines .addElement ("};//" + className );
@@ -164,8 +170,9 @@ public String[] generate() {
164170 e .printStackTrace ();
165171 }
166172 String [] ret = new String [lines .size ()];
167- for (int i = 0 ; i < lines .size (); ++i )
173+ for (int i = 0 ; i < lines .size (); ++i ) {
168174 ret [i ] = lines .get (i );
175+ }
169176 return ret ;
170177 }
171178
@@ -178,115 +185,150 @@ private String getObjectDefinition(@NotNull DisassemblerSymbol symbol) {
178185 @ NotNull
179186 private String getMethodDefinition (@ NotNull DisassemblerSymbol symbol ) {
180187 String name = symbol .getDemangledName ().substring (disassemblerClass .getName ().length () + 2 );
181- if (name .startsWith ("~" + className ))
188+ if (name .startsWith ("~" + className )) {
182189 return name + ";" ;
183- if (name .startsWith (className ))
190+ }
191+ if (name .startsWith (className )) {
184192 return name + ";" ;
193+ }
185194 return "void " + name + ";" ;
186195 }
187196
188197 @ NotNull
189198 private String getVirtualMethodDefinition (@ NotNull DisassemblerSymbol symbol ) throws Exception {
190199 String name_ = symbol .getDemangledName ();
191- if (name_ .equals ("__cxa_pure_virtual" ))
200+ if (name_ .equals ("__cxa_pure_virtual" )) {
192201 return "//pure virtual method" ;
193- if (!name_ .startsWith (disassemblerClass .getName ()))
202+ }
203+ if (!name_ .startsWith (disassemblerClass .getName ())) {
194204 throw new Exception ("No owned vtable" );
205+ }
195206 String name = symbol .getDemangledName ().substring (disassemblerClass .getName ().length () + 2 );
196- if (name .startsWith ("~" + className ))
207+ if (name .startsWith ("~" + className )) {
197208 return "virtual " + name + ";" ;
198- if (name .startsWith (className ))
209+ }
210+ if (name .startsWith (className )) {
199211 return "virtual " + name + ";" ;
212+ }
200213 return "virtual void " + name + ";" ;
201214 }
202215
216+ @ androidx .annotation .Nullable
203217 @ Nullable
204218 private DisassemblerSymbol [] getObjects () {
205219 Vector <DisassemblerSymbol > symbols = new Vector <>();
206- for (DisassemblerSymbol symbol : disassemblerClass .getSymbols ())
207- if (isObjectItem (symbol ))
220+ for (DisassemblerSymbol symbol : disassemblerClass .getSymbols ()) {
221+ if (isObjectItem (symbol )) {
208222 symbols .addElement (symbol );
223+ }
224+ }
209225 DisassemblerSymbol [] ret = new DisassemblerSymbol [symbols .size ()];
210- for (int i = 0 ; i < symbols .size (); ++i )
226+ for (int i = 0 ; i < symbols .size (); ++i ) {
211227 ret [i ] = symbols .get (i );
212- if (symbols .isEmpty ())
228+ }
229+ if (symbols .isEmpty ()) {
213230 return null ;
231+ }
214232 return ret ;
215233 }
216234
235+ @ androidx .annotation .Nullable
217236 @ Nullable
218237 private DisassemblerSymbol [] getVtables () {
219- if (vtable == null )
238+ if (vtable == null ) {
220239 return null ;
221- if (vtable .getVtables ().isEmpty ())
240+ }
241+ if (vtable .getVtables ().isEmpty ()) {
222242 return null ;
243+ }
223244 Vector <DisassemblerSymbol > symbols = vtable .getVtables ();
224- for (DisassemblerSymbol symbol : symbols )
225- if (hasItemInList (symbols , symbol ))
245+ for (DisassemblerSymbol symbol : symbols ) {
246+ if (hasItemInList (symbols , symbol )) {
226247 symbols .addElement (symbol );
248+ }
249+ }
227250 symbols = moveConOrDesToStart (symbols );
228251 DisassemblerSymbol [] ret = new DisassemblerSymbol [symbols .size ()];
229- for (int i = 0 ; i < symbols .size (); ++i )
252+ for (int i = 0 ; i < symbols .size (); ++i ) {
230253 ret [i ] = symbols .get (i );
254+ }
231255
232256 return ret ;
233257 }
234258
259+ @ androidx .annotation .Nullable
235260 @ Nullable
236261 private DisassemblerSymbol [] getMethods () {
237262 Vector <DisassemblerSymbol > symbols = new Vector <>();
238- for (DisassemblerSymbol symbol : disassemblerClass .getSymbols ())
239- if (isMethodItem (symbol ) && !isVtable (symbol ) && hasItemInList (symbols , symbol ))
263+ for (DisassemblerSymbol symbol : disassemblerClass .getSymbols ()) {
264+ if (isMethodItem (symbol ) && !isVtable (symbol ) && hasItemInList (symbols , symbol )) {
240265 symbols .addElement (symbol );
241- if (symbols .isEmpty ())
266+ }
267+ }
268+ if (symbols .isEmpty ()) {
242269 return null ;
270+ }
243271 symbols = moveConOrDesToStart (symbols );
244272 DisassemblerSymbol [] ret = new DisassemblerSymbol [symbols .size ()];
245- for (int i = 0 ; i < symbols .size (); ++i )
273+ for (int i = 0 ; i < symbols .size (); ++i ) {
246274 ret [i ] = symbols .get (i );
275+ }
247276 return ret ;
248277 }
249278
250279 private boolean isVtable (DisassemblerSymbol sym ) {
251- if (vtable == null )
280+ if (vtable == null ) {
252281 return false ;
253- for (DisassemblerSymbol symbol : vtable .getVtables ())
254- if (symbol .getDemangledName ().equals (sym .getDemangledName ()))
282+ }
283+ for (DisassemblerSymbol symbol : vtable .getVtables ()) {
284+ if (symbol .getDemangledName ().equals (sym .getDemangledName ())) {
255285 return true ;
286+ }
287+ }
256288 return false ;
257289 }
258290
259291 @ NotNull
260292 private Vector <DisassemblerSymbol > moveConOrDesToStart (@ NotNull Vector <DisassemblerSymbol > syms ) {
261293 Vector <DisassemblerSymbol > ret = new Vector <>();
262- for (DisassemblerSymbol sym : syms )
263- if (isCon (sym ))
294+ for (DisassemblerSymbol sym : syms ) {
295+ if (isCon (sym )) {
264296 ret .addElement (sym );
265- for (DisassemblerSymbol sym : syms )
266- if (isDes (sym ))
297+ }
298+ }
299+ for (DisassemblerSymbol sym : syms ) {
300+ if (isDes (sym )) {
267301 ret .addElement (sym );
268- for (DisassemblerSymbol sym : syms )
269- if (!isDes (sym ) && !isCon (sym ))
302+ }
303+ }
304+ for (DisassemblerSymbol sym : syms ) {
305+ if (!isDes (sym ) && !isCon (sym )) {
270306 ret .addElement (sym );
307+ }
308+ }
271309 return ret ;
272310 }
273311
274312 private boolean isCon (DisassemblerSymbol symbol ) {
275313 try {
276314 String name = symbol .getDemangledName ().substring (disassemblerClass .getName ().length () + 2 );
277- if (name .startsWith (className ))
315+ if (name .startsWith (className )) {
278316 return true ;
279- } catch (Exception ignored ) {
317+ }
318+ } catch (Exception e ) {
319+ e .printStackTrace ();
280320 }
281321 return false ;
282322 }
283323
284324 private boolean isDes (DisassemblerSymbol symbol ) {
285325 try {
286326 String name = symbol .getDemangledName ().substring (disassemblerClass .getName ().length () + 2 );
287- if (name .startsWith ("~" + className ))
327+ if (name .startsWith ("~" + className )) {
288328 return true ;
289- } catch (Exception ignored ) {
329+ }
330+ } catch (Exception e ) {
331+ e .printStackTrace ();
290332 }
291333 return false ;
292334 }
0 commit comments