NameFactoryResetter.java revision b72c5c2e5482cf10117b2b25f642f7616b2326c3
1d0825bca7fe65beaee391d30da42e937db621564Steve Block/* 2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * ProGuard -- shrinking, optimization, obfuscation, and preverification 3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * of Java bytecode. 4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 5231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 7231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * This program is free software; you can redistribute it and/or modify it 8231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * under the terms of the GNU General Public License as published by the Free 9231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Software Foundation; either version 2 of the License, or (at your option) 10231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * any later version. 11231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 12231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * This program is distributed in the hope that it will be useful, but WITHOUT 13231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * more details. 16231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 17231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * You should have received a copy of the GNU General Public License along 18231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * with this program; if not, write to the Free Software Foundation, Inc., 19231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block */ 21231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockpackage proguard.obfuscate; 22231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockimport proguard.classfile.*; 24231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockimport proguard.classfile.visitor.ClassVisitor; 25231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 26231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/** 27231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * This ClassVisitor resets a given name factory whenever it visits a class 28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * file. 296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * @author Eric Lafortune 31d0825bca7fe65beaee391d30da42e937db621564Steve Block */ 32d0825bca7fe65beaee391d30da42e937db621564Steve Blockpublic class NameFactoryResetter implements ClassVisitor 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 34d0825bca7fe65beaee391d30da42e937db621564Steve Block private final NameFactory nameFactory; 35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block /** 38d0825bca7fe65beaee391d30da42e937db621564Steve Block * Creates a new NameFactoryResetter. 39a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch * @param nameFactory the name factory to be reset. 40a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch */ 41a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch public NameFactoryResetter(NameFactory nameFactory) 42d0825bca7fe65beaee391d30da42e937db621564Steve Block { 43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch this.nameFactory = nameFactory; 44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch } 456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen // Implementations for ClassVisitor. 486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen public void visitProgramClass(ProgramClass programClass) 506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen { 516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen nameFactory.reset(); 526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch public void visitLibraryClass(LibraryClass libraryClass) 566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen { 576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen nameFactory.reset(); 586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 60d0825bca7fe65beaee391d30da42e937db621564Steve Block