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