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