// 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}} }