1f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta/*
2f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * Copyright (C) 2015 The Android Open Source Project
3f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta *
4f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * Licensed under the Apache License, Version 2.0 (the "License");
5f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * you may not use this file except in compliance with the License.
6f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * You may obtain a copy of the License at
7f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta *
8f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta *      http://www.apache.org/licenses/LICENSE-2.0
9f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta *
10f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * Unless required by applicable law or agreed to in writing, software
11f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * distributed under the License is distributed on an "AS IS" BASIS,
12f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * See the License for the specific language governing permissions and
14f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * limitations under the License.
15f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta */
16f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
17f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Guptapackage com.android.tools.layoutlib.create;
18f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
19f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Guptaimport com.android.tools.layoutlib.create.ICreateInfo.InjectMethodRunnable;
20f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
21f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Guptaimport org.objectweb.asm.ClassVisitor;
22f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
23f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta/**
24f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta * Injects methods into some classes.
25f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta */
26f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Guptapublic class InjectMethodsAdapter extends ClassVisitor {
27f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
28f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    private final ICreateInfo.InjectMethodRunnable mRunnable;
29f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
30f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    public InjectMethodsAdapter(ClassVisitor cv, InjectMethodRunnable runnable) {
3123e47f5621271db9b84f53f15a3e3d81d8b8b48dDeepanshu Gupta        super(Main.ASM_VERSION, cv);
32f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta        mRunnable = runnable;
33f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    }
34f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta
35f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    @Override
36f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    public void visitEnd() {
37f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta        mRunnable.generateMethods(this);
38f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta        super.visitEnd();
39f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta    }
40f8ea750455eec81e4e6d877b3e18e29a86d4ec95Deepanshu Gupta}
41