All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.appmetrica.gradle.aarcheck.api.Models.kt Maven / Gradle / Ivy

The newest version!
package io.appmetrica.gradle.aarcheck.api

enum class AccessModifier {
    PUBLIC, PROTECTED, PRIVATE, PACKAGE;

    override fun toString() = name.toLowerCase()
}

enum class ClassType(private val value: String) {
    CLASS("class"),
    ENUM("enum"),
    INTERFACE("interface"),
    ANNOTATION("@interface");

    override fun toString() = value
}

data class TypeParameter(
    val name: String,
    val extend: Type,
    val interfaces: List
)

data class TypeArgument(
    val wildcard: Char,
    val type: Type?
)

data class Type(
    val packageName: String?,
    val name: String,
    val arguments: List,
    val arrayDim: Int
) {
    val fullName = "${packageName?.let { "$it." } ?: ""}$name"
}

data class Annotation(
    val type: Type
)

data class Class(
    val modifier: AccessModifier,
    val type: ClassType,
    val packageName: String?,
    val name: String,
    val genericParameters: List,
    val superClass: Type?,
    val interfaces: List,

    val isSynthetic: Boolean,
    val isAbstract: Boolean,
    val isStatic: Boolean,
    val isFinal: Boolean,

    val fields: List,
    val methods: List
) {
    val fullName = "${packageName?.let { "$it." } ?: ""}$name"
    val isAnonim = name.substringAfterLast("$").toIntOrNull() != null
}

data class Field(
    val declaringClass: Class,

    val modifier: AccessModifier,
    val type: Type,
    val name: String,
    val annotations: List,

    val isSynthetic: Boolean,
    val isStatic: Boolean,
    val isFinal: Boolean
)

data class MethodParam(
    val type: Type,
    val annotations: List,

    val isVarArgs: Boolean
)

data class Method(
    val declaringClass: Class,

    val modifier: AccessModifier,
    val genericParameters: List,
    val returnType: Type,
    val name: String,
    val params: List,
    val annotations: List,

    val isConstructor: Boolean,
    val isSynthetic: Boolean,
    val isAbstract: Boolean,
    val isStatic: Boolean,
    val isFinal: Boolean,

    val nativeSignature: String
) {
    val paramString = params.joinToString(", ") { it.type.fullName }
    val fullName = "$name($paramString)"
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy