1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.tools.metalava.model.snapshot 18 19 import com.android.tools.metalava.model.BaseItemVisitor 20 import com.android.tools.metalava.model.ClassItem 21 import com.android.tools.metalava.model.Codebase 22 import com.android.tools.metalava.model.ConstructorItem 23 import com.android.tools.metalava.model.DelegatedVisitor 24 import com.android.tools.metalava.model.FieldItem 25 import com.android.tools.metalava.model.MethodItem 26 import com.android.tools.metalava.model.PackageItem 27 import com.android.tools.metalava.model.PropertyItem 28 29 /** 30 * A [BaseItemVisitor] that will delegate to [delegate]. 31 * 32 * Preserves class nesting as required by the [delegate]'s [DelegatedVisitor.requiresClassNesting] 33 * property. 34 */ 35 open class NonFilteringDelegatingVisitor(private val delegate: DelegatedVisitor) : 36 BaseItemVisitor( 37 preserveClassNesting = delegate.requiresClassNesting, 38 // [DelegatedVisitor] does not support visiting parameters. 39 visitParameterItems = false, 40 ) { 41 visitCodebasenull42 override fun visitCodebase(codebase: Codebase) { 43 delegate.visitCodebase(codebase) 44 } 45 afterVisitCodebasenull46 override fun afterVisitCodebase(codebase: Codebase) { 47 delegate.afterVisitCodebase(codebase) 48 } 49 visitPackagenull50 override fun visitPackage(pkg: PackageItem) { 51 delegate.visitPackage(pkg) 52 } 53 afterVisitPackagenull54 override fun afterVisitPackage(pkg: PackageItem) { 55 delegate.afterVisitPackage(pkg) 56 } 57 visitClassnull58 override fun visitClass(cls: ClassItem) { 59 delegate.visitClass(cls) 60 } 61 afterVisitClassnull62 override fun afterVisitClass(cls: ClassItem) { 63 delegate.afterVisitClass(cls) 64 } 65 visitnull66 override fun visit(constructor: ConstructorItem) { 67 delegate.visitConstructor(constructor) 68 } 69 visitMethodnull70 override fun visitMethod(method: MethodItem) { 71 delegate.visitMethod(method) 72 } 73 visitFieldnull74 override fun visitField(field: FieldItem) { 75 delegate.visitField(field) 76 } 77 visitPropertynull78 override fun visitProperty(property: PropertyItem) { 79 delegate.visitProperty(property) 80 } 81 } 82