Files
codeql/swift/codegen/templates/ql_class.mustache
2022-08-16 16:54:33 +02:00

74 lines
2.0 KiB
Plaintext

// generated by {{generator}}
private import codeql.swift.generated.Synth
private import codeql.swift.generated.Raw
{{#imports}}
import {{.}}
{{/imports}}
class {{name}}Base extends Synth::T{{name}}{{#bases}}, {{.}}{{/bases}} {
{{#root}}
string toString() { none() } // overridden by subclasses
string getAPrimaryQlClass() { none() } // overridden by subclasses
final string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") }
{{name}}Base getResolveStep() { none() } // overridden by subclasses
final {{name}}Base resolve() {
not exists(getResolveStep()) and result = this
or
result = getResolveStep().resolve()
}
{{/root}}
{{#final}}
override string getAPrimaryQlClass() { result = "{{name}}" }
{{/final}}
{{#properties}}
{{#type_is_class}}
{{type}} getImmediate{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
{{^ipa}}
result = Synth::convert{{type}}FromRaw(Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}}))
{{/ipa}}
{{#ipa}}
none()
{{/ipa}}
}
final {{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
result = getImmediate{{singular}}({{#is_repeated}}index{{/is_repeated}}).resolve()
}
{{/type_is_class}}
{{^type_is_class}}
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
{{^ipa}}
{{^is_predicate}}result = {{/is_predicate}}Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}})
{{/ipa}}
{{#ipa}}
none()
{{/ipa}}
}
{{/type_is_class}}
{{#is_optional}}
final predicate has{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
exists({{getter}}({{#is_repeated}}index{{/is_repeated}}))
}
{{/is_optional}}
{{#is_repeated}}
final {{type}} {{indefinite_getter}}() {
result = {{getter}}(_)
}
{{^is_optional}}
final int getNumberOf{{plural}}() {
result = count({{indefinite_getter}}())
}
{{/is_optional}}
{{/is_repeated}}
{{/properties}}
}