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 import com.android.tools.metalava.model.TypeAliasItem 29 30 /** 31 * A [BaseItemVisitor] that will delegate to [delegate]. 32 * 33 * Preserves class nesting as required by the [delegate]'s [DelegatedVisitor.requiresClassNesting] 34 * property. 35 */ 36 open class NonFilteringDelegatingVisitor(private val delegate: DelegatedVisitor) : 37 BaseItemVisitor( 38 preserveClassNesting = delegate.requiresClassNesting, 39 // [DelegatedVisitor] does not support visiting parameters. 40 visitParameterItems = false, 41 ) { 42 visitCodebasenull43 override fun visitCodebase(codebase: Codebase) { 44 delegate.visitCodebase(codebase) 45 } 46 afterVisitCodebasenull47 override fun afterVisitCodebase(codebase: Codebase) { 48 delegate.afterVisitCodebase(codebase) 49 } 50 visitPackagenull51 override fun visitPackage(pkg: PackageItem) { 52 delegate.visitPackage(pkg) 53 } 54 afterVisitPackagenull55 override fun afterVisitPackage(pkg: PackageItem) { 56 delegate.afterVisitPackage(pkg) 57 } 58 visitClassnull59 override fun visitClass(cls: ClassItem) { 60 delegate.visitClass(cls) 61 } 62 afterVisitClassnull63 override fun afterVisitClass(cls: ClassItem) { 64 delegate.afterVisitClass(cls) 65 } 66 visitConstructornull67 override fun visitConstructor(constructor: ConstructorItem) { 68 delegate.visitConstructor(constructor) 69 } 70 visitMethodnull71 override fun visitMethod(method: MethodItem) { 72 delegate.visitMethod(method) 73 } 74 visitFieldnull75 override fun visitField(field: FieldItem) { 76 delegate.visitField(field) 77 } 78 visitPropertynull79 override fun visitProperty(property: PropertyItem) { 80 delegate.visitProperty(property) 81 } 82 visitTypeAliasnull83 override fun visitTypeAlias(typeAlias: TypeAliasItem) { 84 delegate.visitTypeAlias(typeAlias) 85 } 86 } 87