commit 3f669b422ae9e622f7284de261200ef1c6434738 Author: Adam Jeniski Date: Tue Feb 3 16:49:10 2026 -0500 Initial commit: SCIP indexer for Clojure Features: - Generate SCIP index from clojure-lsp dump - Namespace definitions and usages - Var definitions and usages - Namespace alias definitions and usage references - External symbol documentation for hover Co-Authored-By: Claude Opus 4.5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f5cef7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.cpcache/ +classes/ +*.jar +.lsp/ +.clj-kondo/ diff --git a/build.clj b/build.clj new file mode 100644 index 0000000..c0567b9 --- /dev/null +++ b/build.clj @@ -0,0 +1,14 @@ +(ns build + (:require [clojure.tools.build.api :as b])) + +(def class-dir "classes") +(def java-src "java-src") + +(defn compile-java [_] + (b/javac {:src-dirs [java-src] + :class-dir class-dir + :basis (b/create-basis {:project "deps.edn"}) + :javac-opts ["--release" "11"]})) + +(defn clean [_] + (b/delete {:path class-dir})) diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..6e8ef0e --- /dev/null +++ b/deps.edn @@ -0,0 +1,16 @@ +{:paths ["src" "classes"] + :deps {org.clojure/clojure {:mvn/version "1.12.0"} + com.google.protobuf/protobuf-java {:mvn/version "3.25.3"} + org.clojure/tools.cli {:mvn/version "1.1.230"}} + + :aliases + {:build {:extra-deps {io.github.clojure/tools.build {:mvn/version "0.10.5"}} + :ns-default build} + + :run {:main-opts ["-m" "scip-clojure.core"]} + + :uberjar {:extra-deps {com.github.seancorfield/depstar {:mvn/version "2.1.303"}} + :exec-fn hf.depstar/uberjar + :exec-args {:jar "scip-clojure.jar" + :aot true + :main-class scip_clojure.core}}}} diff --git a/java-src/scip/Scip.java b/java-src/scip/Scip.java new file mode 100644 index 0000000..f932995 --- /dev/null +++ b/java-src/scip/Scip.java @@ -0,0 +1,22174 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: proto/scip.proto + +package scip; + +public final class Scip { + private Scip() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + /** + * Protobuf enum {@code scip.ProtocolVersion} + */ + public enum ProtocolVersion + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedProtocolVersion = 0; + */ + UnspecifiedProtocolVersion(0), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedProtocolVersion = 0; + */ + public static final int UnspecifiedProtocolVersion_VALUE = 0; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ProtocolVersion valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ProtocolVersion forNumber(int value) { + switch (value) { + case 0: return UnspecifiedProtocolVersion; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + ProtocolVersion> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ProtocolVersion findValueByNumber(int number) { + return ProtocolVersion.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(0); + } + + private static final ProtocolVersion[] VALUES = values(); + + public static ProtocolVersion valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ProtocolVersion(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.ProtocolVersion) + } + + /** + * Protobuf enum {@code scip.TextEncoding} + */ + public enum TextEncoding + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedTextEncoding = 0; + */ + UnspecifiedTextEncoding(0), + /** + * UTF8 = 1; + */ + UTF8(1), + /** + * UTF16 = 2; + */ + UTF16(2), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedTextEncoding = 0; + */ + public static final int UnspecifiedTextEncoding_VALUE = 0; + /** + * UTF8 = 1; + */ + public static final int UTF8_VALUE = 1; + /** + * UTF16 = 2; + */ + public static final int UTF16_VALUE = 2; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static TextEncoding valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static TextEncoding forNumber(int value) { + switch (value) { + case 0: return UnspecifiedTextEncoding; + case 1: return UTF8; + case 2: return UTF16; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + TextEncoding> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public TextEncoding findValueByNumber(int number) { + return TextEncoding.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(1); + } + + private static final TextEncoding[] VALUES = values(); + + public static TextEncoding valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private TextEncoding(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.TextEncoding) + } + + /** + *
+   * Encoding used to interpret the 'character' value in source ranges.
+   * 
+ * + * Protobuf enum {@code scip.PositionEncoding} + */ + public enum PositionEncoding + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+     * Default value. This value should not be used by new SCIP indexers
+     * so that a consumer can process the SCIP index without ambiguity.
+     * 
+ * + * UnspecifiedPositionEncoding = 0; + */ + UnspecifiedPositionEncoding(0), + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-8 code units (i.e. bytes).
+     * Example: For the string "🚀 Woo" in UTF-8, the bytes are
+     * [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W'
+     * would be 5.
+     * 
+ * + * UTF8CodeUnitOffsetFromLineStart = 1; + */ + UTF8CodeUnitOffsetFromLineStart(1), + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-16 code units (each is 2 bytes).
+     * Example: For the string "🚀 Woo", the UTF-16 code units are
+     * ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W'
+     * would be 3.
+     * 
+ * + * UTF16CodeUnitOffsetFromLineStart = 2; + */ + UTF16CodeUnitOffsetFromLineStart(2), + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-32 code units (each is 4 bytes).
+     * Example: For the string "🚀 Woo", the UTF-32 code units are
+     * ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2.
+     * 
+ * + * UTF32CodeUnitOffsetFromLineStart = 3; + */ + UTF32CodeUnitOffsetFromLineStart(3), + UNRECOGNIZED(-1), + ; + + /** + *
+     * Default value. This value should not be used by new SCIP indexers
+     * so that a consumer can process the SCIP index without ambiguity.
+     * 
+ * + * UnspecifiedPositionEncoding = 0; + */ + public static final int UnspecifiedPositionEncoding_VALUE = 0; + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-8 code units (i.e. bytes).
+     * Example: For the string "🚀 Woo" in UTF-8, the bytes are
+     * [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W'
+     * would be 5.
+     * 
+ * + * UTF8CodeUnitOffsetFromLineStart = 1; + */ + public static final int UTF8CodeUnitOffsetFromLineStart_VALUE = 1; + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-16 code units (each is 2 bytes).
+     * Example: For the string "🚀 Woo", the UTF-16 code units are
+     * ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W'
+     * would be 3.
+     * 
+ * + * UTF16CodeUnitOffsetFromLineStart = 2; + */ + public static final int UTF16CodeUnitOffsetFromLineStart_VALUE = 2; + /** + *
+     * The 'character' value is interpreted as an offset in terms
+     * of UTF-32 code units (each is 4 bytes).
+     * Example: For the string "🚀 Woo", the UTF-32 code units are
+     * ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2.
+     * 
+ * + * UTF32CodeUnitOffsetFromLineStart = 3; + */ + public static final int UTF32CodeUnitOffsetFromLineStart_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PositionEncoding valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static PositionEncoding forNumber(int value) { + switch (value) { + case 0: return UnspecifiedPositionEncoding; + case 1: return UTF8CodeUnitOffsetFromLineStart; + case 2: return UTF16CodeUnitOffsetFromLineStart; + case 3: return UTF32CodeUnitOffsetFromLineStart; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + PositionEncoding> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PositionEncoding findValueByNumber(int number) { + return PositionEncoding.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(2); + } + + private static final PositionEncoding[] VALUES = values(); + + public static PositionEncoding valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private PositionEncoding(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.PositionEncoding) + } + + /** + *
+   * SymbolRole declares what "role" a symbol has in an occurrence. A role is
+   * encoded as a bitset where each bit represents a different role. For example,
+   * to determine if the `Import` role is set, test whether the second bit of the
+   * enum value is defined. In pseudocode, this can be implemented with the
+   * logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`.
+   * 
+ * + * Protobuf enum {@code scip.SymbolRole} + */ + public enum SymbolRole + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+     * This case is not meant to be used; it only exists to avoid an error
+     * from the Protobuf code generator.
+     * 
+ * + * UnspecifiedSymbolRole = 0; + */ + UnspecifiedSymbolRole(0), + /** + *
+     * Is the symbol defined here? If not, then this is a symbol reference.
+     * 
+ * + * Definition = 1; + */ + Definition(1), + /** + *
+     * Is the symbol imported here?
+     * 
+ * + * Import = 2; + */ + Import(2), + /** + *
+     * Is the symbol written here?
+     * 
+ * + * WriteAccess = 4; + */ + WriteAccess(4), + /** + *
+     * Is the symbol read here?
+     * 
+ * + * ReadAccess = 8; + */ + ReadAccess(8), + /** + *
+     * Is the symbol in generated code?
+     * 
+ * + * Generated = 16; + */ + Generated(16), + /** + *
+     * Is the symbol in test code?
+     * 
+ * + * Test = 32; + */ + Test(32), + /** + *
+     * Is this a signature for a symbol that is defined elsewhere?
+     * Applies to forward declarations for languages like C, C++
+     * and Objective-C, as well as `val` declarations in interface
+     * files in languages like SML and OCaml.
+     * 
+ * + * ForwardDefinition = 64; + */ + ForwardDefinition(64), + UNRECOGNIZED(-1), + ; + + /** + *
+     * This case is not meant to be used; it only exists to avoid an error
+     * from the Protobuf code generator.
+     * 
+ * + * UnspecifiedSymbolRole = 0; + */ + public static final int UnspecifiedSymbolRole_VALUE = 0; + /** + *
+     * Is the symbol defined here? If not, then this is a symbol reference.
+     * 
+ * + * Definition = 1; + */ + public static final int Definition_VALUE = 1; + /** + *
+     * Is the symbol imported here?
+     * 
+ * + * Import = 2; + */ + public static final int Import_VALUE = 2; + /** + *
+     * Is the symbol written here?
+     * 
+ * + * WriteAccess = 4; + */ + public static final int WriteAccess_VALUE = 4; + /** + *
+     * Is the symbol read here?
+     * 
+ * + * ReadAccess = 8; + */ + public static final int ReadAccess_VALUE = 8; + /** + *
+     * Is the symbol in generated code?
+     * 
+ * + * Generated = 16; + */ + public static final int Generated_VALUE = 16; + /** + *
+     * Is the symbol in test code?
+     * 
+ * + * Test = 32; + */ + public static final int Test_VALUE = 32; + /** + *
+     * Is this a signature for a symbol that is defined elsewhere?
+     * Applies to forward declarations for languages like C, C++
+     * and Objective-C, as well as `val` declarations in interface
+     * files in languages like SML and OCaml.
+     * 
+ * + * ForwardDefinition = 64; + */ + public static final int ForwardDefinition_VALUE = 64; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SymbolRole valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static SymbolRole forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSymbolRole; + case 1: return Definition; + case 2: return Import; + case 4: return WriteAccess; + case 8: return ReadAccess; + case 16: return Generated; + case 32: return Test; + case 64: return ForwardDefinition; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + SymbolRole> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public SymbolRole findValueByNumber(int number) { + return SymbolRole.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(3); + } + + private static final SymbolRole[] VALUES = values(); + + public static SymbolRole valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private SymbolRole(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SymbolRole) + } + + /** + * Protobuf enum {@code scip.SyntaxKind} + */ + public enum SyntaxKind + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSyntaxKind = 0; + */ + UnspecifiedSyntaxKind(0, 0), + /** + *
+     * Comment, including comment markers and text
+     * 
+ * + * Comment = 1; + */ + Comment(1, 1), + /** + *
+     * `;` `.` `,`
+     * 
+ * + * PunctuationDelimiter = 2; + */ + PunctuationDelimiter(2, 2), + /** + *
+     * (), {}, [] when used syntactically
+     * 
+ * + * PunctuationBracket = 3; + */ + PunctuationBracket(3, 3), + /** + *
+     * `if`, `else`, `return`, `class`, etc.
+     * 
+ * + * Keyword = 4; + */ + Keyword(4, 4), + /** + *
+     * `+`, `*`, etc.
+     * 
+ * + * IdentifierOperator = 5; + */ + IdentifierOperator(6, 5), + /** + *
+     * non-specific catch-all for any identifier not better described elsewhere
+     * 
+ * + * Identifier = 6; + */ + Identifier(7, 6), + /** + *
+     * Identifiers builtin to the language: `min`, `print` in Python.
+     * 
+ * + * IdentifierBuiltin = 7; + */ + IdentifierBuiltin(8, 7), + /** + *
+     * Identifiers representing `null`-like values: `None` in Python, `nil` in Go.
+     * 
+ * + * IdentifierNull = 8; + */ + IdentifierNull(9, 8), + /** + *
+     * `xyz` in `const xyz = "hello"`
+     * 
+ * + * IdentifierConstant = 9; + */ + IdentifierConstant(10, 9), + /** + *
+     * `var X = "hello"` in Go
+     * 
+ * + * IdentifierMutableGlobal = 10; + */ + IdentifierMutableGlobal(11, 10), + /** + *
+     * Parameter definition and references
+     * 
+ * + * IdentifierParameter = 11; + */ + IdentifierParameter(12, 11), + /** + *
+     * Identifiers for variable definitions and references within a local scope
+     * 
+ * + * IdentifierLocal = 12; + */ + IdentifierLocal(13, 12), + /** + *
+     * Identifiers that shadow other identifiers in an outer scope
+     * 
+ * + * IdentifierShadowed = 13; + */ + IdentifierShadowed(14, 13), + /** + *
+     * Identifier representing a unit of code abstraction and/or namespacing.
+     * NOTE: This corresponds to a package in Go and JVM languages,
+     * and a module in languages like Python and JavaScript.
+     * 
+ * + * IdentifierNamespace = 14; + */ + IdentifierNamespace(15, 14), + /** + *
+     * Function references, including calls
+     * 
+ * + * IdentifierFunction = 15; + */ + IdentifierFunction(17, 15), + /** + *
+     * Function definition only
+     * 
+ * + * IdentifierFunctionDefinition = 16; + */ + IdentifierFunctionDefinition(18, 16), + /** + *
+     * Macro references, including invocations
+     * 
+ * + * IdentifierMacro = 17; + */ + IdentifierMacro(19, 17), + /** + *
+     * Macro definition only
+     * 
+ * + * IdentifierMacroDefinition = 18; + */ + IdentifierMacroDefinition(20, 18), + /** + *
+     * non-builtin types
+     * 
+ * + * IdentifierType = 19; + */ + IdentifierType(21, 19), + /** + *
+     * builtin types only, such as `str` for Python or `int` in Go
+     * 
+ * + * IdentifierBuiltinType = 20; + */ + IdentifierBuiltinType(22, 20), + /** + *
+     * Python decorators, c-like __attribute__
+     * 
+ * + * IdentifierAttribute = 21; + */ + IdentifierAttribute(23, 21), + /** + *
+     * `\b`
+     * 
+ * + * RegexEscape = 22; + */ + RegexEscape(24, 22), + /** + *
+     * `*`, `+`
+     * 
+ * + * RegexRepeated = 23; + */ + RegexRepeated(25, 23), + /** + *
+     * `.`
+     * 
+ * + * RegexWildcard = 24; + */ + RegexWildcard(26, 24), + /** + *
+     * `(`, `)`, `[`, `]`
+     * 
+ * + * RegexDelimiter = 25; + */ + RegexDelimiter(27, 25), + /** + *
+     * `|`, `-`
+     * 
+ * + * RegexJoin = 26; + */ + RegexJoin(28, 26), + /** + *
+     * Literal strings: "Hello, world!"
+     * 
+ * + * StringLiteral = 27; + */ + StringLiteral(29, 27), + /** + *
+     * non-regex escapes: "\t", "\n"
+     * 
+ * + * StringLiteralEscape = 28; + */ + StringLiteralEscape(30, 28), + /** + *
+     * datetimes within strings, special words within a string, `{}` in format strings
+     * 
+ * + * StringLiteralSpecial = 29; + */ + StringLiteralSpecial(31, 29), + /** + *
+     * "key" in { "key": "value" }, useful for example in JSON
+     * 
+ * + * StringLiteralKey = 30; + */ + StringLiteralKey(32, 30), + /** + *
+     * 'c' or similar, in languages that differentiate strings and characters
+     * 
+ * + * CharacterLiteral = 31; + */ + CharacterLiteral(33, 31), + /** + *
+     * Literal numbers, both floats and integers
+     * 
+ * + * NumericLiteral = 32; + */ + NumericLiteral(34, 32), + /** + *
+     * `true`, `false`
+     * 
+ * + * BooleanLiteral = 33; + */ + BooleanLiteral(35, 33), + /** + *
+     * Used for XML-like tags
+     * 
+ * + * Tag = 34; + */ + Tag(36, 34), + /** + *
+     * Attribute name in XML-like tags
+     * 
+ * + * TagAttribute = 35; + */ + TagAttribute(37, 35), + /** + *
+     * Delimiters for XML-like tags
+     * 
+ * + * TagDelimiter = 36; + */ + TagDelimiter(38, 36), + UNRECOGNIZED(-1, -1), + ; + + /** + * IdentifierKeyword = 4 [deprecated = true]; + */ + public static final SyntaxKind IdentifierKeyword = Keyword; + /** + * IdentifierModule = 14 [deprecated = true]; + */ + public static final SyntaxKind IdentifierModule = IdentifierNamespace; + /** + * UnspecifiedSyntaxKind = 0; + */ + public static final int UnspecifiedSyntaxKind_VALUE = 0; + /** + *
+     * Comment, including comment markers and text
+     * 
+ * + * Comment = 1; + */ + public static final int Comment_VALUE = 1; + /** + *
+     * `;` `.` `,`
+     * 
+ * + * PunctuationDelimiter = 2; + */ + public static final int PunctuationDelimiter_VALUE = 2; + /** + *
+     * (), {}, [] when used syntactically
+     * 
+ * + * PunctuationBracket = 3; + */ + public static final int PunctuationBracket_VALUE = 3; + /** + *
+     * `if`, `else`, `return`, `class`, etc.
+     * 
+ * + * Keyword = 4; + */ + public static final int Keyword_VALUE = 4; + /** + * IdentifierKeyword = 4 [deprecated = true]; + */ + @java.lang.Deprecated public static final int IdentifierKeyword_VALUE = 4; + /** + *
+     * `+`, `*`, etc.
+     * 
+ * + * IdentifierOperator = 5; + */ + public static final int IdentifierOperator_VALUE = 5; + /** + *
+     * non-specific catch-all for any identifier not better described elsewhere
+     * 
+ * + * Identifier = 6; + */ + public static final int Identifier_VALUE = 6; + /** + *
+     * Identifiers builtin to the language: `min`, `print` in Python.
+     * 
+ * + * IdentifierBuiltin = 7; + */ + public static final int IdentifierBuiltin_VALUE = 7; + /** + *
+     * Identifiers representing `null`-like values: `None` in Python, `nil` in Go.
+     * 
+ * + * IdentifierNull = 8; + */ + public static final int IdentifierNull_VALUE = 8; + /** + *
+     * `xyz` in `const xyz = "hello"`
+     * 
+ * + * IdentifierConstant = 9; + */ + public static final int IdentifierConstant_VALUE = 9; + /** + *
+     * `var X = "hello"` in Go
+     * 
+ * + * IdentifierMutableGlobal = 10; + */ + public static final int IdentifierMutableGlobal_VALUE = 10; + /** + *
+     * Parameter definition and references
+     * 
+ * + * IdentifierParameter = 11; + */ + public static final int IdentifierParameter_VALUE = 11; + /** + *
+     * Identifiers for variable definitions and references within a local scope
+     * 
+ * + * IdentifierLocal = 12; + */ + public static final int IdentifierLocal_VALUE = 12; + /** + *
+     * Identifiers that shadow other identifiers in an outer scope
+     * 
+ * + * IdentifierShadowed = 13; + */ + public static final int IdentifierShadowed_VALUE = 13; + /** + *
+     * Identifier representing a unit of code abstraction and/or namespacing.
+     * NOTE: This corresponds to a package in Go and JVM languages,
+     * and a module in languages like Python and JavaScript.
+     * 
+ * + * IdentifierNamespace = 14; + */ + public static final int IdentifierNamespace_VALUE = 14; + /** + * IdentifierModule = 14 [deprecated = true]; + */ + @java.lang.Deprecated public static final int IdentifierModule_VALUE = 14; + /** + *
+     * Function references, including calls
+     * 
+ * + * IdentifierFunction = 15; + */ + public static final int IdentifierFunction_VALUE = 15; + /** + *
+     * Function definition only
+     * 
+ * + * IdentifierFunctionDefinition = 16; + */ + public static final int IdentifierFunctionDefinition_VALUE = 16; + /** + *
+     * Macro references, including invocations
+     * 
+ * + * IdentifierMacro = 17; + */ + public static final int IdentifierMacro_VALUE = 17; + /** + *
+     * Macro definition only
+     * 
+ * + * IdentifierMacroDefinition = 18; + */ + public static final int IdentifierMacroDefinition_VALUE = 18; + /** + *
+     * non-builtin types
+     * 
+ * + * IdentifierType = 19; + */ + public static final int IdentifierType_VALUE = 19; + /** + *
+     * builtin types only, such as `str` for Python or `int` in Go
+     * 
+ * + * IdentifierBuiltinType = 20; + */ + public static final int IdentifierBuiltinType_VALUE = 20; + /** + *
+     * Python decorators, c-like __attribute__
+     * 
+ * + * IdentifierAttribute = 21; + */ + public static final int IdentifierAttribute_VALUE = 21; + /** + *
+     * `\b`
+     * 
+ * + * RegexEscape = 22; + */ + public static final int RegexEscape_VALUE = 22; + /** + *
+     * `*`, `+`
+     * 
+ * + * RegexRepeated = 23; + */ + public static final int RegexRepeated_VALUE = 23; + /** + *
+     * `.`
+     * 
+ * + * RegexWildcard = 24; + */ + public static final int RegexWildcard_VALUE = 24; + /** + *
+     * `(`, `)`, `[`, `]`
+     * 
+ * + * RegexDelimiter = 25; + */ + public static final int RegexDelimiter_VALUE = 25; + /** + *
+     * `|`, `-`
+     * 
+ * + * RegexJoin = 26; + */ + public static final int RegexJoin_VALUE = 26; + /** + *
+     * Literal strings: "Hello, world!"
+     * 
+ * + * StringLiteral = 27; + */ + public static final int StringLiteral_VALUE = 27; + /** + *
+     * non-regex escapes: "\t", "\n"
+     * 
+ * + * StringLiteralEscape = 28; + */ + public static final int StringLiteralEscape_VALUE = 28; + /** + *
+     * datetimes within strings, special words within a string, `{}` in format strings
+     * 
+ * + * StringLiteralSpecial = 29; + */ + public static final int StringLiteralSpecial_VALUE = 29; + /** + *
+     * "key" in { "key": "value" }, useful for example in JSON
+     * 
+ * + * StringLiteralKey = 30; + */ + public static final int StringLiteralKey_VALUE = 30; + /** + *
+     * 'c' or similar, in languages that differentiate strings and characters
+     * 
+ * + * CharacterLiteral = 31; + */ + public static final int CharacterLiteral_VALUE = 31; + /** + *
+     * Literal numbers, both floats and integers
+     * 
+ * + * NumericLiteral = 32; + */ + public static final int NumericLiteral_VALUE = 32; + /** + *
+     * `true`, `false`
+     * 
+ * + * BooleanLiteral = 33; + */ + public static final int BooleanLiteral_VALUE = 33; + /** + *
+     * Used for XML-like tags
+     * 
+ * + * Tag = 34; + */ + public static final int Tag_VALUE = 34; + /** + *
+     * Attribute name in XML-like tags
+     * 
+ * + * TagAttribute = 35; + */ + public static final int TagAttribute_VALUE = 35; + /** + *
+     * Delimiters for XML-like tags
+     * 
+ * + * TagDelimiter = 36; + */ + public static final int TagDelimiter_VALUE = 36; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SyntaxKind valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static SyntaxKind forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSyntaxKind; + case 1: return Comment; + case 2: return PunctuationDelimiter; + case 3: return PunctuationBracket; + case 4: return Keyword; + case 5: return IdentifierOperator; + case 6: return Identifier; + case 7: return IdentifierBuiltin; + case 8: return IdentifierNull; + case 9: return IdentifierConstant; + case 10: return IdentifierMutableGlobal; + case 11: return IdentifierParameter; + case 12: return IdentifierLocal; + case 13: return IdentifierShadowed; + case 14: return IdentifierNamespace; + case 15: return IdentifierFunction; + case 16: return IdentifierFunctionDefinition; + case 17: return IdentifierMacro; + case 18: return IdentifierMacroDefinition; + case 19: return IdentifierType; + case 20: return IdentifierBuiltinType; + case 21: return IdentifierAttribute; + case 22: return RegexEscape; + case 23: return RegexRepeated; + case 24: return RegexWildcard; + case 25: return RegexDelimiter; + case 26: return RegexJoin; + case 27: return StringLiteral; + case 28: return StringLiteralEscape; + case 29: return StringLiteralSpecial; + case 30: return StringLiteralKey; + case 31: return CharacterLiteral; + case 32: return NumericLiteral; + case 33: return BooleanLiteral; + case 34: return Tag; + case 35: return TagAttribute; + case 36: return TagDelimiter; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + SyntaxKind> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public SyntaxKind findValueByNumber(int number) { + return SyntaxKind.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(4); + } + + private static final SyntaxKind[] VALUES = getStaticValuesArray(); + private static SyntaxKind[] getStaticValuesArray() { + return new SyntaxKind[] { + UnspecifiedSyntaxKind, Comment, PunctuationDelimiter, PunctuationBracket, Keyword, IdentifierKeyword, IdentifierOperator, Identifier, IdentifierBuiltin, IdentifierNull, IdentifierConstant, IdentifierMutableGlobal, IdentifierParameter, IdentifierLocal, IdentifierShadowed, IdentifierNamespace, IdentifierModule, IdentifierFunction, IdentifierFunctionDefinition, IdentifierMacro, IdentifierMacroDefinition, IdentifierType, IdentifierBuiltinType, IdentifierAttribute, RegexEscape, RegexRepeated, RegexWildcard, RegexDelimiter, RegexJoin, StringLiteral, StringLiteralEscape, StringLiteralSpecial, StringLiteralKey, CharacterLiteral, NumericLiteral, BooleanLiteral, Tag, TagAttribute, TagDelimiter, + }; + } + public static SyntaxKind valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private SyntaxKind(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SyntaxKind) + } + + /** + * Protobuf enum {@code scip.Severity} + */ + public enum Severity + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSeverity = 0; + */ + UnspecifiedSeverity(0), + /** + * Error = 1; + */ + Error(1), + /** + * Warning = 2; + */ + Warning(2), + /** + * Information = 3; + */ + Information(3), + /** + * Hint = 4; + */ + Hint(4), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedSeverity = 0; + */ + public static final int UnspecifiedSeverity_VALUE = 0; + /** + * Error = 1; + */ + public static final int Error_VALUE = 1; + /** + * Warning = 2; + */ + public static final int Warning_VALUE = 2; + /** + * Information = 3; + */ + public static final int Information_VALUE = 3; + /** + * Hint = 4; + */ + public static final int Hint_VALUE = 4; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Severity valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Severity forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSeverity; + case 1: return Error; + case 2: return Warning; + case 3: return Information; + case 4: return Hint; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Severity> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Severity findValueByNumber(int number) { + return Severity.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(5); + } + + private static final Severity[] VALUES = values(); + + public static Severity valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Severity(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Severity) + } + + /** + * Protobuf enum {@code scip.DiagnosticTag} + */ + public enum DiagnosticTag + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedDiagnosticTag = 0; + */ + UnspecifiedDiagnosticTag(0), + /** + * Unnecessary = 1; + */ + Unnecessary(1), + /** + * Deprecated = 2; + */ + Deprecated(2), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedDiagnosticTag = 0; + */ + public static final int UnspecifiedDiagnosticTag_VALUE = 0; + /** + * Unnecessary = 1; + */ + public static final int Unnecessary_VALUE = 1; + /** + * Deprecated = 2; + */ + public static final int Deprecated_VALUE = 2; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DiagnosticTag valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static DiagnosticTag forNumber(int value) { + switch (value) { + case 0: return UnspecifiedDiagnosticTag; + case 1: return Unnecessary; + case 2: return Deprecated; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + DiagnosticTag> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public DiagnosticTag findValueByNumber(int number) { + return DiagnosticTag.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(6); + } + + private static final DiagnosticTag[] VALUES = values(); + + public static DiagnosticTag valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private DiagnosticTag(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.DiagnosticTag) + } + + /** + *
+   * Language standardises names of common programming languages that can be used
+   * for the `Document.language` field. The primary purpose of this enum is to
+   * prevent a situation where we have a single programming language ends up with
+   * multiple string representations. For example, the C++ language uses the name
+   * "CPP" in this enum and other names such as "cpp" are incompatible.
+   * Feel free to send a pull-request to add missing programming languages.
+   * 
+ * + * Protobuf enum {@code scip.Language} + */ + public enum Language + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedLanguage = 0; + */ + UnspecifiedLanguage(0), + /** + * ABAP = 60; + */ + ABAP(60), + /** + * Apex = 96; + */ + Apex(96), + /** + * APL = 49; + */ + APL(49), + /** + * Ada = 39; + */ + Ada(39), + /** + * Agda = 45; + */ + Agda(45), + /** + * AsciiDoc = 86; + */ + AsciiDoc(86), + /** + * Assembly = 58; + */ + Assembly(58), + /** + * Awk = 66; + */ + Awk(66), + /** + * Bat = 68; + */ + Bat(68), + /** + * BibTeX = 81; + */ + BibTeX(81), + /** + * C = 34; + */ + C(34), + /** + * COBOL = 59; + */ + COBOL(59), + /** + *
+     * C++ (the name "CPP" was chosen for consistency with LSP)
+     * 
+ * + * CPP = 35; + */ + CPP(35), + /** + * CSS = 26; + */ + CSS(26), + /** + * CSharp = 1; + */ + CSharp(1), + /** + * Clojure = 8; + */ + Clojure(8), + /** + * Coffeescript = 21; + */ + Coffeescript(21), + /** + * CommonLisp = 9; + */ + CommonLisp(9), + /** + * Coq = 47; + */ + Coq(47), + /** + * CUDA = 97; + */ + CUDA(97), + /** + * Dart = 3; + */ + Dart(3), + /** + * Delphi = 57; + */ + Delphi(57), + /** + * Diff = 88; + */ + Diff(88), + /** + * Dockerfile = 80; + */ + Dockerfile(80), + /** + * Dyalog = 50; + */ + Dyalog(50), + /** + * Elixir = 17; + */ + Elixir(17), + /** + * Erlang = 18; + */ + Erlang(18), + /** + * FSharp = 42; + */ + FSharp(42), + /** + * Fish = 65; + */ + Fish(65), + /** + * Flow = 24; + */ + Flow(24), + /** + * Fortran = 56; + */ + Fortran(56), + /** + * Git_Commit = 91; + */ + Git_Commit(91), + /** + * Git_Config = 89; + */ + Git_Config(89), + /** + * Git_Rebase = 92; + */ + Git_Rebase(92), + /** + * Go = 33; + */ + Go(33), + /** + * GraphQL = 98; + */ + GraphQL(98), + /** + * Groovy = 7; + */ + Groovy(7), + /** + * HTML = 30; + */ + HTML(30), + /** + * Hack = 20; + */ + Hack(20), + /** + * Handlebars = 90; + */ + Handlebars(90), + /** + * Haskell = 44; + */ + Haskell(44), + /** + * Idris = 46; + */ + Idris(46), + /** + * Ini = 72; + */ + Ini(72), + /** + * J = 51; + */ + J(51), + /** + * JSON = 75; + */ + JSON(75), + /** + * Java = 6; + */ + Java(6), + /** + * JavaScript = 22; + */ + JavaScript(22), + /** + * JavaScriptReact = 93; + */ + JavaScriptReact(93), + /** + * Jsonnet = 76; + */ + Jsonnet(76), + /** + * Julia = 55; + */ + Julia(55), + /** + * Justfile = 109; + */ + Justfile(109), + /** + * Kotlin = 4; + */ + Kotlin(4), + /** + * LaTeX = 83; + */ + LaTeX(83), + /** + * Lean = 48; + */ + Lean(48), + /** + * Less = 27; + */ + Less(27), + /** + * Lua = 12; + */ + Lua(12), + /** + * Luau = 108; + */ + Luau(108), + /** + * Makefile = 79; + */ + Makefile(79), + /** + * Markdown = 84; + */ + Markdown(84), + /** + * Matlab = 52; + */ + Matlab(52), + /** + *
+     * https://nickel-lang.org/
+     * 
+ * + * Nickel = 110; + */ + Nickel(110), + /** + * Nix = 77; + */ + Nix(77), + /** + * OCaml = 41; + */ + OCaml(41), + /** + * Objective_C = 36; + */ + Objective_C(36), + /** + * Objective_CPP = 37; + */ + Objective_CPP(37), + /** + * Pascal = 99; + */ + Pascal(99), + /** + * PHP = 19; + */ + PHP(19), + /** + * PLSQL = 70; + */ + PLSQL(70), + /** + * Perl = 13; + */ + Perl(13), + /** + * PowerShell = 67; + */ + PowerShell(67), + /** + * Prolog = 71; + */ + Prolog(71), + /** + * Protobuf = 100; + */ + Protobuf(100), + /** + * Python = 15; + */ + Python(15), + /** + * R = 54; + */ + R(54), + /** + * Racket = 11; + */ + Racket(11), + /** + * Raku = 14; + */ + Raku(14), + /** + * Razor = 62; + */ + Razor(62), + /** + *
+     * Internal language for testing SCIP
+     * 
+ * + * Repro = 102; + */ + Repro(102), + /** + * ReST = 85; + */ + ReST(85), + /** + * Ruby = 16; + */ + Ruby(16), + /** + * Rust = 40; + */ + Rust(40), + /** + * SAS = 61; + */ + SAS(61), + /** + * SCSS = 29; + */ + SCSS(29), + /** + * SML = 43; + */ + SML(43), + /** + * SQL = 69; + */ + SQL(69), + /** + * Sass = 28; + */ + Sass(28), + /** + * Scala = 5; + */ + Scala(5), + /** + * Scheme = 10; + */ + Scheme(10), + /** + *
+     * Bash
+     * 
+ * + * ShellScript = 64; + */ + ShellScript(64), + /** + * Skylark = 78; + */ + Skylark(78), + /** + * Slang = 107; + */ + Slang(107), + /** + * Solidity = 95; + */ + Solidity(95), + /** + * Svelte = 106; + */ + Svelte(106), + /** + * Swift = 2; + */ + Swift(2), + /** + * Tcl = 101; + */ + Tcl(101), + /** + * TOML = 73; + */ + TOML(73), + /** + * TeX = 82; + */ + TeX(82), + /** + * Thrift = 103; + */ + Thrift(103), + /** + * TypeScript = 23; + */ + TypeScript(23), + /** + * TypeScriptReact = 94; + */ + TypeScriptReact(94), + /** + * Verilog = 104; + */ + Verilog(104), + /** + * VHDL = 105; + */ + VHDL(105), + /** + * VisualBasic = 63; + */ + VisualBasic(63), + /** + * Vue = 25; + */ + Vue(25), + /** + * Wolfram = 53; + */ + Wolfram(53), + /** + * XML = 31; + */ + XML(31), + /** + * XSL = 32; + */ + XSL(32), + /** + * YAML = 74; + */ + YAML(74), + /** + *
+     * NextLanguage = 111;
+     * Steps add a new language:
+     * 1. Copy-paste the "NextLanguage = N" line above
+     * 2. Increment "NextLanguage = N" to "NextLanguage = N+1"
+     * 3. Replace "NextLanguage = N" with the name of the new language.
+     * 4. Move the new language to the correct line above using alphabetical order
+     * 5. (optional) Add a brief comment behind the language if the name is not self-explanatory
+     * 
+ * + * Zig = 38; + */ + Zig(38), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedLanguage = 0; + */ + public static final int UnspecifiedLanguage_VALUE = 0; + /** + * ABAP = 60; + */ + public static final int ABAP_VALUE = 60; + /** + * Apex = 96; + */ + public static final int Apex_VALUE = 96; + /** + * APL = 49; + */ + public static final int APL_VALUE = 49; + /** + * Ada = 39; + */ + public static final int Ada_VALUE = 39; + /** + * Agda = 45; + */ + public static final int Agda_VALUE = 45; + /** + * AsciiDoc = 86; + */ + public static final int AsciiDoc_VALUE = 86; + /** + * Assembly = 58; + */ + public static final int Assembly_VALUE = 58; + /** + * Awk = 66; + */ + public static final int Awk_VALUE = 66; + /** + * Bat = 68; + */ + public static final int Bat_VALUE = 68; + /** + * BibTeX = 81; + */ + public static final int BibTeX_VALUE = 81; + /** + * C = 34; + */ + public static final int C_VALUE = 34; + /** + * COBOL = 59; + */ + public static final int COBOL_VALUE = 59; + /** + *
+     * C++ (the name "CPP" was chosen for consistency with LSP)
+     * 
+ * + * CPP = 35; + */ + public static final int CPP_VALUE = 35; + /** + * CSS = 26; + */ + public static final int CSS_VALUE = 26; + /** + * CSharp = 1; + */ + public static final int CSharp_VALUE = 1; + /** + * Clojure = 8; + */ + public static final int Clojure_VALUE = 8; + /** + * Coffeescript = 21; + */ + public static final int Coffeescript_VALUE = 21; + /** + * CommonLisp = 9; + */ + public static final int CommonLisp_VALUE = 9; + /** + * Coq = 47; + */ + public static final int Coq_VALUE = 47; + /** + * CUDA = 97; + */ + public static final int CUDA_VALUE = 97; + /** + * Dart = 3; + */ + public static final int Dart_VALUE = 3; + /** + * Delphi = 57; + */ + public static final int Delphi_VALUE = 57; + /** + * Diff = 88; + */ + public static final int Diff_VALUE = 88; + /** + * Dockerfile = 80; + */ + public static final int Dockerfile_VALUE = 80; + /** + * Dyalog = 50; + */ + public static final int Dyalog_VALUE = 50; + /** + * Elixir = 17; + */ + public static final int Elixir_VALUE = 17; + /** + * Erlang = 18; + */ + public static final int Erlang_VALUE = 18; + /** + * FSharp = 42; + */ + public static final int FSharp_VALUE = 42; + /** + * Fish = 65; + */ + public static final int Fish_VALUE = 65; + /** + * Flow = 24; + */ + public static final int Flow_VALUE = 24; + /** + * Fortran = 56; + */ + public static final int Fortran_VALUE = 56; + /** + * Git_Commit = 91; + */ + public static final int Git_Commit_VALUE = 91; + /** + * Git_Config = 89; + */ + public static final int Git_Config_VALUE = 89; + /** + * Git_Rebase = 92; + */ + public static final int Git_Rebase_VALUE = 92; + /** + * Go = 33; + */ + public static final int Go_VALUE = 33; + /** + * GraphQL = 98; + */ + public static final int GraphQL_VALUE = 98; + /** + * Groovy = 7; + */ + public static final int Groovy_VALUE = 7; + /** + * HTML = 30; + */ + public static final int HTML_VALUE = 30; + /** + * Hack = 20; + */ + public static final int Hack_VALUE = 20; + /** + * Handlebars = 90; + */ + public static final int Handlebars_VALUE = 90; + /** + * Haskell = 44; + */ + public static final int Haskell_VALUE = 44; + /** + * Idris = 46; + */ + public static final int Idris_VALUE = 46; + /** + * Ini = 72; + */ + public static final int Ini_VALUE = 72; + /** + * J = 51; + */ + public static final int J_VALUE = 51; + /** + * JSON = 75; + */ + public static final int JSON_VALUE = 75; + /** + * Java = 6; + */ + public static final int Java_VALUE = 6; + /** + * JavaScript = 22; + */ + public static final int JavaScript_VALUE = 22; + /** + * JavaScriptReact = 93; + */ + public static final int JavaScriptReact_VALUE = 93; + /** + * Jsonnet = 76; + */ + public static final int Jsonnet_VALUE = 76; + /** + * Julia = 55; + */ + public static final int Julia_VALUE = 55; + /** + * Justfile = 109; + */ + public static final int Justfile_VALUE = 109; + /** + * Kotlin = 4; + */ + public static final int Kotlin_VALUE = 4; + /** + * LaTeX = 83; + */ + public static final int LaTeX_VALUE = 83; + /** + * Lean = 48; + */ + public static final int Lean_VALUE = 48; + /** + * Less = 27; + */ + public static final int Less_VALUE = 27; + /** + * Lua = 12; + */ + public static final int Lua_VALUE = 12; + /** + * Luau = 108; + */ + public static final int Luau_VALUE = 108; + /** + * Makefile = 79; + */ + public static final int Makefile_VALUE = 79; + /** + * Markdown = 84; + */ + public static final int Markdown_VALUE = 84; + /** + * Matlab = 52; + */ + public static final int Matlab_VALUE = 52; + /** + *
+     * https://nickel-lang.org/
+     * 
+ * + * Nickel = 110; + */ + public static final int Nickel_VALUE = 110; + /** + * Nix = 77; + */ + public static final int Nix_VALUE = 77; + /** + * OCaml = 41; + */ + public static final int OCaml_VALUE = 41; + /** + * Objective_C = 36; + */ + public static final int Objective_C_VALUE = 36; + /** + * Objective_CPP = 37; + */ + public static final int Objective_CPP_VALUE = 37; + /** + * Pascal = 99; + */ + public static final int Pascal_VALUE = 99; + /** + * PHP = 19; + */ + public static final int PHP_VALUE = 19; + /** + * PLSQL = 70; + */ + public static final int PLSQL_VALUE = 70; + /** + * Perl = 13; + */ + public static final int Perl_VALUE = 13; + /** + * PowerShell = 67; + */ + public static final int PowerShell_VALUE = 67; + /** + * Prolog = 71; + */ + public static final int Prolog_VALUE = 71; + /** + * Protobuf = 100; + */ + public static final int Protobuf_VALUE = 100; + /** + * Python = 15; + */ + public static final int Python_VALUE = 15; + /** + * R = 54; + */ + public static final int R_VALUE = 54; + /** + * Racket = 11; + */ + public static final int Racket_VALUE = 11; + /** + * Raku = 14; + */ + public static final int Raku_VALUE = 14; + /** + * Razor = 62; + */ + public static final int Razor_VALUE = 62; + /** + *
+     * Internal language for testing SCIP
+     * 
+ * + * Repro = 102; + */ + public static final int Repro_VALUE = 102; + /** + * ReST = 85; + */ + public static final int ReST_VALUE = 85; + /** + * Ruby = 16; + */ + public static final int Ruby_VALUE = 16; + /** + * Rust = 40; + */ + public static final int Rust_VALUE = 40; + /** + * SAS = 61; + */ + public static final int SAS_VALUE = 61; + /** + * SCSS = 29; + */ + public static final int SCSS_VALUE = 29; + /** + * SML = 43; + */ + public static final int SML_VALUE = 43; + /** + * SQL = 69; + */ + public static final int SQL_VALUE = 69; + /** + * Sass = 28; + */ + public static final int Sass_VALUE = 28; + /** + * Scala = 5; + */ + public static final int Scala_VALUE = 5; + /** + * Scheme = 10; + */ + public static final int Scheme_VALUE = 10; + /** + *
+     * Bash
+     * 
+ * + * ShellScript = 64; + */ + public static final int ShellScript_VALUE = 64; + /** + * Skylark = 78; + */ + public static final int Skylark_VALUE = 78; + /** + * Slang = 107; + */ + public static final int Slang_VALUE = 107; + /** + * Solidity = 95; + */ + public static final int Solidity_VALUE = 95; + /** + * Svelte = 106; + */ + public static final int Svelte_VALUE = 106; + /** + * Swift = 2; + */ + public static final int Swift_VALUE = 2; + /** + * Tcl = 101; + */ + public static final int Tcl_VALUE = 101; + /** + * TOML = 73; + */ + public static final int TOML_VALUE = 73; + /** + * TeX = 82; + */ + public static final int TeX_VALUE = 82; + /** + * Thrift = 103; + */ + public static final int Thrift_VALUE = 103; + /** + * TypeScript = 23; + */ + public static final int TypeScript_VALUE = 23; + /** + * TypeScriptReact = 94; + */ + public static final int TypeScriptReact_VALUE = 94; + /** + * Verilog = 104; + */ + public static final int Verilog_VALUE = 104; + /** + * VHDL = 105; + */ + public static final int VHDL_VALUE = 105; + /** + * VisualBasic = 63; + */ + public static final int VisualBasic_VALUE = 63; + /** + * Vue = 25; + */ + public static final int Vue_VALUE = 25; + /** + * Wolfram = 53; + */ + public static final int Wolfram_VALUE = 53; + /** + * XML = 31; + */ + public static final int XML_VALUE = 31; + /** + * XSL = 32; + */ + public static final int XSL_VALUE = 32; + /** + * YAML = 74; + */ + public static final int YAML_VALUE = 74; + /** + *
+     * NextLanguage = 111;
+     * Steps add a new language:
+     * 1. Copy-paste the "NextLanguage = N" line above
+     * 2. Increment "NextLanguage = N" to "NextLanguage = N+1"
+     * 3. Replace "NextLanguage = N" with the name of the new language.
+     * 4. Move the new language to the correct line above using alphabetical order
+     * 5. (optional) Add a brief comment behind the language if the name is not self-explanatory
+     * 
+ * + * Zig = 38; + */ + public static final int Zig_VALUE = 38; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Language valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Language forNumber(int value) { + switch (value) { + case 0: return UnspecifiedLanguage; + case 60: return ABAP; + case 96: return Apex; + case 49: return APL; + case 39: return Ada; + case 45: return Agda; + case 86: return AsciiDoc; + case 58: return Assembly; + case 66: return Awk; + case 68: return Bat; + case 81: return BibTeX; + case 34: return C; + case 59: return COBOL; + case 35: return CPP; + case 26: return CSS; + case 1: return CSharp; + case 8: return Clojure; + case 21: return Coffeescript; + case 9: return CommonLisp; + case 47: return Coq; + case 97: return CUDA; + case 3: return Dart; + case 57: return Delphi; + case 88: return Diff; + case 80: return Dockerfile; + case 50: return Dyalog; + case 17: return Elixir; + case 18: return Erlang; + case 42: return FSharp; + case 65: return Fish; + case 24: return Flow; + case 56: return Fortran; + case 91: return Git_Commit; + case 89: return Git_Config; + case 92: return Git_Rebase; + case 33: return Go; + case 98: return GraphQL; + case 7: return Groovy; + case 30: return HTML; + case 20: return Hack; + case 90: return Handlebars; + case 44: return Haskell; + case 46: return Idris; + case 72: return Ini; + case 51: return J; + case 75: return JSON; + case 6: return Java; + case 22: return JavaScript; + case 93: return JavaScriptReact; + case 76: return Jsonnet; + case 55: return Julia; + case 109: return Justfile; + case 4: return Kotlin; + case 83: return LaTeX; + case 48: return Lean; + case 27: return Less; + case 12: return Lua; + case 108: return Luau; + case 79: return Makefile; + case 84: return Markdown; + case 52: return Matlab; + case 110: return Nickel; + case 77: return Nix; + case 41: return OCaml; + case 36: return Objective_C; + case 37: return Objective_CPP; + case 99: return Pascal; + case 19: return PHP; + case 70: return PLSQL; + case 13: return Perl; + case 67: return PowerShell; + case 71: return Prolog; + case 100: return Protobuf; + case 15: return Python; + case 54: return R; + case 11: return Racket; + case 14: return Raku; + case 62: return Razor; + case 102: return Repro; + case 85: return ReST; + case 16: return Ruby; + case 40: return Rust; + case 61: return SAS; + case 29: return SCSS; + case 43: return SML; + case 69: return SQL; + case 28: return Sass; + case 5: return Scala; + case 10: return Scheme; + case 64: return ShellScript; + case 78: return Skylark; + case 107: return Slang; + case 95: return Solidity; + case 106: return Svelte; + case 2: return Swift; + case 101: return Tcl; + case 73: return TOML; + case 82: return TeX; + case 103: return Thrift; + case 23: return TypeScript; + case 94: return TypeScriptReact; + case 104: return Verilog; + case 105: return VHDL; + case 63: return VisualBasic; + case 25: return Vue; + case 53: return Wolfram; + case 31: return XML; + case 32: return XSL; + case 74: return YAML; + case 38: return Zig; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Language> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Language findValueByNumber(int number) { + return Language.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.getDescriptor().getEnumTypes().get(7); + } + + private static final Language[] VALUES = values(); + + public static Language valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Language(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Language) + } + + public interface IndexOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Index) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + * @return Whether the metadata field is set. + */ + boolean hasMetadata(); + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + * @return The metadata. + */ + scip.Scip.Metadata getMetadata(); + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + */ + scip.Scip.MetadataOrBuilder getMetadataOrBuilder(); + + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + java.util.List + getDocumentsList(); + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + scip.Scip.Document getDocuments(int index); + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + int getDocumentsCount(); + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + java.util.List + getDocumentsOrBuilderList(); + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + scip.Scip.DocumentOrBuilder getDocumentsOrBuilder( + int index); + + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + java.util.List + getExternalSymbolsList(); + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + scip.Scip.SymbolInformation getExternalSymbols(int index); + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + int getExternalSymbolsCount(); + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + java.util.List + getExternalSymbolsOrBuilderList(); + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + scip.Scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index); + } + /** + *
+   * Index represents a complete SCIP index for a workspace this is rooted at a
+   * single directory. An Index message payload can have a large memory footprint
+   * and it's therefore recommended to emit and consume an Index payload one field
+   * value at a time. To permit streaming consumption of an Index payload, the
+   * `metadata` field must appear at the start of the stream and must only appear
+   * once in the stream. Other field values may appear in any order.
+   * 
+ * + * Protobuf type {@code scip.Index} + */ + public static final class Index extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Index) + IndexOrBuilder { + private static final long serialVersionUID = 0L; + // Use Index.newBuilder() to construct. + private Index(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Index() { + documents_ = java.util.Collections.emptyList(); + externalSymbols_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Index(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Index( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + scip.Scip.Metadata.Builder subBuilder = null; + if (metadata_ != null) { + subBuilder = metadata_.toBuilder(); + } + metadata_ = input.readMessage(scip.Scip.Metadata.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(metadata_); + metadata_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + documents_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + documents_.add( + input.readMessage(scip.Scip.Document.parser(), extensionRegistry)); + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + externalSymbols_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + externalSymbols_.add( + input.readMessage(scip.Scip.SymbolInformation.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + documents_ = java.util.Collections.unmodifiableList(documents_); + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + externalSymbols_ = java.util.Collections.unmodifiableList(externalSymbols_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Index_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Index.class, scip.Scip.Index.Builder.class); + } + + public static final int METADATA_FIELD_NUMBER = 1; + private scip.Scip.Metadata metadata_; + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + * @return Whether the metadata field is set. + */ + @java.lang.Override + public boolean hasMetadata() { + return metadata_ != null; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + * @return The metadata. + */ + @java.lang.Override + public scip.Scip.Metadata getMetadata() { + return metadata_ == null ? scip.Scip.Metadata.getDefaultInstance() : metadata_; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1; + */ + @java.lang.Override + public scip.Scip.MetadataOrBuilder getMetadataOrBuilder() { + return getMetadata(); + } + + public static final int DOCUMENTS_FIELD_NUMBER = 2; + private java.util.List documents_; + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + @java.lang.Override + public java.util.List getDocumentsList() { + return documents_; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + @java.lang.Override + public java.util.List + getDocumentsOrBuilderList() { + return documents_; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + @java.lang.Override + public int getDocumentsCount() { + return documents_.size(); + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + @java.lang.Override + public scip.Scip.Document getDocuments(int index) { + return documents_.get(index); + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2; + */ + @java.lang.Override + public scip.Scip.DocumentOrBuilder getDocumentsOrBuilder( + int index) { + return documents_.get(index); + } + + public static final int EXTERNAL_SYMBOLS_FIELD_NUMBER = 3; + private java.util.List externalSymbols_; + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + @java.lang.Override + public java.util.List getExternalSymbolsList() { + return externalSymbols_; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + @java.lang.Override + public java.util.List + getExternalSymbolsOrBuilderList() { + return externalSymbols_; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + @java.lang.Override + public int getExternalSymbolsCount() { + return externalSymbols_.size(); + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + @java.lang.Override + public scip.Scip.SymbolInformation getExternalSymbols(int index) { + return externalSymbols_.get(index); + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + @java.lang.Override + public scip.Scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index) { + return externalSymbols_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (metadata_ != null) { + output.writeMessage(1, getMetadata()); + } + for (int i = 0; i < documents_.size(); i++) { + output.writeMessage(2, documents_.get(i)); + } + for (int i = 0; i < externalSymbols_.size(); i++) { + output.writeMessage(3, externalSymbols_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (metadata_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getMetadata()); + } + for (int i = 0; i < documents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, documents_.get(i)); + } + for (int i = 0; i < externalSymbols_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, externalSymbols_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Index)) { + return super.equals(obj); + } + scip.Scip.Index other = (scip.Scip.Index) obj; + + if (hasMetadata() != other.hasMetadata()) return false; + if (hasMetadata()) { + if (!getMetadata() + .equals(other.getMetadata())) return false; + } + if (!getDocumentsList() + .equals(other.getDocumentsList())) return false; + if (!getExternalSymbolsList() + .equals(other.getExternalSymbolsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasMetadata()) { + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + getMetadata().hashCode(); + } + if (getDocumentsCount() > 0) { + hash = (37 * hash) + DOCUMENTS_FIELD_NUMBER; + hash = (53 * hash) + getDocumentsList().hashCode(); + } + if (getExternalSymbolsCount() > 0) { + hash = (37 * hash) + EXTERNAL_SYMBOLS_FIELD_NUMBER; + hash = (53 * hash) + getExternalSymbolsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Index parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Index parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Index parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Index parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Index parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Index parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Index parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Index parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Index parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Index parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Index parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Index parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Index prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Index represents a complete SCIP index for a workspace this is rooted at a
+     * single directory. An Index message payload can have a large memory footprint
+     * and it's therefore recommended to emit and consume an Index payload one field
+     * value at a time. To permit streaming consumption of an Index payload, the
+     * `metadata` field must appear at the start of the stream and must only appear
+     * once in the stream. Other field values may appear in any order.
+     * 
+ * + * Protobuf type {@code scip.Index} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Index) + scip.Scip.IndexOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Index_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Index.class, scip.Scip.Index.Builder.class); + } + + // Construct using scip.Scip.Index.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getDocumentsFieldBuilder(); + getExternalSymbolsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (metadataBuilder_ == null) { + metadata_ = null; + } else { + metadata_ = null; + metadataBuilder_ = null; + } + if (documentsBuilder_ == null) { + documents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + documentsBuilder_.clear(); + } + if (externalSymbolsBuilder_ == null) { + externalSymbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + externalSymbolsBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + public scip.Scip.Index getDefaultInstanceForType() { + return scip.Scip.Index.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Index build() { + scip.Scip.Index result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Index buildPartial() { + scip.Scip.Index result = new scip.Scip.Index(this); + int from_bitField0_ = bitField0_; + if (metadataBuilder_ == null) { + result.metadata_ = metadata_; + } else { + result.metadata_ = metadataBuilder_.build(); + } + if (documentsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + documents_ = java.util.Collections.unmodifiableList(documents_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.documents_ = documents_; + } else { + result.documents_ = documentsBuilder_.build(); + } + if (externalSymbolsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + externalSymbols_ = java.util.Collections.unmodifiableList(externalSymbols_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.externalSymbols_ = externalSymbols_; + } else { + result.externalSymbols_ = externalSymbolsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Index) { + return mergeFrom((scip.Scip.Index)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Index other) { + if (other == scip.Scip.Index.getDefaultInstance()) return this; + if (other.hasMetadata()) { + mergeMetadata(other.getMetadata()); + } + if (documentsBuilder_ == null) { + if (!other.documents_.isEmpty()) { + if (documents_.isEmpty()) { + documents_ = other.documents_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDocumentsIsMutable(); + documents_.addAll(other.documents_); + } + onChanged(); + } + } else { + if (!other.documents_.isEmpty()) { + if (documentsBuilder_.isEmpty()) { + documentsBuilder_.dispose(); + documentsBuilder_ = null; + documents_ = other.documents_; + bitField0_ = (bitField0_ & ~0x00000001); + documentsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDocumentsFieldBuilder() : null; + } else { + documentsBuilder_.addAllMessages(other.documents_); + } + } + } + if (externalSymbolsBuilder_ == null) { + if (!other.externalSymbols_.isEmpty()) { + if (externalSymbols_.isEmpty()) { + externalSymbols_ = other.externalSymbols_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureExternalSymbolsIsMutable(); + externalSymbols_.addAll(other.externalSymbols_); + } + onChanged(); + } + } else { + if (!other.externalSymbols_.isEmpty()) { + if (externalSymbolsBuilder_.isEmpty()) { + externalSymbolsBuilder_.dispose(); + externalSymbolsBuilder_ = null; + externalSymbols_ = other.externalSymbols_; + bitField0_ = (bitField0_ & ~0x00000002); + externalSymbolsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getExternalSymbolsFieldBuilder() : null; + } else { + externalSymbolsBuilder_.addAllMessages(other.externalSymbols_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Index parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Index) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private scip.Scip.Metadata metadata_; + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Metadata, scip.Scip.Metadata.Builder, scip.Scip.MetadataOrBuilder> metadataBuilder_; + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + * @return Whether the metadata field is set. + */ + public boolean hasMetadata() { + return metadataBuilder_ != null || metadata_ != null; + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + * @return The metadata. + */ + public scip.Scip.Metadata getMetadata() { + if (metadataBuilder_ == null) { + return metadata_ == null ? scip.Scip.Metadata.getDefaultInstance() : metadata_; + } else { + return metadataBuilder_.getMessage(); + } + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public Builder setMetadata(scip.Scip.Metadata value) { + if (metadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + metadata_ = value; + onChanged(); + } else { + metadataBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public Builder setMetadata( + scip.Scip.Metadata.Builder builderForValue) { + if (metadataBuilder_ == null) { + metadata_ = builderForValue.build(); + onChanged(); + } else { + metadataBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public Builder mergeMetadata(scip.Scip.Metadata value) { + if (metadataBuilder_ == null) { + if (metadata_ != null) { + metadata_ = + scip.Scip.Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial(); + } else { + metadata_ = value; + } + onChanged(); + } else { + metadataBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public Builder clearMetadata() { + if (metadataBuilder_ == null) { + metadata_ = null; + onChanged(); + } else { + metadata_ = null; + metadataBuilder_ = null; + } + + return this; + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public scip.Scip.Metadata.Builder getMetadataBuilder() { + + onChanged(); + return getMetadataFieldBuilder().getBuilder(); + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + public scip.Scip.MetadataOrBuilder getMetadataOrBuilder() { + if (metadataBuilder_ != null) { + return metadataBuilder_.getMessageOrBuilder(); + } else { + return metadata_ == null ? + scip.Scip.Metadata.getDefaultInstance() : metadata_; + } + } + /** + *
+       * Metadata about this index.
+       * 
+ * + * .scip.Metadata metadata = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Metadata, scip.Scip.Metadata.Builder, scip.Scip.MetadataOrBuilder> + getMetadataFieldBuilder() { + if (metadataBuilder_ == null) { + metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Metadata, scip.Scip.Metadata.Builder, scip.Scip.MetadataOrBuilder>( + getMetadata(), + getParentForChildren(), + isClean()); + metadata_ = null; + } + return metadataBuilder_; + } + + private java.util.List documents_ = + java.util.Collections.emptyList(); + private void ensureDocumentsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + documents_ = new java.util.ArrayList(documents_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder> documentsBuilder_; + + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public java.util.List getDocumentsList() { + if (documentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(documents_); + } else { + return documentsBuilder_.getMessageList(); + } + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public int getDocumentsCount() { + if (documentsBuilder_ == null) { + return documents_.size(); + } else { + return documentsBuilder_.getCount(); + } + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public scip.Scip.Document getDocuments(int index) { + if (documentsBuilder_ == null) { + return documents_.get(index); + } else { + return documentsBuilder_.getMessage(index); + } + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder setDocuments( + int index, scip.Scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.set(index, value); + onChanged(); + } else { + documentsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder setDocuments( + int index, scip.Scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.set(index, builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder addDocuments(scip.Scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.add(value); + onChanged(); + } else { + documentsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder addDocuments( + int index, scip.Scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.add(index, value); + onChanged(); + } else { + documentsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder addDocuments( + scip.Scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.add(builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder addDocuments( + int index, scip.Scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.add(index, builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder addAllDocuments( + java.lang.Iterable values) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, documents_); + onChanged(); + } else { + documentsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder clearDocuments() { + if (documentsBuilder_ == null) { + documents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + documentsBuilder_.clear(); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public Builder removeDocuments(int index) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.remove(index); + onChanged(); + } else { + documentsBuilder_.remove(index); + } + return this; + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public scip.Scip.Document.Builder getDocumentsBuilder( + int index) { + return getDocumentsFieldBuilder().getBuilder(index); + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public scip.Scip.DocumentOrBuilder getDocumentsOrBuilder( + int index) { + if (documentsBuilder_ == null) { + return documents_.get(index); } else { + return documentsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public java.util.List + getDocumentsOrBuilderList() { + if (documentsBuilder_ != null) { + return documentsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(documents_); + } + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public scip.Scip.Document.Builder addDocumentsBuilder() { + return getDocumentsFieldBuilder().addBuilder( + scip.Scip.Document.getDefaultInstance()); + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public scip.Scip.Document.Builder addDocumentsBuilder( + int index) { + return getDocumentsFieldBuilder().addBuilder( + index, scip.Scip.Document.getDefaultInstance()); + } + /** + *
+       * Documents that belong to this index.
+       * 
+ * + * repeated .scip.Document documents = 2; + */ + public java.util.List + getDocumentsBuilderList() { + return getDocumentsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder> + getDocumentsFieldBuilder() { + if (documentsBuilder_ == null) { + documentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder>( + documents_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + documents_ = null; + } + return documentsBuilder_; + } + + private java.util.List externalSymbols_ = + java.util.Collections.emptyList(); + private void ensureExternalSymbolsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + externalSymbols_ = new java.util.ArrayList(externalSymbols_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder> externalSymbolsBuilder_; + + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public java.util.List getExternalSymbolsList() { + if (externalSymbolsBuilder_ == null) { + return java.util.Collections.unmodifiableList(externalSymbols_); + } else { + return externalSymbolsBuilder_.getMessageList(); + } + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public int getExternalSymbolsCount() { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.size(); + } else { + return externalSymbolsBuilder_.getCount(); + } + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public scip.Scip.SymbolInformation getExternalSymbols(int index) { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.get(index); + } else { + return externalSymbolsBuilder_.getMessage(index); + } + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder setExternalSymbols( + int index, scip.Scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.set(index, value); + onChanged(); + } else { + externalSymbolsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder setExternalSymbols( + int index, scip.Scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.set(index, builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder addExternalSymbols(scip.Scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(value); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder addExternalSymbols( + int index, scip.Scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(index, value); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder addExternalSymbols( + scip.Scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder addExternalSymbols( + int index, scip.Scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(index, builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder addAllExternalSymbols( + java.lang.Iterable values) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, externalSymbols_); + onChanged(); + } else { + externalSymbolsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder clearExternalSymbols() { + if (externalSymbolsBuilder_ == null) { + externalSymbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + externalSymbolsBuilder_.clear(); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public Builder removeExternalSymbols(int index) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.remove(index); + onChanged(); + } else { + externalSymbolsBuilder_.remove(index); + } + return this; + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder getExternalSymbolsBuilder( + int index) { + return getExternalSymbolsFieldBuilder().getBuilder(index); + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public scip.Scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index) { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.get(index); } else { + return externalSymbolsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public java.util.List + getExternalSymbolsOrBuilderList() { + if (externalSymbolsBuilder_ != null) { + return externalSymbolsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(externalSymbols_); + } + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder addExternalSymbolsBuilder() { + return getExternalSymbolsFieldBuilder().addBuilder( + scip.Scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder addExternalSymbolsBuilder( + int index) { + return getExternalSymbolsFieldBuilder().addBuilder( + index, scip.Scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+       * (optional) Symbols that are referenced from this index but are defined in
+       * an external package (a separate `Index` message). Leave this field empty
+       * if you assume the external package will get indexed separately. If the
+       * external package won't get indexed for some reason then you can use this
+       * field to provide hover documentation for those external symbols.
+       * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3; + */ + public java.util.List + getExternalSymbolsBuilderList() { + return getExternalSymbolsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder> + getExternalSymbolsFieldBuilder() { + if (externalSymbolsBuilder_ == null) { + externalSymbolsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder>( + externalSymbols_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + externalSymbols_ = null; + } + return externalSymbolsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Index) + } + + // @@protoc_insertion_point(class_scope:scip.Index) + private static final scip.Scip.Index DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Index(); + } + + public static scip.Scip.Index getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Index parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Index(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Index getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface MetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Metadata) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The enum numeric value on the wire for version. + */ + int getVersionValue(); + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The version. + */ + scip.Scip.ProtocolVersion getVersion(); + + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return Whether the toolInfo field is set. + */ + boolean hasToolInfo(); + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return The toolInfo. + */ + scip.Scip.ToolInfo getToolInfo(); + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + scip.Scip.ToolInfoOrBuilder getToolInfoOrBuilder(); + + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3; + * @return The projectRoot. + */ + java.lang.String getProjectRoot(); + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3; + * @return The bytes for projectRoot. + */ + com.google.protobuf.ByteString + getProjectRootBytes(); + + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + int getTextDocumentEncodingValue(); + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The textDocumentEncoding. + */ + scip.Scip.TextEncoding getTextDocumentEncoding(); + } + /** + * Protobuf type {@code scip.Metadata} + */ + public static final class Metadata extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Metadata) + MetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use Metadata.newBuilder() to construct. + private Metadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Metadata() { + version_ = 0; + projectRoot_ = ""; + textDocumentEncoding_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Metadata(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Metadata( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int rawValue = input.readEnum(); + + version_ = rawValue; + break; + } + case 18: { + scip.Scip.ToolInfo.Builder subBuilder = null; + if (toolInfo_ != null) { + subBuilder = toolInfo_.toBuilder(); + } + toolInfo_ = input.readMessage(scip.Scip.ToolInfo.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(toolInfo_); + toolInfo_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + projectRoot_ = s; + break; + } + case 32: { + int rawValue = input.readEnum(); + + textDocumentEncoding_ = rawValue; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Metadata.class, scip.Scip.Metadata.Builder.class); + } + + public static final int VERSION_FIELD_NUMBER = 1; + private int version_; + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The enum numeric value on the wire for version. + */ + @java.lang.Override public int getVersionValue() { + return version_; + } + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The version. + */ + @java.lang.Override public scip.Scip.ProtocolVersion getVersion() { + @SuppressWarnings("deprecation") + scip.Scip.ProtocolVersion result = scip.Scip.ProtocolVersion.valueOf(version_); + return result == null ? scip.Scip.ProtocolVersion.UNRECOGNIZED : result; + } + + public static final int TOOL_INFO_FIELD_NUMBER = 2; + private scip.Scip.ToolInfo toolInfo_; + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return Whether the toolInfo field is set. + */ + @java.lang.Override + public boolean hasToolInfo() { + return toolInfo_ != null; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return The toolInfo. + */ + @java.lang.Override + public scip.Scip.ToolInfo getToolInfo() { + return toolInfo_ == null ? scip.Scip.ToolInfo.getDefaultInstance() : toolInfo_; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + @java.lang.Override + public scip.Scip.ToolInfoOrBuilder getToolInfoOrBuilder() { + return getToolInfo(); + } + + public static final int PROJECT_ROOT_FIELD_NUMBER = 3; + private volatile java.lang.Object projectRoot_; + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3; + * @return The projectRoot. + */ + @java.lang.Override + public java.lang.String getProjectRoot() { + java.lang.Object ref = projectRoot_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + projectRoot_ = s; + return s; + } + } + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3; + * @return The bytes for projectRoot. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getProjectRootBytes() { + java.lang.Object ref = projectRoot_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectRoot_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TEXT_DOCUMENT_ENCODING_FIELD_NUMBER = 4; + private int textDocumentEncoding_; + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + @java.lang.Override public int getTextDocumentEncodingValue() { + return textDocumentEncoding_; + } + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The textDocumentEncoding. + */ + @java.lang.Override public scip.Scip.TextEncoding getTextDocumentEncoding() { + @SuppressWarnings("deprecation") + scip.Scip.TextEncoding result = scip.Scip.TextEncoding.valueOf(textDocumentEncoding_); + return result == null ? scip.Scip.TextEncoding.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (version_ != scip.Scip.ProtocolVersion.UnspecifiedProtocolVersion.getNumber()) { + output.writeEnum(1, version_); + } + if (toolInfo_ != null) { + output.writeMessage(2, getToolInfo()); + } + if (!getProjectRootBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, projectRoot_); + } + if (textDocumentEncoding_ != scip.Scip.TextEncoding.UnspecifiedTextEncoding.getNumber()) { + output.writeEnum(4, textDocumentEncoding_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (version_ != scip.Scip.ProtocolVersion.UnspecifiedProtocolVersion.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, version_); + } + if (toolInfo_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getToolInfo()); + } + if (!getProjectRootBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, projectRoot_); + } + if (textDocumentEncoding_ != scip.Scip.TextEncoding.UnspecifiedTextEncoding.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, textDocumentEncoding_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Metadata)) { + return super.equals(obj); + } + scip.Scip.Metadata other = (scip.Scip.Metadata) obj; + + if (version_ != other.version_) return false; + if (hasToolInfo() != other.hasToolInfo()) return false; + if (hasToolInfo()) { + if (!getToolInfo() + .equals(other.getToolInfo())) return false; + } + if (!getProjectRoot() + .equals(other.getProjectRoot())) return false; + if (textDocumentEncoding_ != other.textDocumentEncoding_) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + version_; + if (hasToolInfo()) { + hash = (37 * hash) + TOOL_INFO_FIELD_NUMBER; + hash = (53 * hash) + getToolInfo().hashCode(); + } + hash = (37 * hash) + PROJECT_ROOT_FIELD_NUMBER; + hash = (53 * hash) + getProjectRoot().hashCode(); + hash = (37 * hash) + TEXT_DOCUMENT_ENCODING_FIELD_NUMBER; + hash = (53 * hash) + textDocumentEncoding_; + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Metadata parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Metadata parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Metadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Metadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Metadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Metadata parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Metadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Metadata parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Metadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Metadata parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Metadata parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Metadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Metadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Metadata} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Metadata) + scip.Scip.MetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Metadata.class, scip.Scip.Metadata.Builder.class); + } + + // Construct using scip.Scip.Metadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + version_ = 0; + + if (toolInfoBuilder_ == null) { + toolInfo_ = null; + } else { + toolInfo_ = null; + toolInfoBuilder_ = null; + } + projectRoot_ = ""; + + textDocumentEncoding_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + public scip.Scip.Metadata getDefaultInstanceForType() { + return scip.Scip.Metadata.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Metadata build() { + scip.Scip.Metadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Metadata buildPartial() { + scip.Scip.Metadata result = new scip.Scip.Metadata(this); + result.version_ = version_; + if (toolInfoBuilder_ == null) { + result.toolInfo_ = toolInfo_; + } else { + result.toolInfo_ = toolInfoBuilder_.build(); + } + result.projectRoot_ = projectRoot_; + result.textDocumentEncoding_ = textDocumentEncoding_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Metadata) { + return mergeFrom((scip.Scip.Metadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Metadata other) { + if (other == scip.Scip.Metadata.getDefaultInstance()) return this; + if (other.version_ != 0) { + setVersionValue(other.getVersionValue()); + } + if (other.hasToolInfo()) { + mergeToolInfo(other.getToolInfo()); + } + if (!other.getProjectRoot().isEmpty()) { + projectRoot_ = other.projectRoot_; + onChanged(); + } + if (other.textDocumentEncoding_ != 0) { + setTextDocumentEncodingValue(other.getTextDocumentEncodingValue()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Metadata parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Metadata) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int version_ = 0; + /** + *
+       * Which version of this protocol was used to generate this index?
+       * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The enum numeric value on the wire for version. + */ + @java.lang.Override public int getVersionValue() { + return version_; + } + /** + *
+       * Which version of this protocol was used to generate this index?
+       * 
+ * + * .scip.ProtocolVersion version = 1; + * @param value The enum numeric value on the wire for version to set. + * @return This builder for chaining. + */ + public Builder setVersionValue(int value) { + + version_ = value; + onChanged(); + return this; + } + /** + *
+       * Which version of this protocol was used to generate this index?
+       * 
+ * + * .scip.ProtocolVersion version = 1; + * @return The version. + */ + @java.lang.Override + public scip.Scip.ProtocolVersion getVersion() { + @SuppressWarnings("deprecation") + scip.Scip.ProtocolVersion result = scip.Scip.ProtocolVersion.valueOf(version_); + return result == null ? scip.Scip.ProtocolVersion.UNRECOGNIZED : result; + } + /** + *
+       * Which version of this protocol was used to generate this index?
+       * 
+ * + * .scip.ProtocolVersion version = 1; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion(scip.Scip.ProtocolVersion value) { + if (value == null) { + throw new NullPointerException(); + } + + version_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Which version of this protocol was used to generate this index?
+       * 
+ * + * .scip.ProtocolVersion version = 1; + * @return This builder for chaining. + */ + public Builder clearVersion() { + + version_ = 0; + onChanged(); + return this; + } + + private scip.Scip.ToolInfo toolInfo_; + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.ToolInfo, scip.Scip.ToolInfo.Builder, scip.Scip.ToolInfoOrBuilder> toolInfoBuilder_; + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return Whether the toolInfo field is set. + */ + public boolean hasToolInfo() { + return toolInfoBuilder_ != null || toolInfo_ != null; + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + * @return The toolInfo. + */ + public scip.Scip.ToolInfo getToolInfo() { + if (toolInfoBuilder_ == null) { + return toolInfo_ == null ? scip.Scip.ToolInfo.getDefaultInstance() : toolInfo_; + } else { + return toolInfoBuilder_.getMessage(); + } + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public Builder setToolInfo(scip.Scip.ToolInfo value) { + if (toolInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + toolInfo_ = value; + onChanged(); + } else { + toolInfoBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public Builder setToolInfo( + scip.Scip.ToolInfo.Builder builderForValue) { + if (toolInfoBuilder_ == null) { + toolInfo_ = builderForValue.build(); + onChanged(); + } else { + toolInfoBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public Builder mergeToolInfo(scip.Scip.ToolInfo value) { + if (toolInfoBuilder_ == null) { + if (toolInfo_ != null) { + toolInfo_ = + scip.Scip.ToolInfo.newBuilder(toolInfo_).mergeFrom(value).buildPartial(); + } else { + toolInfo_ = value; + } + onChanged(); + } else { + toolInfoBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public Builder clearToolInfo() { + if (toolInfoBuilder_ == null) { + toolInfo_ = null; + onChanged(); + } else { + toolInfo_ = null; + toolInfoBuilder_ = null; + } + + return this; + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public scip.Scip.ToolInfo.Builder getToolInfoBuilder() { + + onChanged(); + return getToolInfoFieldBuilder().getBuilder(); + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + public scip.Scip.ToolInfoOrBuilder getToolInfoOrBuilder() { + if (toolInfoBuilder_ != null) { + return toolInfoBuilder_.getMessageOrBuilder(); + } else { + return toolInfo_ == null ? + scip.Scip.ToolInfo.getDefaultInstance() : toolInfo_; + } + } + /** + *
+       * Information about the tool that produced this index.
+       * 
+ * + * .scip.ToolInfo tool_info = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.ToolInfo, scip.Scip.ToolInfo.Builder, scip.Scip.ToolInfoOrBuilder> + getToolInfoFieldBuilder() { + if (toolInfoBuilder_ == null) { + toolInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.ToolInfo, scip.Scip.ToolInfo.Builder, scip.Scip.ToolInfoOrBuilder>( + getToolInfo(), + getParentForChildren(), + isClean()); + toolInfo_ = null; + } + return toolInfoBuilder_; + } + + private java.lang.Object projectRoot_ = ""; + /** + *
+       * URI-encoded absolute path to the root directory of this index. All
+       * documents in this index must appear in a subdirectory of this root
+       * directory.
+       * 
+ * + * string project_root = 3; + * @return The projectRoot. + */ + public java.lang.String getProjectRoot() { + java.lang.Object ref = projectRoot_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + projectRoot_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * URI-encoded absolute path to the root directory of this index. All
+       * documents in this index must appear in a subdirectory of this root
+       * directory.
+       * 
+ * + * string project_root = 3; + * @return The bytes for projectRoot. + */ + public com.google.protobuf.ByteString + getProjectRootBytes() { + java.lang.Object ref = projectRoot_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectRoot_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * URI-encoded absolute path to the root directory of this index. All
+       * documents in this index must appear in a subdirectory of this root
+       * directory.
+       * 
+ * + * string project_root = 3; + * @param value The projectRoot to set. + * @return This builder for chaining. + */ + public Builder setProjectRoot( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + projectRoot_ = value; + onChanged(); + return this; + } + /** + *
+       * URI-encoded absolute path to the root directory of this index. All
+       * documents in this index must appear in a subdirectory of this root
+       * directory.
+       * 
+ * + * string project_root = 3; + * @return This builder for chaining. + */ + public Builder clearProjectRoot() { + + projectRoot_ = getDefaultInstance().getProjectRoot(); + onChanged(); + return this; + } + /** + *
+       * URI-encoded absolute path to the root directory of this index. All
+       * documents in this index must appear in a subdirectory of this root
+       * directory.
+       * 
+ * + * string project_root = 3; + * @param value The bytes for projectRoot to set. + * @return This builder for chaining. + */ + public Builder setProjectRootBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + projectRoot_ = value; + onChanged(); + return this; + } + + private int textDocumentEncoding_ = 0; + /** + *
+       * Text encoding of the source files on disk that are referenced from
+       * `Document.relative_path`. This value is unrelated to the `Document.text`
+       * field, which is a Protobuf string and hence must be UTF-8 encoded.
+       * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + @java.lang.Override public int getTextDocumentEncodingValue() { + return textDocumentEncoding_; + } + /** + *
+       * Text encoding of the source files on disk that are referenced from
+       * `Document.relative_path`. This value is unrelated to the `Document.text`
+       * field, which is a Protobuf string and hence must be UTF-8 encoded.
+       * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @param value The enum numeric value on the wire for textDocumentEncoding to set. + * @return This builder for chaining. + */ + public Builder setTextDocumentEncodingValue(int value) { + + textDocumentEncoding_ = value; + onChanged(); + return this; + } + /** + *
+       * Text encoding of the source files on disk that are referenced from
+       * `Document.relative_path`. This value is unrelated to the `Document.text`
+       * field, which is a Protobuf string and hence must be UTF-8 encoded.
+       * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return The textDocumentEncoding. + */ + @java.lang.Override + public scip.Scip.TextEncoding getTextDocumentEncoding() { + @SuppressWarnings("deprecation") + scip.Scip.TextEncoding result = scip.Scip.TextEncoding.valueOf(textDocumentEncoding_); + return result == null ? scip.Scip.TextEncoding.UNRECOGNIZED : result; + } + /** + *
+       * Text encoding of the source files on disk that are referenced from
+       * `Document.relative_path`. This value is unrelated to the `Document.text`
+       * field, which is a Protobuf string and hence must be UTF-8 encoded.
+       * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @param value The textDocumentEncoding to set. + * @return This builder for chaining. + */ + public Builder setTextDocumentEncoding(scip.Scip.TextEncoding value) { + if (value == null) { + throw new NullPointerException(); + } + + textDocumentEncoding_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Text encoding of the source files on disk that are referenced from
+       * `Document.relative_path`. This value is unrelated to the `Document.text`
+       * field, which is a Protobuf string and hence must be UTF-8 encoded.
+       * 
+ * + * .scip.TextEncoding text_document_encoding = 4; + * @return This builder for chaining. + */ + public Builder clearTextDocumentEncoding() { + + textDocumentEncoding_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Metadata) + } + + // @@protoc_insertion_point(class_scope:scip.Metadata) + private static final scip.Scip.Metadata DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Metadata(); + } + + public static scip.Scip.Metadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Metadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Metadata(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Metadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ToolInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.ToolInfo) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1; + * @return The name. + */ + java.lang.String getName(); + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2; + * @return The version. + */ + java.lang.String getVersion(); + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); + + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @return A list containing the arguments. + */ + java.util.List + getArgumentsList(); + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @return The count of arguments. + */ + int getArgumentsCount(); + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + java.lang.String getArguments(int index); + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + com.google.protobuf.ByteString + getArgumentsBytes(int index); + } + /** + * Protobuf type {@code scip.ToolInfo} + */ + public static final class ToolInfo extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.ToolInfo) + ToolInfoOrBuilder { + private static final long serialVersionUID = 0L; + // Use ToolInfo.newBuilder() to construct. + private ToolInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ToolInfo() { + name_ = ""; + version_ = ""; + arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ToolInfo(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ToolInfo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + version_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + arguments_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + arguments_.add(s); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + arguments_ = arguments_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_ToolInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.ToolInfo.class, scip.Scip.ToolInfo.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 2; + private volatile java.lang.Object version_; + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } + } + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ARGUMENTS_FIELD_NUMBER = 3; + private com.google.protobuf.LazyStringList arguments_; + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @return A list containing the arguments. + */ + public com.google.protobuf.ProtocolStringList + getArgumentsList() { + return arguments_; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @return The count of arguments. + */ + public int getArgumentsCount() { + return arguments_.size(); + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + public java.lang.String getArguments(int index) { + return arguments_.get(index); + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + public com.google.protobuf.ByteString + getArgumentsBytes(int index) { + return arguments_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + if (!getVersionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_); + } + for (int i = 0; i < arguments_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, arguments_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (!getVersionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_); + } + { + int dataSize = 0; + for (int i = 0; i < arguments_.size(); i++) { + dataSize += computeStringSizeNoTag(arguments_.getRaw(i)); + } + size += dataSize; + size += 1 * getArgumentsList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.ToolInfo)) { + return super.equals(obj); + } + scip.Scip.ToolInfo other = (scip.Scip.ToolInfo) obj; + + if (!getName() + .equals(other.getName())) return false; + if (!getVersion() + .equals(other.getVersion())) return false; + if (!getArgumentsList() + .equals(other.getArgumentsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + if (getArgumentsCount() > 0) { + hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER; + hash = (53 * hash) + getArgumentsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.ToolInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.ToolInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.ToolInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.ToolInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.ToolInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.ToolInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.ToolInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.ToolInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.ToolInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.ToolInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.ToolInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.ToolInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.ToolInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.ToolInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.ToolInfo) + scip.Scip.ToolInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_ToolInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.ToolInfo.class, scip.Scip.ToolInfo.Builder.class); + } + + // Construct using scip.Scip.ToolInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + name_ = ""; + + version_ = ""; + + arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + public scip.Scip.ToolInfo getDefaultInstanceForType() { + return scip.Scip.ToolInfo.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.ToolInfo build() { + scip.Scip.ToolInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.ToolInfo buildPartial() { + scip.Scip.ToolInfo result = new scip.Scip.ToolInfo(this); + int from_bitField0_ = bitField0_; + result.name_ = name_; + result.version_ = version_; + if (((bitField0_ & 0x00000001) != 0)) { + arguments_ = arguments_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.arguments_ = arguments_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.ToolInfo) { + return mergeFrom((scip.Scip.ToolInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.ToolInfo other) { + if (other == scip.Scip.ToolInfo.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + if (!other.getVersion().isEmpty()) { + version_ = other.version_; + onChanged(); + } + if (!other.arguments_.isEmpty()) { + if (arguments_.isEmpty()) { + arguments_ = other.arguments_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureArgumentsIsMutable(); + arguments_.addAll(other.arguments_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.ToolInfo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.ToolInfo) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object name_ = ""; + /** + *
+       * Name of the indexer that produced this index.
+       * 
+ * + * string name = 1; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Name of the indexer that produced this index.
+       * 
+ * + * string name = 1; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Name of the indexer that produced this index.
+       * 
+ * + * string name = 1; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + *
+       * Name of the indexer that produced this index.
+       * 
+ * + * string name = 1; + * @return This builder for chaining. + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + *
+       * Name of the indexer that produced this index.
+       * 
+ * + * string name = 1; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private java.lang.Object version_ = ""; + /** + *
+       * Version of the indexer that produced this index.
+       * 
+ * + * string version = 2; + * @return The version. + */ + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Version of the indexer that produced this index.
+       * 
+ * + * string version = 2; + * @return The bytes for version. + */ + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Version of the indexer that produced this index.
+       * 
+ * + * string version = 2; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + version_ = value; + onChanged(); + return this; + } + /** + *
+       * Version of the indexer that produced this index.
+       * 
+ * + * string version = 2; + * @return This builder for chaining. + */ + public Builder clearVersion() { + + version_ = getDefaultInstance().getVersion(); + onChanged(); + return this; + } + /** + *
+       * Version of the indexer that produced this index.
+       * 
+ * + * string version = 2; + * @param value The bytes for version to set. + * @return This builder for chaining. + */ + public Builder setVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + version_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureArgumentsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @return A list containing the arguments. + */ + public com.google.protobuf.ProtocolStringList + getArgumentsList() { + return arguments_.getUnmodifiableView(); + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @return The count of arguments. + */ + public int getArgumentsCount() { + return arguments_.size(); + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + public java.lang.String getArguments(int index) { + return arguments_.get(index); + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + public com.google.protobuf.ByteString + getArgumentsBytes(int index) { + return arguments_.getByteString(index); + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param index The index to set the value at. + * @param value The arguments to set. + * @return This builder for chaining. + */ + public Builder setArguments( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureArgumentsIsMutable(); + arguments_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param value The arguments to add. + * @return This builder for chaining. + */ + public Builder addArguments( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureArgumentsIsMutable(); + arguments_.add(value); + onChanged(); + return this; + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param values The arguments to add. + * @return This builder for chaining. + */ + public Builder addAllArguments( + java.lang.Iterable values) { + ensureArgumentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, arguments_); + onChanged(); + return this; + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @return This builder for chaining. + */ + public Builder clearArguments() { + arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * Command-line arguments that were used to invoke this indexer.
+       * 
+ * + * repeated string arguments = 3; + * @param value The bytes of the arguments to add. + * @return This builder for chaining. + */ + public Builder addArgumentsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureArgumentsIsMutable(); + arguments_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.ToolInfo) + } + + // @@protoc_insertion_point(class_scope:scip.ToolInfo) + private static final scip.Scip.ToolInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.ToolInfo(); + } + + public static scip.Scip.ToolInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ToolInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ToolInfo(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.ToolInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DocumentOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Document) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4; + * @return The language. + */ + java.lang.String getLanguage(); + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4; + * @return The bytes for language. + */ + com.google.protobuf.ByteString + getLanguageBytes(); + + /** + *
+     * (Required) Unique path to the text document.
+     * 1. The path must be relative to the directory supplied in the associated
+     *    `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     *    or '.' or '..'.
+     * 
+ * + * string relative_path = 1; + * @return The relativePath. + */ + java.lang.String getRelativePath(); + /** + *
+     * (Required) Unique path to the text document.
+     * 1. The path must be relative to the directory supplied in the associated
+     *    `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     *    or '.' or '..'.
+     * 
+ * + * string relative_path = 1; + * @return The bytes for relativePath. + */ + com.google.protobuf.ByteString + getRelativePathBytes(); + + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + java.util.List + getOccurrencesList(); + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + scip.Scip.Occurrence getOccurrences(int index); + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + int getOccurrencesCount(); + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + java.util.List + getOccurrencesOrBuilderList(); + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + scip.Scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index); + + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + java.util.List + getSymbolsList(); + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + scip.Scip.SymbolInformation getSymbols(int index); + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + int getSymbolsCount(); + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + java.util.List + getSymbolsOrBuilderList(); + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + scip.Scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index); + + /** + *
+     * (optional) Text contents of the this document. Indexers are not expected to
+     * include the text by default. It's preferrable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field was
+     * introduced to support `SymbolInformation.signature_documentation`, but it
+     * can be used for other purposes as well, for example testing or when working
+     * with virtual/in-memory documents.
+     * 
+ * + * string text = 5; + * @return The text. + */ + java.lang.String getText(); + /** + *
+     * (optional) Text contents of the this document. Indexers are not expected to
+     * include the text by default. It's preferrable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field was
+     * introduced to support `SymbolInformation.signature_documentation`, but it
+     * can be used for other purposes as well, for example testing or when working
+     * with virtual/in-memory documents.
+     * 
+ * + * string text = 5; + * @return The bytes for text. + */ + com.google.protobuf.ByteString + getTextBytes(); + + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     *   use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     *   use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     *   use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The enum numeric value on the wire for positionEncoding. + */ + int getPositionEncodingValue(); + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     *   use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     *   use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     *   use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The positionEncoding. + */ + scip.Scip.PositionEncoding getPositionEncoding(); + } + /** + *
+   * Document defines the metadata about a source file on disk.
+   * 
+ * + * Protobuf type {@code scip.Document} + */ + public static final class Document extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Document) + DocumentOrBuilder { + private static final long serialVersionUID = 0L; + // Use Document.newBuilder() to construct. + private Document(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Document() { + language_ = ""; + relativePath_ = ""; + occurrences_ = java.util.Collections.emptyList(); + symbols_ = java.util.Collections.emptyList(); + text_ = ""; + positionEncoding_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Document(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Document( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + relativePath_ = s; + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + occurrences_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + occurrences_.add( + input.readMessage(scip.Scip.Occurrence.parser(), extensionRegistry)); + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + symbols_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + symbols_.add( + input.readMessage(scip.Scip.SymbolInformation.parser(), extensionRegistry)); + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + language_ = s; + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + text_ = s; + break; + } + case 48: { + int rawValue = input.readEnum(); + + positionEncoding_ = rawValue; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + occurrences_ = java.util.Collections.unmodifiableList(occurrences_); + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + symbols_ = java.util.Collections.unmodifiableList(symbols_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Document_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Document.class, scip.Scip.Document.Builder.class); + } + + public static final int LANGUAGE_FIELD_NUMBER = 4; + private volatile java.lang.Object language_; + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4; + * @return The language. + */ + @java.lang.Override + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } + } + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4; + * @return The bytes for language. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int RELATIVE_PATH_FIELD_NUMBER = 1; + private volatile java.lang.Object relativePath_; + /** + *
+     * (Required) Unique path to the text document.
+     * 1. The path must be relative to the directory supplied in the associated
+     *    `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     *    or '.' or '..'.
+     * 
+ * + * string relative_path = 1; + * @return The relativePath. + */ + @java.lang.Override + public java.lang.String getRelativePath() { + java.lang.Object ref = relativePath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + relativePath_ = s; + return s; + } + } + /** + *
+     * (Required) Unique path to the text document.
+     * 1. The path must be relative to the directory supplied in the associated
+     *    `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     *    or '.' or '..'.
+     * 
+ * + * string relative_path = 1; + * @return The bytes for relativePath. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getRelativePathBytes() { + java.lang.Object ref = relativePath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + relativePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OCCURRENCES_FIELD_NUMBER = 2; + private java.util.List occurrences_; + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + @java.lang.Override + public java.util.List getOccurrencesList() { + return occurrences_; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + @java.lang.Override + public java.util.List + getOccurrencesOrBuilderList() { + return occurrences_; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + @java.lang.Override + public int getOccurrencesCount() { + return occurrences_.size(); + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + @java.lang.Override + public scip.Scip.Occurrence getOccurrences(int index) { + return occurrences_.get(index); + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + @java.lang.Override + public scip.Scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + return occurrences_.get(index); + } + + public static final int SYMBOLS_FIELD_NUMBER = 3; + private java.util.List symbols_; + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + @java.lang.Override + public java.util.List getSymbolsList() { + return symbols_; + } + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + @java.lang.Override + public java.util.List + getSymbolsOrBuilderList() { + return symbols_; + } + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + @java.lang.Override + public int getSymbolsCount() { + return symbols_.size(); + } + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + @java.lang.Override + public scip.Scip.SymbolInformation getSymbols(int index) { + return symbols_.get(index); + } + /** + *
+     * Symbols that are "defined" within this document.
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + @java.lang.Override + public scip.Scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index) { + return symbols_.get(index); + } + + public static final int TEXT_FIELD_NUMBER = 5; + private volatile java.lang.Object text_; + /** + *
+     * (optional) Text contents of the this document. Indexers are not expected to
+     * include the text by default. It's preferrable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field was
+     * introduced to support `SymbolInformation.signature_documentation`, but it
+     * can be used for other purposes as well, for example testing or when working
+     * with virtual/in-memory documents.
+     * 
+ * + * string text = 5; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } + } + /** + *
+     * (optional) Text contents of the this document. Indexers are not expected to
+     * include the text by default. It's preferrable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field was
+     * introduced to support `SymbolInformation.signature_documentation`, but it
+     * can be used for other purposes as well, for example testing or when working
+     * with virtual/in-memory documents.
+     * 
+ * + * string text = 5; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int POSITION_ENCODING_FIELD_NUMBER = 6; + private int positionEncoding_; + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     *   use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     *   use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     *   use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The enum numeric value on the wire for positionEncoding. + */ + @java.lang.Override public int getPositionEncodingValue() { + return positionEncoding_; + } + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     *   use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     *   use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     *   use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The positionEncoding. + */ + @java.lang.Override public scip.Scip.PositionEncoding getPositionEncoding() { + @SuppressWarnings("deprecation") + scip.Scip.PositionEncoding result = scip.Scip.PositionEncoding.valueOf(positionEncoding_); + return result == null ? scip.Scip.PositionEncoding.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getRelativePathBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, relativePath_); + } + for (int i = 0; i < occurrences_.size(); i++) { + output.writeMessage(2, occurrences_.get(i)); + } + for (int i = 0; i < symbols_.size(); i++) { + output.writeMessage(3, symbols_.get(i)); + } + if (!getLanguageBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, language_); + } + if (!getTextBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, text_); + } + if (positionEncoding_ != scip.Scip.PositionEncoding.UnspecifiedPositionEncoding.getNumber()) { + output.writeEnum(6, positionEncoding_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getRelativePathBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, relativePath_); + } + for (int i = 0; i < occurrences_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, occurrences_.get(i)); + } + for (int i = 0; i < symbols_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, symbols_.get(i)); + } + if (!getLanguageBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, language_); + } + if (!getTextBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, text_); + } + if (positionEncoding_ != scip.Scip.PositionEncoding.UnspecifiedPositionEncoding.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(6, positionEncoding_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Document)) { + return super.equals(obj); + } + scip.Scip.Document other = (scip.Scip.Document) obj; + + if (!getLanguage() + .equals(other.getLanguage())) return false; + if (!getRelativePath() + .equals(other.getRelativePath())) return false; + if (!getOccurrencesList() + .equals(other.getOccurrencesList())) return false; + if (!getSymbolsList() + .equals(other.getSymbolsList())) return false; + if (!getText() + .equals(other.getText())) return false; + if (positionEncoding_ != other.positionEncoding_) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LANGUAGE_FIELD_NUMBER; + hash = (53 * hash) + getLanguage().hashCode(); + hash = (37 * hash) + RELATIVE_PATH_FIELD_NUMBER; + hash = (53 * hash) + getRelativePath().hashCode(); + if (getOccurrencesCount() > 0) { + hash = (37 * hash) + OCCURRENCES_FIELD_NUMBER; + hash = (53 * hash) + getOccurrencesList().hashCode(); + } + if (getSymbolsCount() > 0) { + hash = (37 * hash) + SYMBOLS_FIELD_NUMBER; + hash = (53 * hash) + getSymbolsList().hashCode(); + } + hash = (37 * hash) + TEXT_FIELD_NUMBER; + hash = (53 * hash) + getText().hashCode(); + hash = (37 * hash) + POSITION_ENCODING_FIELD_NUMBER; + hash = (53 * hash) + positionEncoding_; + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Document parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Document parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Document parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Document parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Document parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Document parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Document parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Document parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Document parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Document parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Document parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Document parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Document prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Document defines the metadata about a source file on disk.
+     * 
+ * + * Protobuf type {@code scip.Document} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Document) + scip.Scip.DocumentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Document_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Document.class, scip.Scip.Document.Builder.class); + } + + // Construct using scip.Scip.Document.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getOccurrencesFieldBuilder(); + getSymbolsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + language_ = ""; + + relativePath_ = ""; + + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + occurrencesBuilder_.clear(); + } + if (symbolsBuilder_ == null) { + symbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + symbolsBuilder_.clear(); + } + text_ = ""; + + positionEncoding_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + public scip.Scip.Document getDefaultInstanceForType() { + return scip.Scip.Document.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Document build() { + scip.Scip.Document result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Document buildPartial() { + scip.Scip.Document result = new scip.Scip.Document(this); + int from_bitField0_ = bitField0_; + result.language_ = language_; + result.relativePath_ = relativePath_; + if (occurrencesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + occurrences_ = java.util.Collections.unmodifiableList(occurrences_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.occurrences_ = occurrences_; + } else { + result.occurrences_ = occurrencesBuilder_.build(); + } + if (symbolsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + symbols_ = java.util.Collections.unmodifiableList(symbols_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.symbols_ = symbols_; + } else { + result.symbols_ = symbolsBuilder_.build(); + } + result.text_ = text_; + result.positionEncoding_ = positionEncoding_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Document) { + return mergeFrom((scip.Scip.Document)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Document other) { + if (other == scip.Scip.Document.getDefaultInstance()) return this; + if (!other.getLanguage().isEmpty()) { + language_ = other.language_; + onChanged(); + } + if (!other.getRelativePath().isEmpty()) { + relativePath_ = other.relativePath_; + onChanged(); + } + if (occurrencesBuilder_ == null) { + if (!other.occurrences_.isEmpty()) { + if (occurrences_.isEmpty()) { + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureOccurrencesIsMutable(); + occurrences_.addAll(other.occurrences_); + } + onChanged(); + } + } else { + if (!other.occurrences_.isEmpty()) { + if (occurrencesBuilder_.isEmpty()) { + occurrencesBuilder_.dispose(); + occurrencesBuilder_ = null; + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000001); + occurrencesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getOccurrencesFieldBuilder() : null; + } else { + occurrencesBuilder_.addAllMessages(other.occurrences_); + } + } + } + if (symbolsBuilder_ == null) { + if (!other.symbols_.isEmpty()) { + if (symbols_.isEmpty()) { + symbols_ = other.symbols_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureSymbolsIsMutable(); + symbols_.addAll(other.symbols_); + } + onChanged(); + } + } else { + if (!other.symbols_.isEmpty()) { + if (symbolsBuilder_.isEmpty()) { + symbolsBuilder_.dispose(); + symbolsBuilder_ = null; + symbols_ = other.symbols_; + bitField0_ = (bitField0_ & ~0x00000002); + symbolsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getSymbolsFieldBuilder() : null; + } else { + symbolsBuilder_.addAllMessages(other.symbols_); + } + } + } + if (!other.getText().isEmpty()) { + text_ = other.text_; + onChanged(); + } + if (other.positionEncoding_ != 0) { + setPositionEncodingValue(other.getPositionEncodingValue()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Document parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Document) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object language_ = ""; + /** + *
+       * The string ID for the programming language this file is written in.
+       * The `Language` enum contains the names of most common programming languages.
+       * This field is typed as a string to permit any programming language, including
+       * ones that are not specified by the `Language` enum.
+       * 
+ * + * string language = 4; + * @return The language. + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * The string ID for the programming language this file is written in.
+       * The `Language` enum contains the names of most common programming languages.
+       * This field is typed as a string to permit any programming language, including
+       * ones that are not specified by the `Language` enum.
+       * 
+ * + * string language = 4; + * @return The bytes for language. + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * The string ID for the programming language this file is written in.
+       * The `Language` enum contains the names of most common programming languages.
+       * This field is typed as a string to permit any programming language, including
+       * ones that are not specified by the `Language` enum.
+       * 
+ * + * string language = 4; + * @param value The language to set. + * @return This builder for chaining. + */ + public Builder setLanguage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + language_ = value; + onChanged(); + return this; + } + /** + *
+       * The string ID for the programming language this file is written in.
+       * The `Language` enum contains the names of most common programming languages.
+       * This field is typed as a string to permit any programming language, including
+       * ones that are not specified by the `Language` enum.
+       * 
+ * + * string language = 4; + * @return This builder for chaining. + */ + public Builder clearLanguage() { + + language_ = getDefaultInstance().getLanguage(); + onChanged(); + return this; + } + /** + *
+       * The string ID for the programming language this file is written in.
+       * The `Language` enum contains the names of most common programming languages.
+       * This field is typed as a string to permit any programming language, including
+       * ones that are not specified by the `Language` enum.
+       * 
+ * + * string language = 4; + * @param value The bytes for language to set. + * @return This builder for chaining. + */ + public Builder setLanguageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + language_ = value; + onChanged(); + return this; + } + + private java.lang.Object relativePath_ = ""; + /** + *
+       * (Required) Unique path to the text document.
+       * 1. The path must be relative to the directory supplied in the associated
+       *    `Metadata.project_root`.
+       * 2. The path must not begin with a leading '/'.
+       * 3. The path must point to a regular file, not a symbolic link.
+       * 4. The path must use '/' as the separator, including on Windows.
+       * 5. The path must be canonical; it cannot include empty components ('//'),
+       *    or '.' or '..'.
+       * 
+ * + * string relative_path = 1; + * @return The relativePath. + */ + public java.lang.String getRelativePath() { + java.lang.Object ref = relativePath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + relativePath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (Required) Unique path to the text document.
+       * 1. The path must be relative to the directory supplied in the associated
+       *    `Metadata.project_root`.
+       * 2. The path must not begin with a leading '/'.
+       * 3. The path must point to a regular file, not a symbolic link.
+       * 4. The path must use '/' as the separator, including on Windows.
+       * 5. The path must be canonical; it cannot include empty components ('//'),
+       *    or '.' or '..'.
+       * 
+ * + * string relative_path = 1; + * @return The bytes for relativePath. + */ + public com.google.protobuf.ByteString + getRelativePathBytes() { + java.lang.Object ref = relativePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + relativePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (Required) Unique path to the text document.
+       * 1. The path must be relative to the directory supplied in the associated
+       *    `Metadata.project_root`.
+       * 2. The path must not begin with a leading '/'.
+       * 3. The path must point to a regular file, not a symbolic link.
+       * 4. The path must use '/' as the separator, including on Windows.
+       * 5. The path must be canonical; it cannot include empty components ('//'),
+       *    or '.' or '..'.
+       * 
+ * + * string relative_path = 1; + * @param value The relativePath to set. + * @return This builder for chaining. + */ + public Builder setRelativePath( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + relativePath_ = value; + onChanged(); + return this; + } + /** + *
+       * (Required) Unique path to the text document.
+       * 1. The path must be relative to the directory supplied in the associated
+       *    `Metadata.project_root`.
+       * 2. The path must not begin with a leading '/'.
+       * 3. The path must point to a regular file, not a symbolic link.
+       * 4. The path must use '/' as the separator, including on Windows.
+       * 5. The path must be canonical; it cannot include empty components ('//'),
+       *    or '.' or '..'.
+       * 
+ * + * string relative_path = 1; + * @return This builder for chaining. + */ + public Builder clearRelativePath() { + + relativePath_ = getDefaultInstance().getRelativePath(); + onChanged(); + return this; + } + /** + *
+       * (Required) Unique path to the text document.
+       * 1. The path must be relative to the directory supplied in the associated
+       *    `Metadata.project_root`.
+       * 2. The path must not begin with a leading '/'.
+       * 3. The path must point to a regular file, not a symbolic link.
+       * 4. The path must use '/' as the separator, including on Windows.
+       * 5. The path must be canonical; it cannot include empty components ('//'),
+       *    or '.' or '..'.
+       * 
+ * + * string relative_path = 1; + * @param value The bytes for relativePath to set. + * @return This builder for chaining. + */ + public Builder setRelativePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + relativePath_ = value; + onChanged(); + return this; + } + + private java.util.List occurrences_ = + java.util.Collections.emptyList(); + private void ensureOccurrencesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + occurrences_ = new java.util.ArrayList(occurrences_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Occurrence, scip.Scip.Occurrence.Builder, scip.Scip.OccurrenceOrBuilder> occurrencesBuilder_; + + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public java.util.List getOccurrencesList() { + if (occurrencesBuilder_ == null) { + return java.util.Collections.unmodifiableList(occurrences_); + } else { + return occurrencesBuilder_.getMessageList(); + } + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public int getOccurrencesCount() { + if (occurrencesBuilder_ == null) { + return occurrences_.size(); + } else { + return occurrencesBuilder_.getCount(); + } + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public scip.Scip.Occurrence getOccurrences(int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); + } else { + return occurrencesBuilder_.getMessage(index); + } + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder setOccurrences( + int index, scip.Scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.set(index, value); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder setOccurrences( + int index, scip.Scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.set(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder addOccurrences(scip.Scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder addOccurrences( + int index, scip.Scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(index, value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder addOccurrences( + scip.Scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder addOccurrences( + int index, scip.Scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder addAllOccurrences( + java.lang.Iterable values) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, occurrences_); + onChanged(); + } else { + occurrencesBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder clearOccurrences() { + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + occurrencesBuilder_.clear(); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public Builder removeOccurrences(int index) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.remove(index); + onChanged(); + } else { + occurrencesBuilder_.remove(index); + } + return this; + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public scip.Scip.Occurrence.Builder getOccurrencesBuilder( + int index) { + return getOccurrencesFieldBuilder().getBuilder(index); + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public scip.Scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); } else { + return occurrencesBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public java.util.List + getOccurrencesOrBuilderList() { + if (occurrencesBuilder_ != null) { + return occurrencesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(occurrences_); + } + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public scip.Scip.Occurrence.Builder addOccurrencesBuilder() { + return getOccurrencesFieldBuilder().addBuilder( + scip.Scip.Occurrence.getDefaultInstance()); + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public scip.Scip.Occurrence.Builder addOccurrencesBuilder( + int index) { + return getOccurrencesFieldBuilder().addBuilder( + index, scip.Scip.Occurrence.getDefaultInstance()); + } + /** + *
+       * Occurrences that appear in this file.
+       * 
+ * + * repeated .scip.Occurrence occurrences = 2; + */ + public java.util.List + getOccurrencesBuilderList() { + return getOccurrencesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Occurrence, scip.Scip.Occurrence.Builder, scip.Scip.OccurrenceOrBuilder> + getOccurrencesFieldBuilder() { + if (occurrencesBuilder_ == null) { + occurrencesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Occurrence, scip.Scip.Occurrence.Builder, scip.Scip.OccurrenceOrBuilder>( + occurrences_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + occurrences_ = null; + } + return occurrencesBuilder_; + } + + private java.util.List symbols_ = + java.util.Collections.emptyList(); + private void ensureSymbolsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + symbols_ = new java.util.ArrayList(symbols_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder> symbolsBuilder_; + + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public java.util.List getSymbolsList() { + if (symbolsBuilder_ == null) { + return java.util.Collections.unmodifiableList(symbols_); + } else { + return symbolsBuilder_.getMessageList(); + } + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public int getSymbolsCount() { + if (symbolsBuilder_ == null) { + return symbols_.size(); + } else { + return symbolsBuilder_.getCount(); + } + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public scip.Scip.SymbolInformation getSymbols(int index) { + if (symbolsBuilder_ == null) { + return symbols_.get(index); + } else { + return symbolsBuilder_.getMessage(index); + } + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder setSymbols( + int index, scip.Scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.set(index, value); + onChanged(); + } else { + symbolsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder setSymbols( + int index, scip.Scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.set(index, builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder addSymbols(scip.Scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.add(value); + onChanged(); + } else { + symbolsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder addSymbols( + int index, scip.Scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.add(index, value); + onChanged(); + } else { + symbolsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder addSymbols( + scip.Scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.add(builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder addSymbols( + int index, scip.Scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.add(index, builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder addAllSymbols( + java.lang.Iterable values) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, symbols_); + onChanged(); + } else { + symbolsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder clearSymbols() { + if (symbolsBuilder_ == null) { + symbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + symbolsBuilder_.clear(); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public Builder removeSymbols(int index) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.remove(index); + onChanged(); + } else { + symbolsBuilder_.remove(index); + } + return this; + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder getSymbolsBuilder( + int index) { + return getSymbolsFieldBuilder().getBuilder(index); + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public scip.Scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index) { + if (symbolsBuilder_ == null) { + return symbols_.get(index); } else { + return symbolsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public java.util.List + getSymbolsOrBuilderList() { + if (symbolsBuilder_ != null) { + return symbolsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(symbols_); + } + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder addSymbolsBuilder() { + return getSymbolsFieldBuilder().addBuilder( + scip.Scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public scip.Scip.SymbolInformation.Builder addSymbolsBuilder( + int index) { + return getSymbolsFieldBuilder().addBuilder( + index, scip.Scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+       * Symbols that are "defined" within this document.
+       * This should include symbols which technically do not have any definition,
+       * but have a reference and are defined by some other symbol (see
+       * Relationship.is_definition).
+       * 
+ * + * repeated .scip.SymbolInformation symbols = 3; + */ + public java.util.List + getSymbolsBuilderList() { + return getSymbolsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder> + getSymbolsFieldBuilder() { + if (symbolsBuilder_ == null) { + symbolsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.SymbolInformation, scip.Scip.SymbolInformation.Builder, scip.Scip.SymbolInformationOrBuilder>( + symbols_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + symbols_ = null; + } + return symbolsBuilder_; + } + + private java.lang.Object text_ = ""; + /** + *
+       * (optional) Text contents of the this document. Indexers are not expected to
+       * include the text by default. It's preferrable that clients read the text
+       * contents from the file system by resolving the absolute path from joining
+       * `Index.metadata.project_root` and `Document.relative_path`. This field was
+       * introduced to support `SymbolInformation.signature_documentation`, but it
+       * can be used for other purposes as well, for example testing or when working
+       * with virtual/in-memory documents.
+       * 
+ * + * string text = 5; + * @return The text. + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) Text contents of the this document. Indexers are not expected to
+       * include the text by default. It's preferrable that clients read the text
+       * contents from the file system by resolving the absolute path from joining
+       * `Index.metadata.project_root` and `Document.relative_path`. This field was
+       * introduced to support `SymbolInformation.signature_documentation`, but it
+       * can be used for other purposes as well, for example testing or when working
+       * with virtual/in-memory documents.
+       * 
+ * + * string text = 5; + * @return The bytes for text. + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) Text contents of the this document. Indexers are not expected to
+       * include the text by default. It's preferrable that clients read the text
+       * contents from the file system by resolving the absolute path from joining
+       * `Index.metadata.project_root` and `Document.relative_path`. This field was
+       * introduced to support `SymbolInformation.signature_documentation`, but it
+       * can be used for other purposes as well, for example testing or when working
+       * with virtual/in-memory documents.
+       * 
+ * + * string text = 5; + * @param value The text to set. + * @return This builder for chaining. + */ + public Builder setText( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + text_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) Text contents of the this document. Indexers are not expected to
+       * include the text by default. It's preferrable that clients read the text
+       * contents from the file system by resolving the absolute path from joining
+       * `Index.metadata.project_root` and `Document.relative_path`. This field was
+       * introduced to support `SymbolInformation.signature_documentation`, but it
+       * can be used for other purposes as well, for example testing or when working
+       * with virtual/in-memory documents.
+       * 
+ * + * string text = 5; + * @return This builder for chaining. + */ + public Builder clearText() { + + text_ = getDefaultInstance().getText(); + onChanged(); + return this; + } + /** + *
+       * (optional) Text contents of the this document. Indexers are not expected to
+       * include the text by default. It's preferrable that clients read the text
+       * contents from the file system by resolving the absolute path from joining
+       * `Index.metadata.project_root` and `Document.relative_path`. This field was
+       * introduced to support `SymbolInformation.signature_documentation`, but it
+       * can be used for other purposes as well, for example testing or when working
+       * with virtual/in-memory documents.
+       * 
+ * + * string text = 5; + * @param value The bytes for text to set. + * @return This builder for chaining. + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + text_ = value; + onChanged(); + return this; + } + + private int positionEncoding_ = 0; + /** + *
+       * Specifies the encoding used for source ranges in this Document.
+       * Usually, this will match the type used to index the string type
+       * in the indexer's implementation language in O(1) time.
+       * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+       *   use UTF16CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Python,
+       *   use UTF32CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Go, Rust or C++,
+       *   use UTF8ByteOffsetFromLineStart.
+       * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The enum numeric value on the wire for positionEncoding. + */ + @java.lang.Override public int getPositionEncodingValue() { + return positionEncoding_; + } + /** + *
+       * Specifies the encoding used for source ranges in this Document.
+       * Usually, this will match the type used to index the string type
+       * in the indexer's implementation language in O(1) time.
+       * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+       *   use UTF16CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Python,
+       *   use UTF32CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Go, Rust or C++,
+       *   use UTF8ByteOffsetFromLineStart.
+       * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @param value The enum numeric value on the wire for positionEncoding to set. + * @return This builder for chaining. + */ + public Builder setPositionEncodingValue(int value) { + + positionEncoding_ = value; + onChanged(); + return this; + } + /** + *
+       * Specifies the encoding used for source ranges in this Document.
+       * Usually, this will match the type used to index the string type
+       * in the indexer's implementation language in O(1) time.
+       * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+       *   use UTF16CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Python,
+       *   use UTF32CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Go, Rust or C++,
+       *   use UTF8ByteOffsetFromLineStart.
+       * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return The positionEncoding. + */ + @java.lang.Override + public scip.Scip.PositionEncoding getPositionEncoding() { + @SuppressWarnings("deprecation") + scip.Scip.PositionEncoding result = scip.Scip.PositionEncoding.valueOf(positionEncoding_); + return result == null ? scip.Scip.PositionEncoding.UNRECOGNIZED : result; + } + /** + *
+       * Specifies the encoding used for source ranges in this Document.
+       * Usually, this will match the type used to index the string type
+       * in the indexer's implementation language in O(1) time.
+       * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+       *   use UTF16CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Python,
+       *   use UTF32CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Go, Rust or C++,
+       *   use UTF8ByteOffsetFromLineStart.
+       * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @param value The positionEncoding to set. + * @return This builder for chaining. + */ + public Builder setPositionEncoding(scip.Scip.PositionEncoding value) { + if (value == null) { + throw new NullPointerException(); + } + + positionEncoding_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Specifies the encoding used for source ranges in this Document.
+       * Usually, this will match the type used to index the string type
+       * in the indexer's implementation language in O(1) time.
+       * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+       *   use UTF16CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Python,
+       *   use UTF32CodeUnitOffsetFromLineStart.
+       * - For an indexer implemented in Go, Rust or C++,
+       *   use UTF8ByteOffsetFromLineStart.
+       * 
+ * + * .scip.PositionEncoding position_encoding = 6; + * @return This builder for chaining. + */ + public Builder clearPositionEncoding() { + + positionEncoding_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Document) + } + + // @@protoc_insertion_point(class_scope:scip.Document) + private static final scip.Scip.Document DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Document(); + } + + public static scip.Scip.Document getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Document parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Document(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Document getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SymbolOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Symbol) + com.google.protobuf.MessageOrBuilder { + + /** + * string scheme = 1; + * @return The scheme. + */ + java.lang.String getScheme(); + /** + * string scheme = 1; + * @return The bytes for scheme. + */ + com.google.protobuf.ByteString + getSchemeBytes(); + + /** + * .scip.Package package = 2; + * @return Whether the package field is set. + */ + boolean hasPackage(); + /** + * .scip.Package package = 2; + * @return The package. + */ + scip.Scip.Package getPackage(); + /** + * .scip.Package package = 2; + */ + scip.Scip.PackageOrBuilder getPackageOrBuilder(); + + /** + * repeated .scip.Descriptor descriptors = 3; + */ + java.util.List + getDescriptorsList(); + /** + * repeated .scip.Descriptor descriptors = 3; + */ + scip.Scip.Descriptor getDescriptors(int index); + /** + * repeated .scip.Descriptor descriptors = 3; + */ + int getDescriptorsCount(); + /** + * repeated .scip.Descriptor descriptors = 3; + */ + java.util.List + getDescriptorsOrBuilderList(); + /** + * repeated .scip.Descriptor descriptors = 3; + */ + scip.Scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index); + } + /** + *
+   * Symbol is similar to a URI, it identifies a class, method, or a local
+   * variable. `SymbolInformation` contains rich metadata about symbols such as
+   * the docstring.
+   * Symbol has a standardized string representation, which can be used
+   * interchangeably with `Symbol`. The syntax for Symbol is the following:
+   * ```
+   * # (<x>)+ stands for one or more repetitions of <x>
+   * # (<x>)? stands for zero or one occurrence of <x>
+   * <symbol>               ::= <scheme> ' ' <package> ' ' (<descriptor>)+ | 'local ' <local-id>
+   * <package>              ::= <manager> ' ' <package-name> ' ' <version>
+   * <scheme>               ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local'
+   * <manager>              ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value
+   * <package-name>         ::= same as above
+   * <version>              ::= same as above
+   * <descriptor>           ::= <namespace> | <type> | <term> | <method> | <type-parameter> | <parameter> | <meta> | <macro>
+   * <namespace>            ::= <name> '/'
+   * <type>                 ::= <name> '#'
+   * <term>                 ::= <name> '.'
+   * <meta>                 ::= <name> ':'
+   * <macro>                ::= <name> '!'
+   * <method>               ::= <name> '(' (<method-disambiguator>)? ').'
+   * <type-parameter>       ::= '[' <name> ']'
+   * <parameter>            ::= '(' <name> ')'
+   * <name>                 ::= <identifier>
+   * <method-disambiguator> ::= <simple-identifier>
+   * <identifier>           ::= <simple-identifier> | <escaped-identifier>
+   * <simple-identifier>    ::= (<identifier-character>)+
+   * <identifier-character> ::= '_' | '+' | '-' | '$' | ASCII letter or digit
+   * <escaped-identifier>   ::= '`' (<escaped-character>)+ '`', must contain at least one non-<identifier-character>
+   * <escaped-characters>   ::= any UTF-8, escape backticks with double backtick.
+   * <local-id>             ::= <simple-identifier>
+   * ```
+   * The list of descriptors for a symbol should together form a fully
+   * qualified name for the symbol. That is, it should serve as a unique
+   * identifier across the package. Typically, it will include one descriptor
+   * for every node in the AST (along the ancestry path) between the root of
+   * the file and the node corresponding to the symbol.
+   * Local symbols MUST only be used for entities which are local to a Document,
+   * and cannot be accessed from outside the Document.
+   * 
+ * + * Protobuf type {@code scip.Symbol} + */ + public static final class Symbol extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Symbol) + SymbolOrBuilder { + private static final long serialVersionUID = 0L; + // Use Symbol.newBuilder() to construct. + private Symbol(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Symbol() { + scheme_ = ""; + descriptors_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Symbol(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Symbol( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + scheme_ = s; + break; + } + case 18: { + scip.Scip.Package.Builder subBuilder = null; + if (package_ != null) { + subBuilder = package_.toBuilder(); + } + package_ = input.readMessage(scip.Scip.Package.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(package_); + package_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + descriptors_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + descriptors_.add( + input.readMessage(scip.Scip.Descriptor.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + descriptors_ = java.util.Collections.unmodifiableList(descriptors_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Symbol_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Symbol.class, scip.Scip.Symbol.Builder.class); + } + + public static final int SCHEME_FIELD_NUMBER = 1; + private volatile java.lang.Object scheme_; + /** + * string scheme = 1; + * @return The scheme. + */ + @java.lang.Override + public java.lang.String getScheme() { + java.lang.Object ref = scheme_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + scheme_ = s; + return s; + } + } + /** + * string scheme = 1; + * @return The bytes for scheme. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSchemeBytes() { + java.lang.Object ref = scheme_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + scheme_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PACKAGE_FIELD_NUMBER = 2; + private scip.Scip.Package package_; + /** + * .scip.Package package = 2; + * @return Whether the package field is set. + */ + @java.lang.Override + public boolean hasPackage() { + return package_ != null; + } + /** + * .scip.Package package = 2; + * @return The package. + */ + @java.lang.Override + public scip.Scip.Package getPackage() { + return package_ == null ? scip.Scip.Package.getDefaultInstance() : package_; + } + /** + * .scip.Package package = 2; + */ + @java.lang.Override + public scip.Scip.PackageOrBuilder getPackageOrBuilder() { + return getPackage(); + } + + public static final int DESCRIPTORS_FIELD_NUMBER = 3; + private java.util.List descriptors_; + /** + * repeated .scip.Descriptor descriptors = 3; + */ + @java.lang.Override + public java.util.List getDescriptorsList() { + return descriptors_; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + @java.lang.Override + public java.util.List + getDescriptorsOrBuilderList() { + return descriptors_; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + @java.lang.Override + public int getDescriptorsCount() { + return descriptors_.size(); + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + @java.lang.Override + public scip.Scip.Descriptor getDescriptors(int index) { + return descriptors_.get(index); + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + @java.lang.Override + public scip.Scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index) { + return descriptors_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getSchemeBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, scheme_); + } + if (package_ != null) { + output.writeMessage(2, getPackage()); + } + for (int i = 0; i < descriptors_.size(); i++) { + output.writeMessage(3, descriptors_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getSchemeBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, scheme_); + } + if (package_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getPackage()); + } + for (int i = 0; i < descriptors_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, descriptors_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Symbol)) { + return super.equals(obj); + } + scip.Scip.Symbol other = (scip.Scip.Symbol) obj; + + if (!getScheme() + .equals(other.getScheme())) return false; + if (hasPackage() != other.hasPackage()) return false; + if (hasPackage()) { + if (!getPackage() + .equals(other.getPackage())) return false; + } + if (!getDescriptorsList() + .equals(other.getDescriptorsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SCHEME_FIELD_NUMBER; + hash = (53 * hash) + getScheme().hashCode(); + if (hasPackage()) { + hash = (37 * hash) + PACKAGE_FIELD_NUMBER; + hash = (53 * hash) + getPackage().hashCode(); + } + if (getDescriptorsCount() > 0) { + hash = (37 * hash) + DESCRIPTORS_FIELD_NUMBER; + hash = (53 * hash) + getDescriptorsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Symbol parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Symbol parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Symbol parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Symbol parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Symbol parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Symbol parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Symbol parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Symbol parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Symbol parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Symbol parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Symbol parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Symbol parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Symbol prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Symbol is similar to a URI, it identifies a class, method, or a local
+     * variable. `SymbolInformation` contains rich metadata about symbols such as
+     * the docstring.
+     * Symbol has a standardized string representation, which can be used
+     * interchangeably with `Symbol`. The syntax for Symbol is the following:
+     * ```
+     * # (<x>)+ stands for one or more repetitions of <x>
+     * # (<x>)? stands for zero or one occurrence of <x>
+     * <symbol>               ::= <scheme> ' ' <package> ' ' (<descriptor>)+ | 'local ' <local-id>
+     * <package>              ::= <manager> ' ' <package-name> ' ' <version>
+     * <scheme>               ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local'
+     * <manager>              ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value
+     * <package-name>         ::= same as above
+     * <version>              ::= same as above
+     * <descriptor>           ::= <namespace> | <type> | <term> | <method> | <type-parameter> | <parameter> | <meta> | <macro>
+     * <namespace>            ::= <name> '/'
+     * <type>                 ::= <name> '#'
+     * <term>                 ::= <name> '.'
+     * <meta>                 ::= <name> ':'
+     * <macro>                ::= <name> '!'
+     * <method>               ::= <name> '(' (<method-disambiguator>)? ').'
+     * <type-parameter>       ::= '[' <name> ']'
+     * <parameter>            ::= '(' <name> ')'
+     * <name>                 ::= <identifier>
+     * <method-disambiguator> ::= <simple-identifier>
+     * <identifier>           ::= <simple-identifier> | <escaped-identifier>
+     * <simple-identifier>    ::= (<identifier-character>)+
+     * <identifier-character> ::= '_' | '+' | '-' | '$' | ASCII letter or digit
+     * <escaped-identifier>   ::= '`' (<escaped-character>)+ '`', must contain at least one non-<identifier-character>
+     * <escaped-characters>   ::= any UTF-8, escape backticks with double backtick.
+     * <local-id>             ::= <simple-identifier>
+     * ```
+     * The list of descriptors for a symbol should together form a fully
+     * qualified name for the symbol. That is, it should serve as a unique
+     * identifier across the package. Typically, it will include one descriptor
+     * for every node in the AST (along the ancestry path) between the root of
+     * the file and the node corresponding to the symbol.
+     * Local symbols MUST only be used for entities which are local to a Document,
+     * and cannot be accessed from outside the Document.
+     * 
+ * + * Protobuf type {@code scip.Symbol} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Symbol) + scip.Scip.SymbolOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Symbol_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Symbol.class, scip.Scip.Symbol.Builder.class); + } + + // Construct using scip.Scip.Symbol.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getDescriptorsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + scheme_ = ""; + + if (packageBuilder_ == null) { + package_ = null; + } else { + package_ = null; + packageBuilder_ = null; + } + if (descriptorsBuilder_ == null) { + descriptors_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + descriptorsBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + public scip.Scip.Symbol getDefaultInstanceForType() { + return scip.Scip.Symbol.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Symbol build() { + scip.Scip.Symbol result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Symbol buildPartial() { + scip.Scip.Symbol result = new scip.Scip.Symbol(this); + int from_bitField0_ = bitField0_; + result.scheme_ = scheme_; + if (packageBuilder_ == null) { + result.package_ = package_; + } else { + result.package_ = packageBuilder_.build(); + } + if (descriptorsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + descriptors_ = java.util.Collections.unmodifiableList(descriptors_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.descriptors_ = descriptors_; + } else { + result.descriptors_ = descriptorsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Symbol) { + return mergeFrom((scip.Scip.Symbol)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Symbol other) { + if (other == scip.Scip.Symbol.getDefaultInstance()) return this; + if (!other.getScheme().isEmpty()) { + scheme_ = other.scheme_; + onChanged(); + } + if (other.hasPackage()) { + mergePackage(other.getPackage()); + } + if (descriptorsBuilder_ == null) { + if (!other.descriptors_.isEmpty()) { + if (descriptors_.isEmpty()) { + descriptors_ = other.descriptors_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDescriptorsIsMutable(); + descriptors_.addAll(other.descriptors_); + } + onChanged(); + } + } else { + if (!other.descriptors_.isEmpty()) { + if (descriptorsBuilder_.isEmpty()) { + descriptorsBuilder_.dispose(); + descriptorsBuilder_ = null; + descriptors_ = other.descriptors_; + bitField0_ = (bitField0_ & ~0x00000001); + descriptorsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDescriptorsFieldBuilder() : null; + } else { + descriptorsBuilder_.addAllMessages(other.descriptors_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Symbol parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Symbol) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object scheme_ = ""; + /** + * string scheme = 1; + * @return The scheme. + */ + public java.lang.String getScheme() { + java.lang.Object ref = scheme_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + scheme_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string scheme = 1; + * @return The bytes for scheme. + */ + public com.google.protobuf.ByteString + getSchemeBytes() { + java.lang.Object ref = scheme_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + scheme_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string scheme = 1; + * @param value The scheme to set. + * @return This builder for chaining. + */ + public Builder setScheme( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + scheme_ = value; + onChanged(); + return this; + } + /** + * string scheme = 1; + * @return This builder for chaining. + */ + public Builder clearScheme() { + + scheme_ = getDefaultInstance().getScheme(); + onChanged(); + return this; + } + /** + * string scheme = 1; + * @param value The bytes for scheme to set. + * @return This builder for chaining. + */ + public Builder setSchemeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + scheme_ = value; + onChanged(); + return this; + } + + private scip.Scip.Package package_; + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Package, scip.Scip.Package.Builder, scip.Scip.PackageOrBuilder> packageBuilder_; + /** + * .scip.Package package = 2; + * @return Whether the package field is set. + */ + public boolean hasPackage() { + return packageBuilder_ != null || package_ != null; + } + /** + * .scip.Package package = 2; + * @return The package. + */ + public scip.Scip.Package getPackage() { + if (packageBuilder_ == null) { + return package_ == null ? scip.Scip.Package.getDefaultInstance() : package_; + } else { + return packageBuilder_.getMessage(); + } + } + /** + * .scip.Package package = 2; + */ + public Builder setPackage(scip.Scip.Package value) { + if (packageBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + package_ = value; + onChanged(); + } else { + packageBuilder_.setMessage(value); + } + + return this; + } + /** + * .scip.Package package = 2; + */ + public Builder setPackage( + scip.Scip.Package.Builder builderForValue) { + if (packageBuilder_ == null) { + package_ = builderForValue.build(); + onChanged(); + } else { + packageBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .scip.Package package = 2; + */ + public Builder mergePackage(scip.Scip.Package value) { + if (packageBuilder_ == null) { + if (package_ != null) { + package_ = + scip.Scip.Package.newBuilder(package_).mergeFrom(value).buildPartial(); + } else { + package_ = value; + } + onChanged(); + } else { + packageBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .scip.Package package = 2; + */ + public Builder clearPackage() { + if (packageBuilder_ == null) { + package_ = null; + onChanged(); + } else { + package_ = null; + packageBuilder_ = null; + } + + return this; + } + /** + * .scip.Package package = 2; + */ + public scip.Scip.Package.Builder getPackageBuilder() { + + onChanged(); + return getPackageFieldBuilder().getBuilder(); + } + /** + * .scip.Package package = 2; + */ + public scip.Scip.PackageOrBuilder getPackageOrBuilder() { + if (packageBuilder_ != null) { + return packageBuilder_.getMessageOrBuilder(); + } else { + return package_ == null ? + scip.Scip.Package.getDefaultInstance() : package_; + } + } + /** + * .scip.Package package = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Package, scip.Scip.Package.Builder, scip.Scip.PackageOrBuilder> + getPackageFieldBuilder() { + if (packageBuilder_ == null) { + packageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Package, scip.Scip.Package.Builder, scip.Scip.PackageOrBuilder>( + getPackage(), + getParentForChildren(), + isClean()); + package_ = null; + } + return packageBuilder_; + } + + private java.util.List descriptors_ = + java.util.Collections.emptyList(); + private void ensureDescriptorsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + descriptors_ = new java.util.ArrayList(descriptors_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Descriptor, scip.Scip.Descriptor.Builder, scip.Scip.DescriptorOrBuilder> descriptorsBuilder_; + + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public java.util.List getDescriptorsList() { + if (descriptorsBuilder_ == null) { + return java.util.Collections.unmodifiableList(descriptors_); + } else { + return descriptorsBuilder_.getMessageList(); + } + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public int getDescriptorsCount() { + if (descriptorsBuilder_ == null) { + return descriptors_.size(); + } else { + return descriptorsBuilder_.getCount(); + } + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public scip.Scip.Descriptor getDescriptors(int index) { + if (descriptorsBuilder_ == null) { + return descriptors_.get(index); + } else { + return descriptorsBuilder_.getMessage(index); + } + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder setDescriptors( + int index, scip.Scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.set(index, value); + onChanged(); + } else { + descriptorsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder setDescriptors( + int index, scip.Scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.set(index, builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder addDescriptors(scip.Scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.add(value); + onChanged(); + } else { + descriptorsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder addDescriptors( + int index, scip.Scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.add(index, value); + onChanged(); + } else { + descriptorsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder addDescriptors( + scip.Scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.add(builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder addDescriptors( + int index, scip.Scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.add(index, builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder addAllDescriptors( + java.lang.Iterable values) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, descriptors_); + onChanged(); + } else { + descriptorsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder clearDescriptors() { + if (descriptorsBuilder_ == null) { + descriptors_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + descriptorsBuilder_.clear(); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public Builder removeDescriptors(int index) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.remove(index); + onChanged(); + } else { + descriptorsBuilder_.remove(index); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public scip.Scip.Descriptor.Builder getDescriptorsBuilder( + int index) { + return getDescriptorsFieldBuilder().getBuilder(index); + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public scip.Scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index) { + if (descriptorsBuilder_ == null) { + return descriptors_.get(index); } else { + return descriptorsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public java.util.List + getDescriptorsOrBuilderList() { + if (descriptorsBuilder_ != null) { + return descriptorsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(descriptors_); + } + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public scip.Scip.Descriptor.Builder addDescriptorsBuilder() { + return getDescriptorsFieldBuilder().addBuilder( + scip.Scip.Descriptor.getDefaultInstance()); + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public scip.Scip.Descriptor.Builder addDescriptorsBuilder( + int index) { + return getDescriptorsFieldBuilder().addBuilder( + index, scip.Scip.Descriptor.getDefaultInstance()); + } + /** + * repeated .scip.Descriptor descriptors = 3; + */ + public java.util.List + getDescriptorsBuilderList() { + return getDescriptorsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Descriptor, scip.Scip.Descriptor.Builder, scip.Scip.DescriptorOrBuilder> + getDescriptorsFieldBuilder() { + if (descriptorsBuilder_ == null) { + descriptorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Descriptor, scip.Scip.Descriptor.Builder, scip.Scip.DescriptorOrBuilder>( + descriptors_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + descriptors_ = null; + } + return descriptorsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Symbol) + } + + // @@protoc_insertion_point(class_scope:scip.Symbol) + private static final scip.Scip.Symbol DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Symbol(); + } + + public static scip.Scip.Symbol getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Symbol parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Symbol(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Symbol getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface PackageOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Package) + com.google.protobuf.MessageOrBuilder { + + /** + * string manager = 1; + * @return The manager. + */ + java.lang.String getManager(); + /** + * string manager = 1; + * @return The bytes for manager. + */ + com.google.protobuf.ByteString + getManagerBytes(); + + /** + * string name = 2; + * @return The name. + */ + java.lang.String getName(); + /** + * string name = 2; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * string version = 3; + * @return The version. + */ + java.lang.String getVersion(); + /** + * string version = 3; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); + } + /** + *
+   * Unit of packaging and distribution.
+   * NOTE: This corresponds to a module in Go and JVM languages.
+   * 
+ * + * Protobuf type {@code scip.Package} + */ + public static final class Package extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Package) + PackageOrBuilder { + private static final long serialVersionUID = 0L; + // Use Package.newBuilder() to construct. + private Package(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Package() { + manager_ = ""; + name_ = ""; + version_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Package(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Package( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + manager_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + version_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Package_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Package.class, scip.Scip.Package.Builder.class); + } + + public static final int MANAGER_FIELD_NUMBER = 1; + private volatile java.lang.Object manager_; + /** + * string manager = 1; + * @return The manager. + */ + @java.lang.Override + public java.lang.String getManager() { + java.lang.Object ref = manager_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + manager_ = s; + return s; + } + } + /** + * string manager = 1; + * @return The bytes for manager. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getManagerBytes() { + java.lang.Object ref = manager_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + manager_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object name_; + /** + * string name = 2; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * string name = 2; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 3; + private volatile java.lang.Object version_; + /** + * string version = 3; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } + } + /** + * string version = 3; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getManagerBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, manager_); + } + if (!getNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); + } + if (!getVersionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, version_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getManagerBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, manager_); + } + if (!getNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); + } + if (!getVersionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, version_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Package)) { + return super.equals(obj); + } + scip.Scip.Package other = (scip.Scip.Package) obj; + + if (!getManager() + .equals(other.getManager())) return false; + if (!getName() + .equals(other.getName())) return false; + if (!getVersion() + .equals(other.getVersion())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + MANAGER_FIELD_NUMBER; + hash = (53 * hash) + getManager().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Package parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Package parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Package parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Package parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Package parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Package parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Package parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Package parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Package parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Package parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Package parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Package parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Package prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Unit of packaging and distribution.
+     * NOTE: This corresponds to a module in Go and JVM languages.
+     * 
+ * + * Protobuf type {@code scip.Package} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Package) + scip.Scip.PackageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Package_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Package.class, scip.Scip.Package.Builder.class); + } + + // Construct using scip.Scip.Package.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + manager_ = ""; + + name_ = ""; + + version_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + public scip.Scip.Package getDefaultInstanceForType() { + return scip.Scip.Package.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Package build() { + scip.Scip.Package result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Package buildPartial() { + scip.Scip.Package result = new scip.Scip.Package(this); + result.manager_ = manager_; + result.name_ = name_; + result.version_ = version_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Package) { + return mergeFrom((scip.Scip.Package)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Package other) { + if (other == scip.Scip.Package.getDefaultInstance()) return this; + if (!other.getManager().isEmpty()) { + manager_ = other.manager_; + onChanged(); + } + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + if (!other.getVersion().isEmpty()) { + version_ = other.version_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Package parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Package) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object manager_ = ""; + /** + * string manager = 1; + * @return The manager. + */ + public java.lang.String getManager() { + java.lang.Object ref = manager_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + manager_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string manager = 1; + * @return The bytes for manager. + */ + public com.google.protobuf.ByteString + getManagerBytes() { + java.lang.Object ref = manager_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + manager_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string manager = 1; + * @param value The manager to set. + * @return This builder for chaining. + */ + public Builder setManager( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + manager_ = value; + onChanged(); + return this; + } + /** + * string manager = 1; + * @return This builder for chaining. + */ + public Builder clearManager() { + + manager_ = getDefaultInstance().getManager(); + onChanged(); + return this; + } + /** + * string manager = 1; + * @param value The bytes for manager to set. + * @return This builder for chaining. + */ + public Builder setManagerBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + manager_ = value; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + * string name = 2; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string name = 2; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string name = 2; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * string name = 2; + * @return This builder for chaining. + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * string name = 2; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private java.lang.Object version_ = ""; + /** + * string version = 3; + * @return The version. + */ + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string version = 3; + * @return The bytes for version. + */ + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string version = 3; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + version_ = value; + onChanged(); + return this; + } + /** + * string version = 3; + * @return This builder for chaining. + */ + public Builder clearVersion() { + + version_ = getDefaultInstance().getVersion(); + onChanged(); + return this; + } + /** + * string version = 3; + * @param value The bytes for version to set. + * @return This builder for chaining. + */ + public Builder setVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + version_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Package) + } + + // @@protoc_insertion_point(class_scope:scip.Package) + private static final scip.Scip.Package DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Package(); + } + + public static scip.Scip.Package getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Package parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Package(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Package getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DescriptorOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Descriptor) + com.google.protobuf.MessageOrBuilder { + + /** + * string name = 1; + * @return The name. + */ + java.lang.String getName(); + /** + * string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * string disambiguator = 2; + * @return The disambiguator. + */ + java.lang.String getDisambiguator(); + /** + * string disambiguator = 2; + * @return The bytes for disambiguator. + */ + com.google.protobuf.ByteString + getDisambiguatorBytes(); + + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The enum numeric value on the wire for suffix. + */ + int getSuffixValue(); + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The suffix. + */ + scip.Scip.Descriptor.Suffix getSuffix(); + } + /** + * Protobuf type {@code scip.Descriptor} + */ + public static final class Descriptor extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Descriptor) + DescriptorOrBuilder { + private static final long serialVersionUID = 0L; + // Use Descriptor.newBuilder() to construct. + private Descriptor(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Descriptor() { + name_ = ""; + disambiguator_ = ""; + suffix_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Descriptor(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Descriptor( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + disambiguator_ = s; + break; + } + case 24: { + int rawValue = input.readEnum(); + + suffix_ = rawValue; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Descriptor_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Descriptor.class, scip.Scip.Descriptor.Builder.class); + } + + /** + * Protobuf enum {@code scip.Descriptor.Suffix} + */ + public enum Suffix + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSuffix = 0; + */ + UnspecifiedSuffix(0, 0), + /** + *
+       * Unit of code abstraction and/or namespacing.
+       * NOTE: This corresponds to a package in Go and JVM languages.
+       * 
+ * + * Namespace = 1; + */ + Namespace(1, 1), + /** + * Type = 2; + */ + Type(3, 2), + /** + * Term = 3; + */ + Term(4, 3), + /** + * Method = 4; + */ + Method(5, 4), + /** + * TypeParameter = 5; + */ + TypeParameter(6, 5), + /** + * Parameter = 6; + */ + Parameter(7, 6), + /** + *
+       * Can be used for any purpose.
+       * 
+ * + * Meta = 7; + */ + Meta(8, 7), + /** + * Local = 8; + */ + Local(9, 8), + /** + * Macro = 9; + */ + Macro(10, 9), + UNRECOGNIZED(-1, -1), + ; + + /** + *
+       * Use Namespace instead.
+       * 
+ * + * Package = 1 [deprecated = true]; + */ + public static final Suffix Package = Namespace; + /** + * UnspecifiedSuffix = 0; + */ + public static final int UnspecifiedSuffix_VALUE = 0; + /** + *
+       * Unit of code abstraction and/or namespacing.
+       * NOTE: This corresponds to a package in Go and JVM languages.
+       * 
+ * + * Namespace = 1; + */ + public static final int Namespace_VALUE = 1; + /** + *
+       * Use Namespace instead.
+       * 
+ * + * Package = 1 [deprecated = true]; + */ + @java.lang.Deprecated public static final int Package_VALUE = 1; + /** + * Type = 2; + */ + public static final int Type_VALUE = 2; + /** + * Term = 3; + */ + public static final int Term_VALUE = 3; + /** + * Method = 4; + */ + public static final int Method_VALUE = 4; + /** + * TypeParameter = 5; + */ + public static final int TypeParameter_VALUE = 5; + /** + * Parameter = 6; + */ + public static final int Parameter_VALUE = 6; + /** + *
+       * Can be used for any purpose.
+       * 
+ * + * Meta = 7; + */ + public static final int Meta_VALUE = 7; + /** + * Local = 8; + */ + public static final int Local_VALUE = 8; + /** + * Macro = 9; + */ + public static final int Macro_VALUE = 9; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Suffix valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Suffix forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSuffix; + case 1: return Namespace; + case 2: return Type; + case 3: return Term; + case 4: return Method; + case 5: return TypeParameter; + case 6: return Parameter; + case 7: return Meta; + case 8: return Local; + case 9: return Macro; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Suffix> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Suffix findValueByNumber(int number) { + return Suffix.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.Descriptor.getDescriptor().getEnumTypes().get(0); + } + + private static final Suffix[] VALUES = getStaticValuesArray(); + private static Suffix[] getStaticValuesArray() { + return new Suffix[] { + UnspecifiedSuffix, Namespace, Package, Type, Term, Method, TypeParameter, Parameter, Meta, Local, Macro, + }; + } + public static Suffix valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private Suffix(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Descriptor.Suffix) + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * string name = 1; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * string name = 1; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DISAMBIGUATOR_FIELD_NUMBER = 2; + private volatile java.lang.Object disambiguator_; + /** + * string disambiguator = 2; + * @return The disambiguator. + */ + @java.lang.Override + public java.lang.String getDisambiguator() { + java.lang.Object ref = disambiguator_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + disambiguator_ = s; + return s; + } + } + /** + * string disambiguator = 2; + * @return The bytes for disambiguator. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDisambiguatorBytes() { + java.lang.Object ref = disambiguator_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + disambiguator_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SUFFIX_FIELD_NUMBER = 3; + private int suffix_; + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The enum numeric value on the wire for suffix. + */ + @java.lang.Override public int getSuffixValue() { + return suffix_; + } + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The suffix. + */ + @java.lang.Override public scip.Scip.Descriptor.Suffix getSuffix() { + @SuppressWarnings("deprecation") + scip.Scip.Descriptor.Suffix result = scip.Scip.Descriptor.Suffix.valueOf(suffix_); + return result == null ? scip.Scip.Descriptor.Suffix.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + if (!getDisambiguatorBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, disambiguator_); + } + if (suffix_ != scip.Scip.Descriptor.Suffix.UnspecifiedSuffix.getNumber()) { + output.writeEnum(3, suffix_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (!getDisambiguatorBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, disambiguator_); + } + if (suffix_ != scip.Scip.Descriptor.Suffix.UnspecifiedSuffix.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, suffix_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Descriptor)) { + return super.equals(obj); + } + scip.Scip.Descriptor other = (scip.Scip.Descriptor) obj; + + if (!getName() + .equals(other.getName())) return false; + if (!getDisambiguator() + .equals(other.getDisambiguator())) return false; + if (suffix_ != other.suffix_) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + DISAMBIGUATOR_FIELD_NUMBER; + hash = (53 * hash) + getDisambiguator().hashCode(); + hash = (37 * hash) + SUFFIX_FIELD_NUMBER; + hash = (53 * hash) + suffix_; + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Descriptor parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Descriptor parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Descriptor parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Descriptor parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Descriptor parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Descriptor parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Descriptor parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Descriptor parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Descriptor parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Descriptor parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Descriptor parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Descriptor parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Descriptor prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Descriptor} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Descriptor) + scip.Scip.DescriptorOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Descriptor_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Descriptor.class, scip.Scip.Descriptor.Builder.class); + } + + // Construct using scip.Scip.Descriptor.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + name_ = ""; + + disambiguator_ = ""; + + suffix_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + public scip.Scip.Descriptor getDefaultInstanceForType() { + return scip.Scip.Descriptor.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Descriptor build() { + scip.Scip.Descriptor result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Descriptor buildPartial() { + scip.Scip.Descriptor result = new scip.Scip.Descriptor(this); + result.name_ = name_; + result.disambiguator_ = disambiguator_; + result.suffix_ = suffix_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Descriptor) { + return mergeFrom((scip.Scip.Descriptor)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Descriptor other) { + if (other == scip.Scip.Descriptor.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + if (!other.getDisambiguator().isEmpty()) { + disambiguator_ = other.disambiguator_; + onChanged(); + } + if (other.suffix_ != 0) { + setSuffixValue(other.getSuffixValue()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Descriptor parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Descriptor) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object name_ = ""; + /** + * string name = 1; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string name = 1; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string name = 1; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * string name = 1; + * @return This builder for chaining. + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * string name = 1; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private java.lang.Object disambiguator_ = ""; + /** + * string disambiguator = 2; + * @return The disambiguator. + */ + public java.lang.String getDisambiguator() { + java.lang.Object ref = disambiguator_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + disambiguator_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string disambiguator = 2; + * @return The bytes for disambiguator. + */ + public com.google.protobuf.ByteString + getDisambiguatorBytes() { + java.lang.Object ref = disambiguator_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + disambiguator_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string disambiguator = 2; + * @param value The disambiguator to set. + * @return This builder for chaining. + */ + public Builder setDisambiguator( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + disambiguator_ = value; + onChanged(); + return this; + } + /** + * string disambiguator = 2; + * @return This builder for chaining. + */ + public Builder clearDisambiguator() { + + disambiguator_ = getDefaultInstance().getDisambiguator(); + onChanged(); + return this; + } + /** + * string disambiguator = 2; + * @param value The bytes for disambiguator to set. + * @return This builder for chaining. + */ + public Builder setDisambiguatorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + disambiguator_ = value; + onChanged(); + return this; + } + + private int suffix_ = 0; + /** + *
+       * NOTE: If you add new fields here, make sure to update the prepareSlot()
+       * function responsible for parsing symbols.
+       * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The enum numeric value on the wire for suffix. + */ + @java.lang.Override public int getSuffixValue() { + return suffix_; + } + /** + *
+       * NOTE: If you add new fields here, make sure to update the prepareSlot()
+       * function responsible for parsing symbols.
+       * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @param value The enum numeric value on the wire for suffix to set. + * @return This builder for chaining. + */ + public Builder setSuffixValue(int value) { + + suffix_ = value; + onChanged(); + return this; + } + /** + *
+       * NOTE: If you add new fields here, make sure to update the prepareSlot()
+       * function responsible for parsing symbols.
+       * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return The suffix. + */ + @java.lang.Override + public scip.Scip.Descriptor.Suffix getSuffix() { + @SuppressWarnings("deprecation") + scip.Scip.Descriptor.Suffix result = scip.Scip.Descriptor.Suffix.valueOf(suffix_); + return result == null ? scip.Scip.Descriptor.Suffix.UNRECOGNIZED : result; + } + /** + *
+       * NOTE: If you add new fields here, make sure to update the prepareSlot()
+       * function responsible for parsing symbols.
+       * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @param value The suffix to set. + * @return This builder for chaining. + */ + public Builder setSuffix(scip.Scip.Descriptor.Suffix value) { + if (value == null) { + throw new NullPointerException(); + } + + suffix_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * NOTE: If you add new fields here, make sure to update the prepareSlot()
+       * function responsible for parsing symbols.
+       * 
+ * + * .scip.Descriptor.Suffix suffix = 3; + * @return This builder for chaining. + */ + public Builder clearSuffix() { + + suffix_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Descriptor) + } + + // @@protoc_insertion_point(class_scope:scip.Descriptor) + private static final scip.Scip.Descriptor DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Descriptor(); + } + + public static scip.Scip.Descriptor getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Descriptor parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Descriptor(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Descriptor getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface SymbolInformationOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.SymbolInformation) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @return A list containing the documentation. + */ + java.util.List + getDocumentationList(); + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @return The count of documentation. + */ + int getDocumentationCount(); + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + java.lang.String getDocumentation(int index); + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + com.google.protobuf.ByteString + getDocumentationBytes(int index); + + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + java.util.List + getRelationshipsList(); + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + scip.Scip.Relationship getRelationships(int index); + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + int getRelationshipsCount(); + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + java.util.List + getRelationshipsOrBuilderList(); + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + scip.Scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index); + + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The enum numeric value on the wire for kind. + */ + int getKindValue(); + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The kind. + */ + scip.Scip.SymbolInformation.Kind getKind(); + + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     *   displayed to the user.
+     * 
+ * + * string display_name = 6; + * @return The displayName. + */ + java.lang.String getDisplayName(); + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     *   displayed to the user.
+     * 
+ * + * string display_name = 6; + * @return The bytes for displayName. + */ + com.google.protobuf.ByteString + getDisplayNameBytes(); + + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + * @return Whether the signatureDocumentation field is set. + */ + boolean hasSignatureDocumentation(); + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + * @return The signatureDocumentation. + */ + scip.Scip.Document getSignatureDocumentation(); + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + */ + scip.Scip.DocumentOrBuilder getSignatureDocumentationOrBuilder(); + + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8; + * @return The enclosingSymbol. + */ + java.lang.String getEnclosingSymbol(); + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8; + * @return The bytes for enclosingSymbol. + */ + com.google.protobuf.ByteString + getEnclosingSymbolBytes(); + } + /** + *
+   * SymbolInformation defines metadata about a symbol, such as the symbol's
+   * docstring or what package it's defined it.
+   * 
+ * + * Protobuf type {@code scip.SymbolInformation} + */ + public static final class SymbolInformation extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.SymbolInformation) + SymbolInformationOrBuilder { + private static final long serialVersionUID = 0L; + // Use SymbolInformation.newBuilder() to construct. + private SymbolInformation(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SymbolInformation() { + symbol_ = ""; + documentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + relationships_ = java.util.Collections.emptyList(); + kind_ = 0; + displayName_ = ""; + enclosingSymbol_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SymbolInformation(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SymbolInformation( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + symbol_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + documentation_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + documentation_.add(s); + break; + } + case 34: { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + relationships_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + relationships_.add( + input.readMessage(scip.Scip.Relationship.parser(), extensionRegistry)); + break; + } + case 40: { + int rawValue = input.readEnum(); + + kind_ = rawValue; + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + displayName_ = s; + break; + } + case 58: { + scip.Scip.Document.Builder subBuilder = null; + if (signatureDocumentation_ != null) { + subBuilder = signatureDocumentation_.toBuilder(); + } + signatureDocumentation_ = input.readMessage(scip.Scip.Document.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(signatureDocumentation_); + signatureDocumentation_ = subBuilder.buildPartial(); + } + + break; + } + case 66: { + java.lang.String s = input.readStringRequireUtf8(); + + enclosingSymbol_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + documentation_ = documentation_.getUnmodifiableView(); + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + relationships_ = java.util.Collections.unmodifiableList(relationships_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_SymbolInformation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.SymbolInformation.class, scip.Scip.SymbolInformation.Builder.class); + } + + /** + *
+     * (optional) Kind represents the fine-grained category of a symbol, suitable for presenting
+     * information about the symbol's meaning in the language.
+     * For example:
+     * - A Java method would have the kind `Method` while a Go function would
+     *   have the kind `Function`, even if the symbols for these use the same
+     *   syntax for the descriptor `SymbolDescriptor.Suffix.Method`.
+     * - A Go struct has the symbol kind `Struct` while a Java class has
+     *   the symbol kind `Class` even if they both have the same descriptor:
+     *   `SymbolDescriptor.Suffix.Type`.
+     * Since Kind is more fine-grained than Suffix:
+     * - If two symbols have the same Kind, they should share the same Suffix.
+     * - If two symbols have different Suffixes, they should have different Kinds.
+     * 
+ * + * Protobuf enum {@code scip.SymbolInformation.Kind} + */ + public enum Kind + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedKind = 0; + */ + UnspecifiedKind(0), + /** + *
+       * A method which may or may not have a body. For Java, Kotlin etc.
+       * 
+ * + * AbstractMethod = 66; + */ + AbstractMethod(66), + /** + *
+       * For Ruby's attr_accessor
+       * 
+ * + * Accessor = 72; + */ + Accessor(72), + /** + * Array = 1; + */ + Array(1), + /** + *
+       * For Alloy
+       * 
+ * + * Assertion = 2; + */ + Assertion(2), + /** + * AssociatedType = 3; + */ + AssociatedType(3), + /** + *
+       * For C++
+       * 
+ * + * Attribute = 4; + */ + Attribute(4), + /** + *
+       * For Lean
+       * 
+ * + * Axiom = 5; + */ + Axiom(5), + /** + * Boolean = 6; + */ + Boolean(6), + /** + * Class = 7; + */ + Class(7), + /** + *
+       * For C++
+       * 
+ * + * Concept = 86; + */ + Concept(86), + /** + * Constant = 8; + */ + Constant(8), + /** + * Constructor = 9; + */ + Constructor(9), + /** + *
+       * For Solidity
+       * 
+ * + * Contract = 62; + */ + Contract(62), + /** + *
+       * For Haskell
+       * 
+ * + * DataFamily = 10; + */ + DataFamily(10), + /** + *
+       * For C# and F#
+       * 
+ * + * Delegate = 73; + */ + Delegate(73), + /** + * Enum = 11; + */ + Enum(11), + /** + * EnumMember = 12; + */ + EnumMember(12), + /** + * Error = 63; + */ + Error(63), + /** + * Event = 13; + */ + Event(13), + /** + *
+       * For Dart
+       * 
+ * + * Extension = 84; + */ + Extension(84), + /** + *
+       * For Alloy
+       * 
+ * + * Fact = 14; + */ + Fact(14), + /** + * Field = 15; + */ + Field(15), + /** + * File = 16; + */ + File(16), + /** + * Function = 17; + */ + Function(17), + /** + *
+       * For 'get' in Swift, 'attr_reader' in Ruby
+       * 
+ * + * Getter = 18; + */ + Getter(18), + /** + *
+       * For Raku
+       * 
+ * + * Grammar = 19; + */ + Grammar(19), + /** + *
+       * For Purescript and Lean
+       * 
+ * + * Instance = 20; + */ + Instance(20), + /** + * Interface = 21; + */ + Interface(21), + /** + * Key = 22; + */ + Key(22), + /** + *
+       * For Racket
+       * 
+ * + * Lang = 23; + */ + Lang(23), + /** + *
+       * For Lean
+       * 
+ * + * Lemma = 24; + */ + Lemma(24), + /** + *
+       * For solidity
+       * 
+ * + * Library = 64; + */ + Library(64), + /** + * Macro = 25; + */ + Macro(25), + /** + * Method = 26; + */ + Method(26), + /** + *
+       * For Ruby
+       * 
+ * + * MethodAlias = 74; + */ + MethodAlias(74), + /** + *
+       * Analogous to 'ThisParameter' and 'SelfParameter', but for languages
+       * like Go where the receiver doesn't have a conventional name.
+       * 
+ * + * MethodReceiver = 27; + */ + MethodReceiver(27), + /** + *
+       * Analogous to 'AbstractMethod', for Go.
+       * 
+ * + * MethodSpecification = 67; + */ + MethodSpecification(67), + /** + *
+       * For Protobuf
+       * 
+ * + * Message = 28; + */ + Message(28), + /** + *
+       * For Dart
+       * 
+ * + * Mixin = 85; + */ + Mixin(85), + /** + *
+       * For Solidity
+       * 
+ * + * Modifier = 65; + */ + Modifier(65), + /** + * Module = 29; + */ + Module(29), + /** + * Namespace = 30; + */ + Namespace(30), + /** + * Null = 31; + */ + Null(31), + /** + * Number = 32; + */ + Number(32), + /** + * Object = 33; + */ + Object(33), + /** + * Operator = 34; + */ + Operator(34), + /** + * Package = 35; + */ + Package(35), + /** + * PackageObject = 36; + */ + PackageObject(36), + /** + * Parameter = 37; + */ + Parameter(37), + /** + * ParameterLabel = 38; + */ + ParameterLabel(38), + /** + *
+       * For Haskell's PatternSynonyms
+       * 
+ * + * Pattern = 39; + */ + Pattern(39), + /** + *
+       * For Alloy
+       * 
+ * + * Predicate = 40; + */ + Predicate(40), + /** + * Property = 41; + */ + Property(41), + /** + *
+       * Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C
+       * 
+ * + * Protocol = 42; + */ + Protocol(42), + /** + *
+       * Analogous to 'AbstractMethod', for Swift and Objective-C.
+       * 
+ * + * ProtocolMethod = 68; + */ + ProtocolMethod(68), + /** + *
+       * Analogous to 'AbstractMethod', for C++.
+       * 
+ * + * PureVirtualMethod = 69; + */ + PureVirtualMethod(69), + /** + *
+       * For Haskell
+       * 
+ * + * Quasiquoter = 43; + */ + Quasiquoter(43), + /** + *
+       * 'self' in Python, Rust, Swift etc.
+       * 
+ * + * SelfParameter = 44; + */ + SelfParameter(44), + /** + *
+       * For 'set' in Swift, 'attr_writer' in Ruby
+       * 
+ * + * Setter = 45; + */ + Setter(45), + /** + *
+       * For Alloy, analogous to 'Struct'.
+       * 
+ * + * Signature = 46; + */ + Signature(46), + /** + *
+       * For Ruby
+       * 
+ * + * SingletonClass = 75; + */ + SingletonClass(75), + /** + *
+       * Analogous to 'StaticMethod', for Ruby.
+       * 
+ * + * SingletonMethod = 76; + */ + SingletonMethod(76), + /** + *
+       * Analogous to 'StaticField', for C++
+       * 
+ * + * StaticDataMember = 77; + */ + StaticDataMember(77), + /** + *
+       * For C#
+       * 
+ * + * StaticEvent = 78; + */ + StaticEvent(78), + /** + *
+       * For C#
+       * 
+ * + * StaticField = 79; + */ + StaticField(79), + /** + *
+       * For Java, C#, C++ etc.
+       * 
+ * + * StaticMethod = 80; + */ + StaticMethod(80), + /** + *
+       * For C#, TypeScript etc.
+       * 
+ * + * StaticProperty = 81; + */ + StaticProperty(81), + /** + *
+       * For C, C++
+       * 
+ * + * StaticVariable = 82; + */ + StaticVariable(82), + /** + * String = 48; + */ + String(48), + /** + * Struct = 49; + */ + Struct(49), + /** + *
+       * For Swift
+       * 
+ * + * Subscript = 47; + */ + Subscript(47), + /** + *
+       * For Lean
+       * 
+ * + * Tactic = 50; + */ + Tactic(50), + /** + *
+       * For Lean
+       * 
+ * + * Theorem = 51; + */ + Theorem(51), + /** + *
+       * Method receiver for languages
+       * 'this' in JavaScript, C++, Java etc.
+       * 
+ * + * ThisParameter = 52; + */ + ThisParameter(52), + /** + *
+       * Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.
+       * 
+ * + * Trait = 53; + */ + Trait(53), + /** + *
+       * Analogous to 'AbstractMethod', for Rust, Scala etc.
+       * 
+ * + * TraitMethod = 70; + */ + TraitMethod(70), + /** + *
+       * Data type definition for languages like OCaml which use `type`
+       * rather than separate keywords like `struct` and `enum`.
+       * 
+ * + * Type = 54; + */ + Type(54), + /** + * TypeAlias = 55; + */ + TypeAlias(55), + /** + *
+       * Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.
+       * 
+ * + * TypeClass = 56; + */ + TypeClass(56), + /** + *
+       * Analogous to 'AbstractMethod', for Haskell, Purescript etc.
+       * 
+ * + * TypeClassMethod = 71; + */ + TypeClassMethod(71), + /** + *
+       * For Haskell
+       * 
+ * + * TypeFamily = 57; + */ + TypeFamily(57), + /** + * TypeParameter = 58; + */ + TypeParameter(58), + /** + *
+       * For C, C++, Capn Proto
+       * 
+ * + * Union = 59; + */ + Union(59), + /** + * Value = 60; + */ + Value(60), + /** + *
+       * Next = 87;
+       * Feel free to open a PR proposing new language-specific kinds.
+       * 
+ * + * Variable = 61; + */ + Variable(61), + UNRECOGNIZED(-1), + ; + + /** + * UnspecifiedKind = 0; + */ + public static final int UnspecifiedKind_VALUE = 0; + /** + *
+       * A method which may or may not have a body. For Java, Kotlin etc.
+       * 
+ * + * AbstractMethod = 66; + */ + public static final int AbstractMethod_VALUE = 66; + /** + *
+       * For Ruby's attr_accessor
+       * 
+ * + * Accessor = 72; + */ + public static final int Accessor_VALUE = 72; + /** + * Array = 1; + */ + public static final int Array_VALUE = 1; + /** + *
+       * For Alloy
+       * 
+ * + * Assertion = 2; + */ + public static final int Assertion_VALUE = 2; + /** + * AssociatedType = 3; + */ + public static final int AssociatedType_VALUE = 3; + /** + *
+       * For C++
+       * 
+ * + * Attribute = 4; + */ + public static final int Attribute_VALUE = 4; + /** + *
+       * For Lean
+       * 
+ * + * Axiom = 5; + */ + public static final int Axiom_VALUE = 5; + /** + * Boolean = 6; + */ + public static final int Boolean_VALUE = 6; + /** + * Class = 7; + */ + public static final int Class_VALUE = 7; + /** + *
+       * For C++
+       * 
+ * + * Concept = 86; + */ + public static final int Concept_VALUE = 86; + /** + * Constant = 8; + */ + public static final int Constant_VALUE = 8; + /** + * Constructor = 9; + */ + public static final int Constructor_VALUE = 9; + /** + *
+       * For Solidity
+       * 
+ * + * Contract = 62; + */ + public static final int Contract_VALUE = 62; + /** + *
+       * For Haskell
+       * 
+ * + * DataFamily = 10; + */ + public static final int DataFamily_VALUE = 10; + /** + *
+       * For C# and F#
+       * 
+ * + * Delegate = 73; + */ + public static final int Delegate_VALUE = 73; + /** + * Enum = 11; + */ + public static final int Enum_VALUE = 11; + /** + * EnumMember = 12; + */ + public static final int EnumMember_VALUE = 12; + /** + * Error = 63; + */ + public static final int Error_VALUE = 63; + /** + * Event = 13; + */ + public static final int Event_VALUE = 13; + /** + *
+       * For Dart
+       * 
+ * + * Extension = 84; + */ + public static final int Extension_VALUE = 84; + /** + *
+       * For Alloy
+       * 
+ * + * Fact = 14; + */ + public static final int Fact_VALUE = 14; + /** + * Field = 15; + */ + public static final int Field_VALUE = 15; + /** + * File = 16; + */ + public static final int File_VALUE = 16; + /** + * Function = 17; + */ + public static final int Function_VALUE = 17; + /** + *
+       * For 'get' in Swift, 'attr_reader' in Ruby
+       * 
+ * + * Getter = 18; + */ + public static final int Getter_VALUE = 18; + /** + *
+       * For Raku
+       * 
+ * + * Grammar = 19; + */ + public static final int Grammar_VALUE = 19; + /** + *
+       * For Purescript and Lean
+       * 
+ * + * Instance = 20; + */ + public static final int Instance_VALUE = 20; + /** + * Interface = 21; + */ + public static final int Interface_VALUE = 21; + /** + * Key = 22; + */ + public static final int Key_VALUE = 22; + /** + *
+       * For Racket
+       * 
+ * + * Lang = 23; + */ + public static final int Lang_VALUE = 23; + /** + *
+       * For Lean
+       * 
+ * + * Lemma = 24; + */ + public static final int Lemma_VALUE = 24; + /** + *
+       * For solidity
+       * 
+ * + * Library = 64; + */ + public static final int Library_VALUE = 64; + /** + * Macro = 25; + */ + public static final int Macro_VALUE = 25; + /** + * Method = 26; + */ + public static final int Method_VALUE = 26; + /** + *
+       * For Ruby
+       * 
+ * + * MethodAlias = 74; + */ + public static final int MethodAlias_VALUE = 74; + /** + *
+       * Analogous to 'ThisParameter' and 'SelfParameter', but for languages
+       * like Go where the receiver doesn't have a conventional name.
+       * 
+ * + * MethodReceiver = 27; + */ + public static final int MethodReceiver_VALUE = 27; + /** + *
+       * Analogous to 'AbstractMethod', for Go.
+       * 
+ * + * MethodSpecification = 67; + */ + public static final int MethodSpecification_VALUE = 67; + /** + *
+       * For Protobuf
+       * 
+ * + * Message = 28; + */ + public static final int Message_VALUE = 28; + /** + *
+       * For Dart
+       * 
+ * + * Mixin = 85; + */ + public static final int Mixin_VALUE = 85; + /** + *
+       * For Solidity
+       * 
+ * + * Modifier = 65; + */ + public static final int Modifier_VALUE = 65; + /** + * Module = 29; + */ + public static final int Module_VALUE = 29; + /** + * Namespace = 30; + */ + public static final int Namespace_VALUE = 30; + /** + * Null = 31; + */ + public static final int Null_VALUE = 31; + /** + * Number = 32; + */ + public static final int Number_VALUE = 32; + /** + * Object = 33; + */ + public static final int Object_VALUE = 33; + /** + * Operator = 34; + */ + public static final int Operator_VALUE = 34; + /** + * Package = 35; + */ + public static final int Package_VALUE = 35; + /** + * PackageObject = 36; + */ + public static final int PackageObject_VALUE = 36; + /** + * Parameter = 37; + */ + public static final int Parameter_VALUE = 37; + /** + * ParameterLabel = 38; + */ + public static final int ParameterLabel_VALUE = 38; + /** + *
+       * For Haskell's PatternSynonyms
+       * 
+ * + * Pattern = 39; + */ + public static final int Pattern_VALUE = 39; + /** + *
+       * For Alloy
+       * 
+ * + * Predicate = 40; + */ + public static final int Predicate_VALUE = 40; + /** + * Property = 41; + */ + public static final int Property_VALUE = 41; + /** + *
+       * Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C
+       * 
+ * + * Protocol = 42; + */ + public static final int Protocol_VALUE = 42; + /** + *
+       * Analogous to 'AbstractMethod', for Swift and Objective-C.
+       * 
+ * + * ProtocolMethod = 68; + */ + public static final int ProtocolMethod_VALUE = 68; + /** + *
+       * Analogous to 'AbstractMethod', for C++.
+       * 
+ * + * PureVirtualMethod = 69; + */ + public static final int PureVirtualMethod_VALUE = 69; + /** + *
+       * For Haskell
+       * 
+ * + * Quasiquoter = 43; + */ + public static final int Quasiquoter_VALUE = 43; + /** + *
+       * 'self' in Python, Rust, Swift etc.
+       * 
+ * + * SelfParameter = 44; + */ + public static final int SelfParameter_VALUE = 44; + /** + *
+       * For 'set' in Swift, 'attr_writer' in Ruby
+       * 
+ * + * Setter = 45; + */ + public static final int Setter_VALUE = 45; + /** + *
+       * For Alloy, analogous to 'Struct'.
+       * 
+ * + * Signature = 46; + */ + public static final int Signature_VALUE = 46; + /** + *
+       * For Ruby
+       * 
+ * + * SingletonClass = 75; + */ + public static final int SingletonClass_VALUE = 75; + /** + *
+       * Analogous to 'StaticMethod', for Ruby.
+       * 
+ * + * SingletonMethod = 76; + */ + public static final int SingletonMethod_VALUE = 76; + /** + *
+       * Analogous to 'StaticField', for C++
+       * 
+ * + * StaticDataMember = 77; + */ + public static final int StaticDataMember_VALUE = 77; + /** + *
+       * For C#
+       * 
+ * + * StaticEvent = 78; + */ + public static final int StaticEvent_VALUE = 78; + /** + *
+       * For C#
+       * 
+ * + * StaticField = 79; + */ + public static final int StaticField_VALUE = 79; + /** + *
+       * For Java, C#, C++ etc.
+       * 
+ * + * StaticMethod = 80; + */ + public static final int StaticMethod_VALUE = 80; + /** + *
+       * For C#, TypeScript etc.
+       * 
+ * + * StaticProperty = 81; + */ + public static final int StaticProperty_VALUE = 81; + /** + *
+       * For C, C++
+       * 
+ * + * StaticVariable = 82; + */ + public static final int StaticVariable_VALUE = 82; + /** + * String = 48; + */ + public static final int String_VALUE = 48; + /** + * Struct = 49; + */ + public static final int Struct_VALUE = 49; + /** + *
+       * For Swift
+       * 
+ * + * Subscript = 47; + */ + public static final int Subscript_VALUE = 47; + /** + *
+       * For Lean
+       * 
+ * + * Tactic = 50; + */ + public static final int Tactic_VALUE = 50; + /** + *
+       * For Lean
+       * 
+ * + * Theorem = 51; + */ + public static final int Theorem_VALUE = 51; + /** + *
+       * Method receiver for languages
+       * 'this' in JavaScript, C++, Java etc.
+       * 
+ * + * ThisParameter = 52; + */ + public static final int ThisParameter_VALUE = 52; + /** + *
+       * Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.
+       * 
+ * + * Trait = 53; + */ + public static final int Trait_VALUE = 53; + /** + *
+       * Analogous to 'AbstractMethod', for Rust, Scala etc.
+       * 
+ * + * TraitMethod = 70; + */ + public static final int TraitMethod_VALUE = 70; + /** + *
+       * Data type definition for languages like OCaml which use `type`
+       * rather than separate keywords like `struct` and `enum`.
+       * 
+ * + * Type = 54; + */ + public static final int Type_VALUE = 54; + /** + * TypeAlias = 55; + */ + public static final int TypeAlias_VALUE = 55; + /** + *
+       * Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.
+       * 
+ * + * TypeClass = 56; + */ + public static final int TypeClass_VALUE = 56; + /** + *
+       * Analogous to 'AbstractMethod', for Haskell, Purescript etc.
+       * 
+ * + * TypeClassMethod = 71; + */ + public static final int TypeClassMethod_VALUE = 71; + /** + *
+       * For Haskell
+       * 
+ * + * TypeFamily = 57; + */ + public static final int TypeFamily_VALUE = 57; + /** + * TypeParameter = 58; + */ + public static final int TypeParameter_VALUE = 58; + /** + *
+       * For C, C++, Capn Proto
+       * 
+ * + * Union = 59; + */ + public static final int Union_VALUE = 59; + /** + * Value = 60; + */ + public static final int Value_VALUE = 60; + /** + *
+       * Next = 87;
+       * Feel free to open a PR proposing new language-specific kinds.
+       * 
+ * + * Variable = 61; + */ + public static final int Variable_VALUE = 61; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Kind valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Kind forNumber(int value) { + switch (value) { + case 0: return UnspecifiedKind; + case 66: return AbstractMethod; + case 72: return Accessor; + case 1: return Array; + case 2: return Assertion; + case 3: return AssociatedType; + case 4: return Attribute; + case 5: return Axiom; + case 6: return Boolean; + case 7: return Class; + case 86: return Concept; + case 8: return Constant; + case 9: return Constructor; + case 62: return Contract; + case 10: return DataFamily; + case 73: return Delegate; + case 11: return Enum; + case 12: return EnumMember; + case 63: return Error; + case 13: return Event; + case 84: return Extension; + case 14: return Fact; + case 15: return Field; + case 16: return File; + case 17: return Function; + case 18: return Getter; + case 19: return Grammar; + case 20: return Instance; + case 21: return Interface; + case 22: return Key; + case 23: return Lang; + case 24: return Lemma; + case 64: return Library; + case 25: return Macro; + case 26: return Method; + case 74: return MethodAlias; + case 27: return MethodReceiver; + case 67: return MethodSpecification; + case 28: return Message; + case 85: return Mixin; + case 65: return Modifier; + case 29: return Module; + case 30: return Namespace; + case 31: return Null; + case 32: return Number; + case 33: return Object; + case 34: return Operator; + case 35: return Package; + case 36: return PackageObject; + case 37: return Parameter; + case 38: return ParameterLabel; + case 39: return Pattern; + case 40: return Predicate; + case 41: return Property; + case 42: return Protocol; + case 68: return ProtocolMethod; + case 69: return PureVirtualMethod; + case 43: return Quasiquoter; + case 44: return SelfParameter; + case 45: return Setter; + case 46: return Signature; + case 75: return SingletonClass; + case 76: return SingletonMethod; + case 77: return StaticDataMember; + case 78: return StaticEvent; + case 79: return StaticField; + case 80: return StaticMethod; + case 81: return StaticProperty; + case 82: return StaticVariable; + case 48: return String; + case 49: return Struct; + case 47: return Subscript; + case 50: return Tactic; + case 51: return Theorem; + case 52: return ThisParameter; + case 53: return Trait; + case 70: return TraitMethod; + case 54: return Type; + case 55: return TypeAlias; + case 56: return TypeClass; + case 71: return TypeClassMethod; + case 57: return TypeFamily; + case 58: return TypeParameter; + case 59: return Union; + case 60: return Value; + case 61: return Variable; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Kind> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Kind findValueByNumber(int number) { + return Kind.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return scip.Scip.SymbolInformation.getDescriptor().getEnumTypes().get(0); + } + + private static final Kind[] VALUES = values(); + + public static Kind valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Kind(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SymbolInformation.Kind) + } + + public static final int SYMBOL_FIELD_NUMBER = 1; + private volatile java.lang.Object symbol_; + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DOCUMENTATION_FIELD_NUMBER = 3; + private com.google.protobuf.LazyStringList documentation_; + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @return A list containing the documentation. + */ + public com.google.protobuf.ProtocolStringList + getDocumentationList() { + return documentation_; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @return The count of documentation. + */ + public int getDocumentationCount() { + return documentation_.size(); + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + public java.lang.String getDocumentation(int index) { + return documentation_.get(index); + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + public com.google.protobuf.ByteString + getDocumentationBytes(int index) { + return documentation_.getByteString(index); + } + + public static final int RELATIONSHIPS_FIELD_NUMBER = 4; + private java.util.List relationships_; + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + @java.lang.Override + public java.util.List getRelationshipsList() { + return relationships_; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + @java.lang.Override + public java.util.List + getRelationshipsOrBuilderList() { + return relationships_; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + @java.lang.Override + public int getRelationshipsCount() { + return relationships_.size(); + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + @java.lang.Override + public scip.Scip.Relationship getRelationships(int index) { + return relationships_.get(index); + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + @java.lang.Override + public scip.Scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index) { + return relationships_.get(index); + } + + public static final int KIND_FIELD_NUMBER = 5; + private int kind_; + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The enum numeric value on the wire for kind. + */ + @java.lang.Override public int getKindValue() { + return kind_; + } + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The kind. + */ + @java.lang.Override public scip.Scip.SymbolInformation.Kind getKind() { + @SuppressWarnings("deprecation") + scip.Scip.SymbolInformation.Kind result = scip.Scip.SymbolInformation.Kind.valueOf(kind_); + return result == null ? scip.Scip.SymbolInformation.Kind.UNRECOGNIZED : result; + } + + public static final int DISPLAY_NAME_FIELD_NUMBER = 6; + private volatile java.lang.Object displayName_; + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     *   displayed to the user.
+     * 
+ * + * string display_name = 6; + * @return The displayName. + */ + @java.lang.Override + public java.lang.String getDisplayName() { + java.lang.Object ref = displayName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + displayName_ = s; + return s; + } + } + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     *   displayed to the user.
+     * 
+ * + * string display_name = 6; + * @return The bytes for displayName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDisplayNameBytes() { + java.lang.Object ref = displayName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + displayName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SIGNATURE_DOCUMENTATION_FIELD_NUMBER = 7; + private scip.Scip.Document signatureDocumentation_; + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + * @return Whether the signatureDocumentation field is set. + */ + @java.lang.Override + public boolean hasSignatureDocumentation() { + return signatureDocumentation_ != null; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + * @return The signatureDocumentation. + */ + @java.lang.Override + public scip.Scip.Document getSignatureDocumentation() { + return signatureDocumentation_ == null ? scip.Scip.Document.getDefaultInstance() : signatureDocumentation_; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers this would have `Document.language = "java"` and `Document.text
+     * = "void add(int a, int b)". The `language` and `text` fields are required
+     * while other fields such as `Documentation.occurrences` can be optionally
+     * included to support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Document signature_documentation = 7; + */ + @java.lang.Override + public scip.Scip.DocumentOrBuilder getSignatureDocumentationOrBuilder() { + return getSignatureDocumentation(); + } + + public static final int ENCLOSING_SYMBOL_FIELD_NUMBER = 8; + private volatile java.lang.Object enclosingSymbol_; + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8; + * @return The enclosingSymbol. + */ + @java.lang.Override + public java.lang.String getEnclosingSymbol() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + enclosingSymbol_ = s; + return s; + } + } + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8; + * @return The bytes for enclosingSymbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEnclosingSymbolBytes() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + enclosingSymbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getSymbolBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, symbol_); + } + for (int i = 0; i < documentation_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, documentation_.getRaw(i)); + } + for (int i = 0; i < relationships_.size(); i++) { + output.writeMessage(4, relationships_.get(i)); + } + if (kind_ != scip.Scip.SymbolInformation.Kind.UnspecifiedKind.getNumber()) { + output.writeEnum(5, kind_); + } + if (!getDisplayNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, displayName_); + } + if (signatureDocumentation_ != null) { + output.writeMessage(7, getSignatureDocumentation()); + } + if (!getEnclosingSymbolBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, enclosingSymbol_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getSymbolBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, symbol_); + } + { + int dataSize = 0; + for (int i = 0; i < documentation_.size(); i++) { + dataSize += computeStringSizeNoTag(documentation_.getRaw(i)); + } + size += dataSize; + size += 1 * getDocumentationList().size(); + } + for (int i = 0; i < relationships_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, relationships_.get(i)); + } + if (kind_ != scip.Scip.SymbolInformation.Kind.UnspecifiedKind.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, kind_); + } + if (!getDisplayNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, displayName_); + } + if (signatureDocumentation_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getSignatureDocumentation()); + } + if (!getEnclosingSymbolBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, enclosingSymbol_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.SymbolInformation)) { + return super.equals(obj); + } + scip.Scip.SymbolInformation other = (scip.Scip.SymbolInformation) obj; + + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (!getDocumentationList() + .equals(other.getDocumentationList())) return false; + if (!getRelationshipsList() + .equals(other.getRelationshipsList())) return false; + if (kind_ != other.kind_) return false; + if (!getDisplayName() + .equals(other.getDisplayName())) return false; + if (hasSignatureDocumentation() != other.hasSignatureDocumentation()) return false; + if (hasSignatureDocumentation()) { + if (!getSignatureDocumentation() + .equals(other.getSignatureDocumentation())) return false; + } + if (!getEnclosingSymbol() + .equals(other.getEnclosingSymbol())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + if (getDocumentationCount() > 0) { + hash = (37 * hash) + DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getDocumentationList().hashCode(); + } + if (getRelationshipsCount() > 0) { + hash = (37 * hash) + RELATIONSHIPS_FIELD_NUMBER; + hash = (53 * hash) + getRelationshipsList().hashCode(); + } + hash = (37 * hash) + KIND_FIELD_NUMBER; + hash = (53 * hash) + kind_; + hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER; + hash = (53 * hash) + getDisplayName().hashCode(); + if (hasSignatureDocumentation()) { + hash = (37 * hash) + SIGNATURE_DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getSignatureDocumentation().hashCode(); + } + hash = (37 * hash) + ENCLOSING_SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getEnclosingSymbol().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.SymbolInformation parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.SymbolInformation parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.SymbolInformation parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.SymbolInformation parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.SymbolInformation parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.SymbolInformation parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.SymbolInformation parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.SymbolInformation parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.SymbolInformation parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.SymbolInformation parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.SymbolInformation parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.SymbolInformation parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.SymbolInformation prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * SymbolInformation defines metadata about a symbol, such as the symbol's
+     * docstring or what package it's defined it.
+     * 
+ * + * Protobuf type {@code scip.SymbolInformation} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.SymbolInformation) + scip.Scip.SymbolInformationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_SymbolInformation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.SymbolInformation.class, scip.Scip.SymbolInformation.Builder.class); + } + + // Construct using scip.Scip.SymbolInformation.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getRelationshipsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + symbol_ = ""; + + documentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + if (relationshipsBuilder_ == null) { + relationships_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + relationshipsBuilder_.clear(); + } + kind_ = 0; + + displayName_ = ""; + + if (signatureDocumentationBuilder_ == null) { + signatureDocumentation_ = null; + } else { + signatureDocumentation_ = null; + signatureDocumentationBuilder_ = null; + } + enclosingSymbol_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + public scip.Scip.SymbolInformation getDefaultInstanceForType() { + return scip.Scip.SymbolInformation.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.SymbolInformation build() { + scip.Scip.SymbolInformation result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.SymbolInformation buildPartial() { + scip.Scip.SymbolInformation result = new scip.Scip.SymbolInformation(this); + int from_bitField0_ = bitField0_; + result.symbol_ = symbol_; + if (((bitField0_ & 0x00000001) != 0)) { + documentation_ = documentation_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.documentation_ = documentation_; + if (relationshipsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + relationships_ = java.util.Collections.unmodifiableList(relationships_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.relationships_ = relationships_; + } else { + result.relationships_ = relationshipsBuilder_.build(); + } + result.kind_ = kind_; + result.displayName_ = displayName_; + if (signatureDocumentationBuilder_ == null) { + result.signatureDocumentation_ = signatureDocumentation_; + } else { + result.signatureDocumentation_ = signatureDocumentationBuilder_.build(); + } + result.enclosingSymbol_ = enclosingSymbol_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.SymbolInformation) { + return mergeFrom((scip.Scip.SymbolInformation)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.SymbolInformation other) { + if (other == scip.Scip.SymbolInformation.getDefaultInstance()) return this; + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + onChanged(); + } + if (!other.documentation_.isEmpty()) { + if (documentation_.isEmpty()) { + documentation_ = other.documentation_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDocumentationIsMutable(); + documentation_.addAll(other.documentation_); + } + onChanged(); + } + if (relationshipsBuilder_ == null) { + if (!other.relationships_.isEmpty()) { + if (relationships_.isEmpty()) { + relationships_ = other.relationships_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureRelationshipsIsMutable(); + relationships_.addAll(other.relationships_); + } + onChanged(); + } + } else { + if (!other.relationships_.isEmpty()) { + if (relationshipsBuilder_.isEmpty()) { + relationshipsBuilder_.dispose(); + relationshipsBuilder_ = null; + relationships_ = other.relationships_; + bitField0_ = (bitField0_ & ~0x00000002); + relationshipsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getRelationshipsFieldBuilder() : null; + } else { + relationshipsBuilder_.addAllMessages(other.relationships_); + } + } + } + if (other.kind_ != 0) { + setKindValue(other.getKindValue()); + } + if (!other.getDisplayName().isEmpty()) { + displayName_ = other.displayName_; + onChanged(); + } + if (other.hasSignatureDocumentation()) { + mergeSignatureDocumentation(other.getSignatureDocumentation()); + } + if (!other.getEnclosingSymbol().isEmpty()) { + enclosingSymbol_ = other.enclosingSymbol_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.SymbolInformation parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.SymbolInformation) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object symbol_ = ""; + /** + *
+       * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+       * The string must be formatted according to the grammar in `Symbol`.
+       * 
+ * + * string symbol = 1; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+       * The string must be formatted according to the grammar in `Symbol`.
+       * 
+ * + * string symbol = 1; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+       * The string must be formatted according to the grammar in `Symbol`.
+       * 
+ * + * string symbol = 1; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + symbol_ = value; + onChanged(); + return this; + } + /** + *
+       * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+       * The string must be formatted according to the grammar in `Symbol`.
+       * 
+ * + * string symbol = 1; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + + symbol_ = getDefaultInstance().getSymbol(); + onChanged(); + return this; + } + /** + *
+       * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+       * The string must be formatted according to the grammar in `Symbol`.
+       * 
+ * + * string symbol = 1; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + symbol_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList documentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureDocumentationIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + documentation_ = new com.google.protobuf.LazyStringArrayList(documentation_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @return A list containing the documentation. + */ + public com.google.protobuf.ProtocolStringList + getDocumentationList() { + return documentation_.getUnmodifiableView(); + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @return The count of documentation. + */ + public int getDocumentationCount() { + return documentation_.size(); + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + public java.lang.String getDocumentation(int index) { + return documentation_.get(index); + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + public com.google.protobuf.ByteString + getDocumentationBytes(int index) { + return documentation_.getByteString(index); + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param index The index to set the value at. + * @param value The documentation to set. + * @return This builder for chaining. + */ + public Builder setDocumentation( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentationIsMutable(); + documentation_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param value The documentation to add. + * @return This builder for chaining. + */ + public Builder addDocumentation( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentationIsMutable(); + documentation_.add(value); + onChanged(); + return this; + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param values The documentation to add. + * @return This builder for chaining. + */ + public Builder addAllDocumentation( + java.lang.Iterable values) { + ensureDocumentationIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, documentation_); + onChanged(); + return this; + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @return This builder for chaining. + */ + public Builder clearDocumentation() { + documentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * (optional, but strongly recommended) The markdown-formatted documentation
+       * for this symbol. Use `SymbolInformation.signature_documentation` to
+       * document the method/class/type signature of this symbol.
+       * Due to historical reasons, indexers may include signature documentation in
+       * this field by rendering markdown code blocks. New indexers should only
+       * include non-code documentation in this field, for example docstrings.
+       * 
+ * + * repeated string documentation = 3; + * @param value The bytes of the documentation to add. + * @return This builder for chaining. + */ + public Builder addDocumentationBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureDocumentationIsMutable(); + documentation_.add(value); + onChanged(); + return this; + } + + private java.util.List relationships_ = + java.util.Collections.emptyList(); + private void ensureRelationshipsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + relationships_ = new java.util.ArrayList(relationships_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Relationship, scip.Scip.Relationship.Builder, scip.Scip.RelationshipOrBuilder> relationshipsBuilder_; + + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public java.util.List getRelationshipsList() { + if (relationshipsBuilder_ == null) { + return java.util.Collections.unmodifiableList(relationships_); + } else { + return relationshipsBuilder_.getMessageList(); + } + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public int getRelationshipsCount() { + if (relationshipsBuilder_ == null) { + return relationships_.size(); + } else { + return relationshipsBuilder_.getCount(); + } + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public scip.Scip.Relationship getRelationships(int index) { + if (relationshipsBuilder_ == null) { + return relationships_.get(index); + } else { + return relationshipsBuilder_.getMessage(index); + } + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder setRelationships( + int index, scip.Scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.set(index, value); + onChanged(); + } else { + relationshipsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder setRelationships( + int index, scip.Scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.set(index, builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder addRelationships(scip.Scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.add(value); + onChanged(); + } else { + relationshipsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder addRelationships( + int index, scip.Scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.add(index, value); + onChanged(); + } else { + relationshipsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder addRelationships( + scip.Scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.add(builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder addRelationships( + int index, scip.Scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.add(index, builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder addAllRelationships( + java.lang.Iterable values) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, relationships_); + onChanged(); + } else { + relationshipsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder clearRelationships() { + if (relationshipsBuilder_ == null) { + relationships_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + relationshipsBuilder_.clear(); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public Builder removeRelationships(int index) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.remove(index); + onChanged(); + } else { + relationshipsBuilder_.remove(index); + } + return this; + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public scip.Scip.Relationship.Builder getRelationshipsBuilder( + int index) { + return getRelationshipsFieldBuilder().getBuilder(index); + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public scip.Scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index) { + if (relationshipsBuilder_ == null) { + return relationships_.get(index); } else { + return relationshipsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public java.util.List + getRelationshipsOrBuilderList() { + if (relationshipsBuilder_ != null) { + return relationshipsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(relationships_); + } + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public scip.Scip.Relationship.Builder addRelationshipsBuilder() { + return getRelationshipsFieldBuilder().addBuilder( + scip.Scip.Relationship.getDefaultInstance()); + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public scip.Scip.Relationship.Builder addRelationshipsBuilder( + int index) { + return getRelationshipsFieldBuilder().addBuilder( + index, scip.Scip.Relationship.getDefaultInstance()); + } + /** + *
+       * (optional) Relationships to other symbols (e.g., implements, type definition).
+       * 
+ * + * repeated .scip.Relationship relationships = 4; + */ + public java.util.List + getRelationshipsBuilderList() { + return getRelationshipsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Relationship, scip.Scip.Relationship.Builder, scip.Scip.RelationshipOrBuilder> + getRelationshipsFieldBuilder() { + if (relationshipsBuilder_ == null) { + relationshipsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Relationship, scip.Scip.Relationship.Builder, scip.Scip.RelationshipOrBuilder>( + relationships_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + relationships_ = null; + } + return relationshipsBuilder_; + } + + private int kind_ = 0; + /** + *
+       * The kind of this symbol. Use this field instead of
+       * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+       * class or a method.
+       * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The enum numeric value on the wire for kind. + */ + @java.lang.Override public int getKindValue() { + return kind_; + } + /** + *
+       * The kind of this symbol. Use this field instead of
+       * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+       * class or a method.
+       * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @param value The enum numeric value on the wire for kind to set. + * @return This builder for chaining. + */ + public Builder setKindValue(int value) { + + kind_ = value; + onChanged(); + return this; + } + /** + *
+       * The kind of this symbol. Use this field instead of
+       * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+       * class or a method.
+       * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return The kind. + */ + @java.lang.Override + public scip.Scip.SymbolInformation.Kind getKind() { + @SuppressWarnings("deprecation") + scip.Scip.SymbolInformation.Kind result = scip.Scip.SymbolInformation.Kind.valueOf(kind_); + return result == null ? scip.Scip.SymbolInformation.Kind.UNRECOGNIZED : result; + } + /** + *
+       * The kind of this symbol. Use this field instead of
+       * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+       * class or a method.
+       * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @param value The kind to set. + * @return This builder for chaining. + */ + public Builder setKind(scip.Scip.SymbolInformation.Kind value) { + if (value == null) { + throw new NullPointerException(); + } + + kind_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * The kind of this symbol. Use this field instead of
+       * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+       * class or a method.
+       * 
+ * + * .scip.SymbolInformation.Kind kind = 5; + * @return This builder for chaining. + */ + public Builder clearKind() { + + kind_ = 0; + onChanged(); + return this; + } + + private java.lang.Object displayName_ = ""; + /** + *
+       * (optional) The name of this symbol as it should be displayed to the user.
+       * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+       * display name "myMethod". The `symbol` field is not a reliable source of
+       * the display name for several reasons:
+       * - Local symbols don't encode the name.
+       * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+       * - The symbol may encode names with special characters that should not be
+       *   displayed to the user.
+       * 
+ * + * string display_name = 6; + * @return The displayName. + */ + public java.lang.String getDisplayName() { + java.lang.Object ref = displayName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + displayName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) The name of this symbol as it should be displayed to the user.
+       * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+       * display name "myMethod". The `symbol` field is not a reliable source of
+       * the display name for several reasons:
+       * - Local symbols don't encode the name.
+       * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+       * - The symbol may encode names with special characters that should not be
+       *   displayed to the user.
+       * 
+ * + * string display_name = 6; + * @return The bytes for displayName. + */ + public com.google.protobuf.ByteString + getDisplayNameBytes() { + java.lang.Object ref = displayName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + displayName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) The name of this symbol as it should be displayed to the user.
+       * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+       * display name "myMethod". The `symbol` field is not a reliable source of
+       * the display name for several reasons:
+       * - Local symbols don't encode the name.
+       * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+       * - The symbol may encode names with special characters that should not be
+       *   displayed to the user.
+       * 
+ * + * string display_name = 6; + * @param value The displayName to set. + * @return This builder for chaining. + */ + public Builder setDisplayName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + displayName_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) The name of this symbol as it should be displayed to the user.
+       * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+       * display name "myMethod". The `symbol` field is not a reliable source of
+       * the display name for several reasons:
+       * - Local symbols don't encode the name.
+       * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+       * - The symbol may encode names with special characters that should not be
+       *   displayed to the user.
+       * 
+ * + * string display_name = 6; + * @return This builder for chaining. + */ + public Builder clearDisplayName() { + + displayName_ = getDefaultInstance().getDisplayName(); + onChanged(); + return this; + } + /** + *
+       * (optional) The name of this symbol as it should be displayed to the user.
+       * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+       * display name "myMethod". The `symbol` field is not a reliable source of
+       * the display name for several reasons:
+       * - Local symbols don't encode the name.
+       * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+       * - The symbol may encode names with special characters that should not be
+       *   displayed to the user.
+       * 
+ * + * string display_name = 6; + * @param value The bytes for displayName to set. + * @return This builder for chaining. + */ + public Builder setDisplayNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + displayName_ = value; + onChanged(); + return this; + } + + private scip.Scip.Document signatureDocumentation_; + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder> signatureDocumentationBuilder_; + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + * @return Whether the signatureDocumentation field is set. + */ + public boolean hasSignatureDocumentation() { + return signatureDocumentationBuilder_ != null || signatureDocumentation_ != null; + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + * @return The signatureDocumentation. + */ + public scip.Scip.Document getSignatureDocumentation() { + if (signatureDocumentationBuilder_ == null) { + return signatureDocumentation_ == null ? scip.Scip.Document.getDefaultInstance() : signatureDocumentation_; + } else { + return signatureDocumentationBuilder_.getMessage(); + } + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public Builder setSignatureDocumentation(scip.Scip.Document value) { + if (signatureDocumentationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + signatureDocumentation_ = value; + onChanged(); + } else { + signatureDocumentationBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public Builder setSignatureDocumentation( + scip.Scip.Document.Builder builderForValue) { + if (signatureDocumentationBuilder_ == null) { + signatureDocumentation_ = builderForValue.build(); + onChanged(); + } else { + signatureDocumentationBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public Builder mergeSignatureDocumentation(scip.Scip.Document value) { + if (signatureDocumentationBuilder_ == null) { + if (signatureDocumentation_ != null) { + signatureDocumentation_ = + scip.Scip.Document.newBuilder(signatureDocumentation_).mergeFrom(value).buildPartial(); + } else { + signatureDocumentation_ = value; + } + onChanged(); + } else { + signatureDocumentationBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public Builder clearSignatureDocumentation() { + if (signatureDocumentationBuilder_ == null) { + signatureDocumentation_ = null; + onChanged(); + } else { + signatureDocumentation_ = null; + signatureDocumentationBuilder_ = null; + } + + return this; + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public scip.Scip.Document.Builder getSignatureDocumentationBuilder() { + + onChanged(); + return getSignatureDocumentationFieldBuilder().getBuilder(); + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + public scip.Scip.DocumentOrBuilder getSignatureDocumentationOrBuilder() { + if (signatureDocumentationBuilder_ != null) { + return signatureDocumentationBuilder_.getMessageOrBuilder(); + } else { + return signatureDocumentation_ == null ? + scip.Scip.Document.getDefaultInstance() : signatureDocumentation_; + } + } + /** + *
+       * (optional) The signature of this symbol as it's displayed in API
+       * documentation or in hover tooltips. For example, a Java method that adds
+       * two numbers this would have `Document.language = "java"` and `Document.text
+       * = "void add(int a, int b)". The `language` and `text` fields are required
+       * while other fields such as `Documentation.occurrences` can be optionally
+       * included to support hyperlinking referenced symbols in the signature.
+       * 
+ * + * .scip.Document signature_documentation = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder> + getSignatureDocumentationFieldBuilder() { + if (signatureDocumentationBuilder_ == null) { + signatureDocumentationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + scip.Scip.Document, scip.Scip.Document.Builder, scip.Scip.DocumentOrBuilder>( + getSignatureDocumentation(), + getParentForChildren(), + isClean()); + signatureDocumentation_ = null; + } + return signatureDocumentationBuilder_; + } + + private java.lang.Object enclosingSymbol_ = ""; + /** + *
+       * (optional) The enclosing symbol if this is a local symbol.  For non-local
+       * symbols, the enclosing symbol should be parsed from the `symbol` field
+       * using the `Descriptor` grammar.
+       * The primary use-case for this field is to allow local symbol to be displayed
+       * in a symbol hierarchy for API documentation. It's OK to leave this field
+       * empty for local variables since local variables usually don't belong in API
+       * documentation. However, in the situation that you wish to include a local
+       * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+       * "parent" or "owner" of this local symbol. For example, a Java indexer may
+       * choose to use local symbols for private class fields while providing an
+       * `enclosing_symbol` to reference the enclosing class to allow the field to
+       * be part of the class documentation hierarchy. From the perspective of an
+       * author of an indexer, the decision to use a local symbol or global symbol
+       * should exclusively be determined whether the local symbol is accessible
+       * outside the document, not by the capability to find the enclosing
+       * symbol.
+       * 
+ * + * string enclosing_symbol = 8; + * @return The enclosingSymbol. + */ + public java.lang.String getEnclosingSymbol() { + java.lang.Object ref = enclosingSymbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + enclosingSymbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) The enclosing symbol if this is a local symbol.  For non-local
+       * symbols, the enclosing symbol should be parsed from the `symbol` field
+       * using the `Descriptor` grammar.
+       * The primary use-case for this field is to allow local symbol to be displayed
+       * in a symbol hierarchy for API documentation. It's OK to leave this field
+       * empty for local variables since local variables usually don't belong in API
+       * documentation. However, in the situation that you wish to include a local
+       * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+       * "parent" or "owner" of this local symbol. For example, a Java indexer may
+       * choose to use local symbols for private class fields while providing an
+       * `enclosing_symbol` to reference the enclosing class to allow the field to
+       * be part of the class documentation hierarchy. From the perspective of an
+       * author of an indexer, the decision to use a local symbol or global symbol
+       * should exclusively be determined whether the local symbol is accessible
+       * outside the document, not by the capability to find the enclosing
+       * symbol.
+       * 
+ * + * string enclosing_symbol = 8; + * @return The bytes for enclosingSymbol. + */ + public com.google.protobuf.ByteString + getEnclosingSymbolBytes() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + enclosingSymbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) The enclosing symbol if this is a local symbol.  For non-local
+       * symbols, the enclosing symbol should be parsed from the `symbol` field
+       * using the `Descriptor` grammar.
+       * The primary use-case for this field is to allow local symbol to be displayed
+       * in a symbol hierarchy for API documentation. It's OK to leave this field
+       * empty for local variables since local variables usually don't belong in API
+       * documentation. However, in the situation that you wish to include a local
+       * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+       * "parent" or "owner" of this local symbol. For example, a Java indexer may
+       * choose to use local symbols for private class fields while providing an
+       * `enclosing_symbol` to reference the enclosing class to allow the field to
+       * be part of the class documentation hierarchy. From the perspective of an
+       * author of an indexer, the decision to use a local symbol or global symbol
+       * should exclusively be determined whether the local symbol is accessible
+       * outside the document, not by the capability to find the enclosing
+       * symbol.
+       * 
+ * + * string enclosing_symbol = 8; + * @param value The enclosingSymbol to set. + * @return This builder for chaining. + */ + public Builder setEnclosingSymbol( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + enclosingSymbol_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) The enclosing symbol if this is a local symbol.  For non-local
+       * symbols, the enclosing symbol should be parsed from the `symbol` field
+       * using the `Descriptor` grammar.
+       * The primary use-case for this field is to allow local symbol to be displayed
+       * in a symbol hierarchy for API documentation. It's OK to leave this field
+       * empty for local variables since local variables usually don't belong in API
+       * documentation. However, in the situation that you wish to include a local
+       * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+       * "parent" or "owner" of this local symbol. For example, a Java indexer may
+       * choose to use local symbols for private class fields while providing an
+       * `enclosing_symbol` to reference the enclosing class to allow the field to
+       * be part of the class documentation hierarchy. From the perspective of an
+       * author of an indexer, the decision to use a local symbol or global symbol
+       * should exclusively be determined whether the local symbol is accessible
+       * outside the document, not by the capability to find the enclosing
+       * symbol.
+       * 
+ * + * string enclosing_symbol = 8; + * @return This builder for chaining. + */ + public Builder clearEnclosingSymbol() { + + enclosingSymbol_ = getDefaultInstance().getEnclosingSymbol(); + onChanged(); + return this; + } + /** + *
+       * (optional) The enclosing symbol if this is a local symbol.  For non-local
+       * symbols, the enclosing symbol should be parsed from the `symbol` field
+       * using the `Descriptor` grammar.
+       * The primary use-case for this field is to allow local symbol to be displayed
+       * in a symbol hierarchy for API documentation. It's OK to leave this field
+       * empty for local variables since local variables usually don't belong in API
+       * documentation. However, in the situation that you wish to include a local
+       * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+       * "parent" or "owner" of this local symbol. For example, a Java indexer may
+       * choose to use local symbols for private class fields while providing an
+       * `enclosing_symbol` to reference the enclosing class to allow the field to
+       * be part of the class documentation hierarchy. From the perspective of an
+       * author of an indexer, the decision to use a local symbol or global symbol
+       * should exclusively be determined whether the local symbol is accessible
+       * outside the document, not by the capability to find the enclosing
+       * symbol.
+       * 
+ * + * string enclosing_symbol = 8; + * @param value The bytes for enclosingSymbol to set. + * @return This builder for chaining. + */ + public Builder setEnclosingSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + enclosingSymbol_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.SymbolInformation) + } + + // @@protoc_insertion_point(class_scope:scip.SymbolInformation) + private static final scip.Scip.SymbolInformation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.SymbolInformation(); + } + + public static scip.Scip.SymbolInformation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SymbolInformation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SymbolInformation(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.SymbolInformation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RelationshipOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Relationship) + com.google.protobuf.MessageOrBuilder { + + /** + * string symbol = 1; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + * string symbol = 1; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+     * When resolving "Find references", this field documents what other symbols
+     * should be included together with this symbol. For example, consider the
+     * following TypeScript code that defines two symbols `Animal#sound()` and
+     * `Dog#sound()`:
+     * ```ts
+     * interface Animal {
+     *           ^^^^^^ definition Animal#
+     *   sound(): string
+     *   ^^^^^ definition Animal#sound()
+     * }
+     * class Dog implements Animal {
+     *       ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+     *   public sound(): string { return "woof" }
+     *          ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+     * }
+     * const animal: Animal = new Dog()
+     *               ^^^^^^ reference Animal#
+     * console.log(animal.sound())
+     *                    ^^^^^ reference Animal#sound()
+     * ```
+     * Doing "Find references" on the symbol `Animal#sound()` should return
+     * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+     * references" on the `Dog#sound()` method should include references to the
+     * `Animal#sound()` method as well.
+     * 
+ * + * bool is_reference = 2; + * @return The isReference. + */ + boolean getIsReference(); + + /** + *
+     * Similar to `is_reference` but for "Find implementations".
+     * It's common for `is_implementation` and `is_reference` to both be true but
+     * it's not always the case.
+     * In the TypeScript example above, observe that `Dog#` has an
+     * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+     * This is because "Find references" on the "Animal#" symbol should not return
+     * "Dog#". We only want "Dog#" to return as a result for "Find
+     * implementations" on the "Animal#" symbol.
+     * 
+ * + * bool is_implementation = 3; + * @return The isImplementation. + */ + boolean getIsImplementation(); + + /** + *
+     * Similar to `references_symbols` but for "Go to type definition".
+     * 
+ * + * bool is_type_definition = 4; + * @return The isTypeDefinition. + */ + boolean getIsTypeDefinition(); + + /** + *
+     * Allows overriding the behavior of "Go to definition" and "Find references"
+     * for symbols which do not have a definition of their own or could
+     * potentially have multiple definitions.
+     * For example, in a language with single inheritance and no field overriding,
+     * inherited fields can reuse the same symbol as the ancestor which declares
+     * the field. In such a situation, is_definition is not needed.
+     * On the other hand, in languages with single inheritance and some form
+     * of mixins, you can use is_definition to relate the symbol to the
+     * matching symbol in ancestor classes, and is_reference to relate the
+     * symbol to the matching symbol in mixins.
+     * NOTE: At the moment, due to limitations of the SCIP to LSIF conversion,
+     * only global symbols in an index are allowed to use is_definition.
+     * The relationship may not get recorded if either symbol is local.
+     * 
+ * + * bool is_definition = 5; + * @return The isDefinition. + */ + boolean getIsDefinition(); + } + /** + * Protobuf type {@code scip.Relationship} + */ + public static final class Relationship extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Relationship) + RelationshipOrBuilder { + private static final long serialVersionUID = 0L; + // Use Relationship.newBuilder() to construct. + private Relationship(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Relationship() { + symbol_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Relationship(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Relationship( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + symbol_ = s; + break; + } + case 16: { + + isReference_ = input.readBool(); + break; + } + case 24: { + + isImplementation_ = input.readBool(); + break; + } + case 32: { + + isTypeDefinition_ = input.readBool(); + break; + } + case 40: { + + isDefinition_ = input.readBool(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Relationship_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Relationship.class, scip.Scip.Relationship.Builder.class); + } + + public static final int SYMBOL_FIELD_NUMBER = 1; + private volatile java.lang.Object symbol_; + /** + * string symbol = 1; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + * string symbol = 1; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_REFERENCE_FIELD_NUMBER = 2; + private boolean isReference_; + /** + *
+     * When resolving "Find references", this field documents what other symbols
+     * should be included together with this symbol. For example, consider the
+     * following TypeScript code that defines two symbols `Animal#sound()` and
+     * `Dog#sound()`:
+     * ```ts
+     * interface Animal {
+     *           ^^^^^^ definition Animal#
+     *   sound(): string
+     *   ^^^^^ definition Animal#sound()
+     * }
+     * class Dog implements Animal {
+     *       ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+     *   public sound(): string { return "woof" }
+     *          ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+     * }
+     * const animal: Animal = new Dog()
+     *               ^^^^^^ reference Animal#
+     * console.log(animal.sound())
+     *                    ^^^^^ reference Animal#sound()
+     * ```
+     * Doing "Find references" on the symbol `Animal#sound()` should return
+     * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+     * references" on the `Dog#sound()` method should include references to the
+     * `Animal#sound()` method as well.
+     * 
+ * + * bool is_reference = 2; + * @return The isReference. + */ + @java.lang.Override + public boolean getIsReference() { + return isReference_; + } + + public static final int IS_IMPLEMENTATION_FIELD_NUMBER = 3; + private boolean isImplementation_; + /** + *
+     * Similar to `is_reference` but for "Find implementations".
+     * It's common for `is_implementation` and `is_reference` to both be true but
+     * it's not always the case.
+     * In the TypeScript example above, observe that `Dog#` has an
+     * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+     * This is because "Find references" on the "Animal#" symbol should not return
+     * "Dog#". We only want "Dog#" to return as a result for "Find
+     * implementations" on the "Animal#" symbol.
+     * 
+ * + * bool is_implementation = 3; + * @return The isImplementation. + */ + @java.lang.Override + public boolean getIsImplementation() { + return isImplementation_; + } + + public static final int IS_TYPE_DEFINITION_FIELD_NUMBER = 4; + private boolean isTypeDefinition_; + /** + *
+     * Similar to `references_symbols` but for "Go to type definition".
+     * 
+ * + * bool is_type_definition = 4; + * @return The isTypeDefinition. + */ + @java.lang.Override + public boolean getIsTypeDefinition() { + return isTypeDefinition_; + } + + public static final int IS_DEFINITION_FIELD_NUMBER = 5; + private boolean isDefinition_; + /** + *
+     * Allows overriding the behavior of "Go to definition" and "Find references"
+     * for symbols which do not have a definition of their own or could
+     * potentially have multiple definitions.
+     * For example, in a language with single inheritance and no field overriding,
+     * inherited fields can reuse the same symbol as the ancestor which declares
+     * the field. In such a situation, is_definition is not needed.
+     * On the other hand, in languages with single inheritance and some form
+     * of mixins, you can use is_definition to relate the symbol to the
+     * matching symbol in ancestor classes, and is_reference to relate the
+     * symbol to the matching symbol in mixins.
+     * NOTE: At the moment, due to limitations of the SCIP to LSIF conversion,
+     * only global symbols in an index are allowed to use is_definition.
+     * The relationship may not get recorded if either symbol is local.
+     * 
+ * + * bool is_definition = 5; + * @return The isDefinition. + */ + @java.lang.Override + public boolean getIsDefinition() { + return isDefinition_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getSymbolBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, symbol_); + } + if (isReference_ != false) { + output.writeBool(2, isReference_); + } + if (isImplementation_ != false) { + output.writeBool(3, isImplementation_); + } + if (isTypeDefinition_ != false) { + output.writeBool(4, isTypeDefinition_); + } + if (isDefinition_ != false) { + output.writeBool(5, isDefinition_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getSymbolBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, symbol_); + } + if (isReference_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isReference_); + } + if (isImplementation_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, isImplementation_); + } + if (isTypeDefinition_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, isTypeDefinition_); + } + if (isDefinition_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, isDefinition_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Relationship)) { + return super.equals(obj); + } + scip.Scip.Relationship other = (scip.Scip.Relationship) obj; + + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (getIsReference() + != other.getIsReference()) return false; + if (getIsImplementation() + != other.getIsImplementation()) return false; + if (getIsTypeDefinition() + != other.getIsTypeDefinition()) return false; + if (getIsDefinition() + != other.getIsDefinition()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + hash = (37 * hash) + IS_REFERENCE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsReference()); + hash = (37 * hash) + IS_IMPLEMENTATION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsImplementation()); + hash = (37 * hash) + IS_TYPE_DEFINITION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsTypeDefinition()); + hash = (37 * hash) + IS_DEFINITION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsDefinition()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Relationship parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Relationship parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Relationship parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Relationship parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Relationship parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Relationship parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Relationship parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Relationship parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Relationship parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Relationship parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Relationship parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Relationship parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Relationship prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Relationship} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Relationship) + scip.Scip.RelationshipOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Relationship_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Relationship.class, scip.Scip.Relationship.Builder.class); + } + + // Construct using scip.Scip.Relationship.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + symbol_ = ""; + + isReference_ = false; + + isImplementation_ = false; + + isTypeDefinition_ = false; + + isDefinition_ = false; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + public scip.Scip.Relationship getDefaultInstanceForType() { + return scip.Scip.Relationship.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Relationship build() { + scip.Scip.Relationship result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Relationship buildPartial() { + scip.Scip.Relationship result = new scip.Scip.Relationship(this); + result.symbol_ = symbol_; + result.isReference_ = isReference_; + result.isImplementation_ = isImplementation_; + result.isTypeDefinition_ = isTypeDefinition_; + result.isDefinition_ = isDefinition_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Relationship) { + return mergeFrom((scip.Scip.Relationship)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Relationship other) { + if (other == scip.Scip.Relationship.getDefaultInstance()) return this; + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + onChanged(); + } + if (other.getIsReference() != false) { + setIsReference(other.getIsReference()); + } + if (other.getIsImplementation() != false) { + setIsImplementation(other.getIsImplementation()); + } + if (other.getIsTypeDefinition() != false) { + setIsTypeDefinition(other.getIsTypeDefinition()); + } + if (other.getIsDefinition() != false) { + setIsDefinition(other.getIsDefinition()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Relationship parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Relationship) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object symbol_ = ""; + /** + * string symbol = 1; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string symbol = 1; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string symbol = 1; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + symbol_ = value; + onChanged(); + return this; + } + /** + * string symbol = 1; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + + symbol_ = getDefaultInstance().getSymbol(); + onChanged(); + return this; + } + /** + * string symbol = 1; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + symbol_ = value; + onChanged(); + return this; + } + + private boolean isReference_ ; + /** + *
+       * When resolving "Find references", this field documents what other symbols
+       * should be included together with this symbol. For example, consider the
+       * following TypeScript code that defines two symbols `Animal#sound()` and
+       * `Dog#sound()`:
+       * ```ts
+       * interface Animal {
+       *           ^^^^^^ definition Animal#
+       *   sound(): string
+       *   ^^^^^ definition Animal#sound()
+       * }
+       * class Dog implements Animal {
+       *       ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+       *   public sound(): string { return "woof" }
+       *          ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+       * }
+       * const animal: Animal = new Dog()
+       *               ^^^^^^ reference Animal#
+       * console.log(animal.sound())
+       *                    ^^^^^ reference Animal#sound()
+       * ```
+       * Doing "Find references" on the symbol `Animal#sound()` should return
+       * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+       * references" on the `Dog#sound()` method should include references to the
+       * `Animal#sound()` method as well.
+       * 
+ * + * bool is_reference = 2; + * @return The isReference. + */ + @java.lang.Override + public boolean getIsReference() { + return isReference_; + } + /** + *
+       * When resolving "Find references", this field documents what other symbols
+       * should be included together with this symbol. For example, consider the
+       * following TypeScript code that defines two symbols `Animal#sound()` and
+       * `Dog#sound()`:
+       * ```ts
+       * interface Animal {
+       *           ^^^^^^ definition Animal#
+       *   sound(): string
+       *   ^^^^^ definition Animal#sound()
+       * }
+       * class Dog implements Animal {
+       *       ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+       *   public sound(): string { return "woof" }
+       *          ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+       * }
+       * const animal: Animal = new Dog()
+       *               ^^^^^^ reference Animal#
+       * console.log(animal.sound())
+       *                    ^^^^^ reference Animal#sound()
+       * ```
+       * Doing "Find references" on the symbol `Animal#sound()` should return
+       * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+       * references" on the `Dog#sound()` method should include references to the
+       * `Animal#sound()` method as well.
+       * 
+ * + * bool is_reference = 2; + * @param value The isReference to set. + * @return This builder for chaining. + */ + public Builder setIsReference(boolean value) { + + isReference_ = value; + onChanged(); + return this; + } + /** + *
+       * When resolving "Find references", this field documents what other symbols
+       * should be included together with this symbol. For example, consider the
+       * following TypeScript code that defines two symbols `Animal#sound()` and
+       * `Dog#sound()`:
+       * ```ts
+       * interface Animal {
+       *           ^^^^^^ definition Animal#
+       *   sound(): string
+       *   ^^^^^ definition Animal#sound()
+       * }
+       * class Dog implements Animal {
+       *       ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+       *   public sound(): string { return "woof" }
+       *          ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+       * }
+       * const animal: Animal = new Dog()
+       *               ^^^^^^ reference Animal#
+       * console.log(animal.sound())
+       *                    ^^^^^ reference Animal#sound()
+       * ```
+       * Doing "Find references" on the symbol `Animal#sound()` should return
+       * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+       * references" on the `Dog#sound()` method should include references to the
+       * `Animal#sound()` method as well.
+       * 
+ * + * bool is_reference = 2; + * @return This builder for chaining. + */ + public Builder clearIsReference() { + + isReference_ = false; + onChanged(); + return this; + } + + private boolean isImplementation_ ; + /** + *
+       * Similar to `is_reference` but for "Find implementations".
+       * It's common for `is_implementation` and `is_reference` to both be true but
+       * it's not always the case.
+       * In the TypeScript example above, observe that `Dog#` has an
+       * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+       * This is because "Find references" on the "Animal#" symbol should not return
+       * "Dog#". We only want "Dog#" to return as a result for "Find
+       * implementations" on the "Animal#" symbol.
+       * 
+ * + * bool is_implementation = 3; + * @return The isImplementation. + */ + @java.lang.Override + public boolean getIsImplementation() { + return isImplementation_; + } + /** + *
+       * Similar to `is_reference` but for "Find implementations".
+       * It's common for `is_implementation` and `is_reference` to both be true but
+       * it's not always the case.
+       * In the TypeScript example above, observe that `Dog#` has an
+       * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+       * This is because "Find references" on the "Animal#" symbol should not return
+       * "Dog#". We only want "Dog#" to return as a result for "Find
+       * implementations" on the "Animal#" symbol.
+       * 
+ * + * bool is_implementation = 3; + * @param value The isImplementation to set. + * @return This builder for chaining. + */ + public Builder setIsImplementation(boolean value) { + + isImplementation_ = value; + onChanged(); + return this; + } + /** + *
+       * Similar to `is_reference` but for "Find implementations".
+       * It's common for `is_implementation` and `is_reference` to both be true but
+       * it's not always the case.
+       * In the TypeScript example above, observe that `Dog#` has an
+       * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+       * This is because "Find references" on the "Animal#" symbol should not return
+       * "Dog#". We only want "Dog#" to return as a result for "Find
+       * implementations" on the "Animal#" symbol.
+       * 
+ * + * bool is_implementation = 3; + * @return This builder for chaining. + */ + public Builder clearIsImplementation() { + + isImplementation_ = false; + onChanged(); + return this; + } + + private boolean isTypeDefinition_ ; + /** + *
+       * Similar to `references_symbols` but for "Go to type definition".
+       * 
+ * + * bool is_type_definition = 4; + * @return The isTypeDefinition. + */ + @java.lang.Override + public boolean getIsTypeDefinition() { + return isTypeDefinition_; + } + /** + *
+       * Similar to `references_symbols` but for "Go to type definition".
+       * 
+ * + * bool is_type_definition = 4; + * @param value The isTypeDefinition to set. + * @return This builder for chaining. + */ + public Builder setIsTypeDefinition(boolean value) { + + isTypeDefinition_ = value; + onChanged(); + return this; + } + /** + *
+       * Similar to `references_symbols` but for "Go to type definition".
+       * 
+ * + * bool is_type_definition = 4; + * @return This builder for chaining. + */ + public Builder clearIsTypeDefinition() { + + isTypeDefinition_ = false; + onChanged(); + return this; + } + + private boolean isDefinition_ ; + /** + *
+       * Allows overriding the behavior of "Go to definition" and "Find references"
+       * for symbols which do not have a definition of their own or could
+       * potentially have multiple definitions.
+       * For example, in a language with single inheritance and no field overriding,
+       * inherited fields can reuse the same symbol as the ancestor which declares
+       * the field. In such a situation, is_definition is not needed.
+       * On the other hand, in languages with single inheritance and some form
+       * of mixins, you can use is_definition to relate the symbol to the
+       * matching symbol in ancestor classes, and is_reference to relate the
+       * symbol to the matching symbol in mixins.
+       * NOTE: At the moment, due to limitations of the SCIP to LSIF conversion,
+       * only global symbols in an index are allowed to use is_definition.
+       * The relationship may not get recorded if either symbol is local.
+       * 
+ * + * bool is_definition = 5; + * @return The isDefinition. + */ + @java.lang.Override + public boolean getIsDefinition() { + return isDefinition_; + } + /** + *
+       * Allows overriding the behavior of "Go to definition" and "Find references"
+       * for symbols which do not have a definition of their own or could
+       * potentially have multiple definitions.
+       * For example, in a language with single inheritance and no field overriding,
+       * inherited fields can reuse the same symbol as the ancestor which declares
+       * the field. In such a situation, is_definition is not needed.
+       * On the other hand, in languages with single inheritance and some form
+       * of mixins, you can use is_definition to relate the symbol to the
+       * matching symbol in ancestor classes, and is_reference to relate the
+       * symbol to the matching symbol in mixins.
+       * NOTE: At the moment, due to limitations of the SCIP to LSIF conversion,
+       * only global symbols in an index are allowed to use is_definition.
+       * The relationship may not get recorded if either symbol is local.
+       * 
+ * + * bool is_definition = 5; + * @param value The isDefinition to set. + * @return This builder for chaining. + */ + public Builder setIsDefinition(boolean value) { + + isDefinition_ = value; + onChanged(); + return this; + } + /** + *
+       * Allows overriding the behavior of "Go to definition" and "Find references"
+       * for symbols which do not have a definition of their own or could
+       * potentially have multiple definitions.
+       * For example, in a language with single inheritance and no field overriding,
+       * inherited fields can reuse the same symbol as the ancestor which declares
+       * the field. In such a situation, is_definition is not needed.
+       * On the other hand, in languages with single inheritance and some form
+       * of mixins, you can use is_definition to relate the symbol to the
+       * matching symbol in ancestor classes, and is_reference to relate the
+       * symbol to the matching symbol in mixins.
+       * NOTE: At the moment, due to limitations of the SCIP to LSIF conversion,
+       * only global symbols in an index are allowed to use is_definition.
+       * The relationship may not get recorded if either symbol is local.
+       * 
+ * + * bool is_definition = 5; + * @return This builder for chaining. + */ + public Builder clearIsDefinition() { + + isDefinition_ = false; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Relationship) + } + + // @@protoc_insertion_point(class_scope:scip.Relationship) + private static final scip.Scip.Relationship DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Relationship(); + } + + public static scip.Scip.Relationship getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Relationship parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Relationship(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Relationship getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface OccurrenceOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Occurrence) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @return A list containing the range. + */ + java.util.List getRangeList(); + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @return The count of range. + */ + int getRangeCount(); + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @param index The index of the element to return. + * @return The range at the given index. + */ + int getRange(int index); + + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+     * (optional) Bitset containing `SymbolRole`s in this occurrence.
+     * See `SymbolRole`'s documentation for how to read and write this field.
+     * 
+ * + * int32 symbol_roles = 3; + * @return The symbolRoles. + */ + int getSymbolRoles(); + + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @return A list containing the overrideDocumentation. + */ + java.util.List + getOverrideDocumentationList(); + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @return The count of overrideDocumentation. + */ + int getOverrideDocumentationCount(); + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + java.lang.String getOverrideDocumentation(int index); + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index); + + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The enum numeric value on the wire for syntaxKind. + */ + int getSyntaxKindValue(); + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The syntaxKind. + */ + scip.Scip.SyntaxKind getSyntaxKind(); + + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + java.util.List + getDiagnosticsList(); + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + scip.Scip.Diagnostic getDiagnostics(int index); + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + int getDiagnosticsCount(); + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + java.util.List + getDiagnosticsOrBuilderList(); + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + scip.Scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index); + + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @return A list containing the enclosingRange. + */ + java.util.List getEnclosingRangeList(); + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @return The count of enclosingRange. + */ + int getEnclosingRangeCount(); + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + int getEnclosingRange(int index); + } + /** + *
+   * Occurrence associates a source position with a symbol and/or highlighting
+   * information.
+   * If possible, indexers should try to bundle logically related information
+   * across occurrences into a single occurrence to reduce payload sizes.
+   * 
+ * + * Protobuf type {@code scip.Occurrence} + */ + public static final class Occurrence extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Occurrence) + OccurrenceOrBuilder { + private static final long serialVersionUID = 0L; + // Use Occurrence.newBuilder() to construct. + private Occurrence(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Occurrence() { + range_ = emptyIntList(); + symbol_ = ""; + overrideDocumentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + syntaxKind_ = 0; + diagnostics_ = java.util.Collections.emptyList(); + enclosingRange_ = emptyIntList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Occurrence(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Occurrence( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + range_ = newIntList(); + mutable_bitField0_ |= 0x00000001; + } + range_.addInt(input.readInt32()); + break; + } + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) { + range_ = newIntList(); + mutable_bitField0_ |= 0x00000001; + } + while (input.getBytesUntilLimit() > 0) { + range_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + symbol_ = s; + break; + } + case 24: { + + symbolRoles_ = input.readInt32(); + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + overrideDocumentation_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + overrideDocumentation_.add(s); + break; + } + case 40: { + int rawValue = input.readEnum(); + + syntaxKind_ = rawValue; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000004) != 0)) { + diagnostics_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + diagnostics_.add( + input.readMessage(scip.Scip.Diagnostic.parser(), extensionRegistry)); + break; + } + case 56: { + if (!((mutable_bitField0_ & 0x00000008) != 0)) { + enclosingRange_ = newIntList(); + mutable_bitField0_ |= 0x00000008; + } + enclosingRange_.addInt(input.readInt32()); + break; + } + case 58: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000008) != 0) && input.getBytesUntilLimit() > 0) { + enclosingRange_ = newIntList(); + mutable_bitField0_ |= 0x00000008; + } + while (input.getBytesUntilLimit() > 0) { + enclosingRange_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + range_.makeImmutable(); // C + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + overrideDocumentation_ = overrideDocumentation_.getUnmodifiableView(); + } + if (((mutable_bitField0_ & 0x00000004) != 0)) { + diagnostics_ = java.util.Collections.unmodifiableList(diagnostics_); + } + if (((mutable_bitField0_ & 0x00000008) != 0)) { + enclosingRange_.makeImmutable(); // C + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Occurrence_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Occurrence.class, scip.Scip.Occurrence.Builder.class); + } + + public static final int RANGE_FIELD_NUMBER = 1; + private com.google.protobuf.Internal.IntList range_; + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @return A list containing the range. + */ + @java.lang.Override + public java.util.List + getRangeList() { + return range_; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @return The count of range. + */ + public int getRangeCount() { + return range_.size(); + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     *   is inferred to have the same value as the start line.
+     * It is allowed for the range to be empty (i.e. start==end).
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1; + * @param index The index of the element to return. + * @return The range at the given index. + */ + public int getRange(int index) { + return range_.getInt(index); + } + private int rangeMemoizedSerializedSize = -1; + + public static final int SYMBOL_FIELD_NUMBER = 2; + private volatile java.lang.Object symbol_; + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SYMBOL_ROLES_FIELD_NUMBER = 3; + private int symbolRoles_; + /** + *
+     * (optional) Bitset containing `SymbolRole`s in this occurrence.
+     * See `SymbolRole`'s documentation for how to read and write this field.
+     * 
+ * + * int32 symbol_roles = 3; + * @return The symbolRoles. + */ + @java.lang.Override + public int getSymbolRoles() { + return symbolRoles_; + } + + public static final int OVERRIDE_DOCUMENTATION_FIELD_NUMBER = 4; + private com.google.protobuf.LazyStringList overrideDocumentation_; + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @return A list containing the overrideDocumentation. + */ + public com.google.protobuf.ProtocolStringList + getOverrideDocumentationList() { + return overrideDocumentation_; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @return The count of overrideDocumentation. + */ + public int getOverrideDocumentationCount() { + return overrideDocumentation_.size(); + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + public java.lang.String getOverrideDocumentation(int index) { + return overrideDocumentation_.get(index); + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + public com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index) { + return overrideDocumentation_.getByteString(index); + } + + public static final int SYNTAX_KIND_FIELD_NUMBER = 5; + private int syntaxKind_; + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The enum numeric value on the wire for syntaxKind. + */ + @java.lang.Override public int getSyntaxKindValue() { + return syntaxKind_; + } + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The syntaxKind. + */ + @java.lang.Override public scip.Scip.SyntaxKind getSyntaxKind() { + @SuppressWarnings("deprecation") + scip.Scip.SyntaxKind result = scip.Scip.SyntaxKind.valueOf(syntaxKind_); + return result == null ? scip.Scip.SyntaxKind.UNRECOGNIZED : result; + } + + public static final int DIAGNOSTICS_FIELD_NUMBER = 6; + private java.util.List diagnostics_; + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + @java.lang.Override + public java.util.List getDiagnosticsList() { + return diagnostics_; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + @java.lang.Override + public java.util.List + getDiagnosticsOrBuilderList() { + return diagnostics_; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + @java.lang.Override + public int getDiagnosticsCount() { + return diagnostics_.size(); + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + @java.lang.Override + public scip.Scip.Diagnostic getDiagnostics(int index) { + return diagnostics_.get(index); + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + @java.lang.Override + public scip.Scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index) { + return diagnostics_.get(index); + } + + public static final int ENCLOSING_RANGE_FIELD_NUMBER = 7; + private com.google.protobuf.Internal.IntList enclosingRange_; + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @return A list containing the enclosingRange. + */ + @java.lang.Override + public java.util.List + getEnclosingRangeList() { + return enclosingRange_; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @return The count of enclosingRange. + */ + public int getEnclosingRangeCount() { + return enclosingRange_.size(); + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     * - Call hierarchies: to determine what symbols are references from the body
+     *   of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     *   root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     *   hover popover
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     *       ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     *          ^^^^^ range                                          |
+     *     return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     *     return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     * ```
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     *             ^ range
+     *           ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     *                   ^ range
+     *           ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + public int getEnclosingRange(int index) { + return enclosingRange_.getInt(index); + } + private int enclosingRangeMemoizedSerializedSize = -1; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (getRangeList().size() > 0) { + output.writeUInt32NoTag(10); + output.writeUInt32NoTag(rangeMemoizedSerializedSize); + } + for (int i = 0; i < range_.size(); i++) { + output.writeInt32NoTag(range_.getInt(i)); + } + if (!getSymbolBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, symbol_); + } + if (symbolRoles_ != 0) { + output.writeInt32(3, symbolRoles_); + } + for (int i = 0; i < overrideDocumentation_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, overrideDocumentation_.getRaw(i)); + } + if (syntaxKind_ != scip.Scip.SyntaxKind.UnspecifiedSyntaxKind.getNumber()) { + output.writeEnum(5, syntaxKind_); + } + for (int i = 0; i < diagnostics_.size(); i++) { + output.writeMessage(6, diagnostics_.get(i)); + } + if (getEnclosingRangeList().size() > 0) { + output.writeUInt32NoTag(58); + output.writeUInt32NoTag(enclosingRangeMemoizedSerializedSize); + } + for (int i = 0; i < enclosingRange_.size(); i++) { + output.writeInt32NoTag(enclosingRange_.getInt(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < range_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(range_.getInt(i)); + } + size += dataSize; + if (!getRangeList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + rangeMemoizedSerializedSize = dataSize; + } + if (!getSymbolBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, symbol_); + } + if (symbolRoles_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, symbolRoles_); + } + { + int dataSize = 0; + for (int i = 0; i < overrideDocumentation_.size(); i++) { + dataSize += computeStringSizeNoTag(overrideDocumentation_.getRaw(i)); + } + size += dataSize; + size += 1 * getOverrideDocumentationList().size(); + } + if (syntaxKind_ != scip.Scip.SyntaxKind.UnspecifiedSyntaxKind.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, syntaxKind_); + } + for (int i = 0; i < diagnostics_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, diagnostics_.get(i)); + } + { + int dataSize = 0; + for (int i = 0; i < enclosingRange_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(enclosingRange_.getInt(i)); + } + size += dataSize; + if (!getEnclosingRangeList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + enclosingRangeMemoizedSerializedSize = dataSize; + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Occurrence)) { + return super.equals(obj); + } + scip.Scip.Occurrence other = (scip.Scip.Occurrence) obj; + + if (!getRangeList() + .equals(other.getRangeList())) return false; + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (getSymbolRoles() + != other.getSymbolRoles()) return false; + if (!getOverrideDocumentationList() + .equals(other.getOverrideDocumentationList())) return false; + if (syntaxKind_ != other.syntaxKind_) return false; + if (!getDiagnosticsList() + .equals(other.getDiagnosticsList())) return false; + if (!getEnclosingRangeList() + .equals(other.getEnclosingRangeList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getRangeCount() > 0) { + hash = (37 * hash) + RANGE_FIELD_NUMBER; + hash = (53 * hash) + getRangeList().hashCode(); + } + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + hash = (37 * hash) + SYMBOL_ROLES_FIELD_NUMBER; + hash = (53 * hash) + getSymbolRoles(); + if (getOverrideDocumentationCount() > 0) { + hash = (37 * hash) + OVERRIDE_DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getOverrideDocumentationList().hashCode(); + } + hash = (37 * hash) + SYNTAX_KIND_FIELD_NUMBER; + hash = (53 * hash) + syntaxKind_; + if (getDiagnosticsCount() > 0) { + hash = (37 * hash) + DIAGNOSTICS_FIELD_NUMBER; + hash = (53 * hash) + getDiagnosticsList().hashCode(); + } + if (getEnclosingRangeCount() > 0) { + hash = (37 * hash) + ENCLOSING_RANGE_FIELD_NUMBER; + hash = (53 * hash) + getEnclosingRangeList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Occurrence parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Occurrence parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Occurrence parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Occurrence parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Occurrence parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Occurrence parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Occurrence parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Occurrence parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Occurrence parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Occurrence parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Occurrence parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Occurrence parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Occurrence prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Occurrence associates a source position with a symbol and/or highlighting
+     * information.
+     * If possible, indexers should try to bundle logically related information
+     * across occurrences into a single occurrence to reduce payload sizes.
+     * 
+ * + * Protobuf type {@code scip.Occurrence} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Occurrence) + scip.Scip.OccurrenceOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Occurrence_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Occurrence.class, scip.Scip.Occurrence.Builder.class); + } + + // Construct using scip.Scip.Occurrence.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getDiagnosticsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + range_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000001); + symbol_ = ""; + + symbolRoles_ = 0; + + overrideDocumentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + syntaxKind_ = 0; + + if (diagnosticsBuilder_ == null) { + diagnostics_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + diagnosticsBuilder_.clear(); + } + enclosingRange_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + public scip.Scip.Occurrence getDefaultInstanceForType() { + return scip.Scip.Occurrence.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Occurrence build() { + scip.Scip.Occurrence result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Occurrence buildPartial() { + scip.Scip.Occurrence result = new scip.Scip.Occurrence(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) != 0)) { + range_.makeImmutable(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.range_ = range_; + result.symbol_ = symbol_; + result.symbolRoles_ = symbolRoles_; + if (((bitField0_ & 0x00000002) != 0)) { + overrideDocumentation_ = overrideDocumentation_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.overrideDocumentation_ = overrideDocumentation_; + result.syntaxKind_ = syntaxKind_; + if (diagnosticsBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + diagnostics_ = java.util.Collections.unmodifiableList(diagnostics_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.diagnostics_ = diagnostics_; + } else { + result.diagnostics_ = diagnosticsBuilder_.build(); + } + if (((bitField0_ & 0x00000008) != 0)) { + enclosingRange_.makeImmutable(); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.enclosingRange_ = enclosingRange_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Occurrence) { + return mergeFrom((scip.Scip.Occurrence)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Occurrence other) { + if (other == scip.Scip.Occurrence.getDefaultInstance()) return this; + if (!other.range_.isEmpty()) { + if (range_.isEmpty()) { + range_ = other.range_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureRangeIsMutable(); + range_.addAll(other.range_); + } + onChanged(); + } + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + onChanged(); + } + if (other.getSymbolRoles() != 0) { + setSymbolRoles(other.getSymbolRoles()); + } + if (!other.overrideDocumentation_.isEmpty()) { + if (overrideDocumentation_.isEmpty()) { + overrideDocumentation_ = other.overrideDocumentation_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.addAll(other.overrideDocumentation_); + } + onChanged(); + } + if (other.syntaxKind_ != 0) { + setSyntaxKindValue(other.getSyntaxKindValue()); + } + if (diagnosticsBuilder_ == null) { + if (!other.diagnostics_.isEmpty()) { + if (diagnostics_.isEmpty()) { + diagnostics_ = other.diagnostics_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureDiagnosticsIsMutable(); + diagnostics_.addAll(other.diagnostics_); + } + onChanged(); + } + } else { + if (!other.diagnostics_.isEmpty()) { + if (diagnosticsBuilder_.isEmpty()) { + diagnosticsBuilder_.dispose(); + diagnosticsBuilder_ = null; + diagnostics_ = other.diagnostics_; + bitField0_ = (bitField0_ & ~0x00000004); + diagnosticsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDiagnosticsFieldBuilder() : null; + } else { + diagnosticsBuilder_.addAllMessages(other.diagnostics_); + } + } + } + if (!other.enclosingRange_.isEmpty()) { + if (enclosingRange_.isEmpty()) { + enclosingRange_ = other.enclosingRange_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureEnclosingRangeIsMutable(); + enclosingRange_.addAll(other.enclosingRange_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Occurrence parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Occurrence) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.Internal.IntList range_ = emptyIntList(); + private void ensureRangeIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + range_ = mutableCopy(range_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @return A list containing the range. + */ + public java.util.List + getRangeList() { + return ((bitField0_ & 0x00000001) != 0) ? + java.util.Collections.unmodifiableList(range_) : range_; + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @return The count of range. + */ + public int getRangeCount() { + return range_.size(); + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @param index The index of the element to return. + * @return The range at the given index. + */ + public int getRange(int index) { + return range_.getInt(index); + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @param index The index to set the value at. + * @param value The range to set. + * @return This builder for chaining. + */ + public Builder setRange( + int index, int value) { + ensureRangeIsMutable(); + range_.setInt(index, value); + onChanged(); + return this; + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @param value The range to add. + * @return This builder for chaining. + */ + public Builder addRange(int value) { + ensureRangeIsMutable(); + range_.addInt(value); + onChanged(); + return this; + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @param values The range to add. + * @return This builder for chaining. + */ + public Builder addAllRange( + java.lang.Iterable values) { + ensureRangeIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, range_); + onChanged(); + return this; + } + /** + *
+       * Half-open [start, end) range of this occurrence. Must be exactly three or four
+       * elements:
+       * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+       * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+       *   is inferred to have the same value as the start line.
+       * It is allowed for the range to be empty (i.e. start==end).
+       * Line numbers and characters are always 0-based. Make sure to increment the
+       * line/character values before displaying them in an editor-like UI because
+       * editors conventionally use 1-based numbers.
+       * The 'character' value is interpreted based on the PositionEncoding for
+       * the Document.
+       * Historical note: the original draft of this schema had a `Range` message
+       * type with `start` and `end` fields of type `Position`, mirroring LSP.
+       * Benchmarks revealed that this encoding was inefficient and that we could
+       * reduce the total payload size of an index by 50% by using `repeated int32`
+       * instead. The `repeated int32` encoding is admittedly more embarrassing to
+       * work with in some programming languages but we hope the performance
+       * improvements make up for it.
+       * 
+ * + * repeated int32 range = 1; + * @return This builder for chaining. + */ + public Builder clearRange() { + range_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + private java.lang.Object symbol_ = ""; + /** + *
+       * (optional) The symbol that appears at this position. See
+       * `SymbolInformation.symbol` for how to format symbols as strings.
+       * 
+ * + * string symbol = 2; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) The symbol that appears at this position. See
+       * `SymbolInformation.symbol` for how to format symbols as strings.
+       * 
+ * + * string symbol = 2; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) The symbol that appears at this position. See
+       * `SymbolInformation.symbol` for how to format symbols as strings.
+       * 
+ * + * string symbol = 2; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + symbol_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) The symbol that appears at this position. See
+       * `SymbolInformation.symbol` for how to format symbols as strings.
+       * 
+ * + * string symbol = 2; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + + symbol_ = getDefaultInstance().getSymbol(); + onChanged(); + return this; + } + /** + *
+       * (optional) The symbol that appears at this position. See
+       * `SymbolInformation.symbol` for how to format symbols as strings.
+       * 
+ * + * string symbol = 2; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + symbol_ = value; + onChanged(); + return this; + } + + private int symbolRoles_ ; + /** + *
+       * (optional) Bitset containing `SymbolRole`s in this occurrence.
+       * See `SymbolRole`'s documentation for how to read and write this field.
+       * 
+ * + * int32 symbol_roles = 3; + * @return The symbolRoles. + */ + @java.lang.Override + public int getSymbolRoles() { + return symbolRoles_; + } + /** + *
+       * (optional) Bitset containing `SymbolRole`s in this occurrence.
+       * See `SymbolRole`'s documentation for how to read and write this field.
+       * 
+ * + * int32 symbol_roles = 3; + * @param value The symbolRoles to set. + * @return This builder for chaining. + */ + public Builder setSymbolRoles(int value) { + + symbolRoles_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) Bitset containing `SymbolRole`s in this occurrence.
+       * See `SymbolRole`'s documentation for how to read and write this field.
+       * 
+ * + * int32 symbol_roles = 3; + * @return This builder for chaining. + */ + public Builder clearSymbolRoles() { + + symbolRoles_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList overrideDocumentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureOverrideDocumentationIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + overrideDocumentation_ = new com.google.protobuf.LazyStringArrayList(overrideDocumentation_); + bitField0_ |= 0x00000002; + } + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @return A list containing the overrideDocumentation. + */ + public com.google.protobuf.ProtocolStringList + getOverrideDocumentationList() { + return overrideDocumentation_.getUnmodifiableView(); + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @return The count of overrideDocumentation. + */ + public int getOverrideDocumentationCount() { + return overrideDocumentation_.size(); + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + public java.lang.String getOverrideDocumentation(int index) { + return overrideDocumentation_.get(index); + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + public com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index) { + return overrideDocumentation_.getByteString(index); + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param index The index to set the value at. + * @param value The overrideDocumentation to set. + * @return This builder for chaining. + */ + public Builder setOverrideDocumentation( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param value The overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addOverrideDocumentation( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.add(value); + onChanged(); + return this; + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param values The overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addAllOverrideDocumentation( + java.lang.Iterable values) { + ensureOverrideDocumentationIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, overrideDocumentation_); + onChanged(); + return this; + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @return This builder for chaining. + */ + public Builder clearOverrideDocumentation() { + overrideDocumentation_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+       * (optional) CommonMark-formatted documentation for this specific range. If
+       * empty, the `Symbol.documentation` field is used instead. One example
+       * where this field might be useful is when the symbol represents a generic
+       * function (with abstract type parameters such as `List<T>`) and at this
+       * occurrence we know the exact values (such as `List<String>`).
+       * This field can also be used for dynamically or gradually typed languages,
+       * which commonly allow for type-changing assignment.
+       * 
+ * + * repeated string override_documentation = 4; + * @param value The bytes of the overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addOverrideDocumentationBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.add(value); + onChanged(); + return this; + } + + private int syntaxKind_ = 0; + /** + *
+       * (optional) What syntax highlighting class should be used for this range?
+       * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The enum numeric value on the wire for syntaxKind. + */ + @java.lang.Override public int getSyntaxKindValue() { + return syntaxKind_; + } + /** + *
+       * (optional) What syntax highlighting class should be used for this range?
+       * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @param value The enum numeric value on the wire for syntaxKind to set. + * @return This builder for chaining. + */ + public Builder setSyntaxKindValue(int value) { + + syntaxKind_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) What syntax highlighting class should be used for this range?
+       * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return The syntaxKind. + */ + @java.lang.Override + public scip.Scip.SyntaxKind getSyntaxKind() { + @SuppressWarnings("deprecation") + scip.Scip.SyntaxKind result = scip.Scip.SyntaxKind.valueOf(syntaxKind_); + return result == null ? scip.Scip.SyntaxKind.UNRECOGNIZED : result; + } + /** + *
+       * (optional) What syntax highlighting class should be used for this range?
+       * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @param value The syntaxKind to set. + * @return This builder for chaining. + */ + public Builder setSyntaxKind(scip.Scip.SyntaxKind value) { + if (value == null) { + throw new NullPointerException(); + } + + syntaxKind_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * (optional) What syntax highlighting class should be used for this range?
+       * 
+ * + * .scip.SyntaxKind syntax_kind = 5; + * @return This builder for chaining. + */ + public Builder clearSyntaxKind() { + + syntaxKind_ = 0; + onChanged(); + return this; + } + + private java.util.List diagnostics_ = + java.util.Collections.emptyList(); + private void ensureDiagnosticsIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + diagnostics_ = new java.util.ArrayList(diagnostics_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Diagnostic, scip.Scip.Diagnostic.Builder, scip.Scip.DiagnosticOrBuilder> diagnosticsBuilder_; + + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public java.util.List getDiagnosticsList() { + if (diagnosticsBuilder_ == null) { + return java.util.Collections.unmodifiableList(diagnostics_); + } else { + return diagnosticsBuilder_.getMessageList(); + } + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public int getDiagnosticsCount() { + if (diagnosticsBuilder_ == null) { + return diagnostics_.size(); + } else { + return diagnosticsBuilder_.getCount(); + } + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public scip.Scip.Diagnostic getDiagnostics(int index) { + if (diagnosticsBuilder_ == null) { + return diagnostics_.get(index); + } else { + return diagnosticsBuilder_.getMessage(index); + } + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder setDiagnostics( + int index, scip.Scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.set(index, value); + onChanged(); + } else { + diagnosticsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder setDiagnostics( + int index, scip.Scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.set(index, builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder addDiagnostics(scip.Scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.add(value); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder addDiagnostics( + int index, scip.Scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.add(index, value); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder addDiagnostics( + scip.Scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.add(builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder addDiagnostics( + int index, scip.Scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.add(index, builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder addAllDiagnostics( + java.lang.Iterable values) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, diagnostics_); + onChanged(); + } else { + diagnosticsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder clearDiagnostics() { + if (diagnosticsBuilder_ == null) { + diagnostics_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + diagnosticsBuilder_.clear(); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public Builder removeDiagnostics(int index) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.remove(index); + onChanged(); + } else { + diagnosticsBuilder_.remove(index); + } + return this; + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public scip.Scip.Diagnostic.Builder getDiagnosticsBuilder( + int index) { + return getDiagnosticsFieldBuilder().getBuilder(index); + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public scip.Scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index) { + if (diagnosticsBuilder_ == null) { + return diagnostics_.get(index); } else { + return diagnosticsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public java.util.List + getDiagnosticsOrBuilderList() { + if (diagnosticsBuilder_ != null) { + return diagnosticsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(diagnostics_); + } + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public scip.Scip.Diagnostic.Builder addDiagnosticsBuilder() { + return getDiagnosticsFieldBuilder().addBuilder( + scip.Scip.Diagnostic.getDefaultInstance()); + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public scip.Scip.Diagnostic.Builder addDiagnosticsBuilder( + int index) { + return getDiagnosticsFieldBuilder().addBuilder( + index, scip.Scip.Diagnostic.getDefaultInstance()); + } + /** + *
+       * (optional) Diagnostics that have been reported for this specific range.
+       * 
+ * + * repeated .scip.Diagnostic diagnostics = 6; + */ + public java.util.List + getDiagnosticsBuilderList() { + return getDiagnosticsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Diagnostic, scip.Scip.Diagnostic.Builder, scip.Scip.DiagnosticOrBuilder> + getDiagnosticsFieldBuilder() { + if (diagnosticsBuilder_ == null) { + diagnosticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + scip.Scip.Diagnostic, scip.Scip.Diagnostic.Builder, scip.Scip.DiagnosticOrBuilder>( + diagnostics_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + diagnostics_ = null; + } + return diagnosticsBuilder_; + } + + private com.google.protobuf.Internal.IntList enclosingRange_ = emptyIntList(); + private void ensureEnclosingRangeIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + enclosingRange_ = mutableCopy(enclosingRange_); + bitField0_ |= 0x00000008; + } + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @return A list containing the enclosingRange. + */ + public java.util.List + getEnclosingRangeList() { + return ((bitField0_ & 0x00000008) != 0) ? + java.util.Collections.unmodifiableList(enclosingRange_) : enclosingRange_; + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @return The count of enclosingRange. + */ + public int getEnclosingRangeCount() { + return enclosingRange_.size(); + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + public int getEnclosingRange(int index) { + return enclosingRange_.getInt(index); + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @param index The index to set the value at. + * @param value The enclosingRange to set. + * @return This builder for chaining. + */ + public Builder setEnclosingRange( + int index, int value) { + ensureEnclosingRangeIsMutable(); + enclosingRange_.setInt(index, value); + onChanged(); + return this; + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @param value The enclosingRange to add. + * @return This builder for chaining. + */ + public Builder addEnclosingRange(int value) { + ensureEnclosingRangeIsMutable(); + enclosingRange_.addInt(value); + onChanged(); + return this; + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @param values The enclosingRange to add. + * @return This builder for chaining. + */ + public Builder addAllEnclosingRange( + java.lang.Iterable values) { + ensureEnclosingRangeIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, enclosingRange_); + onChanged(); + return this; + } + /** + *
+       * (optional) Using the same encoding as the sibling `range` field, half-open
+       * source range of the nearest non-trivial enclosing AST node. This range must
+       * enclose the `range` field. Example applications that make use of the
+       * enclosing_range field:
+       * - Call hierarchies: to determine what symbols are references from the body
+       *   of a function
+       * - Symbol outline: to display breadcrumbs from the cursor position to the
+       *   root of the file
+       * - Expand selection: to select the nearest enclosing AST node.
+       * - Highlight range: to indicate the AST expression that is associated with a
+       *   hover popover
+       * For definition occurrences, the enclosing range should indicate the
+       * start/end bounds of the entire definition AST node, including
+       * documentation.
+       * ```
+       * const n = 3
+       *       ^ range
+       * ^^^^^^^^^^^ enclosing_range
+       * /** Parses the string into something */
+       * ^ enclosing_range start --------------------------------------|
+       * function parse(input string): string {                        |
+       *          ^^^^^ range                                          |
+       *     return input.slice(n)                                     |
+       * }                                                             |
+       * ^ enclosing_range end <---------------------------------------|
+       * ```
+       * Any attributes/decorators/attached macros should also be part of the
+       * enclosing range.
+       * ```python
+       * @cache
+       * ^ enclosing_range start---------------------|
+       * def factorial(n):                           |
+       *     return n * factorial(n-1) if n else 1   |
+       * < enclosing_range end-----------------------|
+       * ```
+       * For reference occurrences, the enclosing range should indicate the start/end
+       * bounds of the parent expression.
+       * ```
+       * const a = a.b
+       *             ^ range
+       *           ^^^ enclosing_range
+       * const b = a.b(41).f(42).g(43)
+       *                   ^ range
+       *           ^^^^^^^^^^^^^ enclosing_range
+       * ```
+       * 
+ * + * repeated int32 enclosing_range = 7; + * @return This builder for chaining. + */ + public Builder clearEnclosingRange() { + enclosingRange_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Occurrence) + } + + // @@protoc_insertion_point(class_scope:scip.Occurrence) + private static final scip.Scip.Occurrence DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Occurrence(); + } + + public static scip.Scip.Occurrence getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Occurrence parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Occurrence(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Occurrence getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DiagnosticOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Diagnostic) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1; + * @return The enum numeric value on the wire for severity. + */ + int getSeverityValue(); + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1; + * @return The severity. + */ + scip.Scip.Severity getSeverity(); + + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2; + * @return The code. + */ + java.lang.String getCode(); + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2; + * @return The bytes for code. + */ + com.google.protobuf.ByteString + getCodeBytes(); + + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3; + * @return The message. + */ + java.lang.String getMessage(); + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4; + * @return The source. + */ + java.lang.String getSource(); + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4; + * @return The bytes for source. + */ + com.google.protobuf.ByteString + getSourceBytes(); + + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the tags. + */ + java.util.List getTagsList(); + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return The count of tags. + */ + int getTagsCount(); + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + scip.Scip.DiagnosticTag getTags(int index); + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the enum numeric values on the wire for tags. + */ + java.util.List + getTagsValueList(); + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + int getTagsValue(int index); + } + /** + *
+   * Represents a diagnostic, such as a compiler error or warning, which should be
+   * reported for a document.
+   * 
+ * + * Protobuf type {@code scip.Diagnostic} + */ + public static final class Diagnostic extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:scip.Diagnostic) + DiagnosticOrBuilder { + private static final long serialVersionUID = 0L; + // Use Diagnostic.newBuilder() to construct. + private Diagnostic(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private Diagnostic() { + severity_ = 0; + code_ = ""; + message_ = ""; + source_ = ""; + tags_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Diagnostic(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Diagnostic( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int rawValue = input.readEnum(); + + severity_ = rawValue; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + code_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + message_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + source_ = s; + break; + } + case 40: { + int rawValue = input.readEnum(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + tags_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + tags_.add(rawValue); + break; + } + case 42: { + int length = input.readRawVarint32(); + int oldLimit = input.pushLimit(length); + while(input.getBytesUntilLimit() > 0) { + int rawValue = input.readEnum(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + tags_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + tags_.add(rawValue); + } + input.popLimit(oldLimit); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + tags_ = java.util.Collections.unmodifiableList(tags_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Diagnostic_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Diagnostic.class, scip.Scip.Diagnostic.Builder.class); + } + + public static final int SEVERITY_FIELD_NUMBER = 1; + private int severity_; + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1; + * @return The enum numeric value on the wire for severity. + */ + @java.lang.Override public int getSeverityValue() { + return severity_; + } + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1; + * @return The severity. + */ + @java.lang.Override public scip.Scip.Severity getSeverity() { + @SuppressWarnings("deprecation") + scip.Scip.Severity result = scip.Scip.Severity.valueOf(severity_); + return result == null ? scip.Scip.Severity.UNRECOGNIZED : result; + } + + public static final int CODE_FIELD_NUMBER = 2; + private volatile java.lang.Object code_; + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2; + * @return The code. + */ + @java.lang.Override + public java.lang.String getCode() { + java.lang.Object ref = code_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + code_ = s; + return s; + } + } + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2; + * @return The bytes for code. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCodeBytes() { + java.lang.Object ref = code_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + code_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MESSAGE_FIELD_NUMBER = 3; + private volatile java.lang.Object message_; + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_FIELD_NUMBER = 4; + private volatile java.lang.Object source_; + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4; + * @return The source. + */ + @java.lang.Override + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } + } + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4; + * @return The bytes for source. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TAGS_FIELD_NUMBER = 5; + private java.util.List tags_; + private static final com.google.protobuf.Internal.ListAdapter.Converter< + java.lang.Integer, scip.Scip.DiagnosticTag> tags_converter_ = + new com.google.protobuf.Internal.ListAdapter.Converter< + java.lang.Integer, scip.Scip.DiagnosticTag>() { + public scip.Scip.DiagnosticTag convert(java.lang.Integer from) { + @SuppressWarnings("deprecation") + scip.Scip.DiagnosticTag result = scip.Scip.DiagnosticTag.valueOf(from); + return result == null ? scip.Scip.DiagnosticTag.UNRECOGNIZED : result; + } + }; + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the tags. + */ + @java.lang.Override + public java.util.List getTagsList() { + return new com.google.protobuf.Internal.ListAdapter< + java.lang.Integer, scip.Scip.DiagnosticTag>(tags_, tags_converter_); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return The count of tags. + */ + @java.lang.Override + public int getTagsCount() { + return tags_.size(); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + @java.lang.Override + public scip.Scip.DiagnosticTag getTags(int index) { + return tags_converter_.convert(tags_.get(index)); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the enum numeric values on the wire for tags. + */ + @java.lang.Override + public java.util.List + getTagsValueList() { + return tags_; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + @java.lang.Override + public int getTagsValue(int index) { + return tags_.get(index); + } + private int tagsMemoizedSerializedSize; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (severity_ != scip.Scip.Severity.UnspecifiedSeverity.getNumber()) { + output.writeEnum(1, severity_); + } + if (!getCodeBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, code_); + } + if (!getMessageBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, message_); + } + if (!getSourceBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, source_); + } + if (getTagsList().size() > 0) { + output.writeUInt32NoTag(42); + output.writeUInt32NoTag(tagsMemoizedSerializedSize); + } + for (int i = 0; i < tags_.size(); i++) { + output.writeEnumNoTag(tags_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (severity_ != scip.Scip.Severity.UnspecifiedSeverity.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, severity_); + } + if (!getCodeBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, code_); + } + if (!getMessageBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, message_); + } + if (!getSourceBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, source_); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeEnumSizeNoTag(tags_.get(i)); + } + size += dataSize; + if (!getTagsList().isEmpty()) { size += 1; + size += com.google.protobuf.CodedOutputStream + .computeUInt32SizeNoTag(dataSize); + }tagsMemoizedSerializedSize = dataSize; + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof scip.Scip.Diagnostic)) { + return super.equals(obj); + } + scip.Scip.Diagnostic other = (scip.Scip.Diagnostic) obj; + + if (severity_ != other.severity_) return false; + if (!getCode() + .equals(other.getCode())) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (!getSource() + .equals(other.getSource())) return false; + if (!tags_.equals(other.tags_)) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SEVERITY_FIELD_NUMBER; + hash = (53 * hash) + severity_; + hash = (37 * hash) + CODE_FIELD_NUMBER; + hash = (53 * hash) + getCode().hashCode(); + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + hash = (37 * hash) + SOURCE_FIELD_NUMBER; + hash = (53 * hash) + getSource().hashCode(); + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + tags_.hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static scip.Scip.Diagnostic parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Diagnostic parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Diagnostic parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Diagnostic parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Diagnostic parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static scip.Scip.Diagnostic parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static scip.Scip.Diagnostic parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Diagnostic parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Diagnostic parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static scip.Scip.Diagnostic parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static scip.Scip.Diagnostic parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static scip.Scip.Diagnostic parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(scip.Scip.Diagnostic prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Represents a diagnostic, such as a compiler error or warning, which should be
+     * reported for a document.
+     * 
+ * + * Protobuf type {@code scip.Diagnostic} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Diagnostic) + scip.Scip.DiagnosticOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return scip.Scip.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return scip.Scip.internal_static_scip_Diagnostic_fieldAccessorTable + .ensureFieldAccessorsInitialized( + scip.Scip.Diagnostic.class, scip.Scip.Diagnostic.Builder.class); + } + + // Construct using scip.Scip.Diagnostic.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + severity_ = 0; + + code_ = ""; + + message_ = ""; + + source_ = ""; + + tags_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return scip.Scip.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + public scip.Scip.Diagnostic getDefaultInstanceForType() { + return scip.Scip.Diagnostic.getDefaultInstance(); + } + + @java.lang.Override + public scip.Scip.Diagnostic build() { + scip.Scip.Diagnostic result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public scip.Scip.Diagnostic buildPartial() { + scip.Scip.Diagnostic result = new scip.Scip.Diagnostic(this); + int from_bitField0_ = bitField0_; + result.severity_ = severity_; + result.code_ = code_; + result.message_ = message_; + result.source_ = source_; + if (((bitField0_ & 0x00000001) != 0)) { + tags_ = java.util.Collections.unmodifiableList(tags_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.tags_ = tags_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof scip.Scip.Diagnostic) { + return mergeFrom((scip.Scip.Diagnostic)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(scip.Scip.Diagnostic other) { + if (other == scip.Scip.Diagnostic.getDefaultInstance()) return this; + if (other.severity_ != 0) { + setSeverityValue(other.getSeverityValue()); + } + if (!other.getCode().isEmpty()) { + code_ = other.code_; + onChanged(); + } + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + onChanged(); + } + if (!other.getSource().isEmpty()) { + source_ = other.source_; + onChanged(); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + scip.Scip.Diagnostic parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (scip.Scip.Diagnostic) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int severity_ = 0; + /** + *
+       * Should this diagnostic be reported as an error, warning, info, or hint?
+       * 
+ * + * .scip.Severity severity = 1; + * @return The enum numeric value on the wire for severity. + */ + @java.lang.Override public int getSeverityValue() { + return severity_; + } + /** + *
+       * Should this diagnostic be reported as an error, warning, info, or hint?
+       * 
+ * + * .scip.Severity severity = 1; + * @param value The enum numeric value on the wire for severity to set. + * @return This builder for chaining. + */ + public Builder setSeverityValue(int value) { + + severity_ = value; + onChanged(); + return this; + } + /** + *
+       * Should this diagnostic be reported as an error, warning, info, or hint?
+       * 
+ * + * .scip.Severity severity = 1; + * @return The severity. + */ + @java.lang.Override + public scip.Scip.Severity getSeverity() { + @SuppressWarnings("deprecation") + scip.Scip.Severity result = scip.Scip.Severity.valueOf(severity_); + return result == null ? scip.Scip.Severity.UNRECOGNIZED : result; + } + /** + *
+       * Should this diagnostic be reported as an error, warning, info, or hint?
+       * 
+ * + * .scip.Severity severity = 1; + * @param value The severity to set. + * @return This builder for chaining. + */ + public Builder setSeverity(scip.Scip.Severity value) { + if (value == null) { + throw new NullPointerException(); + } + + severity_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * Should this diagnostic be reported as an error, warning, info, or hint?
+       * 
+ * + * .scip.Severity severity = 1; + * @return This builder for chaining. + */ + public Builder clearSeverity() { + + severity_ = 0; + onChanged(); + return this; + } + + private java.lang.Object code_ = ""; + /** + *
+       * (optional) Code of this diagnostic, which might appear in the user interface.
+       * 
+ * + * string code = 2; + * @return The code. + */ + public java.lang.String getCode() { + java.lang.Object ref = code_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + code_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) Code of this diagnostic, which might appear in the user interface.
+       * 
+ * + * string code = 2; + * @return The bytes for code. + */ + public com.google.protobuf.ByteString + getCodeBytes() { + java.lang.Object ref = code_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + code_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) Code of this diagnostic, which might appear in the user interface.
+       * 
+ * + * string code = 2; + * @param value The code to set. + * @return This builder for chaining. + */ + public Builder setCode( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + code_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) Code of this diagnostic, which might appear in the user interface.
+       * 
+ * + * string code = 2; + * @return This builder for chaining. + */ + public Builder clearCode() { + + code_ = getDefaultInstance().getCode(); + onChanged(); + return this; + } + /** + *
+       * (optional) Code of this diagnostic, which might appear in the user interface.
+       * 
+ * + * string code = 2; + * @param value The bytes for code to set. + * @return This builder for chaining. + */ + public Builder setCodeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + code_ = value; + onChanged(); + return this; + } + + private java.lang.Object message_ = ""; + /** + *
+       * Message of this diagnostic.
+       * 
+ * + * string message = 3; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Message of this diagnostic.
+       * 
+ * + * string message = 3; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Message of this diagnostic.
+       * 
+ * + * string message = 3; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + message_ = value; + onChanged(); + return this; + } + /** + *
+       * Message of this diagnostic.
+       * 
+ * + * string message = 3; + * @return This builder for chaining. + */ + public Builder clearMessage() { + + message_ = getDefaultInstance().getMessage(); + onChanged(); + return this; + } + /** + *
+       * Message of this diagnostic.
+       * 
+ * + * string message = 3; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + message_ = value; + onChanged(); + return this; + } + + private java.lang.Object source_ = ""; + /** + *
+       * (optional) Human-readable string describing the source of this diagnostic, e.g.
+       * 'typescript' or 'super lint'.
+       * 
+ * + * string source = 4; + * @return The source. + */ + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * (optional) Human-readable string describing the source of this diagnostic, e.g.
+       * 'typescript' or 'super lint'.
+       * 
+ * + * string source = 4; + * @return The bytes for source. + */ + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * (optional) Human-readable string describing the source of this diagnostic, e.g.
+       * 'typescript' or 'super lint'.
+       * 
+ * + * string source = 4; + * @param value The source to set. + * @return This builder for chaining. + */ + public Builder setSource( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + source_ = value; + onChanged(); + return this; + } + /** + *
+       * (optional) Human-readable string describing the source of this diagnostic, e.g.
+       * 'typescript' or 'super lint'.
+       * 
+ * + * string source = 4; + * @return This builder for chaining. + */ + public Builder clearSource() { + + source_ = getDefaultInstance().getSource(); + onChanged(); + return this; + } + /** + *
+       * (optional) Human-readable string describing the source of this diagnostic, e.g.
+       * 'typescript' or 'super lint'.
+       * 
+ * + * string source = 4; + * @param value The bytes for source to set. + * @return This builder for chaining. + */ + public Builder setSourceBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + source_ = value; + onChanged(); + return this; + } + + private java.util.List tags_ = + java.util.Collections.emptyList(); + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + tags_ = new java.util.ArrayList(tags_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the tags. + */ + public java.util.List getTagsList() { + return new com.google.protobuf.Internal.ListAdapter< + java.lang.Integer, scip.Scip.DiagnosticTag>(tags_, tags_converter_); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return The count of tags. + */ + public int getTagsCount() { + return tags_.size(); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + public scip.Scip.DiagnosticTag getTags(int index) { + return tags_converter_.convert(tags_.get(index)); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index to set the value at. + * @param value The tags to set. + * @return This builder for chaining. + */ + public Builder setTags( + int index, scip.Scip.DiagnosticTag value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value.getNumber()); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param value The tags to add. + * @return This builder for chaining. + */ + public Builder addTags(scip.Scip.DiagnosticTag value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value.getNumber()); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param values The tags to add. + * @return This builder for chaining. + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + for (scip.Scip.DiagnosticTag value : values) { + tags_.add(value.getNumber()); + } + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return This builder for chaining. + */ + public Builder clearTags() { + tags_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @return A list containing the enum numeric values on the wire for tags. + */ + public java.util.List + getTagsValueList() { + return java.util.Collections.unmodifiableList(tags_); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + public int getTagsValue(int index) { + return tags_.get(index); + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + * @return This builder for chaining. + */ + public Builder setTagsValue( + int index, int value) { + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param value The enum numeric value on the wire for tags to add. + * @return This builder for chaining. + */ + public Builder addTagsValue(int value) { + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5; + * @param values The enum numeric values on the wire for tags to add. + * @return This builder for chaining. + */ + public Builder addAllTagsValue( + java.lang.Iterable values) { + ensureTagsIsMutable(); + for (int value : values) { + tags_.add(value); + } + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:scip.Diagnostic) + } + + // @@protoc_insertion_point(class_scope:scip.Diagnostic) + private static final scip.Scip.Diagnostic DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new scip.Scip.Diagnostic(); + } + + public static scip.Scip.Diagnostic getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Diagnostic parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Diagnostic(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public scip.Scip.Diagnostic getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Index_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Index_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Metadata_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Metadata_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_ToolInfo_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_ToolInfo_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Document_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Document_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Symbol_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Symbol_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Package_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Package_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Descriptor_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Descriptor_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_SymbolInformation_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_SymbolInformation_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Relationship_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Relationship_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Occurrence_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Occurrence_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Diagnostic_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_scip_Diagnostic_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\020proto/scip.proto\022\004scip\"\177\n\005Index\022 \n\010met" + + "adata\030\001 \001(\0132\016.scip.Metadata\022!\n\tdocuments" + + "\030\002 \003(\0132\016.scip.Document\0221\n\020external_symbo" + + "ls\030\003 \003(\0132\027.scip.SymbolInformation\"\237\001\n\010Me" + + "tadata\022&\n\007version\030\001 \001(\0162\025.scip.ProtocolV" + + "ersion\022!\n\ttool_info\030\002 \001(\0132\016.scip.ToolInf" + + "o\022\024\n\014project_root\030\003 \001(\t\0222\n\026text_document" + + "_encoding\030\004 \001(\0162\022.scip.TextEncoding\"<\n\010T" + + "oolInfo\022\014\n\004name\030\001 \001(\t\022\017\n\007version\030\002 \001(\t\022\021" + + "\n\targuments\030\003 \003(\t\"\305\001\n\010Document\022\020\n\010langua" + + "ge\030\004 \001(\t\022\025\n\rrelative_path\030\001 \001(\t\022%\n\013occur" + + "rences\030\002 \003(\0132\020.scip.Occurrence\022(\n\007symbol" + + "s\030\003 \003(\0132\027.scip.SymbolInformation\022\014\n\004text" + + "\030\005 \001(\t\0221\n\021position_encoding\030\006 \001(\0162\026.scip" + + ".PositionEncoding\"_\n\006Symbol\022\016\n\006scheme\030\001 " + + "\001(\t\022\036\n\007package\030\002 \001(\0132\r.scip.Package\022%\n\013d" + + "escriptors\030\003 \003(\0132\020.scip.Descriptor\"9\n\007Pa" + + "ckage\022\017\n\007manager\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\017\n\007" + + "version\030\003 \001(\t\"\202\002\n\nDescriptor\022\014\n\004name\030\001 \001" + + "(\t\022\025\n\rdisambiguator\030\002 \001(\t\022\'\n\006suffix\030\003 \001(" + + "\0162\027.scip.Descriptor.Suffix\"\245\001\n\006Suffix\022\025\n" + + "\021UnspecifiedSuffix\020\000\022\r\n\tNamespace\020\001\022\017\n\007P" + + "ackage\020\001\032\002\010\001\022\010\n\004Type\020\002\022\010\n\004Term\020\003\022\n\n\006Meth" + + "od\020\004\022\021\n\rTypeParameter\020\005\022\r\n\tParameter\020\006\022\010" + + "\n\004Meta\020\007\022\t\n\005Local\020\010\022\t\n\005Macro\020\t\032\002\020\001\"\360\013\n\021S" + + "ymbolInformation\022\016\n\006symbol\030\001 \001(\t\022\025\n\rdocu" + + "mentation\030\003 \003(\t\022)\n\rrelationships\030\004 \003(\0132\022" + + ".scip.Relationship\022*\n\004kind\030\005 \001(\0162\034.scip." + + "SymbolInformation.Kind\022\024\n\014display_name\030\006" + + " \001(\t\022/\n\027signature_documentation\030\007 \001(\0132\016." + + "scip.Document\022\030\n\020enclosing_symbol\030\010 \001(\t\"" + + "\373\t\n\004Kind\022\023\n\017UnspecifiedKind\020\000\022\022\n\016Abstrac" + + "tMethod\020B\022\014\n\010Accessor\020H\022\t\n\005Array\020\001\022\r\n\tAs" + + "sertion\020\002\022\022\n\016AssociatedType\020\003\022\r\n\tAttribu" + + "te\020\004\022\t\n\005Axiom\020\005\022\013\n\007Boolean\020\006\022\t\n\005Class\020\007\022" + + "\013\n\007Concept\020V\022\014\n\010Constant\020\010\022\017\n\013Constructo" + + "r\020\t\022\014\n\010Contract\020>\022\016\n\nDataFamily\020\n\022\014\n\010Del" + + "egate\020I\022\010\n\004Enum\020\013\022\016\n\nEnumMember\020\014\022\t\n\005Err" + + "or\020?\022\t\n\005Event\020\r\022\r\n\tExtension\020T\022\010\n\004Fact\020\016" + + "\022\t\n\005Field\020\017\022\010\n\004File\020\020\022\014\n\010Function\020\021\022\n\n\006G" + + "etter\020\022\022\013\n\007Grammar\020\023\022\014\n\010Instance\020\024\022\r\n\tIn" + + "terface\020\025\022\007\n\003Key\020\026\022\010\n\004Lang\020\027\022\t\n\005Lemma\020\030\022" + + "\013\n\007Library\020@\022\t\n\005Macro\020\031\022\n\n\006Method\020\032\022\017\n\013M" + + "ethodAlias\020J\022\022\n\016MethodReceiver\020\033\022\027\n\023Meth" + + "odSpecification\020C\022\013\n\007Message\020\034\022\t\n\005Mixin\020" + + "U\022\014\n\010Modifier\020A\022\n\n\006Module\020\035\022\r\n\tNamespace" + + "\020\036\022\010\n\004Null\020\037\022\n\n\006Number\020 \022\n\n\006Object\020!\022\014\n\010" + + "Operator\020\"\022\013\n\007Package\020#\022\021\n\rPackageObject" + + "\020$\022\r\n\tParameter\020%\022\022\n\016ParameterLabel\020&\022\013\n" + + "\007Pattern\020\'\022\r\n\tPredicate\020(\022\014\n\010Property\020)\022" + + "\014\n\010Protocol\020*\022\022\n\016ProtocolMethod\020D\022\025\n\021Pur" + + "eVirtualMethod\020E\022\017\n\013Quasiquoter\020+\022\021\n\rSel" + + "fParameter\020,\022\n\n\006Setter\020-\022\r\n\tSignature\020.\022" + + "\022\n\016SingletonClass\020K\022\023\n\017SingletonMethod\020L" + + "\022\024\n\020StaticDataMember\020M\022\017\n\013StaticEvent\020N\022" + + "\017\n\013StaticField\020O\022\020\n\014StaticMethod\020P\022\022\n\016St" + + "aticProperty\020Q\022\022\n\016StaticVariable\020R\022\n\n\006St" + + "ring\0200\022\n\n\006Struct\0201\022\r\n\tSubscript\020/\022\n\n\006Tac" + + "tic\0202\022\013\n\007Theorem\0203\022\021\n\rThisParameter\0204\022\t\n" + + "\005Trait\0205\022\017\n\013TraitMethod\020F\022\010\n\004Type\0206\022\r\n\tT" + + "ypeAlias\0207\022\r\n\tTypeClass\0208\022\023\n\017TypeClassMe" + + "thod\020G\022\016\n\nTypeFamily\0209\022\021\n\rTypeParameter\020" + + ":\022\t\n\005Union\020;\022\t\n\005Value\020<\022\014\n\010Variable\020=\"\202\001" + + "\n\014Relationship\022\016\n\006symbol\030\001 \001(\t\022\024\n\014is_ref" + + "erence\030\002 \001(\010\022\031\n\021is_implementation\030\003 \001(\010\022" + + "\032\n\022is_type_definition\030\004 \001(\010\022\025\n\ris_defini" + + "tion\030\005 \001(\010\"\310\001\n\nOccurrence\022\r\n\005range\030\001 \003(\005" + + "\022\016\n\006symbol\030\002 \001(\t\022\024\n\014symbol_roles\030\003 \001(\005\022\036" + + "\n\026override_documentation\030\004 \003(\t\022%\n\013syntax" + + "_kind\030\005 \001(\0162\020.scip.SyntaxKind\022%\n\013diagnos" + + "tics\030\006 \003(\0132\020.scip.Diagnostic\022\027\n\017enclosin" + + "g_range\030\007 \003(\005\"\200\001\n\nDiagnostic\022 \n\010severity" + + "\030\001 \001(\0162\016.scip.Severity\022\014\n\004code\030\002 \001(\t\022\017\n\007" + + "message\030\003 \001(\t\022\016\n\006source\030\004 \001(\t\022!\n\004tags\030\005 " + + "\003(\0162\023.scip.DiagnosticTag*1\n\017ProtocolVers" + + "ion\022\036\n\032UnspecifiedProtocolVersion\020\000*@\n\014T" + + "extEncoding\022\033\n\027UnspecifiedTextEncoding\020\000" + + "\022\010\n\004UTF8\020\001\022\t\n\005UTF16\020\002*\244\001\n\020PositionEncodi" + + "ng\022\037\n\033UnspecifiedPositionEncoding\020\000\022#\n\037U" + + "TF8CodeUnitOffsetFromLineStart\020\001\022$\n UTF1" + + "6CodeUnitOffsetFromLineStart\020\002\022$\n UTF32C" + + "odeUnitOffsetFromLineStart\020\003*\224\001\n\nSymbolR" + + "ole\022\031\n\025UnspecifiedSymbolRole\020\000\022\016\n\nDefini" + + "tion\020\001\022\n\n\006Import\020\002\022\017\n\013WriteAccess\020\004\022\016\n\nR" + + "eadAccess\020\010\022\r\n\tGenerated\020\020\022\010\n\004Test\020 \022\025\n\021" + + "ForwardDefinition\020@*\352\006\n\nSyntaxKind\022\031\n\025Un" + + "specifiedSyntaxKind\020\000\022\013\n\007Comment\020\001\022\030\n\024Pu" + + "nctuationDelimiter\020\002\022\026\n\022PunctuationBrack" + + "et\020\003\022\013\n\007Keyword\020\004\022\031\n\021IdentifierKeyword\020\004" + + "\032\002\010\001\022\026\n\022IdentifierOperator\020\005\022\016\n\nIdentifi" + + "er\020\006\022\025\n\021IdentifierBuiltin\020\007\022\022\n\016Identifie" + + "rNull\020\010\022\026\n\022IdentifierConstant\020\t\022\033\n\027Ident" + + "ifierMutableGlobal\020\n\022\027\n\023IdentifierParame" + + "ter\020\013\022\023\n\017IdentifierLocal\020\014\022\026\n\022Identifier" + + "Shadowed\020\r\022\027\n\023IdentifierNamespace\020\016\022\030\n\020I" + + "dentifierModule\020\016\032\002\010\001\022\026\n\022IdentifierFunct" + + "ion\020\017\022 \n\034IdentifierFunctionDefinition\020\020\022" + + "\023\n\017IdentifierMacro\020\021\022\035\n\031IdentifierMacroD" + + "efinition\020\022\022\022\n\016IdentifierType\020\023\022\031\n\025Ident" + + "ifierBuiltinType\020\024\022\027\n\023IdentifierAttribut" + + "e\020\025\022\017\n\013RegexEscape\020\026\022\021\n\rRegexRepeated\020\027\022" + + "\021\n\rRegexWildcard\020\030\022\022\n\016RegexDelimiter\020\031\022\r" + + "\n\tRegexJoin\020\032\022\021\n\rStringLiteral\020\033\022\027\n\023Stri" + + "ngLiteralEscape\020\034\022\030\n\024StringLiteralSpecia" + + "l\020\035\022\024\n\020StringLiteralKey\020\036\022\024\n\020CharacterLi" + + "teral\020\037\022\022\n\016NumericLiteral\020 \022\022\n\016BooleanLi" + + "teral\020!\022\007\n\003Tag\020\"\022\020\n\014TagAttribute\020#\022\020\n\014Ta" + + "gDelimiter\020$\032\002\020\001*V\n\010Severity\022\027\n\023Unspecif" + + "iedSeverity\020\000\022\t\n\005Error\020\001\022\013\n\007Warning\020\002\022\017\n" + + "\013Information\020\003\022\010\n\004Hint\020\004*N\n\rDiagnosticTa" + + "g\022\034\n\030UnspecifiedDiagnosticTag\020\000\022\017\n\013Unnec" + + "essary\020\001\022\016\n\nDeprecated\020\002*\233\n\n\010Language\022\027\n" + + "\023UnspecifiedLanguage\020\000\022\010\n\004ABAP\020<\022\010\n\004Apex" + + "\020`\022\007\n\003APL\0201\022\007\n\003Ada\020\'\022\010\n\004Agda\020-\022\014\n\010AsciiD" + + "oc\020V\022\014\n\010Assembly\020:\022\007\n\003Awk\020B\022\007\n\003Bat\020D\022\n\n\006" + + "BibTeX\020Q\022\005\n\001C\020\"\022\t\n\005COBOL\020;\022\007\n\003CPP\020#\022\007\n\003C" + + "SS\020\032\022\n\n\006CSharp\020\001\022\013\n\007Clojure\020\010\022\020\n\014Coffees" + + "cript\020\025\022\016\n\nCommonLisp\020\t\022\007\n\003Coq\020/\022\010\n\004CUDA" + + "\020a\022\010\n\004Dart\020\003\022\n\n\006Delphi\0209\022\010\n\004Diff\020X\022\016\n\nDo" + + "ckerfile\020P\022\n\n\006Dyalog\0202\022\n\n\006Elixir\020\021\022\n\n\006Er" + + "lang\020\022\022\n\n\006FSharp\020*\022\010\n\004Fish\020A\022\010\n\004Flow\020\030\022\013" + + "\n\007Fortran\0208\022\016\n\nGit_Commit\020[\022\016\n\nGit_Confi" + + "g\020Y\022\016\n\nGit_Rebase\020\\\022\006\n\002Go\020!\022\013\n\007GraphQL\020b" + + "\022\n\n\006Groovy\020\007\022\010\n\004HTML\020\036\022\010\n\004Hack\020\024\022\016\n\nHand" + + "lebars\020Z\022\013\n\007Haskell\020,\022\t\n\005Idris\020.\022\007\n\003Ini\020" + + "H\022\005\n\001J\0203\022\010\n\004JSON\020K\022\010\n\004Java\020\006\022\016\n\nJavaScri" + + "pt\020\026\022\023\n\017JavaScriptReact\020]\022\013\n\007Jsonnet\020L\022\t" + + "\n\005Julia\0207\022\014\n\010Justfile\020m\022\n\n\006Kotlin\020\004\022\t\n\005L" + + "aTeX\020S\022\010\n\004Lean\0200\022\010\n\004Less\020\033\022\007\n\003Lua\020\014\022\010\n\004L" + + "uau\020l\022\014\n\010Makefile\020O\022\014\n\010Markdown\020T\022\n\n\006Mat" + + "lab\0204\022\n\n\006Nickel\020n\022\007\n\003Nix\020M\022\t\n\005OCaml\020)\022\017\n" + + "\013Objective_C\020$\022\021\n\rObjective_CPP\020%\022\n\n\006Pas" + + "cal\020c\022\007\n\003PHP\020\023\022\t\n\005PLSQL\020F\022\010\n\004Perl\020\r\022\016\n\nP" + + "owerShell\020C\022\n\n\006Prolog\020G\022\014\n\010Protobuf\020d\022\n\n" + + "\006Python\020\017\022\005\n\001R\0206\022\n\n\006Racket\020\013\022\010\n\004Raku\020\016\022\t" + + "\n\005Razor\020>\022\t\n\005Repro\020f\022\010\n\004ReST\020U\022\010\n\004Ruby\020\020" + + "\022\010\n\004Rust\020(\022\007\n\003SAS\020=\022\010\n\004SCSS\020\035\022\007\n\003SML\020+\022\007" + + "\n\003SQL\020E\022\010\n\004Sass\020\034\022\t\n\005Scala\020\005\022\n\n\006Scheme\020\n" + + "\022\017\n\013ShellScript\020@\022\013\n\007Skylark\020N\022\t\n\005Slang\020" + + "k\022\014\n\010Solidity\020_\022\n\n\006Svelte\020j\022\t\n\005Swift\020\002\022\007" + + "\n\003Tcl\020e\022\010\n\004TOML\020I\022\007\n\003TeX\020R\022\n\n\006Thrift\020g\022\016" + + "\n\nTypeScript\020\027\022\023\n\017TypeScriptReact\020^\022\013\n\007V" + + "erilog\020h\022\010\n\004VHDL\020i\022\017\n\013VisualBasic\020?\022\007\n\003V" + + "ue\020\031\022\013\n\007Wolfram\0205\022\007\n\003XML\020\037\022\007\n\003XSL\020 \022\010\n\004Y" + + "AML\020J\022\007\n\003Zig\020&B/Z-github.com/sourcegraph" + + "/scip/bindings/go/scip/b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_scip_Index_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_scip_Index_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Index_descriptor, + new java.lang.String[] { "Metadata", "Documents", "ExternalSymbols", }); + internal_static_scip_Metadata_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_scip_Metadata_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Metadata_descriptor, + new java.lang.String[] { "Version", "ToolInfo", "ProjectRoot", "TextDocumentEncoding", }); + internal_static_scip_ToolInfo_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_scip_ToolInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_ToolInfo_descriptor, + new java.lang.String[] { "Name", "Version", "Arguments", }); + internal_static_scip_Document_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_scip_Document_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Document_descriptor, + new java.lang.String[] { "Language", "RelativePath", "Occurrences", "Symbols", "Text", "PositionEncoding", }); + internal_static_scip_Symbol_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_scip_Symbol_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Symbol_descriptor, + new java.lang.String[] { "Scheme", "Package", "Descriptors", }); + internal_static_scip_Package_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_scip_Package_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Package_descriptor, + new java.lang.String[] { "Manager", "Name", "Version", }); + internal_static_scip_Descriptor_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_scip_Descriptor_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Descriptor_descriptor, + new java.lang.String[] { "Name", "Disambiguator", "Suffix", }); + internal_static_scip_SymbolInformation_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_scip_SymbolInformation_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_SymbolInformation_descriptor, + new java.lang.String[] { "Symbol", "Documentation", "Relationships", "Kind", "DisplayName", "SignatureDocumentation", "EnclosingSymbol", }); + internal_static_scip_Relationship_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_scip_Relationship_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Relationship_descriptor, + new java.lang.String[] { "Symbol", "IsReference", "IsImplementation", "IsTypeDefinition", "IsDefinition", }); + internal_static_scip_Occurrence_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_scip_Occurrence_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Occurrence_descriptor, + new java.lang.String[] { "Range", "Symbol", "SymbolRoles", "OverrideDocumentation", "SyntaxKind", "Diagnostics", "EnclosingRange", }); + internal_static_scip_Diagnostic_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_scip_Diagnostic_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_scip_Diagnostic_descriptor, + new java.lang.String[] { "Severity", "Code", "Message", "Source", "Tags", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/proto/scip.proto b/proto/scip.proto new file mode 100644 index 0000000..d21d0b2 --- /dev/null +++ b/proto/scip.proto @@ -0,0 +1,885 @@ +// An index contains one or more pieces of information about a given piece of +// source code or software artifact. Complementary information can be merged +// together from multiple sources to provide a unified code intelligence +// experience. +// +// Programs producing a file of this format is an "indexer" and may operate +// somewhere on the spectrum between precision, such as indexes produced by +// compiler-backed indexers, and heurstics, such as indexes produced by local +// syntax-directed analysis for scope rules. + +syntax = "proto3"; + +package scip; + +option go_package = "github.com/sourcegraph/scip/bindings/go/scip/"; + +// Index represents a complete SCIP index for a workspace this is rooted at a +// single directory. An Index message payload can have a large memory footprint +// and it's therefore recommended to emit and consume an Index payload one field +// value at a time. To permit streaming consumption of an Index payload, the +// `metadata` field must appear at the start of the stream and must only appear +// once in the stream. Other field values may appear in any order. +message Index { + // Metadata about this index. + Metadata metadata = 1; + // Documents that belong to this index. + repeated Document documents = 2; + // (optional) Symbols that are referenced from this index but are defined in + // an external package (a separate `Index` message). Leave this field empty + // if you assume the external package will get indexed separately. If the + // external package won't get indexed for some reason then you can use this + // field to provide hover documentation for those external symbols. + repeated SymbolInformation external_symbols = 3; + // IMPORTANT: When adding a new field to `Index` here, add a matching + // function in `IndexVisitor` and update `ParseStreaming`. +} + +message Metadata { + // Which version of this protocol was used to generate this index? + ProtocolVersion version = 1; + // Information about the tool that produced this index. + ToolInfo tool_info = 2; + // URI-encoded absolute path to the root directory of this index. All + // documents in this index must appear in a subdirectory of this root + // directory. + string project_root = 3; + // Text encoding of the source files on disk that are referenced from + // `Document.relative_path`. This value is unrelated to the `Document.text` + // field, which is a Protobuf string and hence must be UTF-8 encoded. + TextEncoding text_document_encoding = 4; +} + +enum ProtocolVersion { + UnspecifiedProtocolVersion = 0; +} + +enum TextEncoding { + UnspecifiedTextEncoding = 0; + UTF8 = 1; + UTF16 = 2; +} + +message ToolInfo { + // Name of the indexer that produced this index. + string name = 1; + // Version of the indexer that produced this index. + string version = 2; + // Command-line arguments that were used to invoke this indexer. + repeated string arguments = 3; +} + +// Document defines the metadata about a source file on disk. +message Document { + // The string ID for the programming language this file is written in. + // The `Language` enum contains the names of most common programming languages. + // This field is typed as a string to permit any programming language, including + // ones that are not specified by the `Language` enum. + string language = 4; + // (Required) Unique path to the text document. + // + // 1. The path must be relative to the directory supplied in the associated + // `Metadata.project_root`. + // 2. The path must not begin with a leading '/'. + // 3. The path must point to a regular file, not a symbolic link. + // 4. The path must use '/' as the separator, including on Windows. + // 5. The path must be canonical; it cannot include empty components ('//'), + // or '.' or '..'. + string relative_path = 1; + // Occurrences that appear in this file. + repeated Occurrence occurrences = 2; + // Symbols that are "defined" within this document. + // + // This should include symbols which technically do not have any definition, + // but have a reference and are defined by some other symbol (see + // Relationship.is_definition). + repeated SymbolInformation symbols = 3; + + // (optional) Text contents of the this document. Indexers are not expected to + // include the text by default. It's preferrable that clients read the text + // contents from the file system by resolving the absolute path from joining + // `Index.metadata.project_root` and `Document.relative_path`. This field was + // introduced to support `SymbolInformation.signature_documentation`, but it + // can be used for other purposes as well, for example testing or when working + // with virtual/in-memory documents. + string text = 5; + + // Specifies the encoding used for source ranges in this Document. + // + // Usually, this will match the type used to index the string type + // in the indexer's implementation language in O(1) time. + // - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, + // use UTF16CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Python, + // use UTF32CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Go, Rust or C++, + // use UTF8ByteOffsetFromLineStart. + PositionEncoding position_encoding = 6; +} + +// Encoding used to interpret the 'character' value in source ranges. +enum PositionEncoding { + // Default value. This value should not be used by new SCIP indexers + // so that a consumer can process the SCIP index without ambiguity. + UnspecifiedPositionEncoding = 0; + // The 'character' value is interpreted as an offset in terms + // of UTF-8 code units (i.e. bytes). + // + // Example: For the string "🚀 Woo" in UTF-8, the bytes are + // [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W' + // would be 5. + UTF8CodeUnitOffsetFromLineStart = 1; + // The 'character' value is interpreted as an offset in terms + // of UTF-16 code units (each is 2 bytes). + // + // Example: For the string "🚀 Woo", the UTF-16 code units are + // ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W' + // would be 3. + UTF16CodeUnitOffsetFromLineStart = 2; + // The 'character' value is interpreted as an offset in terms + // of UTF-32 code units (each is 4 bytes). + // + // Example: For the string "🚀 Woo", the UTF-32 code units are + // ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2. + UTF32CodeUnitOffsetFromLineStart = 3; +} + +// Symbol is similar to a URI, it identifies a class, method, or a local +// variable. `SymbolInformation` contains rich metadata about symbols such as +// the docstring. +// +// Symbol has a standardized string representation, which can be used +// interchangeably with `Symbol`. The syntax for Symbol is the following: +// ``` +// # ()+ stands for one or more repetitions of +// # ()? stands for zero or one occurrence of +// ::= ' ' ' ' ()+ | 'local ' +// ::= ' ' ' ' +// ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local' +// ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value +// ::= same as above +// ::= same as above +// ::= | | | | | | | +// ::= '/' +// ::= '#' +// ::= '.' +// ::= ':' +// ::= '!' +// ::= '(' ()? ').' +// ::= '[' ']' +// ::= '(' ')' +// ::= +// ::= +// ::= | +// ::= ()+ +// ::= '_' | '+' | '-' | '$' | ASCII letter or digit +// ::= '`' ()+ '`', must contain at least one non- +// ::= any UTF-8, escape backticks with double backtick. +// ::= +// ``` +// +// The list of descriptors for a symbol should together form a fully +// qualified name for the symbol. That is, it should serve as a unique +// identifier across the package. Typically, it will include one descriptor +// for every node in the AST (along the ancestry path) between the root of +// the file and the node corresponding to the symbol. +// +// Local symbols MUST only be used for entities which are local to a Document, +// and cannot be accessed from outside the Document. +message Symbol { + string scheme = 1; + Package package = 2; + repeated Descriptor descriptors = 3; +} + +// Unit of packaging and distribution. +// +// NOTE: This corresponds to a module in Go and JVM languages. +message Package { + string manager = 1; + string name = 2; + string version = 3; +} + +message Descriptor { + enum Suffix { + option allow_alias = true; + UnspecifiedSuffix = 0; + // Unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages. + Namespace = 1; + // Use Namespace instead. + Package = 1 [deprecated=true]; + Type = 2; + Term = 3; + Method = 4; + TypeParameter = 5; + Parameter = 6; + // Can be used for any purpose. + Meta = 7; + Local = 8; + Macro = 9; + } + string name = 1; + string disambiguator = 2; + Suffix suffix = 3; + // NOTE: If you add new fields here, make sure to update the prepareSlot() + // function responsible for parsing symbols. +} + +// SymbolInformation defines metadata about a symbol, such as the symbol's +// docstring or what package it's defined it. +message SymbolInformation { + // Identifier of this symbol, which can be referenced from `Occurence.symbol`. + // The string must be formatted according to the grammar in `Symbol`. + string symbol = 1; + // (optional, but strongly recommended) The markdown-formatted documentation + // for this symbol. Use `SymbolInformation.signature_documentation` to + // document the method/class/type signature of this symbol. + // Due to historical reasons, indexers may include signature documentation in + // this field by rendering markdown code blocks. New indexers should only + // include non-code documentation in this field, for example docstrings. + repeated string documentation = 3; + // (optional) Relationships to other symbols (e.g., implements, type definition). + repeated Relationship relationships = 4; + // The kind of this symbol. Use this field instead of + // `SymbolDescriptor.Suffix` to determine whether something is, for example, a + // class or a method. + Kind kind = 5; + // (optional) Kind represents the fine-grained category of a symbol, suitable for presenting + // information about the symbol's meaning in the language. + // + // For example: + // - A Java method would have the kind `Method` while a Go function would + // have the kind `Function`, even if the symbols for these use the same + // syntax for the descriptor `SymbolDescriptor.Suffix.Method`. + // - A Go struct has the symbol kind `Struct` while a Java class has + // the symbol kind `Class` even if they both have the same descriptor: + // `SymbolDescriptor.Suffix.Type`. + // + // Since Kind is more fine-grained than Suffix: + // - If two symbols have the same Kind, they should share the same Suffix. + // - If two symbols have different Suffixes, they should have different Kinds. + enum Kind { + UnspecifiedKind = 0; + // A method which may or may not have a body. For Java, Kotlin etc. + AbstractMethod = 66; + // For Ruby's attr_accessor + Accessor = 72; + Array = 1; + // For Alloy + Assertion = 2; + AssociatedType = 3; + // For C++ + Attribute = 4; + // For Lean + Axiom = 5; + Boolean = 6; + Class = 7; + // For C++ + Concept = 86; + Constant = 8; + Constructor = 9; + // For Solidity + Contract = 62; + // For Haskell + DataFamily = 10; + // For C# and F# + Delegate = 73; + Enum = 11; + EnumMember = 12; + Error = 63; + Event = 13; + // For Dart + Extension = 84; + // For Alloy + Fact = 14; + Field = 15; + File = 16; + Function = 17; + // For 'get' in Swift, 'attr_reader' in Ruby + Getter = 18; + // For Raku + Grammar = 19; + // For Purescript and Lean + Instance = 20; + Interface = 21; + Key = 22; + // For Racket + Lang = 23; + // For Lean + Lemma = 24; + // For solidity + Library = 64; + Macro = 25; + Method = 26; + // For Ruby + MethodAlias = 74; + // Analogous to 'ThisParameter' and 'SelfParameter', but for languages + // like Go where the receiver doesn't have a conventional name. + MethodReceiver = 27; + // Analogous to 'AbstractMethod', for Go. + MethodSpecification = 67; + // For Protobuf + Message = 28; + // For Dart + Mixin = 85; + // For Solidity + Modifier = 65; + Module = 29; + Namespace = 30; + Null = 31; + Number = 32; + Object = 33; + Operator = 34; + Package = 35; + PackageObject = 36; + Parameter = 37; + ParameterLabel = 38; + // For Haskell's PatternSynonyms + Pattern = 39; + // For Alloy + Predicate = 40; + Property = 41; + // Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C + Protocol = 42; + // Analogous to 'AbstractMethod', for Swift and Objective-C. + ProtocolMethod = 68; + // Analogous to 'AbstractMethod', for C++. + PureVirtualMethod = 69; + // For Haskell + Quasiquoter = 43; + // 'self' in Python, Rust, Swift etc. + SelfParameter = 44; + // For 'set' in Swift, 'attr_writer' in Ruby + Setter = 45; + // For Alloy, analogous to 'Struct'. + Signature = 46; + // For Ruby + SingletonClass = 75; + // Analogous to 'StaticMethod', for Ruby. + SingletonMethod = 76; + // Analogous to 'StaticField', for C++ + StaticDataMember = 77; + // For C# + StaticEvent = 78; + // For C# + StaticField = 79; + // For Java, C#, C++ etc. + StaticMethod = 80; + // For C#, TypeScript etc. + StaticProperty = 81; + // For C, C++ + StaticVariable = 82; + String = 48; + Struct = 49; + // For Swift + Subscript = 47; + // For Lean + Tactic = 50; + // For Lean + Theorem = 51; + // Method receiver for languages + // 'this' in JavaScript, C++, Java etc. + ThisParameter = 52; + // Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc. + Trait = 53; + // Analogous to 'AbstractMethod', for Rust, Scala etc. + TraitMethod = 70; + // Data type definition for languages like OCaml which use `type` + // rather than separate keywords like `struct` and `enum`. + Type = 54; + TypeAlias = 55; + // Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc. + TypeClass = 56; + // Analogous to 'AbstractMethod', for Haskell, Purescript etc. + TypeClassMethod = 71; + // For Haskell + TypeFamily = 57; + TypeParameter = 58; + // For C, C++, Capn Proto + Union = 59; + Value = 60; + Variable = 61; + // Next = 87; + // Feel free to open a PR proposing new language-specific kinds. + } + // (optional) The name of this symbol as it should be displayed to the user. + // For example, the symbol "com/example/MyClass#myMethod(+1)." should have the + // display name "myMethod". The `symbol` field is not a reliable source of + // the display name for several reasons: + // + // - Local symbols don't encode the name. + // - Some languages have case-insensitive names, so the symbol is all-lowercase. + // - The symbol may encode names with special characters that should not be + // displayed to the user. + string display_name = 6; + // (optional) The signature of this symbol as it's displayed in API + // documentation or in hover tooltips. For example, a Java method that adds + // two numbers this would have `Document.language = "java"` and `Document.text + // = "void add(int a, int b)". The `language` and `text` fields are required + // while other fields such as `Documentation.occurrences` can be optionally + // included to support hyperlinking referenced symbols in the signature. + Document signature_documentation = 7; + // (optional) The enclosing symbol if this is a local symbol. For non-local + // symbols, the enclosing symbol should be parsed from the `symbol` field + // using the `Descriptor` grammar. + // + // The primary use-case for this field is to allow local symbol to be displayed + // in a symbol hierarchy for API documentation. It's OK to leave this field + // empty for local variables since local variables usually don't belong in API + // documentation. However, in the situation that you wish to include a local + // symbol in the hierarchy, then you can use `enclosing_symbol` to locate the + // "parent" or "owner" of this local symbol. For example, a Java indexer may + // choose to use local symbols for private class fields while providing an + // `enclosing_symbol` to reference the enclosing class to allow the field to + // be part of the class documentation hierarchy. From the perspective of an + // author of an indexer, the decision to use a local symbol or global symbol + // should exclusively be determined whether the local symbol is accessible + // outside the document, not by the capability to find the enclosing + // symbol. + string enclosing_symbol = 8; +} + + +message Relationship { + string symbol = 1; + // When resolving "Find references", this field documents what other symbols + // should be included together with this symbol. For example, consider the + // following TypeScript code that defines two symbols `Animal#sound()` and + // `Dog#sound()`: + // ```ts + // interface Animal { + // ^^^^^^ definition Animal# + // sound(): string + // ^^^^^ definition Animal#sound() + // } + // class Dog implements Animal { + // ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}] + // public sound(): string { return "woof" } + // ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] + // } + // const animal: Animal = new Dog() + // ^^^^^^ reference Animal# + // console.log(animal.sound()) + // ^^^^^ reference Animal#sound() + // ``` + // Doing "Find references" on the symbol `Animal#sound()` should return + // references to the `Dog#sound()` method as well. Vice-versa, doing "Find + // references" on the `Dog#sound()` method should include references to the + // `Animal#sound()` method as well. + bool is_reference = 2; + // Similar to `is_reference` but for "Find implementations". + // It's common for `is_implementation` and `is_reference` to both be true but + // it's not always the case. + // In the TypeScript example above, observe that `Dog#` has an + // `is_implementation` relationship with `"Animal#"` but not `is_reference`. + // This is because "Find references" on the "Animal#" symbol should not return + // "Dog#". We only want "Dog#" to return as a result for "Find + // implementations" on the "Animal#" symbol. + bool is_implementation = 3; + // Similar to `references_symbols` but for "Go to type definition". + bool is_type_definition = 4; + // Allows overriding the behavior of "Go to definition" and "Find references" + // for symbols which do not have a definition of their own or could + // potentially have multiple definitions. + // + // For example, in a language with single inheritance and no field overriding, + // inherited fields can reuse the same symbol as the ancestor which declares + // the field. In such a situation, is_definition is not needed. + // + // On the other hand, in languages with single inheritance and some form + // of mixins, you can use is_definition to relate the symbol to the + // matching symbol in ancestor classes, and is_reference to relate the + // symbol to the matching symbol in mixins. + // + // NOTE: At the moment, due to limitations of the SCIP to LSIF conversion, + // only global symbols in an index are allowed to use is_definition. + // The relationship may not get recorded if either symbol is local. + bool is_definition = 5; + // Update registerInverseRelationships on adding a new field here. +} + +// SymbolRole declares what "role" a symbol has in an occurrence. A role is +// encoded as a bitset where each bit represents a different role. For example, +// to determine if the `Import` role is set, test whether the second bit of the +// enum value is defined. In pseudocode, this can be implemented with the +// logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`. +enum SymbolRole { + // This case is not meant to be used; it only exists to avoid an error + // from the Protobuf code generator. + UnspecifiedSymbolRole = 0; + // Is the symbol defined here? If not, then this is a symbol reference. + Definition = 0x1; + // Is the symbol imported here? + Import = 0x2; + // Is the symbol written here? + WriteAccess = 0x4; + // Is the symbol read here? + ReadAccess = 0x8; + // Is the symbol in generated code? + Generated = 0x10; + // Is the symbol in test code? + Test = 0x20; + // Is this a signature for a symbol that is defined elsewhere? + // + // Applies to forward declarations for languages like C, C++ + // and Objective-C, as well as `val` declarations in interface + // files in languages like SML and OCaml. + ForwardDefinition = 0x40; +} + +enum SyntaxKind { + option allow_alias = true; + + UnspecifiedSyntaxKind = 0; + + // Comment, including comment markers and text + Comment = 1; + + // `;` `.` `,` + PunctuationDelimiter = 2; + // (), {}, [] when used syntactically + PunctuationBracket = 3; + + // `if`, `else`, `return`, `class`, etc. + Keyword = 4; + IdentifierKeyword = 4 [deprecated=true]; + + // `+`, `*`, etc. + IdentifierOperator = 5; + + // non-specific catch-all for any identifier not better described elsewhere + Identifier = 6; + // Identifiers builtin to the language: `min`, `print` in Python. + IdentifierBuiltin = 7; + // Identifiers representing `null`-like values: `None` in Python, `nil` in Go. + IdentifierNull = 8; + // `xyz` in `const xyz = "hello"` + IdentifierConstant = 9; + // `var X = "hello"` in Go + IdentifierMutableGlobal = 10; + // Parameter definition and references + IdentifierParameter = 11; + // Identifiers for variable definitions and references within a local scope + IdentifierLocal = 12; + // Identifiers that shadow other identifiers in an outer scope + IdentifierShadowed = 13; + // Identifier representing a unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages, + // and a module in languages like Python and JavaScript. + IdentifierNamespace = 14; + IdentifierModule = 14 [deprecated=true]; + + // Function references, including calls + IdentifierFunction = 15; + // Function definition only + IdentifierFunctionDefinition = 16; + + // Macro references, including invocations + IdentifierMacro = 17; + // Macro definition only + IdentifierMacroDefinition = 18; + + // non-builtin types + IdentifierType = 19; + // builtin types only, such as `str` for Python or `int` in Go + IdentifierBuiltinType = 20; + + // Python decorators, c-like __attribute__ + IdentifierAttribute = 21; + + // `\b` + RegexEscape = 22; + // `*`, `+` + RegexRepeated = 23; + // `.` + RegexWildcard = 24; + // `(`, `)`, `[`, `]` + RegexDelimiter = 25; + // `|`, `-` + RegexJoin = 26; + + // Literal strings: "Hello, world!" + StringLiteral = 27; + // non-regex escapes: "\t", "\n" + StringLiteralEscape = 28; + // datetimes within strings, special words within a string, `{}` in format strings + StringLiteralSpecial = 29; + // "key" in { "key": "value" }, useful for example in JSON + StringLiteralKey = 30; + // 'c' or similar, in languages that differentiate strings and characters + CharacterLiteral = 31; + // Literal numbers, both floats and integers + NumericLiteral = 32; + // `true`, `false` + BooleanLiteral = 33; + + // Used for XML-like tags + Tag = 34; + // Attribute name in XML-like tags + TagAttribute = 35; + // Delimiters for XML-like tags + TagDelimiter = 36; +} + +// Occurrence associates a source position with a symbol and/or highlighting +// information. +// +// If possible, indexers should try to bundle logically related information +// across occurrences into a single occurrence to reduce payload sizes. +message Occurrence { + // Half-open [start, end) range of this occurrence. Must be exactly three or four + // elements: + // + // - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + // - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + // is inferred to have the same value as the start line. + // + // It is allowed for the range to be empty (i.e. start==end). + // + // Line numbers and characters are always 0-based. Make sure to increment the + // line/character values before displaying them in an editor-like UI because + // editors conventionally use 1-based numbers. + // + // The 'character' value is interpreted based on the PositionEncoding for + // the Document. + // + // Historical note: the original draft of this schema had a `Range` message + // type with `start` and `end` fields of type `Position`, mirroring LSP. + // Benchmarks revealed that this encoding was inefficient and that we could + // reduce the total payload size of an index by 50% by using `repeated int32` + // instead. The `repeated int32` encoding is admittedly more embarrassing to + // work with in some programming languages but we hope the performance + // improvements make up for it. + repeated int32 range = 1; + // (optional) The symbol that appears at this position. See + // `SymbolInformation.symbol` for how to format symbols as strings. + string symbol = 2; + // (optional) Bitset containing `SymbolRole`s in this occurrence. + // See `SymbolRole`'s documentation for how to read and write this field. + int32 symbol_roles = 3; + // (optional) CommonMark-formatted documentation for this specific range. If + // empty, the `Symbol.documentation` field is used instead. One example + // where this field might be useful is when the symbol represents a generic + // function (with abstract type parameters such as `List`) and at this + // occurrence we know the exact values (such as `List`). + // + // This field can also be used for dynamically or gradually typed languages, + // which commonly allow for type-changing assignment. + repeated string override_documentation = 4; + // (optional) What syntax highlighting class should be used for this range? + SyntaxKind syntax_kind = 5; + // (optional) Diagnostics that have been reported for this specific range. + repeated Diagnostic diagnostics = 6; + // (optional) Using the same encoding as the sibling `range` field, half-open + // source range of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. Example applications that make use of the + // enclosing_range field: + // + // - Call hierarchies: to determine what symbols are references from the body + // of a function + // - Symbol outline: to display breadcrumbs from the cursor position to the + // root of the file + // - Expand selection: to select the nearest enclosing AST node. + // - Highlight range: to indicate the AST expression that is associated with a + // hover popover + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + // ``` + // const n = 3 + // ^ range + // ^^^^^^^^^^^ enclosing_range + // + // /** Parses the string into something */ + // ^ enclosing_range start --------------------------------------| + // function parse(input string): string { | + // ^^^^^ range | + // return input.slice(n) | + // } | + // ^ enclosing_range end <---------------------------------------| + // ``` + // + // Any attributes/decorators/attached macros should also be part of the + // enclosing range. + // + // ```python + // @cache + // ^ enclosing_range start---------------------| + // def factorial(n): | + // return n * factorial(n-1) if n else 1 | + // < enclosing_range end-----------------------| + // + // ``` + // + // For reference occurrences, the enclosing range should indicate the start/end + // bounds of the parent expression. + // ``` + // const a = a.b + // ^ range + // ^^^ enclosing_range + // const b = a.b(41).f(42).g(43) + // ^ range + // ^^^^^^^^^^^^^ enclosing_range + // ``` + repeated int32 enclosing_range = 7; +} + +// Represents a diagnostic, such as a compiler error or warning, which should be +// reported for a document. +message Diagnostic { + // Should this diagnostic be reported as an error, warning, info, or hint? + Severity severity = 1; + // (optional) Code of this diagnostic, which might appear in the user interface. + string code = 2; + // Message of this diagnostic. + string message = 3; + // (optional) Human-readable string describing the source of this diagnostic, e.g. + // 'typescript' or 'super lint'. + string source = 4; + repeated DiagnosticTag tags = 5; +} + +enum Severity { + UnspecifiedSeverity = 0; + Error = 1; + Warning = 2; + Information = 3; + Hint = 4; +} + +enum DiagnosticTag { + UnspecifiedDiagnosticTag = 0; + Unnecessary = 1; + Deprecated = 2; +} + +// Language standardises names of common programming languages that can be used +// for the `Document.language` field. The primary purpose of this enum is to +// prevent a situation where we have a single programming language ends up with +// multiple string representations. For example, the C++ language uses the name +// "CPP" in this enum and other names such as "cpp" are incompatible. +// Feel free to send a pull-request to add missing programming languages. +enum Language { + UnspecifiedLanguage = 0; + ABAP = 60; + Apex = 96; + APL = 49; + Ada = 39; + Agda = 45; + AsciiDoc = 86; + Assembly = 58; + Awk = 66; + Bat = 68; + BibTeX = 81; + C = 34; + COBOL = 59; + CPP = 35; // C++ (the name "CPP" was chosen for consistency with LSP) + CSS = 26; + CSharp = 1; + Clojure = 8; + Coffeescript = 21; + CommonLisp = 9; + Coq = 47; + CUDA = 97; + Dart = 3; + Delphi = 57; + Diff = 88; + Dockerfile = 80; + Dyalog = 50; + Elixir = 17; + Erlang = 18; + FSharp = 42; + Fish = 65; + Flow = 24; + Fortran = 56; + Git_Commit = 91; + Git_Config = 89; + Git_Rebase = 92; + Go = 33; + GraphQL = 98; + Groovy = 7; + HTML = 30; + Hack = 20; + Handlebars = 90; + Haskell = 44; + Idris = 46; + Ini = 72; + J = 51; + JSON = 75; + Java = 6; + JavaScript = 22; + JavaScriptReact = 93; + Jsonnet = 76; + Julia = 55; + Justfile = 109; + Kotlin = 4; + LaTeX = 83; + Lean = 48; + Less = 27; + Lua = 12; + Luau = 108; + Makefile = 79; + Markdown = 84; + Matlab = 52; + Nickel = 110; // https://nickel-lang.org/ + Nix = 77; + OCaml = 41; + Objective_C = 36; + Objective_CPP = 37; + Pascal = 99; + PHP = 19; + PLSQL = 70; + Perl = 13; + PowerShell = 67; + Prolog = 71; + Protobuf = 100; + Python = 15; + R = 54; + Racket = 11; + Raku = 14; + Razor = 62; + Repro = 102; // Internal language for testing SCIP + ReST = 85; + Ruby = 16; + Rust = 40; + SAS = 61; + SCSS = 29; + SML = 43; + SQL = 69; + Sass = 28; + Scala = 5; + Scheme = 10; + ShellScript = 64; // Bash + Skylark = 78; + Slang = 107; + Solidity = 95; + Svelte = 106; + Swift = 2; + Tcl = 101; + TOML = 73; + TeX = 82; + Thrift = 103; + TypeScript = 23; + TypeScriptReact = 94; + Verilog = 104; + VHDL = 105; + VisualBasic = 63; + Vue = 25; + Wolfram = 53; + XML = 31; + XSL = 32; + YAML = 74; + Zig = 38; + // NextLanguage = 111; + // Steps add a new language: + // 1. Copy-paste the "NextLanguage = N" line above + // 2. Increment "NextLanguage = N" to "NextLanguage = N+1" + // 3. Replace "NextLanguage = N" with the name of the new language. + // 4. Move the new language to the correct line above using alphabetical order + // 5. (optional) Add a brief comment behind the language if the name is not self-explanatory +} diff --git a/src/scip_clojure/core.clj b/src/scip_clojure/core.clj new file mode 100644 index 0000000..56dcfdb --- /dev/null +++ b/src/scip_clojure/core.clj @@ -0,0 +1,388 @@ +(ns scip-clojure.core + (:require [clojure.edn :as edn] + [clojure.java.io :as io] + [clojure.java.shell :refer [sh]] + [clojure.string :as str] + [clojure.tools.cli :refer [parse-opts]] + [clojure.repl :as repl]) + (:import [scip Scip$Index Scip$Document Scip$Occurrence Scip$SymbolInformation + Scip$Metadata Scip$Metadata$Builder Scip$ToolInfo Scip$SymbolRole + Scip$PositionEncoding Scip$ProtocolVersion] + [java.io FileOutputStream StringWriter]) + (:gen-class)) + +(def cli-options + [["-p" "--project-root PATH" "Path to the Clojure project root" + :default "."] + ["-o" "--output FILE" "Output SCIP index file" + :default "index.scip"] + ["-h" "--help" "Show help"]]) + +(defn escape-identifier + "Escape an identifier for SCIP symbol format. + Identifiers containing characters other than [_+-$a-zA-Z0-9] must be + wrapped in backticks. Backticks within the identifier are doubled." + [s] + (let [s (str s)] + (if (re-matches #"[_+\-$a-zA-Z0-9]+" s) + s + (str "`" (str/replace s "`" "``") "`")))) + +(defn make-symbol + "Create a SCIP symbol identifier from namespace and name. + Format: scip-clojure clojure clojure . namespace/name. + No spaces around descriptor suffixes (/ and .)" + [ns-sym var-name] + (format "scip-clojure clojure clojure . %s/%s." + (escape-identifier ns-sym) + (escape-identifier var-name))) + +(defn make-ns-symbol + "Create a SCIP symbol identifier for a namespace." + [ns-sym] + (format "scip-clojure clojure clojure . %s/" + (escape-identifier ns-sym))) + +(defn make-alias-symbol + "Create a SCIP symbol identifier for a namespace alias. + The alias is scoped to the namespace where it's defined. + Format: scip-clojure clojure clojure . from-ns/alias." + [from-ns alias-name] + (format "scip-clojure clojure clojure . %s/%s." + (escape-identifier from-ns) + (escape-identifier alias-name))) + +(defn position->range + "Convert row/col positions to SCIP range format. + SCIP uses 0-indexed [startLine, startChar, endLine, endChar]. + For single-line occurrences, uses compact [startLine, startChar, endChar]. + Uses name-row/name-col when available for precise symbol positioning." + [{:keys [row col name-row name-col name-end-row name-end-col]}] + (let [;; Prefer name-row/name-col for precise symbol location + start-line (int (dec (or name-row row 1))) + start-char (int (dec (or name-col col 1))) + end-line (int (dec (or name-end-row name-row row 1))) + end-char (int (dec (or name-end-col (+ (or name-col col 1) 1))))] + (if (= start-line end-line) + ;; Compact format for single-line + [(int start-line) (int start-char) (int end-char)] + ;; Full format for multi-line + [(int start-line) (int start-char) (int end-line) (int end-char)]))) + +(defn var-definition->occurrence + "Convert a clojure-lsp var-definition to SCIP Occurrence." + [{:keys [ns name doc] :as var-def}] + (let [builder (Scip$Occurrence/newBuilder)] + (.addAllRange builder (position->range var-def)) + (.setSymbol builder (make-symbol ns name)) + ;; Definition role = 1 + (.setSymbolRoles builder (int Scip$SymbolRole/Definition_VALUE)) + (.build builder))) + +(defn var-definition->symbol-info + "Convert a clojure-lsp var-definition to SCIP SymbolInformation." + [{:keys [ns name doc defined-by fixed-arities]}] + (let [builder (Scip$SymbolInformation/newBuilder)] + (.setSymbol builder (make-symbol ns name)) + (when doc + (.addDocumentation builder doc)) + (when defined-by + (.addDocumentation builder (str "Defined by: " defined-by))) + (when (seq fixed-arities) + (.addDocumentation builder (str "Arities: " (str/join ", " fixed-arities)))) + (.build builder))) + +(defn var-usage->occurrence + "Convert a clojure-lsp var-usage to SCIP Occurrence (reference)." + [{:keys [to name] :as var-usage}] + (let [builder (Scip$Occurrence/newBuilder)] + (.addAllRange builder (position->range var-usage)) + (.setSymbol builder (make-symbol to name)) + ;; No role bits = reference + (.build builder))) + +(defn ns-definition->occurrence + "Convert a namespace definition to SCIP Occurrence." + [{:keys [name row col name-end-row name-end-col] :as ns-def}] + (let [builder (Scip$Occurrence/newBuilder)] + (.addAllRange builder (position->range ns-def)) + (.setSymbol builder (make-ns-symbol name)) + (.setSymbolRoles builder (int Scip$SymbolRole/Definition_VALUE)) + (.build builder))) + +(defn ns-definition->symbol-info + "Convert a namespace definition to SCIP SymbolInformation." + [{:keys [name doc]}] + (let [builder (Scip$SymbolInformation/newBuilder)] + (.setSymbol builder (make-ns-symbol name)) + (when doc + (.addDocumentation builder doc)) + (.build builder))) + +(defn ns-usage->occurrence + "Convert a namespace usage (require/import) to SCIP Occurrence." + [{:keys [name] :as ns-usage}] + (let [builder (Scip$Occurrence/newBuilder)] + (.addAllRange builder (position->range ns-usage)) + (.setSymbol builder (make-ns-symbol name)) + (.build builder))) + +(defn ns-alias->occurrence + "Convert a namespace alias definition (e.g., :as ansi) to SCIP Occurrence. + Creates a Definition for the alias symbol, scoped to the defining namespace." + [{:keys [from alias] :as ns-alias}] + (let [builder (Scip$Occurrence/newBuilder)] + (.addAllRange builder (position->range ns-alias)) + (.setSymbol builder (make-alias-symbol from alias)) + (.setSymbolRoles builder (int Scip$SymbolRole/Definition_VALUE)) + (.build builder))) + +(defn alias-usage->occurrence + "Convert a var-usage with an alias to SCIP Occurrence for the alias part. + E.g., for (ansi/style ...), creates an occurrence for 'ansi' referencing the alias." + [{:keys [from alias row col name-col]}] + (when alias + (let [builder (Scip$Occurrence/newBuilder) + ;; alias spans from col to name-col - 2 (excluding the /) + alias-end-col (- name-col 1) + start-line (int (dec row)) + start-char (int (dec col)) + end-char (int (dec alias-end-col))] + (.addAllRange builder [(int start-line) (int start-char) (int end-char)]) + (.setSymbol builder (make-alias-symbol from alias)) + (.build builder)))) + +;; --- External symbol support for hover documentation --- + +(def ^:private external-ns-prefixes + "Namespace prefixes considered external (not project-internal)." + #{"clojure.core" "clojure.string" "clojure.set" "clojure.walk" + "clojure.zip" "clojure.data" "clojure.edn" "clojure.java.io" + "clojure.java.shell" "clojure.pprint" "clojure.test" "clojure.repl" + "clojure.spec.alpha" "clojure.spec.gen.alpha"}) + +(defn- get-special-form-doc + "Get documentation for a special form from clojure.repl/special-doc-map. + This is the canonical source of truth for special form documentation." + [sym-name] + (when-let [doc-map (get @#'clojure.repl/special-doc-map (symbol sym-name))] + {:doc (:doc doc-map) + :arglists (:forms doc-map) ;; special forms use :forms instead of :arglists + :special-form true})) + +(defn external-ns? + "Check if a namespace is external (standard library or dependency)." + [ns-sym internal-namespaces] + (let [ns-str (str ns-sym)] + (and (not (contains? internal-namespaces ns-sym)) + (or (str/starts-with? ns-str "clojure.") + (str/starts-with? ns-str "java.") + (contains? external-ns-prefixes ns-str))))) + +(defn get-var-doc + "Get documentation for a var. Returns a map with :doc, :arglists, :macro. + Handles special forms which don't have var metadata by consulting + clojure.repl/special-doc-map (the canonical source of truth)." + [ns-sym var-name] + ;; First check if it's a special form (only in clojure.core) + (if-let [special-doc (and (= (str ns-sym) "clojure.core") + (get-special-form-doc var-name))] + (assoc special-doc :name var-name :ns ns-sym) + ;; Otherwise try to resolve the var and get its metadata + (try + (require (symbol ns-sym)) + (when-let [v (ns-resolve (symbol ns-sym) (symbol var-name))] + (let [m (meta v)] + {:doc (:doc m) + :arglists (:arglists m) + :macro (:macro m) + :name var-name + :ns ns-sym})) + (catch Exception _ nil)))) + +(defn format-arglists + "Format arglists for display." + [arglists] + (when (seq arglists) + (str/join "\n" (map #(str " " (pr-str %)) arglists)))) + +(defn external-symbol->symbol-info + "Create SCIP SymbolInformation for an external symbol with documentation." + [{:keys [ns name doc arglists macro special-form]}] + (let [builder (Scip$SymbolInformation/newBuilder) + sig (str (cond special-form "special form " + macro "macro " + :else "") + ns "/" name)] + (.setSymbol builder (make-symbol ns name)) + ;; Add signature as first doc line + (.addDocumentation builder (str "```clojure\n" sig "\n```")) + ;; Add arglists + (when (seq arglists) + (.addDocumentation builder (str "```clojure\n" (format-arglists arglists) "\n```"))) + ;; Add docstring + (when doc + (.addDocumentation builder doc)) + (.build builder))) + +(defn collect-external-symbols + "Collect all unique external symbol references from analysis." + [analysis internal-namespaces] + (->> (vals analysis) + (mapcat :var-usages) + (filter #(external-ns? (:to %) internal-namespaces)) + (map (fn [{:keys [to name]}] [to name])) + (distinct) + (keep (fn [[ns-sym var-name]] + (get-var-doc ns-sym var-name))) + (filter :doc))) ; Only include symbols with documentation + +(defn uri->relative-path + "Convert file:// URI to relative path from project root." + [uri project-root] + (let [path (str/replace-first uri "file://" "")] + (str/replace-first path (str project-root "/") ""))) + +(defn file-analysis->document + "Convert a single file's analysis to a SCIP Document." + [uri file-analysis project-root] + (let [builder (Scip$Document/newBuilder) + relative-path (uri->relative-path uri project-root) + {:keys [var-definitions var-usages namespace-definitions namespace-usages namespace-alias]} file-analysis + + ;; Create occurrences for definitions + def-occurrences (map var-definition->occurrence (or var-definitions [])) + + ;; Create symbol info for definitions + def-symbols (map var-definition->symbol-info (or var-definitions [])) + + ;; Create occurrences for usages (references) + usage-occurrences (map var-usage->occurrence (or var-usages [])) + + ;; Namespace definitions + ns-def-occurrences (map ns-definition->occurrence (or namespace-definitions [])) + ns-def-symbols (map ns-definition->symbol-info (or namespace-definitions [])) + + ;; Namespace usages + ns-usage-occurrences (map ns-usage->occurrence (or namespace-usages [])) + + ;; Namespace alias definitions (e.g., :as ansi) + ns-alias-occurrences (map ns-alias->occurrence (or namespace-alias [])) + + ;; Alias usages from var-usages (e.g., ansi in ansi/style) + alias-usage-occs (keep alias-usage->occurrence (or var-usages []))] + + (.setLanguage builder "clojure") + (.setRelativePath builder relative-path) + (.setPositionEncoding builder Scip$PositionEncoding/UTF8CodeUnitOffsetFromLineStart) + + ;; Add all occurrences + (doseq [occ (concat def-occurrences usage-occurrences + ns-def-occurrences ns-usage-occurrences + ns-alias-occurrences alias-usage-occs)] + (.addOccurrences builder occ)) + + ;; Add symbol information + (doseq [sym (concat def-symbols ns-def-symbols)] + (.addSymbols builder sym)) + + (.build builder))) + +(defn dump->scip-index + "Convert clojure-lsp dump data to a SCIP Index." + [{:keys [analysis project-root] :as dump}] + (let [builder (Scip$Index/newBuilder) + metadata-builder (Scip$Metadata/newBuilder) + tool-info-builder (Scip$ToolInfo/newBuilder) + ;; Collect internal namespaces from namespace-definitions + internal-namespaces (->> (vals analysis) + (mapcat :namespace-definitions) + (map :name) + (set))] + + ;; Set tool info + (.setName tool-info-builder "scip-clojure") + (.setVersion tool-info-builder "0.2.0") + + ;; Set metadata + (.setVersion metadata-builder Scip$ProtocolVersion/UnspecifiedProtocolVersion) + (.setToolInfo metadata-builder (.build tool-info-builder)) + (.setProjectRoot metadata-builder (str "file://" project-root)) + + (.setMetadata builder (.build metadata-builder)) + + ;; Convert each file + (doseq [[uri file-analysis] analysis] + (let [doc (file-analysis->document (str uri) file-analysis project-root)] + (.addDocuments builder doc))) + + ;; Add external symbols with documentation for hover + (println "Collecting external symbol documentation...") + (let [external-syms (collect-external-symbols analysis internal-namespaces)] + (println "Found" (count external-syms) "external symbols with documentation") + (doseq [sym external-syms] + (.addExternalSymbols builder (external-symbol->symbol-info sym)))) + + (.build builder))) + +(defn run-clojure-lsp-dump + "Run clojure-lsp dump command and return parsed EDN." + [project-root] + (println "Running clojure-lsp dump...") + (let [lsp-path (or (System/getenv "CLOJURE_LSP_PATH") + (str (System/getProperty "user.home") "/.local/bin/clojure-lsp") + "clojure-lsp") + result (sh lsp-path "dump" + "--project-root" project-root + "--output" "{:format :edn}")] + (if (zero? (:exit result)) + (do + (println "Parsing clojure-lsp output...") + (edn/read-string (:out result))) + (throw (ex-info "clojure-lsp dump failed" + {:exit (:exit result) + :err (:err result)}))))) + +(defn write-scip-index + "Write SCIP Index to a file." + [index output-path] + (with-open [out (FileOutputStream. output-path)] + (.writeTo index out)) + (println "Wrote SCIP index to" output-path)) + +(defn -main + [& args] + (let [{:keys [options errors summary]} (parse-opts args cli-options)] + (cond + (:help options) + (do + (println "scip-clojure - Generate SCIP index from Clojure project") + (println) + (println "Usage: scip-clojure [options]") + (println) + (println "Options:") + (println summary)) + + errors + (do + (doseq [err errors] + (println "Error:" err)) + (System/exit 1)) + + :else + (let [project-root (-> (:project-root options) + io/file + .getCanonicalPath) + output-file (:output options)] + (println "Generating SCIP index for" project-root) + (try + (let [dump (run-clojure-lsp-dump project-root) + index (dump->scip-index dump)] + (write-scip-index index output-file) + (println "Done!")) + (catch Exception e + (println "Error:" (.getMessage e)) + (when-let [data (ex-data e)] + (when (:err data) + (println "stderr:" (:err data)))) + (System/exit 1)))))))