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